ZenCart_Documentation  1.5.0
http://www.collinsharper.com
C:/xampp/htdocs/zen-cart/admin/includes/classes/split_page_results.php
Go to the documentation of this file.
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>&nbsp;&nbsp;';
00078         } else {
00079           $display_links .= PREVNEXT_BUTTON_PREV . '&nbsp;&nbsp;';
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 .= '&nbsp;&nbsp;<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 .= '&nbsp;&nbsp;' . 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   }
 All Data Structures Namespaces Files Functions Variables Enumerations