<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
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
- * @access protected
*/
public $_formValues;
* The contextMenu
*
* @var array
- * @access protected
*/
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
*/
public $_params;
* The return properties used for search
*
* @var array
- * @access protected
*/
protected $_returnProperties;
/**
- * represent the type of selector
+ * Represent the type of selector
*
* @var int
- * @access protected
*/
protected $_action;
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
*/
protected $_fields;
* @param null $contextMenu
*
* @return CRM_Contact_Selector
- * @access public
*/
function __construct(
$customSearchClass,
$this->_options = &$this->_query->_options;
}
- //end of constructor
/**
* This method returns the links that are given for each search row.
* - Edit
*
* @return array
- * @access public
*
*/
- static function &links() {
+ public static function &links() {
list($context, $contextMenu, $key) = func_get_args();
$extraParams = ($key) ? "&key={$key}" : NULL;
$searchContext = ($context) ? "&context=$context" : NULL;
}
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) {
+ public function getPagerParams($action, &$params) {
$params['status'] = ts('Contact %%StatusMessage%%');
$params['csvString'] = NULL;
$params['rowCount'] = CRM_Utils_Pager::ROWCOUNT;
$params['buttonTop'] = 'PagerTopButton';
$params['buttonBottom'] = 'PagerBottomButton';
}
- //end of function
/**
* @param null $action
*
* @return array
*/
- function &getColHeads($action = NULL, $output = NULL) {
+ public function &getColHeads($action = NULL, $output = NULL) {
$colHeads = self::_getColumnHeaders();
$colHeads[] = array('desc' => ts('Actions'), 'name' => ts('Action'));
return $colHeads;
}
/**
- * 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
* @param enum $output what should the result set include (web/email/csv)
*
* @return array the column headers that need to be displayed
- * @access public
*/
- function &getColumnHeaders($action = NULL, $output = NULL) {
+ public function &getColumnHeaders($action = NULL, $output = NULL) {
$headers = NULL;
// unset return property elements that we don't care
}
if ($output == CRM_Core_Selector_Controller::EXPORT) {
- $csvHeaders = array(ts('Contact Id'), ts('Contact Type'));
+ $csvHeaders = array(ts('Contact ID'), ts('Contact Type'));
foreach ($this->getColHeads($action, $output) as $column) {
if (array_key_exists('name', $column)) {
$csvHeaders[] = $column['name'];
* @param
*
* @return int Total number of rows
- * @access public
*/
- function getTotalCount($action) {
+ public function getTotalCount($action) {
// Use count from cache during paging/sorting
if (!empty($_GET['crmPID']) || !empty($_GET['crmSID'])) {
$count = CRM_Core_BAO_Cache::getItem('Search Results Count', $this->_key);
}
/**
- * 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
*
* @return int the total number of rows for this action
*/
- function &getRows($action, $offset, $rowCount, $sort, $output = NULL) {
+ public function &getRows($action, $offset, $rowCount, $sort, $output = NULL) {
$config = CRM_Core_Config::singleton();
if (($output == CRM_Core_Selector_Controller::EXPORT ||
}
/**
- * @param $sort
+ * @param CRM_Utils_Sort $sort
*
* @return string
*/
- function buildPrevNextCache($sort) {
+ public 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);
/**
* @param $rows
*/
- function addActions(&$rows) {
+ public function addActions(&$rows) {
$config = CRM_Core_Config::singleton();
$permissions = array(CRM_Core_Permission::getPermission());
'name' => ts('View'),
'url' => 'civicrm/contact/view',
'qs' => 'reset=1&cid=%%id%%',
+ 'class' => 'no-popup',
'title' => ts('View Contact Details'),
),
array(
/**
* @param $rows
*/
- function removeActions(&$rows) {
+ public function removeActions(&$rows) {
foreach ($rows as $rid => & $rValue) {
unset($rValue['contact_type']);
unset($rValue['action']);
}
/**
- * @param object $sort
+ * @param CRM_Utils_Sort $sort
* @param string $cacheKey
* @param int $start
* @param int $end
*/
- function fillupPrevNextCache($sort, $cacheKey, $start = 0, $end = 500) {
+ public function fillupPrevNextCache($sort, $cacheKey, $start = 0, $end = 500) {
$coreSearch = TRUE;
// For custom searches, use the contactIDs method
if (is_a($this, 'CRM_Contact_Selector_Custom')) {
*
* @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) {
+ public function rebuildPreNextCache($start, $end, $sort, $cacheKey) {
// generate full SQL
$sql = $this->_query->searchQuery($start, $end, $sort, FALSE, $this->_query->_includeContactIds,
FALSE, FALSE, TRUE);
reference) $formValues submitted formValues
*
* @return array $qill which contains an array of strings
- * @access public
*/
// the current internationalisation is bad, but should more or less work
}
/**
- * name of export file.
+ * Name of export file.
*
* @param string $output type of output
*
* @return string name of the file
*/
- function getExportFileName($output = 'csv') {
+ public function getExportFileName($output = 'csv') {
return ts('CiviCRM Contact Search');
}
/**
- * get colunmn headers for search selector
+ * Get colunmn headers for search selector
*
*
* @return array $_columnHeaders
- * @access private
*/
private static function &_getColumnHeaders() {
if (!isset(self::$_columnHeaders)) {
/**
* @return CRM_Contact_BAO_Query
*/
- function &getQuery() {
+ public function &getQuery() {
return $this->_query;
}
/**
* @return CRM_Contact_DAO_Contact
*/
- function alphabetQuery() {
+ public function alphabetQuery() {
return $this->_query->searchQuery(NULL, NULL, NULL, FALSE, FALSE, TRUE);
}
/**
- * @param $params
+ * @param array $params
* @param $action
- * @param $sortID
+ * @param int $sortID
* @param null $displayRelationshipType
* @param string $queryOperator
*
* @return CRM_Contact_DAO_Contact
*/
- function contactIDQuery($params, $action, $sortID, $displayRelationshipType = NULL, $queryOperator = 'AND') {
+ public function contactIDQuery($params, $action, $sortID, $displayRelationshipType = NULL, $queryOperator = 'AND') {
$sortOrder = &$this->getSortOrder($this->_action);
$sort = new CRM_Utils_Sort($sortOrder, $sortID);
*
* @return array
*/
- function &makeProperties(&$returnProperties) {
+ public function &makeProperties(&$returnProperties) {
$properties = array();
foreach ($returnProperties as $name => $value) {
if ($name != 'location') {
return $properties;
}
}
-//end of class
-