Exemple #1
0
 /**
  * Runs the action
  *
  * @return string result content
  */
 public function run()
 {
     if (($exception = Yii::$app->getErrorHandler()->exception) === null) {
         return '';
     }
     if ($exception instanceof \HttpException) {
         $code = $exception->statusCode;
     } else {
         $code = $exception->getCode();
     }
     if ($exception instanceof Exception) {
         $name = $exception->getName();
     } else {
         $name = $this->defaultName ?: Yii::t('yii', 'Error');
     }
     if ($code) {
         $name .= " (#{$code})";
     }
     if ($exception instanceof UserException) {
         $message = $exception->getMessage();
     } else {
         $message = $this->defaultMessage ?: Yii::t('yii', 'An internal server error occurred.');
     }
     if (Yii::$app->getRequest()->getIsAjax()) {
         $rr = new RequestResponse();
         $rr->success = false;
         $rr->message = "{$name}: {$message}";
         return (array) $rr;
     } else {
         if (\Yii::$app->admin->requestIsAdmin) {
             if (\Yii::$app->user->can(CmsManager::PERMISSION_ADMIN_ACCESS)) {
                 $this->controller->layout = \Yii::$app->cms->moduleAdmin->layout;
                 return $this->controller->render('@skeeks/cms/modules/admin/views/error/error', ['message' => nl2br(Html::encode($message))]);
             } else {
                 $this->controller->layout = '@skeeks/cms/modules/admin/views/layouts/unauthorized';
                 return $this->controller->render('@skeeks/cms/modules/admin/views/error/unauthorized-403', ['message' => nl2br(Html::encode($message))]);
             }
         } else {
             //All requests are to our backend
             //TODO::Add image processing
             $info = pathinfo(\Yii::$app->request->pathInfo);
             if ($extension = ArrayHelper::getValue($info, 'extension')) {
                 $extension = \skeeks\cms\helpers\StringHelper::strtolower($extension);
                 if (in_array($extension, ['js', 'css'])) {
                     \Yii::$app->response->format = Response::FORMAT_RAW;
                     if ($extension == 'js') {
                         \Yii::$app->response->headers->set('Content-Type', 'application/javascript');
                     }
                     if ($extension == 'css') {
                         \Yii::$app->response->headers->set('Content-Type', 'text/css');
                     }
                     $url = \Yii::$app->request->absoluteUrl;
                     return "/* File: '{$url}' not found */";
                 }
             }
             return $this->controller->render($this->view ?: $this->id, ['name' => $name, 'message' => $message, 'exception' => $exception]);
         }
     }
 }
Exemple #2
0
 /**
  * @param \yii\web\UrlManager $manager
  * @param \yii\web\Request $request
  * @return array|bool
  */
 public function parseRequest($manager, $request)
 {
     $pathInfo = $request->getPathInfo();
     $params = $request->getQueryParams();
     $sourceOriginalFile = File::object($pathInfo);
     $extension = $sourceOriginalFile->getExtension();
     if (!$extension) {
         return false;
     }
     if (!in_array(StringHelper::strtolower($extension), (array) \Yii::$app->imaging->extensions)) {
         return false;
     }
     return ['cms/imaging/process', $params];
 }
Exemple #3
0
 /**
  * Проверка валидности значения
  *
  * @param  mixed $value
  * @return Ix_Validate_Result
  */
 public function validate($extension)
 {
     return !in_array(StringHelper::strtolower($extension), self::getPossibleExtensions()) ? $this->_bad("Расширение '{$extension}' Не поддерживается данной библиотекой") : $this->_ok();
 }
Exemple #4
0
 /**
  *
  * Генерация ключевых слов
  *
  * @param string $content
  * @return string
  */
 public function keywords($content = "")
 {
     $result = "";
     $content = $this->_processPriority($content);
     if ($content) {
         //Избавляем от тегов и разбиваем в массив
         $content = preg_replace("!<script(.*?)</script>!si", "", $content);
         $content = preg_replace('/(&\\w+;)|\'/', ' ', strtolower(strip_tags($content)));
         $words = preg_split('/(\\s+)|([\\.\\,\\:\\(\\)\\"\'\\!\\;])/m', $content);
         foreach ($words as $n => $word) {
             if (strlen($word) < $this->minKeywordLenth || (int) $word || strpos($word, '/') !== false || strpos($word, '@') !== false || strpos($word, '_') !== false || strpos($word, '=') !== false || in_array(StringHelper::strtolower($word), $this->keywordsStopWords)) {
                 unset($words[$n]);
             }
         }
         // получаем массив с числом каждого слова
         $words = array_count_values($words);
         arsort($words);
         // сортируем - наиболее частые - вперед
         $words = array_keys($words);
         $count = 0;
         foreach ($words as $word) {
             if (strlen($result) > $this->maxKeywordsLength) {
                 break;
             }
             $count++;
             if ($count > 1) {
                 $result .= ', ' . StringHelper::strtolower($word);
             } else {
                 $result .= StringHelper::strtolower($word);
             }
         }
     }
     return $result;
 }