Ejemplo n.º 1
0
 /**
  * @throws Exception
  */
 public function __construct()
 {
     parent::__construct();
     //		if (PHP_SAPI == 'cli') {
     //			throw new Exception('You can`t create session in console');
     //		}
     $this->request = Core_Request::getInstance();
     // Start session
     $session_id = $this->request->{self::NAME};
     if ($session_id) {
         session_id($session_id);
     }
     if ($this->request->getCookie(self::NAME_PERSISTENT)) {
         session_set_cookie_params(self::PERSISTENT_TIME, $this->request->getHomeDir());
     } else {
         session_set_cookie_params(0, $this->request->getHomeDir());
     }
     session_name(self::NAME);
     // Try session start many times
     for ($i = 1; $i <= 5; $i++) {
         if (session_start()) {
             break;
         }
         usleep(100000);
     }
 }
Ejemplo n.º 2
0
 /**
  *
  */
 public function indexAction()
 {
     die('todo');
     $overwrite = !is_null(Core_Request::getInstance()->getArgv(4)) ? Core_Request::getInstance()->getArgv(4) : false;
     foreach (dibi::getDatabaseInfo()->getTables() as $table_data) {
         if ($table_data->getName() == Migration_MigrationModel::getTableName()) {
             continue;
         }
         $ddl_data = dibi::query('SHOW CREATE TABLE ' . $table_data->getName())->fetch()->toArray();
         $ddl_query = $ddl_data['Create Table'];
         $migration_time = time();
         $migration_name = 'Create' . ucfirst($table_data->getName());
         $migration_name = str_replace(' ', '', $migration_name);
         $migration_name = str_replace('-', '', $migration_name);
         $migration_name = str_replace('_', '', $migration_name);
         $filename = cfg()->migration_path . $migration_name . '.php';
         if (Core_Files::fileSize($filename) && !$overwrite) {
             echo PHP_EOL . 'Migration "Create ' . ucfirst($table_data->getName()) . '" Exists' . PHP_EOL;
             continue;
         }
         $template_data = Core_Files::getContent(cfg()->migration_path . Migration_FilesHelper::TEMPLATE_FILE_NAME);
         $template_data = str_replace('Template', $migration_name, $template_data);
         $template_data = str_replace('__NAME__', $migration_name, $template_data);
         $template_data = str_replace('__CREATED_AT__', $migration_time, $template_data);
         $template_data = str_replace('__CREATED_CFG__', Core_Request::getInstance()->getArgv(1), $template_data);
         $template_data = preg_replace('#//__UP_ACTION__#', $ddl_query, $template_data);
         $down_query = 'DROP TABLE IF EXISTS `' . $table_data->getName() . '`';
         $template_data = preg_replace('#//__DOWN_ACTION__#', $down_query, $template_data);
         Core_Files::putContent($filename, $template_data);
         echo PHP_EOL . 'Migration ' . $filename . ' created' . PHP_EOL;
     }
 }
