Обновления HostCMS

Обновление 6.2.4 от 15.05.2015 г.

Реализован поиск с использованием поискового движка Sphinx, указание используемого поискового движка осуществляется в конфигурационном файле modules/search/config/config.php опция default. См. http://www.hostcms.ru/documentation/modules/search/config/ и http://www.hostcms.ru/documentation/modules/search/sphinx/
При экспорте в Яндекс.Маркет добавлена возможность указывать массив дополнительных свойств, подлежащих экспорту.
В Querybuilder добавлена поддержка синтаксиса REPLACE.

Обновление 6.2.3 от 02.04.2015 г.

Перед установкой отключите тегирование кэша (опция 'tags' => FALSE) для кэшей default, Core_ORM, Core_ORM_ColumnCache, search, counter_allSession, compression. Пример см. http://www.hostcms.ru/documentation/modules/cache/config/
Отключите модуль кэширования перед установкой обновления и включите после установки обновления!
Реализовано тегирование кеша для информационных систем и интернет-магазина. Тегирование доступно для хранилищ file, APC, eAccelerator, xcache. Управляемый (тегированный) кэш позволяет автоматически удалять закэшированные данные при изменении элемента в центре администрирования.
Исправлен вывод ошибок, возникающих при использовании библиотеки libxml версии 2.9.2: http://www.xmlsoft.org/news.html
В контроллер показа магазина добавлены свойства, ограничивающие количество выводимых просмотренных товаров, товаров для сравнения и избранных товаров. Опции контроллера viewedLimit, comparingLimit и favoriteLimit по умолчанию установлены в 10.
В контроллер показа формы Form_Controller_Show добавлен метод addEmail($email), позволяющий добавить адреса эл. почты, на которые будет отправлено письмо в дополнение к заданным через центр администрирования.
Оптимизирован модуль форума.

Обновление 6.2.2 от 23.03.2015 г.

Убрана зависимости панелей центра администрирования в клиентском разделе от версии jQuery, используемой в макете.
Пользователям с включенным модулем кэширования рекомендуется перенести хранения данных по структуре объектов ORM в кэш, для этого в modules/core/config/orm.php только для опции columnCache укажите основной используемый кэш, чаще всего это apc, eaccelerator или file. Пример содержания файла:
<?php

return array (
'cache' => 'memory',
'columnCache' => 'apc'
);
Обновлен контроллер экспорта в Яндекс.Маркет. Добавлен экспорт по типам товаров 'vendor.model'|'book'|'audiobook'|'artist.title'|'tour'|'event-ticket'.

Обновление 6.2.1 от 16.03.2015 г.

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

В типовой динамической странице "Интернет-магазин" необходимо заменить строку:
$query_currency_switch = "IF (`shop_items`.`shop_currency_id` = '{$oShop_Currency->id}', IF (shop_discounts.percent, price * (100 - shop_discounts.percent) * {$currency_coefficient} / 100, shop_items.price * {$currency_coefficient}), {$query_currency_switch})";

на:
$query_currency_switch = "IF (`shop_items`.`shop_currency_id` = '{$oShop_Currency->id}', IF (shop_discounts.value, IF(shop_discounts.type, price * {$currency_coefficient} - shop_discounts.value, price * (100 - shop_discounts.value) * {$currency_coefficient} / 100), shop_items.price * {$currency_coefficient}), {$query_currency_switch})";

В контроллеры показа добавлен метод getShownIDs(), возвращающий массив идентификаторов показанных элементов, например, для контроллера показа информационных систем будет возвращен массив идентификаторов информационных элементов.

Обновление 6.2.0 от 06.03.2015 г.

Улучшена работа с памятью. Для сайтов с выделенными 64 Мб памяти и более рекомендуется в modules/core/config/objectwatcher.php установить значение не менее 512 для каждых 64 Мб.
В модуле форм при использовании нескольких получателей перед отправкой письма с формой второму и последующему получателю добавлена задержка 0.35 сек. для исключения в запрет отправки письма со стороны хостинга.
Добавлен метод Core_Page::instance()->prependCss($css), добавляющий CSS в начало списка. Обратите внимание, последний вызванный prependCss() добавит CSS в самое начало списка.
Добавлена возможность асинхронного подключения Javascript файлов.
Указание асинхронной загрузки при подключении одного JS-файла:
Core_Page::instance()->js('/hostcmsfiles/my.js', TRUE);
Указание асинхронной загрузки при объединении всех JS-файлов в один:
Core_Page::instance()->showJs(TRUE);
Добавлена поддержка тэга "Склады" при обмене с 1С и поддержка дополнительных свойств характеристик.
Добавлен конфигурационный файл modules/shop/config/cml.php с массивом названий "Реквизитов", которые будут загружены как дополнительные свойства.
Добавлена дополнительная защита по IP-адресу в модуле "Опросы". В типовой динамической странице "Опросы" необходимо заменить блок:
/* Если был хотя бы один вариант ответа */
if (count($aPollResponsesId) > 0)
{
$voted = Core_Array::get($_COOKIE, 'poll' . $oPoll->id);

if (!$voted)
{
foreach ($aPollResponsesId as $iPollResponseId)
{
$oPoll_Response = Core_Entity::factory('Poll_Response', $iPollResponseId);

$oPoll_Response->voted++;
$oPoll_Response->save();
}

$oPoll->voted++;
$oPoll->save();

setcookie("poll" . $oPoll->id, "1", time() + 31536000, '/');
}

$Poll_Group_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('ПользовательИмеетПравоОтвечать')->value(intval(!$voted))
);
}

