return; // NOTREACHED
break;
case 'themes':
+ if ($a->argc < 2) {
+ if(is_ajax()) return;
+ goaway($a->get_baseurl(true) . '/admin/' );
+ return;
+ }
+
$theme = $a->argv[2];
if (is_file("view/theme/$theme/config.php")){
- require_once("view/theme/$theme/config.php");
- if (function_exists("theme_admin_post")){
- theme_admin_post($a);
+ function __call_theme_admin_post(&$a, $theme) {
+ $orig_theme = $a->theme;
+ $orig_page = $a->page;
+ $orig_session_theme = $_SESSION['theme'];
+ require_once("view/theme/$theme/theme.php");
+ require_once("view/theme/$theme/config.php");
+ $_SESSION['theme'] = $theme;
+
+
+ $init = $theme."_init";
+ if(function_exists($init)) $init($a);
+ if(function_exists("theme_admin_post")){
+ $admin_form = theme_admin_post($a);
+ }
+
+ $_SESSION['theme'] = $orig_session_theme;
+ $a->theme = $orig_theme;
+ $a->page = $orig_page;
+ return $admin_form;
}
+ __call_theme_admin_post($a, $theme);
}
info(t('Theme settings updated.'));
if(is_ajax()) return;
/* get plugins admin page */
- $r = q("SELECT name FROM `addon` WHERE `plugin_admin`=1");
+ $r = q("SELECT `name` FROM `addon` WHERE `plugin_admin`=1 ORDER BY `name`");
$aside['plugins_admin']=Array();
foreach ($r as $h){
$plugin =$h['name'];
$allowed_email = ((x($_POST,'allowed_email')) ? notags(trim($_POST['allowed_email'])) : '');
$block_public = ((x($_POST,'block_public')) ? True : False);
$force_publish = ((x($_POST,'publish_all')) ? True : False);
- $global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : '');
+ $global_directory = ((x($_POST,'directory')) ? notags(trim($_POST['directory'])) : '');
$thread_allow = ((x($_POST,'thread_allow')) ? True : False);
$newuser_private = ((x($_POST,'newuser_private')) ? True : False);
$enotify_no_content = ((x($_POST,'enotify_no_content')) ? True : False);
$poll_interval = ((x($_POST,'poll_interval')) ? intval(trim($_POST['poll_interval'])) : 0);
$maxloadavg = ((x($_POST,'maxloadavg')) ? intval(trim($_POST['maxloadavg'])) : 50);
$maxloadavg_frontend = ((x($_POST,'maxloadavg_frontend')) ? intval(trim($_POST['maxloadavg_frontend'])) : 50);
+ $optimize_max_tablesize = ((x($_POST,'optimize_max_tablesize')) ? intval(trim($_POST['optimize_max_tablesize'])): 100);
$poco_completion = ((x($_POST,'poco_completion')) ? intval(trim($_POST['poco_completion'])) : false);
$poco_requery_days = ((x($_POST,'poco_requery_days')) ? intval(trim($_POST['poco_requery_days'])) : 7);
$poco_discovery = ((x($_POST,'poco_discovery')) ? intval(trim($_POST['poco_discovery'])) : 0);
$rino = ((x($_POST,'rino')) ? intval($_POST['rino']) : 0);
$embedly = ((x($_POST,'embedly')) ? notags(trim($_POST['embedly'])) : '');
+ if ($a->get_path() != "")
+ $diaspora_enabled = false;
+
+ if (!$thread_allow)
+ $ostatus_disabled = true;
if($ssl_policy != intval(get_config('system','ssl_policy'))) {
if($ssl_policy == SSL_POLICY_FULL) {
set_config('system','poll_interval',$poll_interval);
set_config('system','maxloadavg',$maxloadavg);
set_config('system','maxloadavg_frontend',$maxloadavg_frontend);
+ set_config('system','optimize_max_tablesize',$optimize_max_tablesize);
set_config('system','poco_completion',$poco_completion);
set_config('system','poco_requery_days',$poco_requery_days);
set_config('system','poco_discovery',$poco_discovery);
set_config('system','allowed_email', $allowed_email);
set_config('system','block_public', $block_public);
set_config('system','publish_all', $force_publish);
- if ($global_directory==""){
- // don't know why, but del_config doesn't work...
- q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1",
- dbesc("system"),
- dbesc("directory_submit_url")
- );
- } else {
- set_config('system','directory_submit_url', $global_directory);
- }
+ set_config('system','directory', $global_directory);
set_config('system','thread_allow', $thread_allow);
set_config('system','newuser_private', $newuser_private);
set_config('system','enotify_no_content', $enotify_no_content);
set_config('system','ostatus_disabled', $ostatus_disabled);
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_pager', $old_pager);
set_config('system','only_tag_search', $only_tag_search);
- set_config('system','rino_encrypt', $rino);
+
+ if ($rino==2 and !function_exists('mcrypt_create_iv')){
+ notice(t("RINO2 needs mcrypt php extension to work."));
+ } else {
+ set_config('system','rino_encrypt', $rino);
+ }
set_config('system','embedly', $embedly);
function admin_page_site(&$a) {
/* Installed langs */
- $lang_choices = array();
- $langs = glob('view/*/strings.php');
-
- if(is_array($langs) && count($langs)) {
- if(! in_array('view/en/strings.php',$langs))
- $langs[] = 'view/en/';
- asort($langs);
- foreach($langs as $l) {
- $t = explode("/",$l);
- $lang_choices[$t[1]] = $t[1];
- }
+ $lang_choices = get_avaiable_languages();
+
+ if (strlen(get_config('system','directory_submit_url')) AND
+ !strlen(get_config('system','directory'))) {
+ set_config('system','directory', dirname(get_config('system','directory_submit_url')));
+ del_config('system','directory_submit_url');
}
/* Installed themes */
$theme_choices = array();
$theme_choices_mobile = array();
$theme_choices_mobile["---"] = t("No special theme for mobile devices");
- $files = glob('view/theme/*');
+ $files = glob('view/theme/*'); /**/
if($files) {
foreach($files as $file) {
+ if (intval(file_exists($file . '/unsupported')))
+ continue;
+
$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;
- }
- else {
+ } else {
$theme_choices[$f] = $theme_name;
}
}
- }
+ }
- /* 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")
- );
+ /* 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")
- );
+ /* 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")
+ );
- $poco_discovery_choices = array(
- "0" => t("Disabled"),
- "1" => t("Users"),
- "2" => t("Users, Global Contacts"),
- "3" => t("Users, Global Contacts/fallback"),
- );
+ $poco_discovery_choices = array(
+ "0" => t("Disabled"),
+ "1" => t("Users"),
+ "2" => t("Users, Global Contacts"),
+ "3" => t("Users, Global Contacts/fallback"),
+ );
- $poco_discovery_since_choices = array(
- "30" => t("One month"),
- "91" => t("Three months"),
- "182" => t("Half a year"),
- "365" => t("One year"),
- );
+ $poco_discovery_since_choices = array(
+ "30" => t("One month"),
+ "91" => t("Three months"),
+ "182" => t("Half a year"),
+ "365" => t("One year"),
+ );
- /* 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');
if ($a->config['hostname'] == "")
$a->config['hostname'] = $a->get_hostname();
+ $diaspora_able = ($a->get_path() == "");
+
$t = get_markup_template("admin_site.tpl");
return replace_macros($t, array(
'$title' => t('Administration'),
'$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),
'$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently logged in.")),
'$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory.")),
- '$global_directory' => array('directory_submit_url', t("Global directory update URL"), get_config('system','directory_submit_url'), t("URL to update the global directory. If this is not set, the global directory is completely unavailable to the application.")),
+ '$global_directory' => array('directory', t("Global directory URL"), get_config('system','directory'), t("URL to the global directory. If this is not set, the global directory is completely unavailable to the application.")),
'$thread_allow' => array('thread_allow', t("Allow threaded items"), get_config('system','thread_allow'), t("Allow infinite level threading for items on this site.")),
'$newuser_private' => array('newuser_private', t("Private posts by default for new users"), get_config('system','newuser_private'), t("Set default post permissions for all new members to the default privacy group rather than public.")),
'$enotify_no_content' => array('enotify_no_content', t("Don't include post content in email notifications"), get_config('system','enotify_no_content'), t("Don't include the content of a post/comment/private message/etc. in the email notifications that are sent out from this site, as a privacy measure.")),
'$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),
+ '$ostatus_not_able' => t("OStatus support can only be enabled if threading is enabled."),
+ '$diaspora_able' => $diaspora_able,
+ '$diaspora_not_able' => t("Diaspora support can't be enabled because Friendica was installed into a sub directory."),
'$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.")),
'$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")),
'$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
'$maxloadavg_frontend' => array('maxloadavg_frontend', t("Maximum Load Average (Frontend)"), ((intval(get_config('system','maxloadavg_frontend')) > 0)?get_config('system','maxloadavg_frontend'):50), t("Maximum system load before the frontend quits service - default 50.")),
+ '$optimize_max_tablesize'=> array('optimize_max_tablesize', t("Maximum table size for optimization"), ((intval(get_config('system','optimize_max_tablesize')) > 0)?get_config('system','optimize_max_tablesize'):100), t("Maximum table size (in MB) for the automatic optimization - default 100 MB. Enter -1 to disable it.")),
'$poco_completion' => array('poco_completion', t("Periodical check of global contacts"), get_config('system','poco_completion'), t("If enabled, the global contacts are checked periodically for missing or outdated data and the vitality of the contacts and servers.")),
'$poco_requery_days' => array('poco_requery_days', t("Days between requery"), get_config('system','poco_requery_days'), t("Number of days after which a server is requeried for his contacts.")),
* List plugins
*/
- if (x($_GET,"a") && $_GET['a']=="r"){
+ if (x($_GET,"a") && $_GET['a']=="r"){
check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/plugins', 'admin_themes', 't');
reload_plugins();
info("Plugins reloaded");
'$title' => t('Administration'),
'$page' => t('Plugins'),
'$submit' => t('Save Settings'),
+ '$reload' => t('Reload active plugins'),
'$baseurl' => $a->get_baseurl(true),
'$function' => 'plugins',
'$plugins' => $plugins,
$admin_form="";
if (is_file("view/theme/$theme/config.php")){
- require_once("view/theme/$theme/config.php");
- if(function_exists("theme_admin")){
- $admin_form = theme_admin($a);
- }
+ function __get_theme_admin_form(&$a, $theme) {
+ $orig_theme = $a->theme;
+ $orig_page = $a->page;
+ $orig_session_theme = $_SESSION['theme'];
+ require_once("view/theme/$theme/theme.php");
+ require_once("view/theme/$theme/config.php");
+ $_SESSION['theme'] = $theme;
+
+
+ $init = $theme."_init";
+ if(function_exists($init)) $init($a);
+ if(function_exists("theme_admin")){
+ $admin_form = theme_admin($a);
+ }
+ $_SESSION['theme'] = $orig_session_theme;
+ $a->theme = $orig_theme;
+ $a->page = $orig_page;
+ return $admin_form;
+ }
+ $admin_form = __get_theme_admin_form($a, $theme);
}
$screenshot = array( get_theme_screenshot($theme), t('Screenshot'));
));
}
+
+ // reload active themes
+ if (x($_GET,"a") && $_GET['a']=="r"){
+ check_form_security_token_redirectOnErr($a->get_baseurl().'/admin/themes', 'admin_themes', 't');
+ if ($themes) {
+ foreach($themes as $th) {
+ if ($th['allowed']) {
+ uninstall_theme($th['name']);
+ install_theme($th['name']);
+ }
+ }
+ }
+ info("Themes reloaded");
+ goaway($a->get_baseurl().'/admin/themes');
+ }
+
/**
* List themes
*/
}
}
+
$t = get_markup_template("admin_plugins.tpl");
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Themes'),
'$submit' => t('Save Settings'),
+ '$reload' => t('Reload active themes'),
'$baseurl' => $a->get_baseurl(true),
'$function' => 'themes',
'$plugins' => $xthemes,