예제 #1
0
 /**
  * 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;
 }
예제 #2
0
파일: backend.php 프로젝트: tareqy/Caracal
 /**
  * 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;
         }
     }
 }