Форум русской поддержки Joomla!® CMS
09.12.2016, 15:42:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Goodby

 (Прочитано 124 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Demiyrgi
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 20


« : 02.07.2016, 15:56:36 »

Ребята, может кто использовал эту штуку? https://github.com/goodby/csv
Как ее установить? у нас на сайте есть компонент самописный который обрабатывает csv. на Joomla 2.5
Этот компонент перенесли на новую версию 3.5, все работает, кроме обратки csv, ошибка
Код:
Fatal error: Class 'Goodby\CSV\Import\Standard\LexerConfig' not found in /var/www/tekjeO/tek.energy/libraries/tek/CustomerDataUploder.php on line 28
собвственно вот файл CustomerDataUploder.php
Код:
<?php
namespace TEK;
 
use Goodby\CSV\Import\Standard\Interpreter;
use Goodby\CSV\Import\Standard\Lexer;
use Goodby\CSV\Import\Standard\LexerConfig;
 
/**
 * @author Andre Shapovalov
 */
class CustomerDataUploder
{
 
    public function  getCustomersData($linkToFile)
    {
 
        $result = array(
            'profit_date_tek' => null,
            'customers_data' => array()
        );
        $startRow = 3;
        $currentRow = 1;
        $consumptionHourFieldPrefix = "consumption_hour_";
        $minHour = 1;
        $maxHour = 24;
 
 
        $config = new LexerConfig();
        $config->setToCharset('UTF-8'); // Customize target encoding. Default value is null, no converting.
        $config->setDelimiter(";"); // Customize delimiter. Default value is comma(,)
 
        $interpreter = new Interpreter();
        $interpreter->unstrict(); // Ignore row column count consistency
 
        $columns = array(
            "id",
            "company_name",
            "monthly_planed_value_first_class",
            "monthly_planed_value_second_class",
            "planed_value_first_class",
            "planed_value_second_class",
            "actual_value_first_class",
            "actual_value_second_class",
            "profit",
            "increasing_profit_result",
            "discount"
        );
 
        for ($i = $minHour; $i <= $maxHour; $i++) {
            $columnName = $consumptionHourFieldPrefix . $i;
            $columns[] = $columnName;
        }
 
        $columns[] = 'tek_profit';
        //$columns[] = 'tek_increasing_profit_result';
 
        $profitDateTEK = null;
 
        $interpreter->addObserver(function (array $columnsValues) use (&$result, $startRow, &$currentRow, $columns) {
 
            if ($currentRow >= $startRow) {
                $rowData = new \stdClass();
                foreach ($columns as $index => $columnName) {
                    $cellValue = 0;
 
                    if ($columnName == "id") {
                        $cellValue = (int)$columnsValues[$index];
                    } else if ($columnName != "company_name") {
                        $cellValue = preg_replace('/\s+/', '', $columnsValues[$index]);
                        $cellValue = str_replace(array('.', ','), array('', '.'), $cellValue);
                        $cellValue = preg_replace('/[^\d\.-]/', '', $cellValue);
                    } else {
                        $cellValue = $columnsValues[$index];
                    }
                    $rowData->{$columnName} = $cellValue;
                }
                $result['customers_data'][] = $rowData;
            } elseif ($currentRow == 2) {
                $result['profit_date_tek'] = end($columnsValues);
                reset($columnsValues);
            }
            $currentRow++;
        });
 
        $lexer = new Lexer($config);
        $lexer->parse($linkToFile, $interpreter);
 
        if ($result['customers_data']) {
            $result['customers_data'] = $this->removeDuplicates($result['customers_data'], array('id'));
        }
 
        return $result;
    }
 
    public function  getCustomersPaymentData($linkToFile)
    {
 
        $data = array();
        $startRow = 3;
        $currentRow = 1;
 
        $config = new LexerConfig();
        $config->setToCharset('UTF-8'); // Customize target encoding. Default value is null, no converting.
        $config->setDelimiter(";"); // Customize delimiter. Default value is comma(,)
 
        $interpreter = new Interpreter();
        $interpreter->unstrict(); // Ignore row column count consistency
 
        $columns = array(
            'id',
            'company_name',
            'date',
            'scheduled_payment_value',
            'scheduled_payment_percentage',
            'actual_payment_date',
            'actual_payment_value',
            'actual_payment_percentage',
            'discount_value',
            'discount_percentage',
            'residue_value',
            'residue_percentage',
            'debt'
        );
 
        $interpreter->addObserver(function (array $columnsValues) use (&$data, $startRow, &$currentRow, $columns) {
 
            if ($currentRow >= $startRow) {
                $rowData = new \stdClass();
                foreach ($columns as $index => $columnName) {
                    $cellValue = 0;
                    if ($columnName == "id") {
                        $cellValue = (int)$columnsValues[$index];
                    } else if ($columnName == "company_name") {
                        $cellValue = $columnsValues[$index];
                    } else if ($columnName == "date" || $columnName == "actual_payment_date") {
                        try {
                            if (preg_match("/\d{1,2}\.\d{1,2}\.\d{2,4}/", $columnsValues[$index])) {
                                $cellValue = strtotime($columnsValues[$index]);
                            } else {
                                $cellValue = null;
                            }
 
                        } catch (\InvalidArgumentException $exc) {
                            continue;
                        }
                    } else {
                        $cellValue = preg_replace('/\s+/', '', $columnsValues[$index]);
                        $cellValue = str_replace(array('.', ','), array('', '.'), $cellValue);
                        $cellValue = preg_replace('/[^\d\.-]/', '', $cellValue);
                    }
                    $rowData->{$columnName} = $cellValue;
                }
                $data[] = $rowData;
            }
            $currentRow++;
        });
 
        $lexer = new Lexer($config);
        $lexer->parse($linkToFile, $interpreter);
 
        if ($data) {
            return $this->removeDuplicates($data, array('id', 'date'));
        }
 
        return $data;
    }
 
    private function removeDuplicates($source, $usedColumns)
    {
 
        $keys = array();
 
        foreach ($source as $index => $value) {
            $rowKey = "";
            foreach ($usedColumns as $column) {
                $rowKey .= $value->{$column};
            }
            $resultKey = md5($rowKey);
 
            if (!in_array($resultKey, $keys)) {
                $keys[] = $resultKey;
                continue;
            } else {
                unset($source[$index]);
            }
        }
 
        return $source;
    }
}
Хостеры сказали, что установили так же, как и на старом сайте сейчас все.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet