protected static function makeSqlQuery($searchAttributeData) { $quote = DatabaseCompatibilityUtil::getQuote(); $where = null; $selectDistinct = false; $autoresponderTableName = Autoresponder::getTableName('Autoresponder'); $autoresponderItemTableName = AutoresponderItem::getTableName('AutoresponderItem'); $emailMessageTableName = EmailMessage::getTableName('EmailMessage'); $sentDateTimeColumnName = EmailMessage::getColumnNameByAttribute('sentDateTime'); $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('Autoresponder'); $selectQueryAdapter = new RedBeanModelSelectQueryAdapter($selectDistinct); $queuedEmailsSelectPart = "sum(CASE WHEN {$quote}{$emailMessageTableName}{$quote}.{$quote}{$sentDateTimeColumnName}" . $quote . " = '0000-00-00 00:00:00' OR {$quote}{$emailMessageTableName}{$quote}" . ".{$quote}{$sentDateTimeColumnName}{$quote} IS NULL THEN 1 ELSE 0 END)"; // Not Coding Standard $sentEmailsSelectPart = "sum(CASE WHEN {$quote}{$emailMessageTableName}{$quote}.{$quote}{$sentDateTimeColumnName}" . $quote . " > '0000-00-00 00:00:00' THEN 1 ELSE 0 END)"; $uniqueOpensSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_OPEN); $uniqueClicksSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_CLICK); $bouncedSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_BOUNCE); $optedOutSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_UNSUBSCRIBE); static::addEmailMessageDayDateClause($selectQueryAdapter, $sentDateTimeColumnName); static::addEmailMessageFirstDayOfWeekDateClause($selectQueryAdapter, $sentDateTimeColumnName); static::addEmailMessageFirstDayOfMonthDateClause($selectQueryAdapter, $sentDateTimeColumnName); $selectQueryAdapter->addNonSpecificCountClause(); $selectQueryAdapter->addClauseByQueryString($queuedEmailsSelectPart, static::QUEUED); $selectQueryAdapter->addClauseByQueryString($sentEmailsSelectPart, static::SENT); $selectQueryAdapter->addClauseByQueryString("count((" . $uniqueOpensSelectPart . "))", static::UNIQUE_OPENS); $selectQueryAdapter->addClauseByQueryString("count((" . $uniqueClicksSelectPart . "))", static::UNIQUE_CLICKS); $selectQueryAdapter->addClauseByQueryString("count((" . $bouncedSelectPart . "))", static::BOUNCED); $selectQueryAdapter->addClauseByQueryString("count((" . $optedOutSelectPart . "))", static::UNSUBSCRIBED); $joinTablesAdapter->addLeftTableAndGetAliasName($autoresponderItemTableName, 'id', $autoresponderTableName, 'autoresponder_id'); $joinTablesAdapter->addLeftTableAndGetAliasName($emailMessageTableName, 'emailmessage_id', $autoresponderItemTableName, 'id'); $where = RedBeanModelDataProvider::makeWhere('Autoresponder', $searchAttributeData, $joinTablesAdapter); $sql = SQLQueryUtil::makeQuery($autoresponderTableName, $selectQueryAdapter, $joinTablesAdapter, null, null, $where); return $sql; }
/** * @see BaseJob::run() */ public function run() { $autoresponderItemsToProcess = AutoresponderItem::getByProcessedAndProcessDateTime(AutoresponderItem::NOT_PROCESSED, time(), static::$pageSize); foreach ($autoresponderItemsToProcess as $autoresponderItem) { try { $this->processAutoresponderItemInQueue($autoresponderItem); } catch (NotFoundException $e) { return $autoresponderItem->delete(); } catch (NotSupportedException $e) { $this->errorMessage = $e->getMessage(); return false; } } return true; }
/** * @see BaseJob::run() */ public function run() { $batchSize = $this->resolveBatchSize(); $autoresponderItemsToProcess = AutoresponderItem::getByProcessedAndProcessDateTime(0, time(), $batchSize); foreach ($autoresponderItemsToProcess as $autoresponderItem) { try { $this->processAutoresponderItemInQueue($autoresponderItem); } catch (NotFoundException $e) { return $autoresponderItem->delete(); } catch (NotSupportedException $e) { $this->errorMessage = $e->getMessage(); return false; } } return true; }
protected function processRun() { $batchSize = $this->resolveBatchSize(); $autoresponderItemsToProcess = AutoresponderItem::getByProcessedAndProcessDateTime(0, time(), $batchSize); $startingMemoryUsage = memory_get_usage(); $modelsProcessedCount = 0; foreach ($autoresponderItemsToProcess as $autoresponderItem) { try { $this->processAutoresponderItemInQueue($autoresponderItem); } catch (NotFoundException $e) { return $autoresponderItem->delete(); } catch (NotSupportedException $e) { $this->errorMessage = $e->getMessage(); return false; } $this->runGarbageCollection($autoresponderItem); $modelsProcessedCount++; } $this->addMaxmimumProcessingCountMessage($modelsProcessedCount, $startingMemoryUsage); return true; }
protected static function markAutoresponderItemAsProcessed(AutoresponderItem $autoresponderItem) { $autoresponderItem->processed = AutoresponderItem::PROCESSED; return $autoresponderItem->unrestrictedSave(); }
/** * @param array $searchAttributeData * @param string $groupBy * @return string */ protected static function makeAutorespondersSqlQuery($searchAttributeData, $groupBy) { $quote = DatabaseCompatibilityUtil::getQuote(); $where = null; $selectDistinct = false; $marketingListTableName = MarketingList::getTableName(); $autoresponderTableName = Autoresponder::getTableName(); $autoresponderItemTableName = AutoresponderItem::getTableName(); $emailMessageTableName = EmailMessage::getTableName(); $sentDateTimeColumnName = EmailMessage::getColumnNameByAttribute('sentDateTime'); $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('Autoresponder'); $selectQueryAdapter = new RedBeanModelSelectQueryAdapter($selectDistinct); $uniqueOpensSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_OPEN); $uniqueClicksSelectPart = static::resolveAutoresponderTypeSubQuery(EmailMessageActivity::TYPE_CLICK); static::addEmailMessageDayDateClause($selectQueryAdapter, $sentDateTimeColumnName); static::addEmailMessageFirstDayOfWeekDateClause($selectQueryAdapter, $sentDateTimeColumnName); static::addEmailMessageFirstDayOfMonthDateClause($selectQueryAdapter, $sentDateTimeColumnName); $selectQueryAdapter->addNonSpecificCountClause(); $selectQueryAdapter->addClauseByQueryString("count((" . $uniqueOpensSelectPart . "))", static::UNIQUE_OPENS); $selectQueryAdapter->addClauseByQueryString("count((" . $uniqueClicksSelectPart . "))", static::UNIQUE_CLICKS); $joinTablesAdapter->addFromTableAndGetAliasName($marketingListTableName, 'marketinglist_id'); $joinTablesAdapter->addLeftTableAndGetAliasName($autoresponderItemTableName, 'id', $autoresponderTableName, 'autoresponder_id'); $joinTablesAdapter->addLeftTableAndGetAliasName($emailMessageTableName, 'emailmessage_id', $autoresponderItemTableName, 'id'); $where = RedBeanModelDataProvider::makeWhere('Autoresponder', $searchAttributeData, $joinTablesAdapter); MarketingList::resolveReadPermissionsOptimizationToSqlQuery(Yii::app()->user->userModel, $joinTablesAdapter, $where, $selectDistinct); $sql = SQLQueryUtil::makeQuery($autoresponderTableName, $selectQueryAdapter, $joinTablesAdapter, null, null, $where, null, $groupBy); return $sql; }
/** * @depends testCreateAndGetAutoresponderById */ public function testDeleteAutoresponder() { $autoresponders = Autoresponder::getAll(); $this->assertCount(7, $autoresponders); $autoresponderId = $autoresponders[0]->id; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $contact = ContactTestHelper::createContactByNameForOwner('autoresponderContact', Yii::app()->user->userModel); $saved = AutoresponderItem::addNewItem(0, $processDateTime, $contact, $autoresponders[0]); $this->assertTrue($saved); $autoresponderItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); $this->assertNotEmpty($autoresponderItems); $this->assertCount(1, $autoresponderItems); $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf'); $files = array(); foreach ($fileNames as $index => $fileName) { $file = ZurmoTestHelper::createFileModel($fileName); $files[$index]['name'] = $fileName; $files[$index]['type'] = $file->type; $files[$index]['size'] = $file->size; $files[$index]['contents'] = $file->fileContent->content; $autoresponders[0]->files->add($file); } $this->assertTrue($autoresponders[0]->save()); $autoresponders = Autoresponder::getAll(); $this->assertNotEmpty($autoresponders[0]->files); $this->assertCount(count($files), $autoresponders[0]->files); $this->assertEquals(count($files), FileModel::getCount()); $autoresponders[0]->delete(); $autoresponders = Autoresponder::getAll(); $this->assertEquals(6, count($autoresponders)); $autoresponderitems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); $this->assertEquals(0, count($autoresponderitems)); $this->assertEquals(0, FileModel::getCount()); }
/** * @depends testAddNewItem */ public function testRegisterAutoresponderItemsByAutoresponderOperation() { $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 04'); $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('autoresponder Subscribe', 'test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, $marketingList); $this->assertNotNull($autoresponderSubscribe); $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('autoresponder Unsubscribe', 'test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList); $this->assertNotNull($autoresponderUnsubscribe); $autoresponderRemove = AutoresponderTestHelper::createAutoresponder('autoresponder Remove', 'test autoresponder Remove', 'This is text content Remove', 'This is <b>html</b> content Remove', 10, Autoresponder::OPERATION_REMOVE, $marketingList); $this->assertNotNull($autoresponderRemove); $super = User::getByUsername('super'); $contact1 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 01', $super); $contact2 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 02', $super); $contact3 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 03', $super); $contact4 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 04', $super); $contact5 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 05', $super); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact1); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact2); $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderSubscribe->id); $this->assertNotEmpty($autoresponderItemsSubscribe); $this->assertCount(2, $autoresponderItemsSubscribe); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact3); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact4); $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderUnsubscribe->id); $this->assertNotEmpty($autoresponderItemsUnsubscribe); $this->assertCount(2, $autoresponderItemsUnsubscribe); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_REMOVE, $marketingList->id, $contact5); $autoresponderItemsRemove = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::NOT_PROCESSED, $autoresponderRemove->id); $this->assertNotEmpty($autoresponderItemsRemove); $this->assertCount(1, $autoresponderItemsRemove); }
/** * @depends testCreateAndGetMarketingListMemberById */ public function testBeforeSaveAutoresponderRegister() { $marketingList = MarketingListTestHelper::createMarketingListByName('test marketing List 06'); $this->assertNotNull($marketingList); $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, false, $marketingList); $this->assertNotNull($autoresponderSubscribe); $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList); $this->assertNotNull($autoresponderUnsubscribe); $member = MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList); $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id); $this->assertNotEmpty($autoresponderItemsSubscribe); $this->assertCount(1, $autoresponderItemsSubscribe); $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id); $this->assertEmpty($autoresponderItemsUnsubscribe); $member->unsubscribed = 1; $saved = $member->unrestrictedSave(); $this->assertTrue($saved); $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id); $this->assertNotEmpty($autoresponderItemsSubscribe); $this->assertCount(1, $autoresponderItemsSubscribe); $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id); $this->assertNotEmpty($autoresponderItemsUnsubscribe); $this->assertCount(1, $autoresponderItemsUnsubscribe); }
/** * @depends testRunWithInvalidMergeTags */ public function testRunWithValidMergeTags() { $job = new AutoresponderMessageInQueueJob(); $email = new Email(); $email->emailAddress = '*****@*****.**'; $contact = ContactTestHelper::createContactByNameForOwner('contact 05', $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 06', 'description goes here', 'fromName', '*****@*****.**'); $autoresponder = AutoresponderTestHelper::createAutoresponder('autoresponder 06', 'subject 06', '[[FIRST^NAME]]', '[[LAST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, $marketingList); $processed = AutoresponderItem::NOT_PROCESSED; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - 10); AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact); $this->assertTrue($job->run()); $autoresponderItems = AutoresponderItem::getAll(); $this->assertCount(4, $autoresponderItems); $autoresponderItemsProcessed = AutoresponderItem::getByProcessedAndAutoresponderId(AutoresponderItem::PROCESSED, $autoresponder->id); $this->assertCount(1, $autoresponderItemsProcessed); }
public function beforeSave() { if (!parent::beforeSave()) { return false; } if ($this->id < 0 || isset($this->originalAttributeValues['unsubscribed']) && $this->originalAttributeValues['unsubscribed'] != $this->unsubscribed) { $operation = Autoresponder::OPERATION_SUBSCRIBE; if ($this->unsubscribed) { $operation = Autoresponder::OPERATION_UNSUBSCRIBE; } AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation($operation, $this->marketingList->id, $this->contact); } $this->modifiedDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); return true; }
/** * @depends testCreateAndGetAutoresponderById */ public function testDeleteAutoresponder() { $autoresponders = Autoresponder::getAll(); $this->assertCount(7, $autoresponders); $autoresponderId = $autoresponders[0]->id; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $contact = ContactTestHelper::createContactByNameForOwner('autoresponderContact', Yii::app()->user->userModel); $saved = AutoresponderItem::addNewItem(0, $processDateTime, $contact, $autoresponders[0]); $this->assertTrue($saved); $autoresponderItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); //print_r($autoresponderItems[0]->id); $this->assertNotEmpty($autoresponderItems); $this->assertCount(1, $autoresponderItems); $autoresponderItemActivity = new AutoresponderItemActivity(); $autoresponderItemActivity->type = AutoresponderItemActivity::TYPE_OPEN; $autoresponderItemActivity->quantity = 10; $autoresponderItemActivity->latestSourceIP = '10.11.12.13'; $autoresponderItemActivity->autoresponderItem = $autoresponderItems[0]; $this->assertTrue($autoresponderItemActivity->save()); //print_r($autoresponderItemActivity->id); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(1, $autoresponderItemActivities); $autoresponders[0]->delete(); $autoresponders = Autoresponder::getAll(); $this->assertEquals(6, count($autoresponders)); $autoresponderitems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderId); $this->assertEquals(0, count($autoresponderitems)); $autoresponderItemActivities = AutoresponderItemActivity::getAll(); $this->assertCount(0, $autoresponderItemActivities); }
/** * @depends testAddNewItem */ public function testRegisterAutoresponderItemsByAutoresponderOperation() { $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 04'); $autoresponderSubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Subscribe', 'This is text content Subscribe', 'This is <b>html</b> content Subscribe', 10, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList); $this->assertNotNull($autoresponderSubscribe); $autoresponderUnsubscribe = AutoresponderTestHelper::createAutoresponder('test autoresponder Unsubscribe', 'This is text content Unsubscribe', 'This is <b>html</b> content Unsubscribe', 20, Autoresponder::OPERATION_UNSUBSCRIBE, true, $marketingList); $this->assertNotNull($autoresponderUnsubscribe); $contact1 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 01', Yii::app()->user->userModel); $contact2 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 02', Yii::app()->user->userModel); $contact3 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 03', Yii::app()->user->userModel); $contact4 = ContactTestHelper::createContactByNameForOwner('autoresponderContact 04', Yii::app()->user->userModel); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact1); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_SUBSCRIBE, $marketingList->id, $contact2); $autoresponderItemsSubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderSubscribe->id); $this->assertNotEmpty($autoresponderItemsSubscribe); $this->assertCount(2, $autoresponderItemsSubscribe); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact3); AutoresponderItem::registerAutoresponderItemsByAutoresponderOperation(Autoresponder::OPERATION_UNSUBSCRIBE, $marketingList->id, $contact4); $autoresponderItemsUnsubscribe = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponderUnsubscribe->id); $this->assertNotEmpty($autoresponderItemsUnsubscribe); $this->assertCount(2, $autoresponderItemsUnsubscribe); }
protected function processRun() { $batchSize = $this->resolveBatchSize(); if ($batchSize != null) { $resolvedBatchSize = $batchSize + 1; } else { $resolvedBatchSize = null; } $autoresponderItemsToProcess = AutoresponderItem::getByProcessedAndProcessDateTime(0, time(), $resolvedBatchSize); $startingMemoryUsage = memory_get_usage(); $modelsProcessedCount = 0; foreach ($autoresponderItemsToProcess as $autoresponderItem) { try { $this->processAutoresponderItemInQueue($autoresponderItem); } catch (NotFoundException $e) { return $autoresponderItem->delete(); } catch (NotSupportedException $e) { $this->errorMessage = $e->getMessage(); return false; } $this->runGarbageCollection($autoresponderItem); $modelsProcessedCount++; if ($this->hasReachedMaximumProcessingCount($modelsProcessedCount, $batchSize)) { Yii::app()->jobQueue->add('AutoresponderQueueMessagesInOutbox', 5); break; } if (!Yii::app()->performance->isMemoryUsageSafe()) { $this->addMaximumMemoryUsageReached(); Yii::app()->jobQueue->add('AutoresponderQueueMessagesInOutbox', 5); break; } } $this->addMaxmimumProcessingCountMessage($modelsProcessedCount, $startingMemoryUsage); return true; }
/** * @depends testRunWithCustomBatchSize */ public function testRunWithContactContainingPrimaryEmailOptedOut() { $unprocessedItems = AutoresponderItem::getByProcessed(0); $this->assertEmpty($unprocessedItems); $job = new AutoresponderQueueMessagesInOutboxJob(); $email = new Email(); $email->emailAddress = '*****@*****.**'; $email->optOut = true; $contact = ContactTestHelper::createContactByNameForOwner('contact 07', $this->user); $contact->primaryEmail = $email; $this->assertTrue($contact->save()); $marketingList = MarketingListTestHelper::createMarketingListByName('marketingList 08', 'description goes here', 'fromName', '*****@*****.**'); MarketingListMemberTestHelper::createMarketingListMember(0, $marketingList, $contact); $autoresponder = AutoresponderTestHelper::createAutoresponder('subject 08', '[[FIRST^NAME]]', '[[LAST^NAME]]', 1, Autoresponder::OPERATION_SUBSCRIBE, true, $marketingList); $processed = 0; $processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() - rand(10, 500)); $autoresponderItem = AutoresponderItemTestHelper::createAutoresponderItem($processed, $processDateTime, $autoresponder, $contact); $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(1, $unprocessedItems); $this->assertTrue($job->run()); $unprocessedItems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $autoresponder->id); $this->assertCount(0, $unprocessedItems); $personId = $contact->getClassId('Person'); $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl(AutoresponderItemActivity::TYPE_SKIP, $autoresponderItem->id, $personId); $this->assertNotEmpty($activities); $this->assertCount(1, $activities); }
/** * @depends testCreateNewActivity */ public function testGetByTypeAndModelIdAndPersonIdAndUrl() { $type = AutoresponderItemActivity::TYPE_OPEN; $url = null; $persons = Person::getAll(); $this->assertNotEmpty($persons); $person = $persons[0]; $autoresponderItems = AutoresponderItem::getAll(); $this->assertNotEmpty($autoresponderItems); $autoresponderItem = $autoresponderItems[0]; $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl($type, $autoresponderItem->id, $person->id, $url); $this->assertNotEmpty($activities); $this->assertCount(1, $activities); $activity = $activities[0]; $this->assertEquals($type, $activity->type); $this->assertEquals(1, $activity->quantity); $this->assertEquals($person, $activity->person); $this->assertEquals($autoresponderItem, $activity->autoresponderItem); // now try same thing but with a url this time. $contact = Contact::getByName('contact 02 contact 02son'); $personId = $contact[0]->getClassId('Person'); $person = Person::getById($personId); $type = AutoresponderItemActivity::TYPE_CLICK; $url = 'http://www.zurmo.com'; $activities = AutoresponderItemActivity::getByTypeAndModelIdAndPersonIdAndUrl($type, $autoresponderItem->id, $personId, $url); $this->assertNotEmpty($activities); $this->assertCount(1, $activities); $activity = $activities[0]; $this->assertEquals($type, $activity->type); $this->assertEquals(1, $activity->quantity); $this->assertEquals($person, $activity->person); $this->assertEquals($autoresponderItem, $activity->autoresponderItem); }
protected function afterDelete() { parent::afterDelete(); $autoresponderitems = AutoresponderItem::getByProcessedAndAutoresponderId(0, $this->id); foreach ($autoresponderitems as $autoresponderitem) { ZurmoRedBean::exec("DELETE FROM autoresponderitemactivity WHERE autoresponderitem_id = " . $autoresponderitem->id); } ZurmoRedBean::exec("DELETE FROM autoresponderitem WHERE processed = 0 and autoresponder_id = " . $this->id); }