{@inheritdoc}

Обработка элемента (строки из файла). В соответствии со столбцами и их
порядком мы получаем их данные в переменные. И не забываем про $context.
494829
public function processItem($data, &$context) {
        $database = Database::getConnection();

        # Прокручиваем $data, каждый элемент которого
        # является массивом с данными из CSV.
        foreach ($data as $item) {
            # В этой строке мы лишь заменяем $data на $item,
            # в соответствии с циклом выше.
            list($country_id, $name) = $item;

            $database->insert('site_geo_country')
                ->fields([
                    'country_id' => $country_id,
                    'name' => $name,
                ])
                ->execute();

            # Записываем результат в общий массив результатов batch операции. По этим
            # данным мы будем выводить кол-во импортированных данных.
            $context['results'][] = $country_id . ' : ' . $name;
            $context['message'] = $name;
        }
    }
683
public function startImport(array &$form, FormStateInterface $form_state) {
        // Выполняет стандартную валидацию полей формы и добавляет примечания об ошибках.
        ConfigFormBase::validateForm($form, $form_state);

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

            $fid = $config->get('fid');
            $skip_first_line = $config->get('skip_first_line');            
            $chunk_size = $config->get('chunk_size');            

            if ($fid) {
                $import = new SiteCommerceDrupal7BatchImport($fid, $skip_first_line, $chunk_size);
                $import->setBatch();
            }
        }
    }
1001965
protected function _initAutoColumns()
    {

        //Если автоопределение колонок не включено
        if (!$this->isEnabledAutoColumns) {
            return $this;
        }

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

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

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


        if (is_array($model) || is_object($model)) {
            foreach ($model as $name => $value) {
                if ($value === null || is_scalar($value) || is_callable([$value, '__toString'])) {

                    $key = $name;
                    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 ($model instanceof Component && $model->hasProperty($keyName)) {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name, $keyName) {
                                return $model->{$keyName};
                            },
                        ];
                    } else if ($model instanceof Component && $model->hasProperty(lcfirst($keyManyName))) {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name, $keyManyName) {
                                return count($model->{$keyManyName});
                            },
                        ];
                    } else {
                        $this->_autoColumns[(string)$name] = [
                            'attribute' => $name,
                            'format'    => 'raw',
                            'value'     => function ($model, $key, $index) use ($name) {
                                if (is_array($model)) {
                                    $v = $model[$name];
                                } else {
                                    $v = $model->{$name};
                                }

                                if (is_array($v)) {
                                    return implode(",", $v);
                                } else {
                                    return $v;
                                }
                            },
                        ];
                    }

                }
            }
        }

        return $this;
    }
445851
function traitEntity_formAddFields($form) {
        foreach ($this->traitEntity_formFields() as $k => $v) {
            if (!is_array($v)) {
                $form->{\Str::camel('add_' . $v)}($form);
            } else {
                $f = $form->putTbFieldset($k);
                foreach ($v as $field) {
                    $form->{\Str::camel('add_' . $field)}($f);
                }
            }
        }
        //        if(method_exists($this->model, 'tags')){
        //            $form->putTbSelect2('tags')->setLabel('Метки')->setDesc('Через запятую')->loadOptions(\Larakit\Model\Tag::lists('name', 'name'));
        //        }
    }
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);
		}
	}
12478
function handleContextNode( $context )
    {
        $contextName = null;
        $messages = array();
        $context_children = $context->childNodes;

        for( $i = 0; $i < $context_children->length; $i++ )
        {
            $context_child = $context_children->item( $i );
            if ( $context_child->nodeType == XML_ELEMENT_NODE )
            {
                if ( $context_child->tagName == "name" )
                {
                    $name_el = $context_child->firstChild;
                    if ( $name_el )
                    {
                        $contextName = $name_el->nodeValue;
                    }
                }
                break;
            }
        }
        if ( !$contextName )
        {
            eZDebug::writeError( "No context name found, skipping context", __METHOD__ );
            return false;
        }
        foreach( $context_children as $context_child )
        {
            if ( $context_child->nodeType == XML_ELEMENT_NODE )
            {
                $childName = $context_child->tagName;
                if ( $childName == "message" )
                {
                    $this->handleMessageNode( $contextName, $context_child );
                }
                else if ( $childName == "name" )
                {
                    /* Skip name tags */
                }
                else
                {
                    eZDebug::writeError( "Unknown element name: $childName", __METHOD__ );
                }
            }
        }
        if ( $contextName === null )
        {
            eZDebug::writeError( "No context name found, skipping context", __METHOD__ );
            return false;
        }
        if ( !isset( $this->CachedMessages[$contextName] ) )
            $this->CachedMessages[$contextName] = array();

        return true;
    }
