Обновление системы

  1. Обзор
    • 1.1. Создание полного бекапа.
  2. Автообновление
    • 2.1. Получение и установка ключа. Запуск автообновления.
    • 2.2. Промежуточные обновления
  3. Обновление в ручном режиме
  4. Обновление, силами наших специалистов (платная услуга)
  5. Откат системы
  6. Частые ошибки

Общий обзор

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

Все новые доработки можно перенести в ваш экземпляр системы через обновление. Его можно осуществить одним из следующих способов:

  1. Ручное обновление
  2. Автообновление
  3. Обновиться, при помощи наших специалистов (данная услуга платная)

Обновление системы осуществляется путем замены старых файлов новыми и дополнением. При этом обновление затрагивает только программное ядро системы - файлы шаблона обновлению не подлежат (шаблон в редких случаях может нуждаться в оптимизации под новый функционал системы).

Но через разницу в программной части после обновления некоторые элементы шаблона могут не отображаться или работать некорректно. Если поврежденный обновлением элемент относится к стандартному функционалу, то вам необходимо создать обращение в нашу службу поддержки из вашего личного кабинета на imagecms.net.

Примечание:

Перед проведением обновления любого типа необходимо создать полный бэкап файлов системы и базы данных.

Обязательно следует учесть, что если у вас имелись правки или доработки системы на программном уровне, то при обновлении они будут утрачены. В таком случае советуем осуществлять обновление силами наших специалистов, предоставив нам четкий список внесенных правок.

1.1 Создание полного бекапа

В процессе "жизни" сайта может возникнуть ряд ситуаций, при которых будет необходимо сделать полный бэкап сайта. Как пример подобных обстоятельств - перенос на новый хостинг (или же создание локальной копии сайта) и/или глобальные правки, перед которыми обязательно делать полный бэкап.

Рассмотрим создание бэкапа и перенос комплексно, так как в данном случае перенос подразумевает создание полного бэкапа как неотъемлемой части процесса.

  • Скопировать все файлы системы на локальный ПК, воспользовавшись FTP-клиентом (например FileZilla), перед копированием почистите кэш на сервере (надо удалить все файлы в папке \system\cache\, оставить пустой только папку \templates_c).

  • Создать копию базы данных. Осуществить это проще всего можно, создав копию БД через интерфейс PHPMyAdmin (доступен через панель управления хостингом).

Необходимо зайти в соответствующую базу данных и отметить все таблицы. Затем необходимо сделать резервную копию (экспорт на локальный ПК).

2. Автообновление

Для сайтов, лицензия на которые была куплена менее 1 года назад, автообновление будет доступно бесплатно в течении года с даты покупки лицензии.

Для сайтов, лицензия на которые была куплена более года назад, начиная с версии 4.9, автообновление предоставляется на платной основе, в форме пакета обновления на год (теперь обновления будут выходить чаще и систематически), адаптация правок системы при этом не подразумевается.

Стоимость пакета по умолчанию составляет 30 % от стоимости лицензии. Более подробную информацию вы можете получить у вашего менеджера.

Автообновление включает проверку сайта на совместимость с обновлением и создание автоматического бэкапа.

Бесплатно можно обновиться вручную с нашего сайта.

Примечание:

Внимание! Сохранение правок системы при автообновлении не подразумевается.

Перед началом автообновления обязательно убедитесь, что вы выполнили резервное копирование системы и базы данных.

Убедитесь, что папкам присвоены права:

  • на папку /application/backups/ стоят права на запись рекурсивно 777;
  • на корневую папку с системой стоят права 777 БЕЗ рекурсии.
Автообновление не предназначено для обновления к глобальным релизам (кроме обновления с 4.9 до 4.10)

2.1. Получение и установка ключа. Запуск автообновления.

Ключ автообновления вы можете получить у нашей службы технической поддержки. Ключ не является универсальным. Если у вас есть несколько магазинов на системе ImageCMS Shop, то вам необходимо создавать отдельную заявку для каждого, так как ключ закрепляется за магазином с учетом домена, сборки и даты приобретения. Поэтому если вы переедете на другой домен или же смените сборку (с Pro на Premium), то ключ необходимо будет генерировать заново.

