Обновляет слайдер в базе данных.
175380
public function updateSlide($entry) {
        $return_value = $this->connection->update('site_sliders')
                ->fields($entry)
                ->condition('sid', $entry['sid'])
                ->execute();

        return $return_value;
    }
289063
public function init()
    {

        if ( empty( $this->action_save ) ){
            throw new HttpException(200, 'Ошибка контроллера. Не передано имя метода для сохранения файла (action).');
        }
        if ( empty( $this->action_read ) ){
            throw new HttpException(200, 'Ошибка виджета. Не передано имя метода для чтения данных (action).');
        }
        if ( empty( $this->action_write ) ){
            throw new HttpException(200, 'Ошибка виджета. Не передано имя метода записи данных (action).');
        }

        parent::init();
    }
236505
protected function adaptSourcesSummary()
    {
        $dataArray = [];

        //Формируем массив
        foreach ($this->data['data'] as $item) {
            $dataArray['data'][] = [
                'trafficSource'           => $item['dimensions'][0]['name'],
                'sourceEngine'            => $item['dimensions'][1]['name'],
                'visits'                  => $item['metrics'][0],
                //Визиты
                'bounceRate'              => $item['metrics'][1],
                //Отказы %
                'pageDepth'               => $item['metrics'][2],
                //Глубина просмотра
                'avgVisitDurationSeconds' => date("i:s", $item['metrics'][3])
                //Время проведенное на сайте мин:сек.
            ];
        }

        //Итого и средние значения
        $dataArray['totals'] = [
            'visits'                  => $this->data['totals'][0],
            'bounceRate'              => $this->data['totals'][1],
            'pageDepth'               => $this->data['totals'][2],
            'avgVisitDurationSeconds' => date("i:s", $this->data['totals'][3]),
        ];

        $this->adaptData = $dataArray;
    }
609000
protected function adaptTopPageViews()
    {
        $dataArray = [];

        //Формируем массив
        foreach ($this->data['data'] as $item) {
            $dataArray[] = [
                'url'       => $item['dimensions'][0]['name'],
                'title'     => $item['dimensions'][1]['name'],
                'pageviews' => $item['metrics'][0],
            ];
        }

        $this->adaptData = $dataArray;
    }
49911
public function save()
    {
        $this->_slug = trim(trim($this->_slug), '/');
        if (is_null($this->_slugModel) || $this->_slugModel->slug !== $this->_slug) {
            //Если уже есть запись с таким slug то обновим её присвоев её максимальный id + 1
            $model = SeoSlug::find()
                ->where([
                    'AND',
                    ['=', 'model', $this->owner->className()],
                    ['=', 'model_id', $this->owner->getPrimaryKey()],
                    ['=', 'slug', $this->_slug],
                ])
                ->one();
            if ($model) {
                $maxId = SeoSlug::find()
                    ->max('id');
                $oldId = $model->id;
                $model->id = ++$maxId;
                $model->save();
                SeoSlug::updateAllCounters(['id' => -1], [
                    'AND',
                    ['>', SeoSlug::tableName() . '.id', $oldId],
                ]);
            } else {
                $model = new SeoSlug();
                $model->model = $this->owner->className();
                $model->model_id = $this->owner->getPrimaryKey();
            }
            $model->slug = $this->_slug;
            $model->save();
            if (is_callable($this->afterSave)) {
                call_user_func($this->afterSave, $this);
            }
        }
    }
1016199
function complete($only_mandatory = true, $only_property = true)
    {
        // Выбор подчиненных объектов
        $proto = $this->proto(null, true);
        $cond = [
            'from' => $proto,
            'select' => 'properties',
            'key' => 'name'
        ];
        if ($only_mandatory){
            $cond['where'] = [['is_mandatory','=',true]];
        }
        $props_children = Data::find($cond);
        if (!$only_property){
            // Выбор подчиненных объектов
            $cond['select'] = 'children';
            $props_children = array_merge($props_children, Data::find($cond));
        }
        // Прототипирование отсутствующих подчиненных
        foreach ($props_children as $name => $child){
            $this->{$name}->complete($only_mandatory, $only_property);
            if ($this->{$name}->order() == Entity::MAX_ORDER){
                $this->{$name}->order($props_children[$name]->order());
            }
        }
    }
