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);
         }
     }
 }
Exemplo n.º 8
0
 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);
 }