Прочитать одну строку или одно значение
162780
function select($table, $fields, $where)
	{
		$query = 'SELECT '.$fields.' FROM '.$table.' '.$this->args_compile($where);
//		$query = str_replace('`', '"', $query);
		return $this->get($query);
	}
273618
static function activate()
    {
        if (get_magic_quotes_gpc()){
            $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
            while (list($key, $val) = each($process)){
                foreach ($val as $k => $v){
                    unset($process[$key][$k]);
                    if (is_array($v)){
                        $process[$key][stripslashes($k)] = $v;
                        $process[] = &$process[$key][stripslashes($k)];
                    }else{
                        $process[$key][stripslashes($k)] = stripslashes($v);
                    }
                }
            }
            unset($process);
        }
        // Нормализация массива $_FILES в соответствии с именованием полей формы
        if (isset($_FILES)){
            // Перегруппировка элементов массива $_FILES
            $rec_to_array = function ($array, $name) use (&$rec_to_array){
                $result = [];
                foreach ($array as $key => $value){
                    if (is_array($value)){
                        $result[$key] = $rec_to_array($value, $name);
                    }else{
                        $result[$key][$name] = $value;
                    }
                }
                return $result;
            };
            $files = [];
            foreach ($_FILES as $field => $data){
                $files[$field] = [];
                foreach ($data as $name => $value){
                    if (is_array($value)){
                        $files[$field] = F::arrayMergeRecursive($files[$field], $rec_to_array($value, $name));
                    }else{
                        $files[$field][$name] = $value;
                    }
                }
            }
        }else{
            $files = [];
        }

        self::$source = array(
            'REQUEST' => [],
            'FILES' => $files,
            'COOKIE' => isset($_COOKIE)? $_COOKIE : [],
            'RAW' => file_get_contents("php://input"), // Неформатированные данные
            'SERVER' => $_SERVER
        );
        if (isset($_SERVER['REQUEST_URI'])){
            $_SERVER['REQUEST_URI'] = preg_replace('#\?{1}#u', '&', $_SERVER['REQUEST_URI'], 1);
//            $request_uri = preg_replace('#^'.preg_quote(DIR_WEB).'#u', '/', $_SERVER['REQUEST_URI'], 1);
            parse_str('path='.$_SERVER['REQUEST_URI'], self::$source['REQUEST']);
            self::$source['SERVER']['argv'] = self::$source['REQUEST'];
            self::$source['SERVER']['argc'] = sizeof(self::$source['REQUEST']);
        }
        // Элементы пути URI
        if (isset(self::$source['REQUEST']['path']) && (self::$source['REQUEST']['path'] = rtrim(self::$source['REQUEST']['path'],'/ '))){
            self::$source['PATH'] = explode('/', trim(self::$source['REQUEST']['path'],' /'));
        }else{
            self::$source['PATH'] = [];
        }
        if (isset($_POST)){
            self::$source['REQUEST'] = array_replace_recursive(self::$source['REQUEST'], $_POST);
        }
        // Аргументы из консоли (режим CLI)
        if (php_sapi_name() == 'cli' && isset($_SERVER['argv'])){
            self::$source['REQUEST']['method'] = 'CLI';
            self::$source['SERVER']['argv'] = $_SERVER['argv'];
            self::$source['SERVER']['argc'] = $_SERVER['argc'];
        }
        self::$source['ARG'] = self::$source['SERVER']['argv'];
        // Метод запроса
        if (isset(self::$source['SERVER']['REQUEST_METHOD']) && !isset(self::$source['REQUEST']['method'])){
            self::$source['REQUEST']['method'] = self::$source['SERVER']['REQUEST_METHOD'];
        }
    }
