]> git.mxchange.org Git - friendica.git/blobdiff - include/conversation.php
bug #147 comments not working on private notes page
[friendica.git] / include / conversation.php
index 7752342842a918601a710ba13bcd2ead1315b1ba..6aad2485a7ab505d4ead881af73ea14e2b0295cd 100644 (file)
@@ -5,8 +5,7 @@
  */
 function localize_item(&$item){
        
-       if ($item['verb']=="http://activitystrea.ms/schema/1.0/like" ||
-               $item['verb']=="http://activitystrea.ms/schema/1.0/dislike"){
+       if ($item['verb']=== ACTIVITY_LIKE || $item['verb']=== ACTIVITY_DISLIKE){
 
                $r = q("SELECT * from `item`,`contact` WHERE 
                                `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';",
@@ -17,23 +16,42 @@ function localize_item(&$item){
                $author  = '[url=' . $item['author-link'] . ']' . $item['author-name'] . '[/url]';
                $objauthor =  '[url=' . $obj['author-link'] . ']' . $obj['author-name'] . '[/url]';
                
-               $post_type = (($obj['resource-id']) ? t('photo') : t('status'));                
+               switch($obj['verb']){
+                       case ACTIVITY_POST:
+                               switch ($obj['object-type']){
+                                       case ACTIVITY_OBJ_EVENT:
+                                               $post_type = t('event');
+                                               break;
+                                       default:
+                                               $post_type = t('status');
+                               }
+                               break;
+                       default:
+                               if($obj['resource-id']){
+                                       $post_type = t('photo');
+                                       $m=array();     preg_match("/\[url=([^]]*)\]/", $obj['body'], $m);
+                                       $rr['plink'] = $m[1];
+                               } else {
+                                       $post_type = t('status');
+                               }
+               }
+       
                $plink = '[url=' . $obj['plink'] . ']' . $post_type . '[/url]';
                 
                switch($item['verb']){
-                       case "http://activitystrea.ms/schema/1.0/like":
+                       case ACTIVITY_LIKE :
                                $bodyverb = t('%1$s likes %2$s\'s %3$s');
                                break;
-                       case "http://activitystrea.ms/schema/1.0/dislike":
+                       case ACTIVITY_DISLIKE:
                                $bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
                                break;
                }
                $item['body'] = sprintf($bodyverb, $author, $objauthor, $plink);
                        
        }
-       if ($item['verb']=='http://activitystrea.ms/schema/1.0/make-friend'){
+       if ($item['verb']=== ACTIVITY_FRIEND){
 
-               if ($item['object-type']=="" || $item['object-type']!='http://activitystrea.ms/schema/1.0/person') return;
+               if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return;
 
                $Aname = $item['author-name'];
                $Alink = $item['author-link'];
@@ -62,6 +80,7 @@ function localize_item(&$item){
 
        }
         
+
 }
 
 /**
@@ -91,11 +110,21 @@ function conversation(&$a, $items, $mode, $update) {
                $page_writeable = can_write_wall($a,$profile_owner);
        }
 
+       if($mode === 'notes') {
+               $profile_owner = local_user();
+               $page_writeable = true;
+       }
+
        if($mode === 'display') {
                $profile_owner = $a->profile['uid'];
                $page_writeable = can_write_wall($a,$profile_owner);
        }
 
+       if($mode === 'community') {
+               $profile_owner = 0;
+               $page_writeable = false;
+       }
+
        if($update)
                $return_url = $_SESSION['return_url'];
        else
@@ -104,24 +133,25 @@ function conversation(&$a, $items, $mode, $update) {
        load_contact_links(local_user());
 
 
-       $cmnt_tpl    = load_view_file('view/comment_item.tpl');
-       $like_tpl    = load_view_file('view/like.tpl');
-       $noshare_tpl = load_view_file('view/like_noshare.tpl');
-       $tpl         = load_view_file('view/wall_item.tpl');
-       $wallwall    = load_view_file('view/wallwall_item.tpl');
+       $cmnt_tpl    = get_markup_template('comment_item.tpl');
+       $like_tpl    = get_markup_template('like.tpl');
+       $noshare_tpl = get_markup_template('like_noshare.tpl');
+       $tpl         = get_markup_template('wall_item.tpl');
+       $wallwall    = get_markup_template('wallwall_item.tpl');
+       $droptpl     = get_markup_template('wall_item_drop.tpl');
+       $fakedrop    = get_markup_template('wall_fake_drop.tpl');
 
        $alike = array();
        $dlike = array();
        
        if(count($items)) {
 
-               if($mode === 'network-new' || $mode === 'search') {
+               if($mode === 'network-new' || $mode === 'search' || $mode === 'community') {
 
                        // "New Item View" on network page or search page results 
                        // - just loop through the items and format them minimally for display
 
-                       $tpl = load_view_file('view/search_item.tpl');
-                       $droptpl = load_view_file('view/wall_fake_drop.tpl');
+                       $tpl = get_markup_template('search_item.tpl');
 
                        foreach($items as $item) {
 
@@ -131,7 +161,7 @@ function conversation(&$a, $items, $mode, $update) {
                                $owner_name  = '';
                                $sparkle     = '';
 
-                               if($mode === 'search') {
+                               if($mode === 'search' || $mode === 'community') {
                                        if(((activity_match($item['verb'],ACTIVITY_LIKE)) || (activity_match($item['verb'],ACTIVITY_DISLIKE))) 
                                                && ($item['id'] != $item['parent']))
                                                continue;
@@ -166,18 +196,18 @@ function conversation(&$a, $items, $mode, $update) {
                                }
 
                                $drop = '';
-                               $dropping = false;
 
-                               if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
-                                       $dropping = true;
-
-                   $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$delete' => t('Delete')));
-
-                               // 
                                localize_item($item);
+                               if($mode === 'network-new')
+                                       $t = $droptpl;
+                               else
+                                       $t = $fakedrop;
 
-                               $drop = replace_macros($droptpl,array('$id' => $item['id']));
+                               $drop = replace_macros($t,array('$id' => $item['id']));
                                $lock = '<div class="wall-item-lock"></div>';
+                               $star = '';
+
+                               $body = prepare_body($item,true);
                                
                                $o .= replace_macros($tpl,array(
                                        '$id' => $item['item_id'],
@@ -189,13 +219,14 @@ function conversation(&$a, $items, $mode, $update) {
                                        '$lock' => $lock,
                                        '$thumb' => $profile_avatar,
                                        '$title' => $item['title'],
-                                       '$body' => smilies(bbcode($item['body'])),
-                                       '$ago' => relative_date($item['created']),
+                                       '$body' => $body,
+                                       '$ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
                                        '$location' => $location,
                                        '$indent' => '',
                                        '$owner_url' => $owner_url,
                                        '$owner_photo' => $owner_photo,
                                        '$owner_name' => $owner_name,
+                                       '$star' => $star,
                                        '$drop' => $drop,
                                        '$conv' => '<a href="' . $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'] . '">' . t('View in context') . '</a>'
                                ));
@@ -253,21 +284,21 @@ function conversation(&$a, $items, $mode, $update) {
                                continue;
 
                        $toplevelpost = (($item['id'] == $item['parent']) ? true : false);
-
+                       $toplevelprivate = false;
 
                        // Take care of author collapsing and comment collapsing
                        // If a single author has more than 3 consecutive top-level posts, squash the remaining ones.
                        // If there are more than two comments, squash all but the last 2.
-
+               
                        if($toplevelpost) {
-
+                               $toplevelprivate = (($toplevelpost && $item['private']) ? true : false);
                                $item_writeable = (($item['writable'] || $item['self']) ? true : false);
 
-                               if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile')) {
+                               if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) {
                                        $blowhard_count ++;
                                        if($blowhard_count == 3) {
                                                $o .= '<div class="icollapse-wrapper fakelink" id="icollapse-wrapper-' . $item['parent'] 
-                                                       . '" onclick="openClose(' . '\'icollapse-' . $item['parent'] . '\');" >' 
+                                                       . '" onclick="openClose(' . '\'icollapse-' . $item['parent'] . '\'); $(\'#icollapse-wrapper-' . $item['parent'] . '\').hide();" >' 
                                                        . t('See more posts like this') . '</div>' . '<div class="icollapse" id="icollapse-' 
                                                        . $item['parent'] . '" style="display: none;" >';
                                        }
@@ -282,9 +313,12 @@ function conversation(&$a, $items, $mode, $update) {
                                $comments_seen = 0;
                                $comments_collapsed = false;
                        }
-                       else
+                       else {
+                               // prevent private email from leaking into public conversation
+                               if((! $toplevelpost) && (! toplevelprivate) && ($item['private']) && ($profile_owner != local_user()))
+                                       continue;
                                $comments_seen ++;
-
+                       }       
 
                        $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
                        $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false);
@@ -292,7 +326,7 @@ function conversation(&$a, $items, $mode, $update) {
                        if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) {
                                if(! $comments_collapsed) {
                                        $o .= '<div class="ccollapse-wrapper fakelink" id="ccollapse-wrapper-' . $item['parent'] 
-                                               . '" onclick="openClose(' . '\'ccollapse-' . $item['parent'] . '\');" >' 
+                                               . '" onclick="openClose(' . '\'ccollapse-' . $item['parent'] . '\'); $(\'#ccollapse-wrapper-' . $item['parent'] . '\').hide();" >' 
                                                . sprintf( t('See all %d comments'), $comments[$item['parent']]) . '</div>'
                                                . '<div class="ccollapse" id="ccollapse-' . $item['parent'] . '" style="display: none;" >';
                                        $comments_collapsed = true;
@@ -317,7 +351,7 @@ function conversation(&$a, $items, $mode, $update) {
 
                        if(($toplevelpost) && (! $item['self']) && ($mode !== 'profile')) {
 
-                               if($item['type'] === 'wall') {
+                               if($item['wall']) {
 
                                        // On the network page, I am the owner. On the display page it will be the profile owner.
                                        // This will have been stored in $a->page_contact by our calling page.
@@ -329,7 +363,7 @@ function conversation(&$a, $items, $mode, $update) {
                                        $template = $wallwall;
                                        $commentww = 'ww';      
                                }
-                               if(($item['type'] === 'remote') && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
+                               if((! $item['wall']) && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) {
 
                                        // Could be anybody. 
 
@@ -347,12 +381,12 @@ function conversation(&$a, $items, $mode, $update) {
                                }
                        }
 
-
                        $likebuttons = '';
+                       $shareable = ((($profile_owner == local_user()) && ($mode != 'display') && (! $item['private'])) ? true : false);
 
                        if($page_writeable) {
                                if($toplevelpost) {
-                                       $likebuttons = replace_macros((($item['private']) ? $noshare_tpl : $like_tpl),array(
+                                       $likebuttons = replace_macros(((($shareable)) ? $like_tpl : $noshare_tpl),array(
                                                '$id' => $item['id'],
                                                '$likethis' => t("I like this \x28toggle\x29"),
                                                '$nolike' => t("I don't like this \x28toggle\x29"),
@@ -379,11 +413,22 @@ function conversation(&$a, $items, $mode, $update) {
                                }
                        }
 
-                       $edpost = ((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1))
-                                       ? '<a class="editpost" href="' . $a->get_baseurl() . '/editpost/' . $item['id'] 
-                                               . '" title="' . t('Edit') . '"><img src="images/pencil.gif" /></a>'
+                       $edpost = (((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1)) || ($mode === 'notes'))
+                                       ? '<a class="editpost icon pencil" href="' . $a->get_baseurl() . '/editpost/' . $item['id'] 
+                                               . '" title="' . t('Edit') . '"></a>'
                                        : '');
-                       $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
+
+
+                       $drop = '';
+                       $dropping = false;
+
+                       if((intval($item['contact-id']) && $item['contact-id'] == remote_user()) || ($item['uid'] == local_user()))
+                               $dropping = true;
+
+            $drop = replace_macros((($dropping)? $droptpl : $fakedrop), array('$id' => $item['id'], '$select' => t('Select'), '$delete' => t('Delete')));
+
+                       $star = (($profile_owner == local_user() && $toplevelpost) ? '<a href="#" id="starred-' . $item['id'] . '" onclick="dostar(' . $item['id'] . '); return false;" class="star-item icon ' . (($item['starred']) ? 'starred' : 'unstarred') . '" title="' . t('toggle star status')  . '"></a>' : '');
+
 
                        $photo = $item['photo'];
                        $thumb = $item['thumb'];
@@ -403,7 +448,7 @@ function conversation(&$a, $items, $mode, $update) {
                                $profile_link = '';
 
                        $normalised = normalise_link((strlen($item['author-link'])) ? $item['author-link'] : $item['url']);
-                       if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
+                       if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
                                $profile_avatar = $a->contacts[$normalised]['thumb'];
                        else
                                $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb);
@@ -436,6 +481,9 @@ function conversation(&$a, $items, $mode, $update) {
 
                        // Build the HTML
 
+                       $body = prepare_body($item,true);
+
+
                        $tmp_item = replace_macros($template,array(
                                '$id' => $item['item_id'],
                                '$linktitle' => sprintf( t('View %s\'s profile'), $profile_name),
@@ -450,8 +498,8 @@ function conversation(&$a, $items, $mode, $update) {
                                '$osparkle' => $osparkle,
                                '$sparkle' => $sparkle,
                                '$title' => $item['title'],
-                               '$body' => smilies(bbcode($item['body'])),
-                               '$ago' => relative_date($item['created']),
+                               '$body' => $body,
+                               '$ago' => ((($item['app']) && ($item['id'] == $item['parent'])) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
                                '$lock' => $lock,
                                '$location' => $location,
                                '$indent' => $indent,
@@ -460,6 +508,7 @@ function conversation(&$a, $items, $mode, $update) {
                                '$owner_name' => $owner_name,
                                '$plink' => get_plink($item),
                                '$edpost' => $edpost,
+                               '$star' => $star,
                                '$drop' => $drop,
                                '$vote' => $likebuttons,
                                '$like' => $like,
@@ -467,6 +516,7 @@ function conversation(&$a, $items, $mode, $update) {
                                '$comment' => $comment
                        ));
 
+
                        $arr = array('item' => $item, 'output' => $tmp_item);
                        call_hooks('display_item', $arr);
 
@@ -481,36 +531,12 @@ function conversation(&$a, $items, $mode, $update) {
        if($blowhard_count >= 3)
                $o .= '</div>';
 
+       if($dropping)
+               $o .= '<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();"><div id="item-delete-selected-icon" class="icon drophide" title="' . t('Delete Selected Items') . '" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div><div id="item-delete-selected-desc" >' .  t('Delete Selected Items') . '</div></div><div id="item-delete-selected-end"></div>';
+
        return $o;
 } 
 
-
-if(! function_exists('load_contact_links')) {
-function load_contact_links($uid) {
-
-       $a = get_app();
-
-       $ret = array();
-
-       if(! $uid || x($a->contacts,'empty'))
-               return;
-
-       $r = q("SELECT `id`,`network`,`url`,`thumb` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 ",
-                       intval($uid)
-       );
-       if(count($r)) {
-               foreach($r as $rr){
-                       $url = normalise_link($rr['url']);
-                       $ret[$url] = $rr;
-               }
-       }
-       else 
-               $ret['empty'] = true;   
-       $a->contacts = $ret;
-       return;         
-}}
-
-
 function best_link_url($item,&$sparkle) {
 
        $a = get_app();
@@ -658,13 +684,13 @@ function format_like($cnt,$arr,$type,$id) {
 }}
 
 
-function status_editor($a,$x) {
+function status_editor($a,$x, $notes_cid = 0) {
 
        $o = '';
                
-       $geotag = (($x['allow_location']) ? load_view_file('view/jot_geotag.tpl') : '');
+       $geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
 
-               $tpl = load_view_file('view/jot-header.tpl');
+               $tpl = get_markup_template('jot-header.tpl');
        
                $a->page['htmlhead'] .= replace_macros($tpl, array(
                        '$baseurl' => $a->get_baseurl(),
@@ -680,7 +706,7 @@ function status_editor($a,$x) {
                ));
 
 
-               $tpl = load_view_file("view/jot.tpl");
+               $tpl = get_markup_template("jot.tpl");
                
                $jotplugins = '';
                $jotnets = '';
@@ -710,13 +736,17 @@ function status_editor($a,$x) {
                call_hooks('jot_tool', $jotplugins);
                call_hooks('jot_networks', $jotnets);
 
+               if($notes_cid)
+                       $jotnets .= '<input type="hidden" name="contact_allow[]" value="' . $notes_cid .'" />';
+
                $tpl = replace_macros($tpl,array('$jotplugins' => $jotplugins));        
 
                $o .= replace_macros($tpl,array(
                        '$return_path' => $a->cmd,
                        '$action' => 'item',
-                       '$share' => t('Share'),
+                       '$share' => (($x['button']) ? $x['button'] : t('Share')),
                        '$upload' => t('Upload photo'),
+                       '$attach' => t('Attach file'),
                        '$weblink' => t('Insert web link'),
                        '$youtube' => t('Insert YouTube video'),
                        '$video' => t('Insert Vorbis [.ogg] video'),
@@ -726,12 +756,15 @@ function status_editor($a,$x) {
                        '$title' => t('Set title'),
                        '$wait' => t('Please wait'),
                        '$permset' => t('Permission settings'),
+                       '$ptyp' => (($notes_cid) ? 'note' : 'wall'),
                        '$content' => '',
                        '$post_id' => '',
                        '$baseurl' => $a->get_baseurl(),
                        '$defloc' => $x['default_location'],
                        '$visitor' => $x['visitor'],
+                       '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']),
                        '$emailcc' => t('CC: email addresses'),
+                       '$public' => t('Public post'),
                        '$jotnets' => $jotnets,
                        '$emtitle' => t('Example: bob@example.com, mary@example.com'),
                        '$lockstate' => $x['lockstate'],
@@ -741,4 +774,4 @@ function status_editor($a,$x) {
                ));
 
        return $o;
-}
\ No newline at end of file
+}