1
0

Update tag.php with gallery 3.0.4 version.

This commit is contained in:
rWatcher 2012-06-27 19:20:51 -04:00
parent 8dea65a83a
commit 4c47345fc4

View File

@ -33,35 +33,39 @@ class Tag_Model_Core extends ORM {
* Return all viewable 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
* @param string $type the type of item (album, photo)
* @param string $where an array of arrays, each compatible with ORM::where()
* @return ORM_Iterator
*/
public function items($limit=null, $offset=null, $type=null) {
$model = ORM::factory("item")
public function items($limit=null, $offset=null, $where=array()) {
if (is_scalar($where)) {
// backwards compatibility
$where = array(array("items.type", "=", $where));
}
return ORM::factory("item")
->viewable()
->join("items_tags", "items.id", "items_tags.item_id")
->where("items_tags.tag_id", "=", $this->id);
if ($type) {
$model->where("items.type", "=", $type);
}
return $model->find_all($limit, $offset);
->where("items_tags.tag_id", "=", $this->id)
->merge_where($where)
->order_by("items.id")
->find_all($limit, $offset);
}
/**
* Return the count of all viewable items associated with this tag.
* @param string $type the type of item (album, photo)
* @param string $where an array of arrays, each compatible with ORM::where()
* @return integer
*/
public function items_count($type=null) {
$model = ORM::factory("item")
public function items_count($where=array()) {
if (is_scalar($where)) {
// backwards compatibility
$where = array(array("items.type", "=", $where));
}
return $model = ORM::factory("item")
->viewable()
->join("items_tags", "items.id", "items_tags.item_id")
->where("items_tags.tag_id", "=", $this->id);
if ($type) {
$model->where("items.type", "=", $type);
}
return $model->count_all();
->where("items_tags.tag_id", "=", $this->id)
->merge_where($where)
->count_all();
}
/**
@ -69,13 +73,23 @@ class Tag_Model_Core extends ORM {
* to this tag.
*/
public function save() {
$related_item_ids = array();
foreach (db::build()
->select("item_id")
->from("items_tags")
->where("tag_id", "=", $this->id)
->execute() as $row) {
$related_item_ids[$row->item_id] = 1;
// Check to see if another tag exists with the same name
$duplicate_tag = ORM::factory("tag")
->where("name", "=", $this->name)
->where("id", "!=", $this->id)
->find();
if ($duplicate_tag->loaded()) {
// If so, tag its items with this tag so as to merge it
$duplicate_tag_items = ORM::factory("item")
->join("items_tags", "items.id", "items_tags.item_id")
->where("items_tags.tag_id", "=", $duplicate_tag->id)
->find_all();
foreach ($duplicate_tag_items as $item) {
$this->add($item);
}
// ... and remove the duplicate tag
$duplicate_tag->delete();
}
if (isset($this->object_relations["items"])) {
@ -132,6 +146,7 @@ class Tag_Model_Core extends ORM {
* @param string $query the query string (eg "page=3")
*/
public function url($query=null) {
// rWatcher Edit: Modify URL function to point users to tag_albums instead of tag.
$album_id = Input::instance()->get("album");
if (!($album_id)) {
$album_id = 0;
@ -142,4 +157,4 @@ class Tag_Model_Core extends ORM {
}
return $url;
}
}
}