diff --git a/altpager.tgz b/altpager.tgz new file mode 100644 index 000000000..41f676617 Binary files /dev/null and b/altpager.tgz differ diff --git a/dav.tgz b/dav.tgz new file mode 100644 index 000000000..a687deabc Binary files /dev/null and b/dav.tgz differ diff --git a/facebook.tgz b/facebook.tgz index c1a69fdd8..6bf8f7a99 100644 Binary files a/facebook.tgz and b/facebook.tgz differ diff --git a/fbpost.tgz b/fbpost.tgz index d69baff89..c60a6c062 100644 Binary files a/fbpost.tgz and b/fbpost.tgz differ diff --git a/fromgplus.tgz b/fromgplus.tgz new file mode 100644 index 000000000..d28f6e2fc Binary files /dev/null and b/fromgplus.tgz differ diff --git a/group_text.tgz b/group_text.tgz new file mode 100644 index 000000000..932ee79d9 Binary files /dev/null and b/group_text.tgz differ diff --git a/jappixmini.tgz b/jappixmini.tgz index 1e390431e..56d6dfa18 100644 Binary files a/jappixmini.tgz and b/jappixmini.tgz differ diff --git a/mathjax.tgz b/mathjax.tgz index bb591e1d3..37bfbf616 100644 Binary files a/mathjax.tgz and b/mathjax.tgz differ diff --git a/morepokes.tgz b/morepokes.tgz new file mode 100644 index 000000000..7999b719f Binary files /dev/null and b/morepokes.tgz differ diff --git a/randplace.tgz b/randplace.tgz index 7ab5f0db9..bdad8bafb 100755 Binary files a/randplace.tgz and b/randplace.tgz differ diff --git a/remote_permissions.tgz b/remote_permissions.tgz new file mode 100644 index 000000000..169273ddf Binary files /dev/null and b/remote_permissions.tgz differ diff --git a/remote_permissions/README.md b/remote_permissions/README.md new file mode 100644 index 000000000..b9e385825 --- /dev/null +++ b/remote_permissions/README.md @@ -0,0 +1,8 @@ +The Remote Permissions plugin enables recipients of private posts to see who else has received the post. This can be beneficial on community servers where people may want to modify the way they speak depending on who can see their comments to the post. + +Note that since Friendica is federated, the local hub may have posts that originated elsewhere. In that case, the plugin has no way of knowing all the recipients of the post, and it must settle for finding out who else can see it on the local hub. + +The hub admin can specify one of two behaviors for this plugin: + +* **Global:** every private post on the local hub will show all recipients (or at least the ones it can discover) of the post to any other users on the local hub +* **Individual:** only private posts from those users on the local hub who "opt-in" will show the post recipients. None of the private posts that originated elsewhere will show even partial lists of post recipients diff --git a/remote_permissions/admin.tpl b/remote_permissions/admin.tpl new file mode 100644 index 000000000..605588084 --- /dev/null +++ b/remote_permissions/admin.tpl @@ -0,0 +1,3 @@ +{{ inc field_radio.tpl with $field=$global }}{{ endinc }} +{{ inc field_radio.tpl with $field=$individual }}{{ endinc }} +
diff --git a/remote_permissions/remote_permissions.php b/remote_permissions/remote_permissions.php new file mode 100644 index 000000000..1e71cbc84 --- /dev/null +++ b/remote_permissions/remote_permissions.php @@ -0,0 +1,206 @@ + + * + */ + + +function remote_permissions_install() { + register_hook('lockview_content', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_content'); + register_hook('plugin_settings', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_settings'); + register_hook('plugin_settings_post', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_settings_post'); +} + +function remote_permissions_uninstall() { + unregister_hook('lockview_content', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_content'); + unregister_hook('plugin_settings', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_settings'); + unregister_hook('plugin_settings_post', 'addon/remote_permissions/remote_permissions.php', 'remote_permissions_settings_post'); +} + +function remote_permissions_settings(&$a,&$o) { + + if(! local_user()) + return; + + $global = get_config("remote_perms", "global"); + if($global == 1) + return; + + /* Add our stylesheet to the page so we can make our settings look nice */ + + $a->page['htmlhead'] .= '' . "\r\n"; + + /* Get the current state of our config variable */ + + $remote_perms = get_pconfig(local_user(),'remote_perms','show'); + + /* Add some HTML to the existing form */ + + $t = file_get_contents( $a->get_baseurl() . "/addon/remote_permissions/settings.tpl" ); + $o .= replace_macros($t, array( + '$remote_perms_title' => t('Remote Permissions Settings'), + '$remote_perms_label' => t('Allow recipients of your private posts to see the other recipients of the posts'), + '$checked' => (($remote_perms == 1) ? 'checked="checked"' : ''), + '$submit' => t('Submit') + )); + +} + +function remote_permissions_settings_post($a,$post) { + if(! local_user() || (! x($_POST,'remote-perms-submit'))) + return; + + set_pconfig(local_user(),'remote_perms','show',intval($_POST['remote-perms'])); + info( t('Remote Permissions settings updated.') . EOL); +} + +function remote_permissions_content($a, $item_copy) { + + if($item_copy['uid'] != local_user()) + return; + + if(get_config('remote_perms','global') == 0) { + // Admin has set Individual choice. We need to find + // the original poster. First, get the contact's info + $r = q("SELECT nick, url FROM contact WHERE id = %d LIMIT 1", + intval($item_copy['contact-id']) + ); + if(! $r) + return; + + // Find out if the contact lives here + $baseurl = $a->get_baseurl(); + $baseurl = substr($baseurl, strpos($baseurl, '://') + 3); + if(strpos($r[0]['url'], $baseurl) === false) + return; + + // The contact lives here. Get his/her user info + $nick = $r[0]['nick']; + $r = q("SELECT uid FROM user WHERE nickname = '%s' LIMIT 1", + dbesc($nick) + ); + if(! $r) + return; + + if(get_pconfig($r[0]['uid'],'remote_perms','show') == 0) + return; + } + + if(($item_copy['private'] == 1) && (! strlen($item_copy['allow_cid'])) && (! strlen($item_copy['allow_gid'])) + && (! strlen($item_copy['deny_cid'])) && (! strlen($item_copy['deny_gid']))) { + + $allow_names = array(); + + // Check for the original post here -- that's the only way + // to definitely get all of the recipients + + if($item_copy['uri'] === $item_copy['parent-uri']) { + // Lockview for a top-level post + $r = q("SELECT allow_cid, allow_gid, deny_cid, deny_gid FROM item WHERE uri = '%s' AND type = 'wall' LIMIT 1", + dbesc($item_copy['uri']) + ); + } + else { + // Lockview for a comment + $r = q("SELECT allow_cid, allow_gid, deny_cid, deny_gid FROM item WHERE uri = '%s' + AND parent = ( SELECT id FROM item WHERE uri = '%s' AND type = 'wall' ) LIMIT 1", + dbesc($item_copy['uri']), + dbesc($item_copy['parent-uri']) + ); + } + if($r) { + + $item = $r[0]; + + $allowed_users = expand_acl($item['allow_cid']); + $allowed_groups = expand_acl($item['allow_gid']); + $deny_users = expand_acl($item['deny_cid']); + $deny_groups = expand_acl($item['deny_gid']); + + $o = t('Visible to:') . '