]> git.mxchange.org Git - friendica.git/blobdiff - mod/admin.php
Include per-group count of unseen items in /ping output
[friendica.git] / mod / admin.php
index 6337e4608db045c9af5141121c180aff8339050f..0b38ae5668d5ff62a6e5e96c1c5d0b8a10f571e0 100644 (file)
@@ -47,12 +47,35 @@ function admin_post(&$a){
                                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;
@@ -557,10 +580,10 @@ function admin_page_site_post(&$a){
        set_config('system','old_pager', $old_pager);
        set_config('system','only_tag_search', $only_tag_search);
 
-       
+
        if ($rino==2 and !function_exists('mcrypt_create_iv')){
-               notice(t("RINO2 needs mcrypt php extension to work."));         
-       } else {        
+               notice(t("RINO2 needs mcrypt php extension to work."));
+       } else {
                set_config('system','rino_encrypt', $rino);
        }
 
@@ -1217,7 +1240,7 @@ function admin_page_plugins(&$a){
         * 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");
@@ -1252,6 +1275,7 @@ function admin_page_plugins(&$a){
                '$title' => t('Administration'),
                '$page' => t('Plugins'),
                '$submit' => t('Save Settings'),
+               '$reload' => t('Reload active plugins'),
                '$baseurl' => $a->get_baseurl(true),
                '$function' => 'plugins',
                '$plugins' => $plugins,
@@ -1404,11 +1428,27 @@ function admin_page_themes(&$a){
 
                $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'));
@@ -1438,6 +1478,22 @@ function admin_page_themes(&$a){
                ));
        }
 
+
+       // 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
         */
@@ -1449,11 +1505,13 @@ function admin_page_themes(&$a){
                }
        }
 
+
        $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,