|
ZenCart_Documentation
1.5.0
http://www.collinsharper.com
|
00001 <?php 00010 class splitPageResults { 00011 function splitPageResults(&$current_page_number, $max_rows_per_page, &$sql_query, &$query_num_rows) { 00012 global $db; 00013 00014 if ($max_rows_per_page == 0) $max_rows_per_page = 20; 00015 $sql_query = preg_replace("/\n\r|\r\n|\n|\r/", " ", $sql_query); 00016 00017 if (empty($current_page_number)) $current_page_number = 1; 00018 $current_page_number = (int)$current_page_number; 00019 00020 $pos_to = strlen($sql_query); 00021 00022 $query_lower = strtolower($sql_query); 00023 $pos_from = strpos($query_lower, ' from', 0); 00024 00025 $pos_distinct_start = strpos($query_lower, ' distinct', 0); 00026 $pos_distinct_end = strpos(substr($query_lower, $pos_distinct_start), ',', 0); 00027 00028 $pos_group_by = strpos($query_lower, ' group by', $pos_from); 00029 if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by; 00030 00031 $pos_having = strpos($query_lower, ' having', $pos_from); 00032 if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having; 00033 00034 $pos_order_by = strpos($query_lower, ' order by', $pos_from); 00035 if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by; 00036 00037 $sql = ($pos_distinct_start == 0) ? "select count(*) as total " : "select count(distinct " . substr($sql_query, $pos_distinct_start+9, $pos_distinct_end-9) . ") as total "; 00038 $sql .= substr($sql_query, $pos_from, ($pos_to - $pos_from)); 00039 $reviews_count = $db->Execute($sql); 00040 00041 $query_num_rows = $reviews_count->fields['total']; 00042 00043 if ($max_rows_per_page == '') $max_rows_per_page = $query_num_rows; 00044 if ($query_num_rows == 0) $max_rows_per_page = 1; 00045 $num_pages = ceil($query_num_rows / $max_rows_per_page); 00046 if ($current_page_number > $num_pages) { 00047 $current_page_number = $num_pages; 00048 } 00049 $offset = ($max_rows_per_page * ($current_page_number - 1)); 00050 00051 // fix offset error on some versions 00052 if ($offset < 0) { $offset = 0; } 00053 00054 $sql_query .= " limit " . $offset . ", " . $max_rows_per_page; 00055 } 00056 00057 function display_links($query_numrows, $max_rows_per_page, $max_page_links, $current_page_number, $parameters = '', $page_name = 'page') { 00058 global $PHP_SELF; 00059 $current_page_number = (int)$current_page_number; 00060 if ( zen_not_null($parameters) && (substr($parameters, -1) != '&') ) $parameters .= '&'; 00061 if ($max_rows_per_page == 0) $max_rows_per_page = 20; 00062 if ($query_numrows == 0) return ''; 00063 00064 // calculate number of pages needing links 00065 if ($max_rows_per_page == '' || $max_rows_per_page == 0) $max_rows_per_page = $query_numrows; 00066 $num_pages = ceil($query_numrows / $max_rows_per_page); 00067 00068 $pages_array = array(); 00069 for ($i=1; $i<=$num_pages; $i++) { 00070 $pages_array[] = array('id' => $i, 'text' => $i); 00071 } 00072 00073 if ($num_pages > 1) { 00074 $display_links = zen_draw_form('pages', basename($PHP_SELF), '', 'get'); 00075 00076 if ($current_page_number > 1) { 00077 $display_links .= '<a href="' . zen_href_link(basename($PHP_SELF), $parameters . $page_name . '=' . ($current_page_number - 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_PREV . '</a> '; 00078 } else { 00079 $display_links .= PREVNEXT_BUTTON_PREV . ' '; 00080 } 00081 00082 $display_links .= sprintf(TEXT_RESULT_PAGE, zen_draw_pull_down_menu($page_name, $pages_array, $current_page_number, 'onChange="this.form.submit();"'), $num_pages); 00083 00084 if (($current_page_number < $num_pages) && ($num_pages != 1)) { 00085 $display_links .= ' <a href="' . zen_href_link(basename($PHP_SELF), $parameters . $page_name . '=' . ($current_page_number + 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_NEXT . '</a>'; 00086 } else { 00087 $display_links .= ' ' . PREVNEXT_BUTTON_NEXT; 00088 } 00089 00090 if ($parameters != '') { 00091 if (substr($parameters, -1) == '&') $parameters = substr($parameters, 0, -1); 00092 $pairs = explode('&', $parameters); 00093 while (list(, $pair) = each($pairs)) { 00094 list($key,$value) = explode('=', $pair); 00095 $display_links .= zen_draw_hidden_field(rawurldecode($key), rawurldecode($value)); 00096 } 00097 } 00098 00099 if (SID) $display_links .= zen_draw_hidden_field(zen_session_name(), zen_session_id()); 00100 00101 $display_links .= '</form>'; 00102 } else { 00103 $display_links = sprintf(TEXT_RESULT_PAGE, $num_pages, $num_pages); 00104 } 00105 00106 return $display_links; 00107 } 00108 00109 function display_count($query_numrows, $max_rows_per_page, $current_page_number, $text_output) { 00110 $current_page_number = (int)$current_page_number; 00111 if ($max_rows_per_page == 0) $max_rows_per_page = 20; 00112 if ($max_rows_per_page == '') $max_rows_per_page = $query_numrows; 00113 $to_num = ($max_rows_per_page * $current_page_number); 00114 if ($to_num > $query_numrows) $to_num = $query_numrows; 00115 $from_num = ($max_rows_per_page * ($current_page_number - 1)); 00116 if ($to_num == 0) { 00117 $from_num = 0; 00118 } else { 00119 $from_num++; 00120 } 00121 00122 return sprintf($text_output, $from_num, $to_num, $query_numrows); 00123 } 00124 }