public function indexAction()
 {
     /* @var $request \Zend\Http\Request */
     $request = $this->getRequest();
     $ps = new \Product\Model\Store();
     $ps->setServiceLocator($this->getServiceLocator());
     if (in_array($this->getServiceLocator()->get('Store\\Service\\Store')->getStoreId(), [66, 224, 81])) {
         $ps->setCategoryBaseId(12);
         // @todo fixed attrCategoryId for default store
     }
     $variables = $ps->prepareSearch();
     $page = (int) $request->getQuery('page', 1);
     $icpp = (int) $request->getQuery('icpp', 20);
     $order = urldecode($request->getQuery('order', 'id desc'));
     $options = array('page' => $page > 0 ? $page : 1, 'icpp' => $icpp > 0 ? $icpp > 100 ? 100 : $icpp : 20, 'order' => strlen($order) > 0 ? $order : 'id desc');
     /* @var $mapper \Product\Model\StoreMapper */
     $mapper = $this->getServiceLocator()->get('Product\\Model\\StoreMapper');
     $paginator = $mapper->search($ps, $options);
     $viewModel = new ViewModel();
     // switch to json view mode
     if ($request->getQuery('format') == 'json') {
         $products = array();
         foreach ($paginator as $p) {
             /* @var $p \Product\Model\Store */
             $products[] = $p->toStd();
         }
         return new JsonModel(array('products' => $products, 'maxPage' => count($paginator), 'totalProduct' => $paginator->getTotalItemCount()));
     }
     if ($request->getPost('template')) {
         $viewModel->setTemplate($request->getPost('template'));
         $viewModel->setTerminal($request->getPost('terminal', false));
     }
     $viewModel->setVariables(array('paginator' => $paginator, 'query' => urldecode($request->getQuery('q')), 'order' => urldecode($request->getQuery('order'))));
     $viewModel->setVariables($variables);
     return $viewModel;
 }