예제 #1
0
 /**
  * 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'));
 }
예제 #2
0
 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();
         }
     }
 }
예제 #3
0
 public function actionLoadMassDeleteDemoData()
 {
     if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) {
         throw new NotSupportedException();
     }
     UserInterfaceDevelopmentUtil::makeMassDeleteData();
 }
예제 #4
0
 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();
     }
 }
예제 #5
0
 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>";
 }
예제 #6
0
 /**
  * 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;
 }
예제 #7
0
 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();
         }
     }
 }
예제 #8
0
 /**
  * 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();
         }
     }
 }
예제 #9
0
 /**
  * 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();
         }
     }
 }
예제 #10
0
 /**
  * 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.";
 }
예제 #11
0
 /**
  * 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();
         }
     }
 }
예제 #12
0
 /**
  * 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();
         }
     }
 }
예제 #13
0
 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;
 }
예제 #14
0
 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();
 }
예제 #15
0
 /**
  * @return bool
  * @throws NotSupportedException
  */
 public function isSuperAdministrator()
 {
     if ($this->id < 0) {
         throw new NotSupportedException();
     }
     return Group::isUserASuperAdministrator($this);
 }
예제 #16
0
 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();');
 }
예제 #17
0
 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>');");
 }
예제 #20
0
 /**
  * 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();
 }