]> git.mxchange.org Git - friendica.git/blobdiff - mod/settings.php
simplify by making Smarty include directives behave like Friendica native ones
[friendica.git] / mod / settings.php
index 40fa55eeaae08a13c97cb2d55ab3f629ed18f1fa..dbdd40bc369294c045ac28f88351301e1205185d 100644 (file)
@@ -15,32 +15,13 @@ function get_theme_config_file($theme){
 }
 
 function settings_init(&$a) {
-       // These lines provide the javascript needed by the acl selector
-
-       $a->page['htmlhead'] .= "<script> var ispublic = '" . t('everybody') . "';" ;
-
-       $a->page['htmlhead'] .= <<< EOT
-
-       $(document).ready(function() {
 
-               $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
-                       var selstr;
-                       $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
-                               selstr = $(this).text();
-                               $('#jot-perms-icon').removeClass('unlock').addClass('lock');
-                               $('#jot-public').hide();
-                       });
-                       if(selstr == null) { 
-                               $('#jot-perms-icon').removeClass('lock').addClass('unlock');
-                               $('#jot-public').show();
-                       }
-
-               }).trigger('change');
-
-       });
+       // These lines provide the javascript needed by the acl selector
 
-       </script>
-EOT;
+       $tpl = get_markup_template("settings-head.tpl");
+       $a->page['htmlhead'] .= replace_macros($tpl,array(
+               '$ispublic' => t('everybody')
+       ));
 
 
 
@@ -50,6 +31,11 @@ EOT;
                        'url'   => $a->get_baseurl(true).'/settings',
                        'selected'      => (($a->argc == 1)?'active':''),
                ),      
+               array(
+                       'label' => t('Additional features'),
+                       'url'   => $a->get_baseurl(true).'/settings/features',
+                       'selected'      => (($a->argc > 1) && ($a->argv[1] === 'features') ? 'active' : ''),
+               ),
                array(
                        'label' => t('Display settings'),
                        'url'   => $a->get_baseurl(true).'/settings/display',
@@ -86,6 +72,7 @@ EOT;
        $tabtpl = get_markup_template("generic_links_widget.tpl");
        $a->page['aside'] = replace_macros($tabtpl, array(
                '$title' => t('Settings'),
+               '$class' => 'settings-widget',
                '$items' => $tabs,
        ));
 
@@ -222,6 +209,7 @@ function settings_post(&$a) {
                                        intval($mail_pubmail),
                                        intval(local_user())
                                );
+                               logger("mail: updating mailaccount. Response: ".print_r($r, true));
                                $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1",
                                        intval(local_user())
                                );
@@ -249,22 +237,38 @@ function settings_post(&$a) {
                return;
        }
        
-       if(($a->argc > 1) && ($a->argv[1] == 'display')) {
+       if(($a->argc > 1) && ($a->argv[1] === 'features')) {
+               check_form_security_token_redirectOnErr('/settings/features', 'settings_features');
+               foreach($_POST as $k => $v) {
+                       if(strpos($k,'feature_') === 0) {
+                               set_pconfig(local_user(),'feature',substr($k,8),((intval($v)) ? 1 : 0));
+                       }
+               }
+               info( t('Features updated') . EOL);
+               return;
+       }
+
+       if(($a->argc > 1) && ($a->argv[1] === 'display')) {
                
                check_form_security_token_redirectOnErr('/settings/display', 'settings_display');
 
                $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme']))  : $a->user['theme']);
+               $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme']))  : '');
                $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile'])  : 0);  
                $browser_update   = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0);
                $browser_update   = $browser_update * 1000;
                if($browser_update < 10000)
-                       $browser_update = 40000;
+                       $browser_update = 10000;
 
                $itemspage_network   = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40);
                if($itemspage_network > 100)
-                                       $itemspage_network = 40;
+                       $itemspage_network = 100;
 
 
+               if($mobile_theme !== '') {
+                       set_pconfig(local_user(),'system','mobile_theme',$mobile_theme);
+               }
+
                set_pconfig(local_user(),'system','update_interval', $browser_update);
                set_pconfig(local_user(),'system','itemspage_network', $itemspage_network);
                set_pconfig(local_user(),'system','no_smilies',$nosmile);
@@ -337,8 +341,7 @@ function settings_post(&$a) {
        $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);
