Beispiel #1
0
 public function indexAction()
 {
     $this->view->phpVersion = phpversion();
     $this->view->databaseVersion = Gio_Db_Mysql::getInstance()->getVersion();
     $configs = Gio_Core_Config_Xml::getConfig('install');
     $this->view->installInformation = $configs;
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     /**
      * Add module core to the top array 
      */
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core'));
     $quickaccess = array();
     if ($modules) {
         foreach ($modules as $index => $module) {
             $aboutXml = MOD_DIR . DS . $module['module_id'] . DS . 'configs' . DS . 'about.xml';
             if (!file_exists($aboutXml)) {
                 continue;
             }
             $aboutXml = @simplexml_load_file($aboutXml);
             $items = isset($aboutXml->admin->quickaccess->item) ? $aboutXml->admin->quickaccess->item : null;
             if ($items) {
                 foreach ($items as $item) {
                     $data = array();
                     $data['module'] = $module['module_id'];
                     $data['route'] = $item->route;
                     $data['lang_key'] = $item->lang_key;
                     $data['thumbnail'] = $item->thumbnail;
                     $quickaccess[] = $data;
                 }
             }
         }
     }
     $this->view->quickaccess = $quickaccess;
 }
Beispiel #2
0
 public function listAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         $this->setNoRender();
         $this->disableLayout();
         $mod = $request->getPost('mod');
         $widgets = Modules_Core_Services_Widget::getWidgets($mod);
         $this->view->widgets = $widgets;
         $dbWidgets = Modules_Core_Services_Widget::dbWidgets($mod, true);
         $installedWidgets = array();
         if ($dbWidgets) {
             foreach ($dbWidgets as $widget) {
                 $installedWidgets[] = $widget['module_id'] . '_' . $widget['widget_id'];
             }
         }
         $this->view->installedWidgets = $installedWidgets;
         $viewFile = ROOT_DIR . DS . 'templates' . DS . $this->view->APP_TEMPLATE . DS . 'modules' . DS . 'core' . DS . 'widget' . DS . 'widget.ajax.phtml';
         $response = $this->view->render($viewFile);
         $this->getResponse()->setBody($response);
         return;
     }
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     /**
      * Add module core to the top array 
      */
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core'));
     $this->view->modules = $modules;
 }
Beispiel #3
0
 public function showAction()
 {
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     /**
      * Add module core to the top array 
      */
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core'));
     $this->view->modules = $modules;
     $this->view->route = $this->getRequest()->getParam('route');
 }
Beispiel #4
0
 public function showAction()
 {
     $request = $this->getRequest();
     $this->view->lang = $request->getParam('lang');
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     foreach ($modules as $index => $module) {
         $modules[$index]['resource'] = Gio_Core_Module::getAboutModule($module['module_id'], 'resource');
     }
     $this->view->wModules = $modules;
     $coreResources = Gio_Core_Module::getAboutModule('core');
     $this->view->coreResources = $coreResources;
     $widgetsToolbox = Modules_Core_Services_Widget::dbWidgetsToolbox();
     $this->view->widgetsToolbox = $widgetsToolbox;
 }
Beispiel #5
0
 public function uninstallAction()
 {
     $this->setNoRender();
     $this->disableLayout();
     $response = 'RESULT_NOT_OK';
     $request = $this->getRequest();
     if (!$request->isPost()) {
         return;
     }
     $moduleId = $request->getPost('module_id');
     if (null == Modules_Core_Services_Module::getById($moduleId)) {
         return;
     }
     Modules_Core_Services_Module::delete($moduleId);
     Modules_Core_Services_Module::uninstall($moduleId);
     $response = 'RESULT_OK';
     $this->getResponse()->setBody($response);
 }
