]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
[friendica.git] / mod / settings.php
old mode 100755 (executable)
new mode 100644 (file)
index 926d1fa..92593d7
@@ -15,9 +15,6 @@ function get_theme_config_file($theme){
 }
 
 function settings_init(&$a) {
-       if(local_user()) {
-               profile_load($a,$a->user['nickname']);
-       }
 
        // These lines provide the javascript needed by the acl selector
 
@@ -47,6 +44,53 @@ function settings_init(&$a) {
 EOT;
 
 
+
+       $tabs = array(
+               array(
+                       'label' => t('Account settings'),
+                       'url'   => $a->get_baseurl(true).'/settings',
+                       'selected'      => (($a->argc == 1)?'active':''),
+               ),      
+               array(
+                       'label' => t('Display settings'),
+                       'url'   => $a->get_baseurl(true).'/settings/display',
+                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
+               ),      
+               
+               array(
+                       'label' => t('Connector settings'),
+                       'url'   => $a->get_baseurl(true).'/settings/connectors',
+                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
+               ),
+               array(
+                       'label' => t('Plugin settings'),
+                       'url'   => $a->get_baseurl(true).'/settings/addon',
+                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
+               ),
+               array(
+                       'label' => t('Connected apps'),
+                       'url' => $a->get_baseurl(true) . '/settings/oauth',
+                       'selected' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
+               ),
+               array(
+                       'label' => t('Export personal data'),
+                       'url' => $a->get_baseurl(true) . '/uexport',
+                       'selected' => ''
+               ),
+               array(
+                       'label' => t('Remove account'),
+                       'url' => $a->get_baseurl(true) . '/removeme',
+                       'selected' => ''
+               )
+       );
+       
+       $tabtpl = get_markup_template("generic_links_widget.tpl");
+       $a->page['aside'] = replace_macros($tabtpl, array(
+               '$title' => t('Settings'),
+               '$class' => 'settings-widget',
+               '$items' => $tabs,
+       ));
+
 }
 
 
@@ -229,7 +273,7 @@ function settings_post(&$a) {
 
 
                if ($theme == $a->user['theme']){
-                       // call theme_post only if theme has not benn changed
+                       // call theme_post only if theme has not been changed
                        if( ($themeconfigfile = get_theme_config_file($theme)) != null){
                                require_once($themeconfigfile);
                                theme_post($a);
@@ -242,6 +286,7 @@ function settings_post(&$a) {
                                intval(local_user())
                );
        
+               call_hooks('display_settings_post', $_POST);
                goaway($a->get_baseurl(true) . '/settings/display' );
                return; // NOTREACHED
        }
@@ -287,14 +332,14 @@ function settings_post(&$a) {
        $openid           = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url']))   : '');
        $maxreq           = ((x($_POST,'maxreq'))     ? intval($_POST['maxreq'])             : 0);
        $expire           = ((x($_POST,'expire'))     ? intval($_POST['expire'])             : 0);
+       $def_gid          = ((x($_POST,'group-selection')) ? intval($_POST['group-selection']) : 0);
 
 
        $expire_items     = ((x($_POST,'expire_items')) ? intval($_POST['expire_items'])         : 0);
        $expire_notes     = ((x($_POST,'expire_notes')) ? intval($_POST['expire_notes'])         : 0);
        $expire_starred   = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
        $expire_photos    = ((x($_POST,'expire_photos'))? intval($_POST['expire_photos'])        : 0);
-
-
+       $expire_network_only    = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only'])      : 0);
 
        $allow_location   = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
        $publish          = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
@@ -308,7 +353,9 @@ function settings_post(&$a) {
        $suggestme        = ((x($_POST,'suggestme')) ? intval($_POST['suggestme'])  : 0);  
        $hide_friends     = (($_POST['hide-friends'] == 1) ? 1: 0);
        $hidewall         = (($_POST['hidewall'] == 1) ? 1: 0);
-
+       $post_newfriend   = (($_POST['post_newfriend'] == 1) ? 1: 0);
+       $post_joingroup   = (($_POST['post_joingroup'] == 1) ? 1: 0);
+       $post_profilechange   = (($_POST['post_profilechange'] == 1) ? 1: 0);
 
        $notify = 0;
 
@@ -388,11 +435,28 @@ function settings_post(&$a) {
        set_pconfig(local_user(),'expire','notes', $expire_notes);
        set_pconfig(local_user(),'expire','starred', $expire_starred);
        set_pconfig(local_user(),'expire','photos', $expire_photos);
+       set_pconfig(local_user(),'expire','network_only', $expire_network_only);
 
        set_pconfig(local_user(),'system','suggestme', $suggestme);
+       set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
+       set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
+       set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
+
 
+       if($page_flags == PAGE_PRVGROUP) {
+               $hidewall = 1;
+               if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) {
+                       if($def_gid) {
+                               info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
+                               $str_group_allow = '<' . $def_gid . '>';
+                       }
+                       else {
+                               notice( t('Private forum has no privacy permissions and no default privacy group.') . EOL);
+                       } 
+               }
+       }
 
-       $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s',  `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d  WHERE `uid` = %d LIMIT 1",
+       $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s',  `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `def_gid` = %d, `blockwall` = %d, `hidewall` = %d, `blocktags` = %d, `unkmail` = %d, `cntunkmail` = %d  WHERE `uid` = %d LIMIT 1",
                        dbesc($username),
                        dbesc($email),
                        dbesc($openid),
@@ -408,6 +472,7 @@ function settings_post(&$a) {
                        intval($maxreq),
                        intval($expire),
                        dbesc($openidserver),
+                       intval($def_gid),
                        intval($blockwall),
                        intval($hidewall),
                        intval($blocktags),
@@ -478,44 +543,7 @@ function settings_content(&$a) {
                return;
        }
        
-       $tabs = array(
-               array(
-                       'label' => t('Account settings'),
-                       'url'   => $a->get_baseurl(true).'/settings',
-                       'sel'   => (($a->argc == 1)?'active':''),
-               ),      
-               array(
-                       'label' => t('Display settings'),
-                       'url'   => $a->get_baseurl(true).'/settings/display',
-                       'sel'   => (($a->argc > 1) && ($a->argv[1] === 'display')?'active':''),
-               ),      
-               
-               array(
-                       'label' => t('Connector settings'),
-                       'url'   => $a->get_baseurl(true).'/settings/connectors',
-                       'sel'   => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''),
-               ),
-               array(
-                       'label' => t('Plugin settings'),
-                       'url'   => $a->get_baseurl(true).'/settings/addon',
-                       'sel'   => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''),
-               ),
-               array(
-                       'label' => t('Connections'),
-                       'url' => $a->get_baseurl(true) . '/settings/oauth',
-                       'sel' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''),
-               ),
-               array(
-                       'label' => t('Export personal data'),
-                       'url' => $a->get_baseurl(true) . '/uexport',
-                       'sel' => ''
-               )
-       );
-       
-       $tabtpl = get_markup_template("common_tabs.tpl");
-       $tabs = replace_macros($tabtpl, array(
-               '$tabs' => $tabs,
-       ));
+
                
        if(($a->argc > 1) && ($a->argv[1] === 'oauth')) {
                
@@ -523,7 +551,6 @@ function settings_content(&$a) {
                        $tpl = get_markup_template("settings_oauth_edit.tpl");
                        $o .= replace_macros($tpl, array(
                                '$form_security_token' => get_form_security_token("settings_oauth"),
-                               '$tabs'         => $tabs,
                                '$title'        => t('Add application'),
                                '$submit'       => t('Submit'),
                                '$cancel'       => t('Cancel'),
@@ -550,7 +577,6 @@ function settings_content(&$a) {
                        $tpl = get_markup_template("settings_oauth_edit.tpl");
                        $o .= replace_macros($tpl, array(
                                '$form_security_token' => get_form_security_token("settings_oauth"),
-                               '$tabs'         => $tabs,
                                '$title'        => t('Add application'),
                                '$submit'       => t('Update'),
                                '$cancel'       => t('Cancel'),
@@ -593,7 +619,6 @@ function settings_content(&$a) {
                        '$consumerkey' => t('Client key starts with'),
                        '$noname'       => t('No name'),
                        '$remove'       => t('Remove authorization'),
-                       '$tabs'         => $tabs,
                        '$apps'         => $r,
                ));
                return $o;
@@ -613,7 +638,6 @@ function settings_content(&$a) {
                $o .= replace_macros($tpl, array(
                        '$form_security_token' => get_form_security_token("settings_addon"),
                        '$title'        => t('Plugin Settings'),
-                       '$tabs'         => $tabs,
                        '$settings_addons' => $settings_addons
                ));
                return $o;
@@ -657,7 +681,6 @@ function settings_content(&$a) {
                        '$form_security_token' => get_form_security_token("settings_connectors"),
                        
                        '$title'        => t('Connector Settings'),
-                       '$tabs'         => $tabs,
 
                        '$diasp_enabled' => $diasp_enabled,
                        '$ostat_enabled' => $ostat_enabled,
@@ -679,6 +702,8 @@ function settings_content(&$a) {
 
                        '$settings_connectors' => $settings_connectors
                ));
+
+               call_hooks('display_settings', $o);
                return $o;
        }
 
@@ -694,8 +719,8 @@ function settings_content(&$a) {
                $allowed_themes_raw = explode(',',$allowed_themes_str);
                $allowed_themes = array();
                if(count($allowed_themes_raw))
-                       foreach($allowed_themes_raw as $x)
-                               if(strlen(trim($x)))
+                       foreach($allowed_themes_raw as $x) 
+                               if(strlen(trim($x)) && is_dir("view/theme/$x"))
                                        $allowed_themes[] = trim($x);
 
                
@@ -732,7 +757,6 @@ function settings_content(&$a) {
                
                $tpl = get_markup_template("settings_display.tpl");
                $o = replace_macros($tpl, array(
-                       '$tabs'         => $tabs,
                        '$ptitle'       => t('Display Settings'),
                        '$form_security_token' => get_form_security_token("settings_display"),
                        '$submit'       => t('Submit'),
@@ -789,10 +813,21 @@ function settings_content(&$a) {
        $expire_photos = get_pconfig(local_user(), 'expire','photos');
        $expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0
 
+       $expire_network_only = get_pconfig(local_user(), 'expire','network_only');
+       $expire_network_only = (($expire_network_only===false)? '0' : $expire_network_only); // default if not set: 0
+
 
        $suggestme = get_pconfig(local_user(), 'system','suggestme');
        $suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0
 
+       $post_newfriend = get_pconfig(local_user(), 'system','post_newfriend');
+       $post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
+
+       $post_joingroup = get_pconfig(local_user(), 'system','post_joingroup');
+       $post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
+
+       $post_profilechange = get_pconfig(local_user(), 'system','post_profilechange');
+       $post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
 
        
        if(! strlen($a->user['timezone']))
@@ -802,21 +837,27 @@ function settings_content(&$a) {
 
        $pageset_tpl = get_markup_template('pagetypes.tpl');
        $pagetype = replace_macros($pageset_tpl,array(
-               '$page_normal'  => array('page-flags', t('Normal Account'), PAGE_NORMAL, 
+               '$page_normal'  => array('page-flags', t('Normal Account Page'), PAGE_NORMAL, 
                                                                        t('This account is a normal personal profile'), 
                                                                        ($a->user['page-flags'] == PAGE_NORMAL)),
                                                                
-               '$page_soapbox'         => array('page-flags', t('Soapbox Account'), PAGE_SOAPBOX, 
+               '$page_soapbox'         => array('page-flags', t('Soapbox Page'), PAGE_SOAPBOX, 
                                                                        t('Automatically approve all connection/friend requests as read-only fans'), 
                                                                        ($a->user['page-flags'] == PAGE_SOAPBOX)),
                                                                        
-               '$page_community'       => array('page-flags', t('Community/Celebrity Account'), PAGE_COMMUNITY, 
+               '$page_community'       => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY, 
                                                                        t('Automatically approve all connection/friend requests as read-write fans'), 
                                                                        ($a->user['page-flags'] == PAGE_COMMUNITY)),
                                                                        
-               '$page_freelove'        => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE, 
+               '$page_freelove'        => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE, 
                                                                        t('Automatically approve all connection/friend requests as friends'), 
                                                                        ($a->user['page-flags'] == PAGE_FREELOVE)),
+
+               '$page_prvgroup'        => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP, 
+                                                                       t('Private forum - approved members only'), 
+                                                                       ($a->user['page-flags'] == PAGE_PRVGROUP)),
+
+
        ));
 
        $noid = get_config('system','no_openid');
@@ -881,6 +922,8 @@ function settings_content(&$a) {
        ));
 
 
+
+
        $invisible = (((! $profile['publish']) && (! $profile['net-publish']))
                ? true : false);
 
@@ -914,17 +957,19 @@ function settings_content(&$a) {
                'notes' => array('expire_notes',  t("Expire personal notes:"), $expire_notes, '', array(t('No'),t('Yes'))),
                'starred' => array('expire_starred',  t("Expire starred posts:"), $expire_starred, '', array(t('No'),t('Yes'))),
                'photos' => array('expire_photos',  t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),          
+               'network_only' => array('expire_network_only',  t("Only expire posts by others:"), $expire_network_only, '', array(t('No'),t('Yes'))),          
        );
 
+       require_once('include/group.php');
+       $group_select = mini_group_select(local_user(),$a->user['def_gid']);
+
        $o .= replace_macros($stpl,array(
-               '$tabs'         => $tabs,
                '$ptitle'       => t('Account Settings'),
 
                '$submit'       => t('Submit'),
                '$baseurl' => $a->get_baseurl(true),
                '$uid' => local_user(),
                '$form_security_token' => get_form_security_token("settings"),
-               
                '$nickname_block' => $prof_addr,
                
                '$h_pass'       => t('Password Settings'),
@@ -951,6 +996,10 @@ function settings_content(&$a) {
                '$suggestme' => $suggestme,
                '$blockwall'=> $blockwall, // array('blockwall', t('Allow friends to post to your profile page:'), !$blockwall, ''),
                '$blocktags'=> $blocktags, // array('blocktags', t('Allow friends to tag your posts:'), !$blocktags, ''),
+
+               '$group_select' => $group_select,
+
+
                '$expire'       => $expire_arr,
 
                '$profile_in_dir' => $profile_in_dir,
@@ -962,6 +1011,10 @@ function settings_content(&$a) {
                
                
                '$h_not'        => t('Notification Settings'),
+               '$activity_options' => t('By default post a status message when:'),
+               '$post_newfriend' => array('post_newfriend',  t('accepting a friend request'), $post_newfriend, ''),
+               '$post_joingroup' => array('post_joingroup',  t('joining a forum/community'), $post_joingroup, ''),
+               '$post_profilechange' => array('post_profilechange',  t('making an <em>interesting</em> profile change'), $post_profilechange, ''),
                '$lbl_not'      => t('Send a notification email when:'),
                '$notify1'      => array('notify1', t('You receive an introduction'), ($notify & NOTIFY_INTRO), NOTIFY_INTRO, ''),
                '$notify2'      => array('notify2', t('Your introductions are confirmed'), ($notify & NOTIFY_CONFIRM), NOTIFY_CONFIRM, ''),
@@ -972,7 +1025,8 @@ function settings_content(&$a) {
                '$notify7'  => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),         
                
                
-               '$h_advn' => t('Advanced Page Settings'),
+               '$h_advn' => t('Advanced Account/Page Type Settings'),
+               '$h_descadvn' => t('Change the behaviour of this account for special situations'),
                '$pagetype' => $pagetype,