324996
protected function _initAutoFilters()
    {
        //Если автоопределение колонок не включено
        if (!$this->isEnabledAutoFilters) {
            return $this;
        }

        if (!$this->dataProvider) {
            return $this;
        }

        $dataProvider = clone $this->dataProvider;
        $models = $dataProvider->getModels();


        /**
         * @var $model Model
         * @var $model ActiveRecord
         */
        $model = reset($models);

        if (!$model) {
            $modelClass = $dataProvider->query->modelClass;
            $model = new $modelClass();
        }

        $result = [];

        $result['attributeDefines'] = [];
        if (method_exists($model, 'attributes')) {
            $result['attributeDefines'] = $model->attributes();
        }

        $result['attributeLabels'] = [];
        if (method_exists($model, 'attributeLabels')) {
            $result['attributeLabels'] = $model->attributeLabels();
        }


        $rules = [];
        $fields = [];

        if ($model instanceof ActiveRecord) {
            foreach ($model::getTableSchema()->columns as $key => $column) {
                if (in_array($column->type, ['string', 'text'])) {
                    $fields[(string)$key] = [
                        'class' => StringFilterField::class,
                    ];

                    $rules[] = [(string)$key, 'safe'];
                } else if (in_array($column->type, ['integer', 'decimal'])) {

                    $realKey = $key;
                    if (!empty($key) && strcasecmp($key, 'id')) {
                        if (substr_compare($key, 'id', -2, 2, true) === 0) {
                            $key = rtrim(substr($key, 0, -2), '_');
                        } elseif (substr_compare($key, 'id', 0, 2, true) === 0) {
                            $key = ltrim(substr($key, 2, strlen($key)), '_');
                        }
                    }

                    $keyMany = Inflector::pluralize($key);

                    $keyName = lcfirst(Inflector::id2camel($key, '_'));
                    $keyManyName = lcfirst(Inflector::id2camel($keyMany, '_'));


                    if ($relation = $model->getRelation($keyName, false)) {
                        if ($relation->modelClass && $relation->link) {

                            $arr = array_keys($relation->link);
                            $idName = $arr[0];
                            $modelClassName = $relation->modelClass;

                            $query = $modelClassName::find();

                            if ($query->count() > 1000) {
                                $fields[(string)$realKey] = [
                                    'class' => NumberFilterField::class,
                                ];
                            } else {
                                $fields[(string)$realKey] = [
                                    'class'             => NumberFilterField::class,
                                    'isAllowChangeMode' => false,
                                    'field'             => [
                                        'class'    => SelectField::class,
                                        'items'    => function () use ($idName, $query) {

                                            return ArrayHelper::map(
                                                $query->all(),
                                                $idName,
                                                'asText'
                                            );
                                        },
                                        'multiple' => true,
                                    ],
                                ];
                            }

                        }

                    }

                    if (!isset($fields[(string)$realKey])) {
                        $fields[(string)$realKey] = [
                            'class' => NumberFilterField::class,
                        ];
                    }

                    $rules[] = [(string)$realKey, 'safe'];

                } else {
                    $fields[(string)$key] = [
                        'class' => StringFilterField::class,
                    ];

                    $rules[] = [(string)$key, 'safe'];
                }

            }
        } elseif (is_array($model) || is_object($model)) {
            foreach ($model as $name => $value) {
                if ($value === null || is_scalar($value) || is_callable([$value, '__toString'])) {
                    $fields[(string)$name] = [
                        'class' => StringFilterField::class,
                    ];

                    $rules[] = [(string)$name, 'safe'];
                }
            }
        }

        $result['rules'] = $rules;
        $result['fields'] = $fields;
        $this->_autoDynamicModelData = $result;

        return $this;
    }
