From ce5adbf51e230e6eddf8bffb26108ca216372824 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Sat, 9 Jul 2016 18:10:13 -0700 Subject: more sql fine tuning --- include/widgets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/widgets.php b/include/widgets.php index a4a6fb55a..2d4d5b799 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -296,7 +296,7 @@ function widget_filer($arr) { $selected = ((x($_REQUEST,'file')) ? $_REQUEST['file'] : ''); $terms = array(); - $r = q("select distinct(term) from term where uid = %d and ttype = %d order by term asc", + $r = q("select distinct term from term where uid = %d and ttype = %d order by term asc", intval(local_channel()), intval(TERM_FILE) ); -- cgit v1.2.3 From 3d3584b36c9cb1d8d0dfe9c036b77bbc921f4c59 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Sun, 10 Jul 2016 13:42:04 +0200 Subject: remove check for mcrypt --- Zotlabs/Module/Setup.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php index c5d0ccc21..802f0c216 100644 --- a/Zotlabs/Module/Setup.php +++ b/Zotlabs/Module/Setup.php @@ -493,7 +493,6 @@ class Setup extends \Zotlabs\Web\Controller { $this->check_add($ck_funcs, t('OpenSSL PHP module'), true, true); $this->check_add($ck_funcs, t('mysqli or postgres PHP module'), true, true); $this->check_add($ck_funcs, t('mb_string PHP module'), true, true); - $this->check_add($ck_funcs, t('mcrypt PHP module'), true, true); $this->check_add($ck_funcs, t('xml PHP module'), true, true); if(function_exists('apache_get_modules')){ @@ -530,10 +529,6 @@ class Setup extends \Zotlabs\Web\Controller { $ck_funcs[4]['status'] = false; $ck_funcs[4]['help'] = t('Error: mb_string PHP module required but not installed.'); } - if(! function_exists('mcrypt_encrypt')) { - $ck_funcs[5]['status'] = false; - $ck_funcs[5]['help'] = t('Error: mcrypt PHP module required but not installed.'); - } if(! extension_loaded('xml')) { $ck_funcs[6]['status'] = false; $ck_funcs[6]['help'] = t('Error: xml PHP module required for DAV but not installed.'); -- cgit v1.2.3 From d5afd0d7c223161b673dca529830be3bfc739cd2 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Mon, 11 Jul 2016 12:49:53 +0200 Subject: do not use visibility for fullscreen button and move fullscreen button to the right --- view/css/bootstrap-red.css | 3 ++- view/theme/redbasic/js/redbasic.js | 6 ++++-- view/tpl/chat.tpl | 4 ++-- view/tpl/events-js.tpl | 4 ++-- view/tpl/events_cal-js.tpl | 4 ++-- view/tpl/photo_album.tpl | 4 ++-- view/tpl/photos_recent.tpl | 4 ++-- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css index 26321ab3c..20df16446 100644 --- a/view/css/bootstrap-red.css +++ b/view/css/bootstrap-red.css @@ -59,7 +59,8 @@ aside .nav-pills > li > a, padding: 6px 10px; } -.wall-item-tools .dropdown-menu { +.wall-item-tools .dropdown-menu, +.section-title-wrapper .dropdown-menu { min-width: auto; } diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js index 5209ad945..300f076f0 100644 --- a/view/theme/redbasic/js/redbasic.js +++ b/view/theme/redbasic/js/redbasic.js @@ -56,14 +56,16 @@ $(document).ready(function() { function makeFullScreen(full) { if(typeof full=='undefined' || full == true) { $('main').css({'transition': 'none'}).addClass('fullscreen'); - $('#fullscreen-btn, header, nav, aside, #tabs-collapse-1').css({'visibility': 'hidden'}); + $('header, nav, aside, #tabs-collapse-1').css({'visibility': 'hidden'}); + $('#fullscreen-btn').hide(); $('#inline-btn').show(); } else { $('main').removeClass('fullscreen'); - $('#fullscreen-btn, header, nav, aside, #tabs-collapse-1').css({'visibility': ''}); + $('header, nav, aside, #tabs-collapse-1').css({'visibility': ''}); $('#inline-btn').hide(); + $('#fullscreen-btn').show(); $('main').css({'transition': ''}); } } diff --git a/view/tpl/chat.tpl b/view/tpl/chat.tpl index 341ff7649..31be4136f 100644 --- a/view/tpl/chat.tpl +++ b/view/tpl/chat.tpl @@ -1,8 +1,6 @@
- - {{if $is_owner}}
@@ -10,6 +8,8 @@
{{/if}} + +

{{$room_name}}

diff --git a/view/tpl/events-js.tpl b/view/tpl/events-js.tpl index 3397411a8..6299242ce 100755 --- a/view/tpl/events-js.tpl +++ b/view/tpl/events-js.tpl @@ -2,8 +2,6 @@
+ +

diff --git a/view/tpl/events_cal-js.tpl b/view/tpl/events_cal-js.tpl index 121c06cb5..b7836cfab 100755 --- a/view/tpl/events_cal-js.tpl +++ b/view/tpl/events_cal-js.tpl @@ -2,13 +2,13 @@
- -
+ +

diff --git a/view/tpl/photo_album.tpl b/view/tpl/photo_album.tpl index e6cb61637..b391a00a1 100755 --- a/view/tpl/photo_album.tpl +++ b/view/tpl/photo_album.tpl @@ -1,8 +1,6 @@
- - {{if $order}} {{/if}} @@ -14,6 +12,8 @@ {{/if}}
+ +

{{$album}}

diff --git a/view/tpl/photos_recent.tpl b/view/tpl/photos_recent.tpl index c40dda145..139f27a23 100755 --- a/view/tpl/photos_recent.tpl +++ b/view/tpl/photos_recent.tpl @@ -1,11 +1,11 @@
- - {{if $can_post}} {{/if}} + +

{{$title}}

-- cgit v1.2.3 From 67c60229ca663135e8de5b99b27b0838fa6c205a Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 13:20:12 -0700 Subject: use the profile_uid here. --- Zotlabs/Module/Item.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 58d39da83..235c5528e 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -905,7 +905,7 @@ class Item extends \Zotlabs\Web\Controller { if($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)))); + build_sync_packet($profile_uid,array('item' => array(encode_item($sync_item[0],true)))); } } if(! $nopush) @@ -1000,7 +1000,7 @@ class Item extends \Zotlabs\Web\Controller { if($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)))); + build_sync_packet($profile_uid,array('item' => array(encode_item($sync_item[0],true)))); } } @@ -1014,11 +1014,6 @@ class Item extends \Zotlabs\Web\Controller { logger('post_complete'); - - - - - // figure out how to return, depending on from whence we came if($api_source) -- cgit v1.2.3 From fb36561a6841c165dc8644a61c4c37a771461e2b Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 13:27:44 -0700 Subject: force non-null sess_data --- Zotlabs/Web/SessionHandler.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Zotlabs/Web/SessionHandler.php b/Zotlabs/Web/SessionHandler.php index 6e7333b4b..93b27a7e8 100644 --- a/Zotlabs/Web/SessionHandler.php +++ b/Zotlabs/Web/SessionHandler.php @@ -24,7 +24,8 @@ class SessionHandler implements \SessionHandlerInterface { return $r[0]['sess_data']; } else { - q("INSERT INTO `session` (sid, expire) values ('%s', '%s')", + q("INSERT INTO `session` (sess_data, sid, expire) values ('%s', '%s', '%s')", + dbesc(''), dbesc($id), dbesc(time() + 300) ); -- cgit v1.2.3 From 833de9180eeb8b2d6cf0e0e90a656419f6172ab4 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 13:46:06 -0700 Subject: create change_channel hook --- include/security.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/security.php b/include/security.php index 38045c8a9..6c245fa09 100644 --- a/include/security.php +++ b/include/security.php @@ -132,6 +132,10 @@ function change_channel($change_channel) { } if(! is_dir('store/' . $r[0]['channel_address'])) @os_mkdir('store/' . $r[0]['channel_address'], STORAGE_DEFAULT_PERMISSIONS,true); + + $arr = [ 'channel_id' => $change_channel, 'chanx' => $ret ]; + call_hooks('change_channel', $arr); + } return $ret; -- cgit v1.2.3 From 17c3e12eabf93fe76061af0b97d25c6a9d080025 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 17:43:10 -0700 Subject: document the new change_channel hook --- doc/hook/change_channel.bb | 11 +++++++++++ doc/hooklist.bb | 3 +++ 2 files changed, 14 insertions(+) create mode 100644 doc/hook/change_channel.bb diff --git a/doc/hook/change_channel.bb b/doc/hook/change_channel.bb new file mode 100644 index 000000000..4514b9265 --- /dev/null +++ b/doc/hook/change_channel.bb @@ -0,0 +1,11 @@ +[h2]change_channel[/h2] + +Called when entering a logged in state in a channel context (as opposed to an account context). +The hook array provides two arguments, 'channel_id' and 'chanx'. 'chanx' is a union of the channel +and xchan records for the now active channel. + +Use this to capture what would traditionally be known as 'login events'. In this platform, login is +a separate authentication activity and doesn't necessarily require "connecting to an identity", which +is what the change_channel activity represents. + + diff --git a/doc/hooklist.bb b/doc/hooklist.bb index bb1bffcf0..66ff1cf71 100644 --- a/doc/hooklist.bb +++ b/doc/hooklist.bb @@ -73,6 +73,9 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the [zrl=[baseurl]/help/hook/bb_translate_video]bb_translate_video[/zrl] Called when extracting embedded services from bbcode video elements (rarely used) +[zrl=[baseurl]/help/hook/change_channel]change_channel[/zrl] + Called when logging in to a channel (either during login or afterward through the channel manager) + [zrl=[baseurl]/help/hook/channel_remove]channel_remove[/zrl] Called when removing a channel -- cgit v1.2.3 From 168d35747da8730a7e3a1e6cb40d4f411e147be3 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 18:59:54 -0700 Subject: use the get_hostname function rather than parse the url --- include/security.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/security.php b/include/security.php index 6c245fa09..212690d91 100644 --- a/include/security.php +++ b/include/security.php @@ -125,7 +125,7 @@ function change_channel($change_channel) { ); if($x) { $_SESSION['my_url'] = $x[0]['xchan_url']; - $_SESSION['my_address'] = $r[0]['channel_address'] . '@' . substr(z_root(), strpos(z_root(), '://') + 3); + $_SESSION['my_address'] = $r[0]['channel_address'] . '@' . App::get_hostname(); App::set_observer($x[0]); App::set_perms(get_all_perms(local_channel(), $hash)); -- cgit v1.2.3 From ed0e2b52d7cf66ada81208c5068f70568a0b2310 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Mon, 11 Jul 2016 21:46:16 -0700 Subject: move permissiondescription class to zotlabs/lib --- Zotlabs/Lib/PermissionDescription.php | 170 ++++++++++++++++++++++++++++++++++ Zotlabs/Module/Channel.php | 3 +- Zotlabs/Module/Editwebpage.php | 3 +- Zotlabs/Module/Events.php | 3 +- Zotlabs/Module/Filestorage.php | 3 +- Zotlabs/Module/Network.php | 4 +- Zotlabs/Module/Photos.php | 6 +- Zotlabs/Module/Rpost.php | 3 +- Zotlabs/Module/Settings.php | 4 +- Zotlabs/Module/Webpages.php | 3 +- include/PermissionDescription.php | 170 ---------------------------------- include/acl_selectors.php | 4 +- 12 files changed, 181 insertions(+), 195 deletions(-) create mode 100644 Zotlabs/Lib/PermissionDescription.php delete mode 100644 include/PermissionDescription.php diff --git a/Zotlabs/Lib/PermissionDescription.php b/Zotlabs/Lib/PermissionDescription.php new file mode 100644 index 000000000..55aac2dea --- /dev/null +++ b/Zotlabs/Lib/PermissionDescription.php @@ -0,0 +1,170 @@ +global_perm = $global_perm; + $this->channel_perm = $channel_perm; + + $this->fallback_description = ($description == '') ? t('Visible to your default audience') : $description; + } + + /** + * If the interpretation of an empty ACL can't be summarised with a global default permission + * or a specific permission setting then use this method and describe what it means instead. + * Remember to localize the description first. + * + * @param string $description - the localized caption for the no-ACL option in the ACL dialog. + * @return a new instance of PermissionDescription + */ + public static function fromDescription($description) { + return new PermissionDescription('', 0x80000, $description); + } + + + /** + * Use this method only if the interpretation of an empty ACL doesn't fall back to a global + * default permission. You should pass one of the constants from boot.php - PERMS_PUBLIC, + * PERMS_NETWORK etc. + * + * @param integer $perm - a single enumerated constant permission - PERMS_PUBLIC, PERMS_NETWORK etc. + * @return a new instance of PermissionDescription + */ + public static function fromStandalonePermission($perm) { + + $result = new PermissionDescription('', $perm); + + $checkPerm = $this->get_permission_description(); + if ($checkPerm == $this->fallback_description) { + $result = null; + logger('null PermissionDescription from unknown standalone permission: ' . $perm ,LOGGER_DEBUG, LOG_ERROR); + } + + return $result; + } + + /** + * This is the preferred way to create a PermissionDescription, as it provides the most details. + * Use this method if you know an empty ACL will result in one of the global default permissions + * being used, such as channel_r_stream (for which you would pass 'view_stream'). + * + * @param string $permname - a key for the global perms array from get_perms() in permissions.php, + * e.g. 'view_stream', 'view_profile', etc. + * @return a new instance of PermissionDescription + */ + public static function fromGlobalPermission($permname) { + + $result = null; + + $global_perms = get_perms(); + + if (array_key_exists($permname, $global_perms)) { + + $permDetails = $global_perms[$permname]; + + // It should be OK to always just read the permissions from App::$channel + // + // App::$profile is a union of channel and profile fields. + // The distinction is basically that App::$profile is pointing to the resource + // being observed. App::$channel is referring to the current logged-in channel + // member (if this is a local channel) e.g. the observer. We only show the ACL + // widget to the page owner (observer and observed are the same) so in that case + // I believe either may be safely used here. + $channelPerm = \App::$channel[$permDetails[0]]; + $result = new PermissionDescription($permDetails[1], $channelPerm); + } else { + // The acl dialog can handle null arguments, but it shouldn't happen + logger('null PermissionDescription from unknown global permission: ' . $permname ,LOGGER_DEBUG, LOG_ERROR); + } + return $result; + } + + + /** + * Gets a localized description of the permission, or a generic message if the permission + * is unknown. + * + * @return string description + */ + public function get_permission_description() { + + switch($this->channel_perm) { + + case 0: return t('Only me'); + case PERMS_PUBLIC: return t('Public'); + case PERMS_NETWORK: return t('Anybody in the $Projectname network'); + case PERMS_SITE: return sprintf(t('Any account on %s'), \App::get_hostname()); + case PERMS_CONTACTS: return t('Any of my connections'); + case PERMS_SPECIFIC: return t('Only connections I specifically allow'); + case PERMS_AUTHED: return t('Anybody authenticated (could include visitors from other networks)'); + case PERMS_PENDING: return t('Any connections including those who haven\'t yet been approved'); + default: return $this->fallback_description; + } + } + + /** + * Returns an icon css class name if an appropriate one is available, e.g. "fa-globe" for Public, + * otherwise returns empty string. + * + * @return string icon css class name (often FontAwesome) + */ + public function get_permission_icon() { + + switch($this->channel_perm) { + + case 0:/* only me */ return 'fa-eye-slash'; + case PERMS_PUBLIC: return 'fa-globe'; + case PERMS_NETWORK: return 'fa-share-alt-square'; // fa-share-alt-square is very similiar to the hubzilla logo, but we should create our own logo class to use + case PERMS_SITE: return 'fa-sitemap'; + case PERMS_CONTACTS: return 'fa-group'; + case PERMS_SPECIFIC: return 'fa-list'; + case PERMS_AUTHED: return ''; + case PERMS_PENDING: return ''; + default: return ''; + } + } + + + /** + * Returns a localized description of where the permission came from, if this is known. + * If it's not know, or if the permission is standalone and didn't come from a default + * permission setting, then empty string is returned. + * + * @return string description or empty string + */ + public function get_permission_origin_description() { + + switch($this->global_perm) { + + case PERMS_R_STREAM: return t('This is your default setting for the audience of your normal stream, and posts.'); + case PERMS_R_PROFILE: return t('This is your default setting for who can view your default channel profile'); + case PERMS_R_ABOOK: return t('This is your default setting for who can view your connections'); + case PERMS_R_STORAGE: return t('This is your default setting for who can view your file storage and photos'); + case PERMS_R_PAGES: return t('This is your default setting for the audience of your webpages'); + default: return ''; + } + } + +} diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php index d09388901..c74802ec5 100644 --- a/Zotlabs/Module/Channel.php +++ b/Zotlabs/Module/Channel.php @@ -9,7 +9,6 @@ require_once('include/security.php'); require_once('include/conversation.php'); require_once('include/acl_selectors.php'); require_once('include/permissions.php'); -require_once('include/PermissionDescription.php'); class Channel extends \Zotlabs\Web\Controller { @@ -133,7 +132,7 @@ class Channel extends \Zotlabs\Web\Controller { 'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''), 'nickname' => \App::$profile['channel_address'], 'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'), - 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''), + 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''), 'showacl' => (($is_owner) ? 'yes' : ''), 'bang' => '', 'visitor' => (($is_owner || $observer) ? true : false), diff --git a/Zotlabs/Module/Editwebpage.php b/Zotlabs/Module/Editwebpage.php index 5cd409e1e..be4803a07 100644 --- a/Zotlabs/Module/Editwebpage.php +++ b/Zotlabs/Module/Editwebpage.php @@ -4,7 +4,6 @@ namespace Zotlabs\Module; require_once('include/channel.php'); require_once('include/acl_selectors.php'); require_once('include/conversation.php'); -require_once('include/PermissionDescription.php'); class Editwebpage extends \Zotlabs\Web\Controller { @@ -151,7 +150,7 @@ class Editwebpage extends \Zotlabs\Web\Controller { 'body' => undo_post_tagging($itm[0]['body']), 'post_id' => $post_id, 'visitor' => ($is_owner) ? true : false, - 'acl' => populate_acl($itm[0],false,\PermissionDescription::fromGlobalPermission('view_pages')), + 'acl' => populate_acl($itm[0],false,\Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')), 'showacl' => ($is_owner) ? true : false, 'mimetype' => $mimetype, 'mimeselect' => true, diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php index 3187cddb4..def5c437b 100644 --- a/Zotlabs/Module/Events.php +++ b/Zotlabs/Module/Events.php @@ -6,7 +6,6 @@ require_once('include/bbcode.php'); require_once('include/datetime.php'); require_once('include/event.php'); require_once('include/items.php'); -require_once('include/PermissionDescription.php'); class Events extends \Zotlabs\Web\Controller { @@ -471,7 +470,7 @@ class Events extends \Zotlabs\Web\Controller { '$permissions' => t('Permission settings'), // populating the acl dialog was a permission description from view_stream because Cal.php, which // displays events, says "since we don't currently have an event permission - use the stream permission" - '$acl' => (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults), false, \PermissionDescription::fromGlobalPermission('view_stream'))), + '$acl' => (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults), false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'))), '$submit' => t('Submit'), '$advanced' => t('Advanced Options') diff --git a/Zotlabs/Module/Filestorage.php b/Zotlabs/Module/Filestorage.php index 2861f31be..c3ef22e32 100644 --- a/Zotlabs/Module/Filestorage.php +++ b/Zotlabs/Module/Filestorage.php @@ -6,7 +6,6 @@ namespace Zotlabs\Module; */ require_once('include/attach.php'); -require_once('include/PermissionDescription.php'); /** @@ -134,7 +133,7 @@ class Filestorage extends \Zotlabs\Web\Controller { $cloudpath = get_cloudpath($f) . (intval($f['is_dir']) ? '?f=&davguest=1' : ''); $parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']); - $aclselect_e = populate_acl($f, false, \PermissionDescription::fromGlobalPermission('view_storage')); + $aclselect_e = populate_acl($f, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')); $is_a_dir = (intval($f['is_dir']) ? true : false); $lockstate = (($f['allow_cid'] || $f['allow_gid'] || $f['deny_cid'] || $f['deny_gid']) ? 'lock' : 'unlock'); diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php index 87ed326e2..3b88cd8d6 100644 --- a/Zotlabs/Module/Network.php +++ b/Zotlabs/Module/Network.php @@ -6,8 +6,6 @@ require_once('include/group.php'); require_once('include/contact_widgets.php'); require_once('include/conversation.php'); require_once('include/acl_selectors.php'); -require_once('include/PermissionDescription.php'); - class Network extends \Zotlabs\Web\Controller { @@ -171,7 +169,7 @@ class Network extends \Zotlabs\Web\Controller { 'default_location' => $channel['channel_location'], 'nickname' => $channel['channel_address'], 'lockstate' => (($private_editing || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => populate_acl((($private_editing) ? $def_acl : $channel_acl), true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), + 'acl' => populate_acl((($private_editing) ? $def_acl : $channel_acl), true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), 'bang' => (($private_editing) ? '!' : ''), 'visitor' => true, 'profile_uid' => local_channel(), diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index 1633e08ef..1eeab1461 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -9,8 +9,6 @@ require_once('include/bbcode.php'); require_once('include/security.php'); require_once('include/attach.php'); require_once('include/text.php'); -require_once('include/PermissionDescription.php'); - class Photos extends \Zotlabs\Web\Controller { @@ -633,7 +631,7 @@ class Photos extends \Zotlabs\Web\Controller { $lockstate = (($acl->is_private()) ? 'lock' : 'unlock'); } - $aclselect = (($_is_owner) ? populate_acl($channel_acl,false, \PermissionDescription::fromGlobalPermission('view_storage')) : ''); + $aclselect = (($_is_owner) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : ''); // this is wrong but is to work around an issue with js_upload wherein it chokes if these variables // don't exist. They really should be set to a parseable representation of the channel's default permissions @@ -1023,7 +1021,7 @@ class Photos extends \Zotlabs\Web\Controller { if($can_post) { $album_e = $ph[0]['album']; $caption_e = $ph[0]['description']; - $aclselect_e = (($_is_owner) ? populate_acl($ph[0], true, \PermissionDescription::fromGlobalPermission('view_storage')) : ''); + $aclselect_e = (($_is_owner) ? populate_acl($ph[0], true, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : ''); $albums = ((array_key_exists('albums', \App::$data)) ? \App::$data['albums'] : photos_albums_list(\App::$data['channel'],\App::$data['observer'])); $_SESSION['album_return'] = bin2hex($ph[0]['album']); diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php index 1396f2a55..32d52c30c 100644 --- a/Zotlabs/Module/Rpost.php +++ b/Zotlabs/Module/Rpost.php @@ -7,7 +7,6 @@ require_once('include/items.php'); require_once('include/taxonomy.php'); require_once('include/conversation.php'); require_once('include/zot.php'); -require_once('include/PermissionDescription.php'); /** * remote post @@ -116,7 +115,7 @@ class Rpost extends \Zotlabs\Web\Controller { 'default_location' => $channel['channel_location'], 'nickname' => $channel['channel_address'], 'lockstate' => (($acl->is_private()) ? 'lock' : 'unlock'), - 'acl' => populate_acl($channel_acl, true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), + 'acl' => populate_acl($channel_acl, true, Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post'), 'bang' => '', 'visitor' => true, 'profile_uid' => local_channel(), diff --git a/Zotlabs/Module/Settings.php b/Zotlabs/Module/Settings.php index 875004fae..af246a4dc 100644 --- a/Zotlabs/Module/Settings.php +++ b/Zotlabs/Module/Settings.php @@ -2,8 +2,6 @@ namespace Zotlabs\Module; /** @file */ require_once('include/zot.php'); -require_once('include/PermissionDescription.php'); - class Settings extends \Zotlabs\Web\Controller { @@ -1066,7 +1064,7 @@ class Settings extends \Zotlabs\Web\Controller { '$maxreq' => array('maxreq', t('Maximum Friend Requests/Day:'), intval($channel['channel_max_friend_req']) , t('May reduce spam activity')), '$permissions' => t('Default Post and Publish Permissions'), '$permdesc' => t("\x28click to open/close\x29"), - '$aclselect' => populate_acl($perm_defaults, false, \PermissionDescription::fromDescription(t('Use my default audience setting for the type of object published'))), + '$aclselect' => populate_acl($perm_defaults, false, \Zotlabs\Lib\PermissionDescription::fromDescription(t('Use my default audience setting for the type of object published'))), '$suggestme' => $suggestme, '$group_select' => $group_select, '$role' => array('permissions_role' , t('Channel permissions category:'), $permissions_role, '', get_roles()), diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index bb8d9c6ed..cc0a01cce 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -4,7 +4,6 @@ namespace Zotlabs\Module; require_once('include/channel.php'); require_once('include/conversation.php'); require_once('include/acl_selectors.php'); -require_once('include/PermissionDescription.php'); class Webpages extends \Zotlabs\Web\Controller { @@ -105,7 +104,7 @@ class Webpages extends \Zotlabs\Web\Controller { 'is_owner' => true, 'nickname' => \App::$profile['channel_address'], 'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), - 'acl' => (($is_owner) ? populate_acl($channel_acl,false, \PermissionDescription::fromGlobalPermission('view_pages')) : ''), + 'acl' => (($is_owner) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_pages')) : ''), 'showacl' => (($is_owner) ? true : false), 'visitor' => true, 'hide_location' => true, diff --git a/include/PermissionDescription.php b/include/PermissionDescription.php deleted file mode 100644 index 1f7799406..000000000 --- a/include/PermissionDescription.php +++ /dev/null @@ -1,170 +0,0 @@ -global_perm = $global_perm; - $this->channel_perm = $channel_perm; - - $this->fallback_description = ($description == '') ? t('Visible to your default audience') : $description; - } - - /** - * If the interpretation of an empty ACL can't be summarised with a global default permission - * or a specific permission setting then use this method and describe what it means instead. - * Remember to localize the description first. - * - * @param string $description - the localized caption for the no-ACL option in the ACL dialog. - * @return a new instance of PermissionDescription - */ - public static function fromDescription($description) { - return new PermissionDescription('', 0x80000, $description); - } - - - /** - * Use this method only if the interpretation of an empty ACL doesn't fall back to a global - * default permission. You should pass one of the constants from boot.php - PERMS_PUBLIC, - * PERMS_NETWORK etc. - * - * @param integer $perm - a single enumerated constant permission - PERMS_PUBLIC, PERMS_NETWORK etc. - * @return a new instance of PermissionDescription - */ - public static function fromStandalonePermission($perm) { - - $result = new PermissionDescription('', $perm); - - $checkPerm = $this->get_permission_description(); - if ($checkPerm == $this->fallback_description) { - $result = null; - logger('null PermissionDescription from unknown standalone permission: ' . $perm ,LOGGER_DEBUG, LOG_ERROR); - } - - return $result; - } - - /** - * This is the preferred way to create a PermissionDescription, as it provides the most details. - * Use this method if you know an empty ACL will result in one of the global default permissions - * being used, such as channel_r_stream (for which you would pass 'view_stream'). - * - * @param string $permname - a key for the global perms array from get_perms() in permissions.php, - * e.g. 'view_stream', 'view_profile', etc. - * @return a new instance of PermissionDescription - */ - public static function fromGlobalPermission($permname) { - - $result = null; - - $global_perms = get_perms(); - - if (array_key_exists($permname, $global_perms)) { - - $permDetails = $global_perms[$permname]; - - // It should be OK to always just read the permissions from App::$channel - // - // App::$profile is a union of channel and profile fields. - // The distinction is basically that App::$profile is pointing to the resource - // being observed. App::$channel is referring to the current logged-in channel - // member (if this is a local channel) e.g. the observer. We only show the ACL - // widget to the page owner (observer and observed are the same) so in that case - // I believe either may be safely used here. - $channelPerm = \App::$channel[$permDetails[0]]; - $result = new PermissionDescription($permDetails[1], $channelPerm); - } else { - // The acl dialog can handle null arguments, but it shouldn't happen - logger('null PermissionDescription from unknown global permission: ' . $permname ,LOGGER_DEBUG, LOG_ERROR); - } - return $result; - } - - - /** - * Gets a localized description of the permission, or a generic message if the permission - * is unknown. - * - * @return string description - */ - public function get_permission_description() { - - switch($this->channel_perm) { - - case 0: return t('Only me'); - case PERMS_PUBLIC: return t('Public'); - case PERMS_NETWORK: return t('Anybody in the $Projectname network'); - case PERMS_SITE: return sprintf(t('Any account on %s'), \App::get_hostname()); - case PERMS_CONTACTS: return t('Any of my connections'); - case PERMS_SPECIFIC: return t('Only connections I specifically allow'); - case PERMS_AUTHED: return t('Anybody authenticated (could include visitors from other networks)'); - case PERMS_PENDING: return t('Any connections including those who haven\'t yet been approved'); - default: return $this->fallback_description; - } - } - - /** - * Returns an icon css class name if an appropriate one is available, e.g. "fa-globe" for Public, - * otherwise returns empty string. - * - * @return string icon css class name (often FontAwesome) - */ - public function get_permission_icon() { - - switch($this->channel_perm) { - - case 0:/* only me */ return 'fa-eye-slash'; - case PERMS_PUBLIC: return 'fa-globe'; - case PERMS_NETWORK: return 'fa-share-alt-square'; // fa-share-alt-square is very similiar to the hubzilla logo, but we should create our own logo class to use - case PERMS_SITE: return 'fa-sitemap'; - case PERMS_CONTACTS: return 'fa-group'; - case PERMS_SPECIFIC: return 'fa-list'; - case PERMS_AUTHED: return ''; - case PERMS_PENDING: return ''; - default: return ''; - } - } - - - /** - * Returns a localized description of where the permission came from, if this is known. - * If it's not know, or if the permission is standalone and didn't come from a default - * permission setting, then empty string is returned. - * - * @return string description or empty string - */ - public function get_permission_origin_description() { - - switch($this->global_perm) { - - case PERMS_R_STREAM: return t('This is your default setting for the audience of your normal stream, and posts.'); - case PERMS_R_PROFILE: return t('This is your default setting for who can view your default channel profile'); - case PERMS_R_ABOOK: return t('This is your default setting for who can view your connections'); - case PERMS_R_STORAGE: return t('This is your default setting for who can view your file storage and photos'); - case PERMS_R_PAGES: return t('This is your default setting for the audience of your webpages'); - default: return ''; - } - } - -} diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 89d054e3b..148c67a6c 100644 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -7,8 +7,6 @@ * @package acl_selectors */ -require_once("include/PermissionDescription.php"); - function group_select($selname,$selclass,$preselected = false,$size = 4) { $o = ''; @@ -231,7 +229,7 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti if(! $emptyACL_description) { $showall_caption = t('Visible to your default audience'); - } else if (is_a($emptyACL_description, 'PermissionDescription')) { + } else if (is_a($emptyACL_description, '\\Zotlabs\\Lib\\PermissionDescription')) { $showall_caption = $emptyACL_description->get_permission_description(); $showall_origin = (($role === 'custom') ? $emptyACL_description->get_permission_origin_description() : ''); $showall_icon = $emptyACL_description->get_permission_icon(); -- cgit v1.2.3 From b6987b4287bb2492b8f4000bdef08b376aa5f265 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Tue, 12 Jul 2016 13:15:20 -0700 Subject: the abconfig defaults weren't changed in the schema files when they were changed in the code --- install/schema_mysql.sql | 2 +- install/schema_postgres.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index d2a5ac85e..b43ead050 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -1,7 +1,7 @@ CREATE TABLE IF NOT EXISTS `abconfig` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `chan` int(10) unsigned NOT NULL DEFAULT '', + `chan` int(10) unsigned NOT NULL DEFAULT '0', `xchan` char(255) NOT NULL DEFAULT '', `cat` char(255) NOT NULL DEFAULT '', `k` char(255) NOT NULL DEFAULT '', diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql index 378308233..5080d7608 100644 --- a/install/schema_postgres.sql +++ b/install/schema_postgres.sql @@ -1,6 +1,6 @@ CREATE TABLE "abconfig" ( "id" serial NOT NULL, - "chan" bigint NOT NULL, + "chan" bigint NOT NULL DEFAULT '0', "xchan" text NOT NULL, "cat" text NOT NULL, "k" text NOT NULL, -- cgit v1.2.3