X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fadmin.php;h=0aa90237380980d474f99f3f2b761db5df52988e;hb=21c63e8b650ff599ca48c94c01c6583dc88f96f3;hp=5c9395478478ae791dfb9106feff6b40d458df0f;hpb=1388b7ac27a82feaef513f7bdabb9ee41be9ebd3;p=friendica.git diff --git a/mod/admin.php b/mod/admin.php index 5c93954784..0aa9023738 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -4,6 +4,8 @@ * Friendica admin */ require_once("include/remoteupdate.php"); +require_once("include/enotify.php"); +require_once("include/text.php"); /** @@ -33,7 +35,7 @@ function admin_post(&$a){ admin_page_users_post($a); break; case 'plugins': - if ($a->argc > 2 && + if ($a->argc > 2 && is_file("addon/".$a->argv[2]."/".$a->argv[2].".php")){ @include_once("addon/".$a->argv[2]."/".$a->argv[2].".php"); if(function_exists($a->argv[2].'_plugin_admin_post')) { @@ -119,13 +121,16 @@ function admin_content(&$a) { } $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); + $aside['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe'); + $aside['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger'); $t = get_markup_template("admin_aside.tpl"); $a->page['aside'] .= replace_macros( $t, array( - '$admin' => $aside, + '$admin' => $aside, '$admtxt' => t('Admin'), '$plugadmtxt' => t('Plugin Features'), '$logtxt' => t('Logs'), + '$diagnosticstxt' => t('diagnostics'), '$h_pending' => t('User registrations waiting for confirmation'), '$admurl'=> $a->get_baseurl(true)."/admin/" )); @@ -168,13 +173,13 @@ function admin_content(&$a) { } if(is_ajax()) { - echo $o; + echo $o; killme(); return ''; } else { return $o; } -} +} /** @@ -221,6 +226,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 ) )); @@ -242,68 +249,73 @@ function admin_page_site_post(&$a){ if (x($_POST,'relocate') && x($_POST,'relocate_url') && $_POST['relocate_url']!=""){ $new_url = $_POST['relocate_url']; $new_url = rtrim($new_url,"/"); - + $parsed = @parse_url($new_url); if (!$parsed || (!x($parsed,'host') || !x($parsed,'scheme'))) { notice(t("Can not parse base url. Must have at least ://")); goaway($a->get_baseurl(true) . '/admin/site' ); } - + /* steps: * replace all "baseurl" to "new_url" in config, profile, term, items and contacts * send relocate for every local user * */ - + $old_url = $a->get_baseurl(true); - + function update_table($table_name, $fields, $old_url, $new_url) { global $db, $a; - + $dbold = dbesc($old_url); $dbnew = dbesc($new_url); - + $upd = array(); foreach ($fields as $f) { $upd[] = "`$f` = REPLACE(`$f`, '$dbold', '$dbnew')"; } - + $upds = implode(", ", $upd); - - - + + + $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' ); } } - + // update tables update_table("profile", array('photo', 'thumb'), $old_url, $new_url); update_table("term", array('url'), $old_url, $new_url); update_table("contact", array('photo','thumb','micro','url','nurl','request','notify','poll','confirm','poco'), $old_url, $new_url); + update_table("unique_contacts", array('url'), $old_url, $new_url); update_table("item", array('owner-link','owner-avatar','author-name','author-link','author-avatar','body','plink','tag'), $old_url, $new_url); // update config $a->set_baseurl($new_url); set_config('system','url',$new_url); - + // send relocate $users = q("SELECT uid FROM user WHERE account_removed = 0 AND account_expired = 0"); - + foreach ($users as $user) { proc_run('php', 'include/notifier.php', 'relocate', $user['uid']); } info("Relocation started. Could take a while to complete."); - + goaway($a->get_baseurl(true) . '/admin/site' ); } // 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); + $shortcut_icon = ((x($_POST,'shortcut_icon')) ? notags(trim($_POST['shortcut_icon'])) : ''); + $touch_icon = ((x($_POST,'touch_icon')) ? notags(trim($_POST['touch_icon'])) : ''); $info = ((x($_POST,'info')) ? trim($_POST['info']) : false); $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : ''); @@ -335,7 +347,8 @@ function admin_page_site_post(&$a){ $no_openid = !((x($_POST,'no_openid')) ? True : False); $no_regfullname = !((x($_POST,'no_regfullname')) ? True : False); $no_utf = !((x($_POST,'no_utf')) ? True : False); - $no_community_page = !((x($_POST,'no_community_page')) ? True : False); + $community_page_style = ((x($_POST,'community_page_style')) ? intval(trim($_POST['community_page_style'])) : 0); + $max_author_posts_community_page = ((x($_POST,'max_author_posts_community_page')) ? intval(trim($_POST['max_author_posts_community_page'])) : 0); $verifyssl = ((x($_POST,'verifyssl')) ? True : False); $proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['proxyuser'])) : ''); @@ -346,22 +359,29 @@ function admin_page_site_post(&$a){ $maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50); $dfrn_only = ((x($_POST,'dfrn_only')) ? True : False); $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False); - $ostatus_poll_interval = ((x($_POST,'ostatus_poll_interval')) ? intval(trim($_POST['ostatus_poll_interval'])) : 0); + $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); + $suppress_tags = ((x($_POST,'suppress_tags')) ? True : False); $use_fulltext_engine = ((x($_POST,'use_fulltext_engine')) ? True : False); $itemcache = ((x($_POST,'itemcache')) ? notags(trim($_POST['itemcache'])) : ''); $itemcache_duration = ((x($_POST,'itemcache_duration')) ? intval($_POST['itemcache_duration']) : 0); + $max_comments = ((x($_POST,'max_comments')) ? intval($_POST['max_comments']) : 0); $lockpath = ((x($_POST,'lockpath')) ? notags(trim($_POST['lockpath'])) : ''); $temppath = ((x($_POST,'temppath')) ? notags(trim($_POST['temppath'])) : ''); $basepath = ((x($_POST,'basepath')) ? notags(trim($_POST['basepath'])) : ''); $singleuser = ((x($_POST,'singleuser')) ? notags(trim($_POST['singleuser'])) : ''); + $proxy_disabled = ((x($_POST,'proxy_disabled')) ? True : False); + $old_pager = ((x($_POST,'old_pager')) ? True : False); + $only_tag_search = ((x($_POST,'only_tag_search')) ? True : False); + if($ssl_policy != intval(get_config('system','ssl_policy'))) { if($ssl_policy == SSL_POLICY_FULL) { - q("update `contact` set + q("update `contact` set `url` = replace(`url` , 'http:' , 'https:'), `photo` = replace(`photo` , 'http:' , 'https:'), `thumb` = replace(`thumb` , 'http:' , 'https:'), @@ -373,14 +393,14 @@ function admin_page_site_post(&$a){ `poco` = replace(`poco` , 'http:' , 'https:') where `self` = 1" ); - q("update `profile` set + q("update `profile` set `photo` = replace(`photo` , 'http:' , 'https:'), `thumb` = replace(`thumb` , 'http:' , 'https:') where 1 " ); } elseif($ssl_policy == SSL_POLICY_SELFSIGN) { - q("update `contact` set + q("update `contact` set `url` = replace(`url` , 'https:' , 'http:'), `photo` = replace(`photo` , 'https:' , 'http:'), `thumb` = replace(`thumb` , 'https:' , 'http:'), @@ -392,7 +412,7 @@ function admin_page_site_post(&$a){ `poco` = replace(`poco` , 'https:' , 'http:') where `self` = 1" ); - q("update `profile` set + q("update `profile` set `photo` = replace(`photo` , 'https:' , 'http:'), `thumb` = replace(`thumb` , 'https:' , 'http:') where 1 " @@ -404,7 +424,12 @@ 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); + set_config('system','suppress_tags',$suppress_tags); + set_config('system','shortcut_icon',$shortcut_icon); + set_config('system','touch_icon',$touch_icon); if ($banner==""){ // don't know why, but del_config doesn't work... q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1", @@ -415,9 +440,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); @@ -425,12 +450,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); @@ -461,7 +486,8 @@ function admin_page_site_post(&$a){ set_config('system','block_extended_register', $no_multi_reg); set_config('system','no_openid', $no_openid); set_config('system','no_regfullname', $no_regfullname); - set_config('system','no_community_page', $no_community_page); + set_config('system','community_page_style', $community_page_style); + set_config('system','max_author_posts_community_page', $max_author_posts_community_page); set_config('system','no_utf', $no_utf); set_config('system','verifyssl', $verifyssl); set_config('system','proxyuser', $proxyuser); @@ -469,18 +495,23 @@ 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); set_config('system','itemcache', $itemcache); set_config('system','itemcache_duration', $itemcache_duration); + set_config('system','max_comments', $max_comments); set_config('system','lockpath', $lockpath); set_config('system','temppath', $temppath); set_config('system','basepath', $basepath); + set_config('system','proxy_disabled', $proxy_disabled); + set_config('system','old_pager', $old_pager); + set_config('system','only_tag_search', $only_tag_search); info( t('Site settings updated.') . EOL); goaway($a->get_baseurl(true) . '/admin/site' ); @@ -517,41 +548,53 @@ 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( - "-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']; - } + } + + /* Community page style */ + $community_page_style_choices = array( + CP_NO_COMMUNITY_PAGE => t("No community page"), + CP_USERS_ON_SERVER => t("Public postings from users of this site"), + CP_GLOBAL_COMMUNITY => t("Global community page") + ); + + /* 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']; + } /* Banner */ $banner = get_config('system','banner'); - if($banner == false) + if($banner == false) $banner = 'logoFriendica'; $banner = htmlspecialchars($banner); $info = get_config('config','info'); $info = htmlspecialchars($info); + // Automatically create temporary paths + get_temppath(); + get_lockpath(); + get_itemcachepath(); + //echo "
"; var_dump($lang_choices); die("
"); /* Register policy */ @@ -559,7 +602,7 @@ function admin_page_site(&$a) { REGISTER_CLOSED => t("Closed"), REGISTER_APPROVE => t("Requires approval"), REGISTER_OPEN => t("Open") - ); + ); $ssl_choices = array( SSL_POLICY_NONE => t("No SSL policy, links will track page SSL state"), @@ -567,6 +610,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'), @@ -581,12 +627,17 @@ 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'], "The email address your server shall use to send notification emails from.", "", "", "email"), '$banner' => array('banner', t("Banner/Logo"), $banner, ""), + '$shortcut_icon' => array('shortcut_icon', t("Shortcut icon"), get_config('system','shortcut_icon'), "Link to an icon that will be used for browsers."), + '$touch_icon' => array('touch_icon', t("Touch icon"), get_config('system','touch_icon'), "Link to an icon that will be used for tablets and mobiles."), '$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 - change theme settings"), $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), @@ -613,10 +664,11 @@ function admin_page_site(&$a) { '$no_openid' => array('no_openid', t("OpenID support"), !get_config('system','no_openid'), t("OpenID support for registration and logins.")), '$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.")), + '$community_page_style' => array('community_page_style', t("Community Page Style"), get_config('system','community_page_style'), t("Type of community page to show. 'Global community' shows every public posting from an open distributed network that arrived on this server."), $community_page_style_choices), + '$max_author_posts_community_page' => array('max_author_posts_community_page', t("Posts per user on community page"), get_config('system','max_author_posts_community_page'), t("The maximum number of posts per user on the community page. (Not valid for 'Global Community')")), + '$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'), ""), @@ -628,15 +680,19 @@ function admin_page_site(&$a) { '$use_fulltext_engine' => array('use_fulltext_engine', t("Use MySQL full text engine"), get_config('system','use_fulltext_engine'), t("Activates the full text engine. Speeds up search - but can only search for four and more characters.")), '$suppress_language' => array('suppress_language', t("Suppress Language"), get_config('system','suppress_language'), t("Suppress language information in meta information about a posting.")), + '$suppress_tags' => array('suppress_tags', t("Suppress Tags"), get_config('system','suppress_tags'), t("Suppress showing a list of hashtags at the end of the posting.")), '$itemcache' => array('itemcache', t("Path to item cache"), get_config('system','itemcache'), "The item caches buffers generated bbcode and external images."), - '$itemcache_duration' => array('itemcache_duration', t("Cache duration in seconds"), get_config('system','itemcache_duration'), t("How long should the cache files be hold? Default value is 86400 seconds (One day).")), + '$itemcache_duration' => array('itemcache_duration', t("Cache duration in seconds"), get_config('system','itemcache_duration'), t("How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1.")), + '$max_comments' => array('max_comments', t("Maximum numbers of comments per post"), get_config('system','max_comments'), t("How much comments should be shown for each post? Default value is 100.")), '$lockpath' => array('lockpath', t("Path for lock file"), get_config('system','lockpath'), "The lock file is used to avoid multiple pollers at one time. Only define a folder here."), '$temppath' => array('temppath', t("Temp path"), get_config('system','temppath'), "If you have a restricted system where the webserver can't access the system temp path, enter another path here."), '$basepath' => array('basepath', t("Base path to installation"), get_config('system','basepath'), "If the system cannot detect the correct path to your installation, enter the correct path here. This setting should only be set if you are using a restricted system and symbolic links to your webroot."), - + '$proxy_disabled' => array('proxy_disabled', t("Disable picture proxy"), get_config('system','proxy_disabled'), t("The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith.")), + '$old_pager' => array('old_pager', t("Enable old style pager"), get_config('system','old_pager'), t("The old style pager has page numbers but slows down massively the page speed.")), + '$only_tag_search' => array('only_tag_search', t("Only search in tags"), get_config('system','only_tag_search'), t("On large systems the text search can slow down the system extremely.")), + '$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."), - - '$form_security_token' => get_form_security_token("admin_site"), + '$form_security_token' => get_form_security_token("admin_site") )); @@ -656,23 +712,37 @@ function admin_page_dbsync(&$a) { goaway($a->get_baseurl(true) . '/admin/dbsync'); } - if($a->argc > 2 && intval($a->argv[2])) { + if(($a->argc > 2) AND (intval($a->argv[2]) OR ($a->argv[2] === 'check'))) { + require_once("include/dbstructure.php"); + $retval = update_structure(false, true); + if (!$retval) { + $o .= sprintf(t("Database structure update %s was successfully applied."), DB_UPDATE_VERSION)."
"; + set_config('database', 'dbupdate_'.DB_UPDATE_VERSION, 'success'); + } else + $o .= sprintf(t("Executing of database structure update %s failed with error: %s"), + DB_UPDATE_VERSION, $retval)."
"; + if ($a->argv[2] === 'check') + return $o; + } + + if ($a->argc > 2 && intval($a->argv[2])) { require_once('update.php'); $func = 'update_' . intval($a->argv[2]); if(function_exists($func)) { $retval = $func(); if($retval === UPDATE_FAILED) { - $o .= sprintf( t('Executing %s failed. Check system logs.'), $func); + $o .= sprintf(t("Executing %s failed with error: %s"), $func, $retval); } elseif($retval === UPDATE_SUCCESS) { - $o .= sprintf( t('Update %s was successfully applied.', $func)); + $o .= sprintf(t('Update %s was successfully applied.', $func)); set_config('database',$func, 'success'); } else - $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func); + $o .= sprintf(t('Update %s did not return a status. Unknown if it succeeded.'), $func); + } else { + $o .= sprintf(t('There was no additional update function %s that needed to be called.'), $func)."
"; + set_config('database',$func, 'success'); } - else - $o .= sprintf( t('Update function %s could not be found.'), $func); return $o; } @@ -686,17 +756,22 @@ function admin_page_dbsync(&$a) { $failed[] = $upd; } } - if(! count($failed)) - return '

' . t('No failed updates.') . '

'; - - $o = replace_macros(get_markup_template('failed_updates.tpl'),array( - '$base' => $a->get_baseurl(true), - '$banner' => t('Failed Updates'), - '$desc' => t('This does not include updates prior to 1139, which did not return a status.'), - '$mark' => t('Mark success (if update was manually applied)'), - '$apply' => t('Attempt to execute this update step automatically'), - '$failed' => $failed - )); + if(! count($failed)) { + $o = replace_macros(get_markup_template('structure_check.tpl'),array( + '$base' => $a->get_baseurl(true), + '$banner' => t('No failed updates.'), + '$check' => t('Check database structure'), + )); + } else { + $o = replace_macros(get_markup_template('failed_updates.tpl'),array( + '$base' => $a->get_baseurl(true), + '$banner' => t('Failed Updates'), + '$desc' => t('This does not include updates prior to 1139, which did not return a status.'), + '$mark' => t('Mark success (if update was manually applied)'), + '$apply' => t('Attempt to execute this update step automatically'), + '$failed' => $failed + )); + } return $o; @@ -710,39 +785,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){ @@ -791,7 +888,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); @@ -799,7 +896,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 ) @@ -855,7 +952,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']); @@ -910,9 +1007,9 @@ function admin_page_users(&$a){ '$delete' => t('Delete'), '$block' => t('Block'), '$unblock' => t('Unblock'), - '$siteadmin' => t('Site admin'), - '$accountexpired' => t('Account expired'), - + '$siteadmin' => t('Site admin'), + '$accountexpired' => t('Account expired'), + '$h_users' => t('Users'), '$h_newuser' => t('New User'), '$th_deleted' => array( t('Name'), t('Email'), t('Register date'), t('Last login'), t('Last item'), t('Deleted since') ), @@ -921,7 +1018,7 @@ function admin_page_users(&$a){ '$confirm_delete_multi' => t('Selected users will be deleted!\n\nEverything these users had posted on this site will be permanently deleted!\n\nAre you sure?'), '$confirm_delete' => t('The user {0} will be deleted!\n\nEverything this user has posted on this site will be permanently deleted!\n\nAre you sure?'), - '$form_security_token' => get_form_security_token("admin_users"), + '$form_security_token' => get_form_security_token("admin_users"), // values // '$baseurl' => $a->get_baseurl(true), @@ -929,9 +1026,9 @@ function admin_page_users(&$a){ '$pending' => $pending, 'deleted' => $deleted, '$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.")), + '$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."), '', '', 'email'), )); $o .= paginate($a); return $o; @@ -1060,7 +1157,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"), )); } @@ -1145,9 +1242,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); } } @@ -1262,7 +1361,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"), )); } @@ -1272,10 +1371,10 @@ function admin_page_themes(&$a){ * * @param App $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); @@ -1314,7 +1413,7 @@ function admin_page_logs(&$a){ $data = ''; if(!file_exists($f)) { - $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is + $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is readable."); } else { @@ -1354,7 +1453,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"), )); }