396973
function items2models(items, params) {
        // приводим к формату №2
        if (typeof items === 'string') {
            items = [ items ];
        }

        // приводим №2 к формату №3
        if (typeof items[0] === 'string') {
            params = params || {};
            items = normalizeItems(items, params);
        }

        var models = [];
        for (var i = 0, l = items.length; i < l; i++) {
            var item = items[i];
            // ns.request( [ ModelInstance ] )
            if (item instanceof ns.Model) {
                models.push(item);

            } else if (item.model && item.model instanceof ns.Model) {
                models.push(item.model);

            } else {
                models.push(ns.Model.get(item.id, item.params));
            }
        }

        return models;
    }
1134045
function set($prop, $value, $db_update=true)
	{
		// Строго проверяем, наш ли это метод. Или присоединённого объекта. Или — ошибка
/*
		if(!array_key_exists($prop, $this->data))
		{
			// Нужно придумать контроль отсутствия ключа.
			foreach($this->_prop_joins as $x)
				$x->set($prop, $value, $db_update);

			// У атрибутов выше приоритет. Так что их тоже надо менять. Ну а данные — они на запись.
			return $this->attr[$prop] = $value;
		}
*/
		if($db_update
				&& !is_array($value)
				&& !is_object($value)
				&& strcmp(empty($this->data[$prop]) ? NULL : $this->data[$prop], $value)
			) // TODO: если без контроля типов, то !=, иначе - !==
		{
			if(\B2\Cfg::get('mutex_lock_enable'))
				$this->__mutex_lock();

//			if(\B2\Cfg::get('is_developer')) echo bors_debug::trace();

			//TODO: продумать систему контроля типов.
			//FIXME: чёрт, тут нельзя вызывать всяких user, пока в них лезут ошибки типов. Исправить и проверить все основные проекты.
//			if(@$this->data[$prop] == $value && @$this->data[$prop] !== NULL && $value !== NULL)
//				bors_debug::syslog('types', 'type_mismatch: value='.$value.'; original type: '.gettype(@$this->data[$prop]).'; new type: '.gettype($value));

			// Запоминаем первоначальное значение переменной.
			if(empty($this->changed_fields) || !array_key_exists($prop, $this->changed_fields))
				$this->changed_fields[$prop] = empty($this->data[$prop]) ? NULL : $this->data[$prop];

			bors()->add_changed_object($this);
		}

		$this->attr[$prop] = $value; // У атрибутов выше приоритет. Так что их тоже надо менять. Ну а данные — они на запись.
		return $this->data[$prop] = $value;
	}
38180
public function start()
    {
        //
        //                                     ,,
        //                       mm     mm     db
        //                       MM     MM
        //     ,pP"Ybd  .gP"Ya mmMMmm mmMMmm `7MM  `7MMpMMMb.  .P"Ybmmm ,pP"Ybd
        //     8I   `" ,M'   Yb  MM     MM     MM    MM    MM :MI  I8   8I   `"
        //     `YMMMa. 8M""""""  MM     MM     MM    MM    MM  WmmmP"   `YMMMa.
        //     L.   I8 YM.    ,  MM     MM     MM    MM    MM 8M        L.   I8
        //     M9mmmP'  `Mbmmd'  `Mbmo  `Mbmo.JMML..JMML  JMML.YMMMMMb  M9mmmP'
        //                                                    6'     dP
        //                                                    Ybmmmd'

        // Устанавливаем временные настройки
        date_default_timezone_set(Settings::TIMEZONE);
        setlocale(LC_TIME, 'ru_RU.UTF-8');

        // Где будут хранится php сессии (в файлах или в БД)
        if (Settings::PHP_SESSION === 'DB') {
            new \Zebra_Session(
                mysqli_connect(
                    Settings::DB_HOST,
                    Settings::DB_USER,
                    Settings::DB_PASSWORD,
                    Settings::DB_DATABASE,
                    Settings::DB_PORT
                ), 'AVuVqYR6uwgEuhV79tln0tlKk'
            );
        } else {
            session_start();
        }

        // Включим страницу с ошибками, если включен режим DEBUG
        if (Settings::DEBUG === true) {
            $whoops = new Run;
            $whoops->pushHandler(new PrettyPageHandler);

            if (Misc::isAjaxRequest()) {
                $jsonHandler = new JsonResponseHandler();
                $jsonHandler->setJsonApi(true);

                $whoops->pushHandler($jsonHandler);
            }

            $whoops->register();
        }

        // Настраиваем соединение с БД
        \ORM::configure([
            'connection_string' => 'mysql:host=' . Settings::DB_HOST . ';port=' . Settings::DB_PORT . ';dbname=' . Settings::DB_DATABASE,
            'username'          => Settings::DB_USER,
            'password'          => Settings::DB_PASSWORD,
            'logging'           => Settings::DEBUG,
            'driver_options'    => [
                \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
                \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            ],
        ]);

        // Инициализируем CSRF-токен
        $csrf = new \DimNS\SimpleCSRF();
        $this->csrf_token = $csrf->getToken();

        // Определим корневую папку, если переменная не пустая
        if (Settings::PATH_SHORT_ROOT != '/') {
            $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], strlen(Settings::PATH_SHORT_ROOT));
        }

        // Инициируем роутер
        $klein = new \Klein\Klein();

        //
        //
        //     `7MM"""Yb. `7MMF'
        //       MM    `Yb. MM
        //       MM     `Mb MM
        //       MM      MM MM
        //       MM     ,MP MM
        //       MM    ,dP' MM
        //     .JMMmmmdP' .JMML.
        //
        //

        // Создаем DI
        $klein->respond(function ($request, $response, $service, $di) use ($csrf) {
            // Регистрируем доступ к Carbon
            $di->register('carbon', function () {
                return Carbon::now(Settings::TIMEZONE);
            });

            // Регистрируем доступ к настройкам
            $di->register('cfg', function () {
                return new \MFLPHP\Configs\Config();
            });

            // Регистрируем доступ к управлению пользователем
            $di->register('auth', function () {
                $dbh = new \PDO('mysql:host=' . Settings::DB_HOST . ';port=' . Settings::DB_PORT . ';dbname=' . Settings::DB_DATABASE,
                    Settings::DB_USER,
                    Settings::DB_PASSWORD,
                    [
                        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
                        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
                        \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                    ]
                );

                return new Auth($dbh, new Config($dbh, 'phpauth_config'), 'ru_RU');
            });

            // Регистрируем доступ к информации о пользователе
            $di->register('userinfo', function () use ($di) {
                if ($di->auth->isLogged()) {
                    $user_id = $di->auth->getSessionUID($di->auth->getSessionHash());

                    $user_info = \ORM::for_table('users')
                        ->join('users_info', ['users.id', '=', 'users_info.uid'])
                        ->where_equal('id', $user_id)
                        ->find_one();
                    if (is_object($user_info)) {
                        return $user_info;
                    }
                }

                return false;
            });

            // Регистрируем доступ к PHPMailer
            $di->register('phpmailer', function () use ($di) {
                $phpmailer = new \PHPMailer();

                $phpmailer->setLanguage('ru', $di->cfg->abs_root_path . 'vendor/phpmailer/phpmailer/language/');
                $phpmailer->IsHTML(true);
                $phpmailer->CharSet = 'windows-1251';
                $phpmailer->From = $di->auth->config->site_email;
                $phpmailer->FromName = iconv('utf-8', 'windows-1251', $di->auth->config->site_name);

                if ('1' == $di->auth->config->smtp) {
                    $phpmailer->IsSMTP();
                    $phpmailer->SMTPDebug = 0;
                    $phpmailer->SMTPAuth = true;
                    $phpmailer->SMTPSecure = $di->auth->config->smtp_security;
                    $phpmailer->Host = $di->auth->config->smtp_host;
                    $phpmailer->Port = $di->auth->config->smtp_port;
                    $phpmailer->Username = $di->auth->config->smtp_username;
                    $phpmailer->Password = $di->auth->config->smtp_password;
                }

                return $phpmailer;
            });

            // Регистрируем доступ к отправке почты
            $di->register('mail', function () use ($di) {
                return new EmailSender($di);
            });

            // Регистрируем доступ к логгеру Monolog
            $di->register('log', function () use ($di) {
                $log = new Logger('MainLog');
                $log->pushHandler(new StreamHandler($di->cfg->abs_root_path . 'errors.log', Logger::DEBUG));

                return $log;
            });

            // Регистрируем доступ к проверке CSRF-токена
            $di->register('csrf', function () use ($csrf) {
                return $csrf;
            });

            $views_path = $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app/Views/';

            $service->layout($views_path . 'layout-default.php');

            $service->csrf_token = $this->csrf_token;
            $service->path = Settings::PATH_SHORT_ROOT;
            $service->app_root_path = $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app';
            $service->uri = $request->uri();
            $service->di = $di;
        });

        //
        //
        //                                  mm
        //                                  MM
        //     `7Mb,od8 ,pW"Wq.`7MM  `7MM mmMMmm .gP"Ya  ,pP"Ybd
        //       MM' "'6W'   `Wb MM    MM   MM  ,M'   Yb 8I   `"
        //       MM    8M     M8 MM    MM   MM  8M"""""" `YMMMa.
        //       MM    YA.   ,A9 MM    MM   MM  YM.    , L.   I8
        //     .JMML.   `Ybmd9'  `Mbod"YML. `Mbmo`Mbmmd' M9mmmP'
        //
        //
        require_once $_SERVER['DOCUMENT_ROOT'] . Settings::PATH_SHORT_ROOT . 'app/Routes.php';

        //
        //
        //
        //
        //     `7Mb,od8 `7MM  `7MM  `7MMpMMMb.
        //       MM' "'   MM    MM    MM    MM
        //       MM       MM    MM    MM    MM
        //       MM       MM    MM    MM    MM
        //     .JMML.     `Mbod"YML..JMML  JMML.
        //
        //
        $klein->dispatch();
    }
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;
            }
        }
    }
