]> git.mxchange.org Git - friendica.git/blobdiff - mod/admin.php
added setting for server's sender email address
[friendica.git] / mod / admin.php
index 24069c5d9b5c046e758957673553990ac18b7853..dd188b2ec1ae0dc89ef8c45b0c4872b2d54879d8 100644 (file)
@@ -4,6 +4,8 @@
   * Friendica admin
   */
 require_once("include/remoteupdate.php");
+require_once("include/enotify.php");
+require_once("include/text.php");
 
 
 /**
@@ -221,6 +223,8 @@ function admin_page_summary(&$a) {
                '$accounts' => $accounts,
                '$pending' => Array( t('Pending registrations'), $pending),
                '$version' => Array( t('Version'), FRIENDICA_VERSION),
+               '$platform' => FRIENDICA_PLATFORM,
+               '$codename' => FRIENDICA_CODENAME,
                '$build' =>  get_config('system','build'),
                '$plugins' => Array( t('Active plugins'), $a->plugins )
        ));
@@ -274,7 +278,7 @@ function admin_page_site_post(&$a){
                        $q = sprintf("UPDATE %s SET %s;", $table_name, $upds);
                        $r = q($q);
                        if (!$r) {
-                               notice( "Falied updating '$table_name': " . $db->error );
+                               notice( "Failed updating '$table_name': " . $db->error );
                                goaway($a->get_baseurl(true) . '/admin/site' );
                        }
                }
@@ -304,6 +308,8 @@ function admin_page_site_post(&$a){
        // end relocate
 
        $sitename               =       ((x($_POST,'sitename'))                 ? notags(trim($_POST['sitename']))              : '');
+       $hostname               =       ((x($_POST,'hostname'))                 ? notags(trim($_POST['hostname']))              : '');
+       $sender_email   =       ((x($_POST,'sender_email'))             ? notags(trim($_POST['sender_email']))          : '');
        $banner                 =       ((x($_POST,'banner'))                   ? trim($_POST['banner'])                        : false);
        $info                   =       ((x($_POST,'info'))                     ? trim($_POST['info'])                  : false);
        $language               =       ((x($_POST,'language'))                 ? notags(trim($_POST['language']))              : '');
@@ -350,6 +356,7 @@ function admin_page_site_post(&$a){
        $ostatus_poll_interval  =       ((x($_POST,'ostatus_poll_interval'))    ? intval(trim($_POST['ostatus_poll_interval']))         :  0);
        $diaspora_enabled       =       ((x($_POST,'diaspora_enabled'))         ? True                                          : False);
        $ssl_policy             =       ((x($_POST,'ssl_policy'))               ? intval($_POST['ssl_policy'])                  : 0);
+       $force_ssl              =       ((x($_POST,'force_ssl'))                ? True                                          : False);
        $old_share              =       ((x($_POST,'old_share'))                ? True                                          : False);
        $hide_help              =       ((x($_POST,'hide_help'))                ? True                                          : False);
        $suppress_language      =       ((x($_POST,'suppress_language'))        ? True                                          : False);
@@ -362,7 +369,7 @@ function admin_page_site_post(&$a){
        $basepath               =       ((x($_POST,'basepath'))                 ? notags(trim($_POST['basepath']))              : '');
        $singleuser             =       ((x($_POST,'singleuser'))               ? notags(trim($_POST['singleuser']))            : '');
        $proxy_disabled         =       ((x($_POST,'proxy_disabled'))           ? True                                          : False);
-       $enable_noscrape = ((x($_POST,'enable_noscrape')) ? true : false);
+       $disable_noscrape = ((x($_POST,'disable_noscrape')) ? true : false);
        if($ssl_policy != intval(get_config('system','ssl_policy'))) {
                if($ssl_policy == SSL_POLICY_FULL) {
                        q("update `contact` set
@@ -408,6 +415,8 @@ function admin_page_site_post(&$a){
        set_config('system','poll_interval',$poll_interval);
        set_config('system','maxloadavg',$maxloadavg);
        set_config('config','sitename',$sitename);
+       set_config('config','hostname',$hostname);
+       set_config('config','sender_email', $sender_email);
        set_config('system','suppress_language',$suppress_language);
        if ($banner==""){
                // don't know why, but del_config doesn't work...
@@ -419,9 +428,9 @@ function admin_page_site_post(&$a){
                set_config('system','banner', $banner);
        }
        if ($info=="") {
-           del_config('config','info');
+               del_config('config','info');
        } else {
-           set_config('config','info',$info);
+               set_config('config','info',$info);
        }
        set_config('system','language', $language);
        set_config('system','theme', $theme);
@@ -429,12 +438,12 @@ function admin_page_site_post(&$a){
                del_config('system','mobile-theme');
        } else {
                set_config('system','mobile-theme', $theme_mobile);
-        }
-        if ( $singleuser === '---' ) {
-            del_config('system','singleuser');
-        } else {
-            set_config('system','singleuser', $singleuser);
-        }
+               }
+               if ( $singleuser === '---' ) {
+                       del_config('system','singleuser');
+               } else {
+                       set_config('system','singleuser', $singleuser);
+               }
        set_config('system','maximagesize', $maximagesize);
        set_config('system','max_image_length', $maximagelength);
        set_config('system','jpeg_quality', $jpegimagequality);
@@ -473,10 +482,11 @@ function admin_page_site_post(&$a){
        set_config('system','curl_timeout', $timeout);
        set_config('system','dfrn_only', $dfrn_only);
        set_config('system','ostatus_disabled', $ostatus_disabled);
-        set_config('system','ostatus_poll_interval', $ostatus_poll_interval);
+               set_config('system','ostatus_poll_interval', $ostatus_poll_interval);
        set_config('system','diaspora_enabled', $diaspora_enabled);
        set_config('config','private_addons', $private_addons);
 
+       set_config('system','force_ssl', $force_ssl);
        set_config('system','old_share', $old_share);
        set_config('system','hide_help', $hide_help);
        set_config('system','use_fulltext_engine', $use_fulltext_engine);
@@ -487,7 +497,7 @@ function admin_page_site_post(&$a){
        set_config('system','temppath', $temppath);
        set_config('system','basepath', $basepath);
        set_config('system','proxy_disabled', $proxy_disabled);
-       set_config('system','enable_noscrape', $enable_noscrape);
+       set_config('system','disable_noscrape', $disable_noscrape);
 
        info( t('Site settings updated.') . EOL);
        goaway($a->get_baseurl(true) . '/admin/site' );
@@ -524,32 +534,32 @@ function admin_page_site(&$a) {
                foreach($files as $file) {
                        $f = basename($file);
                        $theme_name = ((file_exists($file . '/experimental')) ?  sprintf("%s - \x28Experimental\x29", $f) : $f);
-            if (file_exists($file . '/mobile')) {
-                $theme_choices_mobile[$f] = $theme_name;
-            }
+                       if (file_exists($file . '/mobile')) {
+                               $theme_choices_mobile[$f] = $theme_name;
+                       }
                else {
-                $theme_choices[$f] = $theme_name;
+                               $theme_choices[$f] = $theme_name;
                        }
                }
-        }
+               }
 
-        /* OStatus conversation poll choices */
-        $ostatus_poll_choices = array(
+               /* OStatus conversation poll choices */
+               $ostatus_poll_choices = array(
                "-2" => t("Never"),
                "-1" => t("At post arrival"),
                "0" => t("Frequently"),
                "60" => t("Hourly"),
                "720" => t("Twice daily"),
                "1440" => t("Daily")
-            );
+                       );
 
-        /* get user names to make the install a personal install of X */
-        $user_names = array();
-        $user_names['---'] = t('Multi user instance');
-        $users = q("SELECT username, nickname FROM `user`");
-        foreach ($users as $user) {
-            $user_names[$user['nickname']] = $user['username'];
-        }
+               /* get user names to make the install a personal install of X */
+               $user_names = array();
+               $user_names['---'] = t('Multi user instance');
+               $users = q("SELECT username, nickname FROM `user`");
+               foreach ($users as $user) {
+                       $user_names[$user['nickname']] = $user['username'];
+               }
 
        /* Banner */
        $banner = get_config('system','banner');
@@ -579,6 +589,9 @@ function admin_page_site(&$a) {
                SSL_POLICY_SELFSIGN => t("Self-signed certificate, use SSL for local links only (discouraged)")
        );
 
+       if ($a->config['hostname'] == "")
+               $a->config['hostname'] = $a->get_hostname();
+
        $t = get_markup_template("admin_site.tpl");
        return replace_macros($t, array(
                '$title' => t('Administration'),
@@ -593,12 +606,15 @@ function admin_page_site(&$a) {
                '$baseurl' => $a->get_baseurl(true),
                // name, label, value, help string, extra data...
                '$sitename'             => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), 'UTF-8'),
+               '$hostname'             => array('hostname', t("Host name"), $a->config['hostname'], ""),
+               '$sender_email'         => array('sender_email', t("Sender Email"), $a->config['sender_email'], ""),
                '$banner'               => array('banner', t("Banner/Logo"), $banner, ""),
                '$info' => array('info',t('Additional Info'), $info, t('For public servers: you can add additional information here that will be listed at dir.friendica.com/siteinfo.')),
                '$language'             => array('language', t("System language"), get_config('system','language'), "", $lang_choices),
                '$theme'                => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
                '$theme_mobile'         => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile-theme'), t("Theme for mobile devices"), $theme_choices_mobile),
                '$ssl_policy'           => array('ssl_policy', t("SSL link policy"), (string) intval(get_config('system','ssl_policy')), t("Determines whether generated links should be forced to use SSL"), $ssl_choices),
+               '$force_ssl'            => array('force_ssl', t("Force SSL"), get_config('system','force_ssl'), t("Force all Non-SSL requests to SSL - Attention: on some systems it could lead to endless loops.")),
                '$old_share'            => array('old_share', t("Old style 'Share'"), get_config('system','old_share'), t("Deactivates the bbcode element 'share' for repeating items.")),
                '$hide_help'            => array('hide_help', t("Hide help entry from navigation menu"), get_config('system','hide_help'), t("Hides the menu entry for the Help pages from the navigation menu. You can still access it calling /help directly.")),
                '$singleuser'           => array('singleuser', t("Single user instance"), get_config('system','singleuser'), t("Make this instance multi-user or single-user for the named user"), $user_names),
@@ -626,9 +642,9 @@ function admin_page_site(&$a) {
                '$no_regfullname'       => array('no_regfullname', t("Fullname check"), !get_config('system','no_regfullname'), t("Force users to register with a space between firstname and lastname in Full name, as an antispam measure")),
                '$no_utf'               => array('no_utf', t("UTF-8 Regular expressions"), !get_config('system','no_utf'), t("Use PHP UTF8 regular expressions")),
                '$no_community_page'    => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), t("Display a Community page showing all recent public postings on this site.")),
