Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }