Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 67
Version20160114142234
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 5
110
0.00% covered (danger)
0.00%
0 / 67
 up
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 7
 down
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 6
 mtb_tag
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 14
 dtb_csv
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 27
 delete_dtb_csv
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 13
<?php
namespace DoctrineMigrations;
use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\ORM\EntityManager;
use Eccube\Application;
use Eccube\Common\Constant;
use Eccube\Entity\Csv;
use Eccube\Entity\Master\CsvType;
use Eccube\Entity\Master\Tag;
/**
 * Auto-generated Migration: Please modify to your needs!
 */
class Version20160114142234 extends AbstractMigration
{
    private $tag_datas = array(
        array(
            'id' => 1,
            'name' => '新商品',
            'rank' => 1,
        ),
        array(
            'id' => 2,
            'name' => 'おすすめ商品',
            'rank' => 2,
        ),
        array(
            'id' => 3,
            'name' => '限定品',
            'rank' => 3,
        ),
    );
    private $csv_datas = array(
        array(
            'entity_name' => 'Eccube\\\\Entity\\\\Product',
            'field_name' => 'ProductTag',
            'reference_field_name' => 'tag_id',
            'disp_name' => 'タグ(ID)',
        ),
        array(
            'entity_name' => 'Eccube\\\\Entity\\\\Product',
            'field_name' => 'ProductTag',
            'reference_field_name' => 'Tag',
            'disp_name' => 'タグ(名称)',
        ),
    );
    /**
     * @param Schema $schema
     */
    public function up(Schema $schema)
    {
        $app = \Eccube\Application::getInstance();
        $em = $app['orm.em'];
        $this->mtb_tag($em);
        $this->dtb_csv($em);
        $em->flush();
    }
    /**
     * @param Schema $schema
     */
    public function down(Schema $schema)
    {
        $app = \Eccube\Application::getInstance();
        $em = $app['orm.em'];
        $this->delete_dtb_csv($em);
        $em->flush();
    }
    /**
     * insert mtb_tag
     *
     * @param EntityManager $em
     */
    private function mtb_tag(EntityManager $em)
    {
        $Tags = $em->getRepository('\Eccube\Entity\Master\Tag')->findAll();
        if (0 < count($Tags)) {
            // すでに使用している場合は登録しない。
            return;
        }
        foreach ($this->tag_datas as $data) {
            $Tag = new Tag();
            $Tag
                ->setId($data['id'])
                ->setName($data['name'])
                ->setRank($data['rank']);
            $em->persist($Tag);
        }
    }
    /**
     * insert dtb_csv
     *
     * @param EntityManager $em
     */
    private function dtb_csv(EntityManager $em)
    {
        $filter = $em->getFilters()->getFilter('soft_delete');
        $filter->setExcludes(array(
            'Eccube\Entity\Member'
        ));
        $CsvType = $em->getRepository('Eccube\Entity\Master\CsvType')->find(CsvType::CSV_TYPE_PRODUCT);
        $Member = $em->getRepository('Eccube\Entity\Member')->find(1);
        $Csv = $em->getRepository('Eccube\Entity\Csv')->findOneBy(
            array('CsvType' => $CsvType),
            array('rank' => 'DESC')
        );
        $rank = $Csv->getRank();
        foreach ($this->csv_datas as $data) {
            $rank++;
            $Csv = new Csv();
            $Csv
                ->setCsvType($CsvType)
                ->setCreator($Member)
                ->setEntityName($data['entity_name'])
                ->setFieldName($data['field_name'])
                ->setReferenceFieldName($data['reference_field_name'])
                ->setDispName($data['disp_name'])
                ->setRank($rank)
                ->setEnableFlg(Constant::ENABLED);
            $em->persist($Csv);
        }
    }
    /**
     * delete dtb_csv
     *
     * @param EntityManager $em
     */
    private function delete_dtb_csv(EntityManager $em)
    {
        $repository = $em->getRepository('Eccube\Entity\Csv');
        foreach ($this->csv_datas as $data) {
            $Csv = $repository->findOneBy(array(
                'entity_name' => $data['entity_name'],
                'field_name' => $data['field_name'],
                'reference_field_name' => $data['reference_field_name'],
            ));
            if ($Csv) {
                $em->remove($Csv);
            }
        }
    }
}