2015-08-23 22:38:18 +02:00
< ? php /** @file */
/*
* Features management
*/
function feature_enabled ( $uid , $feature ) {
$x = get_pconfig ( $uid , 'feature' , $feature );
if ( $x === false ) {
$x = get_config ( 'feature' , $feature );
if ( $x === false )
$x = get_feature_default ( $feature );
}
$arr = array ( 'uid' => $uid , 'feature' => $feature , 'enabled' => $x );
call_hooks ( 'feature_enabled' , $arr );
return ( $arr [ 'enabled' ]);
}
function get_feature_default ( $feature ) {
$f = get_features ();
foreach ( $f as $cat ) {
foreach ( $cat as $feat ) {
if ( is_array ( $feat ) && $feat [ 0 ] === $feature )
return $feat [ 3 ];
}
}
return false ;
}
function get_features () {
$arr = array (
// General
'general' => array (
t ( 'General Features' ),
// This is per post, and different from fixed expiration 'expire' which isn't working yet
array ( 'content_expire' , t ( 'Content Expiration' ), t ( 'Remove posts/comments and/or private messages at a future time' ), false ),
array ( 'multi_profiles' , t ( 'Multiple Profiles' ), t ( 'Ability to create multiple profiles' ), false ),
array ( 'advanced_profiles' , t ( 'Advanced Profiles' ), t ( 'Additional profile sections and selections' ), false ),
array ( 'profile_export' , t ( 'Profile Import/Export' ), t ( 'Save and load profile details across sites/channels' ), false ),
array ( 'webpages' , t ( 'Web Pages' ), t ( 'Provide managed web pages on your channel' ), false ),
array ( 'private_notes' , t ( 'Private Notes' ), t ( 'Enables a tool to store notes and reminders' ), false ),
array ( 'nav_channel_select' , t ( 'Navigation Channel Select' ), t ( 'Change channels directly from within the navigation dropdown menu' ), false ),
array ( 'photo_location' , t ( 'Photo Location' ), t ( 'If location data is available on uploaded photos, link this to a map.' ), false ),
array ( 'expert' , t ( 'Expert Mode' ), t ( 'Enable Expert Mode to provide advanced configuration options' ), false ),
array ( 'premium_channel' , t ( 'Premium Channel' ), t ( 'Allows you to set restrictions and terms on those that connect with your channel' ), false ),
),
// Post composition
'composition' => array (
t ( 'Post Composition Features' ),
// array('richtext', t('Richtext Editor'), t('Enable richtext editor'),false),
array ( 'markdown' , t ( 'Use Markdown' ), t ( 'Allow use of "Markdown" to format posts' ), false ),
2015-10-24 13:04:14 +02:00
array ( 'large_photos' , t ( 'Large Photos' ), t ( 'Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails' ), false ),
2015-08-23 22:38:18 +02:00
array ( 'channel_sources' , t ( 'Channel Sources' ), t ( 'Automatically import channel content from other channels or feeds' ), false ),
array ( 'content_encrypt' , t ( 'Even More Encryption' ), t ( 'Allow optional encryption of content end-to-end with a shared secret key' ), false ),
2015-11-15 19:51:39 +01:00
array ( 'consensus_tools' , t ( 'Enable Voting Tools' ), t ( 'Provide a class of post which others can vote on' ), false ),
array ( 'delayed_posting' , t ( 'Delayed Posting' ), t ( 'Allow posts to be published at a later date' ), false ),
2015-12-06 02:08:25 +01:00
array ( 'suppress_duplicates' , t ( 'Suppress Duplicate Posts/Comments' ), t ( 'Prevent posts with identical content to be published with less than two minutes in between submissions.' ), true ),
2015-08-23 22:38:18 +02:00
),
// Network Tools
'net_module' => array (
t ( 'Network and Stream Filtering' ),
array ( 'archives' , t ( 'Search by Date' ), t ( 'Ability to select posts by date ranges' ), false ),
array ( 'groups' , t ( 'Collections Filter' ), t ( 'Enable widget to display Network posts only from selected collections' ), false ),
array ( 'savedsearch' , t ( 'Saved Searches' ), t ( 'Save search terms for re-use' ), false ),
array ( 'personal_tab' , t ( 'Network Personal Tab' ), t ( 'Enable tab to display only Network posts that you\'ve interacted on' ), false ),
array ( 'new_tab' , t ( 'Network New Tab' ), t ( 'Enable tab to display all new Network activity' ), false ),
array ( 'affinity' , t ( 'Affinity Tool' ), t ( 'Filter stream activity by depth of relationships' ), false ),
array ( 'connfilter' , t ( 'Connection Filtering' ), t ( 'Filter incoming posts from connections based on keywords/content' )),
array ( 'suggest' , t ( 'Suggest Channels' ), t ( 'Show channel suggestions' ), false ),
),
// Item tools
'tools' => array (
t ( 'Post/Comment Tools' ),
array ( 'commtag' , t ( 'Tagging' ), t ( 'Ability to tag existing posts' ), false ),
array ( 'categories' , t ( 'Post Categories' ), t ( 'Add categories to your posts' ), false ),
array ( 'filing' , t ( 'Saved Folders' ), t ( 'Ability to file posts under folders' ), false ),
array ( 'dislike' , t ( 'Dislike Posts' ), t ( 'Ability to dislike posts/comments' ), false ),
array ( 'star_posts' , t ( 'Star Posts' ), t ( 'Ability to mark special posts with a star indicator' ), false ),
array ( 'tagadelic' , t ( 'Tag Cloud' ), t ( 'Provide a personal tag cloud on your channel page' ), false ),
),
);
call_hooks ( 'get_features' , $arr );
return $arr ;
}