Beispiel #6
0
 public function run()
 {
     $controller = Gio_Core_Controller::getIntance();
     $view = Gio_Core_View::getInstance();
     $configs = Gio_Core_Config_Xml::getConfig('web');
     if ($view->APP_TEMPLATE != (string) $configs->admin->template) {
         return;
     }
     $moduleId = $controller->getModuleName();
     /**
      * Check Module Installed
      */
     if ($moduleId != $this->_coreModule && null == Modules_Core_Services_Module::getById($moduleId)) {
         Modules_Core_Services_Exception::error('PERMISSION_DENY');
         return;
     }
     $ruleChecker = Gio_Core_Acl::getIntance();
     $actionId = $controller->getActionName();
     $controllerId = $controller->getControllerName();
     if ($ruleChecker->isAllowed($actionId, $controllerId, $moduleId) === false) {
         Modules_Core_Services_Exception::error('PERMISSION_DENY');
     }
 }
Beispiel #7
0
 public function listAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         $this->setNoRender();
         $this->disableLayout();
         $mod = $request->getPost('mod');
         $mod = $mod == 'HOOK_GLOGAL' ? null : $mod;
         $hooks = Modules_Core_Services_Hook::getHooks($mod);
         $this->view->hooks = $hooks;
         $dbHooks = Modules_Core_Services_Hook::dbHooks($mod, true);
         $installedHooks = array();
         if ($dbHooks) {
             foreach ($dbHooks as $hook) {
                 $installedHooks[] = $hook['module'] . '_' . $hook['name'];
             }
         }
         $this->view->installedHooks = $installedHooks;
         $viewFile = ROOT_DIR . DS . 'templates' . DS . $this->view->APP_TEMPLATE . DS . 'modules' . DS . 'core' . DS . 'hook' . DS . 'hook.ajax.phtml';
         $response = $this->view->render($viewFile);
         $this->getResponse()->setBody($response);
         return;
     }
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     /**
      * Add module core to the top array 
      */
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core'));
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'HOOK_GLOGAL'));
     $this->view->modules = $modules;
 }
Beispiel #8
0
 /**
  * Perform install actions
  * 
  * @param bool $importSampleData
  * @return bool
  */
 public static function install($importSampleData = false, $adminInfo = array())
 {
     try {
         $view = Gio_Core_View::getInstance();
         $moduleDirs = Gio_Core_File::getSubDir(ROOT_DIR . DS . 'modules');
         /**
          * Install modules
          */
         $modules = array();
         foreach ($moduleDirs as $module) {
             $modules[] = Modules_Core_Services_Module::install($module);
         }
         foreach ($modules as $module) {
             if ($module) {
                 Modules_Core_Services_Module::add($module);
             }
         }
         /**
          * Install widgets
          */
         foreach ($moduleDirs as $module) {
             /**
              * Load all widgets from module
              */
             $widgetDirs = Gio_Core_File::getSubDir(ROOT_DIR . DS . 'modules' . DS . $module . DS . 'widgets');
             foreach ($widgetDirs as $widgetName) {
                 $widget = array('module_id' => $module, 'widget_id' => $widgetName, 'title' => $view->TRANSLATOR->widget('about_title', $module, $widgetName), 'description' => $view->TRANSLATOR->widget('about_description', $module, $widgetName), 'created_date' => date('Y-m-d H:i:s'));
                 Modules_Core_Services_Widget::add($widget);
             }
         }
         /**
          * Create resources and previleges
          */
         foreach ($moduleDirs as $module) {
             $file = ROOT_DIR . DS . 'modules' . DS . $module . DS . 'configs' . DS . 'permissions.xml';
             if (!file_exists($file)) {
                 continue;
             }
             $xml = simplexml_load_file($file);
             foreach ($xml->controller as $res) {
                 $attr = $res->attributes();
                 $langKey = (string) $attr['langKey'];
                 $description = $view->TRANSLATOR->translator($langKey, $module);
                 $description = $description == $langKey ? (string) $attr['description'] : $description;
                 $resource = array('controller_id' => $attr['name'], 'description' => $description, 'module_id' => $module, 'created_date' => date('Y-m-d H:i:s'));
                 /**
                  * Add resource
                  */
                 Modules_Core_Services_Controller::add($resource);
                 if ($res->action) {
                     foreach ($res->action as $pri) {
                         $attr2 = $pri->attributes();
                         $langKey = (string) $attr2['langKey'];
                         $description = $view->TRANSLATOR->translator($langKey, $module);
                         $description = $description == $langKey ? (string) $attr2['description'] : $description;
                         $privilege = array('controller_id' => $attr['name'], 'description' => $description, 'module_id' => $module, 'action_id' => $attr2['name'], 'created_date' => date('Y-m-d H:i:s'));
                         Modules_Core_Services_Action::add($privilege);
                     }
                 }
             }
         }
         /**
          * Finally, init data
          */
         $dbFile = ROOT_DIR . DS . 'install' . DS . 'db.xml';
         if (file_exists($dbFile)) {
             $xml = simplexml_load_file($dbFile);
             $xpath = $xml->xpath('module/query');
             if (is_array($xpath) && count($xpath) > 0) {
                 $conn = Gio_Db_Connection::getConnection();
                 foreach ($xpath as $query) {
                     $q = str_replace('###table_prefix###', $conn->_tablePrefix, (string) $query);
                     $conn->query($q);
                 }
             }
         }
         /**
          * Allows user to import sample data
          */
         if ($importSampleData) {
             $file = ROOT_DIR . DS . 'install' . DS . 'giocms_sample_db.sql';
             $importer = Gio_Core_Import_Importer::getInstance();
             if ($importer != null && $file != null) {
                 $importer->import($file);
             }
         }
         /**
          * Create admin user
          */
         $salt = md5(time());
         $user = array('username' => $adminInfo['username'], 'password' => md5(md5($adminInfo['password']) . $salt), 'email' => $adminInfo['email'], 'fullname' => $adminInfo['fullname'], 'salt' => $salt, 'status' => 'active', 'created_date' => date('Y-m-d H:i:s'), 'role_id' => 1);
         Modules_Core_Services_User::add($user);
     } catch (Exception $ex) {
         return false;
     }
     return true;
 }
