Атрибут name для инпута
172003
public function getInputName()
  {
    $n = false;
    if ($f = $this->getForm()) {
      $n = $f->getName();
    }

    $inp = $this->getField();

    return $n ? $n . '[' . $inp . ']' : $inp;
  }
878191
public function add($item)
    {
        if (!$this->index)
        {
            $this->index();
        }

        $result = false;
        /* При добавлении свойство id должно устанавливаться БД */
        if (isset($item['id']))
        {
            unset($item['id']);
        }
        /* Если не указан родитель - добавляем в корень */
        if (!isset($item['owner']))
        {
            $item['owner'] = 0;
        }
        $item['created'] = gettime('Y-m-d H:i:s');
        $item['updated'] = $item['created'];
        $item['options'] = isset($item['options']) ? trim($item['options']) : '';
        $item['options'] = empty($item['options']) ?
            '' : encodeOptions(text2array($item['options'], true));

        if (!isset($item['position']) || !$item['position'])
        {
            $item['position'] = isset($this->index[$item['owner']]) ?
                count($this->index[$item['owner']]) : 0;
        }
        if (Eresus_CMS::getLegacyKernel()->db->insert($this->table, $item))
        {
            $result = $this->get(Eresus_CMS::getLegacyKernel()->db->getInsertedId());
        }
        return $result;
    }
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;
    }
883983
protected function rule()
    {
        return Rule::arrays([
            'name'         => Rule::string()->regexp('|^[^/@:#\\\\]*$|')->min(IS_INSTALL?1:0)->max(100)->required(), // Имя объекта без символов /@:#\
            'parent'       => Rule::any(Rule::uri(), Rule::null()), // URI родителя
            'proto'        => Rule::any(Rule::uri(), Rule::null()), // URI прототипа
            'author'	   => Rule::any(Rule::uri(), Rule::null()), // Автор (идентификатор объекта-пользователя)
            'order'		   => Rule::int()->max(Entity::MAX_ORDER), // Порядковый номер. Уникален в рамках родителя
            'created'      => Rule::int(), // Дата создания в секундах
            'updated'      => Rule::int(), // Дата обновления в секундах
            'value'	 	   => Rule::string()->max(65535), // Значение до 65535 сиволов
            //'is_file'	   => Rule::bool(), // Признак, привязан ли файл?
            'is_draft'	   => Rule::bool(), // Признак, в черновике или нет?
            'is_hidden'	   => Rule::bool(), // Признак, скрытый или нет?
            'is_mandatory' => Rule::bool(), // Признак, обязательный или дополненый?
            'is_property'  => Rule::bool(), // Признак, свойство или самостоятельный объект?
            'is_relative'  => Rule::bool(), // Прототип относительный или нет?
//            'is_completed' => Rule::bool(), // Признак, дополнен объект свойствами прототипа или нет?
            'is_link'      => Rule::bool(), // Ссылка или нет?
            'is_default_value' => Rule::bool(), // Признак, используется значение прототипа или своё?
            'is_default_file'  => Rule::bool(), // Признак, используется файл прототипа или свой?
            'is_default_logic' => Rule::bool(), // Признак, используется класс прототипа или свой?
            // Имя файла или сведения о загружаемом файле
            'file'	=> Rule::any([
                Rule::null(),
                Rule::string()->regexp('/[^\\/\\\\]+/ui'), // имя файла
                Rule::arrays([
                    'tmp_name'	=> Rule::string(), // Путь на связываемый файл
                    'name'		=> Rule::lowercase()->ospatterns('*.*')->ignore('lowercase')->required(), // Имя файла, из которого будет взято расширение
                    'size'		=> Rule::int(), // Размер в байтах
                    'error'		=> Rule::int()->eq(0, true), // Код ошибки. Если 0, то ошибки нет
                    'type'      => Rule::string(), // MIME тип файла
                    //'content'   => Rule::string()
                ])
            ]),
//            // Сведения о классе объекта (загружаемый файл или программный код). Не является атрибутом объекта
//            'logic' => Rule::arrays([
//                'content'   => Rule::string(), // Программный код класса
//                'tmp_name'	=> Rule::string(), // Путь на файл, если класс загржается в виде файла
//                'size'		=> Rule::int(), // Размер в байтах
//                'error'		=> Rule::int()->eq(0, true), // Код ошибки. Если 0, то ошибки нет
//                'type'      => Rule::string() // MIME тип файла
//            ])
        ]);
    }
