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;
         }
     }
 }
Example #2
0
 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());
         }
     }
 }