Beispiel #9
0
 public function roleAction()
 {
     $request = $this->getRequest();
     $roleId = $request->getParam('role_id');
     $role = Modules_Core_Services_Role::getById($roleId);
     if (null == $role) {
         return;
     }
     $this->view->role = $role;
     $act = $request->getParam('act');
     if ($request->isPost()) {
         $this->setNoRender();
         $this->disableLayout();
         $mod = $request->getPost('mod');
         $this->view->mod = $mod;
         $controllers = Modules_Core_Services_Action::getDbActionsByModule($mod);
         switch ($act) {
             case 'save':
                 /**
                  *	Reset rule for user 
                  */
                 Modules_Core_Services_Rule::reset('role', $role['role_id'], $mod);
                 $actions = $request->getPost('actions');
                 if ($controllers) {
                     foreach ($controllers as $index => $controller) {
                         if ($controller['actions']) {
                             foreach ($controller['actions'] as $indexAction => $controllerAction) {
                                 $allow = 0;
                                 if ($actions) {
                                     foreach ($actions as $action) {
                                         if ($mod . '_' . $controller['controller_id'] . '_' . $controllerAction['action_id'] == $action) {
                                             $allow = 1;
                                         }
                                     }
                                 }
                                 $rule = array('module_id' => $mod, 'controller_id' => $controller['controller_id'], 'action_id' => $controllerAction['action_id'], 'object_type' => 'role', 'object_id' => $role['role_id'], 'allow' => $allow);
                                 $ruleId = Modules_Core_Services_Rule::add($rule);
                             }
                         }
                     }
                 }
                 $this->getResponse()->setBody('RESULT_OK');
                 return;
                 break;
             default:
                 $dbRoleRules = Modules_Core_Services_Rule::getRules('role', $role['role_id']);
                 $dbRules = $dbRoleRules;
                 $this->view->dbRules = $dbRules;
                 $this->view->controllers = $controllers;
                 $viewFile = ROOT_DIR . DS . 'templates' . DS . $this->view->APP_TEMPLATE . DS . 'modules' . DS . 'core' . DS . 'permission' . DS . 'role.ajax.phtml';
                 $response = $this->view->render($viewFile);
                 $this->getResponse()->setBody($response);
                 return;
                 break;
         }
     }
     $modules = Modules_Core_Services_Module::getModulesInstalled();
     /**
      * Add module core to the top array 
      */
     $modules = array_pad($modules, -count($modules) - 1, array('module_id' => 'core'));
     $this->view->modules = $modules;
 }