title: Error in vqcache file OpenCart
body: <p>I have an OpenCart installation, and I have just enabled SEO URLs, and installed the SEO Pack, however, when clicking on a category, I get this error:</p>
  
  <p>Parse error: syntax error, unexpected ',', expecting ')' in ../shop/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 214</p>
  
  <p>Not sure what to do, have attached the PHP file for reference if this helps.</p>
  
  <pre><code>&lt;?php 
  class ControllerProductCategory extends Controller {  
  public function index() { 
      $this-&gt;language-&gt;load('product/category');
  
      $this-&gt;load-&gt;model('catalog/category');
  
      $this-&gt;load-&gt;model('catalog/product');
  
      $this-&gt;load-&gt;model('tool/image'); 
  
      if (isset($this-&gt;request-&gt;get['sort'])) {
          $sort = $this-&gt;request-&gt;get['sort'];
      } else {
          $sort = 'p.sort_order';
      }
  
      if (isset($this-&gt;request-&gt;get['order'])) {
          $order = $this-&gt;request-&gt;get['order'];
      } else {
          $order = 'ASC';
      }
  
      if (isset($this-&gt;request-&gt;get['page'])) {
          $page = $this-&gt;request-&gt;get['page'];
      } else { 
          $page = 1;
      }   
  
      if (isset($this-&gt;request-&gt;get['limit'])) {
          $limit = $this-&gt;request-&gt;get['limit'];
      } else {
          $limit = $this-&gt;config-&gt;get('config_catalog_limit');
      }
  
      $this-&gt;data['breadcrumbs'] = array();
  
      $this-&gt;data['breadcrumbs'][] = array(
          'text'      =&gt; $this-&gt;language-&gt;get('text_home'),
          'href'      =&gt; $this-&gt;url-&gt;link('common/home'),
          'separator' =&gt; false
      );  
  
      if (isset($this-&gt;request-&gt;get['path'])) {
          $path = '';
  
          $parts = explode('_', (string)$this-&gt;request-&gt;get['path']);
  
          foreach ($parts as $path_id) {
              if (!$path) {
                  $path = (int)$path_id;
              } else {
                  $path .= '_' . (int)$path_id;
              }
  
              $category_info = $this-&gt;model_catalog_category-&gt;getCategory($path_id);
  
              if ($category_info) {
                  $this-&gt;data['breadcrumbs'][] = array(
                      'text'      =&gt; $category_info['name'],
                      'href'      =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $path),
                      'separator' =&gt; $this-&gt;language-&gt;get('text_separator')
                  );
              }
          }       
  
          $category_id = (int)array_pop($parts);
      } else {
          $category_id = 0;
      }
  
      $category_info = $this-&gt;model_catalog_category-&gt;getCategory($category_id);
  
      if ($category_info) {
          $this-&gt;document-&gt;setTitle($category_info['name']);
          $this-&gt;document-&gt;setDescription($category_info['meta_description']);
          $this-&gt;document-&gt;setKeywords($category_info['meta_keyword']);
  
          $this-&gt;data['heading_title'] = $category_info['name'];
  
          $this-&gt;data['text_refine'] = $this-&gt;language-&gt;get('text_refine');
          $this-&gt;data['text_stock'] = $this-&gt;language-&gt;get('text_stock');
          $this-&gt;data['text_instock'] = $this-&gt;language-&gt;get('text_instock');
          $this-&gt;data['text_empty'] = $this-&gt;language-&gt;get('text_empty');         
          $this-&gt;data['text_quantity'] = $this-&gt;language-&gt;get('text_quantity');
          $this-&gt;data['text_manufacturer'] = $this-&gt;language-&gt;get('text_manufacturer');
          $this-&gt;data['text_model'] = $this-&gt;language-&gt;get('text_model');
          $this-&gt;data['text_price'] = $this-&gt;language-&gt;get('text_price');
          $this-&gt;data['text_tax'] = $this-&gt;language-&gt;get('text_tax');
          $this-&gt;data['text_points'] = $this-&gt;language-&gt;get('text_points');
          $this-&gt;data['text_compare'] = sprintf($this-&gt;language-&gt;get('text_compare'), (isset($this-&gt;session-&gt;data['compare']) ? count($this-&gt;session-&gt;data['compare']) : 0));
          $this-&gt;data['text_display'] = $this-&gt;language-&gt;get('text_display');
          $this-&gt;data['text_list'] = $this-&gt;language-&gt;get('text_list');
          $this-&gt;data['text_grid'] = $this-&gt;language-&gt;get('text_grid');
          $this-&gt;data['text_sort'] = $this-&gt;language-&gt;get('text_sort');
          $this-&gt;data['text_limit'] = $this-&gt;language-&gt;get('text_limit');
  
          $this-&gt;data['button_cart'] = $this-&gt;language-&gt;get('button_cart');
          $this-&gt;data['button_wishlist'] = $this-&gt;language-&gt;get('button_wishlist');
          $this-&gt;data['button_compare'] = $this-&gt;language-&gt;get('button_compare');
          $this-&gt;data['button_continue'] = $this-&gt;language-&gt;get('button_continue');
  
          if ($category_info['image']) {
              $this-&gt;data['thumb'] = $this-&gt;model_tool_image-&gt;resize($category_info['image'], $this-&gt;config-&gt;get('config_image_category_width'), $this-&gt;config-&gt;get('config_image_category_height'));
          } else {
              $this-&gt;data['thumb'] = '';
          }
  
          $this-&gt;data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
          $this-&gt;data['compare'] = $this-&gt;url-&gt;link('product/compare');
  
          $url = '';
  
          if (isset($this-&gt;request-&gt;get['sort'])) {
              $url .= '&amp;sort=' . $this-&gt;request-&gt;get['sort'];
          }   
  
          if (isset($this-&gt;request-&gt;get['order'])) {
              $url .= '&amp;order=' . $this-&gt;request-&gt;get['order'];
          }   
  
          if (isset($this-&gt;request-&gt;get['limit'])) {
              $url .= '&amp;limit=' . $this-&gt;request-&gt;get['limit'];
          }
  
          $this-&gt;data['categories'] = array();
  
          $results = $this-&gt;model_catalog_category-&gt;getCategories($category_id);
  
          foreach ($results as $result) {
              $data = array(
                  'filter_category_id'  =&gt; $result['category_id'],
                  'filter_sub_category' =&gt; true
              );
  
              $product_total = $this-&gt;model_catalog_product-&gt;getTotalProducts($data);             
  
              $this-&gt;data['categories'][] = array(
                  'name'  =&gt; $result['name'] . ($this-&gt;config-&gt;get('config_product_count') ? ' (' . $product_total . ')' : ''),
                  'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '_' . $result['category_id'] . $url)
              );
          }
  
          $this-&gt;data['products'] = array();
  
          $data = array(
              'filter_category_id' =&gt; $category_id, 
              'sort'               =&gt; $sort,
              'order'              =&gt; $order,
              'start'              =&gt; ($page - 1) * $limit,
              'limit'              =&gt; $limit
          );
  
          $product_total = $this-&gt;model_catalog_product-&gt;getTotalProducts($data); 
  
          $results = $this-&gt;model_catalog_product-&gt;getProducts($data);
  
          foreach ($results as $result) {
              if ($result['image']) {
                  $image = $this-&gt;model_tool_image-&gt;resize($result['image'], $this-&gt;config-&gt;get('config_image_product_width'), $this-&gt;config-&gt;get('config_image_product_height'));
              } else {
                  $image = false;
              }
  
              if (($this-&gt;config-&gt;get('config_customer_price') &amp;&amp; $this-&gt;customer-&gt;isLogged()) || !$this-&gt;config-&gt;get('config_customer_price')) {
                  $price = $this-&gt;currency-&gt;format($this-&gt;tax-&gt;calculate($result['price'], $result['tax_class_id'], $this-&gt;config-&gt;get('config_tax')));
              } else {
                  $price = false;
              }
  
              if ((float)$result['special']) {
                  $special = $this-&gt;currency-&gt;format($this-&gt;tax-&gt;calculate($result['special'], $result['tax_class_id'], $this-&gt;config-&gt;get('config_tax')));
              } else {
                  $special = false;
              }   
  
              if ($this-&gt;config-&gt;get('config_tax')) {
                  $tax = $this-&gt;currency-&gt;format((float)$result['special'] ? $result['special'] : $result['price']);
              } else {
                  $tax = false;
              }               
  
              if ($this-&gt;config-&gt;get('config_review_status')) {
                  $rating = (int)$result['rating'];
              } else {
                  $rating = false;
              }
              if ($result['quantity'] &lt;= 0) {
                  $rstock = $result['stock_status'];
              } elseif ($this-&gt;config-&gt;get('config_stock_display')) {
                  $rstock = "Stoc: " . $result['quantity'];
              } else {
              $rstock = "In stock";
              }
  
  
  
  $stock_status = $result['stock_status'];
  $stock_qty = $result['quantity'];
              $this-&gt;data['products'][] = array(
  
      'quantity' =&gt; $result['quantity'], 'stock' =&gt; $result['stock_status'], 'model' =&gt; $result['model'],
                  'product_id'  =&gt; $result['product_id'],
                  'thumb'       =&gt; $image,
                  'name'        =&gt; $result['name'],
                  'description' =&gt; utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
                  'price'       =&gt; $price,
                  'quantity'    =&gt; $result['quantity'],
                  'stock_status'=&gt; $result['stock_status'],
                  'special'     =&gt; $special,
                  'tax'         =&gt; $tax,
                  'rating'      =&gt; $result['rating'],
                  'stock_status'       =&gt; $stock_status,
                  'stock_qty'       =&gt; $stock_qty,
                  'reviews'     =&gt; sprintf($this-&gt;language-&gt;get('text_reviews'), (int)$result['reviews']),
                  'href'        =&gt; $this-&gt;url-&gt;link('product/product', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;product_id=' . $result['product_id'])
              );
          }
  
          $url = '';
  
          if (isset($this-&gt;request-&gt;get['limit'])) {
              $url .= '&amp;limit=' . $this-&gt;request-&gt;get['limit'];
          }
  
          $this-&gt;data['sorts'] = array();
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_default'),
              'value' =&gt; 'p.sort_order-ASC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=p.sort_order&amp;order=ASC' . $url)
          );
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_name_asc'),
              'value' =&gt; 'pd.name-ASC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=pd.name&amp;order=ASC' . $url)
          );
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_name_desc'),
              'value' =&gt; 'pd.name-DESC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=pd.name&amp;order=DESC' . $url)
          );
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_price_asc'),
              'value' =&gt; 'p.price-ASC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=p.price&amp;order=ASC' . $url)
          ); 
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_price_desc'),
              'value' =&gt; 'p.price-DESC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=p.price&amp;order=DESC' . $url)
          ); 
  
          if ($this-&gt;config-&gt;get('config_review_status')) {
              $this-&gt;data['sorts'][] = array(
                  'text'  =&gt; $this-&gt;language-&gt;get('text_rating_desc'),
                  'value' =&gt; 'rating-DESC',
                  'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=rating&amp;order=DESC' . $url)
              ); 
  
              $this-&gt;data['sorts'][] = array(
                  'text'  =&gt; $this-&gt;language-&gt;get('text_rating_asc'),
                  'value' =&gt; 'rating-ASC',
                  'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=rating&amp;order=ASC' . $url)
              );
          }
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_model_asc'),
              'value' =&gt; 'p.model-ASC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=p.model&amp;order=ASC' . $url)
          );
  
          $this-&gt;data['sorts'][] = array(
              'text'  =&gt; $this-&gt;language-&gt;get('text_model_desc'),
              'value' =&gt; 'p.model-DESC',
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . '&amp;sort=p.model&amp;order=DESC' . $url)
          );
  
          $url = '';
  
          if (isset($this-&gt;request-&gt;get['sort'])) {
              $url .= '&amp;sort=' . $this-&gt;request-&gt;get['sort'];
          }   
  
          if (isset($this-&gt;request-&gt;get['order'])) {
              $url .= '&amp;order=' . $this-&gt;request-&gt;get['order'];
          }
  
          $this-&gt;data['limits'] = array();
  
          $this-&gt;data['limits'][] = array(
              'text'  =&gt; $this-&gt;config-&gt;get('config_catalog_limit'),
              'value' =&gt; $this-&gt;config-&gt;get('config_catalog_limit'),
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;limit=' . $this-&gt;config-&gt;get('config_catalog_limit'))
          );
  
          $this-&gt;data['limits'][] = array(
              'text'  =&gt; 25,
              'value' =&gt; 25,
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;limit=25')
          );
  
          $this-&gt;data['limits'][] = array(
              'text'  =&gt; 50,
              'value' =&gt; 50,
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;limit=50')
          );
  
          $this-&gt;data['limits'][] = array(
              'text'  =&gt; 75,
              'value' =&gt; 75,
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;limit=75')
          );
  
          $this-&gt;data['limits'][] = array(
              'text'  =&gt; 100,
              'value' =&gt; 100,
              'href'  =&gt; $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;limit=100')
          );
  
          $url = '';
  
          if (isset($this-&gt;request-&gt;get['sort'])) {
              $url .= '&amp;sort=' . $this-&gt;request-&gt;get['sort'];
          }   
  
          if (isset($this-&gt;request-&gt;get['order'])) {
              $url .= '&amp;order=' . $this-&gt;request-&gt;get['order'];
          }
  
          if (isset($this-&gt;request-&gt;get['limit'])) {
              $url .= '&amp;limit=' . $this-&gt;request-&gt;get['limit'];
          }
  
          $pagination = new Pagination();
          $pagination-&gt;total = $product_total;
          $pagination-&gt;page = $page;
          $pagination-&gt;limit = $limit;
          $pagination-&gt;text = $this-&gt;language-&gt;get('text_pagination');
          $pagination-&gt;url = $this-&gt;url-&gt;link('product/category', 'path=' . $this-&gt;request-&gt;get['path'] . $url . '&amp;page={page}');
  
          $this-&gt;data['pagination'] = $pagination-&gt;render();
  
          $this-&gt;data['sort'] = $sort;
          $this-&gt;data['order'] = $order;
          $this-&gt;data['limit'] = $limit;
  
          $this-&gt;data['continue'] = $this-&gt;url-&gt;link('common/home');
  
          if (file_exists(DIR_TEMPLATE . $this-&gt;config-&gt;get('config_template') . '/template/product/category.tpl')) {
              $this-&gt;template = $this-&gt;config-&gt;get('config_template') . '/template/product/category.tpl';
          } else {
              $this-&gt;template = 'default/template/product/category.tpl';
          }
  
          $this-&gt;children = array(
              'common/column_left',
              'common/column_right',
              'common/content_top',
              'common/content_bottom',
              'common/footer',
              'common/header'
          );
  
          $this-&gt;response-&gt;setOutput($this-&gt;render());                                        
      } else {
          $url = '';
  
          if (isset($this-&gt;request-&gt;get['path'])) {
              $url .= '&amp;path=' . $this-&gt;request-&gt;get['path'];
          }
  
          if (isset($this-&gt;request-&gt;get['sort'])) {
              $url .= '&amp;sort=' . $this-&gt;request-&gt;get['sort'];
          }   
  
          if (isset($this-&gt;request-&gt;get['order'])) {
              $url .= '&amp;order=' . $this-&gt;request-&gt;get['order'];
          }
  
          if (isset($this-&gt;request-&gt;get['page'])) {
              $url .= '&amp;page=' . $this-&gt;request-&gt;get['page'];
          }
  
          if (isset($this-&gt;request-&gt;get['limit'])) {
              $url .= '&amp;limit=' . $this-&gt;request-&gt;get['limit'];
          }
  
          $this-&gt;data['breadcrumbs'][] = array(
              'text'      =&gt; $this-&gt;language-&gt;get('text_error'),
              'href'      =&gt; $this-&gt;url-&gt;link('product/category', $url),
              'separator' =&gt; $this-&gt;language-&gt;get('text_separator')
          );
  
          $this-&gt;document-&gt;setTitle($this-&gt;language-&gt;get('text_error'));
  
          $this-&gt;data['heading_title'] = $this-&gt;language-&gt;get('text_error');
  
          $this-&gt;data['text_error'] = $this-&gt;language-&gt;get('text_error');
  
          $this-&gt;data['button_continue'] = $this-&gt;language-&gt;get('button_continue');
  
          $this-&gt;data['continue'] = $this-&gt;url-&gt;link('common/home');
  
          if (file_exists(DIR_TEMPLATE . $this-&gt;config-&gt;get('config_template') . '/template/error/not_found.tpl')) {
              $this-&gt;template = $this-&gt;config-&gt;get('config_template') . '/template/error/not_found.tpl';
          } else {
              $this-&gt;template = 'default/template/error/not_found.tpl';
          }
  
          $this-&gt;children = array(
              'common/column_left',
              'common/column_right',
              'common/content_top',
              'common/content_bottom',
              'common/footer',
              'common/header'
          );
  
          $this-&gt;response-&gt;setOutput($this-&gt;render());
      }
  }
    }
  ?&gt;
  </code></pre>
  
  <p>The shop in concern is <a href="http://www.luof.co.uk/shop" rel="nofollow">http://www.luof.co.uk/shop</a></p>
  
  <p>Thanks.</p>