diff options
| author | Bharat Mediratta <bharat@menalto.com> | 2011-01-07 23:38:08 -0800 | 
|---|---|---|
| committer | Bharat Mediratta <bharat@menalto.com> | 2011-01-07 23:38:08 -0800 | 
| commit | 966dee8628293f78fbf9431281709ceba011d3c2 (patch) | |
| tree | da319f68a81b4a796104fd7c21e341a1cc8493c9 /modules/tag/models | |
| parent | 7bbbe307ac3979b3e540d379c45a88046e4ff0e4 (diff) | |
Move tag count management into the model.  Fixes #1586.
Diffstat (limited to 'modules/tag/models')
| -rw-r--r-- | modules/tag/models/tag.php | 16 | 
1 files changed, 13 insertions, 3 deletions
| diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php index c038f6d1..25df87e0 100644 --- a/modules/tag/models/tag.php +++ b/modules/tag/models/tag.php @@ -20,6 +20,15 @@  class Tag_Model_Core extends ORM {    protected $has_and_belongs_to_many = array("items"); +  public function __construct($id=null) { +    parent::__construct($id); + +    if (!$this->loaded()) { +      // Set reasonable defaults +      $this->count = 0; +    } +  } +    /**     * Return all viewable items associated with this tag.     * @param integer  $limit  number of rows to limit result to @@ -69,11 +78,12 @@ class Tag_Model_Core extends ORM {        $related_item_ids[$row->item_id] = 1;      } +    $added = array_diff($this->changed_relations["items"], $this->object_relations["items"]); +    $removed = array_diff($this->object_relations["items"], $this->changed_relations["items"]);      if (isset($this->changed_relations["items"])) { -      $changed = array_merge( -        array_diff($this->changed_relations["items"], $this->object_relations["items"]), -        array_diff($this->object_relations["items"], $this->changed_relations["items"])); +      $changed = array_merge($added, $removed);      } +    $this->count = count($this->object_relations["items"]) + count($added) - count($removed);      $result = parent::save(); | 
