X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fconversation.php;h=3b2eb54bde12c655b1df3421bd70f8d9df48d03d;hb=37f466d16e8d25badf1125ef3702115210532f53;hp=4924470875a6ee14383809b0beca1758b1eafecf;hpb=f5c7006f30cf12f031737da72125abff238780d5;p=friendica.git diff --git a/include/conversation.php b/include/conversation.php index 4924470875..3b2eb54bde 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -100,7 +100,11 @@ function localize_item(&$item){ $item['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $item['contact-id']); $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">"; - if (activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)){ + if (activity_match($item['verb'],ACTIVITY_LIKE) + || activity_match($item['verb'],ACTIVITY_DISLIKE) + || activity_match($item['verb'],ACTIVITY_ATTEND) + || activity_match($item['verb'],ACTIVITY_ATTENDNO) + || activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)){ $r = q("SELECT * from `item`,`contact` WHERE `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';", @@ -139,6 +143,15 @@ function localize_item(&$item){ elseif(activity_match($item['verb'],ACTIVITY_DISLIKE)) { $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s'); } + elseif(activity_match($item['verb'],ACTIVITY_ATTEND)) { + $bodyverb = t('%1$s attends %2$s\'s %3$s'); + } + elseif(activity_match($item['verb'],ACTIVITY_ATTENDNO)) { + $bodyverb = t('%1$s doesn\'t attend %2$s\'s %3$s'); + } + elseif(activity_match($item['verb'],ACTIVITY_ATTENDMAYBE)) { + $bodyverb = t('%1$s attends maybe %2$s\'s %3$s'); + } $item['body'] = sprintf($bodyverb, $author, $objauthor, $plink); } @@ -204,7 +217,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); @@ -344,7 +357,7 @@ function visible_activity($item) { // likes (etc.) can apply to other things besides posts. Check if they are post children, // in which case we handle them specially - $hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); + $hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); foreach($hidden_activities as $act) { if(activity_match($item['verb'],$act)) { return false; @@ -403,25 +416,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"; } @@ -438,7 +451,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"; } } @@ -448,7 +461,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_writeable = true; if(!$update) { $live_update_div = '
' . "\r\n" - . "\r\n"; } } @@ -492,8 +505,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $hide_comments_tpl = get_markup_template('hide_comments.tpl'); $conv_responses = array( - 'like' => array('title' => t('Likes','title')),'dislike' => array('title' => t('Dislikes','title')), - 'agree' => array('title' => t('Agree','title')),'disagree' => array('title' => t('Disagree','title')), 'abstain' => array('title' => t('Abstain','title')), + 'like' => array('title' => t('Likes','title')), 'dislike' => array('title' => t('Dislikes','title')), 'attendyes' => array('title' => t('Attending','title')), 'attendno' => array('title' => t('Not attending','title')), 'attendmaybe' => array('title' => t('Might attend','title')) ); @@ -666,7 +678,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, @@ -685,7 +697,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, @@ -801,10 +813,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'])) @@ -857,9 +875,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'])) { @@ -879,17 +905,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); @@ -930,15 +964,6 @@ function builtin_activity_puller($item, &$conv_responses) { case 'dislike': $verb = ACTIVITY_DISLIKE; break; - case 'agree': - $verb = ACTIVITY_AGREE; - break; - case 'disagree': - $verb = ACTIVITY_DISAGREE; - break; - case 'abstain': - $verb = ACTIVITY_ABSTAIN; - break; case 'attendyes': $verb = ACTIVITY_ATTEND; break; @@ -959,15 +984,15 @@ function builtin_activity_puller($item, &$conv_responses) { $url = z_root(true) . '/redir/' . $item['contact-id']; $sparkle = ' class="sparkle" '; } - else + else $url = zrl($url); - - $url = '' . $item['author-name'] . ''; + + $url = '' . htmlentities($item['author-name']) . ''; if(! $item['thr-parent']) $item['thr-parent'] = $item['parent-uri']; - if(! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l'])) + if(! ((isset($conv_responses[$mode][$item['thr-parent'] . '-l'])) && (is_array($conv_responses[$mode][$item['thr-parent'] . '-l'])))) $conv_responses[$mode][$item['thr-parent'] . '-l'] = array(); @@ -991,7 +1016,7 @@ function builtin_activity_puller($item, &$conv_responses) { // Format the vote text for a profile item // $cnt = number of people who vote the item // $arr = array of pre-linked names of likers/dislikers -// $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe', 'agree', 'disagree', 'abstain' +// $type = one of 'like, 'dislike', 'attendyes', 'attendno', 'attendmaybe' // $id = item id // returns formatted text @@ -1000,10 +1025,31 @@ function format_like($cnt,$arr,$type,$id) { $o = ''; $expanded = ''; - if($cnt == 1) + if($cnt == 1) { $likers = $arr[0]; - else { + // Phrase if there is only one liker. In other cases it will be uses for the expanded + // list which show all likers + switch($type) { + case 'like' : + $phrase = sprintf( t('%s likes this.'), $likers); + break; + case 'dislike' : + $phrase = sprintf( t('%s doesn\'t like this.'), $likers); + break; + case 'attendyes' : + $phrase = sprintf( t('%s attends.'), $likers); + break; + case 'attendno' : + $phrase = sprintf( t('%s doesn\'t attend.'), $likers); + break; + case 'attendmaybe' : + $phrase = sprintf( t('%s attends maybe.'), $likers); + break; + } + } + + if($cnt > 1) { $total = count($arr); if($total >= MAX_LIKERS) $arr = array_slice($arr, 0, MAX_LIKERS - 1); @@ -1018,64 +1064,33 @@ function format_like($cnt,$arr,$type,$id) { } $likers = $str; - } - - // Phrase if there is only one liker. In other cases it will be uses for the expanded - // list which show all likers - switch($type) { - case 'like' : - $phrase = sprintf( t('%s likes this.'), $likers); - break; - case 'dislike' : - $phrase = sprintf( t('%s doesn\'t like this.'), $likers); - break; - case 'attendyes' : - $phrase = sprintf( t('%s attends.'), $likers); - break; - case 'attendno' : - $phrase = sprintf( t('%s doesn\'t attend.'), $likers); - break; - case 'attendmaybe' : - $phrase = sprintf( t('%s attends maybe.'), $likers); - break; - case 'agree' : - $phrase = sprintf( t('%s agrees.'), $likers); - break; - case 'disagree' : - $phrase = sprintf( t('%s doesn\'t agree.'), $likers); - break; - case 'abstain' : - $phrase = sprintf( t('%s abstains.'), $likers); - break; - } - if($cnt > 1) { $spanatts = "class=\"fakelink\" onclick=\"openClose('{$type}list-$id');\""; - $expanded .= "\t" . ''; + switch($type) { case 'like': $phrase = sprintf( t('%2$d people like this'), $spanatts, $cnt); + $explikers = sprintf( t('%s like this.'), $likers); break; case 'dislike': $phrase = sprintf( t('%2$d people don\'t like this'), $spanatts, $cnt); + $explikers = sprintf( t('%s don\'t like this.'), $likers); break; case 'attendyes': $phrase = sprintf( t('%2$d people attend'), $spanatts, $cnt); + $explikers = sprintf( t('%s attend.'), $likers); break; case 'attendno': $phrase = sprintf( t('%2$d people don\'t attend'), $spanatts, $cnt); + $explikers = sprintf( t('%s don\'t attend.'), $likers); break; case 'attendmaybe': $phrase = sprintf( t('%2$d people anttend maybe'), $spanatts, $cnt); - case 'agree': - $phrase = sprintf( t('%2$d people agree'), $spanatts, $cnt); + $explikers = sprintf( t('%s anttend maybe.'), $likers); break; - case 'disagree': - $phrase = sprintf( t('%2$d people don\'t agree'), $spanatts, $cnt); - break; - case 'abstain': - $phrase = sprintf( t('%2$d people abstains'), $spanatts, $cnt); } + + $expanded .= "\t" . ''; } $phrase .= EOL ; @@ -1103,8 +1118,6 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { if( local_user() && feature_enabled(local_user(),'richtext') ) $plaintext = false; - $voting = feature_enabled(local_user(),'consensus_tools'); - $tpl = get_markup_template('jot-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array( '$newpost' => 'true', @@ -1182,9 +1195,6 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$shortsetloc' => t('set location'), '$noloc' => t('Clear browser location'), '$shortnoloc' => t('clear location'), - '$voting' => t('Toggle voting'), - '$feature_voting' => $voting, - '$consensus' => 0, '$title' => $x['title'], '$placeholdertitle' => t('Set title'), '$category' => $x['category'], @@ -1281,6 +1291,15 @@ function conv_sort($arr,$order) { $parents = array(); $children = array(); + $newarr = array(); + + // This is a preparation for having two different items with the same uri in one thread + // This will otherwise lead to an endless loop. + foreach($arr as $x) + if (!isset($newarr[$x['uri']])) + $newarr[$x['uri']] = $x; + + $arr = $newarr; foreach($arr as $x) if($x['id'] == $x['parent']) @@ -1364,8 +1383,8 @@ function get_responses($conv_responses,$response_verbs,$ob,$item) { if(count($ret[$v]['list']) > MAX_LIKERS) { $ret[$v]['list_part'] = array_slice($ret[$v]['list'], 0, MAX_LIKERS); array_push($ret[$v]['list_part'], '' . t('View all') . ''); - } + . (($ob) ? $ob->get_id() : $item['id']) . '">' . t('View all') . ''); + } else { $ret[$v]['list_part'] = ''; } @@ -1400,17 +1419,5 @@ function get_response_button_text($v,$count) { case 'attendmaybe': return tt('Undecided','Undecided',$count,'noun'); break; - case 'agree': - return tt('Agree','Agrees',$count,'noun'); - break; - case 'disagree': - return tt('Disagree','Disagrees',$count,'noun'); - break; - case 'abstain': - return tt('Abstain','Abstains',$count,'noun'); - break; - default: - return ''; - break; } }