HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 8.2.27
Disabled: NONE
Upload Files
File: /home/bk/__backup/api/Import.php
<?php

require_once('Mgc.php');

class Import extends Mgc {

    /*Соответствие полей в базе и имён колонок в файле*/
    public $columns_names = array(
        'category'=>         array('category', 'категория'),
        'brand'=>            array('brand', 'бренд'),
        'name'=>             array('product', 'name', 'товар', 'название', 'наименование'),
        'variant'=>          array('variant', 'вариант'),
        'sku'=>              array('sku', 'артикул'),
        'price'=>            array('price', 'цена'),
        'compare_price'=>    array('compare price', 'old price', 'старая цена'),
        'currency'=>         array('currency_id', 'currency', 'currency id', 'ID валюты'),
        'weight'=>           array('weight', 'вес варианта'),
        'stock'=>            array('stock', 'склад', 'на складе'),
        'units'=>            array('units', 'ед. изм.'),
        'visible'=>          array('visible', 'published', 'видим'),
        'featured'=>         array('featured', 'hit', 'хит', 'рекомендуемый'),
        'meta_title'=>       array('meta title', 'заголовок страницы'),
        'meta_keywords'=>    array('meta keywords', 'ключевые слова'),
        'meta_description'=> array('meta description', 'описание страницы'),
        'annotation'=>       array('annotation', 'аннотация', 'краткое описание'),
        'description'=>      array('description', 'описание'),
        'images'=>           array('images', 'изображения'),
        'url'=>              array('url', 'адрес')

    );

    // Соответствие имени колонки и поля в базе
    protected $internal_columns_names;

    protected $import_files_dir      = 'uploads/import/'; // Временная папка
    protected $import_file           = 'import.csv';            // Временный файл
    protected $category_delimiter    = ',,';                    // Разделитель каегорий в файле
    protected $subcategory_delimiter = '/';                     // Разделитель подкаегорий в файле
    protected $column_delimiter      = ';';
    protected $products_count        = 100;
    protected $columns               = array();
    protected $locale                = 'ru_RU.UTF-8';




    // Фозвращает внутреннее название колонки по названию колонки в файле
    private function internal_column_name($name) {
        $name = trim($name);
        $name = str_replace('/', '', $name);
        $name = str_replace('\/', '', $name);
        foreach($this->columns_names as $i=>$names) {
            foreach($names as $n) {
                if(!empty($name) && preg_match("/^".preg_quote($name)."$/ui", $n)) {
                    return $i;
                }
            }
        }
        return false;
    }

    // Заменяем имена колонок из файла на внутренние имена колонок
    protected function init_internal_columns($fields = array()) {
        if (isset($this->internal_columns_names)) {
            return true;
        }
        if (empty($this->columns)) {
            return false;
        }
        if (!empty($fields)) {
            foreach ($fields as $csv=>$inner) {
                if (isset($this->columns_names[$inner]) && !in_array(mb_strtolower($csv), array_map("mb_strtolower", $this->columns_names[$inner]))) {
                    $this->columns_names[$inner][] = $csv;
                }
            }
        }
        $this->internal_columns_names = array();
        foreach($this->columns as &$column) {
            if($internal_name = $this->internal_column_name($column)) {
                $this->internal_columns_names[$column] = $internal_name;
                $column = $internal_name;
            }
        }
        return true;
    }

    // Определяем колонки из первой строки файла
    protected function init_columns() {
        $f = fopen($this->import_files_dir.$this->import_file, 'r');
        $this->columns = fgetcsv($f, null, $this->column_delimiter);
        fclose($f);
    }

}