/** * @depends testSavePortlet */ public function testSaveCollectionUsingDefaultMetadata() { $user = User::getByUserName('billy'); $params = array('test' => 'test'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('abc', $user->id, $params); $this->assertEmpty($portlets); $defaultMetadata = array('global' => array('columns' => array(array('rows' => array(array('type' => 'RssReader'), array('type' => 'RssReader'))), array('rows' => array(array('type' => 'RssReader'), array('type' => 'RssReader')))))); $portletCollection = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition('abc', $defaultMetadata, $user, $params); $this->assertNotEmpty($portletCollection); $testCount = 0; foreach ($portletCollection as $column => $columns) { foreach ($columns as $position => $portlet) { $testCount++; } } $this->assertEquals($testCount, 4); Portlet::savePortlets($portletCollection); $portletCollection = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition('abc', $user->id, $params); $this->assertNotEmpty($portletCollection); $testCount = 0; foreach ($portletCollection as $column => $columns) { foreach ($columns as $position => $portlet) { $this->assertEquals($portlet->params, $params); $testCount++; } } $this->assertEquals($testCount, 4); }
/** * Override to allow for making a default set of portlets * via metadata optional. * */ protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, $this->params); if (empty($portlets) && $this->isDefaultDashboard) { $portlets = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($uniqueLayoutId, $metadata, Yii::app()->user->userModel, $this->params); Portlet::savePortlets($portlets); } return PortletsSecurityUtil::resolvePortletsForCurrentUser($portlets); }
protected function getPortlets($uniqueLayoutId, $metadata) { assert('is_string($uniqueLayoutId)'); assert('is_array($metadata)'); $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, Yii::app()->user->userModel->id, $this->params); if (empty($portlets)) { $portlets = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($uniqueLayoutId, $metadata, Yii::app()->user->userModel, $this->params); Portlet::savePortlets($portlets); } return $portlets; }
public function testPushLayoutToUsers() { $super = Yii::app()->user->userModel; //Make and Get Five Users $users = UserTestHelper::generateBasicUsers(5); $this->assertEquals(5, count($users)); //Remove first portlet from Super's ContactDetailsAndRelationsView $defaultLayoutId = 'Contact' . PushDashboardUtil::DETAILS_AND_RELATIONS_VIEW; $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); if (empty($defaultPortlets)) { $metadata = ContactDetailsAndRelationsView::getDefaultMetadata(); $portletCollection = Portlet::makePortletsUsingMetadataSortedByColumnIdAndPosition($defaultLayoutId, $metadata, $super, null); $this->assertNotEmpty($portletCollection); Portlet::savePortlets($portletCollection); $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); } $this->assertTrue(count($defaultPortlets) > 0); foreach ($defaultPortlets as $portlet) { $portlet->delete(); break; } $defaultPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $super->id); $deafultPortletViews = array(); foreach ($defaultPortlets as $portlet) { $deafultPortletViews[] = $portlet->viewType; } //Push super's default ContactDetailsAndRelationsView to five users $userIds = array(); foreach ($users as $user) { $userIds[] = $user->id; } $groupsAndUsers = array(); $groupsAndUsers['groups'] = array(); $groupsAndUsers['users'] = $userIds; PushDashboardUtil::pushLayoutToUsers(new Contact(false), $groupsAndUsers); //Validate portlets of five user's ContactDetailsAndRelationsView with super's ContactDetailsAndRelationsView foreach ($users as $user) { $userPortlets = Portlet::getByLayoutIdAndUserSortedById($defaultLayoutId, $user->id); $this->assertEquals(count($defaultPortlets), count($userPortlets)); foreach ($userPortlets as $portlet) { $this->assertTrue(in_array($portlet->viewType, $deafultPortletViews)); } } }