sql_query = preg_replace("/\n\r|\r\n|\n|\r/", " ", $query);
if ($countQuery != "") $countQuery = preg_replace("/\n\r|\r\n|\n|\r/", " ", $countQuery);
$this->countQuery = ($countQuery != "") ? $countQuery : $this->sql_query;
$this->page_name = $page_holder;
if ($debug) {
echo '
';
echo 'original_query=' . $query . '
';
echo 'original_count_query=' . $countQuery . '
';
echo 'sql_query=' . $this->sql_query . '
';
echo 'count_query=' . $this->countQuery . '
';
}
if (isset($_GET[$page_holder])) {
$page = $_GET[$page_holder];
} elseif (isset($_POST[$page_holder])) {
$page = $_POST[$page_holder];
} else {
$page = '';
}
if (empty($page) || !is_numeric($page)) $page = 1;
$this->current_page_number = $page;
$this->number_of_rows_per_page = $max_rows;
$pos_to = strlen($this->countQuery);
$query_lower = strtolower($this->countQuery);
$pos_from = strpos($query_lower, ' from', 0);
$pos_group_by = strpos($query_lower, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;
$pos_having = strpos($query_lower, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;
$pos_order_by = strrpos($query_lower, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;
if (strpos($query_lower, 'distinct') || strpos($query_lower, 'group by')) {
$count_string = 'distinct ' . zen_db_input($count_key);
} else {
$count_string = zen_db_input($count_key);
}
$count_query = "select count(" . $count_string . ") as total " . substr($this->countQuery, $pos_from, ($pos_to - $pos_from));
if ($debug) {
echo 'count_query=' . $count_query . '
';
}
$count = $db->Execute($count_query);
$this->number_of_rows = $count->fields['total'];
$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page);
if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
}
$offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
// fix offset error on some versions
if ($offset <= 0) { $offset = 0; }
$this->sql_query .= " limit " . ($offset > 0 ? $offset . ", " : '') . $this->number_of_rows_per_page;
}
/* class functions */
// display split-page-number-links
function display_links($max_page_links, $parameters = '', $outputAsUnorderedList = false, $navElementLabel = '') {
global $request_type;
if ($max_page_links == '') $max_page_links = 1;
if ($this->number_of_pages <= 1) return;
$display_links_string = $ul_elements = '';
$counter_actual_page_links = 0;
$class = '';
if (zen_not_null($parameters) && (substr($parameters, -1) != '&') && ($this->current_page_number > 1)) $parameters .= '&';
// previous button - not displayed on first page
$link = '' . PREVNEXT_BUTTON_PREV . '';
if ($this->current_page_number > 1) {
$display_links_string .= $link . ' ';
$ul_elements .= '