-               '$ostatus_disabled'     => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28StatusNet, GNU Social etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),     
+               '$ostatus_disabled'     => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disabled'), t("Provide built-in OStatus \x28StatusNet, GNU Social etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed.")),
                '$ostatus_poll_interval'        => array('ostatus_poll_interval', t("OStatus conversation completion interval"), (string) intval(get_config('system','ostatus_poll_interval')), t("How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."), $ostatus_poll_choices),
-               '$diaspora_enabled'     => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),     
+               '$diaspora_enabled'     => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), t("Provide built-in Diaspora network compatibility.")),
                '$dfrn_only'            => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), t("All contacts must use Friendica protocols. All other built-in communication protocols disabled.")),
                '$verifyssl'            => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), t("If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites.")),
                '$proxyuser'            => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
@@ -650,8 +666,8 @@ function admin_page_site(&$a) {
 
                '$relocate_url'     => array('relocate_url', t("New base url"), $a->get_baseurl(), "Change base url for this server. Sends relocate message to all DFRN contacts of all users."),
 
-               '$enable_noscrape'=> array('enable_noscrape', t("Enable noscrape"), get_config('system','enable_noscrape'), t("The noscrape feature speeds up directory submissions by using JSON data instead of HTML scraping.")),
-    '$form_security_token' => get_form_security_token("admin_site")
+               '$disable_noscrape'=> array('disable_noscrape', t("Disable noscrape"), get_config('system','disable_noscrape'), t("The noscrape feature speeds up directory submissions by using JSON data instead of HTML scraping. Disabling it will cause higher load on your server and the directory server.")),
+       '$form_security_token' => get_form_security_token("admin_site")
 
        ));
 