141035
public function checkDataAfterSave()
    {
        if (!$this->element) {
            return;
        }

        $relatedPropertiesModel = $this->element->relatedPropertiesModel;

        if (!$relatedPropertiesModel) {
            return;
        }

        //Выбор всех отзывов принятых к этому элементу, для рассчета рейтинга.
        $messages = static::find()->where(['element_id' => $this->element->id])->andWhere(['status' => static::STATUS_ALLOWED])->all();

        $count = 0;
        $ratingSumm = 0;

        /**
         * @var self $message
         */
        foreach ($messages as $message) {
            $count++;
            $ratingSumm = $ratingSumm + $message->rating;
        }

        if (!$count) {
            return;
        }

        $ratingAll = ($ratingSumm / $count);

        if (\Yii::$app->reviews2->elementPropertyCountCode) {
            if ($relatedPropertiesModel->hasAttribute(\Yii::$app->reviews2->elementPropertyCountCode)) {
                $relatedPropertiesModel->setAttribute(\Yii::$app->reviews2->elementPropertyCountCode, $count);
            }
        }

        if (\Yii::$app->reviews2->elementPropertyRatingCode) {
            if ($relatedPropertiesModel->hasAttribute(\Yii::$app->reviews2->elementPropertyRatingCode)) {
                $relatedPropertiesModel->setAttribute(\Yii::$app->reviews2->elementPropertyRatingCode, $ratingAll);
            }
        }

        if (!$relatedPropertiesModel->save()) {
            \Yii::error(\Yii::t('skeeks/reviews2', 'Could not save data on the number of comments in the content element.') . " " . Json::encode($relatedPropertiesModel->errors) . " — " . Json::encode($relatedPropertiesModel->toArray()), static::className());
        };
    }
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'));
    }
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;
		}
	}
403577
public function doSuccess()
	{
		$date = date('Y-m-d H:i:s', time() - 60);
		$dateRefund = $this->updated_at; //даём минуту для прохождения оплаты
		if ($date > $dateRefund) {
			Refund::find($this->id)
				->whereStatus(self::C_STATUS_PROCESSING)
				->update(array('status' => self::C_STATUS_SUCCESS));
		}

		return Refund::find($this->id);
	}
1059457
private function parseSql()
    {
        // Разбор многострочных комментариев
        if (preg_match_all('#/\*([\w|]+)(.+?)\*/#s', $this->sql, $matches)) {
            $count = count($matches[0]);
            for ($i = 0; $i < $count; $i++) {
                $this->replaceComment($matches[0][$i], $matches[2][$i], $matches[1][$i]);
            }
        }

        // Многоитерационный разбор однострочных комментариев
        while (true) {
            if (preg_match_all('#--\*([\w|]+)(.+)#', $this->sql, $matches)) {
                $count = count($matches[0]);
                for ($i = 0; $i < $count; $i++) {
                    $this->replaceComment($matches[0][$i], $matches[2][$i], $matches[1][$i]);
                }
            } else {
                break;
            }
        }

        // разбор переменных - массивов, которые находились изначально вне комментариев
        if (preg_match_all('#:@(\w+)#', $this->sql, $matches)) {
            $count = count($matches[0]);
            for ($i = 0; $i < $count; $i++) {
                $this->replaceComment($matches[0][$i], $matches[0][$i], $matches[1][$i], false);
            }
        }

        $this->sql = preg_replace("/\n+/", "\n", trim($this->sql));
    }
676866
public function main()
    {
        Eresus_Kernel::log(__METHOD__, LOG_DEBUG, 'starting...');

        try
        {
            /* Общая инициализация */
            $this->checkEnvironment();
            $this->createFileStructure();



            /* Подключение старого ядра */
            Eresus_Kernel::log(__METHOD__, LOG_DEBUG, 'Init legacy kernel');
            include_once 'kernel-legacy.php';

            /**
             * @global Eresus Eresus
             * @todo Обратная совместимость — удалить
             * @deprecated с 3.01 используйте Eresus_Kernel::app()->getLegacyKernel()
             */
            $GLOBALS['Eresus'] = new Eresus;

            TemplateSettings::setGlobalValue('cms', $this);

            $this->initConf();
            $i18n = I18n::getInstance();
            TemplateSettings::setGlobalValue('i18n', $i18n);
            Eresus_CMS::getLegacyKernel()->init();
            TemplateSettings::setGlobalValue('Eresus', Eresus_CMS::getLegacyKernel());
            $this->runWeb();
        }
        catch (Exception $e)
        {
            Eresus_Kernel::logException($e);
            ob_end_clean();
            $this->fatalError($e, false);
        }
        return 0;
    }