Примечание:

При автообновлении файлы перезаписываются автоматически - все доработки на программном уровне будут утрачены. Если у вас есть правки - смотрите пункт 4.

Бесплатный ключ автообновления вы можете получить на протяжении календарного года c момента покупки лицензии. Бесплатный ключ будет действительным также на протяжении календарного года с момента покупки лицензии.

По вопросам продления ключа просим обращаться к вашему менеджеру или в службу поддержки ImageCMS.

Для получения и установки ключа вам необходимо:

Шаг 1: Создать обращение в нашу службу поддержки из вашего личного кабинета на imagecms.net.

В теме запроса обязательно укажите причину обращения - например "Ключ автообновления для сайта example.com".

Если календарный год с момента покупки вашей лицензии еще не истек, в ответе будет указан ключ вида: YynbiY2Zrbk9dEBdddFFFFaF3i4bSQrSRzsnG8siQRZK6en000002G2236HRGaFrhh5t67N3BQ9AE5Kd9Y5dNHHfRD9Q77GAND7b

Если срок бесплатного автообновления уже закончился, то служба технической поддержки предоставит вам следующие инструкции.

Шаг 2: Откройте форму настройки автообновления:

Переход в администраторском профиле: "Настройки" - "Обновление системы":

Далее в открывшейся форме кликните по кнопке "Настройки":

Шаг 3: Вставка ключа

Скопируйте и вставьте предварительно полученный ключ в поле "Ваш ключ обновления":

Ключ должен состоять ровно из 100 символов (только цифры и латиница). Пробелы, дефисы и подчеркивания не допускаются.

После вставки ключа кликните по кнопке Сохранить.

Шаг 4: Переход к автообновлению.

  • Выходите из формы настроек автообновления, кликнув по ссылке "Вернуться":

  • Проверьте наличие обновления в блоке слева, в строке "Новая версия":

  • Если новая версия доступна, кликните по кнопке "Бэкап и Обновление":

Шаг 5: Старт автообновления

Кликните по кнопке "Обновление" (А)

Если все настройки осуществлены корректно, то после кратковременной прогрузки должна появиться строка прогресса, отображающая в процентах степень завершения обновления (В).

Как правило, автообновление требует несколько минут. Желательно в это время воздержаться от каких-либо действий в администраторском профиле.

Шаг 6: Завершение автообновления

После успешного завершения обновления вы увидите сообщение "Вы используете последнюю версию системы":

Блок с данными о версии, упомянутый в шаге 4, больше не будет отображаться до выхода следующего релиза или пакета обновлений.

Если в процессе обновления у вас возникла ошибка или сбой - поищите вариант решения в разделе 6. Если стандартное решение отсутствует - обратитесь в службу технической поддержки.

Может потребоваться очистка серверного кэша: надо удалить все файлы в папке \system\cache\ , оставить пустой только папку \templates_c.

2.2. Промежуточные обновления

Начиная с версии ImageCMS 4.9 для коммерческих сборок Shop периодически выходят промежуточные обновления, которые позволяют относительно быстро устранять недочеты и ошибки системы, выявленные в период между глобальными релизами.

Благодаря промежуточным обновлениям поддерживается актуальность вашего экземпляра системы в плане работы со сторонними сервисами, которые интегрированы в ImageCMS, но развиваются отдельно и независимо от нас (например используемые API от Google или Яндекс.Маркет).

Промежуточные обновления не находятся в свободном доступе (их нельзя скачать со страницы загрузок), и осуществляются исключительно при помощи автообновления - произвести промежуточное обновление вручную возможности нет.

Доработки. Поскольку промежуточные обновления осуществляются только посредством автообновления, то:

  • При заказе новых работ обязательно обсудите с вашим менеджером и программистами вопрос об адаптации будущих правок.
  • Вопросы относительно уже имеющихся доработок. Если этот момент не был оговорен ранее, то еще до обновления вашей системы также обратитесь к менеджеру для подачи заявки разработчикам и анализа вашего магазина на предмет адаптации правок под обновления. Вам необходимо создать четкий список доработок, которые были произведены на программном уровне за все время существования вашего магазина. Правки, которые не будут учтены в списке, будут утрачены.

