Генерация внешнего ключа
345331
protected function makeFK($arr, $table_exists)
  {
    $m    = $this->getManager();
    $s    = $arr['schema'] instanceof Schema ? $arr['schema'] : $m->getSchema($arr['schema']);
    $f_id = $arr['foreign_id'] ?: $s->getPrimaryKey();
    $opts = array();

    if ($arr['on_delete']) {
      $opts['delete'] = $arr['on_delete'];
    }

    if ($arr['on_update'] || $arr['on_delete']) {
      $opts['update'] = $arr['on_update'] ?: $arr['on_delete'];
    }

    $add = '    $tbl->addForeignKey("' . $arr['column'] . '", "'
      . $m->getPrefix() . $arr['table'] . '", "' . $f_id . '", '
      . str_replace("\n", '', var_export($opts, true))
      . ");\n";

    return $table_exists
      ? '    if (!$tbl->hasForeignKey("' . $arr['column'] . '")) {' . "\n  " . $add . "    }\n"
      : $add;
  }
1128099
protected function checkEnvironment()
    {
        $errors = array();

        /* Проверяем наличие нужных файлов */
        $required = array('cfg/main.php');
        foreach ($required as $filename)
        {
            if (!file_exists($filename))
            {
                $errors []= array('file' => $filename, 'problem' => 'missing');
            }
        }

        /* Проверяем доступность для записи */
        $writable = array(
            'cfg/settings.php',
            'var',
            'data',
            'templates',
            'style'
        );
        foreach ($writable as $filename)
        {
            if (!is_writable($filename))
            {
                $errors []= array('file' => $filename, 'problem' => 'non-writable');
            }
        }

        if ($errors)
        {
            if (!Eresus_Kernel::isCLI())
            {
                require_once 'errors.html.php';
            }
            else
            {
                die("Errors...\n"); // TODO Доделать
            }
        }
    }
1223377
function(model, force) {
        var request = this._keys[model.key];
        // хотя такого не может быть, но вдруг его нет
        if (request) {
            if (model.isValid() || force) {
                request.status = this.STATUS.DONE;

            } else {
                request.status = this.STATUS.FAILED;
            }
        }
    }
999011
public function endSpaceless()
    {
        if ($this->isEnabled()) {

            $buffer = ob_get_clean();
            $expelled_tags = implode('|', config('spaceless.expelled_tags', []));

            // Все пробелы/переносы конвертируются в одинарный
            $regexp = '~(?>[^\S]\s*|\s{2,})(?=[^<]*+(?:<(?!/?(?:' . $expelled_tags . ')\b)[^<]*+)*+(?:<(?>' . $expelled_tags . ')\b|\z))~Six';
            $result = preg_replace($regexp, ' ', $buffer);

            return ($result !== null) ? $result : $buffer;
        }

        return null;
    }
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();
    }
1170011
public function execute(ARef $ref)
    {
        $type      = $ref->getType();
        $type_name = $type->getName();

        if($type->getFamily() === $this->getFamily())
        {
            if($type->getRank() === TypeRank::BLOCK)
            {
                if($type_name === 'feedback')
                {
                    //Fbac - очищать?
                }
                else//Если удаляется одна из форм, очистить письма и получателей
                {
                    Fbmail::where('form_name', '=', $type_name)->delete();
                    Fbmailto::where('form_name', '=', $type_name)->delete();
                }
            }
            elseif($type->getRank() === TypeRank::GROUP)
            {
                //Пока нет групп подчиненных группам и перекрестных ссылок в пакете
            }
        }
        else
        {
            //Когда будут ссылки на сторонние А записи - наполнить логику здесь
        }
    }
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());
            }
        }
    }
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;
    }
