public static function processDueItem(OwnedModel $item)
 {
     assert('is_object($item)');
     $emailMessageId = null;
     $itemId = $item->id;
     assert('static::$itemClass === "AutoresponderItem" || static::$itemClass === "CampaignItem"');
     $contact = static::resolveContact($item);
     $itemOwnerModel = static::resolveItemOwnerModel($item);
     if ($itemOwnerModel->id < 0) {
         // the corresponding autoresponder/campaign has been deleted already.
         $item->delete();
         return false;
     }
     static::$personId = $contact->getClassId('Person');
     if (static::skipMessage($contact, $itemOwnerModel)) {
         static::createSkipActivity($itemId);
     } else {
         $marketingList = $itemOwnerModel->marketingList;
         assert('is_object($marketingList)');
         assert('get_class($marketingList) === "MarketingList"');
         $textContent = $itemOwnerModel->textContent;
         $htmlContent = null;
         if (static::supportsRichText($itemOwnerModel)) {
             $htmlContent = $itemOwnerModel->htmlContent;
         }
         static::resolveContent($textContent, $htmlContent, $contact, $itemOwnerModel->enableTracking, (int) $itemId, static::$itemClass, (int) $marketingList->id);
         try {
             $item->emailMessage = static::resolveEmailMessage($textContent, $htmlContent, $itemOwnerModel, $contact, $marketingList, $itemId);
         } catch (MissingRecipientsForEmailMessageException $e) {
             static::createSkipActivity($itemId);
         }
     }
     $marked = static::markItemAsProcessedWithSQL($itemId, $item->emailMessage->id);
     return $marked;
 }
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     static::$user = User::getByUsername('super');
     Yii::app()->user->userModel = static::$user;
     $contact = ContactTestHelper::createContactByNameForOwner('contact 01', static::$user);
     $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 01', 'description 01', 'fromName 01', '*****@*****.**');
     $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 01', 'textContent 01', 'htmlContent 01', 10, Autoresponder::OPERATION_SUBSCRIBE, 1, $marketingList);
     $processed = 0;
     $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 100);
     $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact);
     static::$personId = $contact->getClassId('Person');
     static::$autoresponderItemId = $autoresponderItem->id;
     $campaign = CampaignTestHelper::createCampaign('campaign 01', 'subject 01', 'text Content 01', 'html Content 01', 'fromName 01', '*****@*****.**', null, Campaign::STATUS_ACTIVE, null, null, $marketingList);
     $processed = 0;
     $campaignItem = CampaignItemTestHelper::createCampaignItem($processed, $campaign, $contact);
     static::$campaignItemId = $campaignItem->id;
     AllPermissionsOptimizationUtil::rebuild();
 }