Update from usntable branch.
[fa-stable.git] / frontaccounting.php
index 7e2201882a74b9f954ca64cfa97c8f69c5df83c4..4ae88cbb1f6f5c681576b116dbded1075cd3b057 100644 (file)
@@ -24,12 +24,11 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
        {
                foreach ($installed_extensions as $ext)
                {
-                       include_once($path_to_root."/".$ext['folder']."/".$ext['app_file']);
+                       if ($ext['type'] == 'module')
+                               include_once($path_to_root."/".$ext['path']."/".$ext['filename']);
                }
        }       
 
-       include_once($path_to_root . '/modules/installed_modules.php');
-
        class front_accounting
                {
                var $user;
@@ -44,8 +43,9 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
                        //$this->renderer =& new renderer();
                }
                function add_application(&$app)
-                               {
-                                                       $this->applications[$app->id] = &$app;
+                               {       
+                                       if ($app->enabled) // skip inactive modules
+                                               $this->applications[$app->id] = &$app;
                                }
                function get_application($id)
                                {
@@ -76,6 +76,7 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
                function init()
                {
                        global $installed_extensions, $path_to_root;
+
                        $this->menu = new menu(_("Main  Menu"));
                        $this->menu->add_item(_("Main  Menu"), "index.php");
                        $this->menu->add_item(_("Logout"), "/account/access/logout.php");
@@ -88,18 +89,26 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
                        $this->add_application(new general_ledger_app());
                        if (count($installed_extensions) > 0)
                        {
-                               foreach ($installed_extensions as $ext)
+                               // Do not use global array directly here, or you suffer 
+                               // from buggy php behaviour (unexpected loop break 
+                               // because of same var usage in class constructor).
+                               $extensions = $installed_extensions;
+                               foreach ($extensions as $ext)
                                {
-                                       get_text::add_domain($_SESSION['language']->code, 
-                                               $ext['folder']."/lang");
-                                       $class = $ext['name']."_app";
-                                       $this->add_application(new $class());
-                                       get_text::add_domain($_SESSION['language']->code, 
-                                               $path_to_root."/lang");
+                                       if (@($ext['active'] && $ext['type'] == 'module')) // supressed warnings before 2.2 upgrade
+                                       { 
+                                               $_SESSION['get_text']->add_domain($_SESSION['language']->code, 
+                                                       $ext['path']."/lang");
+                                               $class = $ext['tab']."_app";
+                                               if (class_exists($class))
+                                                       $this->add_application(new $class());
+                                               $_SESSION['get_text']->add_domain($_SESSION['language']->code, 
+                                                       $path_to_root."/lang");
+                                       }
                                }
                        }       
                        
                        $this->add_application(new setup_app());
-                       }
+               }
 }
 ?>
\ No newline at end of file