Обработчик HTTP запроса.  Возвращает  изображение  в  бинарный
поток  или  ссылку для атрибута  src при  обновлении  изображения
439842
public function RequestHandle()
    {
        if (\Zippy\WebApplication::$app->getRequest()->isBinaryRequest()) {
            $this->binaryOutput();
        }
        if (\Zippy\WebApplication::$app->getRequest()->isAjaxRequest()) {
            $this->Refresh();
            \Zippy\WebApplication::$app->getResponse()->addAjaxResponse($this->AjaxAnswer());
        }
    }
827845
function getExternal($as_html = true) {
        if(!$as_html) {
            return $this->js_external;
        }
        if(!count($this->js_external)) {
            return '';
        }
        //если не надо собирать все в один билд-файл
        if(!(bool) env('LARAKIT_STATIC_JS_EXTERNAL_BUILD', false)) {
            $js_code = '';
            foreach($this->js_external as $js => $_js) {
                $condition = Arr::get($_js, 'condition');
                //если надо подключать все по отдельности
                $js_code .= $this->getLink($js, $condition) . PHP_EOL;
            }
            
            return $js_code;
        } else {
            $build           = [];
            $no_build_before = [];
            $no_build_after  = [];
            $no_build        = [];
            $js_code         = '';
            foreach($this->js_external as $js => $_js) {
                $condition = Arr::get($_js, 'condition');
                $no_build = (int)Arr::get($_js, 'no_build');
//                if(0!=$no_build){
//                    dump($no_build,$js, $_js);
//                }
                switch(true){
                    //after
                    case -1===$no_build:
                        $no_build_after[$condition][] = $js;
                        break;
                    //before
                    case 1===$no_build:
                        $no_build_before[$condition][] = $js;
                        break;
                    default:
                        $build[$condition][] = $js;
                        break;
                }
            }
//            dd($no_build_before,$no_build_after);
            foreach($no_build_before as $condition => $jses) {
                $js_code .= '<!-- [no build before build] -->' . PHP_EOL;
                foreach($jses as $url) {
                    $js_code .= $this->getLink($url, $condition, false) . PHP_EOL;
                }
                $js_code .= '<!-- [/no build before build] -->' . PHP_EOL;
            }
            foreach($build as $condition => $js) {
                $build_name = $this->makeFileName($this->js_external, 'js/external' . ($condition ? '/' . $condition : ''), 'js');
                $build_file = $this->buildFile($build_name);
                if(!file_exists($build_file)) {
                    //соберем билд в первый раз
                    $build = [];
                    foreach($js as $url) {
                        $parse  = parse_url($url);
                        $host   = Arr::get($parse, 'host');
                        $source = null;
                        if(!$host) {
                            $source = public_path($url);
                            if(!file_exists($source)) {
                                $source = \URL::to($url);
                            }
                        } else {
                            if(mb_substr($url, 0, 2) == '//') {
                                $url = 'http:' . $url;
                            }
                            $source = $url;
                        }
                        $_js     = file_get_contents($source);
                        $_js     = $this->prepare($_js, (mb_strpos($url, '.min.') !== false) && config('larakit.lk-staticfiles.js.external.min'));
                        $build[] = "/**********************************************************************" . PHP_EOL;
                        $build[] = '* ' . $url . PHP_EOL;
                        $build[] = "**********************************************************************/" . PHP_EOL;
                        $build[] = $_js . PHP_EOL . PHP_EOL;
                    }
                    //если требуется собирать инлайн скрипты в один внешний файл
                    $this->requireBuild($build_name, implode("", $build));
                }
                $js_code .= $this->getLink($this->buildUrl($build_name), $condition) . PHP_EOL;
            }
            foreach($no_build_after as $condition => $jses) {
                $js_code .= '<!-- [no build after build] -->' . PHP_EOL;
                foreach($jses as $url) {
                    $js_code .= $this->getLink($url, $condition, false) . PHP_EOL;
                }
                $js_code .= '<!-- [/no build after build] -->' . PHP_EOL;
            }
            
            
            //$build_name = $this->makeFileName($this->js_inline, 'js/onload', 'js');
            
            return $js_code;
        }
    }
