public function testGetItemIdsByModelAndUser() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $headquarters = Account::getByName('Headquarters'); $headquarters = $headquarters[0]; $division1 = Account::getByName('Division1'); $division1 = $division1[0]; $division2 = Account::getByName('Division2'); $division2 = $division2[0]; $ceo = Contact::getByName('ceo ceoson'); $ceo = $ceo[0]; $div1President = Contact::getByName('div1 President div1 Presidentson'); $div1President = $div1President[0]; $div2President = Contact::getByName('div2 President div2 Presidentson'); $div2President = $div2President[0]; $opportunity = Opportunity::getByName('big opp'); $opportunity = $opportunity[0]; $opportunityDiv1 = Opportunity::getByName('div1 small opp'); $opportunityDiv1 = $opportunityDiv1[0]; $opportunityDiv2 = Opportunity::getByName('div2 small opp'); $opportunityDiv2 = $opportunityDiv2[0]; //Headquarter rollup should include all items created so far. $this->assertEquals(2, $headquarters->accounts->count()); $itemIds = ModelRollUpUtil::getItemIdsByModelAndUser($headquarters, $super); $compareItemIds = array(); $this->assertEquals(9, count($itemIds)); $this->assertTrue(in_array($headquarters->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($division1->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($division2->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($ceo->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($div1President->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($div2President->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunity->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunityDiv1->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunityDiv2->getClassId('Item'), $itemIds)); //Ceo rollup would only include the ceo and his opportunity $itemIds = ModelRollUpUtil::getItemIdsByModelAndUser($ceo, $super); $compareItemIds = array(); $this->assertEquals(2, count($itemIds)); $this->assertTrue(in_array($ceo->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunity->getClassId('Item'), $itemIds)); //Big Opp rollup will only include big opp and ceo $itemIds = ModelRollUpUtil::getItemIdsByModelAndUser($opportunity, $super); $compareItemIds = array(); $this->assertEquals(2, count($itemIds)); $this->assertTrue(in_array($ceo->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunity->getClassId('Item'), $itemIds)); //Division 1 rollup will only include things related to division 1 $itemIds = ModelRollUpUtil::getItemIdsByModelAndUser($division1, $super); $compareItemIds = array(); $this->assertEquals(3, count($itemIds)); $this->assertTrue(in_array($division1->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($div1President->getClassId('Item'), $itemIds)); $this->assertTrue(in_array($opportunityDiv1->getClassId('Item'), $itemIds)); }
/** * @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))); }