From 9a726f030844221f1eea9babcce915784b6ca1de Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Nov 2012 13:57:55 -0800 Subject: finish basic item encoding, add plugin compatibility tag, notes on improving $global_perms for edge cases --- include/items.php | 27 ++++++++++++++++++++++++--- include/permissions.php | 6 ++++++ include/plugin.php | 6 +++++- 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/include/items.php b/include/items.php index 355f48b91..c74732807 100755 --- a/include/items.php +++ b/include/items.php @@ -504,6 +504,12 @@ function encode_item($item) { logger('encode_item: ' . print_r($item,true)); + if($item['item_restrict'] & ITEM_DELETED) { + $x['message_id'] = $item['uri']; + $x['flags'] = array('deleted'); + return $x; + } + $x['message_id'] = $item['uri']; $x['message_top'] = $item['parent_uri']; $x['message_parent'] = $item['thr_parent']; @@ -527,9 +533,8 @@ function encode_item($item) { $x['target'] = json_decode($item['target'],true); if($item['attach']) $x['attach'] = json_decode($item['attach'],true); - - $x['restrictions'] = array(); - $x['flags'] = array(); + if($y = encode_item_flags($item)) + $x['flags'] = $y; if($item['term']) $x['tags'] = encode_item_terms($item['term']); @@ -568,6 +573,22 @@ function termtype($t) { return(($types[$t]) ? $types[$t] : 'unknown'); } + +function encode_item_flags($item) { + +// most of item_flags and item_restrict are local settings which don't apply when transmitted. +// We may need those for the case of syncing other hub locations which you are attached to. +// ITEM_DELETED is handled in encode_item directly so we don't need to handle it here. + + $ret = array(); + if($item['flags'] & ITEM_THREAD_TOP) + $ret[] = 'thread_parent'; + if($item['flags'] & ITEM_NSFW) + $ret[] = 'nsfw'; + + return $ret; +} + function get_atom_elements($feed,$item) { require_once('library/HTMLPurifier.auto.php'); diff --git a/include/permissions.php b/include/permissions.php index 0502d7e2e..f6d150b58 100644 --- a/include/permissions.php +++ b/include/permissions.php @@ -2,6 +2,12 @@ function get_perms() { + +// thinking about making element[2] a bitmask instead of boolean so that we can provide a list of applicable selections +// for any given permission. Currently we use the boolean to disallow write access to "everybody", but we also want to be +// able to handle troublesome settings such as allowing channel_w_stream to anybody in the network. You can allow it, but +// there's no way to implement sending it. + $global_perms = array( // Read only permissions 'view_stream' => array('channel_r_stream', intval(PERMS_R_STREAM), true, t('Can view my "public" stream and posts'), ''), diff --git a/include/plugin.php b/include/plugin.php index baed2ab3b..c5039692a 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -204,6 +204,7 @@ function call_hooks($name, &$data = null) { * * Version: 1.2.3 * * Author: John * * Author: Jane + * * Compat: Red [(version)], Friendica [(version)] * * */ @@ -213,7 +214,8 @@ function get_plugin_info($plugin){ 'name' => $plugin, 'description' => "", 'author' => array(), - 'version' => "" + 'version' => "", + 'compat' => "" ); if (!is_file("addon/$plugin/$plugin.php")) return $info; @@ -258,6 +260,7 @@ function get_plugin_info($plugin){ * * Version: 1.2.3 * * Author: John * * Maintainer: Jane + * * Compat: Friendica [(version)], Red [(version)] * * */ @@ -270,6 +273,7 @@ function get_theme_info($theme){ 'maintainer' => array(), 'version' => "", 'credits' => "", + 'compat' => "", 'experimental' => false, 'unsupported' => false ); -- cgit v1.2.3