1157586
private function sectionStdAdd()
	{
		/*
		 * Создаём список имеющихся шаблонов чтобы отфильтровать их из списка доступных.
		 */
		$templates = Templates::getInstance();
		$list = array_keys($templates->enum('std'));
		$existed = array();
		foreach ($list as $key)
		{
			$existed []= $key;
		}


		$values = array();
		$items = array();
		$jsArray = "var aTemplates = Array();\n";
		foreach ($this->stdTemplates as $key => $item)
		{
			if (in_array($key, $existed))
			{
				continue;
			}
			if (!isset($hint))
			{
				$hint = isset($item['hint']) ? $item['hint'] : '';
			}
			$values[] = $key;
			$items[] = $item['caption'];
			$jsArray .= "aTemplates['".$key."'] = '".(isset($item['hint'])?$item['hint']:'')."'\n";
		}
		if (!isset($hint))
		{
			$hint = '';
		}

		Eresus_Kernel::app()->getPage()->addScripts($jsArray."
			function onTemplateNameChange()
			{
				document.getElementById('templateHint').innerHTML =
					aTemplates[document.addForm.elements.namedItem('name').value];
			}
		");
		$form = array(
			'name' => 'addForm',
			'caption' => Eresus_Kernel::app()->getPage()->title.ADM_T_DIV.ADM_ADD,
			'width' => '100%',
			'fields' => array (
				array('type'=>'hidden','name'=>'action', 'value'=>'insert'),
				array('type'=>'hidden','name'=>'section', 'value'=>arg('section')),
				array('type'=>'select','name'=>'name','label'=>ADM_THEMES_TEMPLATE, 'values'=>$values,
					'items'=>$items, 'extra' => 'onChange="onTemplateNameChange()"'),
				array('type'=>'text','name'=>'hint', 'value' => $hint, 'extra' => 'id="templateHint"'),
				array('type'=>'memo','name'=>'code', 'height'=>'30', 'syntax' => 'html'),
			),
			'buttons' => array('ok','cancel'),
		);
		/* @var TAdminUI $page */
		$page = Eresus_Kernel::app()->getPage();
		$result = $page->renderForm($form);
		return $result;
	}
928128
protected function _handle() {
		$o = $this->o(); /** @var O $o */
		/**
		 * 2016-03-15
		 * Если оставить открытой транзакцию «capture»,
		 * то операция «void» (отмена авторизации платежа) будет недоступна:
		 * https://github.com/magento/magento2/blob/2.1.0/app/code/Magento/Sales/Model/Order/Payment.php#L540-L555
		 * @used-by \Magento\Sales\Model\Order\Payment::canVoid()
		 * Транзакция считается закрытой, если явно не указать «false».
		 *
		 * 2017-01-16
		 * Наоборот: если закрыть транзакцию типа «authorize»,
		 * то операция «Capture Online» из административного интерфейса будет недоступна:
		 * @see \Magento\Sales\Model\Order\Payment::canCapture()
		 *		if ($authTransaction && $authTransaction->getIsClosed()) {
		 *			$orderTransaction = $this->transactionRepository->getByTransactionType(
		 *				Transaction::TYPE_ORDER,
		 *				$this->getId(),
		 *				$this->getOrder()->getId()
		 *			);
		 *			if (!$orderTransaction) {
		 *				return false;
		 *			}
		 *		}
		 * https://github.com/magento/magento2/blob/2.1.3/app/code/Magento/Sales/Model/Order/Payment.php#L263-L281
		 * «How is \Magento\Sales\Model\Order\Payment::canCapture() implemented and used?»
		 * https://mage2.pro/t/650
		 * «How does Magento 2 decide whether to show the «Capture Online» dropdown
		 * on a backend's invoice screen?»: https://mage2.pro/t/2475
		 */
		$op = $this->op(); /** @var OP $op */
		// 2017-03-29
		// Сегодня заметил, что Kassa Compleet долбится несколько раз для одного и того же платежа.
		// Это приводило к повторному созданию invoice (второй invoice был с нулевой суммой).
		if (!$o->getTotalDue()) {
			$this->softFailure('This payment is already confirmed.');
		}
		else {
			$e = $this->e(); /** @var Ev $e */
			/**
			 * 2016-07-14
			 * Если покупатель не смог или не захотел оплатить заказ, то мы заказ отменяем,
			 * а затем, когда платёжная система возвратит покупателя в магазин,
			 * то мы проверим, не отменён ли последний заказ,
			 * и если он отменён — то восстановим корзину покупателя.
			 * 2017-11-17
			 * From now on, a webhook and customer return can be the same:
			 * "@see \Df\Payment\W\Action should optionally make the same processing
			 * as @see \Df\Payment\CustomerReturn": https://github.com/mage2pro/core/issues/52
			 *
			 * 2017-08-30
			 * If you want to ignore an event here, then:
			 * 1) Return `true` from @see \Df\Payment\W\Event::isSuccessful()
			 * 2) Return any value except \Df\Payment\W\Event::T_AUTHORIZE and \Df\Payment\W\Event::T_CAPTURE
			 * from @see \Df\Payment\W\Event::ttCurrent().
			 * This value will be the current transaction suffix:
			 * @used-by \Df\PaypalClone\W\Nav::id()
			 * @used-by \Df\StripeClone\W\Nav::id()
			 * so it should be unique in a payment processing cycle:
			 * a particular payment can not have multiple transactions with the same suffix.
			 */
			if ($succ = !df_request(Operation::FAILURE) && $e->isSuccessful()) { /** @var bool $succ */
				df_redirect_to_success();
				if ($action = dfa([Ev::T_AUTHORIZE => AC::A, Ev::T_CAPTURE => AC::C], $e->ttCurrent())) {
					/** @var string|null $action */
					$op->setIsTransactionClosed(AC::C === $action);
					/**
					 * 2017-01-15
					 * $this->m()->setStore($o->getStoreId()); здесь не нужно,
					 * потому что это делается автоматически в ядре:
					 * @see \Magento\Sales\Model\Order\Payment\Operations\AuthorizeOperation::authorize():
					 * 		$method->setStore($order->getStoreId());
					 * https://github.com/magento/magento2/blob/2.1.3/app/code/Magento/Sales/Model/Order/Payment/Operations/AuthorizeOperation.php#L44
					 *
					 * 2017-03-26
					 * Этот вызов приводит к добавлению транзакции типа $action:
					 * https://github.com/mage2pro/core/blob/2.4.2/Payment/W/Nav.php#L100-L114
					 * Идентификатор и данные транзакции мы уже установили в методе @see \Df\Payment\W\Nav::op()
					 */
					dfp_action($op, $action);					
				}
				$this->onSuccess();
			}
			else {
				/**
				 * 2016-07-10
				 * @uses \Magento\Sales\Model\Order\Payment\Transaction::TYPE_PAYMENT —
				 * это единственная транзакции без специального назначения,
				 * и поэтому мы можем безопасно его использовать.
				 * 2017-01-16
				 * Идентификатор и данные транзакции мы уже установили в методе @see \Df\Payment\W\Nav::op()
				 */
				$op->addTransaction(T::TYPE_PAYMENT);
				if ($o->canCancel()) {
					$o->cancel();
				}
				$ss = df_checkout_session(); /** @var Session|DfSession $ss */
				/**
				 * 2017-11-17
				 * Note 1.
				 * "@see \Df\Payment\W\Action should optionally make the same processing
				 * as @see \Df\Payment\CustomerReturn": https://github.com/mage2pro/core/issues/52
				 * Note 2.
				 * I have implemented it by analowi with @see \Df\Payment\CustomerReturn::execute():
				 *		if ($o && $o->canCancel()) {
				 *			$o->cancel()->save();
				 *		}
				 *		$ss->restoreQuote();
				 * https://github.com/mage2pro/core/blob/3.3.16/Payment/CustomerReturn.php#L47-L50
				 * 2017-11-18
				 * "Implement a function to distinguish between a customer return from a PSP payment page
				 * and a PSP webhook notification": https://github.com/mage2pro/core/issues/53
				 */
				if ($ss->getLastRealOrderId()) {
					$ss->restoreQuote();
					/** @var string $msg */
					$msg = $this->s()->messageFailure($e->statusT(), $o->getStore());
					// 2017-04-13
					// @todo Надо бы здесь дополнительно сохранять в транзакции ответ ПС.
					// У меня-то он логируется в Sentry, но вот администратор магазина его не видит.
					df_order_comment($o, $msg, true, true);
					$this->h()->responder()->setError($msg);
					// 2016-05-06
					// «How to redirect a customer to the checkout payment step?»
					// https://mage2.pro/t/1523
					df_redirect_to_payment();
				}
			}
			$o->save();
			// 2016-08-17
			// https://code.dmitry-fedyuk.com/m2e/allpay/issues/17
			// Письмо отсылаем только если isSuccessful() вернуло true
			// (при этом не факт, что оплата уже прошла: при оффлайновом способе оплаты
			// isSuccessful() говорит лишь о том, что покупатель успешно выбрал оффлайновый способ оплаты,
			// а подтверждение платежа придёт лишь потом, через несколько дней).
			if ($succ) {
				dfp_mail($o);
			}
			// 2017-09-13
			// We do not set a response here, because PayPal clones require a specific response on success.
		}
	}
1253960
private function adminAddItem()
    {
        $request = Eresus_CMS::getLegacyKernel()->request;
        if ('POST' == $request['method'])
        {
            $image = new Gallery_Entity_Image();
            $image->section = arg('section');
            $image->groupId = arg('group') ? arg('group') : 0;
            $_SESSION['gallery_default_group'] = arg('group');
            $image->title = arg('title');
            $image->cover = arg('cover') ? arg('cover') : false;
            $image->active = arg('active');
            $image->posted = new DateTime();
            $image->image = 'image'; // $_FILES['image'];

            if ($this->isImageInputValid($image))
            {
                $table = ORM::getTable($this, 'Image');
                try
                {
                    $table->persist($image);
                }
                catch (Gallery_Exception_FileTooBigException $e)
                {
                    throw new DomainException('Размер загружаемого файла превышает максимально допустимый');
                }

                $url = 'admin.php?mod=content&section=' . $image->section;
                if (arg('pg'))
                {
                    $url .= '&pg=' . arg('pg', 'int');
                }
                HTTP::redirect($url);
            }
        }

        Eresus_Kernel::app()->getPage()->linkStyles($this->urlCode . 'admin.css');

        // Данные для подстановки в шаблон
        $data = array();
        $data['this'] = $this;
        $data['page'] = Eresus_Kernel::app()->getPage();
        $data['sectionId'] = arg('section', 'int');
        $data['defaultGroup'] = isset($_SESSION['gallery_default_group'])
            ? $_SESSION['gallery_default_group']
            : null;
        $data['image'] = isset($image) ? $image : null;

        if ($this->settings['useGroups'])
        {
            $data['groups'] = $this->dbSelect('groups', "`section` = " . arg('section', 'int'),
                'position');
        }

        // Создаём экземпляр шаблона
        $tmpl = $this->templates()->admin('add-image.html');

        // Компилируем шаблон и данные
        $html = $tmpl->compile($data);

        return $html;
    }
760320
public static function init()
    {
        /* Разрешаем только однократный вызов этого метода */
        if (self::$inited)
        {
            return;
        }

        // Устанавливаем кодировку по умолчанию для операций mb_*
        mb_internal_encoding('utf-8');

        /* Предотвращает появление ошибок, связанных с неустановленной временной зоной */
        @$timezone = date_default_timezone_get();
        date_default_timezone_set($timezone);

        self::initExceptionHandling();

        self::$inited = true;
    }
1354165
async function processComment(comment) {
    debug("Найден комментарий " + comment.author + "/"+ comment.permlink);

    //Это должен быть комментарий, а не пост. parent_author не должен быть пустым
    if(comment.parent_author == "") {
        debug("это пост!, пропускаем")
        //выходим
        return false;
    }

    //Проверим на наличие команды
    if(!comment.body.match(COMMAND)) {
        debug("комманда не найдена! Пропускаем")
        //выходим
        return false;
    }

    info("Обнаружена комманда к голосованию!");

    //Получаем содержимое поста, к которому был комментарий-команда
    let content = await golos.getContent(comment.parent_author, comment.parent_permlink);

    //Игнорируем комментарии, то-есть голосуем только за посты
    if(content.parent_author != "") {
        debug("Это комментарий к другому комментарию, а не посту. пропускаем");
        //выходим
        return false;
    }

    //Проверим, голосовали ли уже
    for(let vote of content.active_votes) {
        if(vote.voter == VOTEBOT) {
            //выходим
            debug("Уже голосовали за этот пост. пропускаем");
            //Ответить на комманду
            await addComment(comment, "Уже один раз голосовал");
            return false;
        }
    }

    //Все проверки сделаны, голосуем!
    await vote(content, comment);
    return true;
}
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;
}
314895
public function output()
    {
        // Получим последнюю ошибку системы
        $lerror = error_get_last();

        // Коды ошибок которые останавливают скрипт
        $fatal_codes = array(1, 4, 16, 64);

        // Если была фатальная ошибка преобразуем её для вывода
        if (isset($lerror) && in_array($lerror['type'], $fatal_codes)) {
            // Выполним обработчик ошибки и преобразование её в наше представление
            $this->handler($lerror['type'], $lerror['message'], $lerror['file'], $lerror['line'], null, debug_backtrace(FALSE));
        }

        // Соберем представление ошибок в HTML
        $html = '';

        // Выведем файл CSS стилей, если он есть! и были ошибки
        if (sizeof($this->errors) && isset(self::$css{0})) $html .= '<style>' . self::$css . '</style>';

        // Индекс
        $index = 0;

        // Переберем ошибки которые были при выполнения скрипта
        foreach ($this->errors as & $error) {
            if ($error['class'] == '_core_debug') $html .= '<div class="_core_error _core_debug">' . $error['message'] . '</div>';
            else {
                $id = rand(0, 999999999) . rand(0, 9999999999);
                // Выведем ошибку
                $html .= '<div class="_core_error ' . $error['class'] . '">
						<input type="checkbox" id="eb_' . $id . '" class="_core_error_check_box">
						<label for="eb_' . $id . '" class="_core_error_label">
						<span class="_core_error_type">' . $error['type'] . '</span>
						<span class="_core_error_file">' . $error['file'] . '</span>
						<span class="_core_error_line">, стр. ' . $error['line'] . '</span>
						' . $error['message'] . '</label>
					</div>';
            }

            // Удалим ошибку которую мы вывели что бы она не вылезла внизу страницы повторно
            unset($this->errors[$index++]);
        }

        // Выведем блок для завершения вывода
        if ($index) $html .= '<div style="clear:both;"></div>';

        /*
        // Если єто отпечаток сайта - отправим ошибку на почту
        if( isset($GLOBALS["__CORE_SNAPSHOT"]) && $index )
        try { 	mail_send( 'info@samsonos.com','error@samsonos.com', $html, 'Ошибка PHP:'.url()->build() );	}
        catch (Exception $e) {}
        */

        // Если вывод ошибок включен
        if (self::$OUTPUT) echo $html;
    }
