Exemplo n.º 1
0
 /**
  * Сделать апдейт таймлайна прямого общения
  * 
  * @param string $name
  */
 public function directUpdate($name)
 {
     /**
      * Если пользователь имеет возможность работать с рабочим пространством
      */
     if ($this->acl->isAllowed($this->user['role'], ACL_RESOURCE_WORKSPACE, ACL_ACTION_WORK)) {
         $S =& $this->view->smarty;
         /**
          * Если данные не пришли, либо не верны
          */
         if (!(($direct = $this->input->post('direct')) !== FALSE && isset($direct['text']) && !empty($direct['text']))) {
             trigger500();
         }
         /**
          * Получаем и аутентифицируемся в модели
          */
         $M = TwitterModel::getInstance();
         $M->login($this->user['login']);
         $M->password($this->user['password']);
         /**
          * Запрос на добавление
          */
         $result = $M->directNew($name, $direct['text']);
         /**
          * Если код ответа на запрос более либо равен 300, то считаем это за ошибку
          */
         if ($M->isError()) {
             trigger500();
         }
     } else {
         trigger404();
     }
 }
Exemplo n.º 2
0
 /**
  * 实例化一个模型
  * @param type $classname_path
  * @param type $hmvc_module_floder
  * @return type WoniuModel
  */
 public static function instance($classname_path = null, $hmvc_module_floder = NULL)
 {
     if (!empty($hmvc_module_floder)) {
         WoniuRouter::switchHmvcConfig($hmvc_module_floder);
     }
     //这里调用控制器instance是为了触发自动加载,从而避免了插件模式下,直接instance模型,自动加载失效的问题
     WoniuController::instance();
     if (empty($classname_path)) {
         $renew = is_bool($classname_path) && $classname_path === true;
         WoniuLoader::classAutoloadRegister();
         return empty(self::$instance) || $renew ? self::$instance = new self() : self::$instance;
     }
     $system = WoniuLoader::$system;
     $classname_path = str_replace('.', DIRECTORY_SEPARATOR, $classname_path);
     $classname = basename($classname_path);
     $model_folders = $system['model_folder'];
     if (!is_array($model_folders)) {
         $model_folders = array($model_folders);
     }
     $count = count($model_folders);
     //在plugin模式下,路由器不再使用,那么自动注册不会被执行,自动加载功能会失效,所以在这里再尝试加载一次,
     //如此一来就能满足两种模式
     WoniuLoader::classAutoloadRegister();
     foreach ($model_folders as $key => $model_folder) {
         $filepath = $model_folder . DIRECTORY_SEPARATOR . $classname_path . $system['model_file_subfix'];
         $alias_name = $classname;
         if (in_array($alias_name, array_keys(WoniuModelLoader::$model_files))) {
             return WoniuModelLoader::$model_files[$alias_name];
         }
         if (file_exists($filepath)) {
             if (!class_exists($classname, FALSE)) {
                 WoniuLoader::includeOnce($filepath);
             }
             if (class_exists($classname, FALSE)) {
                 return WoniuModelLoader::$model_files[$alias_name] = new $classname();
             } else {
                 if ($key == $count - 1) {
                     trigger404('Model Class:' . $classname . ' not found.');
                 }
             }
         } else {
             if ($key == $count - 1) {
                 trigger404($filepath . ' not  found.');
             }
         }
     }
 }
Exemplo n.º 3
0
 private static function getQueryStr()
 {
     $system = systemInfo();
     //命令行运行检查
     if (MpInput::isCli()) {
         global $argv;
         $pathinfo_query = isset($argv[1]) ? $argv[1] : '';
     } else {
         $pathinfo = @parse_url($_SERVER['REQUEST_URI']);
         //			print_r($pathinfo);
         if (empty($pathinfo)) {
             if ($system['debug']) {
                 trigger404('request parse error:' . $_SERVER['REQUEST_URI']);
             } else {
                 trigger404();
             }
         }
         //pathinfo模式下有?,那么$pathinfo['query']也是非空的,这个时候查询字符串是PATH_INFO和query
         $query_str = empty($pathinfo['query']) ? '' : $pathinfo['query'];
         //print_r($query_str);
         $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['REDIRECT_URL']) ? $_SERVER['REDIRECT_URL'] : '');
         //$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : (isset($_SERVER['REDIRECT_PATH_INFO']) ? $_SERVER['REDIRECT_PATH_INFO'] : '');
         $pathinfo_query = empty($path_info) ? $query_str : $path_info . '&' . $query_str;
     }
     if ($pathinfo_query) {
         $pathinfo_query = trim($pathinfo_query, '/&');
     }
     //add by sham
     //add by sham
     //urldecode 解码所有的参数名,解决get表单会编码参数名称的问题
     $pq = $_pq = array();
     $_pq = explode('&', $pathinfo_query);
     foreach ($_pq as $value) {
         $p = explode('=', $value);
         if (isset($p[0])) {
             $p[0] = urldecode($p[0]);
         }
         $pq[] = implode('=', $p);
     }
     $pathinfo_query = implode('&', $pq);
     return $pathinfo_query;
 }
