From 0ed2d19ac8e0b624dd4c971dd3f053f7b02b04d4 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 11 Apr 2011 20:11:21 -0700 Subject: [PATCH] death to comment box oddities (a slow death as it will take some time for everybody to upgrade) --- boot.php | 2 +- include/conversation.php | 23 +++++++++++++++-------- include/items.php | 4 ++-- mod/follow.php | 10 +++++++--- update.php | 4 ++++ 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/boot.php b/boot.php index 7b68505925..f04b8c3947 100644 --- a/boot.php +++ b/boot.php @@ -4,7 +4,7 @@ set_time_limit(0); define ( 'FRIENDIKA_VERSION', '2.1.946' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); -define ( 'DB_UPDATE_VERSION', 1048 ); +define ( 'DB_UPDATE_VERSION', 1049 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/include/conversation.php b/include/conversation.php index 3f8ea41965..d81142bca5 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -6,21 +6,21 @@ function conversation(&$a, $items, $mode, $update) { require_once('bbcode.php'); $profile_owner = 0; - $writable = false; + $page_writeable = false; if($mode === 'network') { $profile_owner = local_user(); - $writable = true; + $page_writeable = true; } if($mode === 'profile') { $profile_owner = $a->profile['profile_uid']; - $writable = can_write_wall($a,$profile_owner); + $page_writeable = can_write_wall($a,$profile_owner); } if($mode === 'display') { $profile_owner = $a->profile['uid']; - $writable = can_write_wall($a,$profile_owner); + $page_writeable = can_write_wall($a,$profile_owner); } if($update) @@ -177,7 +177,6 @@ function conversation(&$a, $items, $mode, $update) { $sparkle = ''; $owner_url = $owner_photo = $owner_name = ''; - // We've already parsed out like/dislike for special treatment. We can ignore them now if(((activity_match($item['verb'],ACTIVITY_LIKE)) @@ -185,11 +184,17 @@ function conversation(&$a, $items, $mode, $update) { && ($item['id'] != $item['parent'])) continue; + $toplevelpost = (($item['id'] == $item['parent']) ? true : 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($item['id'] == $item['parent']) { + if($toplevelpost) { + + $item_writeable = (($item['writable'] || $item['self']) ? true : false); + if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile')) { $blowhard_count ++; if($blowhard_count == 3) { @@ -210,6 +215,8 @@ function conversation(&$a, $items, $mode, $update) { $comments_seen ++; + $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); + if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) { if(! $comments_collapsed) { $o .= ''; @@ -265,7 +272,7 @@ function conversation(&$a, $items, $mode, $update) { $likebuttons = ''; - if($writable) { + if($page_writeable) { if($item['id'] == $item['parent']) { $likebuttons = replace_macros((($item['private']) ? $noshare_tpl : $like_tpl),array( '$id' => $item['id'], @@ -276,7 +283,7 @@ function conversation(&$a, $items, $mode, $update) { )); } - if($item['last-child']) { + if(($show_comment_box) || (($show_comment_box == false) && ($item['last-child']))) { $comment = replace_macros($cmnt_tpl,array( '$return_path' => '', '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), diff --git a/include/items.php b/include/items.php index d7644fb421..86579512eb 100644 --- a/include/items.php +++ b/include/items.php @@ -1367,8 +1367,8 @@ function new_follower($importer,$contact,$datarray,$item) { // create contact record - set to readonly $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `name`, `nick`, `photo`, `network`, `rel`, - `blocked`, `readonly`, `pending` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 1, 1 ) ", + `blocked`, `readonly`, `pending`, `writable` ) + VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, 0, 1, 1, 1 ) ", intval($importer['uid']), dbesc(datetime_convert()), dbesc($url), diff --git a/mod/follow.php b/mod/follow.php index f30ecdc921..04858ce52d 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -195,6 +195,9 @@ function follow_post(&$a) { if(! x($vcard,'photo')) $vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ; + + $writeable = ((($network === 'stat') && ($notify)) ? 1 : 0); + // check if we already have a contact // the poll url is more reliable than the profile url, as we may have // indirect links or webfinger links @@ -217,8 +220,8 @@ function follow_post(&$a) { else { // create contact record $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `alias`, `notify`, `poll`, `name`, `nick`, `photo`, `network`, `rel`, `priority`, - `blocked`, `readonly`, `pending` ) - VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 0, 0, 0 ) ", + `writable`, `blocked`, `readonly`, `pending` ) + VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ", intval(local_user()), dbesc(datetime_convert()), dbesc($profile), @@ -230,7 +233,8 @@ function follow_post(&$a) { dbesc($vcard['photo']), dbesc($network), intval(REL_FAN), - intval($priority) + intval($priority), + intval($writable) ); } diff --git a/update.php b/update.php index 1d45f5f11a..3875933d27 100644 --- a/update.php +++ b/update.php @@ -428,3 +428,7 @@ function update_1047() { q("ALTER TABLE `contact` ADD `writable` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `readonly` "); } +function update_1048() { + q("UPDATE `contact` SET `writable` = 1 WHERE `network` = 'stat' AND `notify` != '' "); +} +