Advertisement
ajinfortec

Controle MVC

Oct 31st, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.26 KB | None | 0 0
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. class Controller_Search extends Controller_Base {
  4.  
  5.     public function action_index()
  6.     {
  7.         $query = $this->request->query();
  8.        
  9.         $produtos = ORM::factory('Produto')
  10.                         ->where('titulo', 'LIKE', "%".$query['q']."%")
  11.                         ->where('publicado', '=', 'S')
  12.                         ->where_open()
  13.                         ->where('moderado', '=', 'S')
  14.                         ->or_where('liberado', '=', 'S')
  15.                         ->where_close();                                                    
  16.        
  17.         $datas = Utility::extra_decode(DATAS);        
  18.         if(isset($query['ordem'])){
  19.             switch ($query['ordem']) {
  20.                 case 'mv':
  21.                     $produtos->order_by('vendidos', 'DESC');
  22.                     break;
  23.                 case 'mep':
  24.                     $produtos->order_by('valor_venda_atacado', 'ASC')
  25.                              ->order_by('valor_venda_varejo', 'ASC');
  26.                     break;                
  27.                 case 'map':
  28.                     $produtos->order_by('valor_venda_atacado', 'DESC')
  29.                              ->order_by('valor_venda_varejo', 'DESC');
  30.                     break;  
  31.                 case 'ma':
  32.                     $sql = DB::expr("(SELECT COUNT(*) FROM acessos AS acesso WHERE acesso.produto_id = produto.id AND acesso.ecommerce_id = {$datas['id']})");
  33.                     $produtos->order_by($sql,'DESC');
  34.                     break;                
  35.                 case 'az':                    
  36.                     $produtos->order_by('titulo','ASC');
  37.                     break;                                
  38.                 case 'za':                    
  39.                     $produtos->order_by('titulo','DESC');
  40.                     break;                                                
  41.                 default:
  42.                     $sql = DB::expr("(SELECT COUNT(*) FROM acessos AS acesso WHERE acesso.produto_id = produto.id AND acesso.ecommerce_id = {$datas['id']})");
  43.                     $produtos->order_by(DB::expr('ISNULL(ranking)'))
  44.                              ->order_by('ranking', 'ASC')
  45.                              ->order_by($sql,'DESC');
  46.                     break;
  47.             }
  48.         }else{
  49.             $sql = DB::expr("(SELECT COUNT(*) FROM acessos AS acesso WHERE acesso.produto_id = produto.id AND acesso.ecommerce_id = {$datas['id']})");
  50.             $produtos->order_by(DB::expr('ISNULL(ranking)'))
  51.                      ->order_by('ranking', 'ASC')
  52.                      ->order_by($sql,'DESC');
  53.             $query['ordem'] = 'ma';
  54.         }
  55.        
  56.         $template = View::factory('template');
  57.         $template->header = $this->render_header($query);                                                
  58.        
  59.         $orm = clone $produtos;
  60.        
  61.         $pagination = Pagination::factory(array(
  62.                     'total_items' => $orm->count_all(),
  63.                 )
  64.         );
  65.  
  66.         $pagination->route_params(array(
  67.             'controller' => strtolower($this->request->controller()),
  68.             'action' => $this->request->action()
  69.             )
  70.         );
  71.  
  72.         $produtos = $produtos->offset($pagination->offset)
  73.                              ->limit($pagination->items_per_page)
  74.                              ->find_all();
  75.        
  76.         $breadcrumb = new Breadcrumb();
  77.         $breadcrumb->set(
  78.             array(
  79.                 'url'   => URL::site(),
  80.                 'label' => 'Início da Loja'
  81.                 )
  82.             );
  83.              
  84.         $categorias = ORM::factory('Categoria')
  85.                         ->where('publicado', '=', 'S')
  86.                         ->find_all();
  87.        
  88.         $template->breadcrumb = $breadcrumb->render();
  89.        
  90.                
  91.        
  92.         $template->content = View::factory('pages/SearchView')
  93.                                 ->set('categorias', $categorias)
  94.                                 ->set('query', $query)
  95.                                 ->set('pagination', $pagination)
  96.                                 ->set('produtos', $produtos);
  97.        
  98.         $this->response->body($template->render());    
  99.     }    
  100.    
  101. } // End Welcome
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement