X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FSelector.php;h=b0190e3d4718831559e4ddb9be7d9779c4533de9;hb=2cbe2b82e752a963f102442193b3be1932f6546b;hp=7c9b3b6beca0955939143bffc2b8ba1670e94c49;hpb=21d6054c91709c945d48ddd5dcd890317f204278;p=civicrm-core.git diff --git a/CRM/Contact/Selector.php b/CRM/Contact/Selector.php index 7c9b3b6bec..b0190e3d47 100644 --- a/CRM/Contact/Selector.php +++ b/CRM/Contact/Selector.php @@ -50,7 +50,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 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 @@ -72,7 +72,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se ); /** - * 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 @@ -89,7 +89,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 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 @@ -105,7 +105,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se protected $_returnProperties; /** - * represent the type of selector + * Represent the type of selector * * @var int * @access protected @@ -117,14 +117,14 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 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 @@ -220,7 +220,6 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $this->_options = &$this->_query->_options; } - //end of constructor /** * This method returns the links that are given for each search row. @@ -299,15 +298,13 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } 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) { @@ -318,7 +315,6 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $params['buttonTop'] = 'PagerTopButton'; $params['buttonBottom'] = 'PagerBottomButton'; } - //end of function /** * @param null $action @@ -333,7 +329,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } /** - * 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 @@ -358,7 +354,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } 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']; @@ -507,7 +503,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } /** - * 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 @@ -825,19 +821,41 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } /** - * @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); @@ -888,6 +906,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 'name' => ts('View'), 'url' => 'civicrm/contact/view', 'qs' => 'reset=1&cid=%%id%%', + 'class' => 'no-popup', 'title' => ts('View Contact Details'), ), array( @@ -966,7 +985,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } /** - * @param object $sort + * @param CRM_Utils_Sort $sort * @param string $cacheKey * @param int $start * @param int $end @@ -1028,10 +1047,9 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont * * @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) { @@ -1074,7 +1092,7 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont } /** - * name of export file. + * Name of export file. * * @param string $output type of output * @@ -1085,7 +1103,7 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont } /** - * get colunmn headers for search selector + * Get colunmn headers for search selector * * * @return array $_columnHeaders @@ -1162,9 +1180,9 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont } /** - * @param $params + * @param array $params * @param $action - * @param $sortID + * @param int $sortID * @param null $displayRelationshipType * @param string $queryOperator * @@ -1237,5 +1255,4 @@ SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', cont return $properties; } } -//end of class