@@ -372,6 +375,8 @@ function settings_post(&$a) {
                $notify += intval($_POST['notify6']);
        if(x($_POST,'notify7'))
                $notify += intval($_POST['notify7']);
+       if(x($_POST,'notify8'))
+               $notify += intval($_POST['notify8']);
 
        $email_changed = false;
 
@@ -434,6 +439,7 @@ 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);
@@ -443,7 +449,7 @@ function settings_post(&$a) {
 
        if($page_flags == PAGE_PRVGROUP) {
                $hidewall = 1;
-               if((! str_contact_allow) && (! str_group_allow) && (! str_contact_deny) && (! $str_group_deny)) {
+               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 . '>';
@@ -513,10 +519,11 @@ function settings_post(&$a) {
        require_once('include/profile_update.php');
        profile_change();
 
-       $_SESSION['theme'] = $theme;
+       //$_SESSION['theme'] = $theme;
        if($email_changed && $a->config['register_policy'] == REGISTER_VERIFY) {
 
                // FIXME - set to un-verified, blocked and redirect to logout
+               // Why? Are we verifying people or email addresses?
 
        }
 
@@ -622,6 +629,7 @@ function settings_content(&$a) {
                return $o;
                
        }
+
        if(($a->argc > 1) && ($a->argv[1] === 'addon')) {
                $settings_addons = "";
                
@@ -641,6 +649,29 @@ function settings_content(&$a) {
                return $o;
        }
 
+       if(($a->argc > 1) && ($a->argv[1] === 'features')) {
+               
+               $arr = array();
+               $features = get_features();
+               foreach($features as $fname => $fdata) {
+                       $arr[$fname] = array();
+                       $arr[$fname][0] = $fdata[0];
+                       foreach(array_slice($fdata,1) as $f) {
+                               $arr[$fname][1][] = array('feature_' .$f[0],$f[1],((intval(get_pconfig(local_user(),'feature',$f[0]))) ? "1" : ''),$f[2],array(t('Off'),t('On')));
+                       }
+               }
+
+
+               $tpl = get_markup_template("settings_features.tpl");
+               $o .= replace_macros($tpl, array(
+                       '$form_security_token' => get_form_security_token("settings_features"),
+                       '$title'        => t('Additional Features'),
+                       '$features' => $arr,
+                       '$submit'   => t('Submit'),
+               ));
+               return $o;
+       }
+
        if(($a->argc > 1) && ($a->argv[1] === 'connectors')) {
 
                $settings_connectors = "";
@@ -675,6 +706,15 @@ function settings_content(&$a) {
 
 
                $tpl = get_markup_template("settings_connectors.tpl");
+
+               if(! service_class_allows(local_user(),'email_connect')) {
+                       $mail_disabled_message = upgrade_bool_message();
+               }
+               else {
+                       $mail_disabled_message = (($mail_disabled) ? t('Email access is disabled on this site.') : '');
+               }
+       
+
                $o .= replace_macros($tpl, array(
                        '$form_security_token' => get_form_security_token("settings_connectors"),
                        
@@ -686,15 +726,15 @@ function settings_content(&$a) {
                        '$h_imap' => t('Email/Mailbox Setup'),
                        '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."),
                        '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''),
-                       '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''),
+                       '$mail_disabled' => $mail_disabled_message,
                        '$mail_server'  => array('mail_server',  t('IMAP server name:'), $mail_server, ''),
                        '$mail_port'    => array('mail_port',    t('IMAP port:'), $mail_port, ''),
                        '$mail_ssl'             => array('mail_ssl',     t('Security:'), strtoupper($mail_ssl), '', array( 'notls'=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')),
                        '$mail_user'    => array('mail_user',    t('Email login name:'), $mail_user, ''),
                        '$mail_pass'    => array('mail_pass',    t('Email password:'), '', ''),
-                       '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'),
+                       '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), $mail_replyto, 'Optional'),
                        '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''),
-                       '$mail_action'  => array('mail_action',  t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))),
+                       '$mail_action'  => array('mail_action',  t('Action after import:'), $mail_action, '', array(0=>t('None'), /*1=>t('Delete'),*/ 2=>t('Mark as seen'), 3=>t('Move to folder'))),
                        '$mail_movetofolder'    => array('mail_movetofolder',    t('Move to folder:'), $mail_movetofolder, ''),
                        '$submit' => t('Submit'),
 
@@ -712,6 +752,9 @@ function settings_content(&$a) {
                $default_theme = get_config('system','theme');
                if(! $default_theme)
                        $default_theme = 'default';
+               $default_mobile_theme = get_config('system','mobile-theme');
+               if(! $mobile_default_theme)
+                       $mobile_default_theme = 'none';
 
                $allowed_themes_str = get_config('system','allowed_themes');
                $allowed_themes_raw = explode(',',$allowed_themes_str);
@@ -723,19 +766,27 @@ function settings_content(&$a) {
 
                
                $themes = array();
+               $mobile_themes = array("---" => t('No special theme for mobile devices'));
                $files = glob('view/theme/*');
                if($allowed_themes) {
                        foreach($allowed_themes as $th) {
                                $f = $th;
                                $is_experimental = file_exists('view/theme/' . $th . '/experimental');
                                $unsupported = file_exists('view/theme/' . $th . '/unsupported');
+                               $is_mobile = file_exists('view/theme/' . $th . '/mobile');
                                if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){ 
                                        $theme_name = (($is_experimental) ?  sprintf("%s - \x28Experimental\x29", $f) : $f);
-                                       $themes[$f]=$theme_name;
+                                       if($is_mobile) {
+                                               $mobile_themes[$f]=$theme_name;
+                                       }
+                                       else {
+                                               $themes[$f]=$theme_name;
+                                       }
                                }
                        }
                }
                $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']);
+               $mobile_theme_selected = (!x($_SESSION,'mobile-theme')? $default_mobile_theme : $_SESSION['mobile-theme']);
                
                $browser_update = intval(get_pconfig(local_user(), 'system','update_interval'));
                $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds
@@ -761,14 +812,20 @@ function settings_content(&$a) {
                        '$baseurl' => $a->get_baseurl(true),
                        '$uid' => local_user(),
                
-                       '$theme'        => array('theme', t('Display Theme:'), $theme_selected, '', $themes),
+                       '$theme'        => array('theme', t('Display Theme:'), $theme_selected, '', $themes, true),
+                       '$mobile_theme' => array('mobile_theme', t('Mobile Theme:'), $mobile_theme_selected, '', $mobile_themes, false),
                        '$ajaxint'   => array('browser_update',  t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')),
-                       '$itemspage_network'   => array('itemspage_network',  t("Number of items to display on the network page:"), $itemspage_network, t('Maximum of 100 items')),
+                       '$itemspage_network'   => array('itemspage_network',  t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')),
                        '$nosmile'      => array('nosmile', t("Don't show emoticons"), $nosmile, ''),
                        
                        '$theme_config' => $theme_config,
                ));
                
+               $tpl = get_markup_template("settings_display_end.tpl");
+               $a->page['end'] .= replace_macros($tpl, array(
+                       '$theme'        => array('theme', t('Display Theme:'), $theme_selected, '', $themes)
+               ));
+
                return $o;
        }
        
@@ -811,6 +868,9 @@ 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
@@ -831,28 +891,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, 
+       $pagetype = replace_macros($pageset_tpl, array(
+               '$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'), PAGE_PRVGROUP, 
-                                                                       t('Private forum - approved members only [Experimental]'), 
+               '$page_prvgroup'        => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP, 
+                                                                       t('Private forum - approved members only'), 
                                                                        ($a->user['page-flags'] == PAGE_PRVGROUP)),
 
-               '$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
 
        ));
 
@@ -917,18 +976,12 @@ function settings_content(&$a) {
 
        ));
 
-
-
-
        $invisible = (((! $profile['publish']) && (! $profile['net-publish']))
                ? true : false);
 
        if($invisible)
                info( t('Profile is <strong>not published</strong>.') . EOL );
 
-       
-
-
 
        $subdir = ((strlen($a->get_path())) ? '<br />' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : '');
 
@@ -953,12 +1006,13 @@ 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(
+       $o .= replace_macros($stpl, array(
                '$ptitle'       => t('Account Settings'),
 
                '$submit'       => t('Submit'),
@@ -1018,22 +1072,13 @@ function settings_content(&$a) {
                '$notify5'      => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''),
                '$notify6'  => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''),          
                '$notify7'  => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),         
+               '$notify8'  => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''),           
                
                
-               '$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,
                
-
-               
-               
-
-               
-
-
-
-
-               
-
        ));
 
        call_hooks('settings_form',$o);