public function testCanSetRollUpForNewAccountLatestActivitiesForPortletView() { LatestActivitiesUtil::setPersistentConfigForCurrentUserByPortletIdAndKey(static::$accountLatestActivitiesPortletId, static::CONFIG_KEY, ''); $this->assertTrue(LatestActivitiesUtil::getPersistentConfigForCurrentUserByPortletIdAndKey(static::$accountLatestActivitiesPortletId, static::CONFIG_KEY) === ''); LatestActivitiesUtil::setPersistentConfigForCurrentUserByPortletIdAndKey(static::$accountLatestActivitiesPortletId, static::CONFIG_KEY, '1'); $this->assertTrue(LatestActivitiesUtil::getPersistentConfigForCurrentUserByPortletIdAndKey(static::$accountLatestActivitiesPortletId, static::CONFIG_KEY) === '1'); }
protected function getDataProvider($uniquePageId, $form) { assert('is_string($uniquePageId)'); assert('$form instanceOf LatestActivitiesConfigurationForm'); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('subListPageSize'); $filteredMashableModelClassNames = LatestActivitiesUtil::resolveMashableModelClassNamesByFilteredBy(array_keys($form->mashableModelClassNamesAndDisplayLabels), $form->filteredByModelName); $modelClassNamesAndSearchAttributeData = LatestActivitiesUtil::getSearchAttributesDataByModelClassNamesAndRelatedItemIds($filteredMashableModelClassNames, array(), $form->ownedByFilter); $modelClassNamesAndSortAttributes = LatestActivitiesUtil::getSortAttributesByMashableModelClassNames($filteredMashableModelClassNames); return new RedBeanModelsDataProvider($uniquePageId, $modelClassNamesAndSortAttributes, true, $modelClassNamesAndSearchAttributeData, array('pagination' => array('pageSize' => $pageSize))); }
public function testGetCountByModelClassName() { $super = User::getByUsername('super'); $user = UserTestHelper::createBasicUserWithEmailAddress('newUser'); Yii::app()->user->userModel = $super; $this->assertEquals(0, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL)); $this->assertEquals(0, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_USER)); $this->assertEquals(0, LatestActivitiesUtil::getCountByModelClassName('Note', array(), $super->id)); $this->assertEquals(0, LatestActivitiesUtil::getCountByModelClassName('Note', array(), $user->id)); NoteTestHelper::createNoteByNameForOwner('test1', $super); $this->assertEquals(1, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL)); $this->assertEquals(1, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_USER)); $this->assertEquals(1, LatestActivitiesUtil::getCountByModelClassName('Note', array(), $super->id)); $this->assertEquals(0, LatestActivitiesUtil::getCountByModelClassName('Note', array(), $user->id)); NoteTestHelper::createNoteByNameForOwner('test1', $user); $this->assertEquals(2, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL)); $this->assertEquals(1, LatestActivitiesUtil::getCountByModelClassName('Note', array(), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_USER)); $this->assertEquals(1, LatestActivitiesUtil::getCountByModelClassName('Note', array(), $user->id)); }
/** * For each dupeModel add total ammount of Notes, Tasks, Emails and Meetings * @param $chart */ protected function resolveDataForChart(&$chart) { $notes = array('category' => NotesModule::getModuleLabelByTypeAndLanguage('Plural')); $tasks = array('category' => TasksModule::getModuleLabelByTypeAndLanguage('Plural')); $emails = array('category' => EmailMessagesModule::getModuleLabelByTypeAndLanguage('Plural')); $meetings = array('category' => MeetingsModule::getModuleLabelByTypeAndLanguage('Plural')); foreach ($this->dupeModels as $dupeModel) { $itemId = $dupeModel->getClassId('Item'); $notes['model-' . $dupeModel->id] = LatestActivitiesUtil::getCountByModelClassName('Note', array($itemId), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL); $tasks['model-' . $dupeModel->id] = LatestActivitiesUtil::getCountByModelClassName('Task', array($itemId), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL); $emails['model-' . $dupeModel->id] = LatestActivitiesUtil::getCountByModelClassName('EmailMessage', array($itemId), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL); $meetings['model-' . $dupeModel->id] = LatestActivitiesUtil::getCountByModelClassName('Meeting', array($itemId), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL); } $chart->data = array($notes, $tasks, $emails, $meetings); }
/** * Process copy email activity. * * @param RedBeanModel $primaryModel * @param RedBeanModel $selectedModel */ public static function processCopyEmailActivity($primaryModel, $selectedModel) { $searchAttributesData = LatestActivitiesUtil::getSearchAttributesDataByModelClassNamesAndRelatedItemIds(array('EmailMessage'), array($selectedModel->getClassId('Item')), LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL); $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter('EmailMessage'); $where = RedBeanModelDataProvider::makeWhere('EmailMessage', $searchAttributesData[0]['EmailMessage'], $joinTablesAdapter); $models = EmailMessage::getSubset($joinTablesAdapter, null, null, $where, null); if (isset($searchAttributesData[1]['EmailMessage'])) { $where = RedBeanModelDataProvider::makeWhere('EmailMessage', $searchAttributesData[1]['EmailMessage'], $joinTablesAdapter); $models = array_merge($models, EmailMessage::getSubset($joinTablesAdapter, null, null, $where, null)); } foreach ($models as $model) { //Resolve sender if ($model->sender->personsOrAccounts->contains($selectedModel)) { $model->sender->personsOrAccounts->remove($selectedModel); if (!$model->sender->personsOrAccounts->contains($primaryModel)) { $model->sender->personsOrAccounts->add($primaryModel); } } //recipients foreach ($model->recipients as $key => $unused) { if ($model->recipients[$key]->personsOrAccounts->contains($selectedModel)) { $model->recipients[$key]->personsOrAccounts->remove($selectedModel); if (!$model->recipients[$key]->personsOrAccounts->contains($primaryModel)) { $model->recipients[$key]->personsOrAccounts->add($primaryModel); } } } $model->save(); } }
/** * @param string $uniquePageId * @param LatestActivitiesConfigurationForm $form * @return RedBeanModelsDataProvider */ protected function getDataProvider($uniquePageId, $form) { assert('is_string($uniquePageId)'); assert('$form instanceOf LatestActivitiesConfigurationForm'); $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('subListPageSize'); $filteredMashableModelClassNames = LatestActivitiesUtil::resolveMashableModelClassNamesByFilteredBy(array_keys($form->mashableModelClassNamesAndDisplayLabels), $form->filteredByModelName); $relationItemId = (int) $this->params['relationModel']->getClassId('Item'); if ($form->rollup) { $relationItemsIds = ModelRollUpUtil::getItemIdsByModelAndUser($this->params['relationModel'], Yii::app()->user->userModel); } else { $relationItemsIds = array($relationItemId); } $modelClassNamesAndSearchAttributeData = LatestActivitiesUtil::getSearchAttributesDataByModelClassNamesAndRelatedItemIds($filteredMashableModelClassNames, $relationItemsIds, $form->ownedByFilter); $modelClassNamesAndSortAttributes = LatestActivitiesUtil::getSortAttributesByMashableModelClassNames($filteredMashableModelClassNames); return new RedBeanModelsDataProvider($uniquePageId, $modelClassNamesAndSortAttributes, true, $modelClassNamesAndSearchAttributeData, array('pagination' => array('pageSize' => $pageSize))); }
public static function processBeforeDelete($portletId) { foreach (static::$persistantUserPortletConfigs as $persistantUserConfigItem) { $property = static::resolvePropertyName($persistantUserConfigItem); if (method_exists(get_called_class(), $property) && static::$property()) { LatestActivitiesUtil::setPersistentConfigForCurrentUserByPortletIdAndKey($portletId, $persistantUserConfigItem, null); } } }
public function testResolveMashableModelClassNamesByFilteredBy() { Yii::app()->user->userModel = User::getByUsername('super'); $mashableModelClassNames = array('Meeting', 'Task', 'Note'); $filteredModelClassNames = LatestActivitiesUtil::resolveMashableModelClassNamesByFilteredBy($mashableModelClassNames, LatestActivitiesConfigurationForm::FILTERED_BY_ALL); $this->assertEquals($mashableModelClassNames, $filteredModelClassNames); $filteredModelClassNames = LatestActivitiesUtil::resolveMashableModelClassNamesByFilteredBy($mashableModelClassNames, 'Task'); $this->assertEquals(array('Task'), $filteredModelClassNames); }