/** * Public function that creates a single instance */ public static function getInstance($event_handler) { if (!isset(self::$_instance)) { self::$_instance = new self($event_handler); } return self::$_instance; }
/** * Transfers control to module functions * * @param array $params * @param array $children */ public function transferControl($params, $children) { // dead lock protection for backend module if (isset($params['action']) && isset($_REQUEST['module']) && $_REQUEST['module'] == $this->name && $params['action'] == 'transfer_control') { $params['backend_action'] = fix_chars($_REQUEST['backend_action']); unset($_REQUEST['module']); unset($params['action']); } if (isset($params['action'])) { switch ($params['action']) { case 'login': case 'login_commit': case 'logout': case 'logout_commit': case 'json_login': case 'json_logout': $session_manager = SessionManager::getInstance(); $session_manager->transferControl(); break; case 'verify_account': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->verifyAccount($params, $children); break; case 'save_unpriviledged_user': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->saveUnpriviledgedUser($params, $children); break; case 'save_unpriviledged_password': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->saveUnpriviledgedPassword($params, $children); break; case 'password_recovery': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->recoverPasswordByEmail($params, $children); break; case 'password_recovery_save': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->saveRecoveredPassword($params, $children); break; case 'draw_menu': $this->drawCompleteMenu(); break; case 'transfer_control': // if user is not logged, redirect him to a proper place if (!isset($_SESSION['logged']) || !$_SESSION['logged']) { $session_manager = SessionManager::getInstance($this); $session_manager->transferControl(); return; } // fix input parameters foreach ($_REQUEST as $key => $value) { $_REQUEST[$key] = $this->utf8_urldecode($_REQUEST[$key]); } // transfer control $action = fix_chars($_REQUEST['backend_action']); $module_name = fix_chars($_REQUEST['module']); $params['backend_action'] = $action; // add sub-action if specified if (isset($_REQUEST['sub_action'])) { $params['sub_action'] = fix_chars($_REQUEST['sub_action']); } if (class_exists($module_name)) { $module = call_user_func(array($module_name, 'getInstance')); $module->transferControl($params, $children); } break; default: // draw main backend as default $this->showBackend(); break; } } if (isset($params['backend_action'])) { switch ($params['backend_action']) { case 'modules': $this->showModules(); break; case 'module_activate': $this->activateModule(); break; case 'module_deactivate': $this->deactivateModule(); break; case 'module_initialise': $this->initialiseModule(); break; case 'module_initialise_commit': $this->initialiseModule_Commit(); break; case 'module_disable': $this->disableModule(); break; case 'module_disable_commit': $this->disableModule_Commit(); break; // --- // --- case 'users': case 'users_create': case 'users_change': case 'users_save': case 'users_delete': case 'users_delete_commit': case 'change_password': case 'save_password': case 'email_templates': case 'email_templates_save': $user_manager = Backend_UserManager::getInstance($this->event_handler); $user_manager->transferControl(); break; // --- // --- case 'logout': case 'logout_commit': $session_manager = SessionManager::getInstance($this); $session_manager->transferControl(); break; } } }