summaryrefslogtreecommitdiff
path: root/modules/tag/models
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tag/models')
-rw-r--r--modules/tag/models/tag.php61
1 files changed, 8 insertions, 53 deletions
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