diff options
Diffstat (limited to 'include/features.php')
-rw-r--r-- | include/features.php | 474 |
1 files changed, 193 insertions, 281 deletions
diff --git a/include/features.php b/include/features.php index 03f50c9a4..05ce3db32 100644 --- a/include/features.php +++ b/include/features.php @@ -44,265 +44,174 @@ function feature_level($feature,$def) { return $def; } +function process_module_features_get($uid, $features) { + unset($features[0]); + foreach($features as $f) { + $arr[] = [ + 'feature_' . $f[0], + $f[1], + ((intval(feature_enabled($uid, $f[0]))) ? "1" : ''), + $f[2], + [t('Off'),t('On')], + (($f[4] === false) ? '' : 'disabled'), + $f[5] + ]; + } + return $arr; +} + +function process_module_features_post($uid, $features, $post_arr) { + unset($features[0]); + foreach($features as $f) { + $k = $f[0]; + if(array_key_exists("feature_$k",$post_arr)) + set_pconfig($uid,'feature',$k, (string) $post_arr["feature_$k"]); + else + set_pconfig($uid,'feature', $k, ''); + } +} + function get_features($filtered = true, $level = (-1)) { $account = \App::get_account(); $arr = [ - // General - 'general' => [ + 'calendar' => [ - t('General Features'), + t('CalDAV'), [ - 'start_menu', - t('New Member Links'), - t('Display new member quick links menu'), - (($account['account_created'] > datetime_convert('','','now - 60 days')) ? true : false), - get_config('feature_lock','start_menu'), - feature_level('start_menu',1), - ], - - [ - 'advanced_profiles', - t('Advanced Profiles'), - t('Additional profile sections and selections'), + 'cal_first_day', + t('Start calendar week on Monday'), + t('Default is Sunday'), false, - get_config('feature_lock','advanced_profiles'), - feature_level('advanced_profiles',1), - ], + get_config('feature_lock','cal_first_day') + ] - [ - 'profile_export', - t('Profile Import/Export'), - t('Save and load profile details across sites/channels'), - false, - get_config('feature_lock','profile_export'), - feature_level('profile_export',3), - ], + ], - [ - 'webpages', - t('Web Pages'), - t('Provide managed web pages on your channel'), - false, - get_config('feature_lock','webpages'), - feature_level('webpages',3), - ], + 'channel_home' => [ + + t('Channel Home'), [ - 'wiki', - t('Wiki'), - t('Provide a wiki for your channel'), - false, - get_config('feature_lock','wiki'), - feature_level('wiki',2), - ], -/* - [ - 'hide_rating', - t('Hide Rating'), - t('Hide the rating buttons on your channel and profile pages. Note: People can still rate you somewhere else.'), + 'archives', + t('Search by Date'), + t('Ability to select posts by date ranges'), false, - get_config('feature_lock','hide_rating'), - feature_level('hide_rating',3), + get_config('feature_lock','archives') ], -*/ + [ - 'private_notes', - t('Private Notes'), - t('Enables a tool to store notes and reminders (note: not encrypted)'), + 'tagadelic', + t('Tag Cloud'), + t('Provide a personal tag cloud on your channel page'), false, - get_config('feature_lock','private_notes'), - feature_level('private_notes',1), + get_config('feature_lock','tagadelic'), ], [ - 'cards', - t('Cards'), - t('Create personal planning cards'), + 'channel_list_mode', + t('Use blog/list mode'), + t('Comments will be displayed separately'), false, - get_config('feature_lock','cards'), - feature_level('cards',1), - ], + get_config('feature_lock','channel_list_mode'), + ] + ], + 'connections' => [ - [ - 'articles', - t('Articles'), - t('Create interactive articles'), - false, - get_config('feature_lock','articles'), - feature_level('articles',1), - ], + t('Connections'), [ - 'nav_channel_select', - t('Navigation Channel Select'), - t('Change channels directly from within the navigation dropdown menu'), + 'connfilter', + t('Connection Filtering'), + t('Filter incoming posts from connections based on keywords/content'), false, - get_config('feature_lock','nav_channel_select'), - feature_level('nav_channel_select',3), - ], + get_config('feature_lock','connfilter') + ] + ], - [ - 'photo_location', - t('Photo Location'), - t('If location data is available on uploaded photos, link this to a map.'), - false, - get_config('feature_lock','photo_location'), - feature_level('photo_location',2), - ], + 'conversation' => [ + + t('Conversation'), [ - 'ajaxchat', - t('Access Controlled Chatrooms'), - t('Provide chatrooms and chat services with access control.'), - true, - get_config('feature_lock','ajaxchat'), - feature_level('ajaxchat',1), + 'commtag', + t('Community Tagging'), + t('Ability to tag existing posts'), + false, + get_config('feature_lock','commtag'), ], - [ - 'smart_birthdays', - t('Smart Birthdays'), - t('Make birthday events timezone aware in case your friends are scattered across the planet.'), + 'emojis', + t('Emoji Reactions'), + t('Add emoji reaction ability to posts'), true, - get_config('feature_lock','smart_birthdays'), - feature_level('smart_birthdays',2), + get_config('feature_lock','emojis'), ], [ - 'event_tz_select', - t('Event Timezone Selection'), - t('Allow event creation in timezones other than your own.'), + 'dislike', + t('Dislike Posts'), + t('Ability to dislike posts/comments'), false, - get_config('feature_lock','event_tz_select'), - feature_level('event_tz_select',2), + get_config('feature_lock','dislike'), ], - [ - 'premium_channel', - t('Premium Channel'), - t('Allows you to set restrictions and terms on those that connect with your channel'), + 'star_posts', + t('Star Posts'), + t('Ability to mark special posts with a star indicator'), false, - get_config('feature_lock','premium_channel'), - feature_level('premium_channel',4), - ], - - [ - 'advanced_dirsearch', - t('Advanced Directory Search'), - t('Allows creation of complex directory search queries'), - false, - get_config('feature_lock','advanced_dirsearch'), - feature_level('advanced_dirsearch',4), - ], + get_config('feature_lock','star_posts'), + ] - [ - 'advanced_theming', - t('Advanced Theme and Layout Settings'), - t('Allows fine tuning of themes and page layouts'), - false, - get_config('feature_lock','advanced_theming'), - feature_level('advanced_theming',4), - ], ], + 'directory' => [ - 'access_control' => [ - t('Access Control and Permissions'), + t('Directory'), [ - 'groups', - t('Privacy Groups'), - t('Enable management and selection of privacy groups'), - true, - get_config('feature_lock','groups'), - feature_level('groups',0), - ], - - [ - 'multi_profiles', - t('Multiple Profiles'), - t('Ability to create multiple profiles'), - false, - get_config('feature_lock','multi_profiles'), - feature_level('multi_profiles',3), - ], - - - [ - 'permcats', - t('Permission Categories'), - t('Create custom connection permission limits'), + 'advanced_dirsearch', + t('Advanced Directory Search'), + t('Allows creation of complex directory search queries'), false, - get_config('feature_lock','permcats'), - feature_level('permcats',2), - ], + get_config('feature_lock','advanced_dirsearch'), + ] - [ - 'oauth_clients', - t('OAuth1 Clients'), - t('Manage OAuth1 authenticatication tokens for mobile and remote apps.'), - false, - get_config('feature_lock','oauth_clients'), - feature_level('oauth_clients',1), - ], + ], - [ - 'oauth2_clients', - t('OAuth2 Clients'), - t('Manage OAuth2 authenticatication tokens for mobile and remote apps.'), - false, - get_config('feature_lock','oauth2_clients'), - feature_level('oauth2_clients',1), - ], + 'editor' => [ + + t('Editor'), [ - 'access_tokens', - t('Access Tokens'), - t('Create access tokens so that non-members can access private content.'), + 'categories', + t('Post Categories'), + t('Add categories to your posts'), false, - get_config('feature_lock','access_tokens'), - feature_level('access_tokens',2), + get_config('feature_lock','categories'), + feature_level('categories',1), ], - ], - - // Post composition - 'composition' => [ - - t('Post Composition Features'), - [ 'large_photos', t('Large Photos'), t('Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails'), false, get_config('feature_lock','large_photos'), - feature_level('large_photos',1), ], [ - 'channel_sources', - t('Channel Sources'), - t('Automatically import channel content from other channels or feeds'), - false, - get_config('feature_lock','channel_sources'), - feature_level('channel_sources',3), - ], - - [ 'content_encrypt', t('Even More Encryption'), t('Allow optional encryption of content end-to-end with a shared secret key'), false, get_config('feature_lock','content_encrypt'), - feature_level('content_encrypt',3), ], [ @@ -311,7 +220,6 @@ function get_features($filtered = true, $level = (-1)) { t('Provide a class of post which others can vote on'), false, get_config('feature_lock','consensus_tools'), - feature_level('consensus_tools',3), ], [ @@ -320,7 +228,6 @@ function get_features($filtered = true, $level = (-1)) { t('Provide the option to disable comments for a post'), false, get_config('feature_lock','disable_comments'), - feature_level('disable_comments',2), ], [ @@ -329,7 +236,6 @@ function get_features($filtered = true, $level = (-1)) { t('Allow posts to be published at a later date'), false, get_config('feature_lock','delayed_posting'), - feature_level('delayed_posting',2), ], [ @@ -338,7 +244,6 @@ function get_features($filtered = true, $level = (-1)) { t('Remove posts/comments and/or private messages at a future time'), false, get_config('feature_lock','content_expire'), - feature_level('content_expire',1), ], [ @@ -347,7 +252,6 @@ function get_features($filtered = true, $level = (-1)) { t('Prevent posts with identical content to be published with less than two minutes in between submissions.'), true, get_config('feature_lock','suppress_duplicates'), - feature_level('suppress_duplicates',1), ], [ @@ -356,33 +260,72 @@ function get_features($filtered = true, $level = (-1)) { t('Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions'), true, get_config('feature_lock','auto_save_draft'), - feature_level('auto_save_draft',1), - ], + ] ], - // Network Tools - 'net_module' => [ + 'events' => [ - t('Network and Stream Filtering'), + t('Events'), [ - 'archives', - t('Search by Date'), - t('Ability to select posts by date ranges'), + 'events_cal_first_day', + t('Start calendar week on Monday'), + t('Default is Sunday'), false, - get_config('feature_lock','archives'), - feature_level('archives',1), + get_config('feature_lock','events_cal_first_day') ], + [ + 'smart_birthdays', + t('Smart Birthdays'), + t('Make birthday events timezone aware in case your friends are scattered across the planet.'), + true, + get_config('feature_lock','smart_birthdays'), + ], + + [ + 'event_tz_select', + t('Event Timezone Selection'), + t('Allow event creation in timezones other than your own.'), + false, + get_config('feature_lock','event_tz_select'), + ] + + ], + + 'manage' => [ + + t('Manage'), + + [ + 'nav_channel_select', + t('Navigation Channel Select'), + t('Change channels directly from within the navigation dropdown menu'), + false, + get_config('feature_lock','nav_channel_select'), + ] + + ], + + 'network' => [ + + t('Network'), [ 'savedsearch', t('Saved Searches'), t('Save search terms for re-use'), false, - get_config('feature_lock','savedsearch'), - feature_level('savedsearch',2), + get_config('feature_lock','savedsearch') + ], + + [ + 'filing', + t('Saved Folders'), + t('Ability to file posts under folders'), + false, + get_config('feature_lock','filing'), ], [ @@ -390,8 +333,7 @@ function get_features($filtered = true, $level = (-1)) { t('Alternate Stream Order'), t('Ability to order the stream by last post date, last comment date or unthreaded activities'), false, - get_config('feature_lock','order_tab'), - feature_level('order_tab',2), + get_config('feature_lock','order_tab') ], [ @@ -399,8 +341,7 @@ function get_features($filtered = true, $level = (-1)) { t('Contact Filter'), t('Ability to display only posts of a selected contact'), false, - get_config('feature_lock','name_tab'), - feature_level('name_tab',1), + get_config('feature_lock','name_tab') ], [ @@ -408,8 +349,7 @@ function get_features($filtered = true, $level = (-1)) { t('Forum Filter'), t('Ability to display only posts of a specific forum'), false, - get_config('feature_lock','forums_tab'), - feature_level('forums_tab',1), + get_config('feature_lock','forums_tab') ], [ @@ -417,8 +357,7 @@ function get_features($filtered = true, $level = (-1)) { t('Personal Posts Filter'), t('Ability to display only posts that you\'ve interacted on'), false, - get_config('feature_lock','personal_tab'), - feature_level('personal_tab',1), + get_config('feature_lock','personal_tab') ], [ @@ -426,8 +365,7 @@ function get_features($filtered = true, $level = (-1)) { t('Affinity Tool'), t('Filter stream activity by depth of relationships'), false, - get_config('feature_lock','affinity'), - feature_level('affinity',1), + get_config('feature_lock','affinity') ], [ @@ -435,90 +373,64 @@ function get_features($filtered = true, $level = (-1)) { t('Suggest Channels'), t('Show friend and connection suggestions'), false, - get_config('feature_lock','suggest'), - feature_level('suggest',1), + get_config('feature_lock','suggest') ], [ - 'connfilter', - t('Connection Filtering'), - t('Filter incoming posts from connections based on keywords/content'), + 'network_list_mode', + t('Use blog/list mode'), + t('Comments will be displayed separately'), false, - get_config('feature_lock','connfilter'), - feature_level('connfilter',3), - ], - + get_config('feature_lock','network_list_mode'), + ] ], - // Item tools - 'tools' => [ + 'photos' => [ - t('Post/Comment Tools'), + t('Photos'), [ - 'commtag', - t('Community Tagging'), - t('Ability to tag existing posts'), + 'photo_location', + t('Photo Location'), + t('If location data is available on uploaded photos, link this to a map.'), false, - get_config('feature_lock','commtag'), - feature_level('commtag',1), - ], + get_config('feature_lock','photo_location'), + ] - [ - 'categories', - t('Post Categories'), - t('Add categories to your posts'), - false, - get_config('feature_lock','categories'), - feature_level('categories',1), - ], + ], - [ - 'emojis', - t('Emoji Reactions'), - t('Add emoji reaction ability to posts'), - true, - get_config('feature_lock','emojis'), - feature_level('emojis',1), - ], + 'profiles' => [ - [ - 'filing', - t('Saved Folders'), - t('Ability to file posts under folders'), - false, - get_config('feature_lock','filing'), - feature_level('filing',2), - ], + t('Profiles'), [ - 'dislike', - t('Dislike Posts'), - t('Ability to dislike posts/comments'), + 'advanced_profiles', + t('Advanced Profiles'), + t('Additional profile sections and selections'), false, - get_config('feature_lock','dislike'), - feature_level('dislike',1), + get_config('feature_lock','advanced_profiles') ], [ - 'star_posts', - t('Star Posts'), - t('Ability to mark special posts with a star indicator'), + 'profile_export', + t('Profile Import/Export'), + t('Save and load profile details across sites/channels'), false, - get_config('feature_lock','star_posts'), - feature_level('star_posts',1), + get_config('feature_lock','profile_export') ], [ - 'tagadelic', - t('Tag Cloud'), - t('Provide a personal tag cloud on your channel page'), - false, - get_config('feature_lock','tagadelic'), - feature_level('tagadelic',2), - ], - ], + 'multi_profiles', + t('Multiple Profiles'), + t('Ability to create multiple profiles'), + false, + get_config('feature_lock','multi_profiles') + ] + + ] + + ]; $x = [ 'features' => $arr, ]; @@ -526,8 +438,6 @@ function get_features($filtered = true, $level = (-1)) { $arr = $x['features']; - $techlevel = (($level >= 0) ? $level : get_account_techlevel()); - // removed any locked features and remove the entire category if this makes it empty if($filtered) { @@ -538,9 +448,6 @@ function get_features($filtered = true, $level = (-1)) { for($y = 0; $y < count($arr[$k]); $y ++) { $disabled = false; if(is_array($arr[$k][$y])) { - if($arr[$k][$y][5] > $techlevel) { - $disabled = true; - } if($arr[$k][$y][4] !== false) { $disabled = true; } @@ -561,3 +468,8 @@ function get_features($filtered = true, $level = (-1)) { return $narr; } + +function get_module_features($module) { + $features = get_features(false); + return $features[$module]; +} |