Если показываем отладочную инфу, то описываем её в конец выводимой страницы комментарием.
777485
static function append_info(&$res, $app=NULL)
	{
		if(!\B2\Cfg::get('debug.timing') || !is_string($res) || !preg_match('!</body>!i', $res))
			return;

		$deb = "<!--\n=== debug-info ===\n"
			."BORS_CORE = ".BORS_CORE."\n"
			."log dir = ".\B2\Cfg::get('debug_hidden_log_dir')."\n"
			."log created = ".date('r')."\n";

		if($app)
			$object = $app;
		else
			$object = bors()->main_object();

		if($object)
		{
			foreach(explode(' ', 'class_name class_file template body_template') as $var)
				if($val = @$object->get($var))
					$deb .= "$var = $val\n";

			if($cs = $object->cache_static())
				$deb .= "cache static expire = ". date('r', time()+$cs)."\n";
		}

		if(\B2\Cfg::get('is_developer'))
		{
			$deb .= "\n=== config ===\n"
				. "cache_database = ".\B2\Cfg::get('cache_database')."\n";
		}

		require_once BORS_CORE.'/inc/functions/debug/vars_info.php';
		require_once BORS_CORE.'/inc/functions/debug/count.php';
		require_once BORS_CORE.'/inc/functions/debug/count_info_all.php';
		require_once BORS_CORE.'/inc/functions/debug/timing_info_all.php';

		if($deb_vars = debug_vars_info())
		{
			$deb .= "\n=== debug vars: ===\n";
			$deb .= $deb_vars;
		}

		$deb .= "\n=== debug counting: ===\n";
		$deb .= debug_count_info_all();

		// Общее время работы
		$time = microtime(true) - $GLOBALS['stat']['start_microtime'];

		$deb .= "\n=== debug timing: ===\n";
		$deb .= debug_timing_info_all();
		$deb .= "Total time: $time sec.\n";
		$deb .= "-->\n";

		if(\B2\Cfg::get('is_developer'))
			bors_debug::syslog('debug/timing', $deb, false);

		$res = str_ireplace('</body>', $deb.'</body>', $res);
	}
1258112
public function find()
    {
        if ($this->owner->isNewRecord === false && SeoSlug::getDb()->getSchema()->getTableSchema(SeoSlug::tableName(), true) !== null) {
            //Сначала попробуем найти запись в кеше
            $this->_slugModel = $this->_cache->get($this->owner);
            if (is_null($this->_slugModel)) {
                $this->_slugModel = SeoSlug::find()
                    ->where([
                        'AND',
                        ['=', 'model', $this->owner->className()],
                        ['=', 'model_id', $this->owner->getPrimaryKey()],
                    ])
                    ->orderBy(['id' => SORT_DESC])
                    ->one();
                //Если запись найдена положим найденную запись в кеш
                if ($this->_slugModel) {
                    $this->_cache->set($this->owner, $this->_slugModel);
                }
            }
            //Если запись найдена и указано поле в родительской модели то присвоем ему значение этого алиаса
            if ($this->_slugModel && $this->slugAttribute) {
                $this->owner->{$this->slugAttribute} = $this->_slugModel->slug;
            }
        }
    }
182644
private function actionUpdate()
    {
        $oldName = arg('update');
        $newName = arg('name');
        $forms = $this->plugin->getForms();
        if ($oldName == $newName || $forms->get($newName) === false)
        {
            $forms->update($oldName, arg('code'), arg('title'));

            $url = arg('submitURL');
            if ($oldName != $newName)
            {
                $forms->rename($oldName, $newName);
                $url = str_replace('edit=' . $oldName, 'edit=' . $newName, $url);
            }
            HTTP::redirect($url);
        }
        ErrorMessage('Форма с таким именем уже есть! Укажите другое имя.');
        return $this->actionEditDialog($oldName);
    }
227340
function execute(O $o) {
		$c = df_customer($o['customer']); /** @var Customer $c */
		$s = df_customer_session(); /** @var Session $s */
		if ($s->getDfSsoId()) {
			$c[Schema::fIdC($s->getDfSsoProvider())] = $s->getDfSsoId();
			/**
			 * 2016-12-04
			 * Нельзя использовать здесь @see df_eav_update(),
			 * потому что наше поле не является атрибутом EAV,
			 * а является просто полем таблицы customer_entity.
			 */
			$c->save();
		}
		$s->unsDfSsoId()->unsDfSsoProvider()->unsDfSsoRegistrationData();
		$s->setDfNeedConfirm(df_customer_is_need_confirm($c));
	}
