/**
  * 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']);
 }
Beispiel #2
0
//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)) {