diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/conversation.php | 24 | ||||
-rwxr-xr-x | include/dba/dba_driver.php | 2 | ||||
-rwxr-xr-x | include/items.php | 43 |
3 files changed, 64 insertions, 5 deletions
diff --git a/include/conversation.php b/include/conversation.php index 43533e3c1..154a9f82d 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -405,8 +405,6 @@ function count_descendants($item) { function visible_activity($item) { $hidden_activities = [ ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE ]; - $post_types = [ ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT, basename(ACTIVITY_OBJ_NOTE), basename(ACTIVITY_OBJ_COMMENT)]; - if(intval($item['item_notshown'])) return false; @@ -416,14 +414,32 @@ function visible_activity($item) { } } + if(is_edit_activity($item)) + return false; + + return true; +} + +/** + * @brief Check if a given activity is an edit activity + * + * + * @param array $item + * @return boolean + */ + +function is_edit_activity($item) { + + $post_types = [ ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT, basename(ACTIVITY_OBJ_NOTE), basename(ACTIVITY_OBJ_COMMENT)]; + // In order to share edits with networks which have no concept of editing, we'll create // separate activities to indicate the edit. Our network will not require them, since our // edits are automatically applied and the activity indicated. if(($item['verb'] === ACTIVITY_UPDATE) && (in_array($item['obj_type'],$post_types))) - return false; + return true; - return true; + return false; } /** diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php index 8ae3dccfe..6fb0e79cc 100755 --- a/include/dba/dba_driver.php +++ b/include/dba/dba_driver.php @@ -182,7 +182,7 @@ abstract class dba_driver { return false; } - if(strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1')) { + if(strlen($server) && ($server !== 'localhost') && ($server !== '127.0.0.1') && (! strpbrk($server,':;'))) { if((! dns_get_record($server, DNS_A + DNS_CNAME + DNS_PTR)) && (! filter_var($server, FILTER_VALIDATE_IP))) { $this->error = sprintf( t('Cannot locate DNS info for database server \'%s\''), $server); $this->connected = false; diff --git a/include/items.php b/include/items.php index 4c40d9430..cb8a00c33 100755 --- a/include/items.php +++ b/include/items.php @@ -4503,3 +4503,46 @@ function fix_attached_file_permissions($channel,$observer_hash,$body, } } } + + +function item_create_edit_activity($post) { + if((! $post) || (! $post['item'])) + return; + + $update_item = $post['item']; + + $new_item = $update_item; + + $new_item['id'] = 0; + $new_item['parent'] = 0; + $new_item['mid'] = item_message_id(); + + $new_item['body'] = sprintf( t('Edited %s'), (($update_item['item_thread_top']) ? t('Post','edit_activity') : t('Comment','edit_activity'))); + + $new_item['body'] .= "\n\n"; + $new_item['body'] .= $update_item['body']; + + $new_item['title'] = $update_item['title']; + + $new_item['verb'] = ACTIVITY_UPDATE; + $new_item['item_thread_top'] = 0; + + $x = post_activity_item($new_item); + + logger('posted edit activity'); + + $post_id = $x['id']; + if($post_id) { + $r = q("select * from item where id = %d", + intval($post_id) + ); + if($r) { + xchan_query($r); + $sync_item = fetch_post_tags($r); + build_sync_packet($new_item['uid'],array('item' => array(encode_item($sync_item[0],true)))); + } + } + + \Zotlabs\Daemon\Master::Summon(array('Notifier', 'edit_activity', $post_id)); + +}
\ No newline at end of file |