/** * Remove an asset * * @param integer $asset * @return boolean */ public function removeAsset($asset) { // Remove the asset if ($asset instanceof Asset) { if (!$asset->remove()) { $this->setError(Lang::txt('Failed to remove asset.')); return false; } } else { $tbl = new Tables\Asset($this->_db); if (!$tbl->remove($asset)) { $this->setError(Lang::txt('Failed to remove asset.')); return false; } } // Reset the asset list so the next time assets // are called, the list if fresh $this->_assets = null; return true; }
/** * Get a list of posts in this collection * Accepts an array of filters for database query * that retrieves results * * @param array $filters Filters to apply * @param boolean $clear Clear cached data? * @return mixed Integer or object */ public function posts($filters = array(), $clear = false) { if (!isset($filters['collection_id'])) { $filters['collection_id'] = $this->get('id'); } if (!isset($filters['state'])) { $filters['state'] = self::APP_STATE_PUBLISHED; } if (!isset($filters['access'])) { $filters['access'] = User::isGuest() ? 0 : array(0, 1); } if (!isset($filters['sort'])) { if ($sort = $this->get('sort', 'created')) { $filters['sort'] = 'p.' . $sort; } $filters['sort_Dir'] = $this->get('sort', 'created') == 'ordering' ? 'asc' : 'desc'; } if (isset($filters['count']) && $filters['count']) { $tbl = new Tables\Post($this->_db); return $tbl->getCount($filters); } if (!isset($this->_posts) || !$this->_posts instanceof ItemList) { $tbl = new Tables\Post($this->_db); if ($results = $tbl->getRecords($filters)) { $ids = array(); foreach ($results as $key => $result) { $ids[] = $result->item_id; } // Get all the assets for this list of items $ba = new Tables\Asset($this->_db); $assets = $ba->getRecords(array('item_id' => $ids)); // Get all the tags for this list of items $bt = new Tags(); $tags = $bt->getTagsForIds($ids); // Loop through all the items and push assets and tags foreach ($results as $key => $result) { $results[$key] = new Post($result); if ($assets) { foreach ($assets as $asset) { if ($asset->item_id == $results[$key]->get('item_id')) { $results[$key]->item()->addAsset($asset); } else { $results[$key]->item()->addAsset(null); } } } else { $results[$key]->item()->addAsset(null); } if (isset($tags[$results[$key]->get('item_id')])) { $results[$key]->item()->addTag($tags[$results[$key]->get('item_id')]); } else { $results[$key]->item()->addTag(null); } } } else { $results = array(); } $this->_posts = new ItemList($results); } return $this->_posts; }