на:

/* Если был хотя бы один вариант ответа */
if (count($aPollResponsesId) > 0)
{
$bNew_Vote = $Poll_Group_Controller_Show->vote($aPollResponsesId);

$Poll_Group_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')
->name('ПользовательИмеетПравоОтвечать')->value(intval($bNew_Vote))
);
}
Для форм центра администрирования добавлен GUID, позволяющий динамически получать свои формы по GUID в собственных модулях.
Обновлен обработчик платежной системы ROBOKASSA. Добавлен пересчет суммы заказа для физических лиц (владельцев магазинов).
Обновлен обработчик платежной системы QIWI с использованием REST.

Обновление 6.1.9 от 29.01.2015 г.

В списке доменов добавлена опция "Редирект", позволяющая использовать 301 редирект и перенаправлять трафик на основной домен. Опция также помогает поисковым системам определить основное зеркало сайта. В случае указания редиректа для неосновных доменов мы рекомендуем использовать в качестве основного домена сайт с www (вместо *.), например www.site.ru, а для site.ru и всех других зеркал включить опцию "Редирект".
Улучшена очистка статичного кэша в модуле "Кэширование".
В контроллеры показа структуры, информационных систем и магазинов добавлены методы inCache(), проверяющие наличие закэшированных данных для текущих условий показа. Используется в случае подготовки ресурсоемких вычислений перед контроллером показа и позволяет избежать таких вычислений при наличии закэшированного блока.
Обновлен контроллер экспорта в Яндекс.Недвижимость.

Обновление 6.1.8 от 05.12.2014 г.

Значительно расширен модуль "Компрессия страниц", реализовано сжатие и объединение CSS и JS файлов, заметно ускоряющее загрузку.
Улучшена работа кэширования в статичные файлы, теперь кэширование в статичные файлы работает в большем количестве случаев.
Реализовано массовое добавление элементов списка.
Реализована отправка SMS-сообщений о заказах через Robokassa. Для отправки:
1. Включите опцию отправки СМС в личном кабинете Робокассы.
2. Добавьте в конец bootstrap.php строки:
// Robokassa SMS observers
Core_Event::attach('shop_order.onAfterChangeStatusPaid', array('Shop_Observer_Robokassa', 'onAfterChangeStatusPaid'));
Core_Event::attach('Shop_Payment_System_Handler.onAfterProcessOrder', array('Shop_Observer_Robokassa', 'onAfterProcessOrder'));
Реализовано указание идентификаторов макетов, XSL-шаблонов и типовых динамических страниц при редактировании узлов структуры сайта.
Добавление обработчика события onBeforeAddEntity для потомков Admin_Form_Controller теперь указывается без указания skin-а, т.е. вместо Skin_Summer_Admin_Form_Controller.onBeforeAddEntity необходимо использовать Admin_Form_Controller.onBeforeAddEntity. Потребуется корректировка модулей, использующих данную функциональность.
После установки обновления в файл .htaccess в корне системы управления добавьте следующие директивы:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
</IfModule>

# Apache 2.2
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
</IfModule>

# Apache 1.3, 2.0
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(css|js)$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Обновление 6.1.7 от 27.10.2014 г.

В контроллер показа магазина и контроллер показа корзины добавлена опции ->taxes(TRUE) для показа списка налогов в XML магазина.
Реализован вывод модификаций товаров текущей группы на одном уровне с товарами группы, что позволяет проводить фильтрацию модификаций на уровне с товарами. Для включения вывода списка модификаций на одном уровне с товарами используйте опцию контроллера показа ->modificationsList(TRUE)
Добавлено резервирование товаров магазина при заказе. Опция резервирования включается в настройках магазина с указанием времени резервирования.
Добавлена константа SYNTAX_HIGHLIGHTING, управляющая подсветкой синтаксиса редактора кода.
Для пользователя центра администрирования добавлена опция активности.
В XSL-шаблоне "МагазинКорзина" необходимо выполнить замену. Строка <xsl:value-of select="/shop/shop_warehouse[@id=$shop_warehouse_id]/name"/> (<xsl:value-of select="count"/>) заменяется на <xsl:value-of select="/shop/shop_warehouse[@id=$shop_warehouse_id]/name"/> (<xsl:value-of select="count - reserved"/>)
В XSL-шаблоне "МагазинТовар" необходимо выполнить замену. Строка <xsl:value-of disable-output-escaping="yes" select="rest"/> заменяется на <xsl:value-of disable-output-escaping="yes" select="rest - reserved"/>

Обновление 6.1.6 от 25.08.2014 г.

Добавлен редактор кода с подсветкой синтаксиса.
В модуле Helpdesk добавлен выбор флажка из списка тикетов.
При добавлении дополнительного свойства название xml-тега генерируется из названия свойства.
В дистрибутив 6.1.6 добавлен блок "Последний заказ". При обновлении блок можно добавить вручную http://www.hostcms.ru/forums/3/10011/
Загружаемые баннеры перемещены из директории /upload/banners/ в /upload/img/, из имени баннера убрано слово banner.

Обновление 6.1.5 от 17.07.2014 г.

Добавлен модуль "Магазин приложений", позволяющий устанавливать дополнительные модули, разработанные нашими партнерами.
В переопределенные методы _applyObjectProperty() контроллеров редактирования добавлены события onAfterRedeclaredApplyObjectProperty.
В поставку добавлен обработчик платежной системы AcquiroPay.