3. Обновление в ручном режиме

Обновиться самостоятельно можно в ручном режиме, скачав архив с обновлением с нашей страницы загрузок

Вам необходимо поэтапно скачивать архивы обновлений и осуществлять обновления от версии к версии, вне зависимости от того, какая версия и сборка у вас сейчас и до какой версии вы желаете обновиться. Например, если вы используете версию 4.6 и желаете обновиться до 4.9, то вам необходимо сначала обновиться с 4.6 до 4.6.1, затем с 4.6.1 до 4.7 и т.д., вплоть до 4.9. "Проскочить" обновления и сразу перейти с 4.6 до 4.9 нельзя.

Скачав архив с обновлением, вы найдете подробную инструкцию по установке внутри архива.

Перед обновлением надо сохранить резервные копии системы и базы данных. Также просим учесть, что если в системе были правки, то они могут быть утрачены.

Загружать файлы обновления надо через FTP-клиент в БИНАРНОМ режиме.

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

Подробнее о создании копии сайта и установке на локальный сервер вы можете почитать в пункте 1.1. и в статье документации

Примечание:
Обновление допустимо только в рамках определенной сборки. То есть для обновления магазина на сборке ImageCMS Shop Prо используйте только пакеты обновления для Prо. Обновление сборки Prо пакетом для Premium и наоборот приводят к техническим проблемам.

Ручное обновление по пунктам:

Скачайте и распакуйте архив с обновлением с нашей страницы загрузок. Внутри архива находятся:

  • Папка files - в ней содержатся непосредственно файлы обновления. Именно содержимое этой папки необходимо закачивать на сервер.
  • Текстовый документ instruction.txt - краткое руководство по обновлению.
  • Файл update_db.sql - файл, в котором содержатся sql-запросы, необходимые для обновления состояния/структуры базы данных.

Далее следуйте инструкции:

Шаг 1: Закачка файлов обновления на сервер.

Сначала копируете с заменой сверху на свою систему новые файлы обновления из архива в БИНАРНОМ режиме (не удаляя старые файлы).

Не забывайте, что надо обновлять базу данных так же - от версии к версии. Например, если вы используете версию 4.6 и желаете обновиться до 4.9, то вам необходимо сначала обновиться с 4.6 до 4.6.1, затем с 4.6.1 до 4.7 и т.д., вплоть до 4.9.

Шаг 2: Актуализация базы данных.

Вам необходимо сделать SQL-запрос через PHPMyAdmin в вашей базе данных. Данные для запроса вы можете скопировать из файла update_db.sql и вставить их в соответствующее поле на вкладке SQL:

Например, сначала из архива с обновлением до 4.7, затем до 4.8 а затем до 4.8.1.

Примечание:
Просим учесть, если при запросе возникают ошибки, их нужно убрать из запроса и провести его снова (в итоге SQL-запрос должен пройти успешно).

Шаг 3: Удаление кэша на сервере

Далее необходимо удалить все файлы в папке \system\cache\, оставить пустой только папку \templates_c .

После перехода с версии 4.6.1 необходимо в файле .htaccess в строку

RewriteCond $1 ....

после

user_guide|uploads/.*

вставить следующее:

|application/third_party/(tinymce|filemanager).*

Примечание:
При обновлении к 4.9 необходимо обновить лицензию. Для этого отправьте запрос в нашу службу технической поддержки.

4. Обновление, силами наших специалистов (платная услуга)

Обновление силами наших специалистов стоит $30 за обновление на одну версию выше без сбережения правок и доработок.

Сохранение доработок оценивается отдельно и осуществляется нашими специалистами на основе четкого списка правок.

Для точной оценки стоимости и заказа услуги свяжитесь с вашим менеджером.

5. Откат системы

Если в процессе обновления произошла ошибка или какой-либо сбой, скорее всего необходимо будет откатить вашу систему до начального состояния.

