/** * This will send an email alert along with the notification. * @throws NotSupportedException */ public function actionCreateStuckJobNotification() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } MonitorJob::makeJobStuckNotification(array('Process Outbound Email Job', 'Process Inbound Email Job')); }
public function actionLoadContractsSampler() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } for ($i = 0; $i < 11; $i++) { $owner = Yii::app()->user->userModel; $name = 'Mass Delete ' . $i; $currencies = Currency::getAll(); $currencyValue = new CurrencyValue(); $currencyValue->value = 500.54; $currencyValue->currency = $currencies[0]; $contract = new Contract(); $contract->owner = $owner; $contract->name = $name; $contract->amount = $currencyValue; $contract->closeDate = '2011-01-01'; //eventually fix to make correct format $contract->stage->value = 'Negotiating'; $saved = $contract->save(); if (!$saved) { throw new NotSupportedException(); } } }
public function actionLoadMassDeleteDemoData() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } UserInterfaceDevelopmentUtil::makeMassDeleteData(); }
public function actionUserInterface($type = null) { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } if ($type == null) { $demoView = new MenuUserInterfaceDemoView(); $view = new ZurmoConfigurationPageView(ZurmoDefaultAdminViewUtil::makeStandardViewForCurrentUser($this, $demoView)); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::STANDARD_VIEW) { $demoView = new StandardUserInterfaceDemoView(); $demoView->message = 'Standard View'; $view = new ZurmoConfigurationPageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $demoView)); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::STANDARD_BREADCRUMBS_VIEW) { $breadCrumbLinks = array('Breadcrumb 1' => array('/zurmo/demo/userInterface'), 'Breadcrumb 2'); $demoView = new StandardUserInterfaceDemoView(); $demoView->message = 'Standard View with BreadCrumbs'; $view = new ZurmoConfigurationPageView(ZurmoDefaultViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $demoView, $breadCrumbLinks, 'SettingsBreadCrumbView')); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::GRACEFUL_ERROR_VIEW) { $demoView = new StandardUserInterfaceDemoView(); $demoView->message = 'Graceful Error View'; $view = new ZurmoConfigurationPageView(ZurmoDefaultViewUtil::makeErrorViewForCurrentUser($this, $demoView)); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::UNEXPECTED_ERROR_VIEW) { $view = new ErrorPageView('Unexpected error view'); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::AUTHORIZATION_VIEW) { $demoView = new StandardUserInterfaceDemoView(); $demoView->message = 'Authorization View'; $view = new ZurmoConfigurationPageView(ZurmoDefaultViewUtil::makeAuthorizationViewForCurrentUser($this, $demoView)); $view->setCssClasses(array_merge($view->getCssClasses(), array('ZurmoAuthorizationPageView'))); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::CONTACT_FORM_EXTERNAL_VIEW) { $containedView = new ContactExternalEditAndDetailsView('Edit', $this->getId(), $this->getModule()->getId(), new ContactWebFormsModelForm(new Contact()), ContactExternalEditAndDetailsView::getMetadata()); $view = new ContactWebFormsExternalPageView(ZurmoExternalViewUtil::makeExternalViewForCurrentUser($containedView)); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::MARKETING_LISTS_EXTERNAL_PREVIEW_VIEW) { $splashView = new MarketingListsExternalActionsPreviewView(); $view = new MarketingListsExternalActionsPageView($this, $splashView); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::MARKETING_LISTS_MANAGE_SUBSCRIPTIONS_VIEW) { $marketingListMember = MarketingListMember::getSubset(null, 0, 1); $marketingLists = MarketingList::getByUnsubscribedAndAnyoneCanSubscribe($marketingListMember[0]->contact->id); $listView = new MarketingListsManageSubscriptionsListView($this->getId(), $this->getModule()->getId(), $marketingLists, -100, -100, -100, 'notUsed'); $view = new MarketingListsManageSubscriptionsPageView($this, $listView); echo $view->render(); } elseif ($type == MenuUserInterfaceDemoView::MOBILE_HEADER_VIEW) { Yii::app()->userInterface->setSelectedUserInterfaceType(UserInterface::MOBILE); $demoView = new StandardUserInterfaceDemoView(); $demoView->message = 'Standard View'; $view = new ZurmoConfigurationPageView(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this, $demoView)); echo $view->render(); } else { throw new NotSupportedException(); } }
public function actionReadMetadata($className) { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } if (GlobalMetadata::isClassMetadataSavedInDatabase($className)) { echo 'The metadata is saved in the database ' . "<BR>"; } else { echo 'The metadata is not saved in the database ' . "<BR>"; } echo "<pre>"; print_r($className::getMetadata()); echo "</pre>"; }
/** * Method for testing creating a simple notification for the current user. */ public function actionGenerateManageSubscriptionHash() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $contact = RandomDataUtil::getRandomValueFromArray(Contact::getAll()); $personId = $contact->getClassId('Person'); $marketingList = RandomDataUtil::getRandomValueFromArray(MarketingList::getAll()); $marketingListId = $marketingList->id; $model = RandomDataUtil::getRandomValueFromArray(CampaignItem::getAll()); $modelId = $model->id; $modelType = get_class($model); $hash = GlobalMarketingFooterUtil::resolveHash($personId, $marketingListId, $modelId, $modelType, false); echo 'index.php/marketingLists/external/manageSubscriptions?hash=' . $hash; }
public function actionLoadCollectionItems() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $collectionData = GameCollection::resolvePersonAndAvailableTypes(Yii::app()->user->userModel, GameCollection::getAvailableTypes()); foreach ($collectionData as $collection) { $itemsData = $collection->getItemsData(); foreach ($itemsData as $type => $quantity) { $itemsData[$type] = $quantity + 1; } $collection->setItemsData($itemsData); $saved = $collection->save(); if (!$saved) { throw new FailedToSaveModelException(); } } }
/** * Special method to load up many job logs to view paginiation, modal, etc. in job log modal view */ public function actionLoadManyJobLogs() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } echo 'Creating jobs for CurrencyRatesUpdate' . "\n"; for ($i = 0; $i < 10; $i++) { $jobLog = new JobLog(); $jobLog->type = 'CurrencyRatesUpdate'; $jobLog->startDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->endDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $jobLog->status = JobLog::STATUS_COMPLETE_WITHOUT_ERROR; $jobLog->isProcessed = true; $jobLog->message = 'A test message.'; $saved = $jobLog->save(); if (!$saved) { throw new FailedToSaveModelException(); } } }
/** * Special method to load each type of product. */ public function actionLoadProductsSampler() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } //Create test account for product functional test on related list sorting, product related view. $account = new Account(); $account->owner = Yii::app()->user->userModel; $account->name = 'My Account For Product Test'; $saved = $account->save(); if (!$saved) { throw new NotSupportedException(); } //Load 6 so there is sufficient data for product related view pagination testing. for ($i = 0; $i < 8; $i++) { $product = new Product(); if ($i < 6) { $product->name = 'Product with open stage ' . $i; $product->stage->value = 'Open'; } elseif ($i == 6) { $product->name = 'Product with lost stage ' . $i; $product->stage->value = 'Lost'; } elseif ($i == 7) { $product->name = 'Product with won stage ' . $i; $product->stage->value = 'Won'; } $product->owner = Yii::app()->user->userModel; $product->quantity = mt_rand(1, 95); $product->account = $account; $product->type = 1; $product->sellPrice->value = 786.0; $product->sellPrice->currency->code = 'USD'; $product->priceFrequency = 2; $saved = $product->save(); if (!$saved) { throw new NotSupportedException(); } } }
/** * Special method to load each type of game notification. New badge, badge grade change, and level up. */ public function actionLoadGameNotificationsSampler() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } //Level up notification $gameNotification = new GameNotification(); $gameNotification->user = Yii::app()->user->userModel; $gameNotification->setLevelChangeByNextLevelValue(2); $saved = $gameNotification->save(); //New badge notification $gameNotification = new GameNotification(); $gameNotification->user = Yii::app()->user->userModel; $gameNotification->setNewBadgeByType('LoginUser'); $saved = $gameNotification->save(); //Badge grade up notification $gameNotification = new GameNotification(); $gameNotification->user = Yii::app()->user->userModel; $gameNotification->setBadgeGradeChangeByTypeAndNewGrade('LoginUser', 5); $saved = $gameNotification->save(); echo "Demo data has been loaded. Go back to the application."; }
/** * Special method to load contacts for marketing functional test. */ public function actionLoadContactsSampler() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } //Load 12 contacts so there is sufficient data for marketing list pagination testing and mass delete. for ($i = 1; $i <= 12; $i++) { $firstName = 'Test'; $lastName = 'Contact'; $owner = Yii::app()->user->userModel; $contact = new Contact(); $contact->firstName = $firstName; $contact->lastName = $lastName . ' ' . $i; $contact->owner = $owner; $contact->state = ContactsUtil::getStartingState(); $saved = $contact->save(); assert('$saved'); if (!$saved) { throw new NotSupportedException(); } } }
/** * Special method to load ByTimeWorkflowInQueue models */ public function actionLoadWorkflowMessageInQueue() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $model = new Account(); $model->name = 'test account'; $saved = $model->save(); if (!$saved) { throw new NotSupportedException(); } $savedWorkflow = new SavedWorkflow(); $savedWorkflow->name = 'Test for demo Message Queue model'; $savedWorkflow->description = 'description'; $savedWorkflow->moduleClassName = 'AccountsModule'; $savedWorkflow->triggerOn = Workflow::TRIGGER_ON_NEW; $savedWorkflow->type = Workflow::TYPE_BY_TIME; $savedWorkflow->isActive = false; $savedWorkflow->order = 1; $savedWorkflow->serializedData = serialize(array(ComponentForWorkflowForm::TYPE_TRIGGERS => array(), ComponentForWorkflowForm::TYPE_ACTIONS => array(), ComponentForWorkflowForm::TYPE_EMAIL_MESSAGES => array())); $saved = $savedWorkflow->save(); if (!$saved) { throw new NotSupportedException(); } for ($i = 1; $i < 6; $i++) { $workflowMessageInQueue = new WorkflowMessageInQueue(); $workflowMessageInQueue->processDateTime = '2014-03-0' . $i . ' 00:00:00'; $workflowMessageInQueue->savedWorkflow = $savedWorkflow; $workflowMessageInQueue->modelClassName = get_class($model); $workflowMessageInQueue->modelItem = $model; $workflowMessageInQueue->serializedData = serialize(array()); $workflowMessageInQueue->triggeredByUser = Yii::app()->user->userModel; $saved = $workflowMessageInQueue->save(); if (!$saved) { throw new NotSupportedException(); } } }
public function actionCreateDemoImportForAnalysis($firstRowIsHeaderRow = true) { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $import = new Import(); $serializedData['importRulesType'] = 'Accounts'; $mappingData = array('column_0' => array('attributeIndexOrDerivedType' => 'name', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_1' => array('attributeIndexOrDerivedType' => 'officePhone', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_2' => array('attributeIndexOrDerivedType' => 'officeFax', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_3' => array('attributeIndexOrDerivedType' => 'employees', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_4' => array('attributeIndexOrDerivedType' => 'annualRevenue', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_5' => array('attributeIndexOrDerivedType' => 'description', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_6' => array('attributeIndexOrDerivedType' => 'website', 'type' => 'importColumn', 'mappingRulesData' => array('DefaultValueModelAttributeMappingRuleForm' => array('defaultValue' => null))), 'column_7' => array('attributeIndexOrDerivedType' => null, 'type' => 'importColumn', 'mappingRulesData' => array())); $serializedData['mappingData'] = $mappingData; $serializedData['rowColumnDelimiter'] = ','; // Not Coding Standard $serializedData['rowColumnEnclosure'] = '"'; $serializedData['firstRowIsHeaderRow'] = $firstRowIsHeaderRow; $import->serializedData = serialize($serializedData); $saved = $import->save(); if (!$saved) { throw new FailedToSaveModelException(); } $this->createImportTempTable(8, $import->getTempTableName()); //Make header row if ($firstRowIsHeaderRow) { $newBean = ZurmoRedBean::dispense($import->getTempTableName()); $newBean->column_0 = 'Header #1'; $newBean->column_1 = 'Header #2'; $newBean->column_2 = 'Header #3'; $newBean->column_3 = 'Header #4'; $newBean->column_4 = 'Header #5'; $newBean->column_5 = 'Header #6'; $newBean->column_6 = 'Header #7'; $newBean->column_7 = 'Header #8'; ZurmoRedBean::store($newBean); } //Make data rows that are clean for ($i = 0; $i < 3; $i++) { $newBean = ZurmoRedBean::dispense($import->getTempTableName()); $newBean->column_0 = 'aa1' . $i; $newBean->column_1 = 'aa2' . $i; $newBean->column_2 = 'aa3' . $i; $newBean->column_3 = 'aa4' . $i; $newBean->column_4 = 'aa5' . $i; $newBean->column_5 = 'aa6' . $i; $newBean->column_6 = 'aa7' . $i; $newBean->column_7 = 'aa8' . $i; $newBean->analysisStatus = ImportDataAnalyzer::STATUS_CLEAN; $analysisData = array(); $analysisData['column_0'] = array(); $analysisData['column_0'][] = 'a test message 1'; $analysisData['column_0'][] = 'a test message 2'; $analysisData['column_2'] = array(); $analysisData['column_2'][] = 'a test message 1'; $analysisData['column_2'][] = 'a test message 2'; $newBean->serializedAnalysisMessages = serialize($analysisData); ZurmoRedBean::store($newBean); } //Make data rows that have a warning for ($i = 0; $i < 3; $i++) { $newBean = ZurmoRedBean::dispense($import->getTempTableName()); $newBean->column_0 = 'ba1' . $i; $newBean->column_1 = 'ba2' . $i; $newBean->column_2 = 'ba3' . $i; $newBean->column_3 = 'ba4' . $i; $newBean->column_4 = 'ba5' . $i; $newBean->column_5 = 'ba6' . $i; $newBean->column_6 = 'ba7' . $i; $newBean->column_7 = 'ba8' . $i; $newBean->analysisStatus = ImportDataAnalyzer::STATUS_WARN; $analysisData = array(); $analysisData['column_0'] = array(); $analysisData['column_0'][] = 'a test message 1'; $analysisData['column_0'][] = 'a test message 2'; $analysisData['column_2'] = array(); $analysisData['column_2'][] = 'a test message 1'; $analysisData['column_2'][] = 'a test message 2'; $newBean->serializedAnalysisMessages = serialize($analysisData); ZurmoRedBean::store($newBean); } //Make data rows that are skipped for ($i = 0; $i < 10; $i++) { $newBean = ZurmoRedBean::dispense($import->getTempTableName()); $newBean->column_0 = 'ca1' . $i; $newBean->column_1 = 'ca2' . $i; $newBean->column_2 = 'ca3' . $i; $newBean->column_3 = 'ca4' . $i; $newBean->column_4 = 'ca5' . $i; $newBean->column_5 = 'ca6' . $i; $newBean->column_6 = 'ca7' . $i; $newBean->column_7 = 'ca8' . $i; $newBean->analysisStatus = ImportDataAnalyzer::STATUS_SKIP; $analysisData = array(); $analysisData['column_0'] = array(); $analysisData['column_0'][] = 'a test message 1'; $analysisData['column_0'][] = 'a test message 2'; $analysisData['column_2'] = array(); $analysisData['column_2'][] = 'a test message 1'; $analysisData['column_2'][] = 'a test message 2'; $newBean->serializedAnalysisMessages = serialize($analysisData); ZurmoRedBean::store($newBean); } ZurmoRedBean::store($newBean); echo 'the import id is: ' . $import->id; }
public function actionSendDemoEmailNotifications() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $template = "{message}<br/>"; $messageStreamer = new MessageStreamer($template); $messageStreamer->setExtraRenderBytes(0); $messageLogger = new MessageLogger($messageStreamer); if (Yii::app()->user->userModel->primaryEmail->emailAddress == null) { $messageLogger->addErrorMessage('Cannot send test emails because the current user does not have an email address'); Yii::app()->end(0, false); } $messageLogger->addInfoMessage('Using type:' . Yii::app()->emailHelper->outboundType); $messageLogger->addInfoMessage('Using host:' . Yii::app()->emailHelper->outboundHost); $messageLogger->addInfoMessage('Using port:' . Yii::app()->emailHelper->outboundPort); $messageLogger->addInfoMessage('Using username:'******'Using password: Yes'); } else { $messageLogger->addInfoMessage('Using password: No'); } $modules = Module::getModuleObjects(); foreach ($modules as $module) { $notificationClassNames = $module::getAllClassNamesByPathFolder('data'); foreach ($notificationClassNames as $notificationClassName) { if (!strpos($notificationClassName, 'DemoEmailNotifications') === false) { $demoNotification = new $notificationClassName(); $demoNotification->run(Yii::app()->user->userModel, $messageLogger); } } } Yii::app()->emailHelper->sendQueued(); }
/** * @return bool * @throws NotSupportedException */ public function isSuperAdministrator() { if ($this->id < 0) { throw new NotSupportedException(); } return Group::isUserASuperAdministrator($this); }
public function actionRunJob($type, $timeLimit = 500, $messageLoggerClassName = 'MessageLogger') { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { echo Zurmo::t('JobsManagerModule', 'Only super administrators can run jobs from the browser'); Yii::app()->end(0, false); } $breadcrumbLinks = array(Zurmo::t('JobsManagerModule', 'Run Job')); $runJobView = new RunJobView($this->getId(), $this->getModule()->getId(), $type, (int) $timeLimit); $view = new JobsManagerPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $runJobView, $breadcrumbLinks, 'JobsManagerBreadCrumbView')); echo $view->render(); $template = ZurmoHtml::script("\$('#logging-table ol').append('<li>{message}</li>');"); JobsManagerUtil::runFromJobManagerCommandOrBrowser($type, (int) $timeLimit, $messageLoggerClassName, $template); echo ZurmoHtml::script('$("#progress-table").hide(); $("#complete-table").show();'); }
public function testIsUserASuperAdministrator() { $this->assertEquals('super', Yii::app()->user->userModel->username); $this->assertTrue(Group::isUserASuperAdministrator(Yii::app()->user->userModel)); $user = User::getByUsername('dood1'); $this->assertFalse(Group::isUserASuperAdministrator($user)); }
public function actionRebuildSecurityCache($User_page = 1, $continue = false) { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { $failureMessageContent = Zurmo::t('Core', 'You must be a super administrator to rebuild the security cache.'); $messageView = new AccessFailureView($failureMessageContent); $view = new AccessFailurePageView($messageView); echo $view->render(); Yii::app()->end(0, false); } if ($User_page == 1) { //to more quickly show the view to the user. To give a better indication of what is happening. $pageSize = 1; } else { $pageSize = 25; } $namedSecurableItems = array(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { if ($module instanceof SecurableModule) { $namedSecurableItems[] = NamedSecurableItem::getByName(get_class($module)); } } if ($continue) { $page = static::getMassActionProgressStartFromGet('User_page', $pageSize); } else { $page = 1; } $title = Zurmo::t('ZurmoModule', 'Rebuilding Cache'); $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'isSystemUser', 'operatorType' => 'equals', 'value' => 0), 2 => array('attributeName' => 'isSystemUser', 'operatorType' => 'isNull', 'value' => null)); $searchAttributeData['structure'] = '1 or 2'; $dataProvider = RedBeanModelDataProviderUtil::makeDataProvider($searchAttributeData, 'User', 'RedBeanModelDataProvider', null, false, $pageSize); $selectedRecordCount = $dataProvider->getTotalItemCount(); $users = $dataProvider->getData(); foreach ($users as $user) { if (!$user->isSuperAdministrator()) { foreach ($namedSecurableItems as $namedSecurableItem) { $namedSecurableItem->getActualPermissions($user); } } RightsUtil::cacheAllRightsByPermitable($user); } $rebuildView = new RebuildSecurityCacheProgressView($this->getId(), $this->getModule()->getId(), new User(), $selectedRecordCount, $page, $pageSize, $User_page, 'rebuildSecurityCache', $title); if (!$continue) { $view = new ZurmoPageView(ZurmoDefaultAdminViewUtil::makeStandardViewForCurrentUser($this, $rebuildView)); echo $view->render(); Yii::app()->end(0, false); } else { echo $rebuildView->renderRefreshJSONScript(); } }
public function actionQueueJob($type, $delay = 0, $messageLoggerClassName = 'MessageLogger') { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { echo Zurmo::t('JobsManagerModule', 'Only super administrators can run jobs from the browser'); Yii::app()->end(0, false); } if (!Yii::app()->jobQueue->isEnabled()) { echo Zurmo::t('JobsManagerModule', 'Job queuing must be enabled in order to queue a job'); Yii::app()->end(0, false); } $breadCrumbLinks = array(Zurmo::t('JobsManagerModule', 'JobsManagerModuleSingularLabel', LabelUtil::getTranslationParamsForAllModules()) => array('/jobsManager/default'), Yii::app()->jobQueue->getQueueJobLabel()); $messageLogger = new $messageLoggerClassName(); $queueJobView = new QueueJobView($this->getId(), $this->getModule()->getId(), $type, (int) $delay, $messageLogger); $view = new JobsManagerPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $queueJobView, $breadCrumbLinks, 'SettingsBreadCrumbView')); echo $view->render(); $template = ZurmoHtml::script("\$('#logging-table ol').append('<li>{message}</li>');"); }
/** * Special method to load a campaign with all types of campaignItemActivity */ public function actionLoadCampaignWithAllItemActivityTypes() { if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) { throw new NotSupportedException(); } $emailBox = EmailBoxUtil::getDefaultEmailBoxByUser(Yii::app()->user->userModel); $marketingList = new MarketingList(); $marketingList->name = 'Demo Marketing List'; $marketingList->save(); $campaign = new Campaign(); $campaign->marketingList = $marketingList; $campaign->name = 'Campaign with all campaignItemActivity'; $campaign->subject = 'Demo for all types of campaignItemActivities'; $campaign->status = Campaign::STATUS_COMPLETED; $campaign->sendOnDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $campaign->supportsRichText = true; $campaign->htmlContent = 'Demo content'; $campaign->fromName = 'Zurmo'; $campaign->fromAddress = '*****@*****.**'; $campaign->enableTracking = true; $saved = $campaign->save(); if (!$saved) { throw new FailedToSaveModelException(); } $contacts = Contact::getAll(); //Awaiting queue $contact = $contacts[0]; $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $campaignItem->unrestrictedSave(); //Contact is not subscribed $contact = $contacts[1]; $marketingList->addNewMember($contact->id, true); $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->type = CampaignItemActivity::TYPE_SKIP; $activity->save(); $campaignItem->unrestrictedSave(); //Skipped, both primary and secondary are opted out $contact = $contacts[2]; $contact->primaryEmail->emailAddress = $contact->firstName . '*****@*****.**'; $contact->primaryEmail->optOut = true; $contact->secondaryEmail->emailAddress = $contact->firstName . '*****@*****.**'; $contact->secondaryEmail->optOut = true; $contact->save(); $marketingList->addNewMember($contact->id); $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->type = CampaignItemActivity::TYPE_SKIP; $activity->save(); $campaignItem->unrestrictedSave(); //Skipped, primary is opted out but secondary is not $contact = $contacts[3]; $contact->primaryEmail->emailAddress = $contact->firstName . '*****@*****.**'; $contact->primaryEmail->optOut = true; $contact->secondaryEmail->emailAddress = $contact->firstName . '*****@*****.**'; $contact->secondaryEmail->optOut = false; $contact->save(); $marketingList->addNewMember($contact->id); $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->type = CampaignItemActivity::TYPE_SKIP; $activity->save(); $campaignItem->unrestrictedSave(); //Skipped, primary and secondary not set $contact = $contacts[4]; $contact->primaryEmail = null; $contact->secondaryEmail = null; $contact->save(); $marketingList->addNewMember($contact->id); $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->type = CampaignItemActivity::TYPE_SKIP; $activity->save(); $campaignItem->unrestrictedSave(); //Skipped, primary not set but secondary is set $contact = $contacts[5]; $contact->primaryEmail = null; $contact->secondaryEmail->emailAddress = $contact->firstName . '@zurmo.org'; $contact->secondaryEmail->optOut = false; $contact->save(); $marketingList->addNewMember($contact->id); $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->type = CampaignItemActivity::TYPE_SKIP; $activity->save(); $campaignItem->unrestrictedSave(); //Queued $contact = $contacts[6]; $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->save(); $emailMessage = new EmailMessage(); $emailMessage->setScenario('importModel'); $emailMessage->owner = $contact->owner; $emailMessage->subject = 'Subject'; $emailContent = new EmailMessageContent(); $emailContent->textContent = 'My First Message'; $emailContent->htmlContent = 'Some fake HTML content'; $emailMessage->content = $emailContent; //Sending is current user (super) $sender = new EmailMessageSender(); $sender->fromAddress = '*****@*****.**'; $sender->fromName = 'Zurmo'; $sender->personsOrAccounts->add(Yii::app()->user->userModel); $emailMessage->sender = $sender; //Recipient is BobMessage $recipient = new EmailMessageRecipient(); $recipient->toAddress = '*****@*****.**'; $recipient->toName = strval($contact); $recipient->personsOrAccounts->add($contact); $recipient->type = EmailMessageRecipient::TYPE_TO; $emailMessage->recipients->add($recipient); $emailMessage->folder = EmailFolder::getByBoxAndType($emailBox, EmailFolder::TYPE_OUTBOX); $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->save(); if (!$saved) { throw new FailedToSaveModelException(); } $campaignItem->emailMessage = $emailMessage; $campaignItem->unrestrictedSave(); //Queued with error $contact = $contacts[7]; $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->save(); $emailMessage = new EmailMessage(); $emailMessage->setScenario('importModel'); $emailMessage->owner = $contact->owner; $emailMessage->subject = 'Subject'; $emailContent = new EmailMessageContent(); $emailContent->textContent = 'My First Message'; $emailContent->htmlContent = 'Some fake HTML content'; $emailMessage->content = $emailContent; //Sending is current user (super) $sender = new EmailMessageSender(); $sender->fromAddress = '*****@*****.**'; $sender->fromName = 'Zurmo'; $sender->personsOrAccounts->add(Yii::app()->user->userModel); $emailMessage->sender = $sender; //Recipient is BobMessage $recipient = new EmailMessageRecipient(); $recipient->toAddress = '*****@*****.**'; $recipient->toName = strval($contact); $recipient->personsOrAccounts->add($contact); $recipient->type = EmailMessageRecipient::TYPE_TO; $emailMessage->recipients->add($recipient); $emailMessage->folder = EmailFolder::getByBoxAndType($emailBox, EmailFolder::TYPE_OUTBOX_ERROR); $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->sendAttempts = 2; $emailMessageError = new EmailMessageSendError(); $emailMessageError->serializedData = serialize(array('code' => '0001', 'message' => 'Error Message')); $emailMessage->error = $emailMessageError; $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->save(); if (!$saved) { throw new FailedToSaveModelException(); } $campaignItem->emailMessage = $emailMessage; $campaignItem->unrestrictedSave(); //Failure $contact = $contacts[8]; $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->quantity = 1; $activity->save(); $emailMessage = new EmailMessage(); $emailMessage->setScenario('importModel'); $emailMessage->owner = $contact->owner; $emailMessage->subject = 'Subject'; $emailContent = new EmailMessageContent(); $emailContent->textContent = 'My First Message'; $emailContent->htmlContent = 'Some fake HTML content'; $emailMessage->content = $emailContent; //Sending is current user (super) $sender = new EmailMessageSender(); $sender->fromAddress = '*****@*****.**'; $sender->fromName = 'Zurmo'; $sender->personsOrAccounts->add(Yii::app()->user->userModel); $emailMessage->sender = $sender; //Recipient is BobMessage $recipient = new EmailMessageRecipient(); $recipient->toAddress = '*****@*****.**'; $recipient->toName = strval($contact); $recipient->personsOrAccounts->add($contact); $recipient->type = EmailMessageRecipient::TYPE_TO; $emailMessage->recipients->add($recipient); $emailMessage->folder = EmailFolder::getByBoxAndType($emailBox, EmailFolder::TYPE_OUTBOX_FAILURE); $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->sendAttempts = 3; $emailMessageError = new EmailMessageSendError(); $emailMessageError->serializedData = serialize(array('code' => '0001', 'message' => 'Error Message')); $emailMessage->error = $emailMessageError; $emailMessage->createdDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->save(); if (!$saved) { throw new FailedToSaveModelException(); } $campaignItem->emailMessage = $emailMessage; $campaignItem->unrestrictedSave(); //Sent, open, click, bounce $contact = $contacts[9]; $campaignItem = new CampaignItem(); $campaignItem->processed = true; $campaignItem->campaign = $campaign; $campaignItem->contact = $contact; $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->type = CampaignItemActivity::TYPE_CLICK; $activity->quantity = rand(1, 50); $activity->latestDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + rand(100, 1000)); $activity->latestSourceIP = '10.11.12.13'; $activity->save(); $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->type = CampaignItemActivity::TYPE_OPEN; $activity->quantity = rand(1, 50); $activity->latestDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + rand(100, 1000)); $activity->latestSourceIP = '10.11.12.13'; $activity->save(); $activity = new CampaignItemActivity(); $activity->person = $contact; $activity->campaignItem = $campaignItem; $activity->type = CampaignItemActivity::TYPE_BOUNCE; $activity->quantity = rand(1, 50); $activity->latestDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + rand(100, 1000)); $activity->latestSourceIP = '10.11.12.13'; $activity->save(); $emailMessage = new EmailMessage(); $emailMessage->setScenario('importModel'); $emailMessage->owner = $contact->owner; $emailMessage->subject = 'Subject'; $emailContent = new EmailMessageContent(); $emailContent->textContent = 'My First Message'; $emailContent->htmlContent = 'Some fake HTML content'; $emailMessage->content = $emailContent; //Sending is current user (super) $sender = new EmailMessageSender(); $sender->fromAddress = '*****@*****.**'; $sender->fromName = 'Zurmo'; $sender->personsOrAccounts->add(Yii::app()->user->userModel); $emailMessage->sender = $sender; //Recipient is BobMessage $recipient = new EmailMessageRecipient(); $recipient->toAddress = '*****@*****.**'; $recipient->toName = strval($contact); $recipient->personsOrAccounts->add($contact); $recipient->type = EmailMessageRecipient::TYPE_TO; $emailMessage->recipients->add($recipient); $emailMessage->folder = EmailFolder::getByBoxAndType($emailBox, EmailFolder::TYPE_SENT); $emailMessage->sentDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time()); $emailMessage->save(); if (!$saved) { throw new FailedToSaveModelException(); } $emailMessage->save(); $campaignItem->emailMessage = $emailMessage; $campaignItem->unrestrictedSave(); }