diff options
Diffstat (limited to 'modules/tag')
-rw-r--r-- | modules/tag/controllers/tags.php | 35 | ||||
-rw-r--r-- | modules/tag/models/tag.php | 61 |
2 files changed, 30 insertions, 66 deletions
diff --git a/modules/tag/controllers/tags.php b/modules/tag/controllers/tags.php index 6011179a..db5f93bd 100644 --- a/modules/tag/controllers/tags.php +++ b/modules/tag/controllers/tags.php @@ -20,31 +20,40 @@ class Tags_Controller extends REST_Controller { protected $resource_type = "tag"; - /** - * @see Rest_Controller::_index() - */ + public function _show($tag) { + // @todo: these need to be pulled from the database + $theme_name = "default"; + $page_size = 9; + + $template = new View("page.html"); + + $page = $this->input->get("page", "1"); + $theme = new Theme($theme_name, $template); + + $template->set_global("page_type", "tag"); + $template->set_global('page_size', $page_size); + $template->set_global('tag', $tag); + $template->set_global('children', $tag->items($page_size, ($page-1) * $page_size)); + $template->set_global('children_count', $tag->count); + $template->set_global('theme', $theme); + $template->set_global('user', Session::instance()->get('user', null)); + $template->content = new View("tag.html"); + + print $template; + } + public function _index() { throw new Exception("@todo Tag_Controller::_index NOT IMPLEMENTED"); } - /** - * @see Rest_Controller::_form_add($parameters) - */ public function _form_add($parameters) { throw new Exception("@todo Tag_Controller::_form NOT IMPLEMENTED"); } - /** - * @see Rest_Controller::_form_edit($resource) - */ public function _form_edit($tag) { throw new Exception("@todo Tag_Controller::_form NOT IMPLEMENTED"); } - public function _show($tag) { - Albums_Controller::_show($tag); - } - public function _create($tag) { throw new Exception("@todo Tag_Controller::_create NOT IMPLEMENTED"); } diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php index c0e94f29..59dd8d54 100644 --- a/modules/tag/models/tag.php +++ b/modules/tag/models/tag.php @@ -20,64 +20,19 @@ class Tag_Model extends ORM { protected $has_and_belongs_to_many = array("items"); - protected $_children = array(); - var $rules = array( "name" => "required|length[4,32]"); /** - * Emulate the album method charactistics so that the tag looks like an album to the framework. - */ - public function __call($function, $args) { - if ($function == "children") { - return $this->_get_tag_children($args[0], $args[1]); - } else if ($function == "children_count") { - return $this->count; - } else if ($function == "parents") { - // Need to return as an ORM_Iterator as opposed to just the model. - return ORM::factory("item") - ->where("id", 1) - ->find_all(); - } else { - return parent::__call($function, $args); - } - } - - /** - * Emulate the album property charactistics so that the tag looks like an album to the framework. - */ - public function __get($property) { - if ($property == "title" || $property == "title_edit" || $property == "name_edit") { - return $this->name; - } else if ($property == "description_edit") { - return "There are {$this->count} items tagged."; - } else if ($property == "owner") { - return null; - } else { - return parent::__get($property); - } - } - - /** - * Get the item children. This code was borrowed from the ORM::__get($column) method and modified - * to allow for the specification of the limit and offset. - * @param int $limit - * @param int $offset + * Return all items associated with this tag. + * @param integer $limit number of rows to limit result to + * @param integer $offset offset in result to start returning rows from * @return ORM_Iterator */ - private function _get_tag_children($limit, $offset) { - // Load the child model - $model = ORM::factory(inflector::singular("items")); - - // Load JOIN info - $join_table = $model->join_table($this->table_name); - $join_col1 = $model->foreign_key(NULL, $join_table); - $join_col2 = $model->foreign_key(TRUE); - - // one<>alias:many relationship - return $model - ->join($join_table, $join_col1, $join_col2) - ->where($this->foreign_key(NULL, $join_table), $this->object[$this->primary_key]) + public function items($limit=null, $offset=0) { + return ORM::factory("item") + ->join("items_tags", "items.id", "items_tags.item_id") + ->where("items_tags.tag_id", $this->id) ->find_all($limit, $offset); - } + } }
\ No newline at end of file |