src/Db/ModImagesAMapper.php
public function getByRef(ARef $ref, $asUnitMember = false)
    {
        if($this->item)
        {
            return $this->item;
        }

        $type  = $ref->getType();
        $rank = $type->getRank();
        $type_name = $type->getName();

        if($type_name !== 'modimages' or $rank !== TypeRank::BLOCK)
        {
            throw new ImageAggrException('Маппер предназначен для получения блока modimages(A), передано: '.$type_name.'('.$rank.')!');
        }

        $fields  = $this->collectionFactory->createFieldsCollection();
        $owns    = $this->collectionFactory->createOwnsCollection();
        $refs    = $this->collectionFactory->createRefsCollection();
        $subVars = $this->collectionFactory->createSubVarCollection($ref);

        $item = new BlockItem($ref, $fields, $owns, $refs, $subVars);

        //====================================================поля
        $ownsMetaCollection = $type->getOwns();

        foreach($ownsMetaCollection as $ownMeta)
        {
            $fieldType = $ownMeta->getFieldType();
            $fieldMode = $ownMeta->getMode();

            $field_name = $ownMeta->getName();

            if($this->local($field_name)) //все поля локального хранения - С типы
            {
                $newField = $this->createLocalCField($item, $ownMeta, $this->local_fields[$field_name]);
            }
            else
            {
                if($fieldMode === TypeMode::MODE_B)
                {
                    $mapper = $this->mappersMediator->getBMapper($fieldType->getFamily());
                    $map = $mapper->getByRef($ref);
                    $newField = $this->createExternalBFieldByRef($item, $ownMeta, $map);
                }
                elseif($fieldMode === TypeMode::MODE_C)
                {
                    throw new ImageAggrException('Попытка добавить внешнее (С)поле в блок картинок модификации, такая возможность не поддерживается!');
                }
                else
                {
                    throw new ImageAggrException('В типе '.$type_name.' обнаружено поле-собственность типа отличного от В или С: '.$field_name.'('.$fieldMode.')!');
                }
            }

            $item->setOwn($newField);
            $item->setField($newField);
        }

        $this->item = $item;

        return $item;
    }
public function getByRef(ARef $ref, $asUnitMember = false)
    {
        if($this->item)
        {
            return $this->item;
        }

        $type  = $ref->getType();
        $rank = $type->getRank();
        $type_name = $type->getName();

        if($type_name !== 'modimages' or $rank !== TypeRank::BLOCK)
        {
            throw new ImageAggrException('Маппер предназначен для получения блока modimages(A), передано: '.$type_name.'('.$rank.')!');
        }

        $fields  = $this->collectionFactory->createFieldsCollection();
        $owns    = $this->collectionFactory->createOwnsCollection();
        $refs    = $this->collectionFactory->createRefsCollection();
        $subVars = $this->collectionFactory->createSubVarCollection($ref);

        $item = new BlockItem($ref, $fields, $owns, $refs, $subVars);

        //====================================================поля
        $ownsMetaCollection = $type->getOwns();

        foreach($ownsMetaCollection as $ownMeta)
        {
            $fieldType = $ownMeta->getFieldType();
            $fieldMode = $ownMeta->getMode();

            $field_name = $ownMeta->getName();

            if($this->local($field_name)) //все поля локального хранения - С типы
            {
                $newField = $this->createLocalCField($item, $ownMeta, $this->local_fields[$field_name]);
            }
            else
            {
                if($fieldMode === TypeMode::MODE_B)
                {
                    $mapper = $this->mappersMediator->getBMapper($fieldType->getFamily());
                    $map = $mapper->getByRef($ref);
                    $newField = $this->createExternalBFieldByRef($item, $ownMeta, $map);
                }
                elseif($fieldMode === TypeMode::MODE_C)
                {
                    throw new ImageAggrException('Попытка добавить внешнее (С)поле в блок картинок модификации, такая возможность не поддерживается!');
                }
                else
                {
                    throw new ImageAggrException('В типе '.$type_name.' обнаружено поле-собственность типа отличного от В или С: '.$field_name.'('.$fieldMode.')!');
                }
            }

            $item->setOwn($newField);
            $item->setField($newField);
        }

        $this->item = $item;

        return $item;
    }
@param \Interpro\Core\Contracts\Ref\ARef $ref
@param bool $asUnitMember

@return \Interpro\Extractor\Contracts\Items\AItem