Jonathan Green
12 years ago
2 changed files with 64 additions and 61 deletions
@ -0,0 +1,62 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* Setups the globals for the Drupal pager. |
||||
* |
||||
* Does just what it says: Hacks the default Drupal pager such that it might |
||||
* be rendered, likely with: theme('pager', array(), $per_page, $pager_name) |
||||
* (I reccomend seeing the real documentation for more detail, but the first |
||||
* array can be a list of the tags to use for first, previous, next and last |
||||
* (text in the pager), I don't believe per_page is actually used in the theme |
||||
* function, and $pager_name is an integer used to identify the pager (such |
||||
* that there can be more than one--that is, tracking different lists of |
||||
* content on a single page. You can render the exact same pager multiple |
||||
* times, say if you want one at the top and bottom of a list, using the same |
||||
* ID/pager_name. |
||||
* |
||||
* @global $pager_total array |
||||
* Numerically indexed array, where keys are the $pager_names and values |
||||
* are the number of pages in the given set, based on: ceil($total_items/$per_page); |
||||
* @global $pager_page_array array |
||||
* Numerically indexed array, where keys are the $pager_names and values |
||||
* are the page selected in the relevant set. |
||||
* @param $pager_name int |
||||
* An integer to identify the pager to affect. Do note that paging in using |
||||
* this function will add the 'page' HTTP GET parameter to the URL, with |
||||
* the value containing a comma-separated list with max($pager_name + 1) |
||||
* values--that is, if you create a single pager named '10', the 'next' |
||||
* link will look something like: 0,0,0,0,0,0,0,0,0,0,1 |
||||
* @param $per_page int |
||||
* An integer representing the number of items per page. |
||||
* @param $total_items int |
||||
* An integer representing the total number of items in the set. |
||||
* @return int |
||||
* An integer representing what the current page should be. |
||||
*/ |
||||
function fedora_repository_setup_pager($pager_name, $per_page = NULL, $total_items = NULL) { |
||||
global $pager_total, $pager_page_array; |
||||
|
||||
if ($per_page !== NULL && $total_items !== NULL) { |
||||
$pager_total[$pager_name] = ceil($total_items / $per_page); |
||||
} |
||||
|
||||
//XXX: Don't know that this is neccessary, to try to load all the time, or |
||||
// whether Drupal will load it automatically somewhere... Docs seems a |
||||
// a little sparse. |
||||
$page_info = explode(',', isset($_GET['page']) ? $_GET['page'] : ''); |
||||
$page = $page_info[$pager_name]; |
||||
if ($page < 0) { |
||||
$page = 0; |
||||
} |
||||
|
||||
if (!isset($pager_page_array)) { |
||||
$pager_page_array = pager_load_array($page, $pager_name, $page_info); |
||||
} |
||||
else { |
||||
$pager_page_array = pager_load_array($page, $pager_name, $pager_page_array); |
||||
} |
||||
|
||||
$page = $pager_page_array[$pager_name]; |
||||
return $page; |
||||
} |
||||
|
Loading…
Reference in new issue