skip to content
KAD::Wiki
User Tools
Log In
Site Tools
Search
Tools
Show page
Old revisions
Log In
>
You are here:
Приветствие
»
Для сотрудников
»
Разработка
»
HostCMS
»
Статьи (по модулям)
»
Интернет-магазин
»
Полезные решения
»
Оповещение пользователя о забытом товаре в корзине. Cron
private:koding:hostcms:modules:shop:useful:notification_cron
Media Files
====== Оповещение пользователя о забытом товаре в корзине. Cron====== 1. Добавляем поле дата-время добавления товара в Siteusers - через phpmyadmin. 2. [[private:koding:hostcms:siteuser:nabljudateli:сorrect_isplay_of_fields|Добавляем наблюдателя для корректного отображения на форме редактирования]] Siteuser. Создаем папку Kad в modules с путем Kad_Observers_Siteuser. <code php> defined('HOSTCMS') || exit('HostCMS: access denied.'); class Kad_Observers_Siteuser { static public function OnBeforeExecute($object, $operation) { $oMainTab = $object->getTab('main'); $oMainTab->getField('datelastitem')->caption('Дата и время добавления последнего товара в корзину'); exit; } } </code> 2.1. В конец файла bootstrap.php прописываем <code php> Core_Event::attach('Siteuser_Controller_Edit.onBeforeExecute', array('Kad_Observers_Siteuser', 'OnBeforeExecute')); </code> 3. В настройки ТДС корзины при добовлении товара в корзину дописываем код, который запишет в созднаное поле дату и время покупки в код:<code php> if (Core_Array::getRequest('add')) { $shop_item_id = intval(Core_Array::getRequest('add')); if ($shop_item_id) { //Вставтавляем код сохранения даты добавления в корзину. $oShop_Cart_Controller = Shop_Cart_Controller::instance(); $oShop_Cart_Controller ->shop_item_id($shop_item_id) ->quantity(Core_Array::getRequest('count', 1)) ->add(); } </code> Код сохранения даты добавления в корзину. <code php> $oUser = Core_Entity::factory('Siteuser')->getCurrent(); $oUser->datelastitem = Core_Date::timestamp2sql(time()); $oUser->save(); </code> 4. Скрипт оповещение пользователя о забытом товаре. <code php> /** * Оповещение пользователя о забытом товаре * * @author Grinev Vadim, KAD Systems (©) 2016 * @date 12-09-2016 * Начало >> */ @set_time_limit(90000); require_once(dirname(__FILE__) . '/../' . 'bootstrap.php'); define('CURRENT_SITE', 7); // id документа для отправки письма пользователю $firstIdDocument = 119; $secondIdDocument = 118; // Временные промежутки для отправки $firstTimeMail = 12*60*60; $secondTimeMail = 24*60*60; $cronPeriod = 60*60; // Текущий сайт $oSite = Core_Entity::factory('Site', CURRENT_SITE); $emailadm = Core_Entity::factory('Site', CURRENT_SITE)->admin_email; $oShop = Core_Entity::factory('Shop', 25); $oUsers = $oSite->Siteusers; $oUsers->queryBuilder() ->where('datelastitem', '!=', '0000-00-00 00:00:00'); $aoUsers = $oUsers->findAll(); foreach ($aoUsers as $oUser) { // Проверяем наличие товаров у этого пользователя $oShop_Cart_Controller = Shop_Cart_Controller::instance(); $aoShopCarts = $oShop_Cart_Controller->siteuser_id($oUser->id)->getAll($oShop); if(count($aoShopCarts)) { $email = $oUser->email; $time = strtotime(date("Y-m-d H:i:s"))-strtotime($oUser->datelastitem); if ($time >= $firstTimeMail and $time <= $firstTimeMail+$cronPeriod) { ob_start(); Kad::showDocument($firstIdDocument); $message = ob_get_clean(); $subject = Core_Entity::factory('Document', $firstIdDocument)->name; Core_Mail::instance() ->to($email) ->from($emailadm) ->subject($subject) ->message($message) ->contentType('text/html') ->send(); } if ($time >= $secondTimeMail and $time <= $secondTimeMail+$cronPeriod) { ob_start(); Kad::showDocument($secondIdDocument); $message = ob_get_clean(); $subject = Core_Entity::factory('Document', $secondIdDocument)->name; Core_Mail::instance() ->to($email) ->from($emailadm) ->subject($subject) ->message($message) ->contentType('text/html') ->send(); $oUser->datelastitem = ""; $oUser->save(); } } else { $oUser->datelastitem = ""; $oUser->save(); } } /** * << Конец * @author Grinev Vadim, KAD Systems (©) 2016 * @date 12-09-2016 */ </code> 5. [[private:administrirovanie_serverov:Cron|Устанавливаем скрипт в крон]] на выполнение каждый час <wrap lo>Страницу создал Вадим Гринев 13.09.16 в 10:36</wrap>
Save
Preview
Cancel
Edit summary
private/koding/hostcms/modules/shop/useful/notification_cron.txt
· Last modified: 27.06.17 в 16:01 by
maximzasorin_gmail.com
Page Tools
Show page
Old revisions
Export to PDF
Rename Page
Back to top