905149
public function validate()
    {
        $preFunctions = $this->getPreFunctions();
        $postFunctions = $this->getPostFunctions();
        $validators = $this->getValidators();

        ValidationHelper::validate($preFunctions);
        ValidationHelper::validate($postFunctions);
        ValidationHelper::validate($validators);

        $split = $this->getSplit();
        $join = $this->getJoin();

        $parent = $this->getParent();
        if ((null === $split) && (null === $join) && !($parent instanceof ActionDescriptor && ($parent->isFinish()))) {
            $errMsg = '';
            $id = (integer)$this->getId();
            if (is_numeric($id)) {
                $errMsg .= sprintf('#%s:', $id);
            }
            $errMsg .= 'Если не указано значение атрибутов split или join, необходимо указать';

            if (!$this->hasStep) {
                $errMsg .= ' id следующего шага';
                throw new InvalidWorkflowDescriptorException($errMsg);
            }

            $status = $this->getStatus();
            if (!$status) {
                $errMsg .= ' статус';
                throw new InvalidWorkflowDescriptorException($errMsg);
            }
        }
    }
581821
public function register(): void
    {
        // Необходимая вещь
        $this->app->instance(JsonRpcRequest::class, new JsonRpcRequest(new \StdClass, []));

        // Сервер JsonRpc
        $this->app->singleton(JsonRpcServer::class, function () {
            return new JsonRpcServer();
        });

        // Обработчик ошибок JsonRpc
        $this->app->singleton(JsonRpcHandler::class, function () {
            return new Handler();
        });
    }
1182613
public function adminRenderContent()
    {
        $result = '';
        /* @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        switch (true)
        {
            /*
             * Управление группами
             * Этот блок должен располагаться до блока управления изображениями из-за того что иначе
             * наличие аргумента id может быть ошибочно расценено как запрос на диалог изменения
             * изображения.
             */
            case arg('action') == 'group':
                $result = $this->adminRenderGroupsList();
                break;
            case arg('group_id') !== null:
                $result = $this->adminEditGroupDialog();
                break;
            case arg('action') == 'group_create':
                $result = $this->adminAddGroupDialog();
                break;
            case arg('action') == 'group_insert':
                $this->adminInsertGroup();
                break;
            case arg('action') == 'group_update':
                $this->adminUpdateGroup();
                break;
            case arg('group_up') !== null:
                $this->adminMoveUpGroup();
                break;
            case arg('group_down') !== null:
                $this->adminMoveDownGroup();
                break;
            case arg('group_delete') !== null:
                $this->adminDeleteGroup();
                break;
            /* Управление изображениями */
            case arg('action') == 'create':
                $result = $this->adminAddItem();
                break;
            case arg('id') !== null:
                $result = $this->adminEditItem();
                break;
            case arg('update') !== null:
                $this->adminUpdateImage();
                break;
            case arg('toggle') !== null:
                $this->adminImageToggle(arg('toggle', 'int'));
                break;
            case arg('cover') !== null:
                $this->coverAction();
                break;
            case arg('delete') !== null:
                $this->delete(arg('delete', 'int'));
                break;
            case arg('up') !== null:
                $this->up(arg('up', 'int'));
                break;
            case arg('down') !== null:
                $this->down(arg('down', 'int'));
                break;
            /* Управление свойствами галереи */
            case arg('action') == 'props':
                $result = $this->adminRenderProperties();
                break;
            case arg('action') == 'props_update':
                $this->updateProperties();
                break;
            /* Действие по умолчанию */
            default:
                $result = $this->adminRenderImagesList();
                break;
        }

        /*
         * Кнопки-"вкладки"
         */
        $tabs = array('width' => '14em', 'items' => array());
        $tabs['items'] []= array(
            'caption' => 'Изображения',
            'url' => preg_replace('/&(id|pg)=\d+/', '', $page->url(null)),
        );

        if ($this->settings['useGroups'])
        {
            $tabs['items'] []= array(
                'caption' => 'Группы',
                'url' => preg_replace('/&(id|pg)=\d+/', '', $page->url(array('action' => 'group'))),
            );
        }

        $tabs['items'] []= array(
            'caption' => 'Свойства галереи',
            'url' => preg_replace('/&(id|pg)=\d+/', '', $page->url(array('action' => 'props'))),
        );

        $result = $page->renderTabs($tabs) . $result;

        return $result;
    }
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;
	}