Для этого требуется полный бэкап системы (файлы системы и шаблона), а также БД. Подробнее о создании полного бэкапа вы можете почитать в пункте 1.1.

Для восстановления системы необходимо осуществить следующее:

Шаг 1: Удаление текущих файлов системы.

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

Шаг 2: Закачка файлов из бекапа.

Закачайте старые файлы системы из бекапа обратно на сервер в бинарном режиме и проставьте права для записи/чтения 777 (CHMOD) на папки:

  • uploads (рекурсивно, включая все вложенные элементы)
  • \system\cache (рекурсивно, включая все вложенные элементы)
  • application\backups (рекурсивно, включая все вложенные элементы)
  • на всю папку системы (БЕЗ рекурсии!)

На другие папки проставьте права.

Шаг 3: Удалите все таблицы из базы данных магазина через PHPMyAdmin, выбрав необходимую базу данных, доступы к которой прописаны в файле:

  • Для системы от версии 4.8.1 - \application\config\database.php
  • Для системы от версии 4.6.1 до версии 4.8 - \application\config\config.php )

Перейдите к ее структуре. Затем выберите все таблицы, и "Уничтожить":

Шаг 4: Импорт таблиц из бэкапа базы данных

Перейдите на вкладку "Импорт". Как метод экспорта выберите файл копии базы данных и кликните по кнопке "Вперед":

6. Частые ошибки

Вставили ключ, но автообновление не работает.

Для исправления ошибки:

  • Проставьте права на корневую папку 777 без рекурсии (только на корневую, без распространения на вложенные папки и файлы).
  • Проверьте правильность указанного ключа:

Ключ должен иметь вид: YynbiY2Zrbk9dEBdddFFFFaF3i4bSQrSRzsnG8siQRZK6en000002G2236HRGaFrhh5t67N3BQ9AE5Kd9Y5dNHHfRD9Q77GAND7b

и состоять ровно из 100 символов (только цифры и латиница). Пробелы, дефисы и подчеркивания не допускаются.

  • Убедитесь, что на папку /application/backups/ стоят права на запись рекурсивно 777, а на корневую папку с системой стоят права 777 БЕЗ рекурсии.

После обновления до 4.9 не работают фильтры (Smart filter)...

Некорректная работа Smart filter settings связана с тем, что Ваш шаблон не обновился (и не должен был).

Надо обновить его вручную:

Заменяем содержимое файла (или создаем при отсутствии оного) /application/modules/smart_filter/assets/js/physical_pages.js

на следующее:

function log(arg) {
    console.log(arg);
}

var PhysicalFilter = {
    brandsUrl: '',
    propertiesUrl: '',
    baseUrl: '',
    manyPhysicalURL: false,
    brands: {},
    properties: {},
    useMultiSegmentsURL: function () {
        this.manyPhysicalURL = true;
        return this;
    },
    init: function (formObj) {
        this.brands = $(formObj).find('input[name="brand[]"]:checked');
        log(this.brands.length);
        this.properties = $(formObj).find('input[name^="p["]:checked');
        log(this.properties.length);
    },
    formBrandsUrl: function (formObj) {
        if (this.brands.length > 1 && !this.manyPhysicalURL) {
            return false;
        }

        if ((this.brands.length && this.properties.length) && !this.manyPhysicalURL) {
            return false;
        }

        $(this.brands).each(function () {
            if (PhysicalFilter.brandsUrl) {
                PhysicalFilter.brandsUrl += ';'
            }

            PhysicalFilter.brandsUrl += 'brand-' + $(this).data('url');
            $(this).removeAttr('checked');
        });
    },
    formPropertiesUrl: function (formObj) {
        if (this.properties.length > 1 && !this.manyPhysicalURL) {
            return false;
        }

        if ((this.brands.length && this.properties.length) && !this.manyPhysicalURL) {
            return false;
        }

        $(this.properties).each(function () {
            if (PhysicalFilter.propertiesUrl) {
                PhysicalFilter.propertiesUrl += ';'
            }

            PhysicalFilter.propertiesUrl += 'property-' + $(this).data('physical');
            $(this).removeAttr('checked');
        });
    },
    clearUrl: function () {
        this.baseUrl = location.pathname;
        var cutToProperty = null;
        var cutToBrand = null;
        var cutTo = null;

        cutToProperty = this.baseUrl.indexOf('/property-');
        cutToBrand = this.baseUrl.indexOf('/brand-');
        cutTo = Math.min(cutToProperty, cutToBrand);
        cutTo = cutTo === -1 ? Math.max(cutToProperty, cutToBrand) : this.baseUrl.length;

        if (cutTo !== -1) {
            this.baseUrl = this.baseUrl.substring(0, cutTo);
        }
    },
    getUrl: function (formObj) {
        this.init(formObj);
        this.formBrandsUrl(formObj);
        this.formPropertiesUrl(formObj);
        this.clearUrl();
        this.propertiesUrl = (this.propertiesUrl && this.brandsUrl) ? ';' + this.propertiesUrl : this.propertiesUrl;

        return this.baseUrl + '/' + this.brandsUrl + this.propertiesUrl;
    }
};


