Example #1
0
 /**
  * GET /pages
  */
 public function get_page_list($store_id)
 {
     // Validations
     $errors = $this->validate(['ids' => 'integer_comma_list', 'store_id' => 'integer', 'per_page' => 'integer|between:1,200', 'page' => 'integer|min:1', 'published' => 'boolean', 'handle' => 'requires:language', 'q' => 'requires:language', 'language' => 'in:es_AR,pt_BR,en_US']);
     if ($errors != null) {
         return $errors;
     }
     // Filters
     $query = Page::where_null('deleted_at')->where_store_id($store_id);
     if (Input::has('ids')) {
         $ids = explode(',', Input::get('ids'));
         $query->where_in('id', $ids);
     }
     if (Input::has('published')) {
         $query->where_publish(Input::get('published') == "true" ? 1 : 0);
     }
     if (Input::has('language')) {
         $query->join(Page_I18n::$table, Page::$table . '.id', '=', 'page_id')->where_lang(Input::get('language'));
         if (Input::has('handle')) {
             $query->where('nice-name', '=', Input::get('handle'));
         }
         if (Input::has('q')) {
             $query->where('title', 'LIKE', '%' . Input::get('q') . '%');
         }
     }
     // Response
     $limit = Input::get('per_page', 20);
     $pages = $query->paginate($limit, [Page::$table . '.*']);
     $result = $this->adapter->format(array_values($pages->results));
     return Response::json($result)->header('X-Total-Count', $pages->total);
 }