From 1f0b759e2f6df7af4bc55571168bad3e3acbcd76 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 7 Oct 2015 08:25:10 +0200 Subject: [PATCH 1/2] Added resize possibility to proxy function --- include/acl_selectors.php | 6 ++--- include/bbcode.php | 2 +- include/conversation.php | 4 +-- include/text.php | 2 +- mod/contacts.php | 6 ++--- mod/content.php | 12 ++++----- mod/directory.php | 2 +- mod/dirfind.php | 2 +- mod/display.php | 6 ++--- mod/follow.php | 2 +- mod/match.php | 3 ++- mod/notifications.php | 14 +++++------ mod/ping.php | 2 +- mod/proxy.php | 51 ++++++++++++++++++++++++++++++--------- mod/suggest.php | 4 +-- mod/viewcontacts.php | 2 +- object/Item.php | 4 +-- view/theme/vier/theme.php | 2 +- 18 files changed, 77 insertions(+), 49 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index f628b97309..05856bd217 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -545,7 +545,7 @@ function acl_lookup(&$a, $out_type = 'json') { $x['data'] = array(); if(count($r)) { foreach($r as $g) { - $x['photos'][] = proxy_url($g['micro']); + $x['photos'][] = proxy_url($g['micro'], false, PROXY_SIZE_MICRO); $x['links'][] = $g['url']; $x['suggestions'][] = $g['name']; $x['data'][] = intval($g['id']); @@ -559,7 +559,7 @@ function acl_lookup(&$a, $out_type = 'json') { foreach($r as $g){ $contacts[] = array( "type" => "c", - "photo" => proxy_url($g['micro']), + "photo" => proxy_url($g['micro'], false, PROXY_SIZE_MICRO), "name" => $g['name'], "id" => intval($g['id']), "network" => $g['network'], @@ -604,7 +604,7 @@ function acl_lookup(&$a, $out_type = 'json') { // /nickname $unknow_contacts[] = array( "type" => "c", - "photo" => proxy_url($row['author-avatar']), + "photo" => proxy_url($row['author-avatar'], false, PROXY_SIZE_MICRO), "name" => $row['author-name'], "id" => '', "network" => "unknown", diff --git a/include/bbcode.php b/include/bbcode.php index a4ad09ccf5..2fcf6c3247 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -601,7 +601,7 @@ function bb_ShareAttributes($share, $simplehtml) { default: $headline = trim($share[1]).'
'; if ($avatar != "") - $headline .= ''; + $headline .= ''; $headline .= sprintf(t('%s wrote the following post'.$reldate.':'), $profile, $author, $link); $headline .= "
"; diff --git a/include/conversation.php b/include/conversation.php index 0a33740555..2397014141 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -656,7 +656,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'name' => $profile_name_e, 'sparkle' => $sparkle, 'lock' => $lock, - 'thumb' => proxy_url($profile_avatar), + 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), 'title' => $item['title_e'], 'body' => $body_e, 'tags' => $tags_e, @@ -675,7 +675,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'indent' => '', 'owner_name' => $owner_name_e, 'owner_url' => $owner_url, - 'owner_photo' => proxy_url($owner_photo), + 'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB), 'plink' => get_plink($item), 'edpost' => false, 'isstarred' => $isstarred, diff --git a/include/text.php b/include/text.php index c5b28b508e..4ce634b603 100644 --- a/include/text.php +++ b/include/text.php @@ -970,7 +970,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) { . (($click) ? ' fakelink' : '') . '" ' . (($redir) ? ' target="redir" ' : '') . (($url) ? ' href="' . $url . '"' : '') . $click . ' >' . $contact['name']
+			. proxy_url($contact['micro'], false, PROXY_SIZE_THUMB) . '' . "\r\n"; } }} diff --git a/mod/contacts.php b/mod/contacts.php index 92463cd8de..25b22658f2 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -832,8 +832,8 @@ function _contact_detail_for_template($rr){ $url = $rr['url']; $sparkle = ''; } - - + + return array( 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']), 'edit_hover' => t('Edit contact'), @@ -841,7 +841,7 @@ function _contact_detail_for_template($rr){ 'id' => $rr['id'], 'alt_text' => $alt_text, 'dir_icon' => $dir_icon, - 'thumb' => proxy_url($rr['thumb']), + 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), 'name' => $rr['name'], 'username' => $rr['name'], 'sparkle' => $sparkle, diff --git a/mod/content.php b/mod/content.php index cec23a9142..c5a5556116 100644 --- a/mod/content.php +++ b/mod/content.php @@ -11,8 +11,8 @@ // There is no "pagination query", but we will manage the "current page" on the client // and provide a link to fetch the next page - until there are no pages left to fetch. -// With the exception of complex tag and text searches, this prototype is incredibly -// fast - e.g. one or two milliseconds to fetch parent items for the current content, +// With the exception of complex tag and text searches, this prototype is incredibly +// fast - e.g. one or two milliseconds to fetch parent items for the current content, // and 10-20 milliseconds to fetch all the child items. @@ -476,7 +476,7 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { 'name' => $name_e, 'sparkle' => $sparkle, 'lock' => $lock, - 'thumb' => proxy_url($profile_avatar), + 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), 'title' => $title_e, 'body' => $body_e, 'text' => $text_e, @@ -485,7 +485,7 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { 'indent' => '', 'owner_name' => $owner_name_e, 'owner_url' => $owner_url, - 'owner_photo' => proxy_url($owner_photo), + 'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB), 'plink' => get_plink($item), 'edpost' => false, 'isstarred' => $isstarred, @@ -859,7 +859,7 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $name_e, - 'thumb' => proxy_url($profile_avatar), + 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => $title_e, @@ -869,7 +869,7 @@ function render_content(&$a, $items, $mode, $update, $preview = false) { 'indent' => $indent, 'shiny' => $shiny, 'owner_url' => $owner_url, - 'owner_photo' => proxy_url($owner_photo), + 'owner_photo' => proxy_url($owner_photo, false, PROXY_SIZE_THUMB), 'owner_name' => $owner_name_e, 'plink' => get_plink($item), 'edpost' => $edpost, diff --git a/mod/directory.php b/mod/directory.php index fa3a89e45a..6fd99256f0 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -171,7 +171,7 @@ function directory_content(&$a) { $entry = replace_macros($tpl,array( '$id' => $rr['id'], '$profile_link' => $profile_link, - '$photo' => proxy_url($a->get_cached_avatar_image($rr[$photo])), + '$photo' => proxy_url($a->get_cached_avatar_image($rr[$photo]), false, PROXY_SIZE_THUMB), '$alt_text' => $rr['name'], '$name' => $rr['name'], '$details' => $pdesc . $details, diff --git a/mod/dirfind.php b/mod/dirfind.php index 488e10fa16..4156d3b1cf 100644 --- a/mod/dirfind.php +++ b/mod/dirfind.php @@ -140,7 +140,7 @@ function dirfind_content(&$a, $prefix = "") { $o .= replace_macros($tpl,array( '$url' => zrl($jj->url), '$name' => $jj->name, - '$photo' => proxy_url($jj->photo), + '$photo' => proxy_url($jj->photo, false, PROXY_SIZE_THUMB), '$tags' => $jj->tags, '$conntxt' => $conntxt, '$connlnk' => $connlnk, diff --git a/mod/display.php b/mod/display.php index 46574bd064..6b345e6302 100644 --- a/mod/display.php +++ b/mod/display.php @@ -97,7 +97,7 @@ function display_fetchauthor($a, $item) { $profiledata["nickname"] = $item["author-name"]; $profiledata["name"] = $item["author-name"]; $profiledata["picdate"] = ""; - $profiledata["photo"] = proxy_url($item["author-avatar"]); + $profiledata["photo"] = proxy_url($item["author-avatar"], false, PROXY_SIZE_SMALL); $profiledata["url"] = $item["author-link"]; $profiledata["network"] = $item["network"]; @@ -174,7 +174,7 @@ function display_fetchauthor($a, $item) { $r[0]["about"] = ""; } - $profiledata["photo"] = proxy_url($r[0]["photo"]); + $profiledata["photo"] = proxy_url($r[0]["photo"], false, PROXY_SIZE_SMALL); $profiledata["address"] = bbcode($r[0]["location"]); $profiledata["about"] = bbcode($r[0]["about"]); if ($r[0]["nick"] != "") @@ -185,7 +185,7 @@ function display_fetchauthor($a, $item) { $r = q("SELECT `avatar`, `nick`, `location`, `about` FROM `unique_contacts` WHERE `url` = '%s'", dbesc(normalise_link($profiledata["url"]))); if (count($r)) { if ($profiledata["photo"] == "") - $profiledata["photo"] = proxy_url($r[0]["avatar"]); + $profiledata["photo"] = proxy_url($r[0]["avatar"], false, PROXY_SIZE_SMALL); if (($profiledata["address"] == "") AND ($profiledata["network"] != NETWORK_DIASPORA)) $profiledata["address"] = bbcode($r[0]["location"]); if (($profiledata["about"] == "") AND ($profiledata["network"] != NETWORK_DIASPORA)) diff --git a/mod/follow.php b/mod/follow.php index 352a8988b5..54c20e5093 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -81,7 +81,7 @@ function follow_content(&$a) { $o = replace_macros($tpl,array( '$header' => htmlentities($header), - '$photo' => proxy_url($ret["photo"]), + '$photo' => proxy_url($ret["photo"], false, PROXY_SIZE_SMALL), '$desc' => "", '$pls_answer' => t('Please answer the following:'), '$does_know_you' => array('knowyou', sprintf(t('Does %s know you?'),$ret["name"]), false, '', array(t('No'),t('Yes'))), diff --git a/mod/match.php b/mod/match.php index 74f83a6cc9..f31b0f67a4 100644 --- a/mod/match.php +++ b/mod/match.php @@ -2,6 +2,7 @@ include_once('include/text.php'); require_once('include/socgraph.php'); require_once('include/contact_widgets.php'); +require_once('mod/proxy.php'); function match_content(&$a) { @@ -65,7 +66,7 @@ function match_content(&$a) { $o .= replace_macros($tpl,array( '$url' => zrl($jj->url), '$name' => $jj->name, - '$photo' => proxy_url($jj->photo), + '$photo' => proxy_url($jj->photo, false, PROXY_SIZE_THUMB), '$inttxt' => ' ' . t('is interested in:'), '$conntxt' => t('Connect'), '$connlnk' => $connlnk, diff --git a/mod/notifications.php b/mod/notifications.php index fadd1e94e5..a267b7c958 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -166,7 +166,7 @@ function notifications_content(&$a) { '$intro_id' => $rr['intro_id'], '$madeby' => sprintf( t('suggested by %s'),$rr['name']), '$contact_id' => $rr['contact-id'], - '$photo' => ((x($rr,'fphoto')) ? proxy_url($rr['fphoto']) : "images/person-175.jpg"), + '$photo' => ((x($rr,'fphoto')) ? proxy_url($rr['fphoto'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"), '$fullname' => $rr['fname'], '$url' => zrl($rr['furl']), '$hidden' => array('hidden', t('Hide this contact from others'), ($rr['hidden'] == 1), ''), @@ -238,7 +238,7 @@ function notifications_content(&$a) { '$uid' => $_SESSION['uid'], '$intro_id' => $rr['intro_id'], '$contact_id' => $rr['contact-id'], - '$photo' => ((x($rr,'photo')) ? proxy_url($rr['photo']) : "images/person-175.jpg"), + '$photo' => ((x($rr,'photo')) ? proxy_url($rr['photo'], false, PROXY_SIZE_SMALL) : "images/person-175.jpg"), '$fullname' => $rr['name'], '$location' => bbcode($rr['glocation'], false, false), '$location_label' => t('Location:'), @@ -303,7 +303,7 @@ function notifications_content(&$a) { $notif_content .= replace_macros($tpl_item_likes,array( //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'], - '$item_image' => $it['author-avatar'], + '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO), '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) )); @@ -313,7 +313,7 @@ function notifications_content(&$a) { $notif_content .= replace_macros($tpl_item_dislikes,array( //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'], - '$item_image' => $it['author-avatar'], + '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO), '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) )); @@ -328,7 +328,7 @@ function notifications_content(&$a) { $notif_content .= replace_macros($tpl_item_friends,array( //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'], - '$item_image' => $it['author-avatar'], + '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO), '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_when' => relative_date($it['created']) )); @@ -343,7 +343,7 @@ function notifications_content(&$a) { $notif_content .= replace_macros($tpl,array( //'$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_link' => $a->get_baseurl(true).'/display/'.$it['pguid'], - '$item_image' => $it['author-avatar'], + '$item_image' => proxy_url($it['author-avatar'], false, PROXY_SIZE_MICRO), '$item_text' => $item_text, '$item_when' => relative_date($it['created']) )); @@ -376,7 +376,7 @@ function notifications_content(&$a) { foreach ($r as $it) { $notif_content .= replace_macros($not_tpl,array( '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'], - '$item_image' => proxy_url($it['photo']), + '$item_image' => proxy_url($it['photo'], false, PROXY_SIZE_MICRO), '$item_text' => strip_tags(bbcode($it['msg'])), '$item_when' => relative_date($it['date']) )); diff --git a/mod/ping.php b/mod/ping.php index e87ed98553..791ceed351 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -173,7 +173,7 @@ function ping_init(&$a) { * 'message' => notification message. "{0}" will be replaced by subject name **/ function xmlize($n){ - $n['photo'] = proxy_url($n['photo']); + $n['photo'] = proxy_url($n['photo'], false, PROXY_SIZE_MICRO); $n['message'] = html_entity_decode($n['message'], ENT_COMPAT | ENT_HTML401, "UTF-8"); $n['name'] = html_entity_decode($n['name'], ENT_COMPAT | ENT_HTML401, "UTF-8"); diff --git a/mod/proxy.php b/mod/proxy.php index d82d334cec..d26967dddf 100644 --- a/mod/proxy.php +++ b/mod/proxy.php @@ -3,6 +3,12 @@ define("PROXY_DEFAULT_TIME", 86400); // 1 Day +define("PROXY_SIZE_MICRO", "micro"); +define("PROXY_SIZE_THUMB", "thumb"); +define("PROXY_SIZE_SMALL", "small"); +define("PROXY_SIZE_MEDIUM", "medium"); +define("PROXY_SIZE_LARGE", "large"); + require_once('include/security.php'); require_once("include/Photo.php"); @@ -37,6 +43,7 @@ function proxy_init() { $thumb = false; $size = 1024; + $sizetype = ""; // If the cache path isn't there, try to create it if (!is_dir($_SERVER["DOCUMENT_ROOT"]."/proxy")) @@ -59,14 +66,27 @@ function proxy_init() { $size = 200; // thumb, small, medium and large. - if (substr($url, -6) == ":thumb") - $size = 150; - if (substr($url, -6) == ":small") - $size = 340; - if (substr($url, -7) == ":medium") + if (substr($url, -6) == ":micro") { + $size = 48; + $sizetype = ":micro"; + $url = substr($url, 0, -6); + } elseif (substr($url, -6) == ":thumb") { + $size = 80; + $sizetype = ":thumb"; + $url = substr($url, 0, -6); + } elseif (substr($url, -6) == ":small") { + $size = 175; + $url = substr($url, 0, -6); + $sizetype = ":small"; + } elseif (substr($url, -7) == ":medium") { $size = 600; - if (substr($url, -6) == ":large") + $url = substr($url, 0, -7); + $sizetype = ":medium"; + } elseif (substr($url, -6) == ":large") { $size = 1024; + $url = substr($url, 0, -6); + $sizetype = ":large"; + } $pos = strrpos($url, "=."); if ($pos) @@ -176,6 +196,8 @@ function proxy_init() { } } + $img_str_orig = $img_str; + // reduce quality - if it isn't a GIF if ($mime != "image/gif") { $img = new Photo($img_str, $mime); @@ -188,10 +210,12 @@ function proxy_init() { // If there is a real existing directory then put the cache file there // advantage: real file access is really fast // Otherwise write in cachefile - if ($valid AND $direct_cache) - file_put_contents($_SERVER["DOCUMENT_ROOT"]."/proxy/".proxy_url($_REQUEST['url'], true), $img_str); - elseif ($cachefile != '') - file_put_contents($cachefile, $img_str); + if ($valid AND $direct_cache) { + file_put_contents($_SERVER["DOCUMENT_ROOT"]."/proxy/".proxy_url($_REQUEST['url'], true), $img_str_orig); + if ($sizetype <> '') + file_put_contents($_SERVER["DOCUMENT_ROOT"]."/proxy/".proxy_url($_REQUEST['url'], true).$sizetype, $img_str); + } elseif ($cachefile != '') + file_put_contents($cachefile, $img_str_orig); header("Content-type: $mime"); @@ -208,7 +232,7 @@ function proxy_init() { killme(); } -function proxy_url($url, $writemode = false) { +function proxy_url($url, $writemode = false, $size = "") { global $_SERVER; $a = get_app(); @@ -251,6 +275,9 @@ function proxy_url($url, $writemode = false) { $proxypath = $a->get_baseurl()."/proxy/".$path; + if ($size != "") + $size = ":".$size; + // Too long files aren't supported by Apache // Writemode in combination with long files shouldn't be possible if ((strlen($proxypath) > 250) AND $writemode) @@ -260,7 +287,7 @@ function proxy_url($url, $writemode = false) { elseif ($writemode) return ($path); else - return ($proxypath); + return ($proxypath.$size); } /** diff --git a/mod/suggest.php b/mod/suggest.php index e07e933114..8bf31ca8e5 100644 --- a/mod/suggest.php +++ b/mod/suggest.php @@ -81,12 +81,12 @@ function suggest_content(&$a) { foreach($r as $rr) { - $connlnk = $a->get_baseurl() . '/follow/?url=' . (($rr['connect']) ? $rr['connect'] : $rr['url']); + $connlnk = $a->get_baseurl() . '/follow/?url=' . (($rr['connect']) ? $rr['connect'] : $rr['url']); $o .= replace_macros($tpl,array( '$url' => zrl($rr['url']), '$name' => $rr['name'], - '$photo' => proxy_url($rr['photo']), + '$photo' => proxy_url($rr['photo'], false, PROXY_SIZE_THUMB), '$ignlnk' => $a->get_baseurl() . '/suggest?ignore=' . $rr['id'], '$ignid' => $rr['id'], '$conntxt' => t('Connect'), diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index b84856701d..19bf0415c7 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -62,7 +62,7 @@ function viewcontacts_content(&$a) { $contacts[] = array( 'id' => $rr['id'], 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']), - 'thumb' => proxy_url($rr['thumb']), + 'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB), 'name' => substr($rr['name'],0,20), 'username' => $rr['name'], 'url' => $url, diff --git a/object/Item.php b/object/Item.php index c7a025861f..0dc4f41985 100644 --- a/object/Item.php +++ b/object/Item.php @@ -334,7 +334,7 @@ class Item extends BaseObject { 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $name_e, - 'thumb' => proxy_url($profile_avatar), + 'thumb' => proxy_url($profile_avatar, false, PROXY_SIZE_THUMB), 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => $title_e, @@ -347,7 +347,7 @@ class Item extends BaseObject { 'indent' => $indent, 'shiny' => $shiny, 'owner_url' => $this->get_owner_url(), - 'owner_photo' => proxy_url($this->get_owner_photo()), + 'owner_photo' => proxy_url($this->get_owner_photo(), false, PROXY_SIZE_THUMB), 'owner_name' => $owner_name_e, 'plink' => get_plink($item), 'edpost' => ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''), diff --git a/view/theme/vier/theme.php b/view/theme/vier/theme.php index 6d3ac1caf6..ff06b63030 100644 --- a/view/theme/vier/theme.php +++ b/view/theme/vier/theme.php @@ -132,7 +132,7 @@ function vier_community_info() { '$id' => $rr['id'], //'$profile_link' => zrl($rr['url']), '$profile_link' => $a->get_baseurl().'/follow/?url='.urlencode($rr['url']), - '$photo' => proxy_url($rr['photo']), + '$photo' => proxy_url($rr['photo'], false, PROXY_SIZE_MICRO), '$alt_text' => $rr['name'], )); $aside['$comunity_profiles_items'][] = $entry; From 61c3ce7a212156a06ee88285c3a76c823d761f1e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 8 Oct 2015 00:25:55 +0200 Subject: [PATCH 2/2] Bugfix: The contact names had to be escaped --- include/conversation.php | 30 +++++++++++++++--------------- include/diaspora.php | 8 +++++++- include/items.php | 17 +++++++++++++++-- mod/allfriends.php | 8 ++++---- mod/common.php | 10 +++++----- mod/contacts.php | 12 ++++++------ mod/crepair.php | 6 +++--- mod/network.php | 8 ++++---- mod/viewcontacts.php | 4 ++-- object/Item.php | 2 +- view/theme/vier/theme.php | 3 ++- 11 files changed, 64 insertions(+), 44 deletions(-) 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'] .= ""; }