@@ -744,39 +760,61 @@ function admin_page_dbsync(&$a) {
 function admin_page_users_post(&$a){
        $pending = ( x($_POST, 'pending') ? $_POST['pending'] : Array() );
        $users = ( x($_POST, 'user') ? $_POST['user'] : Array() );
-       $nu_name = ( x($_POST, 'new_user_name') ? $_POST['new_user_name'] : ''); 
-  $nu_nickname = ( x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : ''); 
-  $nu_email = ( x($_POST, 'new_user_email') ? $_POST['new_user_email'] : '');
-
-  check_form_security_token_redirectOnErr('/admin/users', 'admin_users');
-
-  if (!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) { 
-      require_once('include/user.php'); 
-      require_once('include/email.php'); 
-      $result = create_user( array('username'=>$nu_name, 'email'=>$nu_email, 'nickname'=>$nu_nickname, 'verified'=>1)  ); 
-      if(! $result['success']) { 
-                   notice($result['message']); 
-                   return; 
-      } 
-      $nu = $result['user']; 
-      $email_tpl = get_intltext_template("register_adminadd_eml.tpl"); 
-      $email_tpl = replace_macros($email_tpl, array( 
-                   '$sitename' => $a->config['sitename'], 
-                   '$siteurl' =>  $a->get_baseurl(), 
-                   '$username' => $nu['username'], 
-                   '$email' => $nu['email'], 
-                   '$password' => $result['password'], 
-                   '$uid' => $nu['uid'] )); 
-      $res = mail($nu['email'], email_header_encode( sprintf( t('Registration details for %s'), $a->config['sitename']),'UTF-8'), 
-                   $email_tpl,  
-                   'From: ' . 'Administrator' . '@' . $_SERVER['SERVER_NAME'] . "\n" 
-                   . 'Content-type: text/plain; charset=UTF-8' . "\n" 
-                   . 'Content-transfer-encoding: 8bit' ); 
-      if ($res) { 
-                   info( t('Registration successful. Email send to user').EOL ); 
-      } 
-  }
+       $nu_name = ( x($_POST, 'new_user_name') ? $_POST['new_user_name'] : '');
+       $nu_nickname = ( x($_POST, 'new_user_nickname') ? $_POST['new_user_nickname'] : '');
+       $nu_email = ( x($_POST, 'new_user_email') ? $_POST['new_user_email'] : '');
+
+       check_form_security_token_redirectOnErr('/admin/users', 'admin_users');
+
+       if (!($nu_name==="") && !($nu_email==="") && !($nu_nickname==="")) {
+               require_once('include/user.php');
+
+               $result = create_user( array('username'=>$nu_name, 'email'=>$nu_email, 'nickname'=>$nu_nickname, 'verified'=>1)  );
+               if(! $result['success']) {
+                       notice($result['message']);
+                       return;
+               }
+               $nu = $result['user'];
+               $preamble = deindent(t('
+                       Dear %1$s,
+                               the administrator of %2$s has set up an account for you.'));
+               $body = deindent(t('
+                       The login details are as follows:
+
+                       Site Location:  %1$s
+                       Login Name:             %2$s
+                       Password:               %3$s
+
+                       You may change your password from your account "Settings" page after logging
+                       in.
+
+                       Please take a few moments to review the other account settings on that page.
+
+                       You may also wish to add some basic information to your default profile
+                       (on the "Profiles" page) so that other people can easily find you.
+
+                       We recommend setting your full name, adding a profile photo,
+                       adding some profile "keywords" (very useful in making new friends) - and
+                       perhaps what country you live in; if you do not wish to be more specific
+                       than that.
+
+                       We fully respect your right to privacy, and none of these items are necessary.
+                       If you are new and do not know anybody here, they may help
+                       you to make some new and interesting friends.
+
+                       Thank you and welcome to %4$s.'));
+
+               $preamble = sprintf($preamble, $nu['username'], $a->config['sitename']);
+               $body = sprintf($body, $a->get_baseurl(), $nu['email'], $result['password'], $a->config['sitename']);
+
+               notification(array(
+                       'type' => "SYSTEM_EMAIL",
+                       'to_email' => $nu['email'],
+                       'subject'=> sprintf( t('Registration details for %s'), $a->config['sitename']),
+                       'preamble'=> $preamble,
+                       'body' => $body));
+
+       }
 
        if (x($_POST,'page_users_block')){
                foreach($users as $uid){
@@ -825,7 +863,7 @@ function admin_page_users(&$a){
                }
                switch($a->argv[2]){
                        case "delete":{
-                check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
+                               check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
                                // delete user
                                require_once("include/Contact.php");
                                user_remove($uid);
@@ -833,7 +871,7 @@ function admin_page_users(&$a){
                                notice( sprintf(t("User '%s' deleted"), $user[0]['username']) . EOL);
                        }; break;
                        case "block":{
-                check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
+                               check_form_security_token_redirectOnErr('/admin/users', 'admin_users', 't');
                                q("UPDATE `user` SET `blocked`=%d WHERE `uid`=%s",
                                        intval( 1-$user[0]['blocked'] ),
                                        intval( $uid )
@@ -889,7 +927,7 @@ function admin_page_users(&$a){
                        t('Normal Account'),
                        t('Soapbox Account'),
                        t('Community/Celebrity Account'),
-                        t('Automatic Friend Account')
+                                               t('Automatic Friend Account')
                );
                $e['page-flags'] = $accounts[$e['page-flags']];
                $e['register_date'] = relative_date($e['register_date']);
@@ -965,7 +1003,7 @@ function admin_page_users(&$a){
                '$users' => $users,
                '$newusername'  => array('new_user_name', t("Name"), '', t("Name of the new user.")),
                '$newusernickname'  => array('new_user_nickname', t("Nickname"), '', t("Nickname of the new user.")),
-               '$newuseremail'  => array('new_user_email', t("Email"), '', t("Email address of the new user.")),
+               '$newuseremail'  => array('new_user_email', t("Email"), '', t("Email address of the new user."), '', '', 'email'),
        ));
        $o .= paginate($a);
        return $o;
@@ -1094,7 +1132,7 @@ function admin_page_plugins(&$a){
                '$baseurl' => $a->get_baseurl(true),
                '$function' => 'plugins',
                '$plugins' => $plugins,
-        '$form_security_token' => get_form_security_token("admin_themes"),
+               '$form_security_token' => get_form_security_token("admin_themes"),
        ));
 }
 
@@ -1179,9 +1217,11 @@ function admin_page_themes(&$a){
                foreach($files as $file) {
                        $f = basename($file);
                        $is_experimental = intval(file_exists($file . '/experimental'));
-                       $is_supported = 1-(intval(file_exists($file . '/unsupported'))); // Is not used yet
+                       $is_supported = 1-(intval(file_exists($file . '/unsupported')));
                        $is_allowed = intval(in_array($f,$allowed_themes));
-                       $themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
+
+                       if ($is_allowed OR $is_supported OR get_config("system", "show_unsupported_themes"))
+                               $themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
                }
        }
 
@@ -1296,7 +1336,7 @@ function admin_page_themes(&$a){
                '$plugins' => $xthemes,
                '$experimental' => t('[Experimental]'),
                '$unsupported' => t('[Unsupported]'),
-        '$form_security_token' => get_form_security_token("admin_themes"),
+               '$form_security_token' => get_form_security_token("admin_themes"),
        ));
 }
 
@@ -1309,7 +1349,7 @@ function admin_page_themes(&$a){
 
 function admin_page_logs_post(&$a) {
        if (x($_POST,"page_logs")) {
-        check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
+               check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
 
                $logfile                =       ((x($_POST,'logfile'))          ? notags(trim($_POST['logfile']))       : '');
                $debugging              =       ((x($_POST,'debugging'))        ? true                                                          : false);
@@ -1348,7 +1388,7 @@ function admin_page_logs(&$a){
        $data = '';
 
        if(!file_exists($f)) {
-               $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is 
+               $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is
 readable.");
        }
        else {
@@ -1388,7 +1428,7 @@ readable.");
                '$logfile'                      => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendica top-level directory.")),
                '$loglevel'             => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
 
-        '$form_security_token' => get_form_security_token("admin_logs"),
+               '$form_security_token' => get_form_security_token("admin_logs"),
        ));
 }