1156959
function () {
            // все аргументы, кроме последнего считаются необходимыми зависимостями
            var depsList = franky.toArray(arguments).slice(0, arguments.length - 1),
            // последний аргумент - функция в которую уйдут удовлетворенные зависимости
                callback = arguments[arguments.length - 1];
            // обработка зависимостей
            depsList = franky.map(depsList, function (depsItem) {
                if (!libs[depsItem]) {
                    throw new Error('Unmet dependency:' + depsItem);
                }
                // если модуль представляет из себя синглтон - кешируем его
                if (cached[depsItem]) {
                    libs[depsItem] = franky.isFunction(libs[depsItem]) ? libs[depsItem]() : libs[depsItem];
                    return libs[depsItem];
                } else {
                    return libs[depsItem]();
                }
            });

            // пробрасываем удовлетворенные зависимости
            callback.apply(this, depsList);

            return this;
        }
1223102
static function save_object($object, $content, $ttl = false)
	{
		$object_id = $object->id();

		$file = $object->static_file();
		if(!$file) // TODO: отловить
		{
			bors_debug::syslog('static-file-notice', "empty static_file() for ".$object->debug_title());
			return;
		}

		if(preg_match('/,new/', $file))
			bors_debug::syslog('static-file-logic-error', "New page for ".$object->debug_title());

		//TODO: отловить кеш-запись постов при добавлении нового сообщения. (class_id = 1)
		bors()->changed_save();

		// Если это просто обновление кеша, то у нас тут будет найденная запись из ::drop
		if(config('cache_database'))
		{
			if(!($cache = $object->attr('static_recreate_object')))
				$cache = bors_load_ex('cache_static', $file, array('no_load_cache' => true));
		}
		else
			$cache = NULL;

		$object_uri = $object->url_ex($object->page());
		$original_uri = $object->called_url();

		if(!$original_uri)
			$original_uri = $object_uri;

//		if($object->class_name() == 'balancer_board_topic' || $object->class_name() == 'forum_topic')
//			bors_debug::syslog('__cache_file_register', "file=".$file."\nobject=".$object->debug_title()."\npage=".$object->page()."\ncache=".($cache?'yes':'no'));

		$expire_time = time() + ($ttl === false ? $object->cache_static() : $ttl);
//		bors_debug::syslog('00time', "o={$object->debug_title()}; ttl=$ttl, cs=".$object->cache_static()."; mt=".date("r", $object->modify_time())."; expired=".date('r', $expire_time));

		if(($ic=config('internal_charset')) != ($oc=config('output_charset')))
			$content = iconv($ic, $oc.'//translit', $content);

		bors_function_include('fs/file_put_contents_lock');

		mkpath($dir = dirname($file), 0777);

		if(is_writable($dir))
		{
			file_put_contents_lock($file, $content);
			if(is_file($file))
			{
				// Скрываем, т.к. файл может не принадлежать нашему пользователю.
				@chmod($file, 0666);

				if(!($mt = $object->modify_time()))
					$mt = time();

				@touch($file, $mt, $expire_time);
			}
		}

		if(!file_exists($file) || !is_file($file))
			bors_debug::syslog('warning-filesystem', "Can't create static file.\n
	object: {$object}\n
	file: {$file} (fe=".file_exists($file)
		.';isf='.is_file($file)
		.';isw='.is_writable($dir).")");

		if(config('cache_database'))
		{
			if($cache)
			{
//				echo "Update $file<br/>\n";
				$cache->set_target_class_name($object->class_name(), true);
				$cache->set_target_class_id($object->class_id(), true);
				$cache->set_target_id($object->id(), true);
				$cache->set_target_page($object->page(), true);
				$cache->set_last_compile(time(), true);
				$cache->set_expire_time($expire_time, true);
				$cache->set_recreate($object->cache_static_recreate(), true);

				if($original_uri)
					$cache->set('original_uri', $original_uri, true);

				$cache->store();
			}
			else
			{
				$cache = bors_new('cache_static', array(
					'id' => $file,
					'original_uri' => $original_uri,
					'target_class_name' => $object->class_name(),
					'target_class_id' => $object->class_id(),
					'target_id' => $object->id(),
					'target_page' => $object->page(),
					'last_compile' => time(),
					'expire_time' => $expire_time,
					'recreate' => $object->cache_static_recreate(),
//					'bors_site' => BORS_SITE,
				));

//				config_set('debug_mysql_queries_log', false);

//				if($object->class_name() == 'balancer_board_topic' || $object->class_name() == 'forum_topic')
//					bors_debug::syslog('__cache_file_register2', "file=".$file."\nobject=".$object->debug_title()."\npage=".$object->page()."\ncache_id=".$cache->id()."\ncache_page=".$cache->target_page());
			}

			foreach(explode(' ', $object->cache_depends_on()) as $group_name)
				if($group_name)
					cache_group::register($group_name, $object);

			foreach($object->cache_parents() as $parent_object)
				cache_group::register($parent_object->internal_uri_ascii(), $object);

//			$object->set_was_cleaned(false);
		}

	}
240473
function getExternal($as_html = true) {
        if(!$as_html) {
            return $this->css_external;
        }
        if(!count($this->css_external)) {
            return '';
        }
        $css_code = '';
        /* если не надо собирать файлы в один */
        if(!config('larakit.lk-staticfiles.css.external.build', false)) {
            foreach($this->css_external as $css => $_css) {
                $css_code .= '        ' . $this->getLink($css, Arr::get($_css, 'media'), Arr::get($_css, 'condition')) . PHP_EOL;
            }
        } else {
            $build     = [];
            $no_builds = [];
            $css_code  = '';
            foreach($this->css_external as $css => $_css) {
                $condition = Arr::get($_css, 'condition');
                $media     = Arr::get($_css, 'media');
                $no_build  = Arr::get($_css, 'no_build');
                if($no_build) {
                    $no_builds[$condition . '|' . $media][] = $css;
                } else {
                    $build[$condition . '|' . $media][] = $css;
                }
            }
            foreach($no_builds as $key => $css) {
                list($condition, $media) = explode('|', $key);
                $css_code .= '<!-- [no build] -->' . PHP_EOL;
                foreach($css as $_css) {
                    $css_code .= $this->getLink($_css, $media, $condition, false) . PHP_EOL;
                }
                $css_code .= '<!-- [/no build] -->' . PHP_EOL;
            }
            foreach($build as $key => $css) {
                list($condition, $media) = explode('|', $key);
                $prefix = ['css'];
                if($condition) {
                    $prefix[] = str_replace(' ', '', $condition);
                }
                if($media) {
                    $prefix[] = $media;
                }
                $build_name = $this->makeFileName($css, implode('/', $prefix), 'css');
                $build_file = $this->buildFile($build_name);
                if(!file_exists($build_file)) {
                    //соберем билд в первый раз
                    $build = [];
                    foreach($css as $url) {
                        $_css    = $this->replaceRelativePath($url);
                        $_css    = $this->prepare($_css, config('larakit.lk-staticfiles.css.external.min') || (mb_strpos($url, '.min.') !== false));
                        $build[] = "/**********************************************************************" . PHP_EOL;
                        $build[] = '* ' . $url . PHP_EOL;
                        $build[] = "**********************************************************************/" . PHP_EOL;
                        $build[] = $_css . PHP_EOL . PHP_EOL;
                    }
                    if(!file_exists(dirname($build_file))) {
                        mkdir(dirname($build_file), 0777, true);
                    }
                    
                    $this->save($build_file, implode('', $build));
                }
                $css_code .= $this->getLink($this->buildUrl($build_name), $media, $condition) . "\n";
            }
        }
        
        return $css_code;
    }
42313
public function startImport(array &$form, FormStateInterface $form_state) {
        // Выполняет стандартную валидацию полей формы и добавляет примечания об ошибках.
        ConfigFormBase::validateForm($form, $form_state);

        if (!$form_state->getValue('validate_error')) {
            $config = $this->config('site_geo.import');

            $fid = $config->get('fid');
            $skip_first_line = $config->get('skip_first_line');
            $delimiter = $config->get('delimiter');
            $enclosure = $config->get('enclosure');
            $chunk_size = $config->get('chunk_size');
            $plugin_id = $form_state->getValue('import_plugin');

            if ($plugin_id != "") {
                $import = new SiteGeoCSVBatchImport($plugin_id, $fid, $skip_first_line, $delimiter, $enclosure, $chunk_size);
                $import->setBatch();
            }
        }
    }
94877
static function create($content, $to, $append = false)
    {
        $to = self::makeVirtualDir($to);
        // Если папки нет, то создаем её
        $dir = dirname($to);
        if(!is_dir($dir)){
            mkdir($dir, 0775, true);
        }
        $result = false;
        // Создание файла
        if (($f = fopen($to, $append?'a':'w'))) {
            stream_set_write_buffer($f, 20);
            fwrite($f, $content);
            fclose($f);
            $result = true;
        }
        self::deleteVirtualDir($to);
        return $result;
    }
1012019
public function updateFileInfo()
    {
        $src = $this->src;

        if ($this->cluster instanceof ClusterLocal) {
            if (!\Yii::$app->request->hostInfo) {
                return $this;
            }

            $src = \Yii::$app->request->hostInfo . $this->src;
        }
        //Елси это изображение
        if ($this->isImage()) {
            if (extension_loaded('gd')) {
                list($width, $height, $type, $attr) = getimagesize($src);
                $this->image_height = $height;
                $this->image_width = $width;
            }
        }

        $this->save();
        return $this;
    }
1274032
public function endpointAuth()
	{
		/**
		 * @var Processor $processor
		 */

		$type = Type::PAYMENT;
		$input = Input::all();
		$input = Type::clearInput($type, $input);

		$term = Terminal::find($input['term']);
		Secure::sign($input, $type, $term->secret);

		$processor = $this->makeProcessor($type, $input);
		$errorMessage = null;

		try {
			$response = $processor->response();

			if ($response->rc !== '00') {
				$errorMessage = ProcessorException::getCodeMessage($response->rc);
			}

			// need auth
			if ($response->auth()) {
				return Redirect::to($response->auth());
			}

		} catch (ProcessorException $e) {
			$errorMessage = $e->getMessage();
		}


		if (!$errorMessage) {
			return Views::reload(
				Views::url(
					$input['back'],
					array('resultBankEmulatorPayment' => 'success')
				),
				array(
					'Платеж принят!',
					'Ждите перехода в интернет-магазин',
				),
				'success'
			);
		}

		return Views::reload(
			Views::url(
				$input['back'],
				array('resultBankEmulatorPayment' => 'error')
			),
			array(
				$errorMessage,
				'Ждите перехода в интернет-магазин',
			),
			'danger'
		);

	}
448172
public function boot()
    {
        /**
         * Подключаем базовые маршруты
         * пока оставляем это для ручной работы
         */
        // if (Config::get('qwertcms.include_routes')) {
        //     include __DIR__ . '/routes.php';
        // }

        /**
         * Языки (резерв)
         */
        // $this->loadTranslationsFrom(__DIR__ . '/lang', 'qwertcms');
        
        /**
         * Настройки
         */
        $this->publishes([
            __DIR__ . '/config/qwertcms.php' => base_path('config/qwertcms.php'),
        ], 'qwertcms_config');

        /**
         * Роуты
         */
        $this->publishes([
            __DIR__ . '/routes' => base_path('routes/'),
        ], 'qwertcms_routes');

        /**
         * Шаблоны для админки
         */
        $this->loadViewsFrom(__DIR__.'/views', 'qwertcms');

        $this->publishes([
            __DIR__ . '/public' => public_path('vendor/qwertcms'),
        ], 'qwertcms_public');

        $this->publishes([
            __DIR__.'/views'  => base_path('resources/views/'),
        ], 'qwertcms_view');

        /**
         * Шаблоны авторизации
         */
        // $this->publishes([
        //     __DIR__.'/views/auth'  => base_path('resources/views/auth'),
        // ], 'qwertcms_view');

        /**
         * Миграции и seeds
         */
        $this->publishes([
            __DIR__ . '/database/migrations/' => database_path('migrations')
        ], 'qwertcms_migrations');

        $this->publishes([
            __DIR__ . '/database/seeds/' => database_path('seeds')
        ], 'qwertcms_seeds');

        /**
         * Базовые контроллеры
         */
        $this->publishes([
            __DIR__ . '/controllers/' => app_path('Http/controllers')
        ], 'qwertcms_controllers');

        /**
         * Модели
         */
        $this->publishes([
            __DIR__ . '/Models/' => app_path()
        ], 'qwertcms_models');

        /**
         * Шаблоны писем
         */
        $this->publishes([
            __DIR__ . '/Mail/' => app_path('Mail')
        ], 'qwertcms_mail');

        /**
         * Функции хелперы
         */
        $this->publishes([
            __DIR__ . '/Helpers/' => app_path('Helpers')
        ], 'qwertcms_helpers');

        /**
         * Языковые файлы
         */        
        $this->publishes([
            __DIR__ . '/lang/adminlte/ru' => base_path('resources/lang/vendor/adminlte/ru/')
        ], 'qwertcms_adminlang');
        $this->publishes([
            __DIR__ . '/lang/laravel/ru' => base_path('resources/lang/ru/')
        ], 'qwertcms_lang');

        /**
         * Middleware для мультиязычности
         */
        $this->publishes([
            __DIR__ . '/Middleware' => app_path('Http/Middleware/')
        ], 'qwertcms_lang');
        
    }
338344
public function updateSettings()
    {
        /*
         * Загрузка логотипа
         */
        if (isset($_FILES['logoImage']['tmp_name']) &&
            is_uploaded_file($_FILES['logoImage']['tmp_name']))
        {
            if (substr($_FILES['logoImage']['name'], -3) == 'png')
            {
                upload('logoImage', $this->getDataDir() .'/logo.png');
            }
            else
            {
                Eresus_Kernel::app()->getPage()
                    ->addErrorMessage('Логотип должен быть в формате PNG');
            }
        }

        try
        {
            $this->templates()->clientWrite('image-list.html', arg('tmplImageList'));
            $this->templates()->clientWrite('image-list.html', arg('tmplImageList'));
            $this->templates()->clientWrite('image-grouped-list.html', arg('tmplImageGroupedList'));
            $this->templates()->clientWrite('image.html', arg('tmplImage'));
            $this->templates()->clientWrite('popup.html', arg('tmplPopup'));
        }
        catch (Exception $e)
        {
            throw new RuntimeException(
                'Не удалось изменить один или несколько шаблонов. Подробная информация доступна в журнале.',
                0,
                $e);
        }

        parent::updateSettings();
    }
120818
function get(passwd) {
    const users   = {};
    
    passwd
        .split('\n')
        .forEach((line) => {
            passwd = passwd.replace(line, '');
            
            /* получаем первое слово строки */
            const name = line.substr(line, line.indexOf(':'));
            
            line = line.replace(name + ':x:', '');
            
            /* получаем uid */
            const uid = line.substr(line, line.indexOf(':'));
            
            if (!uid)
                return;
            
            users[uid] = name;
        });
    
    return users;
}
117529
public function start()
    {
        $file_info = (new FileToken($this->dic))->getFileInfo($this->request->get('token'));

        if (isset($file_info['errors'])) {
            $this->response->setData($file_info);
            $this->response->send();
        }

        $filepath = SettingsFile::FILE_FOLDER . $file_info['data']['path'];

        if (is_readable($filepath) && is_file($filepath)) {
            $response = new BinaryFileResponse($filepath);
            $response->headers->set('Content-type', mime_content_type($filepath));
            $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $file_info['data']['name']);
            $response->send();
        } else {
            $this->response->setData(Response::error404('Файл не найден'));
            $this->response->send();
        }
    }
