/** * 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); }