<?php
/**********************************************************************
Copyright (C) FrontAccounting, LLC.
- Released under the terms of the GNU Affero General Public License,
- AGPL, as published by the Free Software Foundation, either version
- 3 of the License, or (at your option) any later version.
+ Released under the terms of the GNU General Public License, GPL,
+ as published by the Free Software Foundation, either version 3
+ of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License here <http://www.gnu.org/licenses/agpl-3.0.html>.
+ See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
- include_once('applications/application.php');
- include_once('applications/customers.php');
- include_once('applications/suppliers.php');
- include_once('applications/inventory.php');
- include_once('applications/manufacturing.php');
- include_once('applications/dimensions.php');
- include_once('applications/generalledger.php');
- include_once('applications/setup.php');
- include_once('installed_extensions.php');
- $path_to_root=".";
- include_once($path_to_root . "/includes/session.inc");
+if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_to_root']))
+ die("Restricted access");
+ include_once($path_to_root . '/applications/application.php');
+ include_once($path_to_root . '/applications/customers.php');
+ include_once($path_to_root . '/applications/suppliers.php');
+ include_once($path_to_root . '/applications/inventory.php');
+ include_once($path_to_root . '/applications/manufacturing.php');
+ include_once($path_to_root . '/applications/dimensions.php');
+ include_once($path_to_root . '/applications/generalledger.php');
+ include_once($path_to_root . '/applications/setup.php');
+ include_once($path_to_root . '/installed_extensions.php');
+
+ foreach ($installed_extensions as $ext)
+ {
+ if (@($ext['active'] && isset($ext['tabs']))) // supressed warnings before 2.2 upgrade
+ foreach($ext['tabs'] as $tab) {
+ include_once($path_to_root.'/'.$ext['path'].'/'.$tab['url']);
+ }
+ }
class front_accounting
{
// GUI
var $menu;
//var $renderer;
+
function front_accounting()
{
//$this->renderer =& new renderer();
}
- function add_application($app)
- {
- $this->applications[$app->id] = &$app;
+ function add_application(&$app)
+ {
+ if ($app->enabled) // skip inactive modules
+ $this->applications[$app->id] = &$app;
}
function get_application($id)
{
function display()
{
global $path_to_root;
- include($path_to_root . "/themes/".user_theme()."/renderer.php");
+
+ include_once($path_to_root . "/themes/".user_theme()."/renderer.php");
+
$this->init();
$rend = new renderer();
$rend->wa_header();
$rend->display_applications($this);
//$rend->menu_footer($this->menu);
$rend->wa_footer();
+ $this->renderer =& $rend;
}
function init()
{
- global $installed_extensions, $applications;
+ 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");
$this->add_application(new manufacturing_app());
$this->add_application(new dimensions_app());
$this->add_application(new general_ledger_app());
- if (count($installed_extensions) > 0)
+
+ // 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)
{
- foreach ($installed_extensions as $ext)
- {
- $s = $applications['system'];
- array_pop($applications);
- $applications[$ext['name']] = $ext['title'];;
- $applications['system'] = $s;
- include_once("applications/".$ext['app_file']);
- $class = $ext['name']."_app";
- $this->add_application(new $class());
+ if (@($ext['active'] && isset($ext['tabs']))) { // supressed warnings before 2.2 upgrade
+ set_ext_domain($ext['path']);
+ foreach($ext['tabs'] as $tab) {
+ $class = $tab['tab_id']."_app";
+ if (class_exists($class))
+ $this->add_application(new $class());
+ }
}
- }
-
- $this->add_application(new setup_app());
}
+ set_ext_domain();
+ $this->add_application(new setup_app());
+ }
}
?>
\ No newline at end of file