$(document).on('ready', function () {
    $('#catalogForm').submit(function () {
        //$(this).attr('action', PhysicalFilter.useMultiSegmentsURL().getUrl(this));
        $(this).attr('action', PhysicalFilter.getUrl(this));
    });
});

Заходим в папку текущего шаблона и заменяем указанные ниже строки:

Файл: /smart_filter/filter.tpl

строку:

<input {$dis} class="brand{echo $brand->id}" name="brand[]" value="{echo $brand->id}" type="checkbox" {$check}/>

заменить на:

<input {$dis} class="brand{echo $brand->id}" name="brand[]" data-url="{echo $brand->url}" value="{echo $brand->id}" type="checkbox" {$check}/>

строку:

<input {$dis} name="p[{echo $prop->property_id}][]" value='{echo $item.value}' type="checkbox" {$check} />

заменить на:

<input {$dis} name="p[{echo $prop->property_id}][]" data-physical="{echo $prop->csv_name}-{echo $item.id}" value='{echo $item.value}' type="checkbox" {$check} />

строку:

<span class="text-el">{echo $item.value}</span>

или

<span class="text-el">{echo htmlspecialchars_decode($item.value)}</span>

заменить на:

<span class="text-el">{echo htmlspecialchars_decode($item.value)}</span>

строку:

<input disabled="disabled" type="hidden" name="requestUri" value="{echo site_url($CI->uri->uri_string())}"/>

заменить на:

<input disabled="disabled" type="hidden" name="requestUri" value="{echo site_url('/shop/category/' . $CI->load->module('smart_filter')->formCategoryPath())}"/>


Файл: /smart_filter/main.tpl

строку:

{if $nm == $key.value or \ShopCore::encode($nm) == $key.value}  или {if $nm == $key.value || $nm == htmlspecialchars_decode($key.value)}

заменить на:

{if $nm == $key.value || $nm == htmlspecialchars_decode($key.value, ENT_QUOTES)}

строку:

<button type="button" onclick="location.href = location.origin + location.pathname" class="btn-reset-filter">

заменить на:

<button type="button" onclick="Filter.resetFilter()" class="btn-reset-filter">

Файл: /smart_filter/js/filter.js

строку:

