Example #1
0
 public function testMergeMetada()
 {
     $firstMetadata = null;
     $secondMetadata = null;
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals($mergedMetadata['clauses'], array());
     $this->assertEquals($mergedMetadata['structure'], null);
     $firstMetadata = array('clauses' => array(1 => 'testClause1'), 'structure' => '1');
     $secondMetadata = null;
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals(array(1 => 'testClause1'), $mergedMetadata['clauses']);
     $this->assertEquals('1', $mergedMetadata['structure']);
     $firstMetadata = null;
     $secondMetadata = array('clauses' => array(1 => 'testClause1'), 'structure' => '1');
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals($mergedMetadata['clauses'], array(1 => 'testClause1'));
     $this->assertEquals($mergedMetadata['structure'], '1');
     $firstMetadata = array('clauses' => array(1 => 'testClause1'), 'structure' => '1');
     $secondMetadata = array('clauses' => array(1 => 'testClause1ForSecondMetadata'), 'structure' => '1');
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals(array(1 => 'testClause1', 2 => 'testClause1ForSecondMetadata'), $mergedMetadata['clauses']);
     $this->assertEquals('(1) and (2)', $mergedMetadata['structure']);
     $firstMetadata = array('clauses' => array(1 => 'testClause1', 2 => 'testClause2', 3 => 'testClause3'), 'structure' => '1 and (2 or 3)');
     $secondMetadata = array('clauses' => array(1 => 'testClause1ForSecondMetadata', 2 => 'testClause2ForSecondMetadata'), 'structure' => '1 and 2');
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata, false);
     $this->assertEquals($mergedMetadata['clauses'], array(1 => 'testClause1', 2 => 'testClause2', 3 => 'testClause3', 4 => 'testClause1ForSecondMetadata', 5 => 'testClause2ForSecondMetadata'));
     $this->assertEquals($mergedMetadata['structure'], '(1 and (2 or 3)) or (4 and 5)');
     $firstMetadata = array('clauses' => array(1 => 'testClause1'), 'structure' => '1');
     $secondMetadata = array('clauses' => array(1 => 'testClause1ForSecondMetadata'), 'structure' => '1');
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals(array(1 => 'testClause1', 2 => 'testClause1ForSecondMetadata'), $mergedMetadata['clauses']);
     $this->assertEquals('(1) and (2)', $mergedMetadata['structure']);
     $firstMetadata = array('clauses' => array(1 => 'testClause1'), 'structure' => '1');
     $secondMetadata = array('clauses' => array(1 => 'testClause1ForSecondMetadata', 2 => 'testClause2ForSecondMetadata', 3 => 'testClause3ForSecondMetadata', 4 => 'testClause4ForSecondMetadata'), 'structure' => '((1 and 2) or (3 and 4))');
     $mergedMetadata = MashableUtil::mergeMetadata($firstMetadata, $secondMetadata);
     $this->assertEquals(array(1 => 'testClause1', 2 => 'testClause1ForSecondMetadata', 3 => 'testClause2ForSecondMetadata', 4 => 'testClause3ForSecondMetadata', 5 => 'testClause4ForSecondMetadata'), $mergedMetadata['clauses']);
     $this->assertEquals('(1) and (((2 and 3) or (4 and 5)))', $mergedMetadata['structure']);
 }
Example #2
0
 public function getListView($option, $filteredBy = MashableInboxForm::FILTERED_BY_ALL, $searchTerm = null, $starred = false)
 {
     $modelClassName = $this->getModelClassName();
     $orderBy = $this->getMachableInboxOrderByAttributeName();
     $pageSize = Yii::app()->pagination->resolveActiveForCurrentUserByType('listPageSize', get_class(Yii::app()->controller->module));
     $metadataByOptionAndFilter = MashableUtil::mergeMetadata($this->getMetadataFilteredByOption($option), $this->getMetadataFilteredByFilteredBy($filteredBy));
     $metadata = MashableUtil::mergeMetadata($metadataByOptionAndFilter, $this->getSearchAttributeData($searchTerm));
     $dataProviderClassName = 'RedBeanModelDataProvider';
     if ($starred) {
         $dataProviderClassName = 'StarredModelDataProvider';
     }
     $dataProvider = RedBeanModelDataProviderUtil::makeDataProvider($metadata, $modelClassName, $dataProviderClassName, $orderBy, true, $pageSize);
     $listViewClassName = $this->getListViewClassName();
     $listView = new $listViewClassName(Yii::app()->controller->id, Yii::app()->controller->module->id, $modelClassName, $dataProvider, array());
     return $listView;
 }