static $_links = NULL;
/**
- * we use desc to remind us what that column is, name is used in the tpl
+ * We use desc to remind us what that column is, name is used in the tpl
*
* @var array
* @static
);
/**
- * formValues is the array returned by exportValues called on
+ * FormValues is the array returned by exportValues called on
* the HTML_QuickForm_Controller for that page.
*
* @var array
protected $_contextMenu;
/**
- * params is the array in a value used by the search query creator
+ * Params is the array in a value used by the search query creator
*
* @var array
* @access protected
protected $_returnProperties;
/**
- * represent the type of selector
+ * Represent the type of selector
*
* @var int
* @access protected
protected $_query;
/**
- * group id
+ * Group id
*
* @var int
*/
protected $_ufGroupID;
/**
- * the public visible fields to be shown to the user
+ * The public visible fields to be shown to the user
*
* @var array
* @access protected
$this->_options = &$this->_query->_options;
}
- //end of constructor
/**
* This method returns the links that are given for each search row.
}
return self::$_links;
}
- //end of function
/**
- * getter for array of the parameters required for creating pager.
+ * Getter for array of the parameters required for creating pager.
*
* @param $action
- * @param $params
+ * @param array $params
*
- * @internal param $
* @access public
*/
function getPagerParams($action, &$params) {
$params['buttonTop'] = 'PagerTopButton';
$params['buttonBottom'] = 'PagerBottomButton';
}
- //end of function
/**
* @param null $action
}
/**
- * returns the column headers as an array of tuples:
+ * Returns the column headers as an array of tuples:
* (name, sortName (key to the sort array))
*
* @param string $action the action being performed
}
/**
- * returns all the rows in the given offset and rowCount
+ * Returns all the rows in the given offset and rowCount
*
* @param enum $action the action being performed
* @param int $offset the row number to start from
}
/**
- * @param $sort
+ * @param CRM_Utils_Sort $sort
*
* @return string
*/
function buildPrevNextCache($sort) {
$cacheKey = 'civicrm search ' . $this->_key;
- // Get current page requested
+ // We should clear the cache in following conditions:
+ // 1. when starting from scratch, i.e new search
+ // 2. if records are sorted
+
+ // get current page requested
$pageNum = CRM_Utils_Request::retrieve('crmPID', 'Integer', CRM_Core_DAO::$_nullObject);
- // When starting from scratch, clear any old cache
- if (!$pageNum) {
+
+ // get the current sort order
+ $currentSortID = CRM_Utils_Request::retrieve('crmSID', 'String', CRM_Core_DAO::$_nullObject);
+
+ $session = CRM_Core_Session::singleton();
+
+ // get previous sort id
+ $previousSortID = $session->get('previousSortID');
+
+ // check for current != previous to ensure cache is not reset if paging is done without changing
+ // sort criteria
+ if (!$pageNum || (!empty($currentSortID) && $currentSortID != $previousSortID) ) {
CRM_Core_BAO_PrevNextCache::deleteItem(NULL, $cacheKey, 'civicrm_contact');
- $pageNum = 1;
+ // this means it's fresh search, so set pageNum=1
+ if (!$pageNum) {
+ $pageNum = 1;
+ }
+ }
+
+ // set the current sort as previous sort
+ if (!empty($currentSortID)) {
+ $session->set('previousSortID', $currentSortID);
}
$pageSize = CRM_Utils_Request::retrieve('crmRowCount', 'Integer', CRM_Core_DAO::$_nullObject, FALSE, 50);
'name' => ts('View'),
'url' => 'civicrm/contact/view',
'qs' => 'reset=1&cid=%%id%%',
+ 'class' => 'no-popup',
'title' => ts('View Contact Details'),
),
array(
}
/**
- * @param object $sort
+ * @param CRM_Utils_Sort $sort
* @param string $cacheKey
* @param int $start
* @param int $end
*
* @param int $start start for limit clause
* @param int $end end for limit clause
- * @param $sort
+ * @param CRM_Utils_Sort $sort
* @param string $cacheKey cache key
*
- * @internal param $object $sort sort object
* @return void
*/
function rebuildPreNextCache($start, $end, $sort, $cacheKey) {
}
/**
- * name of export file.
+ * Name of export file.
*
* @param string $output type of output
*
}
/**
- * get colunmn headers for search selector
+ * Get colunmn headers for search selector
*
*
* @return array $_columnHeaders
}
/**
- * @param $params
+ * @param array $params
* @param $action
- * @param $sortID
+ * @param int $sortID
* @param null $displayRelationshipType
* @param string $queryOperator
*
return $properties;
}
}
-//end of class