1069410
function load($object)
	{
		$set    = popval($where, '*set');
		$must_be_configured = $object->get('must_be_configured');
		$select = array();
		$post_functions = array();

		$table_prefix = '`'.$object->table_name().'`.';

//		if(Cfg::get('is_developer')) { bors_use('debug/print_dd'); echo "<b>Load: {$object->class_name()}</b><br/>"; print_dd($where); print_dd(bors_lib_orm::main_fields($object)); }
		foreach(bors_lib_orm::main_fields($object) as $f)
		{
			if(preg_match('/^\w+$/', $sql_name = $f['sql_name']))
				$x = $table_prefix.'`'.$sql_name.'`'; // убирать апострофы нельзя, иначе тупо не работабт поля с некорректными именами
			elseif(preg_match('/^(\w+)\+(\w+)$/', $f['sql_name'], $m)) // id => forum_id+group_id
				// http://forums.airbase.ru/2008/06/t62054,12--poslednij-pokhod-unikalnogo-korablya.html
				$x = "CONCAT({$m[1]},':',{$m[2]})";
			elseif(preg_match('/^`\w+`$/', $sql_name))
				$x = $table_prefix.$sql_name;
			else
				$x = $sql_name;

			if($f['sql_name'] != ($property = $f['property']))
				$x .= " AS `{$property}`";

			$select[] = $x;

			if(!empty($f['post_function']))
				$post_functions[$f['property']] = $f['post_function'];
		}

		$where = array('`'.$object->table_name().'`.`'.$object->id_field().'`=' => $object->id());

		$dummy = array();
		self::__join('inner', $object, $select, $where, $post_functions, $dummy);
		self::__join('left',  $object, $select, $where, $post_functions, $dummy);

		// формат: array(..., '*set' => 'MAX(create_time) AS max_create_time, ...')
		if($set)
			foreach(preg_split('/,\s*/', $set) as $s)
				$select[] = $s;

		$dbh = new driver_mysql($object->db_name());

		$data = $dbh->select($object->table_name(), join(',', $select), $where);

		if(!$data)
			return $object->set_is_loaded(false);

		$object->data = $data;

		if($must_be_configured)
			$object->b2_configure();

		if(!empty($post_functions))
			self::post_functions_do($object, $post_functions);

		$object->set_is_loaded(true);
		save_cached_object($object);

		return true;
	}
291631
private function linkAdminResources()
    {
        $page = Eresus_Kernel::app()->getPage();
        /** @var Eresus_Plugin $plugin */
        $plugin = $this->getModule();

        $resource = 'admin/default.css'; // В будущем «default» можно заменить именем темы
        if (file_exists($plugin->getCodeDir() . '/' . $resource))
        {
            $page->linkStyles($plugin->getCodeUrl() . $resource);
        }

        $resource = 'admin/scripts.js';
        if (file_exists($plugin->getCodeDir() . '/' . $resource))
        {
            $page->linkScripts($plugin->getCodeUrl() . $resource);
        }
    }