/** * returns registry data of PersistentFilter. * * @return array */ public static function getAllPersistentFilters() { if (Tinebase_Core::isRegistered(Tinebase_Core::USER)) { $obj = new Tinebase_Frontend_Json_PersistentFilter(); // return only filters of activated apps $applicationIds = Tinebase_Application::getInstance()->getApplicationsByState(Tinebase_Application::ENABLED)->getArrayOfIds(); return $obj->searchPersistentFilter(array(array('field' => 'account_id', 'operator' => 'equals', 'value' => Tinebase_Core::getUser()->getId()), array('field' => 'application_id', 'operator' => 'in', 'value' => $applicationIds)), NULL); } }
/** * testFilterResolving * * -> relations should not be resolved here! */ public function testFilterResolving() { $contact1 = Addressbook_Controller_Contact::getInstance()->create(new Addressbook_Model_Contact(array('n_family' => 'test heini'))); $contactWithRelations = array('n_family' => 'test typ', 'relations' => array(array('own_model' => 'Addressbook_Model_Contact', 'own_backend' => 'Sql', 'own_id' => 0, 'own_degree' => Tinebase_Model_Relation::DEGREE_SIBLING, 'type' => '', 'related_backend' => 'Sql', 'related_id' => $contact1->getId(), 'related_model' => 'Addressbook_Model_Contact', 'remark' => NULL))); $contact2 = Addressbook_Controller_Contact::getInstance()->create(new Addressbook_Model_Contact($contactWithRelations)); $exampleFilterData = self::getPersistentFilterData(); $exampleFilterData['filters'] = array(array('field' => 'foreignRecord', 'operator' => 'AND', 'value' => array('appName' => 'Addressbook', 'modelName' => 'Contact', 'linkType' => 'relation', 'filters' => array(array('field' => ':id', 'operator' => 'equals', 'value' => $contact2->getId()))))); $savedFilterData = $this->_uit->savePersistentFilter($exampleFilterData); $filterData = array(array('field' => 'model', 'operator' => 'equals', 'value' => 'Tasks_Model_TaskFilter'), array('field' => 'id', 'operator' => 'equals', 'value' => $savedFilterData['id'])); $searchResult = $this->_uit->searchPersistentFilter($filterData, NULL); $this->assertEquals(1, $searchResult['totalcount']); $this->assertTrue(isset($searchResult['results'][0]['filters'][0]['value']['filters'][0]['value'])); $filterContact = $searchResult['results'][0]['filters'][0]['value']['filters'][0]['value']; $this->assertTrue(!isset($filterContact['relations']), 'relations should not be resolved:' . print_r($filterContact, true)); }
/** * returns registry data of PersistentFilter. * * @return array */ public static function getAllPersistentFilters() { if (Tinebase_Core::isRegistered(Tinebase_Core::USER)) { $obj = new Tinebase_Frontend_Json_PersistentFilter(); // return only filters of activated apps $applicationIds = Tinebase_Application::getInstance()->getApplicationsByState(Tinebase_Application::ENABLED)->getArrayOfIds(); $filterArray = array(array('field' => 'account_id', 'operator' => 'equals', 'value' => Tinebase_Core::getUser()->getId()), array('field' => 'application_id', 'operator' => 'in', 'value' => $applicationIds)); if (Tinebase_Core::isLogLevel(Zend_Log::INFO)) { Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Fetching all filters of user ' . Tinebase_Core::getUser()->accountLoginName); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($filterArray, true)); } return $obj->searchPersistentFilter($filterArray, NULL); } return array(); }
/** * testSearchIncludesSharedFavorites */ public function testSearchIncludesSharedFavorites() { $sharedFavorite = self::getPersitentFilter(); $sharedFavorite->name = 'PHPUnit shared filter'; $sharedFavorite->account_id = NULL; $backend = new Tinebase_PersistentFilter_Backend_Sql(); $persistentSharedFavirite = $backend->create($sharedFavorite); $exampleFilterData = self::getPersistentFilterData(); $savedFilterData = $this->testSaveFilter($exampleFilterData); $filterData = array(array('field' => 'model', 'operator' => 'equals', 'value' => 'Tasks_Model_TaskFilter'), array('field' => 'name', 'operator' => 'startswith', 'value' => 'PHPUnit')); $searchResult = $this->_uit->searchPersistentFilter($filterData, NULL); $this->assertGreaterThanOrEqual(2, $searchResult['totalcount']); $ids = array(); foreach ($searchResult['results'] as $filterData) { $ids[] = $filterData['id']; } $this->assertEquals(2, count(array_intersect($ids, array($persistentSharedFavirite->getId(), $savedFilterData['id'])))); }
/** * try to search timesheets with saved persistent filter id * * @todo move this test to tinebase json tests? */ public function testSearchTimesheetsWithPersistentFilter() { $persistentFiltersJson = new Tinebase_Frontend_Json_PersistentFilter(); $tsFilter = $this->_getTimesheetFilter(); // create $filterName = Tinebase_Record_Abstract::generateUID(); $persistentFiltersJson->savePersistentFilter(array('application_id' => Tinebase_Application::getInstance()->getApplicationById('Timetracker')->getId(), 'filters' => $tsFilter, 'name' => $filterName, 'model' => 'Timetracker_Model_TimesheetFilter')); $timesheet = $this->_getTimesheet(); $timesheetData = $this->_json->saveTimesheet($timesheet->toArray()); // search persistent filter $persistentFilters = $persistentFiltersJson->searchPersistentFilter($this->_getPersistentFilterFilter($filterName), NULL); //check $search = $this->_json->searchTimesheets($persistentFilters['results'][0]['id'], $this->_getPaging()); $this->assertEquals($timesheet->description, $search['results'][0]['description']); $this->assertEquals('array', gettype($search['results'][0]['timeaccount_id']), 'timeaccount_id is not resolved'); $this->assertEquals('array', gettype($search['results'][0]['account_id']), 'account_id is not resolved'); $this->assertEquals(1, $search['totalcount']); $this->assertEquals(30, $search['totalsum']); $this->assertEquals($tsFilter, $search['filter'], 'filters do not match'); // cleanup / delete file $persistentFiltersJson->deletePersistentFilters($persistentFilters['results'][0]['id']); }