basic 'notpublic' bits working

This commit is contained in:
friendica 2014-08-06 19:24:46 -07:00
parent afac379177
commit 86bccf35a2
3 changed files with 45 additions and 8 deletions

View File

@ -52,7 +52,7 @@ function collect_recipients($item,&$private) {
$private = true; $private = true;
} }
else { else {
if(! $private) { if($item['public_policy'] || (! $private)) {
$r = q("select abook_xchan from abook where abook_channel = %d and not (abook_flags & %d) ", $r = q("select abook_xchan from abook where abook_channel = %d and not (abook_flags & %d) ",
intval($item['uid']), intval($item['uid']),
intval(ABOOK_FLAG_SELF|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED) intval(ABOOK_FLAG_SELF|ABOOK_FLAG_PENDING|ABOOK_FLAG_ARCHIVED)
@ -903,7 +903,7 @@ function encode_item($item) {
if($y = encode_item_flags($item)) if($y = encode_item_flags($item))
$x['flags'] = $y; $x['flags'] = $y;
if(! in_array('private',$y)) if($scope != 'public')
$x['public_scope'] = $scope; $x['public_scope'] = $scope;
if($item['item_flags'] & ITEM_NOCOMMENT) if($item['item_flags'] & ITEM_NOCOMMENT)
@ -921,14 +921,18 @@ function encode_item($item) {
} }
function map_scope($scope) { function map_scope($scope,$strip = false) {
switch($scope) { switch($scope) {
case 0: case 0:
return 'self'; return 'self';
case PERMS_PUBLIC: case PERMS_PUBLIC:
if($strip)
return '';
return 'public'; return 'public';
case PERMS_NETWORK: case PERMS_NETWORK:
return 'network: red'; return 'network: red';
case PERMS_AUTHED:
return 'authenticated';
case PERMS_SITE: case PERMS_SITE:
return 'site: ' . get_app()->get_hostname(); return 'site: ' . get_app()->get_hostname();
case PERMS_PENDING: case PERMS_PENDING:
@ -939,7 +943,22 @@ function map_scope($scope) {
} }
} }
function translate_scope($scope) {
if(! $scope || $scope === 'public')
return t('Visible to anybody on the internet');
if(strpos($scope,'self') === 0)
return t('Visible to you only.');
if(strpos($scope,'network:') === 0)
return t('Visible to anybody in this network.');
if(strpos($scope,'authenticated') === 0)
return t('Visible to anybody authenticated.');
if(strpos($scope,'site:') === 0)
return sprintf( t('Visible to anybody on %s.'), strip_tags(substr($scope,6)));
if(strpos($scope,'any connections') === 0)
return t('Visible to all connections.');
if(strpos($scope,'contacts') === 0)
return t('Visible to approved connections.');
}
function encode_item_xchan($xchan) { function encode_item_xchan($xchan) {
@ -1807,6 +1826,7 @@ function item_store($arr,$allow_exec = false) {
$allow_gid = $r[0]['allow_gid']; $allow_gid = $r[0]['allow_gid'];
$deny_cid = $r[0]['deny_cid']; $deny_cid = $r[0]['deny_cid'];
$deny_gid = $r[0]['deny_gid']; $deny_gid = $r[0]['deny_gid'];
$public_policy = $r[0]['public_policy'];
if($r[0]['item_flags'] & ITEM_WALL) if($r[0]['item_flags'] & ITEM_WALL)
$arr['item_flags'] = $arr['item_flags'] | ITEM_WALL; $arr['item_flags'] = $arr['item_flags'] | ITEM_WALL;
@ -1915,7 +1935,7 @@ function item_store($arr,$allow_exec = false) {
if((! $parent_id) || ($arr['parent_mid'] === $arr['mid'])) if((! $parent_id) || ($arr['parent_mid'] === $arr['mid']))
$parent_id = $current_post; $parent_id = $current_post;
if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid)) if(strlen($allow_cid) || strlen($allow_gid) || strlen($deny_cid) || strlen($deny_gid) || strlen($public_policy))
$private = 1; $private = 1;
else else
$private = $arr['item_private']; $private = $arr['item_private'];
@ -1923,12 +1943,13 @@ function item_store($arr,$allow_exec = false) {
// Set parent id - and also make sure to inherit the parent's ACL's. // Set parent id - and also make sure to inherit the parent's ACL's.
$r = q("UPDATE item SET parent = %d, allow_cid = '%s', allow_gid = '%s', $r = q("UPDATE item SET parent = %d, allow_cid = '%s', allow_gid = '%s',
deny_cid = '%s', deny_gid = '%s', item_private = %d WHERE id = %d LIMIT 1", deny_cid = '%s', deny_gid = '%s', public_policy = '%s', item_private = %d WHERE id = %d LIMIT 1",
intval($parent_id), intval($parent_id),
dbesc($allow_cid), dbesc($allow_cid),
dbesc($allow_gid), dbesc($allow_gid),
dbesc($deny_cid), dbesc($deny_cid),
dbesc($deny_gid), dbesc($deny_gid),
dbesc($public_policy),
intval($private), intval($private),
intval($current_post) intval($current_post)
); );
@ -1940,6 +1961,7 @@ function item_store($arr,$allow_exec = false) {
$arr['allow_gid'] = $allow_gid; $arr['allow_gid'] = $allow_gid;
$arr['deny_cid'] = $deny_cid; $arr['deny_cid'] = $deny_cid;
$arr['deny_gid'] = $deny_gid; $arr['deny_gid'] = $deny_gid;
$arr['public_policy'] = $public_policy;
$arr['item_private'] = $private; $arr['item_private'] = $private;
// Store taxonomy // Store taxonomy

View File

@ -80,7 +80,7 @@ function item_post(&$a) {
$pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']) : ''); $pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']) : '');
$layout_mid = ((x($_REQUEST,'layout_mid')) ? escape_tags($_REQUEST['layout_mid']): ''); $layout_mid = ((x($_REQUEST,'layout_mid')) ? escape_tags($_REQUEST['layout_mid']): '');
$plink = ((x($_REQUEST,'permalink')) ? escape_tags($_REQUEST['permalink']) : ''); $plink = ((x($_REQUEST,'permalink')) ? escape_tags($_REQUEST['permalink']) : '');
$public_policy = ((x($_REQUEST,'public_policy')) ? escape_tags($_REQUEST['public_policy']) : '');
/* /*
Check service class limits Check service class limits
@ -275,12 +275,14 @@ function item_post(&$a) {
$str_contact_allow = $orig_post['allow_cid']; $str_contact_allow = $orig_post['allow_cid'];
$str_group_deny = $orig_post['deny_gid']; $str_group_deny = $orig_post['deny_gid'];
$str_contact_deny = $orig_post['deny_cid']; $str_contact_deny = $orig_post['deny_cid'];
$public_scope = $orig_post['public_scope'];
} }
if((strlen($str_group_allow)) if((strlen($str_group_allow))
|| strlen($str_contact_allow) || strlen($str_contact_allow)
|| strlen($str_group_deny) || strlen($str_group_deny)
|| strlen($str_contact_deny)) { || strlen($str_contact_deny)
|| strlen($public_scope)) {
$private = 1; $private = 1;
} }
@ -377,6 +379,13 @@ function item_post(&$a) {
} }
if((! $webpage) && (! $public_policy) && (! $private)) {
$public_policy = map_scope($channel['channel_r_stream'],true);
if($public_policy)
$private = 1;
}
$expires = '0000-00-00 00:00:00'; $expires = '0000-00-00 00:00:00';
if(feature_enabled($profile_uid,'content_expire')) { if(feature_enabled($profile_uid,'content_expire')) {
@ -705,6 +714,7 @@ function item_post(&$a) {
$datarray['item_restrict'] = $item_restrict; $datarray['item_restrict'] = $item_restrict;
$datarray['item_flags'] = $item_flags; $datarray['item_flags'] = $item_flags;
$datarray['layout_mid'] = $layout_mid; $datarray['layout_mid'] = $layout_mid;
$datarray['public_policy'] = $public_policy;
$datarray['comment_policy'] = map_scope($channel['channel_w_comment']); $datarray['comment_policy'] = map_scope($channel['channel_w_comment']);
$datarray['term'] = $post_tags; $datarray['term'] = $post_tags;
$datarray['plink'] = $plink; $datarray['plink'] = $plink;

View File

@ -26,6 +26,11 @@ function lockview_content(&$a) {
$item = $r[0]; $item = $r[0];
if(array_key_exists('public_policy',$item) && $item['public_policy']) {
echo '<li>' . translate_scope($item['public_policy']) . '</li>';
killme();
}
if($item['uid'] != local_user()) { if($item['uid'] != local_user()) {
echo '<li>' . t('Remote privacy information not available.') . '</li>'; echo '<li>' . t('Remote privacy information not available.') . '</li>';
killme(); killme();