Переход с EvoGallery на SimpleGallery

Вот такой скрипт положить возле index.php и запустить (желательно в консоли, так как может занять много времени в случае больших галерей), сделав предварительно бэкап:


<?php
define('MODX_API_MODE', true);
define('MODX_BASE_PATH', __DIR__ . '/');
define('MODX_BASE_URL', '/');
define('MODX_SITE_URL', 'http://sitename.ru/');
include_once("index.php");
$modx->db->connect();
if (empty ($modx->config)) {
    $modx->getSettings();
}
include_once(MODX_BASE_PATH.'assets/plugins/simplegallery/lib/table.class.php');
$modx->invokeEvent("OnManagerPageInit");
$q = $modx->db->query("SELECT * FROM {$modx->getFullTableName('portfolio_galleries')} ORDER BY `content_id` ASC, `sortorder` ASC, `id` ASC");
$fs = \Helpers\FS::getInstance();
$sg = new \SimpleGallery\sgData($modx);
while ($row = $modx->db->getRow($q)) {
    $path = 'assets/galleries/'.$row['content_id'].'/';
    if ($fs->checkFile($path.'original/'.$row['filename'])) {
        $sg->create();
        $sg->set('sg_rid',$row['content_id']);
        $sg->set('sg_title',$row['title']);
        $sg->set('sg_description',$row['description']);
        $sg->set('sg_image',$path.$row['filename']);
        $fs->moveFile($path.$row['filename'],$path.'large/'.$row['filename']);
        $fs->moveFile($path.'original/'.$row['filename'],$path.$row['filename']);
        $name = MODX_BASE_PATH . $path.$row['filename'];
        $info = getimagesize($name);
        $properties = array(
            'width' => $info[0],
            'height' => $info[1],
            'size' => filesize($name)
        );
        $sg->set('sg_properties',$properties);
        $sg->save();
    }
}

Предполагается, что включена настройка keepOriginal, и EvoGallery сохраняет загруженные файлы в папку /original/, поэтому с файлами происходит следующее (пусть для примера есть папка assets/galleries/10/):
— файл из assets/galleries/10/ перемещается в assets/galleries/10/large/;
— файл из assets/galleries/10/original/ перемещается в assets/galleries/10/ и это теперь основной файл SimpleGallery.
После того, как все закончилось, можно настроить sgThumb и нарезать превьюшки.

Если не получилось, то оставайтесь с EvoGallery, не ломайте голову (:

18 комментариев

avatar
полезное решение, а то далеко не везде получается с эвогаллери соскочить
avatar
+) буду пробовать, так как надоела evogallery своей глючностью
avatar
Класс, спасибо, будем пробовать переходить
avatar
Вчера как раз ставил SimpleGallery на последнюю сборку и она «не бум-бум», поэтому полез в топик и в конце увидел коммент, что «не работает в Evo выше 1.7.6». Собственно вопрос — ежели не работает, зачем переходить и будет ли работать?))
  • EGO
  • 0
avatar
Бум-бум.
avatar
а у меня не бум-бум!)))) Ставил из Extras, обновил сейчас из гита — в итоге страница долго-долго думает и грузится без каких-либо плагинов и без галереи. В консоле пусто, плагины вообще почти все пробовал отключать… DocLister с гита обновлять?
avatar
Конечно. Ну и при обновлении плагинов сейчас параметры портятся, так что нужно проверять и это.
avatar
Магия какая-то с этим плагином)) Обновил DocLister c гита через PackageManager — всё равно не бум-бум… обновил DocLister ручками… ноль эмоций… Решил переустановить SimpleGallery из Extras и магия! Реально танцы с бубнами, чтобы запустить, но оно того стоит! ;)
avatar
Скриптик отругался error.
Установлен доклистер и сама галерея. modx-api не нашел, хотя на многих ресурсах указывается необходимость в этом (плагине?). На джите рукожопно упоминается в файлах апишка (в папке тест), но что с ней делать черт знает. (Мануала по инсталлу доклистера совершенно не нашел)