492525
final protected function _process() {
		/**
		 * 2016-08-22
		 * Помимо добавления поля в таблицу «customer_entity» надо ещё добавить атрибут,
		 * иначе данные не будут сохраняться:
		 *		$attribute = $this->getAttribute($k);
		 *		if (empty($attribute)) {
		 *			continue;
		 *		}
		 * https://github.com/magento/magento2/blob/2.1.0/app/code/Magento/Eav/Model/Entity/AbstractEntity.php#L1262-L1265
		 */
		if ($this->v('1.7.4')) {
			df_eav_setup()->addAttribute('customer', UpgradeSchema::F__DF, [
				'input' => 'text'
				,'label' => 'Mage2.PRO'
				,'position' => 1000
				,'required' => false
				,'sort_order' => 1000
				,'system' => false
				,'type' => 'static'
				,'visible' => false
			]);
		}
	}
785220
function check($children = true)
    {
        // "Контейнер" для ошибок по атрибутам и подчиненным объектам
        //$errors = new Error('Неверный объект', $this->uri());
        if ($this->_checked) return true;

        // Проверка и фильтр атрибутов
        $attribs = new Values($this->_attributes);
        $filtered = array_replace($this->_attributes, $attribs->get($this->rule(), $error));
        /** @var $error Error */
        if ($error){
            //$errors->_attributes->add($error->children());
            $this->errors()->_attributes->add($error->children());
        }else{
            $this->_attributes = $filtered;
        }
        // Проверка подчиненных
        if ($children){
            foreach ($this->_children as $child){
                $error = null;
                /** @var Entity $child */
                if (!$child->check()){
                    //$errors->_children->add($error);
                    $this->errors()->_children->add($child->errors());
                }
            }
        }
        // Проверка родителем.
        if ($p = $this->parent(null,true)){
            $p->checkChild($this);
        }
        // Если ошибок нет, то удаляем контейнер для них
        if (!$this->errors()->isExist()){
            //$errors = null;
            return $this->_checked = true;
        }
        return false;
    }
498356
public function saveStorgaFile($e)
    {
        foreach ($this->fields as $fieldCode) {
            /**
             * Удалить старые файлы
             */
            if ($this->owner->isAttributeChanged($fieldCode)) {
                if ($this->owner->getOldAttribute($fieldCode) && $this->owner->getOldAttribute($fieldCode) != $this->owner->{$fieldCode}) {
                    $this->_removeFiles[] = $this->owner->getOldAttribute($fieldCode);
                }
            }

            if ($this->owner->{$fieldCode} && is_string($this->owner->{$fieldCode}) && ((string)(int)$this->owner->{$fieldCode} != (string)$this->owner->{$fieldCode})) {
                try {
                    $data = [];

                    if (isset($this->owner->{$this->nameAttribute})) {
                        if ($name = $this->owner->{$this->nameAttribute}) {
                            $data['name'] = $name;
                        }
                    }

                    $file = \Yii::$app->storage->upload($this->owner->{$fieldCode}, $data);
                    if ($file) {
                        $this->owner->{$fieldCode} = $file->id;
                    } else {
                        $this->owner->{$fieldCode} = null;
                    }

                } catch (\Exception $e) {
                    \Yii::error($e->getMessage());
                    $this->owner->{$fieldCode} = null;
                }
            }
        }
    }
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);
		}
	}
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();
    }
977144
public function context(Context $context = null) : Context
    {
        if (!$this->context) {
            $this->context = $context ?: new SimpleContext;
        }

        return $this->context;
    }
339231
public function update(ARef $ref, OwnField $own, $value)
    {
        $type          = $ref->getType();
        $type_name     = $type->getName();
        $id            = $ref->getId();
        $own_type_name = $own->getFieldTypeName();
        $own_name      = $own->getName();

        if($own_type_name !== 'seo')
        {
            throw new UpdateException('Seo не обрабатывает тип '.$own_type_name);
        }

        if(!is_string($value))
        {
            $value = '';
            //throw new UpdateException('Seo поле '.$own_name.' типа '.$own_type_name.' должно быть задано строкой!');
        }

        $field = Seo::firstOrNew(['entity_name' => $type_name, 'entity_id' => $id, 'name' => $own_name]);

        $field->value = $value;
        $field->save();
    }
700642
function crop_img_in_box($width, $height) {
            //сделаем так, чтобы исходная картинка вписывалась большей стороной в указанный прямоугольник
            $this->resize_img_in_box($width, $height);
            //рассчитаем отступы
            $offset_x = abs(round(($this->width - $width) / 2));
            $offset_y = abs(round(($this->height - $height) / 2));
            //подготовим фон залитый белым цветом
            $final           = imagecreatetruecolor($width, $height);
            $backgroundColor = imagecolorallocate($final, 255, 255, 255);
            imagefill($final, 0, 0, $backgroundColor);
            //скопируем в него исходнеое уменьшенное изображение
            if (imagecopy($final, $this->_image, $offset_x, $offset_y, 0, 0, $this->width, $this->height)) {
                // Swap the new image for the old one
                imagedestroy($this->_image);
                $this->_image = $final;
                // Reset the width and height
                $this->width  = imagesx($final);
                $this->height = imagesy($final);
            }
            return $this;
        }
94877
static function create($content, $to, $append = false)
    {
        $to = self::makeVirtualDir($to);
        // Если папки нет, то создаем её
        $dir = dirname($to);
        if(!is_dir($dir)){
            mkdir($dir, 0775, true);
        }
        $result = false;
        // Создание файла
        if (($f = fopen($to, $append?'a':'w'))) {
            stream_set_write_buffer($f, 20);
            fwrite($f, $content);
            fclose($f);
            $result = true;
        }
        self::deleteVirtualDir($to);
        return $result;
    }
171696
function file($new = null, $root = false)
    {
        // Установка нового файла
        if (isset($new)){
            if (empty($new)){
                $this->change('file', '');
            }else{
                if (is_string($new)){
                    $new = [
                        'tmp_name'	=> $new,
                        'name' => basename($new),
                        'size' => @filesize($new),
                        'error'	=> is_file($new)? 0 : true
                    ];
                }
                if (empty($new['name']) && $this->is_file()){
                    $new['name'] = $this->name().'.'.File::fileExtention($this->file());
                }
                $this->change('file', $new);
            }
            $this->change('is_default_file', false);
            $this->_def_file = null;
        }
        // Возврат пути к текущему файлу, если есть
        if ($this->is_file()){
            if (($proto = $this->is_default_file(null, true)) && $proto->is_exists()){
                return $proto->file(null, $root);
            }else{
                if (is_array($this->_attributes['file'])){
                    return $this->_attributes['file'];
                }
                return $this->dir($root).$this->_attributes['file'];
            }
        }
        return null;
    }
261936
function inherit(layout, parent) {
        var result = ns.object.clone(parent);

        for (var key in layout) {
            //  В ключе должен быть "путь" вида 'app left@ message content@'.
            var parts = key.split(hasSpacesRE);
            var l = parts.length;

            //  Путь должен заканчиваться на бокс.
            //  Т.е. на строку вида 'foo@'.
            //  Потому что можно переопределять только содержимое боксов.
            //  Изменять лэйаут блоков нельзя.
            if ( getViewType( parts[l - 1] ) !== ns.L.BOX ) {
                throw new Error("[ns.layout] Can't overwrite view layout '" + parts[l - 1] + "'");
            }

            var lvalue = result;
            for (var i = 0; i < l - 1; i++) {
                lvalue = lvalue[ cleanKey(parts[i]) ].views;
                if (!lvalue) {
                    throw new Error( '[no.layout] Path "' + parts.slice(0, i).join(' ') + '" is undefined in this layout and cannot be extended' );
                }
            }
            lvalue[ cleanKey(parts[l - 1]) ] = layout[key];
        }

        return result;
    }