116351
private function adminEditGroupDialog()
    {
        $item = $this->dbItem('groups', arg('group_id', 'int'));

        $form = array(
            'name' => 'editGroup',
            'caption' => 'Изменение группы',
            'width' => '600px',
            'fields' => array (
                array ('type' => 'hidden', 'name' => 'action', 'value' => 'group_update'),
                array ('type' => 'hidden', 'name' => 'section', 'value' => arg('section', 'int')),
                array ('type' => 'hidden', 'name' => 'id', 'value' => $item['id']),
                array ('type' => 'edit', 'name' => 'title', 'label' => 'Название',
                    'width' => '100%', 'maxlength' => '255'),
                array('type' => 'html', 'name' => 'description', 'height' => '400px',
                    'label' => 'Описание'),
            ),
            'buttons' => array('ok', 'apply', 'cancel'),
        );

        /* @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        $result = $page->renderForm($form, $item);

        return $result;
    }
283529
private function init_request()
	{
		global $request;

		# Значения по умолчанию
		$request = array(
			'method' => $_SERVER['REQUEST_METHOD'],
			'scheme' => isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) ? 'https' : 'http',
			'host' => strtolower($_SERVER['HTTP_HOST']),
			'port' => '',
			'user' => isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : '',
			'pass' => isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '',
			'path' => '',
			'query' => '',
			'fragment' => '',
			'referer' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '',
		);

		$request['url'] = $request['scheme'] . '://' . $request['host'] . $_SERVER['REQUEST_URI'];

		$request = array_merge($request, parse_url($request['url']));
		$request['file'] = substr($request['path'], strrpos($request['path'], '/')+1);
		if ($request['file'])
		{
			$request['path'] = substr($request['path'], 0, -strlen($request['file']));
		}

		# Создаем заготовку URL для GET-запросов с параметрами
		$request['link'] = $request['url'];
		if (substr($request['link'], -1) == '/')
		{
			$request['link'] .= '?';
		}
		elseif (strpos($request['link'], '?') === false)
		{
			$request['link'] .= '?';
		}
		else
		{
			$request['link'] .= '&';
		}

		if (is_null($this->path))
		{
			$s = $this->froot;
			$s = substr($s,
				strlen(realpath($_SERVER['DOCUMENT_ROOT'])) - (Eresus_Kernel::isWindows() ? 2 : 0));
			if (!strlen($s) || substr($s, -1) != '/')
			{
				$s .= '/';
			}
			$this->path = (substr($s, 0, 1) != '/' ? '/' : '').$s;
		}

		/*
		 * Установка свойств объекта $Eresus
		 * Должна выполняться ДО вызова __clearargs
		 */
		$root = $request['scheme'] . '://' . $request['host'] .
			($request['port'] ? ':'.$request['port'] : '');
		$this->root = $root.$this->path;
		$this->data = $this->root.'data/';
		$this->style = $this->root.'style/';


		# Сбор аргументов вызова
		$request['arg'] = __clearargs(array_merge($_GET, $_POST));
		# Разбивка параметров вызова скрипта
		$s = substr($request['path'], strlen($this->path));
		$request['params'] = $s ? explode('/', substr($s, 0, -1)) : array();

		$request['path'] = $root.$request['path'];

		# Обратная совместимость
		# <= 2.9
		$this->request = &$request;
        /**
         * @deprecated с 3.01
         */
		define('httpPath', $this->path);
        /**
         * @deprecated с 3.01
         */
		define('httpHost', $this->request['host']);
        /**
         * @deprecated с 3.01
         */
        define('httpRoot', $this->root);
        /**
         * @deprecated с 3.01
         */
		define('styleRoot', $this->style);
        /**
         * @deprecated с 3.01
         */
		define('dataRoot', $this->data);
        /**
         * @deprecated с 3.01
         */
		define('cookieHost', $this->request['host']);
        /**
         * @deprecated с 3.01
         */
		define('cookiePath', $this->path);
	}
