mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-04-21 13:09:17 -04:00
- All comments of an item can now be seen /comments?item_id=
- Return proper Content-Type header for GET /comments requests - Got rid of the query processing for index() in REST_Controller() - Small misc fixes
This commit is contained in:
@@ -24,7 +24,6 @@
|
||||
$config['^rest'] = null;
|
||||
$config['^rest/.*'] = null;
|
||||
$config['^(\w+)/(\d+)$'] = '$1/dispatch/$2';
|
||||
// @todo The following will need to support query strings.
|
||||
$config['^(\w+)$'] = '$1/index';
|
||||
$config['^form/(\w+)/(\w+)/(.*)$'] = '$2/form/$3/$1';
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@ class Item_Controller extends REST_Controller {
|
||||
protected $resource_type = "item";
|
||||
|
||||
/**
|
||||
* @see Rest_Controller::_index($query)
|
||||
* @see Rest_Controller::_index()
|
||||
*/
|
||||
public function _index($query) {
|
||||
public function _index() {
|
||||
throw new Exception("@todo Item_Controller::_index NOT IMPLEMENTED");
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
* class Comment_Controller extends REST_Controller {
|
||||
* protected $resource_type = "comment"; // this tells REST which model to use
|
||||
*
|
||||
* public function _index($query) {
|
||||
* public function _index() {
|
||||
* // Handle GET request to controller root
|
||||
* }
|
||||
*
|
||||
@@ -67,13 +67,9 @@ abstract class REST_Controller extends Controller {
|
||||
if (!$resource->loaded && !$this->request_method() == "post") {
|
||||
return Kohana::show_404();
|
||||
}
|
||||
/**
|
||||
* We're expecting to run in an environment that only supports GET/POST, so expect to tunnel
|
||||
* PUT/DELETE through POST.
|
||||
*/
|
||||
$output_format = $this->input->get("_format", $this->input->post("_format", "html"));
|
||||
|
||||
if ($this->request_method() == "get") {
|
||||
$this->_show($resource, $output_format);
|
||||
$this->_show($resource, $this->get_output_format());
|
||||
|
||||
if (Session::instance()->get("use_profiler", false)) {
|
||||
$profiler = new Profiler();
|
||||
@@ -115,16 +111,18 @@ abstract class REST_Controller extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
public function index($query_string=null) {
|
||||
// @todo Convert query string to an array and pass it along to _index()
|
||||
public function index() {
|
||||
if (request::method() == "post") {
|
||||
return $this->dispatch(null);
|
||||
}
|
||||
return $this->_index(array());
|
||||
return $this->_index();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return HTTP request method taking into consideration PUT and DELETE tunneling through POST.
|
||||
* We're expecting to run in an environment that only supports GET/POST, so expect to tunnel
|
||||
* PUT and DELETE through POST.
|
||||
*
|
||||
* Returns the HTTP request method taking into consideration PUT/DELETE tunneling.
|
||||
* @todo Move this to a MY_request helper?
|
||||
* @return string HTTP request method
|
||||
*/
|
||||
@@ -140,12 +138,16 @@ abstract class REST_Controller extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
// @todo Figure out a good consistent method of passing the output format to controller methods.
|
||||
protected function get_output_format() {
|
||||
return $this->input->get("_format", $this->input->post("_format", "html"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform a GET request on the controller root
|
||||
* (e.g. http://www.example.com/gallery3/comments)
|
||||
* @param array $query name-value pairs from the query string, if any
|
||||
*/
|
||||
abstract public function _index($query);
|
||||
abstract public function _index();
|
||||
|
||||
/**
|
||||
* Perform a POST request on this resource
|
||||
|
||||
@@ -22,10 +22,17 @@ class Comments_Controller extends REST_Controller {
|
||||
|
||||
/**
|
||||
* Display comments based on criteria.
|
||||
* @see Rest_Controller::_delete($resource)
|
||||
* @see Rest_Controller::_index()
|
||||
*/
|
||||
public function _index($query) {
|
||||
throw new Exception("@todo Comment_Controller::_index NOT IMPLEMENTED");
|
||||
public function _index() {
|
||||
$item_id = $this->input->get('item_id');
|
||||
|
||||
if (empty($item_id)) {
|
||||
/* We currently do not support getting all comments from the entire gallery. */
|
||||
header("HTTP/1.1 400 Bad Request");
|
||||
return;
|
||||
}
|
||||
print comment::get_comments($item_id, $this->get_output_format());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,15 +58,18 @@ class Comments_Controller extends REST_Controller {
|
||||
|
||||
/**
|
||||
* Display an existing comment.
|
||||
* @see Rest_Controller::_show($resource, $format)
|
||||
* @todo Set proper Content-Type in a central place (REST_Controller::dispatch?).
|
||||
* @see Rest_Controller::_show($resource, $output_format)
|
||||
*/
|
||||
public function _show($comment, $output_format) {
|
||||
switch ($output_format) {
|
||||
case "xml":
|
||||
header("Content-Type: application/xml");
|
||||
print xml::to_xml($comment->as_array(), array("comment"));
|
||||
break;
|
||||
|
||||
case "json":
|
||||
header("Content-Type: application/json");
|
||||
print json_encode($comment->as_array());
|
||||
break;
|
||||
|
||||
|
||||
@@ -105,17 +105,25 @@ class Comment_Core {
|
||||
return $block;
|
||||
}
|
||||
|
||||
static function get_comments($item, $output_format) {
|
||||
$comments = ORM::factory('comment')->where('item_id', $item->id)
|
||||
// @todo Set proper Content-Type in a central place (REST_Controller::dispatch?).
|
||||
static function get_comments($item_id, $output_format) {
|
||||
$comments = ORM::factory('comment')->where('item_id', $item_id)
|
||||
->orderby('datetime', 'asc')
|
||||
->find_all();
|
||||
|
||||
if (!$comments->count()) {
|
||||
header("HTTP/1.1 400 Bad Request");
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($output_format) {
|
||||
case "xml":
|
||||
header("Content-Type: application/xml");
|
||||
return xml::to_xml($comments, array("comments", "comment"));
|
||||
break;
|
||||
|
||||
case "json":
|
||||
header("Content-Type: application/json");
|
||||
foreach ($comments as $comment) {
|
||||
$data[] = $comment->as_array();
|
||||
}
|
||||
|
||||
@@ -22,9 +22,9 @@ class Users_Controller extends REST_Controller {
|
||||
|
||||
/**
|
||||
* Display comments based on criteria.
|
||||
* @see Rest_Controller::_delete($resource)
|
||||
* @see Rest_Controller::_index()
|
||||
*/
|
||||
public function _index($query) {
|
||||
public function _index() {
|
||||
throw new Exception("@todo Comment_Controller::_index NOT IMPLEMENTED");
|
||||
}
|
||||
|
||||
@@ -36,9 +36,9 @@ class Users_Controller extends REST_Controller {
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Rest_Controller::_show($resource, $format)
|
||||
* @see Rest_Controller::_show($resource, $output_format)
|
||||
*/
|
||||
public function _show($user, $format) {
|
||||
public function _show($user, $output_format) {
|
||||
throw new Exception("@todo User_Controller::_show NOT IMPLEMENTED");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user