public function run($args) { $list = NotificationsQueue::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("date<=:date AND step>-1")->setParams(array(":date" => time()))->setLimit(50)->setCache(0)); foreach ($list as $item) { $catalogClass = SiteHelper::getCamelCase($item->catalog); $itemObj = $catalogClass::fetch($item->item_id); if (!$item->step) { $item->step = 0; } $step = $item->step < 8 ? $item->step + 1 : -1; //print_r( $item ); // Добавляем в очередь на нотификацию // В течении 24 часов после добавления или сохранения пользователю приходят уведомления // О том что заполнил не полностью, не опубликовал, не добавил картинок и т.д. AutoNotifier::addInNotificationsQueue($item->catalog, $itemObj->id, $step); switch ($item->catalog) { case "catalog_users": AutoNotifier::onRegistration($itemObj); break; case "catalog_users_con": AutoNotifier::onRegistrationConfirm($itemObj); break; case "catalog_firms": $itemObj->onAddFirm(new CModelEvent($itemObj), array("status" => "reminder")); break; case "catalog_tours": $itemObj->onAddTour(new CModelEvent($itemObj), array("status" => "reminder")); break; case "catalog_firms_items": $itemObj->onAddFirmsItems(new CModelEvent($itemObj), array("status" => "reminder")); break; case "catalog_firms_service": $itemObj->onAddFirmsService(new CModelEvent($itemObj), array("status" => "reminder")); break; case "catalog_firms_banner": $itemObj->onAddFirmsBanners(new CModelEvent($itemObj), array("status" => "reminder")); break; } } }
static function addInNotificationsQueue($catalog, $itemId, $step = 0) { $newdate = time(); switch ($step) { case 0: $newdate = time() + 24 * 60 * 60; break; case 1: $newdate = time() + 4 * 24 * 60 * 60; break; // Через 3 дня // Через 3 дня case 2: case 3: case 4: $newdate = time() + 8 * 24 * 60 * 60; break; // Через 7 дней // Через 7 дней case 5: case 6: case 7: $newdate = time() + 31 * 24 * 60 * 60; break; // Через 30 дней } $check = NotificationsQueue::findByAttributes(array("catalog" => $catalog, "item_id" => $itemId)); if (sizeof($check) == 0) { $new = new NotificationsQueue(); $new->date = $newdate; $new->date2 = date("Y-m-d", $newdate); $new->catalog = $catalog; $new->item_id = $itemId; $new->step = $step; $new->save(); } else { $check[0]->date = $newdate; $check[0]->date2 = date("Y-m-d", $newdate); $check[0]->step = $step; if (!$check[0]->save()) { print_r($check[0]->getErrors()); } } }