1344179
function(model, requestId) {
        // модель надо запросить
        this._keys[model.key] = {
            status: this.STATUS.LOADING,
            model: model
        };
        model.prepareRequest(requestId);
    }
1251289
static function add($action, $user = NULL, $object = NULL, $target = NULL, $attrs = array())
	{
//		print_dd(compact('object', 'user', 'target'));
		if(!$target)
			$target		= object_property($object, 'target');

		$actor		= bors_load_ex($action, NULL, compact('object', 'user', 'attrs'));

		$category	= object_property($target, 'category');
		$folder		= object_property($target, 'folder');

		$data = array(
			'handler_class_name'=> $action,
			'color' => $actor->color(),

			'object_class_name'	=> object_property($object, 'class_name'),
			'object_id'			=> object_property($object, 'id'),
			'target_class_name'	=> object_property($target, 'class_name'),
			'target_id'			=> object_property($target, 'id'),

			'category_class_name' => object_property($category, 'class_name'),
			'category_id'		=> object_property($category, 'id'),
			'folder_class_name'	=> object_property($folder, 'class_name'),
			'folder_id'			=> object_property($folder, 'id'),
		);

		if(empty($attrs['personal_only']) && ($title = $actor->public_title()))
		{
			$data['title']	= $title;
			$data['text']	= $actor->public_text();
			// Кому идёт сообщение. 0, если публичное.
			$data['user_class_id']	= 0;
			$data['user_id'] = 0;
			bors_new(config('default_events_class', __CLASS__), $data);
		}

		if($user && ($title = $actor->personal_title()))
		{
			$data['title']	= $title;
			$data['text']	= $actor->personal_text();
			// Кому идёт сообщение. 0, если публичное.
			$data['user_class_id']	= $user->class_id();
			$data['user_id']		= $user->id();
			bors_new(config('default_events_class', __CLASS__), $data);
		}
	}
1034666
function reset_login()
	{
		$this->user['auth'] = isset($this->user['auth']) ? $this->user['auth'] : false;
		if ($this->user['auth'])
		{
			$item = $this->db->selectItem('users', "`id`='".$this->user['id']."'");
			if (!is_null($item))
			{
				# Если такой пользователь есть...
				if ($item['active'])
				{
					# Если учетная запись активна...
					$this->user['name'] = $item['name'];
					$this->user['mail'] = $item['mail'];
					$this->user['access'] = $item['access'];
					$this->user['profile'] = decodeOptions($item['profile']);
				}
				else
				{
                    Eresus_Kernel::app()->getPage()->addErrorMessage(
                        sprintf(ERR_ACCOUNT_NOT_ACTIVE, $item['login']));
					$this->logout();
				}
			}
			else
			{
				$this->logout();
			}
		}
		else
		{
			$this->user['access'] = GUEST;
		}
	}
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;
    }