На нубов, как я понял данные наработки совершенно не рассчитаны. И чтобы воспользоваться семи благами благодеятелей, придется погружаться в дебри cms и конкретных плагинов.
Я верно понимаю? Если да, то очень жаль C:

PS. Покопавшись какое-то время пришел к выводу:
1) В модуле Extras установить модуль Package Manager. (если вдруг его нет)
2) Скачать и установить через модуль Package Manager: github.com/AgelxNash/DocLister
3) Скачать и установить через модуль Package Manager: github.com/Pathologic/SimpleGallery

Готово, ошибки больше не бьет.
Аве разрабом данного добра!
Комментарий отредактирован 2017-12-18 11:09:15 пользователем retard
avatar
В Extras есть и DocLister и SimpleGallery.
avatar
А как вы без simpleGallery собрались в нее переносить фото?
avatar
А если нет оригиналов, на некоторых проектах их просто нереально хранить, получаются десятки гигов, поэтому всё порублено изначально.
avatar
Тогда проще:

<?php
define('MODX_API_MODE', true);
include_once("index.php");
$modx->db->connect();
if (empty ($modx->config)) {
    $modx->getSettings();
}
include_once(MODX_BASE_PATH.'assets/plugins/simplegallery/lib/table.class.php');
$modx->invokeEvent("OnManagerPageInit");
$q = $modx->db->query("SELECT * FROM {$modx->getFullTableName('portfolio_galleries')} ORDER BY `content_id` ASC, `sortorder` ASC, `id` ASC");
$fs = \Helpers\FS::getInstance();
$sg = new \SimpleGallery\sgData($modx);
while ($row = $modx->db->getRow($q)) {
    $path = 'assets/galleries/'.$row['content_id'].'/';
    if ($fs->checkFile($path.$row['filename'])) {
        $sg->create();
        $sg->set('sg_rid',$row['content_id']);
        $sg->set('sg_title',$row['title']);
        $sg->set('sg_description',$row['description']);
        $sg->set('sg_image',$path.$row['filename']);
        //$fs->moveFile($path.$row['filename'],$path.'large/'.$row['filename']);
        //$fs->moveFile($path.'original/'.$row['filename'],$path.$row['filename']);
        $name = MODX_BASE_PATH . $path.$row['filename'];
        $info = getimagesize($name);
        $properties = array(
            'width' => $info[0],
            'height' => $info[1],
            'size' => filesize($name)
        );
        $sg->set('sg_properties',$properties);
        $sg->save();
    }
}
avatar
При первом запуске через консоль сказал Error. Методом тыка зашел в произвольный документ, чтобы создалась таблица (посмотрел, что если запускать через веб-морду ошибка конкретнее — не может найти таблицу). Не вот себе дополнение к сказанному, но пусть тут в комментарии повисит
avatar
Я думал, что это очевидно (:
avatar
Я еще setup.sql искал в пакете, только после того, как на морду зашел догадался, что создание таблицы в плагине. Когда с нуля-то ставишь, просто наполняешь галерею и не задумываешься
avatar
на 1.4.2. ругается на

Fatal error: Uncaught exception 'RuntimeException' with message 'Please, define MODX_BASE_PATH and MODX_BASE_URL on cli mode' in /home/****/www/******/manager/includes/config.inc.php:33

Где бы задефайнить эти самые MODX_BASE_PATH and MODX_BASE_URL on cli mode?
avatar
Так и не смог завести в консоли на 1.4.2
По совету Pathologic вписал в начало скрипта константы
define('MODX_BASE_PATH', __DIR__);
define('MODX_BASE_URL', '/');

Получил ошибку
Please, define MODX_SITE_URL on cli mode'

Вписал и MODX_SITE_URL
Получил ошибку
Please, use trailing slash at end of MODX_SITE_URL

Вписал адрес сайта со слешом, но всё равно ошибки сыпятся:
Fatal error: Call to undefined function startCMSSession() in /home/***/www/***.ru/index.php on line 104

Скрипт выполняется только с фронтенда, но, естественно, падает по таймауту на большом количетсве галерей
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.