]> git.mxchange.org Git - friendica.git/blobdiff - include/conversation.php
Merge pull request #1950 from annando/1510-contact-menu
[friendica.git] / include / conversation.php
index 4aae611804cb7f0ebdf99856554293fc3f934c05..107fb84ea94dd1e5cd092bb5581d8f598c9e07ac 100644 (file)
@@ -204,7 +204,7 @@ function localize_item(&$item){
                // we can't have a translation string with three positions but no distinguishable text
                // So here is the translate string.
                $txt = t('%1$s poked %2$s');
-               
+
                // now translate the verb
                $poked_t = trim(sprintf($txt, "",""));
                $txt = str_replace( $poked_t, t($verb), $txt);
@@ -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 = '<div id="live-network"></div>' . "\r\n"
-                               . "<script> var profile_uid = " . $_SESSION['uid'] 
+                               . "<script> var profile_uid = " . $_SESSION['uid']
                                . "; var netargs = '" . substr($a->cmd,8)
                                . '?f='
                                . ((x($_GET,'cid'))    ? '&cid='    . $_GET['cid']    : '')
-                               . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '') 
-                               . ((x($_GET,'star'))   ? '&star='   . $_GET['star']   : '') 
-                               . ((x($_GET,'order'))  ? '&order='  . $_GET['order']  : '') 
-                               . ((x($_GET,'bmark'))  ? '&bmark='  . $_GET['bmark']  : '') 
-                               . ((x($_GET,'liked'))  ? '&liked='  . $_GET['liked']  : '') 
-                               . ((x($_GET,'conv'))   ? '&conv='   . $_GET['conv']   : '') 
-                               . ((x($_GET,'spam'))   ? '&spam='   . $_GET['spam']   : '') 
-                               . ((x($_GET,'nets'))   ? '&nets='   . $_GET['nets']   : '') 
-                               . ((x($_GET,'cmin'))   ? '&cmin='   . $_GET['cmin']   : '') 
-                               . ((x($_GET,'cmax'))   ? '&cmax='   . $_GET['cmax']   : '') 
-                               . ((x($_GET,'file'))   ? '&file='   . $_GET['file']   : '') 
+                               . ((x($_GET,'search')) ? '&search=' . $_GET['search'] : '')
+                               . ((x($_GET,'star'))   ? '&star='   . $_GET['star']   : '')
+                               . ((x($_GET,'order'))  ? '&order='  . $_GET['order']  : '')
+                               . ((x($_GET,'bmark'))  ? '&bmark='  . $_GET['bmark']  : '')
+                               . ((x($_GET,'liked'))  ? '&liked='  . $_GET['liked']  : '')
+                               . ((x($_GET,'conv'))   ? '&conv='   . $_GET['conv']   : '')
+                               . ((x($_GET,'spam'))   ? '&spam='   . $_GET['spam']   : '')
+                               . ((x($_GET,'nets'))   ? '&nets='   . $_GET['nets']   : '')
+                               . ((x($_GET,'cmin'))   ? '&cmin='   . $_GET['cmin']   : '')
+                               . ((x($_GET,'cmax'))   ? '&cmax='   . $_GET['cmax']   : '')
+                               . ((x($_GET,'file'))   ? '&file='   . $_GET['file']   : '')
 
                                . "'; var profile_page = " . $a->pager['page'] . "; </script>\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 = '<div id="live-profile"></div>' . "\r\n"
-                                       . "<script> var profile_uid = " . $a->profile['profile_uid'] 
+                                       . "<script> var profile_uid = " . $a->profile['profile_uid']
                                        . "; var netargs = '?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                        }
                }
@@ -441,7 +441,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                $page_writeable = true;
                if(!$update) {
                        $live_update_div = '<div id="live-notes"></div>' . "\r\n"
-                               . "<script> var profile_uid = " . local_user() 
+                               . "<script> var profile_uid = " . local_user()
                                . "; var netargs = '/?f='; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
        }
@@ -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,
@@ -792,10 +792,16 @@ function best_link_url($item,&$sparkle,$ssl_state = false) {
                        if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) {
                                $best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id'];
                                $sparkle = true;
-                       }
-                       else
+                       } else
                                $best_url = $a->contacts[$clean_url]['url'];
                }
