Перейти к содержимому


Фотография
- - - - -

CSV


Лучший Ответ DMTR3000S , 03 July 2017 - 21:25

Нашёл в чём дело. Актуально для версии JBZoo 2.0.2

 

Есть хэлпер jbcsv.php, который находится здесь:

/media/zoo/applications/jbuniversal/framework/helpers

и в нём есть функция _createFile в самом конце, внутри которой видно, что перебираются строки и с помощью fputcsv форматируются собственно в CSV и пихаются в файл. Так вот, для fputcsv явно не указаны параметры delimiter и enclosure, поэтому они подставляются по умолчанию. Чтобы это исправить в 135 (у меня, по крайней мере) строке меняем это:

fputcsv($handle, $this->app->data->create($row)->flattenRecursive());

на вот это:

fputcsv($handle, $this->app->data->create($row)->flattenRecursive(), '~', '^');

тем самым явно указывая желаемые разделитель и ограничитель (в нашем случае это ~ и ^). После этого всё должно заработать. Но это неточно!

Перейти к сообщению


Сообщений в теме: 27

#11 Tukan

Tukan

Отправлено 29 June 2017 - 14:20

Ёпт, вот я вопрос нормально не прочитал и насоветовал... НОВЫЙ ПЛАН! :)

Открываем файл admin.jbexport.php, который лежит здесь:

/media/zoo/application/jbuniversal/framework/controllers

и на 37-38 строках меняете enclosure и separator на нужные. Это для работы экспорта. Для работы импорта с нужными ограничителем и разделителем откройте admin.jbimport.php, который лежит там же и так же внесите нужные правки

 

:)

 

Коллега, я уже пошарился по папкам через поиск на предмет enclosure и separator. Видел этот файл, у меня даже надежды на него были большие) Но. Вот он:

<?php
/**
 * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component
 *
 * @package     jbzoo
 * @version     2.x Pro
 * @author      JBZoo App http://jbzoo.com
 * @copyright   Copyright (C) JBZoo.com,  All rights reserved.
 * @license     http://jbzoo.com/license-pro.php JBZoo Licence
 * @coder       Denis Smetannikov <denis@jbzoo.com>
 */

// no direct access
defined('_JEXEC') or die('Restricted access');


/**
 * Class JBExportJBuniversalController
 * JBZoo export controller for back-end
 */
class JBExportJBuniversalController extends AppController
{
    /**
     * @var string
     */
    protected $_viewsPath = '';

    /**
     * Constructor
     * @param array $default
     */
    public function __construct($default = array())
    {
        parent::__construct($default);
        $this->app->jbrequest->set('tmpl', 'component');

        $this->baseurl    = $this->app->link(array('controller' => $this->controller), false);
        $this->_viewsPath = $this->app->path->path('jbviews:');
    }

    /**
     * Export dialog action
     */
    public function index()
    {
        include $this->_viewsPath . '/import-export/export.tpl.php';
    }

    /**
     * Export process action
     */
    public function exportProcess()
    {
        $request = $this->app->data->create($this->app->jbrequest->get('jbzooform'));
        $this->app->jbuser->setParam('export', $request);

        try {
            $this->app->jbexport->clean();

            $itemsFiles = $categoriesFiles = array();
            if ((int)$request->get('items')) {
                list($appId, $catId) = explode(':', $request->get('items_app_category', '0:0'));
                $itemsFiles = $this->app->jbexport->itemsToCSV(
                    $appId,
                    $catId,
                    $request->get('type', null),
                    $request
                );
            }

            if ((int)$request->get('categories')) {
                list($appId) = explode(':', $request->get('category_app', '0:'));
                $categoriesFiles = $this->app->jbexport->categoriesToCSV($appId, $request);
            }

            $files = $itemsFiles + $categoriesFiles;

            if (empty($files)) {
                $this->setRedirect(
                    $this->app->jbrouter->admin(array('task' => 'index', 'controller' => 'jbimport')),
                    JText::_('JBZOO_EXPORT_ITEMS_NOT_FOUND')
                );
                return;

            } else {
                $tmpArch = $this->app->jbarch->compress($files, 'jbzoo-export-' . date('Y-m-d_H-i'));
            }

            if (is_readable($tmpArch) && JFile::exists($tmpArch)) {
                $this->app->filesystem->output($tmpArch);
                JFile::delete($tmpArch);
                JFolder::delete(JPATH_ROOT . '/tmp/jbzoo-export');
                jexit();
            } else {
                throw new AppException(JText::sprintf('Unable to create file %s', $tmpArch));
            }

        } catch (AppException $e) {
            // raise error on exception
            $this->app->error->raiseNotice(0, JText::_('Error create report') . ' (' . $e . ')');
            $this->setRedirect($this->app->jbrouter->admin(array('task' => 'export', 'controller' => 'jbexport')));

            return;
        }
    }

}

/**
 * Class ExceptionJBExportJBuniversalController
 */
class ExceptionJBExportJBuniversalController extends AppException
{

}

В нём нет того, что нужно.



#12 DMTR3000S

DMTR3000S

Отправлено 29 June 2017 - 14:22

Tukan, какая версия JBZoo у вас сейчас? На 2.1.5 специально попробовал - работает нормально всё.

UPD: увидел, 2.0.2 - а есть дистрибутив?


Сообщение отредактировал DMTR3000S: 29 June 2017 - 14:23

  • 0

#13 Tukan

Tukan

Отправлено 29 June 2017 - 14:40

Tukan, какая версия JBZoo у вас сейчас? На 2.1.5 специально попробовал - работает нормально всё.

UPD: увидел, 2.0.2 - а есть дистрибутив?

 

Вы имеете ввиду то, что когда-то устанавливалось?



#14 DMTR3000S

DMTR3000S

Отправлено 29 June 2017 - 14:50

да, установочный пакет с той версией JBZoo, что у вас сейчас используется. Ну, или понадобится доступ к FTP, ибо у меня старой версии нет.


  • 0

#15 Tukan

Tukan

Отправлено 29 June 2017 - 15:42

Tukan, какая версия JBZoo у вас сейчас? На 2.1.5 специально попробовал - работает нормально всё.

UPD: увидел, 2.0.2 - а есть дистрибутив?

 

Покопался я у себя в файлах. Есть архив jbzoo_app_2.1.4.zip и есть два патча - jbzoo_patch_1.x.x-2.0.1.zip и jbzoo_patch_2.x.x-2.1.2.zip. Не знаю насколько это спасает.

 

И ещё есть демо - demo_joomla_2.5.zip. Какая там версия внутри не знаю даже. Но скорее всего как раз таки 2.0.2



#16 DMTR3000S

DMTR3000S

Отправлено 30 June 2017 - 13:28

Отправьте мне архив с демо на 2.5, посмотрю


  • 0

#17 Tukan

Tukan

Отправлено 30 June 2017 - 13:48

Отправьте мне архив с демо на 2.5, посмотрю

 

А куда отправить? Сюда на форум или в личку? Я в личку что-то не могу попасть.



#18 DMTR3000S

DMTR3000S

Отправлено 30 June 2017 - 13:53

сюда прям можно, поди, он же не тяжёлый


  • 0

#19 Tukan

Tukan

Отправлено 30 June 2017 - 14:01

сюда прям можно, поди, он же не тяжёлый

 

Не даёт загрузить. Файл - 55 мб



#20 Tukan

Tukan

Отправлено 30 June 2017 - 14:05

Двайте попробуем вот так - https://www.dropbox...._2.1.4.zip?dl=0






Click to return to top of page in style!