Import.php 5.8 KB
<?php

namespace backend\models;

use Yii;
use yii\base\Model; 
use common\models\Tools;
use common\models\Termin;
use yii\web\UploadedFile;

/**
 * Import товаров
 */
class Import extends \yii\db\ActiveRecord
{    
    public $file;
   
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [ 
            [['file'], 'file', 'skipOnEmpty' => false, 'extensions' => 'csv', 'maxFiles' => 2],
        ];
    }

    static function importFile ($filename)
    {
        // создаем папку  
        if (! is_dir ($path = $_SERVER['DOCUMENT_ROOT'].'/import/'))
        {
            mkdir ($path, 0777, true);
        }
 
        // копируем файл
        copy ($filename->tempName, $path.$filename->name);
        
        // по умолчанию
        // $termin_pid MEGA КАСТЫЛЬ!!! Это категория "Каталог товаров", 
        // под которую подтягуються термины, которые на нашли себе parent
        $termin_pid = 8; 
        // $template_id шаблон каьегорий
        $template_id = 3; 
        $language_id = 2;
        $type = 'H';
        
        // массив для импортп товаров
        $MASS = [];
 
        // открываем файл и перебираем
        $fp = fopen ($path.$filename->name, 'r');
        while ($ROW = fgetcsv ($fp, 10000, ';'))
        { 
            // чистим
            foreach ($ROW as $key => &$value)
            {
                $value = trim ($value) == 'NULL' ? NULL : trim ($value); 
            }

            $ROW['category_title'] = $ROW[0];
            $ROW['group_title'] = $ROW[1];
            $ROW['subgroup_title'] = $ROW[2];
            
            // проверяем если через ","
            
            // var_dump($array[1]); die;
            
            // массив для поиска/добавления термина
            $basic = [
                'type' => $type, 
                'language_id' => $language_id,
                'template_id' => $template_id,
            ];
            
            // категория
            if ($ROW['category_title'] == NULL)
            {
                CONTINUE;
            }

            $termin_id = Termin::addIfNotExists ($basic + [
                'termin_title' => $ROW['category_title'],
                'termin_pid' => $termin_pid, // MEGA КАСТЫЛЬ!!!
            ]);
         
            // подгруппа 
            if ($ROW['group_title'] != NULL)
            { 
                $termin_id = Termin::addIfNotExists ($basic + [
                    'termin_title' => $ROW['group_title'],
                    'termin_pid' => $termin_id,
                ]);
            }

            // группа
            if ($ROW['subgroup_title'] != NULL)
            {
                $termin_id = Termin::addIfNotExists ($basic + [
                    'termin_title' => $ROW['subgroup_title'],
                    'termin_pid' => $termin_id,
                ]);
            } 
            
        }
        
        // удаляем файл
        chmod($path.$filename->name, 0777);
        unlink ($path.$filename->name);
          
/* 
        echo '<pre>';
        
            var_dump($category);
            var_dump($group);
            var_dump($subgroup);
        
        echo '</pre>';
        
        // ОБЩЕЕ
        // PRODUCT
        Артикул	
        Категория
        Группа	
        Подгруппа	
        Описание	
        Штрих-код	
        
        // СПРАВОЧНИК ИЛИ ДОП. ПОЛЯ
        // ???
        Торговая марка	
        Производитель	
        ID	
        Наименование	
        кол-во в пакете	
        Ед. Изм	
        опт / розница	
        Диаметр шляпки min	
        Диаметр шляпки max	
        Единица измерения	
        Цвет шляпки	
        Цвет шляпки (фильтр)	
        Цвет мякоти	цвет мякоти (фильтр)	
        Длина ножки min	
        Длина ножки max	
        Единица измерения	
        примечание
*/   
    }
    
    public function findTerminOneQuery ($type, $name, $parent_name)
    {   
/*
        return yii::$app->db->createCommand('
            SELECT 
                `termin`.termin_id, `parent`.termin_id as termin_pid
            FROM `termin`
                INNER JOIN `termin_lang` ON `termin_lang`.termin_alias = "'.$name.'"  
                INNER JOIN `termin_relation` ON `termin_relation`.termin_id = `termin`.termin_id
                LEFT JOIN (
                    IF NOT EXISTS (SELECT *
                        FROM `termin_lang`
                            INNER JOIN `termin` ON `termin`.termin_id = `termin_lang`.termin_id 
                                AND `termin`.type = "'.$type.'"
                        WHERE `termin_lang`.termin_alias = "'.$parent_name.'"
                    )
                    THEN (SELECT *
                        FROM `termin_lang`
                            INNER JOIN `termin` ON `termin`.termin_id = `termin_lang`.termin_id 
                                AND `termin`.type = "'.$type.'"
                        WHERE `termin_lang`.termin_alias = "'.$parent_name.'"
                    )
                    ELSE (SELECT *
                        FROM `termin_lang`
                            INNER JOIN `termin` ON `termin`.termin_id = `termin_lang`.termin_id 
                                AND `termin`.type = "'.$type.'"
                    ) 
                ) as `parent` ON `parent`.termin_id = `termin_relation`.termin_pid
            WHERE `termin`.type = "'.$type.'"  
        ')->queryOne(); 
*/
    }

}