+       } elseif (local_user()) {
+               $r = q("SELECT `id`, `network` FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` = '%s'",
+                       dbesc(NETWORK_DFRN), intval(local_user()), dbesc(normalise_link($clean_url)));
+               if ($r) {
+                       $best_url = $a->get_baseurl($ssl_state).'/redir/'.$r[0]['id'];
+                       $sparkle = true;
+               }
        }
        if(! $best_url) {
                if(strlen($item['author-link']))
@@ -848,9 +854,17 @@ function item_photo_menu($item){
                $profile_link = zrl($profile_link);
                if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) {
                        $cid = $item['contact-id'];
-               }
-               else {
-                       $cid = 0;
+               } else {
+                       $r = q("SELECT `id`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' ORDER BY `uid` DESC LIMIT 1",
+                               intval(local_user()), dbesc(normalise_link($item['author-link'])));
+                       if ($r) {
+                               $cid = $r[0]["id"];
+
+                               if ($r[0]["network"] == NETWORK_DIASPORA)
+                                       $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid;
+
+                       } else
+                               $cid = 0;
                }
        }
        if(($cid) && (! $item['self'])) {
@@ -870,17 +884,25 @@ function item_photo_menu($item){
 
        }
 
-       $menu = Array(
-               t("Follow Thread") => $sub_link,
-               t("View Status") => $status_link,
-               t("View Profile") => $profile_link,
-               t("View Photos") => $photos_link,
-               t("Network Posts") => $posts_link,
-               t("Edit Contact") => $contact_url,
-               t("Send PM") => $pm_url,
-               t("Poke") => $poke_link
-       );
-
+       if (local_user()) {
+               $menu = Array(
+                       t("Follow Thread") => $sub_link,
+                       t("View Status") => $status_link,
+                       t("View Profile") => $profile_link,
+                       t("View Photos") => $photos_link,
+                       t("Network Posts") => $posts_link,
+                       t("Edit Contact") => $contact_url,
+                       t("Send PM") => $pm_url
+               );
+
+               if ($a->contacts[$clean_url]['network'] === NETWORK_DFRN)
+                       $menu[t("Poke")] = $poke_link;
+
+               if ((($cid == 0) OR ($a->contacts[$clean_url]['rel'] == CONTACT_IS_FOLLOWER)) AND
+                       in_array($item['network'], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
+                       $menu[t("Connect/Follow")] = $a->get_baseurl($ssl_state)."/follow?url=".urlencode($item['author-link']);
+       } else
+               $menu = array(t("View Profile") => $item['author-link']);
 
        $args = array('item' => $item, 'menu' => $menu);
 
@@ -892,9 +914,9 @@ function item_photo_menu($item){
        foreach($menu as $k=>$v){
                if(strpos($v,'javascript:') === 0) {
                        $v = substr($v,11);
-                       $o .= "<li><a href=\"#\" onclick=\"$v\">$k</a></li>\n";
+                       $o .= "<li role=\"menuitem\"><a onclick=\"$v\">$k</a></li>\n";
                }
-               elseif ($v!="") $o .= "<li><a href=\"$v\">$k</a></li>\n";
+               elseif ($v!="") $o .= "<li role=\"menuitem\"><a href=\"$v\">$k</a></li>\n";
        }
        return $o;
 }}
@@ -924,7 +946,7 @@ function like_puller($a,$item,&$arr,$mode) {
                        $arr[$item['thr-parent']] = 1;
                else
                        $arr[$item['thr-parent']] ++;
-               $arr[$item['thr-parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . $item['author-name'] . '</a>';
+               $arr[$item['thr-parent'] . '-l'][] = '<a href="'. $url . '"'. $sparkle .'>' . htmlentities($item['author-name']) . '</a>';
        }
        return;
 }}
@@ -940,7 +962,7 @@ if(! function_exists('format_like')) {
 function format_like($cnt,$arr,$type,$id) {
        $o = '';
        if($cnt == 1)
-               $o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL ;
+               $o .= (($type === 'like') ? sprintf( t('%s likes this.'), $arr[0]) : sprintf( t('%s doesn\'t like this.'), $arr[0])) . EOL;
        else {
                $spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\"";
                switch($type) {