diff --git a/include/conversation.php b/include/conversation.php index 2397014141..bbb0b921a3 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -396,25 +396,25 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = true; if(!$update) { // The special div is needed for liveUpdate to kick in for this page. - // We only launch liveUpdate if you aren't filtering in some incompatible + // We only launch liveUpdate if you aren't filtering in some incompatible // way and also you aren't writing a comment (discovered in javascript). $live_update_div = '
' . "\r\n" - . "\r\n"; } @@ -431,7 +431,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // because browser prefetching might change it on us. We have to deliver it with the page. $live_update_div = '
' . "\r\n" - . "\r\n"; } } @@ -441,7 +441,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = true; if(!$update) { $live_update_div = '
' . "\r\n" - . "\r\n"; } } diff --git a/include/diaspora.php b/include/diaspora.php index 3145c52ea3..61a0dfc3cf 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -110,6 +110,9 @@ function diaspora_dispatch($importer,$msg,$attempt=1) { elseif($xmlbase->message) { $ret = diaspora_message($importer,$xmlbase->message,$msg); } + elseif($xmlbase->participation) { + $ret = diaspora_participation($importer,$xmlbase->participation); + } else { logger('diaspora_dispatch: unknown message type: ' . print_r($xmlbase,true)); } @@ -1834,7 +1837,7 @@ function diaspora_message($importer,$xml,$msg) { $author_signature = base64_decode($msg_author_signature); - $person = find_diaspora_person_by_handle($msg_diaspora_handle); + $person = find_diaspora_person_by_handle($msg_diaspora_handle); if(is_array($person) && x($person,'pubkey')) $key = $person['pubkey']; else { @@ -1881,6 +1884,9 @@ function diaspora_message($importer,$xml,$msg) { return; } +function diaspora_participation($importer,$xml) { + logger("Unsupported message type 'participation' ".print_r($xml, true)); +} function diaspora_photo($importer,$xml,$msg,$attempt=1) { diff --git a/include/items.php b/include/items.php index 0d442e3170..8691ccca49 100644 --- a/include/items.php +++ b/include/items.php @@ -1287,11 +1287,24 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa } if ($arr['network'] == "") { - $r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($arr['contact-id']), + $r = q("SELECT `network` FROM `contact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' AND `uid` = %d LIMIT 1", + dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS), + dbesc(normalise_link($arr['author-link'])), intval($arr['uid']) ); + if(!count($r)) + $r = q("SELECT `network` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' LIMIT 1", + dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS), + dbesc(normalise_link($arr['author-link'])) + ); + + if(!count($r)) + $r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($arr['contact-id']), + intval($arr['uid']) + ); + if(count($r)) $arr['network'] = $r[0]["network"]; diff --git a/mod/allfriends.php b/mod/allfriends.php index 1a45775fb2..784dfb8771 100644 --- a/mod/allfriends.php +++ b/mod/allfriends.php @@ -21,7 +21,7 @@ function allfriends_content(&$a) { ); $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array( - '$name' => $c[0]['name'], + '$name' => htmlentities($c[0]['name']), '$photo' => $c[0]['photo'], 'url' => z_root() . '/contacts/' . $cid )); @@ -34,7 +34,7 @@ function allfriends_content(&$a) { return; $o .= replace_macros(get_markup_template("section_title.tpl"),array( - '$title' => sprintf( t('Friends of %s'), $c[0]['name']) + '$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])) )); @@ -48,10 +48,10 @@ function allfriends_content(&$a) { $tpl = get_markup_template('common_friends.tpl'); foreach($r as $rr) { - + $o .= replace_macros($tpl,array( '$url' => $rr['url'], - '$name' => $rr['name'], + '$name' => htmlentities($rr['name']), '$photo' => $rr['photo'], '$tags' => '' )); diff --git a/mod/common.php b/mod/common.php index 3118d12479..1e65137ac6 100644 --- a/mod/common.php +++ b/mod/common.php @@ -16,7 +16,7 @@ function common_content(&$a) { if(! $uid) return; - if($cmd === 'loc' && $cid) { + if($cmd === 'loc' && $cid) { $c = q("select name, url, photo from contact where id = %d and uid = %d limit 1", intval($cid), intval($uid) @@ -26,10 +26,10 @@ function common_content(&$a) { $c = q("select name, url, photo from contact where self = 1 and uid = %d limit 1", intval($uid) ); - } + } $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array( - '$name' => $c[0]['name'], + '$name' => htmlentities($c[0]['name']), '$photo' => $c[0]['photo'], 'url' => z_root() . '/contacts/' . $cid )); @@ -97,10 +97,10 @@ function common_content(&$a) { $tpl = get_markup_template('common_friends.tpl'); foreach($r as $rr) { - + $o .= replace_macros($tpl,array( '$url' => $rr['url'], - '$name' => $rr['name'], + '$name' => htmlentities($rr['name']), '$photo' => $rr['photo'], '$tags' => '' )); diff --git a/mod/contacts.php b/mod/contacts.php index 25b22658f2..ee62bf3c9e 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -33,7 +33,7 @@ function contacts_init(&$a) { if($contact_id) { $a->data['contact'] = $r[0]; $vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array( - '$name' => $a->data['contact']['name'], + '$name' => htmlentities($a->data['contact']['name']), '$photo' => $a->data['contact']['photo'], '$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? $a->get_baseurl()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url'] )); @@ -432,7 +432,7 @@ function contacts_content(&$a) { } $a->page['aside'] = ''; - + return replace_macros(get_markup_template('contact_drop_confirm.tpl'), array( '$contact' => _contact_detail_for_template($orig_record[0]), '$method' => 'get', @@ -509,7 +509,7 @@ function contacts_content(&$a) { if(!in_array($contact['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA))) $relation_text = ""; - $relation_text = sprintf($relation_text,$contact['name']); + $relation_text = sprintf($relation_text,htmlentities($contact['name'])); if(($contact['network'] === NETWORK_DFRN) && ($contact['rel'])) { $url = "redir/{$contact['id']}"; @@ -632,7 +632,7 @@ function contacts_content(&$a) { '$ffi_keyword_blacklist' => $contact['ffi_keyword_blacklist'], '$ffi_keyword_blacklist' => array('ffi_keyword_blacklist', t('Blacklisted keywords'), $contact['ffi_keyword_blacklist'], t('Comma separated list of keywords that should not be converted to hashtags, when "Fetch information and keywords" is selected')), '$photo' => $contact['photo'], - '$name' => $contact['name'], + '$name' => htmlentities($contact['name']), '$dir_icon' => $dir_icon, '$alt_text' => $alt_text, '$sparkle' => $sparkle, @@ -842,8 +842,8 @@ function _contact_detail_for_template($rr){ 'alt_text' => $alt_text, 'dir_icon' => $dir_icon, 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), - 'name' => $rr['name'], - 'username' => $rr['name'], + 'name' => htmlentities($rr['name']), + 'username' => htmlentities($rr['name']), 'sparkle' => $sparkle, 'itemurl' => $rr['url'], 'url' => $url, diff --git a/mod/crepair.php b/mod/crepair.php index 457a06685d..686be3948f 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -24,7 +24,7 @@ function crepair_init(&$a) { $a->data['contact'] = $r[0]; $tpl = get_markup_template("vcard-widget.tpl"); $vcard_widget .= replace_macros($tpl, array( - '$name' => $a->data['contact']['name'], + '$name' => htmlentities($a->data['contact']['name']), '$photo' => $a->data['contact']['photo'] )); $a->page['aside'] .= $vcard_widget; @@ -179,8 +179,8 @@ function crepair_content(&$a) { '$label_remote_self' => t('Remote Self'), '$allow_remote_self' => $allow_remote_self, '$remote_self' => array('remote_self', t('Mirror postings from this contact'), $contact['remote_self'], t('Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.'), $remote_self_options), - '$contact_name' => $contact['name'], - '$contact_nick' => $contact['nick'], + '$contact_name' => htmlentities($contact['name']), + '$contact_nick' => htmlentities($contact['nick']), '$contact_id' => $contact['id'], '$contact_url' => $contact['url'], '$request' => $contact['request'], diff --git a/mod/network.php b/mod/network.php index a92e0c691b..3d14455cdf 100644 --- a/mod/network.php +++ b/mod/network.php @@ -568,14 +568,14 @@ function network_content(&$a, $update = 0) { intval($cid) ); if(count($r)) { - $sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` - WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." and deleted = 0 - ORDER BY `item`.`received` DESC) AS `temp1` + $sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item` + WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." and deleted = 0 + ORDER BY `item`.`received` DESC) AS `temp1` ON $sql_table.$sql_parent = `temp1`.`parent` "; $sql_extra = ""; $o = replace_macros(get_markup_template("section_title.tpl"),array( - '$title' => sprintf( t('Contact: %s'), $r[0]['name']) + '$title' => sprintf( t('Contact: %s'), htmlentities($r[0]['name'])) )) . $o; if($r[0]['network'] === NETWORK_OSTATUS && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 19bf0415c7..a6bf74b288 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -63,8 +63,8 @@ function viewcontacts_content(&$a) { 'id' => $rr['id'], 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']), 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), - 'name' => substr($rr['name'],0,20), - 'username' => $rr['name'], + 'name' => htmlentities(substr($rr['name'],0,20)), + 'username' => htmlentities($rr['name']), 'url' => $url, 'sparkle' => '', 'itemurl' => $rr['url'], diff --git a/object/Item.php b/object/Item.php index 0dc4f41985..cc6d08ec2b 100644 --- a/object/Item.php +++ b/object/Item.php @@ -134,7 +134,7 @@ class Item extends BaseObject { $filer = (($conv->get_profile_owner() == local_user()) ? t("save to folder") : false); $diff_author = ((link_compare($item['url'],$item['author-link'])) ? false : true); - $profile_name = (((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); + $profile_name = htmlentities(((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); if($item['author-link'] && (! $item['author-name'])) $profile_name = $item['author-link']; diff --git a/view/theme/vier/theme.php b/view/theme/vier/theme.php index ff06b63030..e1a75b9512 100644 --- a/view/theme/vier/theme.php +++ b/view/theme/vier/theme.php @@ -84,7 +84,8 @@ function cmtBbClose(id) { EOT; // Hide the left menu bar - if (($a->page['aside'] == "") AND in_array($a->argv[0], array("community", "events", "help", "manage", "notifications", "probe", "webfinger", "login"))) + if (($a->page['aside'] == "") AND in_array($a->argv[0], array("community", "events", "help", "manage", "notifications", + "probe", "webfinger", "login", "invite"))) $a->page['htmlhead'] .= ""; }