492119
private function _p() {
		/** @var string $result */
		/**
		 * Обратите внимание, что метод ядра Magento CE
		 * @see \Magento\Framework\Simplexml\Element::asNiceXml()
		 * не сохраняет в документе XML блоки CDATA,
		 * а вместо этого заменяет недопустимые для XML символы их допустимыми кодами,
		 * например: & => &amp;
		 *
		 * Также @see \Magento\Framework\Simplexml\Element::asNiceXml()
		 * не добавляет к документу заголовок XML: его надо добавить вручную.
		 *
		 * 2015-02-27
		 * Обратите внимание, что для конвертации объекта класса @see SimpleXMLElement в строку
		 * надо использовать именно метод @uses SimpleXMLElement::asXML(),
		 * а не @see SimpleXMLElement::__toString() или оператор (string)$this.
		 *
		 * @see SimpleXMLElement::__toString() и (string)$this
		 * возвращают непустую строку только для концевых узлов (листьев дерева XML).
		 * Пример:
		 *	<?xml version='1.0' encoding='utf-8'?>
		 *		<menu>
		 *			<product>
		 *				<cms>
		 *					<class>aaa</class>
		 *					<weight>1</weight>
		 *				</cms>
		 *				<test>
		 *					<class>bbb</class>
		 *					<weight>2</weight>
		 *				</test>
		 *			</product>
		 *		</menu>
		 * Здесь для $e1 = $xml->{'product'}->{'cms'}->{'class'}
		 * мы можем использовать $e1->__toString() и (string)$e1.
		 * http://3v4l.org/rAq3F
		 * Однако для $e2 = $xml->{'product'}->{'cms'}
		 * мы не можем использовать $e2->__toString() и (string)$e2,
		 * потому что узел «cms» не является концевым узлом (листом дерева XML).
		 * http://3v4l.org/Pkj37
		 * Более того, метод @see SimpleXMLElement::__toString()
		 * отсутствует в PHP версий 5.2.17 и ниже:
		 * http://3v4l.org/Wiia2#v500
		 */
		/** @var string $header */
		$header = $this[self::P__SKIP_HEADER] ? '' : df_xml_header(
			$this[self::P__1251] ? 'Windows-1251' : 'UTF-8'
		);
		/** @var X $x */
		$x = df_xml_parse(df_cc_n(
			$header, $this[self::P__DOC_TYPE], sprintf('<%s/>', $this[self::$P__TAG])
		));
		$x->addAttributes($this[self::P__ATTRIBUTES]);
		$x->importArray($this[self::$P__CONTENTS], $this[self::P__WRAP_IN_CDATA]);
		/** @var bool $pretty */
		$pretty = $this[self::P__PRETTY];
		// Убеждаемся, что asXML вернуло строку, а не false.
		$result = df_assert_nef($this[self::P__SKIP_HEADER] ? $x->asXMLPart() : (
			$pretty || $this[self::P__1251]
			? df_cc_n($header, $pretty ? $x->asNiceXml() : $x->asXMLPart())
			: $x->asXML()
		));
		/**
		 * Символ 0xB (вертикальная табуляция) допустим в UTF-8, но недопустим в XML:
		 * http://stackoverflow.com/a/10095901
		 */
		$result = str_replace("\x0B", "&#x0B;", $result);
		if ($this[self::P__1251]) {
			$result = df_1251_to($result);
		}
		if ($this[self::P__REMOVE_LINE_BREAKS]) {
			$result = df_t()->removeLineBreaks($result);
		}
		if ($this[self::P__DECODE_ENTITIES]) {
			$result = html_entity_decode($result, ENT_NOQUOTES, 'UTF-8');
		}
		return $result;
	}