var Filter = {

заменить на:

var Filter = { 
resetFilter: function () {  
location.href= $('input[name="requestUri"]').val(); 
},


Чистим кэш из админпанели.

Раздел "Обновление системы"  не отображается (белая страница).

Нужно проверить наличие на хостинге установленного модуля soap.

Автообновление от версии 4.10. до 4.11

пакеты автообновления от версии 4.10. до 4.11 представлены не будут - есть ряд несовместимостей, которые делаю невозможным обновление в автоматическом режиме. Необходимо обновиться с нашей страницы http://www.imagecms.net/download/shop вручную от версии 4.10. до 4.11 , после автообновление будет возможно, когда выйдут новые версии или промежуточные релизы (баг-фиксы).

Ошибка Duplicate entry 'ХХХХХХ' for key 'ХХХХХ'

Данная ошибка свидетельствует о том, что в определенной таблице (название таблицы указано в скобках в Duplicate entry 'название' таблицы) есть дубли записей. Надо выполнить поиск по проблемном запросе и проблемным элементам (статьям, товарам или категориям) надо прописать уникальные URL

Функционал "Обновление системы" предоставляет администратору возможность осуществлять периодическое обновление системы, в соответствии с новыми релизами ImageCMS Shop, а также возможность создавать резервные копии файлов баз данных вашего интернет магазина, что предусмотрено для возможности восстановления вашего интернет-магазина в случае непредвиденных обстоятельств.

Внимание:

Данный функционал следует использовать в сочетании с функционалом "Резервное копирование".


1. Просмотреть список бэкапов и доступных обновлений
- можно, выбрав пункт главного меню пользователя "Система", а в нем подпункт "Обновление системы":


После чего перед вами откроется окно "Информация обновления" следующего вида:


2. Элементы окна "Информация обновления"
следующие:

  1. Поле окна "Информация обновления" - отображает информацию относительно доступных обновлений.
  2. Функциональная кнопка "Бэкап и Обновление" - открывает форму создания бэкапа "Обновление".
  3. Функциональная кнопка "Настройки" - предоставляет возможность администратору указать ключ обновления.



3. Обновить систему
- можно как в ручном режиме, так и в автоматическом:

3.1. Обновление системы в ручном режиме - можно осуществить при помощи файлов, доступных на нашем сайте

Архив находится в директории application/backups/

3.2. Обновление системы в режиме автообновления/восстановления при помощи панели администратора происходит путем осуществления следующих шагов:

  • Для начала нужно создать бэкап уже существующих фалов и баз данных через пункт меню администратора "Система", воспользовавшись подпунктами "Обновление системы" и "Резервное копирование".
  • В окне "Информация обновления" следует воспользоваться функциональной кнопкой "Настройки" для вызова формы "Настройки автообновления", в которой следует указать ключ автообновления. (Для получения ключа, следует создать тикет в личном кабинете)



  • Далее следует установить на сервере права на директорию сайта chmod 777 (777 рекурсивно - на все внутренние файлы и папки сайта. После обновления/восстановления бэкапа вернуть права назад, в предыдущее значение).
  • После осуществления вышеперечисленных действий следует периодически (примерно каждые 10 минут) обновлять окно "Обновление", так как в нем будет появляться список файлов, которые будут перезаписаны в системе.
Примечание:

Обновленные файлы будут автоматически перезаписаны на сервере. Соответственно, если в файлах, подлежащих обновлению, вами были осуществлены изменения, все они будут утрачены. В дальнейшем будет необходимо повторно внести изменения в файлы с учётом изменений методов ядра.

Если в списке файлов есть файлы шаблона и ваш шаблон был изменен - все изменения также будут утеряны или же шаблон может работать некорректно. Это обусловлено тем, что вместе с обновлением функций ядра системы в шаблон также будут внесены изменения для обеспечения поддержки новых функций контроллера. В связи с этим в шаблон также будет необходимо повторно внести изменения или же использовать стандартный шаблон.

Перед осуществлением обновления системы рекомендуется создать точку восстановления.

После процесса обновления рекомендуется почистить кеш.


4. Создать бэкап
- можно кликом по клавише "Бэкап и Обновление" в правом верхнем углу окна "Информация обновления".

После чего появится окно "Обновление", позволяющеесоздать точку восстановления и/или осуществить восстановление системы:

После чего для создания точки восстановления системы достаточно осуществить клик по кнопке "Создать бэкап", в правом верхнем углу данного окна.


5. Настроить создание точки восстановления
системы можно в подпункте меню администратора "Резервное копирование"


6. Восстановить систему по сохраненному бэкапу
- можно при помощи вышеописанного окна "Обновление", осуществив клик по Функциональной кнопке "Восстановление" в одноименном столбце, напротив соответственного бэкапа.



7. Удалить точку восстановления системы
- можно при помощи клавиши с изображением корзины "Удалить", напротив подлежащего удалению бэкапа, в столбце "Удаление".

Примечание:

Последняя точка восстановления удалению не подлежит из соображений безопасности системы.