<modification>
    <id>category prev and next</id>
    <version>0.1</version>
    <vqmver>2.1.2</vqmver>
    <author>jimmyphong</author>

 	<file name="catalog/model/catalog/product.php">
        <operation>
            <search position="before"><![CDATA[public function getTotalProductSpecials() {]]></search>
            <add><![CDATA[
     public function GetNextandPreLink($data = array()){
          $filter = '';
          if (!empty($data['filter_category_id'])) {
                if (!empty($data['filter_sub_category'])) {
                   $implode_data = array();
                   
                   $implode_data[] = "p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
                   
                   $this->load->model('catalog/category');
                   
                   $categories = $this->model_catalog_category->getCategoriesByParentId($data['filter_category_id']);
                                  
                   foreach ($categories as $category_id) {
                      $implode_data[] = "p2c.category_id = '" . (int)$category_id . "'";
                   }
                            
                   $filter .= " AND (" . implode(' OR ', $implode_data) . ")";         
                } else {
                   $filter .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
                }
             }
          $sql1 = "SELECT p.product_id as next,p2d.name next_title FROM ".DB_PREFIX."product p LEFT JOIN ".DB_PREFIX."product_to_category p2c ON(p.product_id = p2c.product_id) LEFT JOIN ".DB_PREFIX."product_description p2d ON(p.product_id = p2d.product_id) LEFT JOIN ".DB_PREFIX."product_to_store p2s ON(p.product_id = p2s.product_id) WHERE p2d.language_id = '".(int)$this->config->get('config_language_id')."' AND p2s.store_id = '".(int)$this->config->get('config_store_id')."' AND p.status = '1' AND p.date_available <= NOW() AND p2d.name > '".$data['product_name']."' AND p.sort_order = '".$data['sort_order']."' ".$filter." ORDER BY p.sort_order ASC, LCASE(p2d.name) ASC LIMIT 1";
          $sql2 = "SELECT p.product_id as prev,p2d.name prev_title FROM ".DB_PREFIX."product p LEFT JOIN ".DB_PREFIX."product_to_category p2c ON(p.product_id = p2c.product_id) LEFT JOIN ".DB_PREFIX."product_description p2d ON(p.product_id = p2d.product_id) LEFT JOIN ".DB_PREFIX."product_to_store p2s ON(p.product_id = p2s.product_id) WHERE p2d.language_id = '".(int)$this->config->get('config_language_id')."' AND p2s.store_id = '".(int)$this->config->get('config_store_id')."' AND p.status = '1' AND p.date_available <= NOW() AND p2d.name < '".$data['product_name']."' AND p.sort_order = '".$data['sort_order']."' ".$filter." ORDER BY p.sort_order DESC, LCASE(p2d.name) DESC LIMIT 1";
          
          $prev = $this->db->query($sql1)->row;
          $next = $this->db->query($sql2)->row;
          $query = array_merge($prev,$next);
          return $query;
          
       }
            ]]></add>
        </operation>
	</file>

	<file name="catalog/controller/product/product.php">
        <operation>
            <search position="after"><![CDATA[$this->model_catalog_product->updateViewed($this->request->get['product_id']);]]></search>
            <add><![CDATA[
    if (isset($this->request->get['path'])) {
                $path = '';
             
                $parts = explode('_', (string)$this->request->get['path']);
             
                foreach ($parts as $path_id) {
                   if (!$path) {
                      $path = $path_id;
                   } else {
                      $path .= '_' . $path_id;
                   }
                }     
         
                $category_id = array_pop($parts);
                $category_link = "&path=".$category_id;
             } else {
                $category_id = 0;
                $category_link = "";
             }
             $data = array(
                'filter_category_id' => $category_id,
                'product_name' => $product_info['name'],
				'sort_order' => $product_info['sort_order']
             );
             
             $results = $this->model_catalog_product->GetNextandPreLink($data);
             
             if(isset($results['next']) && isset($results['next_title'])){
                $this->data['link_next'] = "<a href=".$this->url->link('product/product',$category_link.'&product_id='.$results['next']).">".$results['next_title']." >></a>";
             }else{
                $this->data['link_next'] = null;
             }
             
             
             if(isset($results['prev']) && isset($results['prev_title'])){
                $this->data['link_prev'] = "<a href=".$this->url->link('product/product',$category_link.'&product_id='.$results['prev'])."><< ".$results['prev_title']."</a>";
             }else{
                $this->data['link_prev'] = null;
             }
            ]]></add>
        </operation>
	</file>

	<file name="catalog/view/theme/*/template/product/product.tpl">
        <operation>
            <search position="after"><![CDATA[
  <h1><?php echo $heading_title; ?></h1>
            ]]></search>
            <add><![CDATA[
	<div>
	  <table style="width: 100%; border-collapse: collapse;">
		<tr>
		<td align=left><?php echo $link_prev; ?></td>
		<td align=right><?php echo $link_next; ?></td>
		</tr>
	  </table><br />
	</div>
            ]]></add>
        </operation>
	</file>


</modification>
                