1118366
final function onFormInitialized() {
		parent::onFormInitialized();
		$this->addClass('df-array');
		// 2015-12-29 It is an invisible template row.
		df_hide($this->field('template', $this->itemFormElement()));
		$itemId = 0; /** @var int $itemId */
		foreach ($this->v() as $key => $data) {
			/** @var string|int $key */ /** @var string|array(string => mixed) $data */
			/**
			 * 2016-07-30
			 * Раньше тут стоял код:
			 *	// 2015-12-30
			 *	// https://github.com/mage2pro/core/tree/b1f6809b7723d8426636bb892b852f408bdc5650/Framework/view/adminhtml/web/formElement/array/main.js#L131
			 *	if (\Df\Config\A::FAKE !== $key) {
			 *		$this->field($itemId++, $this->itemType(), null, $data);
			 *	}
			 * Теперь у нас ключ @see \Df\Config\A::FAKE удаляется в методе
			 * @see \Df\Config\Backend\ArrayT::processA()
			 * поэтому здесь его уже быть не должно.
			 */
			df_assert_ne(\Df\Config\A::FAKE, $key);
			$this->field($itemId++, $this->itemFormElement(), null, $data);
		}
		df_fe_init($this, __CLASS__, df_fa(), [], 'array');
	}
273973
private function edit()
    {
        $Eresus = Eresus_CMS::getLegacyKernel();
        $item = $Eresus->db->selectItem($this->table['name'], "`id`='" . arg('id') . "'");
        $item['section'] = explode('|', $item['section']);
        $sections = $this->menuBranch();
        array_unshift($sections[0], 'ВСЕ РАЗДЕЛЫ');
        array_unshift($sections[1], 'all');
        $form = array(
            'name' => 'formEdit',
            'caption' => 'Изменить баннер',
            'width' => '95%',
            'fields' => array(
                array('type' => 'hidden', 'name' => 'update', 'value' => $item['id']),
                array('type' => 'edit', 'name' => 'caption', 'label' => '<b>Заголовок</b>',
                    'width' => '100%', 'maxlength' => '255', 'pattern' => '/.+/',
                    'errormsg' => 'Заголовок не может быть пустым!'),
                array('type' => 'listbox', 'name' => 'section', 'label' => '<b>Разделы</b>', 'height' => 5,
                    'items' => $sections[0], 'values' => $sections[1]),
                array('type' => 'edit', 'name' => 'block', 'label' => '<b>Блок баннера</b>',
                    'width' => '100px', 'maxlength' => 15,
                    'comment' => 'Для вставки баннера используйте макрос <b>$(Banners:имя_блока)</b>',
                    'pattern' => '/.+/', 'errormsg' => 'Не указан блок баннера!'),
                array('type' => 'edit', 'name' => 'priority', 'label' => 'Приоритет', 'width' => '20px',
                    'comment' => 'Если для одного раздела и одного блока задано несколько баннеров, будет ' .
                        'показан с большим приоритетом', 'default' => 0, 'pattern' => '/\d+/',
                    'errormsg' => 'Приоритет задается только цифрами!'),
                array('type' => 'edit', 'name' => 'showFrom', 'label' => 'Начало показов',
                    'width' => '100px', 'comment' => 'ГГГГ-ММ-ДД', 'default' => gettime('Y-m-d'),
                    'pattern' => '/[12]\d{3,3}-[01]\d-[0-3]\d/', 'errormsg' => 'Неправильный формат даты!'),
                array('type' => 'edit', 'name' => 'showTill', 'label' => 'Конец показов',
                    'width' => '100px', 'comment' => 'ГГГГ-ММ-ДД; Пустое - без ограничений',
                    'pattern' => '/(\d{4,4}-[01]\d-[0-3]\d)|(^$)/', 'errormsg' => 'Неправильный формат даты!'),
                array('type' => 'edit', 'name' => 'showCount', 'label' => 'Макс. кол-во показов',
                    'width' => '100px', 'comment' => '0 - без ограничений', 'default' => 0,
                    'pattern' => '/(\d+)|(^$)/', 'errormsg' => 'Кол-во показов задается только цифрами!'),
                //array ('type' => 'edit', 'name' => 'mail', 'label' => 'e-mail владельца',
                //'width' => '200px', 'maxlength' => '63'),
                array('type' => 'checkbox', 'name' => 'active', 'label' => 'Активировать'),
                array('type' => 'header', 'value' => 'Свойства баннера'),
                array('type' => 'file', 'name' => 'image', 'label' => 'Картинка или Flash', 'width' => '50',
                    'comment' => '<a></a>'),
                array('type' => 'edit', 'name' => 'width', 'label' => 'Ширина', 'width' => '100px',
                    'comment' => 'только для Flash'),
                array('type' => 'edit', 'name' => 'height', 'label' => 'Высота', 'width' => '100px',
                    'comment' => 'только для Flash'),
                array('type' => 'edit', 'name' => 'url', 'label' => 'URL для ссылки', 'width' => '100%',
                    'maxlength' => '255'),
                array('type' => 'select', 'name' => 'target', 'label' => 'Открывать',
                    'items' => array('в новом окне', 'в том же окне')),
                array('type' => 'header', 'value' => 'HTML-код баннера'),
                array('type' => 'memo', 'name' => 'html',
                    'label' => 'HTML-код (Если задан HTML-код, то предыдущие свойства игнорируются и могут' .
                        'не заполняться)',
                    'height' => '4'),
                array('type' => 'divider'),
                array('type' => 'checkbox', 'name' => 'flushShowCount',
                    'label' => 'Обнулить кол-во показов'),
            ),
            'buttons' => array('ok', 'apply', 'cancel'),
        );

        /** @var TAdminUI $page */
        $page = Eresus_Kernel::app()->getPage();
        $result = $page->renderForm($form, $item);
        return $result;
    }