1090932
function capture($data, $stack = null, $vars = null)
    {
        if (!isset($data['timestamp'])) {
            $data['timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
        }
        if (!isset($data['level'])) {
            $data['level'] = self::ERROR;
        }
        if (!isset($data['tags'])) {
            $data['tags'] = [];
        }
        if (!isset($data['extra'])) {
            $data['extra'] = [];
        }
        if (!isset($data['event_id'])) {
            $data['event_id'] = $this->uuid4();
        }

        if (isset($data['message'])) {
            $data['message'] = substr($data['message'], 0, $this->message_limit);
        }

        $data = array_merge($this->get_default_data(), $data);

        if ($this->is_http_request()) {
            $data = array_merge($this->get_http_data(), $data);
        }

        $data = array_merge($this->get_user_data(), $data);

        if ($this->release) {
            $data['release'] = $this->release;
        }
        if ($this->environment) {
            $data['environment'] = $this->environment;
        }
		/**
		 * 2017-01-10
		 * 1) $this->tags — это теги, которые были заданы в конструкторе:
		 * @see \Df\Sentry\Client::__construct()
		 * Они имеют наинизший приоритет.
		 * 2) Намеренно использую здесь + вместо @see df_extend(),
		 * потому что массив tags должен быть одномерным (и поэтому для него + достаточно),
		 * а массив extra хоть и может быть многомерен, однако вряд ли для нас имеет смысл
		 * слияние его элементов на внутренних уровнях вложенности.
		 */
        $data['tags'] += $this->context->tags + $this->tags;
        /** @var array(string => mixed) */
        $extra = $data['extra'] + $this->context->extra + $this->get_extra_data();
		// 2017-01-03
		// Этот полный JSON в конце массива может быть обрублен в интерфейсе Sentry
		// (и, соответственно, так же обрублен при просмотре события в формате JSON
		// по ссылке в шапке экрана события в Sentry),
		// однако всё равно удобно видеть данные в JSON, пусть даже в обрубленном виде.
        $data['extra'] = Extra::adjust($extra) + ['_json' => df_json_encode($extra)];
		$data = df_clean($data);

        if (!$this->breadcrumbs->is_empty()) {
            $data['breadcrumbs'] = $this->breadcrumbs->fetch();
        }

        if ((!$stack && $this->auto_log_stacks) || $stack === true) {
            $stack = debug_backtrace();

            // Drop last stack
            array_shift($stack);
        }

        if (!empty($stack)) {
            if (!isset($data['stacktrace']) && !isset($data['exception'])) {
                $data['stacktrace'] = array(
                    'frames' => Stacktrace::get_stack_info(
                        $stack, $this->trace, $vars, $this->message_limit, $this->prefixes,
                        $this->app_path, $this->excluded_app_paths, $this->serializer, $this->reprSerializer
                    ),
                );
            }
        }

        $this->sanitize($data);
        $this->process($data);

        if (!$this->store_errors_for_bulk_send) {
            $this->send($data);
        } else {
            $this->_pending_events[] = $data;
        }

        $this->_last_event_id = $data['event_id'];

        return $data['event_id'];
    }
1078058
public function getShortAddressString()
    {
        //Оно может быть не сохранено если определяли по ip
        $result = [];

        $result[] = ArrayHelper::getValue($this->data, 'street_with_type');

        if (ArrayHelper::getValue($this->data, 'house'))
        {
            $result[] = ArrayHelper::getValue($this->data, 'house_type') . " " . ArrayHelper::getValue($this->data, 'house');
        }
        if (ArrayHelper::getValue($this->data, 'flat'))
        {
            $result[] = ArrayHelper::getValue($this->data, 'flat_type') . " " . ArrayHelper::getValue($this->data, 'flat');
        }

        $result = array_unique($result);

        foreach ($result as $key => $value)
        {
            if (!$value)
            {
                unset($result[$key]);
            }
        }

        return implode(", ", $result);
    }
207472
public function addPluginSeo()
    {
        $row = new FormInput('seo_title', 'Title материала');
        $this->rows['seo_title'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
            ->setTypo()->setHelp('По-умолчанию равно заголовку материала');

        $row = new FormInput('seo_description', 'Description материала');
        $this->rows['seo_description'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
            ->setTypo()->setHelp('По-умолчанию равно заголовку материала');

        $row = new FormTextarea('seo_keywords', 'Keywords материала');
        $this->rows['seo_keywords'] = $rows_plugin[] = $row->setTab('seo', 'Seo')->setValid('max:255')
            ->setCssClass('not-editor uk-width-1-1');

        $this->plugins_backend['seo']['rows'] = $rows_plugin;

        $row = new FormInput('url', 'URL материала');
        $this->rows['url'] = $row->setTab('seo', 'SEO')
            ->setValid('max:155|required|unique:'.$this->table)->setCssClass('uk-width-1-1')->setFillable();

        return $this;
    }
893221
static function output_parse($html_bb)
	{
		// Обработка <!--[[use ...]]-->

		$html_bb = preg_replace_callback(array(
			'/<!--###use\s+(\w+)\s*=\s*"([^"]+?)\s*"\s*###-->/s',
			"/<!--###use\s+(\w+)\s*=\s*'([^']+?)\s*'\s*###-->/s",
			"/<!--###use\s+(\w+)\s*=\s*([^\]]+?)\s*###-->/s",
		), function ($text) { return bors_lcml::_output_parse_use($text); }, $html_bb);

//		if(class_exists('airbase_fun'))
//			$html_bb = airbase_fun::replace_2014($html_bb);

		return $html_bb;
	}
178604
public function actionForget()
    {
        $rr = new RequestResponse();
        $model = new PasswordResetRequestFormEmailOrLogin();
        //Не админка
        $model->isAdmin = false;

        //Запрос на валидацию ajax формы
        if ($rr->isRequestOnValidateAjaxForm()) {
            return $rr->ajaxValidateForm($model);
        }
        //Запрос ajax post
        if ($rr->isRequestAjaxPost()) {
            if ($model->load(\Yii::$app->request->post()) && $model->sendEmail()) {
                $rr->success = true;
                $rr->message = 'Проверьте ваш email, дальнейшие инструкции мы отправили туда';
            } else {
                $rr->message = 'Не удалось выполнить запрос на восстановление пароля';
            }

            return (array)$rr;

        } else {
            if (\Yii::$app->request->isPost) {
                if ($model->load(\Yii::$app->request->post()) && $model->sendEmail()) {
                    if ($ref = UrlHelper::getCurrent()->getRef()) {
                        return $this->redirect($ref);
                    } else {
                        return $this->goBack();
                    }
                }
            }
        }

        return $this->render('forget', [
            'model' => $model,
        ]);
    }
625316
function load_uri($uri)
	{
		foreach($this->projects() as $project)
		{
			// У каждого проекта — собственный роутер
			if($router = $project->router())
			{
				if($obj = $router->load_uri($uri))
					return $obj;
			}
			else
				echo "Not defined router for project ".get_class($project)."<br/>\n";
		}

		return NULL;
	}
1225223
static function get_cached($url, $ttl = 86400, $raw = false, $force = false, $max_length = 1000000)
	{
		//FIXME: Придумать более изящный способ
		$cache_status_save = config('cache_disabled');
		config_set('cache_disabled', false);
		debug_count_inc('bors_lib_url: get_cached('.$url.')');
		$cache = new bors_cache();
		if($cache->get('bors_lib_http.get_cached-v2', $url) && !$force)
		{
			debug_count_inc('bors_lib_url: get_cached('.$url.'):found');
			$res = $cache->last();
			config_set('cache_disabled', $cache_status_save);
			return $res;
		}

		$x = self::get_ex($url, array('is_raw' => $raw));
		$content = $x['content'];

		// Запоминаем не более одного мегабайта, а то по max_allowed_packet можно влететь.
		if(strlen($content) > $max_length)
			$content = substr($content, 0, $max_length);

		debug_count_inc('bors_lib_url: get_cached('.$url.'):store');
		$cache->set($content, $ttl);
		config_set('cache_disabled', $cache_status_save);
		return $content;
	}
1040317
public function actionProcess()
    {
        ini_set("memory_limit", "512M");

        $imaging = \Yii::$app->imaging;
        if (!$imaging) {
            //TODO: можно добавить проверку YII ensure...
            throw new \yii\base\Exception("Component Imaging not found");
        }

        $newFileSrc = \Yii::$app->request->getPathInfo();
        $extension = Imaging::getExtension($newFileSrc);

        if (!$extension) {
            throw new \yii\base\Exception("Extension not found: ".$newFileSrc);
        }


        if (!$imaging->isAllowExtension($extension)) {
            throw new \yii\base\Exception("Extension '{$extension}' not supported in Imaging component");
        }


        $newFile = File::object($newFileSrc);
        $strposFilter = strpos($newFileSrc, "/".Imaging::THUMBNAIL_PREFIX);
        if (!$strposFilter) {
            throw new NotFoundHttpException("This is not a filter thumbnail: ".$newFileSrc);
        }

        $originalFileSrc = substr($newFileSrc, 0, $strposFilter).".".$newFile->getExtension();

        //TODO: hardcode delete it in the future
        $webRoot = \Yii::getAlias('@webroot');

        $originalFileRoot = $webRoot.DIRECTORY_SEPARATOR.$originalFileSrc;
        $newFileRoot = $webRoot.DIRECTORY_SEPARATOR.$newFileSrc;
        $newFileRootDefault = $webRoot.DIRECTORY_SEPARATOR.str_replace($newFile->getBaseName(),
                Imaging::DEFAULT_THUMBNAIL_FILENAME.".".$extension, $newFileSrc);

        $originalFile = new File($originalFileRoot);

        if (!$originalFile->isExist()) {
            throw new NotFoundHttpException("The original file is not found: ".$newFileSrc);
        }

        //Проверено наличие оригинального файла, есть пути к оригиналу, и результирующему файлу.
        //Отслось собрать фильтр, и проверить наличие параметров. А так же проверить разрешены ли эти параметры, для этого в строке есть захэшированный ключь

        $filterSting = substr($newFileSrc, ($strposFilter + strlen(DIRECTORY_SEPARATOR.Imaging::THUMBNAIL_PREFIX)),
            strlen($newFileSrc));
        $filterCode = explode("/", $filterSting);
        $filterCode = $filterCode[0]; //Код фильтра

        //Если указаны парамтры, то ноужно проверить контрольную строчку, и если они не соответствуют ей, то ничего делать не будем
        if ($params = \Yii::$app->request->get()) {
            $pramsCheckArray = explode(DIRECTORY_SEPARATOR, $filterSting);
            if (count($pramsCheckArray) < 3) {
                throw new \yii\base\Exception("the control line not found: ".$newFileSrc);
            }

            $string = $imaging->getParamsCheckString($params);
            if ($pramsCheckArray[1] != $string) {
                throw new \yii\base\Exception("Parameters invalid: ".$newFileSrc);
            }
        }

        $filterClass = str_replace("-", "\\", $filterCode);


        if (!class_exists($filterClass)) {
            throw new \ErrorException("Filter class is not created: ".$newFileSrc);
        }

        /**
         * @var Filter $filter
         */
        $filter = new $filterClass((array)$params);
        if (!is_subclass_of($filter, Filter::className())) {
            throw new NotFoundHttpException("No child filter class: ".$newFileSrc);
        }

        try {
            //Проверяем а создан ли уже файл, и если да то просто делаем на него ссылку.
            $filter
                ->setOriginalRootFilePath($originalFileRoot)
                ->setNewRootFilePath($newFileRootDefault)
                ->save();

            if (PHP_OS === 'Windows') {
                if ($newFileRoot != $newFileRootDefault) {
                    //Не тестировалось
                    copy($newFileRootDefault, $newFileRoot);
                }
            } else {
                if ($newFileRoot != $newFileRootDefault) {
                    symlink($newFileRootDefault, $newFileRoot);
                }
            }

            $url = \Yii::$app->request->getUrl().($params ?
                    ""//"?" . http_build_query($params) . '&sx-refresh'
                    : '?sx-refresh');

            /*Header("HTTP/1.0 200 OK");
            Image::getImagine()->open($newFileRootDefault)->show('png');
            return '';*/

            return \Yii::$app->response->redirect($url, 302);

        } catch (\Exception $e) {
            return $e->getMessage();
        }
    }
1295823
private function renderControls()
	{
		$maxFileSize = floor(Eresus_PHP::getMaxUploadSize() / 1024 / 1024) . ' Mb';
		$result =
			"<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n".
			"<tr><td align=\"center\">Загрузить файл</td><td><form name=\"upload\" action=\"".
				Eresus_CMS::getLegacyKernel()->request['url']."\" method=\"post\" " .
				"enctype=\"multipart/form-data\"><div id=\"fm_upload\"><input type=\"file\" " .
				"name=\"upload\" size=\"50\"><input type=\"submit\" value=\"Загрузить\"> " .
				"Максимальный размер файла: " . $maxFileSize . "</div></form></td></tr>".
			"<tr><td align=\"center\"><a href=\"javascript:Copy('SelFileName');\">Скопировать имя</a>" .
			"</td><td style=\"width: 100%;\"><input type=\"text\" id=\"SelFileName\" value=\"" .
				"Нет выбранных объектов\" style=\"width: 100%;\"></td></tr>".
			"</table>";
		return $result;
	}
542447
function insert()
    {
        # Получение данных
        $item = array(
            'name' => arg('name', 'dbsafe'),
            'login' => arg('login', '/[^a-z0-9_]/'),
            'access' => arg('access', 'int'),
            'hash' => Eresus_CMS::getLegacyKernel()->password_hash(arg('pswd1')),
            'mail' => arg('mail', 'dbsafe'),
        );
        # Проверка входных данных
        $error = false;
        if (empty($item['name']))
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage(admUsersNameInvalid);
            $error = true;
        }
        if (empty($item['login']))
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage(admUsersLoginInvalid);
            $error = true;
        }
        if ($item['access'] <= ROOT)
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage('Invalid access level!');
            $error = true;
        }
        if ($item['hash'] != Eresus_CMS::getLegacyKernel()->password_hash(arg('pswd2')))
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage(admUsersConfirmInvalid);
            $error = true;
        }
        # Проверка данных на уникальность
        $check = $this->accounts->get("`login` = '{$item['login']}'");
        if ($check)
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage(admUsersLoginExists);
            $error = true;
        }
        if ($error)
        {
            saveRequest();
            HTTP::redirect(Eresus_CMS::getLegacyKernel()->request['referer']);
        }
        if (!$this->accounts->add($item))
        {
            Eresus_Kernel::app()->getPage()->addErrorMessage('Error creating user account');
        }
        HTTP::redirect(arg('submitURL'));
    }
