/**
  * @see parent::resolveJobsForQueue()
  */
 public static function resolveJobsForQueue()
 {
     parent::resolveJobsForQueue();
     $pageSize = static::JOB_QUEUE_PAGE_SIZE;
     $offset = 0;
     $timeStamp = time();
     do {
         $campaigns = Campaign::getByStatusAndSendingTime(Campaign::STATUS_ACTIVE, $timeStamp, $pageSize, $offset, false);
         $offset = $offset + $pageSize;
         if (is_array($campaigns) && count($campaigns) > 0) {
             foreach ($campaigns as $campaign) {
                 Yii::app()->jobQueue->resolveToAddJobTypeByModelByDateTimeAttribute($campaign, 'sendOnDateTime', 'CampaignGenerateDueCampaignItems');
             }
         }
     } while (is_array($campaigns) && count($campaigns) > 0);
 }
 /**
  * Not pretty, but gets the job done. Solves memory leak problem.
  * @param CampaignItem $campaignItem
  */
 protected function runGarbageCollection($campaignItem)
 {
     assert('$campaignItem instanceof CampaignItem');
     $campaignItem->campaign->marketingList->forgetValidators();
     $campaignItem->campaign->forgetValidators();
     $this->modelIdentifiersForForgottenValidators[$campaignItem->campaign->marketingList->getModelIdentifier()] = true;
     $this->modelIdentifiersForForgottenValidators[$campaignItem->campaign->getModelIdentifier()] = true;
     parent::runGarbageCollection($campaignItem);
 }
 /**
  * Not pretty, but gets the job done. Solves memory leak problem.
  * @param AutoresponderItem $autoresponderItem
  */
 protected function runGarbageCollection($autoresponderItem)
 {
     assert('$autoresponderItem instanceof AutoresponderItem');
     $autoresponderItem->autoresponder->marketingList->forgetValidators();
     $autoresponderItem->autoresponder->forgetValidators();
     $this->modelIdentifiersForForgottenValidators[$autoresponderItem->autoresponder->marketingList->getModelIdentifier()] = true;
     $this->modelIdentifiersForForgottenValidators[$autoresponderItem->autoresponder->getModelIdentifier()] = true;
     parent::runGarbageCollection($autoresponderItem);
 }