876645
private function actionAddDialog()
    {
        $form = array(
            'name' => 'add',
            'caption' => 'Добавление формы',
            'width' => '100%',
            'fields' => array(
                array('type' => 'hidden', 'name' => 'action', 'value' => 'create'),
                array('type' => 'edit', 'name' => 'title', 'label' => 'Описание',
                    'width' => '99%', 'value' => arg('title')),
                array('type' => 'edit', 'name' => 'name', 'label' => 'Имя',
                    'width' => '16em', 'value' => arg('name'), 'comment' =>
                'только латинские буквы, цифры, символы минус и подчёркивание',
                    'pattern' => '/^[\w\-]+$/i',
                    'errormsg' =>
                    'Имя формы может содержать только латинские буквы, цифры, символы минус и подчёркивание'),
                array('type' => 'text',
                    'value' =>
                    '&raquo; <b><a href="https://github.com/Eresus/EForms/wiki/%D0%AF%D0%B7%D1%8B%D0%BA-%D1%84%D0%BE%D1%80%D0%BC">' .
                    'Синтаксис форм</a></b>'),
                array('type' => 'memo', 'name' => 'code', 'height' => '30', 'syntax' => 'html',
                    'value' => arg('code') ? arg('code') :
                        '<form xmlns:ef="http://procreat.ru/eresus2/ext/eforms" method="post">' . "\n</form>"),
            ),
            'buttons' => array('ok', 'cancel'),
        );
        /** @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        return $page->renderForm($form);
    }
728074
public function sendHeaders()
    {
        /* Отправляем основной заголовок */
        $statusText = $this->statusText ?: self::getStatusText($this->getStatusCode());
        $header = 'HTTP/'
            . $this->getProtocolVersion() . ' '
            . $this->getStatusCode() . ' '
            . $statusText;
        header($header, true, $this->getStatusCode());

        /* Отправляем дополнительные заголовки */
        foreach ($this->headers as $header)
        {
            header($header);
        }
        return $this;
    }