870112
public function actionRegisterByEmail()
    {
        if (!\Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $rr = new RequestResponse();
        $model = new SignupForm();

        $model->scenario = SignupForm::SCENARION_ONLYEMAIL;


        //Запрос на валидацию ajax формы
        if ($rr->isRequestOnValidateAjaxForm()) {
            return $rr->ajaxValidateForm($model);
        }
        //Запрос ajax post
        if ($rr->isRequestAjaxPost()) {

            $t = \Yii::$app->db->beginTransaction();

            try {

                if ($model->load(\Yii::$app->request->post()) && $registeredUser = $model->signup()) {

                    $t->commit();

                    $rr->success = true;
                    $rr->message = 'Для дальнейших действий, проверьте вашу почту.';

                    return $rr;

                } else {
                    $rr->message = 'Не удалось зарегистрироваться';
                }

            } catch (\Exception $e) {
                $t->rollBack();
                throw $e;
            }


            return (array)$rr;

        }

        return $this->render('register', [
            'model' => $model,
        ]);
    }
114500
public function postCreateOrder()
	{
		$data = Input::all();
		//Проверяем данные на валидность
		$validator = Validator::make(
			$data,
			Validators::rulesForNewOrder(),
			Validators::messagesForErrors()
		);
		$userMessages = $validator->messages();

		//Если есть ошибки, возвращаем
		if ($validator->fails()) {
			$result['errors'] = array(
				'item'    => $userMessages->first('item'),
				'sum'     => $userMessages->first('sum'),
				'tel'     => $userMessages->first('tel'),
				'comment' => $userMessages->first('comment'),
			);

			return $result;
		}
		//Предполагаем ошибку
		$result['errors'] = array(
			'common' => 'Ошибка. Повторите ещё раз.',
		);

		//Создаём заказ
		$data['user_id'] = Config::get('ff-qiwi-shop::user_id');
		$validity = Setting::find($data['user_id'])->lifetime;
		$data['lifetime'] = date('Y-m-d H:i:s', time() + 3600 * 24 * $validity);

		$order = new Order();
		$order->saveData($data);

		//Если заказ создан, то вместо ошибки отдаём ОК
		if ($order) {
			$result = array(
				'result'   => 'ok',
				'order_id' => $order->id,
				'message'  => 'Заказ №' . $order->id . ' успешно создан.',
			);
		}

		return $result;
	}
623002
public function main()
    {
        $mainPageHTML = '';
        $dbMaterials = array();

        // Получим все материалы
        if (
        dbQuery('samsoncms\api\Material')
            ->join('user')
            ->cond('Active', 1)
            ->cond('Draft', 0)
            ->order_by('Created', 'DESC')
            ->cond('Name', "", dbRelation::NOT_EQUAL)
            ->limit(5)
            ->exec($dbMaterials)
        ) {
            // Render material rows
            $rowsHTML = '';
            foreach ($dbMaterials as $dbMaterial) {
                $rowsHTML .= $this->view('main/row')
                    ->set($dbMaterial, 'material')
                    ->set(isset($dbMaterial->onetoone['_user']) ? $dbMaterial->onetoone['_user'] : array(), 'user')
                    ->output();
            }

            for ($i = sizeof($dbMaterials); $i < 5; $i++) {
                $rowsHTML .= $this->view('main/row')->output();
            }

            // Render main template
            $mainPageHTML = $this->view('main/index')->set($rowsHTML, 'rows')->output();
        }

        // Return material block HTML on main page
        return $mainPageHTML;
    }
237083
function handler()
    {
        if (!isset($this->_handler)){
            $file = $this->getDir().'/'.$this->file;
            switch ($this->ext()){
                case 'gif':
                    $this->_handler = @imagecreatefromgif($file);
                    break;
                case 'png':
                    $this->_handler = @imagecreatefrompng($file);
                    break;
                case 'jpg':
                    $this->_handler = @imagecreatefromjpeg($file);
                    break;
                default:
                    throw new \Exception('Не поддерживаем тип файла-изображения');
            }
        }
        return $this->_handler;
    }
471052
protected function getHostName()
    {
        // Сначала проверьте наличие прокси-сервера
        $header = $this->getHeader('X_FORWARDED_HOST');
        if ($header && $this->isValidForwardedHost($header)) {
            $elements = explode(',', $header);
            $host = $elements[count($elements) - 1];
        } elseif (!$host = $this->getHeader('HOST')) {
            if (!$host = $this->getServerVar('SERVER_NAME')) {
                $host = $this->getServerVar('SERVER_ADDR');
            }
        }

        // обрезать и удалять номер порта с хоста
        // host в нижнем регистре согласно RFC 952/2181
        $host = strtolower(preg_replace('/:\d+$/', '', trim($host)));

        //Номер порта
        $scheme = $this->getHttpScheme();
        $port = $this->getCurrentPort();
        $appendPort = ':' . $port;

        //Не добавляйте номер порта, если нормальный порт.
        if (($scheme == 'http' && $port == '80') || ($scheme == 'https' && $port == '443')) {
            $appendPort = '';
        }

        return $host . $appendPort;
    }