598796
function evalInput() {
    'use strict';
    if (input.value != window.lastInput) {
        var theResult, evalSucceeded;
        try {
            theResult = eval(input.value);
            evalSucceeded = true;
        } catch (e) {
            output.innerHTML = e;
        }
        if (evalSucceeded) {
            // TODO: Обработать вывод ошибок (перевод)
            output.innerHTML = (theResult + "").replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\r\n|\r|\n/g, '<br>');
        }
        window.lastInput = input.value;
    }
}
658304
public function init()
    {
        // Если гость ...
        if (Yii::$app->getUser()->isGuest) {
            // ... то корзину храним в сессии
            $this->basket = new SessionBasket();
        } else {
            // ... иначе в БД
            $this->basket = new DbBasket();
            $this->basket->idUser = Yii::$app->user->identity->getId();
        }

        $this->basket->owner  = $this;

        // Если в сессии осталась корзина, а пользователь уже не гость => сливаем в БД
        if(!is_null(Yii::$app->session->get($this->storageName, null)) && !Yii::$app->getUser()->isGuest) {
            $this->basket->merge();
        }

        // Кешируем товары
        // Это нужно, чтобы для проверки в корзине товар или нет, не делать запросы в БД для каждого товара
        $this->cache = $this->basket->getBasketProducts();
    }
1175334
public function exist(ARef $ref)
    {
        $type = $ref->getType();
        $type_name = $type->getName();

        $id = $ref->getId();

        $type_rank = $type->getRank();

        if($type_rank === TypeRank::BLOCK)
        {
            $collection = Fbform::where('name', $type_name)->get();
        }
        elseif($type_rank === TypeRank::GROUP)
        {
            $suffix_pos = strripos($type_name, '_');

            if($suffix_pos)
            {
                $suffix = substr($type_name, $suffix_pos+1);

                if($suffix === 'mail')
                {
                    $collection = Fbmail::where('name', '=', $type_name)->where('id', '=', $id)->get();
                }
                elseif($suffix === 'mailto')
                {
                    $collection = Fbmailto::where('name', '=', $type_name)->where('id', '=', $id)->get();
                }
                else
                {
                    throw new FeedbackException('Не корректный суффикс '.$type_name.' ссылки!');
                }
            }
            elseif($type_name === 'mailfromac')
            {
                $collection = Fbac::where('id', '=', $id)->get();
            }
            else
            {
                throw new FeedbackException('Имя типа '.$type_name.' не поддерживается!');
            }
        }
        else
        {
            throw new FeedbackException('Не корректный ранг типа '.$type_name.' ссылки!');
        }

        return !$collection->isEmpty();
    }
183855
public function validateStatusApi(): bool
    {
        /** @var AbstractUser $user */
        $user = $this->getUser();
        if ($user && $user->status_id === AbstractUser::STATUS_BLOCKED) {
            throw new InvalidArgumentException(\Yii::t('app', 'Ваш аккаунт заблокирован. Обратитесь к тех.поддержке.'));
        }
        if ($user && $user->status_id === AbstractUser::STATUS_WAIT_EMAIL) {
            throw new InvalidArgumentException(\Yii::t('app', 'Ваш аккаунт не подтвержден. Необходимо подтвердить e-mail.'));
        }
        return true;
    }
1274453
public function isValid()
    {
        $result = true;
        //waliduje poprawnie jeśli niewymagane, ale tylko gdy niepuste
        if (!($this->getRequired() || empty($this->getFiles()))) {
            return $result;
        }
        //iteracja po walidatorach
        foreach ($this->getValidators() as $validator) {
            if ($validator->isValid($this->getFiles())) {
                continue;
            }
            $result = false;
            //dodawanie wiadomości z walidatora
            $this->addError($validator->getMessage() ? $validator->getMessage() : $validator->getError());
        }
        //zwrot rezultatu wszystkich walidacji (iloczyn)
        return $result;
    }