There have been some conversations in the last weeks which explained several parts of the code, so add it to the source code documentation. Also some other small source code documentation improvements.
91 lines
2.5 KiB
PHP
91 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace Zotlabs\Access;
|
|
|
|
use Zotlabs\Lib\PConfig;
|
|
|
|
/**
|
|
* @brief Permission limits.
|
|
*
|
|
* Permission limits are a very high level permission setting. They are hard
|
|
* limits by design.
|
|
* "Who can view my photos (at all)?"
|
|
* "Who can post photos in my albums (at all)?"
|
|
*
|
|
* For viewing permissions we generally set these to 'anybody' and for write
|
|
* permissions we generally set them to 'those I allow', though many people
|
|
* restrict the viewing permissions further for things like 'Can view my connections'.
|
|
*
|
|
* People get confused enough by permissions that we wanted a place to set their
|
|
* privacy expectations once and be done with it.
|
|
*
|
|
* Connection related permissions like "Can Joe view my photos?" are handled by
|
|
* @ref ::Zotlabs::Lib::Permcat "Permcat" and inherit from the channel's Permission
|
|
* limits.
|
|
*
|
|
* @see Permissions
|
|
*/
|
|
class PermissionLimits {
|
|
|
|
/**
|
|
* @brief Get standard permission limits.
|
|
*
|
|
* Viewing permissions and post_comments permission are set to 'anybody',
|
|
* other permissions are set to 'those I allow'.
|
|
*
|
|
* The list of permissions comes from Permissions::Perms().
|
|
*
|
|
* @return array
|
|
*/
|
|
static public function Std_Limits() {
|
|
$limits = [];
|
|
$perms = Permissions::Perms();
|
|
|
|
foreach($perms as $k => $v) {
|
|
if(strstr($k, 'view') || $k === 'post_comments')
|
|
$limits[$k] = PERMS_PUBLIC;
|
|
else
|
|
$limits[$k] = PERMS_SPECIFIC;
|
|
}
|
|
|
|
return $limits;
|
|
}
|
|
|
|
/**
|
|
* @brief Sets a permission limit for a channel.
|
|
*
|
|
* @param int $channel_id
|
|
* @param string $perm
|
|
* @param int $perm_limit one of PERMS_* constants
|
|
*/
|
|
static public function Set($channel_id, $perm, $perm_limit) {
|
|
PConfig::Set($channel_id, 'perm_limits', $perm, $perm_limit);
|
|
}
|
|
|
|
/**
|
|
* @brief Get a channel's permission limits.
|
|
*
|
|
* Return a channel's permission limits from PConfig. If $perm is set just
|
|
* return this permission limit, if not set, return an array with all
|
|
* permission limits.
|
|
*
|
|
* @param int $channel_id
|
|
* @param string $perm (optional)
|
|
* @return
|
|
* * \b boolean false if no perm_limits set for this channel
|
|
* * \b int if $perm is set, return one of PERMS_* constants for this permission
|
|
* * \b array with all permission limits, if $perm is not set
|
|
*/
|
|
static public function Get($channel_id, $perm = '') {
|
|
if($perm) {
|
|
return PConfig::Get($channel_id, 'perm_limits', $perm);
|
|
}
|
|
|
|
PConfig::Load($channel_id);
|
|
if(array_key_exists($channel_id, \App::$config)
|
|
&& array_key_exists('perm_limits', \App::$config[$channel_id]))
|
|
return \App::$config[$channel_id]['perm_limits'];
|
|
|
|
return false;
|
|
}
|
|
} |