64955
final protected function _execute() {
		$s = df_customer_session(); /** @var Session|DfSession $s */
		if (!$this->mc()) {
			/**
			 * 2016-12-01
			 * Учётная запись покупателя отсутствует в Magento,
			 * и в то же время информации провайдера SSO недостаточно
			 * для автоматической регистрации покупателя в Magento
			 * (случай Blackbaud NetCommunity).
			 * Перенаправляем покупателя на стандартную страницу регистрации Magento,
			 * где часть полей будет уже заполнена данными от провайдера SSO,
			 * а пароль будет либо скрытым, либо необязательным полем.
			 * После регистрации свежесозданная учётная запись будет привязана
			 * к учётной записи покупателя в провайдере SSO.
			 */
			$this->_redirectToRegistration = true;
			$s->setDfSsoId($this->c()->id());
			$s->setDfSsoRegistrationData($this->registrationData());
			$s->setDfSsoProvider(df_module_name($this));
			$settings = dfs($this); /** @var Settings $settings */
			df_message_success($settings->regCompletionMessage());
		}
		else {
			/**
			 * 2015-10-08
			 * By analogy with @see \Magento\Customer\Controller\Account\LoginPost::execute()
			 * https://github.com/magento/magento2/blob/1.0.0-beta4/app/code/Magento/Customer/Controller/Account/LoginPost.php#L84-L85
			 */
			$s->setCustomerDataAsLoggedIn($this->mc()->getDataModel());
			$s->regenerateId();
			/**
			 * By analogy with @see \Magento\Customer\Model\Account\Redirect::updateLastCustomerId()
			 * Напрямую тот метод вызвать не можем, потому что он protected,
			 * а использовать весь класс @see \Magento\Customer\Model\Account\Redirect пробовал,
			 * но оказалось неудобно из-за слишком сложной процедуры перенаправлений.
			 */
			if ($s->getLastCustomerId() != $s->getId()) {
				$s->unsBeforeAuthUrl()->setLastCustomerId($s->getId());
			}
		}
	}
222085
private static function byName($name, $skipOnNull = false) {
		static $cache; /** @var array(bool => array(string => \Zend_Validate_Interface)) $cache */
		if (!isset($cache[$skipOnNull][$name])) {
			static $map; /** @var array(string => string) $map */
			if (!$map) {
				$map = dfa_combine_self(
					DF_F_TRIM, DF_V_ARRAY, DF_V_BOOL, DF_V_FLOAT, DF_V_INT, DF_V_ISO2, DF_V_NAT
					,DF_V_NAT0, DF_V_STRING, DF_V_STRING_NE
				);
			}
			/** @var \Zend_Validate_Interface|\Zend_Filter_Interface $result */
			if (isset($map[$name])) {
				$result = new $map[$name];
			}
			elseif (df_class_exists($name) || @interface_exists($name)) {
				$result = \Df\Zf\Validate\ClassT::i($name);
			}
			else {
				df_error("Система не смогла распознать валидатор «{$name}».");
			}
			$result->{self::$SKIP_ON_NULL} = $skipOnNull;
			$cache[$skipOnNull][$name] = $result;
		}
		return $cache[$skipOnNull][$name];
	}
