diff options
-rw-r--r-- | include/ConversationObject.php | 2 | ||||
-rw-r--r-- | include/ItemObject.php | 6 | ||||
-rw-r--r-- | include/identity.php | 13 | ||||
-rw-r--r-- | mod/channel.php | 15 | ||||
-rw-r--r-- | mod/network.php | 38 |
5 files changed, 48 insertions, 26 deletions
diff --git a/include/ConversationObject.php b/include/ConversationObject.php index d9a3974eb..6448cd632 100644 --- a/include/ConversationObject.php +++ b/include/ConversationObject.php @@ -38,7 +38,7 @@ class Conversation extends BaseObject { $this->profile_owner = local_user(); $this->writable = true; break; - case 'profile': + case 'channel': $this->profile_owner = $a->profile['profile_uid']; $this->writable = can_write_wall($a,$this->profile_owner); break; diff --git a/include/ItemObject.php b/include/ItemObject.php index 84f45054f..8a7bdea3a 100644 --- a/include/ItemObject.php +++ b/include/ItemObject.php @@ -454,7 +454,7 @@ class Item extends BaseObject { if($conv) { // This will allow us to comment on wall-to-wall items owned by our friends // and community forums even if somebody else wrote the post. - return ($this->writable || ($this->is_visiting() && $conv->get_mode() == 'profile')); + return ($this->writable || ($this->is_visiting() && $conv->get_mode() == 'channel')); } return $this->writable; } @@ -515,7 +515,7 @@ class Item extends BaseObject { '$return_path' => '', '$threaded' => $this->is_threaded(), '$jsreload' => (($conv->get_mode() === 'display') ? $_SESSION['return_url'] : ''), - '$type' => (($conv->get_mode() === 'profile') ? 'wall-comment' : 'net-comment'), + '$type' => (($conv->get_mode() === 'channel') ? 'wall-comment' : 'net-comment'), '$id' => $this->get_id(), '$parent' => $this->get_id(), '$qcomment' => $qcomment, @@ -556,7 +556,7 @@ class Item extends BaseObject { $this->wall_to_wall = false; if($this->is_toplevel()) { - if( (! $this->get_data_value('self')) && ($conv->get_mode() !== 'profile')) { + if( (! $this->get_data_value('self')) && ($conv->get_mode() !== 'channel')) { if($this->get_data_value('wall')) { // On the network page, I am the owner. On the display page it will be the profile owner. diff --git a/include/identity.php b/include/identity.php index 21cecaabc..7b0b86ee4 100644 --- a/include/identity.php +++ b/include/identity.php @@ -130,7 +130,7 @@ function create_identity($arr) { // It's ok for this to fail if it's an imported channel, and therefore the hash is a duplicate - $r = q("INSERT INTO `profile` ( `aid`, `uid`, `profile_guid`, `profile_name`, `is_default`, `name`, `photo`, `thumb`) + $r = q("INSERT INTO profile ( aid, uid, profile_guid, profile_name, is_default, name, photo, thumb) VALUES ( %d, %d, '%s', '%s', %d, '%s', '%s', '%s') ", intval($ret['channel']['channel_account_id']), intval($newuid), @@ -142,6 +142,17 @@ function create_identity($arr) { dbesc($a->get_baseurl() . "/photo/profile/m/{$newuid}") ); + $r = q("insert into abook ( abook_account, abook_channel, abook_xchan, abook_closeness, abook_created, abook_updated, abook_flags ) + values ( %d, %d, '%s', %d, '%s', '%s', %d ) ", + intval($ret['channel']['channel_account_id']), + intval($newuid), + dbesc($hash), + intval(0), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + intval(ABOOK_FLAG_SELF) + ); + // Create a group with no members. This allows somebody to use it // right away as a default group for new contacts. diff --git a/mod/channel.php b/mod/channel.php index b484f0f60..4fd7a6481 100644 --- a/mod/channel.php +++ b/mod/channel.php @@ -161,14 +161,16 @@ function channel_content(&$a, $update = 0) { if($update) { - $r = q("SELECT distinct(parent) AS `item_id` from item + left join abook on item.author_xchan = abook.abook_xchan WHERE uid = %d AND item_restrict = 0 - AND item_flags & %d + AND (item_flags & %d) + AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null) $sql_extra ORDER BY created DESC", intval($a->profile['profile_uid']), - intval(ITEM_WALL) + intval(ITEM_WALL|ITEM_UNSEEN|ITEM_THREAD_TOP), + intval(ABOOK_FLAG_BLOCKED) ); } @@ -191,12 +193,15 @@ function channel_content(&$a, $update = 0) { $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); $r = q("SELECT id AS item_id FROM item + left join abook on item.author_xchan = abook.abook_xchan WHERE uid = %d AND item_restrict = 0 - AND item_flags & %d + AND (item_flags & %d) + AND ((abook.abook_flags & %d) = 0 or abook.abook_flags is null) $sql_extra $sql_extra2 ORDER BY created DESC $pager_sql ", intval($a->profile['profile_uid']), - intval(ITEM_WALL|ITEM_THREAD_TOP) + intval(ITEM_WALL|ITEM_THREAD_TOP), + intval(ABOOK_FLAG_BLOCKED) ); diff --git a/mod/network.php b/mod/network.php index b4b736e28..6e1148b90 100644 --- a/mod/network.php +++ b/mod/network.php @@ -589,20 +589,22 @@ function network_content(&$a, $update = 0, $load = false) { if(($cmin != 0) || ($cmax != 99)) { - $sql_nets .= " AND abook.abook_closeness >= " . intval($cmin) . " "; - $sql_nets .= " AND abook.abook_closeness <= " . intval($cmax) . " "; + // Not everybody who shows up in the network stream will be in your address book. + // By default those that aren't are assumed to have closeness = 99; but this isn't + // recorded anywhere. So if cmax is 99, we'll open the search up to anybody in + // the stream with a NULL address book entry. - // This is ugly - but we won't have an abook for everybody as we - // used to have a contact for everybody in Friendica. - // Might be an unknown poster (99) or our own post (0). - // Need to refactor this after a solution presents itself + $sql_nets .= " AND "; if($cmax == 99) - $sql_nets .= " OR ( abook.abook_id = NULL AND item.author_xchan != '" . $ch['channel_hash'] . " ) "; - if($cmin == 0 && local_user()) { - $ch = $a->get_channel(); - $sql_nets .= " OR ( item.author_xchan = '" . $ch['channel_hash'] . "' ) "; - } + $sql_nets .= " ( "; + + $sql_nets .= "( abook.abook_closeness >= " . intval($cmin) . " "; + $sql_nets .= " AND abook.abook_closeness <= " . intval($cmax) . " ) "; + + if($cmax == 99) + $sql_nets .= " OR abook.abook_closeness IS NULL ) "; + } @@ -640,13 +642,15 @@ function network_content(&$a, $update = 0, $load = false) { $ordering = "`commented`"; // Fetch a page full of parent items for this page -dbg(1); + if($update && (! $load)) { $r = q("SELECT item.parent AS item_id FROM item left join abook on item.author_xchan = abook.abook_xchan - WHERE item.uid = %d AND item.item_restrict = 0 + WHERE item.uid = %d AND item.item_restrict = 0 + and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null) $sql_extra3 $sql_extra $sql_nets ", - intval(local_user()) + intval(local_user()), + intval(ABOOK_FLAG_BLOCKED) ); } else { @@ -655,13 +659,15 @@ dbg(1); left join abook on item.author_xchan = abook.abook_xchan WHERE item.uid = %d AND item.item_restrict = 0 AND item.parent = item.id + and ((abook.abook_flags & %d) = 0 or abook.abook_flags is null) $sql_extra3 $sql_extra $sql_nets ORDER BY item.$ordering DESC $pager_sql ", - intval(local_user()) + intval(local_user()), + intval(ABOOK_FLAG_BLOCKED) ); } -dbg(0); + // Then fetch all the children of the parents that are on this page if($r && count($r)) { |