/** * Ensure that sort order and filters in GET params get saved to session correctly */ public function testSessionSettings() { $_SESSION = array(); $_GET['Contacts'] = array('firstName' => 'test', 'lastName' => 'test', 'email' => '*****@*****.**'); $_GET["Contacts_sort"] = 'firstName'; $contact = new Contacts('search'); X2_TEST_DEBUG_LEVEL > 1 && print_r($contact->getAttributes()); $dataProvider = $contact->search(); X2_TEST_DEBUG_LEVEL > 1 && print_r($_SESSION); $sort = $contact->asa('ERememberFiltersBehavior')->getSetting('sort'); $filters = $contact->asa('ERememberFiltersBehavior')->getSetting('filters'); $this->assertEquals($filters, $_GET['Contacts']); $this->assertEquals($sort, $_GET['Contacts_sort']); }
//listId should be either a number (for a list), 'index', or 'admin' //convert numbers to list/# for uniform url path if (is_numeric($listId)) { $path = 'list/' . $listId; } elseif (strpos($listId, '#') === 0) { $tagFlag = true; $path = $listId; } else { $path = $listId; } //try to get the saved sort and filters from the session if applicable /* x2tempstart */ // Violates abstraction by depending on implementation details of SmartDataProviderBehavior and // ERememberFiltersBehavior. $searchModel = new Contacts('search', 'contacts/contacts/' . $path . 'Contacts'); $order = $searchModel->asa('ERememberFiltersBehavior')->getSetting('sort'); /* x2tempend */ //convert session var to sql $order = preg_replace('/\\.desc$/', ' DESC', $order); // ensure that order attribute is valid $orderAttr = preg_replace('/ DESC$/', '', $order); if (!is_string($orderAttr) || !Contacts::model()->hasAttribute(trim($orderAttr))) { $order = ''; } //look up all ids of the list we are currently viewing //find position of model in the list $moduleTitle = Modules::displayName(); // decide which data provider to use if (is_numeric($listId)) { $list = X2Model::model('X2List')->findByPk($listId); if (isset($list)) {