Exemplo n.º 4
0
 /**
  * Подключить контроллер, проверить доступность метода, и вызвать
  *
  * @param string $controller Контроллер
  * @param string $method Метод
  * @param array $arguments Аргументы
  * @return mixed Возвращённое методом контроллера значение
  */
 private function callControllerMethod($controller, $method, $arguments = array(), $trigger = self::TRIGGER_ERROR)
 {
     /**
      * Получение имени контроллера и метода
      * Заменяются псевдоразделители '_' на '/' и первая буква каждой части делается заглавной
      */
     $temp = explode('_', $controller);
     foreach ($temp as &$value) {
         $value = ucwords(strtolower($value));
     }
     $controller = implode('_', $temp);
     /**
      * Проверка объявлен ли класс с таким именем
      * Если нет, выдаётся ошибка если надо
      */
     if (!class_exists($controller)) {
         /**
          * Проверка существует ли файл с контроллером и его подключение
          */
         if (file_exists($temp = CONTROLLERS_PATH . str_replace('_', '/', $controller) . EXT)) {
             require_once $temp;
         } else {
             switch ($trigger) {
                 case self::TRIGGER_404:
                     trigger404();
                     break;
                 case self::TRIGGER_ERROR:
                     trigger_error(sprintf(Open_Text::getInstance()->dget('errors', 'Controller <b>%s</b> was not found'), $controller), E_USER_ERROR);
                 default:
                 case self::TRIGGER_NONE:
                     break;
             }
         }
     }
     /**
      * Получение ссылки на объект контроллера
      */
     $C = call_user_func(array($controller, 'getInstance'), $controller);
     /**
      * Проверка возможно ли вызвать метод котроллера
      * Если нет, выдаётся ошибка если надо
      */
     if (!is_callable(array($C, $method))) {
         switch ($trigger) {
             case self::TRIGGER_404:
                 trigger404();
                 break;
             case self::TRIGGER_ERROR:
                 trigger_error(sprintf(Open_Text::getInstance()->dget('errors', 'Method <b>%s</b> of controller <b>%s</b> cannot be called'), $method, $controller), E_USER_ERROR);
             default:
             case self::TRIGGER_NONE:
                 break;
         }
     }
     /**
      * Вызов метода
      */
     return call_user_func_array(array($C, $method), $arguments);
 }
Exemplo n.º 5
0
 public static function instance($classname_path = null, $hmvc_module_floder = NULL)
 {
     if (!empty($hmvc_module_floder)) {
         MpRouter::switchHmvcConfig($hmvc_module_floder);
     }
     WoniuController::instance();
     if (empty($classname_path)) {
         $renew = is_bool($classname_path) && $classname_path === true;
         MpLoader::classAutoloadRegister();
         return empty(self::$instance) || $renew ? self::$instance = new self() : self::$instance;
     }
     $system = systemInfo();
     $classname_path = str_replace('.', DIRECTORY_SEPARATOR, $classname_path);
     $classname = basename($classname_path);
     $model_folders = $system['model_folder'];
     if (!is_array($model_folders)) {
         $model_folders = array($model_folders);
     }
     $count = count($model_folders);
     MpLoader::classAutoloadRegister();
     foreach ($model_folders as $key => $model_folder) {
         $filepath = $model_folder . DIRECTORY_SEPARATOR . $classname_path . $system['model_file_subfix'];
         $alias_name = $classname;
         if (in_array($alias_name, array_keys(WoniuModelLoader::$model_files))) {
             return WoniuModelLoader::$model_files[$alias_name];
         }
         if (file_exists($filepath)) {
             if (!class_exists($classname, FALSE)) {
                 MpLoader::includeOnce($filepath);
             }
             if (class_exists($classname, FALSE)) {
                 return WoniuModelLoader::$model_files[$alias_name] = new $classname();
             } else {
                 if ($key == $count - 1) {
                     trigger404('Model Class:' . $classname . ' not found.');
                 }
             }
         } else {
             if ($key == $count - 1) {
                 trigger404($filepath . ' not  found.');
             }
         }
     }
 }