Ejemplo n.º 3
0
 /**
  *
  */
 public static function checkPermissions()
 {
     $request = Core_Request::getInstance();
     // permissions structure
     $data = array('module' => $request->getRoute('module'), 'controller' => $request->getRoute('controller'), 'action' => $request->getRoute('action'));
     $model = Admin_PermissionsModel::getInstance();
     $flag = $model->getFlag($data);
     // $flag = 0 - is a free acces of the page
     if ($flag === 0) {
         return true;
     }
     if (!$flag) {
         // we need to check that method exist
         $model->add($data);
     } else {
         if (!s()->user->id) {
             // @todo
             Core_View::getInstance()->addFlashMessage(__('Please Login'), 'danger');
             Core_Response::getInstance()->setStatus(1)->redirect('admin')->toJson();
         }
         if (!Core_Bit::check(s()->user->access['permissions'], $flag)) {
             // well an owner has ALL access
             $role_rs = Admin_RolesModel::get(array('id' => s()->user->role_id));
             if ($role_rs->is_owner === 1 || s()->user->is_developer === 1) {
                 return true;
             }
             Core_View::getInstance()->addFlashMessage(__('You Don\'t have permission to access this page'), 'danger');
             Core_Response::getInstance()->setStatus(1)->redirect('admin')->toJson();
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * @throws Exception
  */
 public function __construct()
 {
     parent::__construct();
     // Register autoloader
     spl_autoload_register(array($this, 'autoloader'));
     // Get object aliases
     require_once LIB_PATH . 'aliases.php';
     // Set application properties
     $this->request = Core_Request::getInstance();
     // Load bootstrap
     $bootstrap_class = $this->request->getRoute('module') . '_BootstrapHelper';
     $bootstrap_class = strtoupper(substr($bootstrap_class, 0, 1)) . substr($bootstrap_class, 1);
     if (class_exists($bootstrap_class)) {
         new $bootstrap_class();
     }
     // Error logging
     $this->setErrorLogging();
     // Init view
     $view = Core_View::getInstance();
     $view->setLayoutFile('$layout/layout.phtml');
     // Dispatch
     $this->dispatch();
     // Show layout
     $view->displayLayout();
 }
Ejemplo n.º 5
0
 /**
  * @param        $host
  * @param        $user
  * @param        $pass
  * @param        $name
  * @param string $driver
  */
 public function __construct($host, $user, $pass, $name, $driver = 'pgsql')
 {
     try {
         parent::__construct($driver . ':dbname=' . $name . ';host=' . $host, $user, $pass);
     } catch (Exception $e) {
         if (!cfg()->dev_mode && Core_Request::getInstance()->getRoute('module') == 'default') {
             $view = Core_View::getInstance();
             $view->setLayoutFile('$maintenance/db_connect.phtml');
             $view->displayLayout();
             die;
         } else {
             print get_class($e) . ': ' . $e->getMessage() . PHP_EOL;
             die;
         }
     }
     if (cfg()->dev_mode) {
         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     } else {
         $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
     }
     $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Core_Db_Statement', array($this)));
     if (cfg()->dev_mode) {
         //			Core_Debug::getInstance()->initPdoDebug($this);
     }
 }
Ejemplo n.º 6
0
 public function __get($var)
 {
     switch ($var) {
         case '_request':
             return $this->_request = Core_Request::getInstance();
             break;
     }
 }
Ejemplo n.º 7
0
/**
 * @param null $address
 */
function rr($address = null)
{
    $request = Core_Request::getInstance();
    if ($request->getServer('HTTP_REFERER')) {
        if (strstr($request->getServer('HTTP_REFERER'), $request->getServer('REQUEST_URI'))) {
            r('/');
        } else {
            r($request->getServer('HTTP_REFERER'), null, array(Core_Url::DIRECT_REDIRECT => true));
        }
    } else {
        r($address);
    }
}
Ejemplo n.º 8
0
 public static function login($user_id, $persistent = false)
 {
     s()->flush();
     if ($persistent) {
         s()->setPersistent();
     }
     // Load user data
     s()->user->id = $user_id;
     // Set user session
     Admin_UsersModel::set(array('session_id' => s()->getId()), array('id' => s()->user->id));
     Admin_LogsModel::insert(array('user_id' => $user_id, 'ip' => Core_Request::getInstance()->getServer('REMOTE_ADDR')), Admin_LogsModel::USER_LOGIN);
     Cms_UserData::refresh(array(Cms_UserData::ATTR_ALL));
     return s()->user->id ? true : false;
 }
Ejemplo n.º 9
0
 public function createPaging($total_results, $per_page, array $parameters = array())
 {
     $id = !empty($parameters[self::PARAM_ID]) ? $parameters[self::PARAM_ID] : self::Admin_ID;
     self::$store[$id] = $parameters;
     self::$store[$id][self::PARAM_TOTAL_RESULTS] = $total_results;
     self::$store[$id][self::PARAM_PER_PAGE] = $per_page;
     self::$store[$id][self::PARAM_TOTAL_PAGES] = ceil($total_results / $per_page);
     if (empty(self::$store[$id][self::PARAM_CURRENT_PAGE])) {
         $request = Core_Request::getInstance();
         self::$store[$id][self::PARAM_CURRENT_PAGE] = $request->{$id . 'p'} ? $request->{$id . 'p'} : 1;
     }
     if (empty(self::$store[$id][self::PARAM_MAX_PAGES])) {
         self::$store[$id][self::PARAM_MAX_PAGES] = self::MAX_PAGES;
     }
     if (empty(self::$store[$id][self::PARAM_SUFIX])) {
         self::$store[$id][self::PARAM_SUFIX] = '';
     }
 }
Ejemplo n.º 10
0
 /**
  * @throws Exception
  */
 public function indexAction()
 {
     $migration_time = time();
     $migration_name = time();
     if (!$migration_name) {
         throw new Exception('No migration name given');
     }
     $filename = cfg()->migration_path . $migration_name . '.php';
     if (Core_Files::fileSize($filename)) {
         throw new Exception('Migration with that name exists');
     }
     $template_data = Core_Files::getContent(cfg()->migration_path . Const_Migrations::TEMPLATE_FILE_NAME);
     $template_data = str_replace('Template', $migration_name, $template_data);
     $template_data = str_replace('__NAME__', $migration_name, $template_data);
     $template_data = str_replace('__CREATED_AT__', $migration_time, $template_data);
     $template_data = str_replace('__CREATED_CFG__', Core_Request::getInstance()->getArgv(1), $template_data);
     Core_Files::putContent($filename, $template_data);
     echo PHP_EOL . 'Migration ' . $filename . ' created' . PHP_EOL . PHP_EOL;
 }
Ejemplo n.º 11
0
 /**
  * @return Core_Request
  */
 public final function getRequest()
 {
     return Core_Request::getInstance();
 }
Ejemplo n.º 12
0
 /**
  *
  */
 public function __construct()
 {
     $this->request = Core_Request::getInstance();
 }
Ejemplo n.º 13
0
 public function dispatch()
 {
     $controller = $this->_dispatchInfo['controller'];
     $action = $this->_dispatchInfo['action'];
     $params = $this->_dispatchInfo['params'];
     // 储存URL参数
     if ($params) {
         Core_Request::getInstance()->setParams($params);
     }
     // 如果抛出异常,则由异常处理器处理
     if ($controller == 'Core_Exception_Error') {
         $className = $controller;
         $classPath = SYS_PATH . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $controller) . '.php';
     } else {
         $className = "Controller" . "_" . ucfirst($controller);
         $classPath = APP_PATH . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
     }
     // 先检测文件是否查找
     if (!file_exists($classPath)) {
         throw new Core_Exception_Fatal('Unable To find file - ' . $classPath);
     }
     // 然后再包含文件
     require $classPath;
     if (!class_exists($className)) {
         throw new Core_Exception_Fatal('Unable to find controller - ' . $classPath);
     }
     $controllerObj = new $className();
     $actionMethod = $action . 'Action';
     // 方法不存在
     if (!method_exists($controllerObj, $actionMethod)) {
         throw new Core_Exception_Fatal('Unable to find action - ' . $className . '::' . $actionMethod, 404);
     }
     $result = call_user_func(array($controllerObj, $actionMethod));
     if (isset($controllerObj->autoRender) && $controllerObj->autoRender) {
         if (null === $result || $result !== false) {
             $tpl = $controllerObj->getTpl() ?: strtolower($controller) . DS . strtolower($action);
             $tplFilePath = template($tpl);
             if (!is_file($tplFilePath)) {
                 throw new Core_Exception_Fatal('Unable to find template - ' . $tplFilePath);
             }
             Core_View::getInstance()->display($tpl);
         }
     }
 }