00001 <?php
00015 if (elgg_in_context('widget')) {
00016
00017 return true;
00018 }
00019
00020 $offset = abs((int) elgg_extract('offset', $vars, 0));
00021
00022 if (!$limit = (int) elgg_extract('limit', $vars, 10)) {
00023 $limit = 10;
00024 }
00025
00026 $count = (int) elgg_extract('count', $vars, 0);
00027 $offset_key = elgg_extract('offset_key', $vars, 'offset');
00028
00029 if (isset($vars['base_url']) && $vars['base_url']) {
00030 $base_url = $vars['base_url'];
00031 } else if (isset($vars['baseurl']) && $vars['baseurl']) {
00032 elgg_deprecated_notice("Use 'base_url' instead of 'baseurl' for the navigation/pagination view", 1.8);
00033 $base_url = $vars['baseurl'];
00034 } else {
00035 $base_url = current_page_url();
00036 }
00037
00038 $num_pages = elgg_extract('num_pages', $vars, 10);
00039 $delta = ceil($num_pages / 2);
00040
00041 if ($count <= $limit && $offset == 0) {
00042
00043 return true;
00044 }
00045
00046 $total_pages = ceil($count / $limit);
00047 $current_page = ceil($offset / $limit) + 1;
00048
00049 $pages = new stdClass();
00050 $pages->prev = array(
00051 'text' => '« ' . elgg_echo('previous'),
00052 'href' => '',
00053 'is_trusted' => true,
00054 );
00055 $pages->next = array(
00056 'text' => elgg_echo('next') . ' »',
00057 'href' => '',
00058 'is_trusted' => true,
00059 );
00060 $pages->items = array();
00061
00062
00063 if ($current_page > 1) {
00064 $prev_offset = $offset - $limit;
00065 if ($prev_offset < 0) {
00066 $prev_offset = 0;
00067 }
00068
00069 $pages->prev['href'] = elgg_http_add_url_query_elements($base_url, array($offset_key => $prev_offset));
00070
00071 $first_page = $current_page - $delta;
00072 if ($first_page < 1) {
00073 $first_page = 1;
00074 }
00075
00076 $pages->items = range($first_page, $current_page - 1);
00077 }
00078
00079
00080 $pages->items[] = $current_page;
00081
00082
00083
00084 if ($current_page < $total_pages) {
00085 $next_offset = $offset + $limit;
00086 if ($next_offset >= $count) {
00087 $next_offset--;
00088 }
00089
00090 $pages->next['href'] = elgg_http_add_url_query_elements($base_url, array($offset_key => $next_offset));
00091
00092 $last_page = $current_page + $delta;
00093 if ($last_page > $total_pages) {
00094 $last_page = $total_pages;
00095 }
00096
00097 $pages->items = array_merge($pages->items, range($current_page + 1, $last_page));
00098 }
00099
00100
00101 echo '<ul class="elgg-pagination">';
00102
00103 if ($pages->prev['href']) {
00104 $link = elgg_view('output/url', $pages->prev);
00105 echo "<li>$link</li>";
00106 } else {
00107 echo "<li class=\"elgg-state-disabled\"><span>{$pages->prev['text']}</span></li>";
00108 }
00109
00110 foreach ($pages->items as $page) {
00111 if ($page == $current_page) {
00112 echo "<li class=\"elgg-state-selected\"><span>$page</span></li>";
00113 } else {
00114 $page_offset = (($page - 1) * $limit);
00115 $url = elgg_http_add_url_query_elements($base_url, array($offset_key => $page_offset));
00116 $link = elgg_view('output/url', array(
00117 'href' => $url,
00118 'text' => $page,
00119 'is_trusted' => true,
00120 ));
00121 echo "<li>$link</li>";
00122 }
00123 }
00124
00125 if ($pages->next['href']) {
00126 $link = elgg_view('output/url', $pages->next);
00127 echo "<li>$link</li>";
00128 } else {
00129 echo "<li class=\"elgg-state-disabled\"><span>{$pages->next['text']}</span></li>";
00130 }
00131
00132 echo '</ul>';