public static function drawPaginator($search_counter, $url_parameters, $data_as_list_count) { $objects = RealEstateAgency_Const::OBJECTS_ON_PAGE; $navigation = ""; if ($objects >= $search_counter) { return ""; // no paginator; } $search_position = $url_parameters[search_position]; $pages = floor(($search_counter + $objects) / $objects); $page = floor($search_position / $objects); // first page = 0; //echo ("((( {" . $search_position . "} " . $pages . " " . $page . ")))"); $numbers = array($page - 100, $page - 50, $page - 10, $page - 2, $page - 1, $page, $page + 1, $page + 2, $page + 10, $page + 50, $page + 100); $max = 0; $min = $pages - 1; foreach ($numbers as $i => $value) { if ($value < 0 || $value >= $pages) { $numbers[$i] = NULL; } else { if ($max < $value) { $max = $value; } if ($min > $value) { $min = $value; } } } //echo (" min = $min max = $max "); if (0 < $min) { array_unshift($numbers, 0); } if ($pages - 1 > $max) { array_push($numbers, $pages - 1); } //foreach ($numbers as $i => $value) { //echo "{ $i - $value } "; //} $previous = 0; $link = NULL; foreach ($numbers as $i => $value) { if ($value !== NULL) { $link = RealEstateAgency_Object_SearchPaginator::page($page, $pages, $url_parameters, $value); if ($link) { if ($previous >= 0 and $value > $previous + 1) { $navigation .= "......."; } $navigation .= $link; } $previous = $value; } } if ($navigation != "") { $navigation = "Сторінка: " . $navigation; } return $navigation; }
echo tools_endTag_a(); } echo '</td>'; } echo "</tr>\n"; } ?> <?php $colspan = 11; if (1 == $this->op_type) { $colspan = 12; } $url_parameters = array('page' => $this->page, 'op_type' => $this->op_type, 'search_position' => $this->search_position); $navigation = RealEstateAgency_Object_SearchPaginator::drawPaginator($search_counter, $url_parameters, $data_as_list_count); ?> <?php if ($navigation) { ?> <tr> <td style="text-align: left; height: 2.0em;" colspan="<?php echo $colspan; ?> " > <?php echo $navigation; ?> </td>