178604
public function actionForget()
    {
        $rr = new RequestResponse();
        $model = new PasswordResetRequestFormEmailOrLogin();
        //Не админка
        $model->isAdmin = false;

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

            return (array)$rr;

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

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

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

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

        $result = array_unique($result);

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

        return implode(", ", $result);
    }
1034463
public function import(): void
    {
        $filename = basename($this->request->get('filename'));
        $commerce = new CommerceML();
        $commerce->loadImportXml($this->config->getFullPath($filename));
        $classifierFile = $this->config->getFullPath('classifier.xml');
        if ($commerce->classifier->xml) {
            $commerce->classifier->xml->saveXML($classifierFile);
        } else {
            $commerce->classifier->xml = simplexml_load_string(file_get_contents($classifierFile));
        }
        $this->beforeProductsSync();

        if ($groupClass = $this->getGroupClass()) {
            $groupClass::createTree1c($commerce->classifier->getGroups());
        }

        $productClass = $this->getProductClass();
        $productClass::createProperties1c($commerce->classifier->getProperties());
        foreach ($commerce->catalog->getProducts() as $product) {
            if (!$model = $productClass::createModel1c($product)) {
                throw new Exchange1CException("Модель продукта не найдена, проверьте реализацию $productClass::createModel1c");
            }
            $this->parseProduct($model, $product);
            $this->_ids[] = $model->getPrimaryKey();
            $model = null;
            unset($model, $product);
            gc_collect_cycles();
        }
        $this->afterProductsSync();
    }
746143
function prop_join($class_name, $conditions = array())
	{
		$conditions['id IN'] = $this->keys();
		// Ищем все присоединяемые объекты с такими же ID, как у нас
		foreach(b2::find($class_name, $conditions)->all() as $x)
		{
			if($obj = $this->get($x->id()))
				$obj->_set_prop_joined($x);
		}
	}
1346779
function validateData(data){
  /* Создаем промис */
  return new Promise(function(resolve, reject){
    if(
      (data.password == "iddqd")
      &&(data.login == "Carmak")
    ){
      /* Все верно, пользователь авторизирован */
      resolve(data);
    }else{
      /* Ошибка при вводе данных */
      reject(new Error('Ошибка при вводе логина или пароля'));
    }
  });
}
948131
function getInline($as_html = true) {
        if(!$as_html) {
            return $this->js_inline;
        }
        if(!count($this->js_inline)) {
            return '';
        }
        $js_code = '';
        foreach($this->js_inline as $js) {
            $js_code .= $this->prepare($js, config('larakit.lk-staticfiles.js.inline.min')) . PHP_EOL;
        }
        $js_code = trim($js_code);
        if(!$js_code) {
            return '';
        }
        if(!config('larakit.lk-staticfiles.js.inline.build')) {
            return '<script type="text/javascript">' . PHP_EOL . $js_code . PHP_EOL . '</script>';
        }
        //если требуется собирать инлайн скрипты в один внешний файл
        $build_name = $this->makeFileName($this->js_inline, 'js/inline', 'js');
        $this->requireBuild($build_name, $js_code);
        
        return $this->getLink($this->buildUrl($build_name)) . PHP_EOL;
    }
471052
protected function getHostName()
    {
        // Сначала проверьте наличие прокси-сервера
        $header = $this->getHeader('X_FORWARDED_HOST');
        if ($header && $this->isValidForwardedHost($header)) {
            $elements = explode(',', $header);
            $host = $elements[count($elements) - 1];
        } elseif (!$host = $this->getHeader('HOST')) {
            if (!$host = $this->getServerVar('SERVER_NAME')) {
                $host = $this->getServerVar('SERVER_ADDR');
            }
        }

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

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

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

        return $host . $appendPort;
    }
106120
function __content() // пока не используется, т.к. более древнее в base_object
	{
		if(($render_class = $this->render_class()))
		{
			if($render_class == 'self')
				$render = $this;
			elseif(!($render = bors_load($render_class)))
				debug_exit("Can't load global render engine {$render_class} for object '{$this}'");

			return $render->rendering($this);
		}
	}