Ejemplo n.º 1
0
 /**
  * Get all media
  *
  * @param  int    $limit
  * @param  int    $page
  * @param  string $sort
  * @param  string $title
  * @return array
  */
 public function getAll($limit = null, $page = null, $sort = null, $title = null)
 {
     $order = null !== $sort ? $this->getSortOrder($sort, $page) : DB_PREFIX . 'media.id DESC';
     if (null !== $title || isset($_GET['category_id'])) {
         $sql = Table\Media::sql();
         $params = [];
         if (isset($_GET['category_id']) && $_GET['category_id'] > 0) {
             $sql->select(['id' => DB_PREFIX . 'media.id', 'library_id' => DB_PREFIX . 'media.library_id', 'title' => DB_PREFIX . 'media.title', 'file' => DB_PREFIX . 'media.file', 'size' => DB_PREFIX . 'media.size', 'uploaded' => DB_PREFIX . 'media.uploaded', 'order' => DB_PREFIX . 'media.order', 'media_id' => DB_PREFIX . 'category_items.media_id', 'category_id' => DB_PREFIX . 'categories.id', 'category_title' => DB_PREFIX . 'categories.title']);
         } else {
             $sql->select();
         }
         if (!empty($title)) {
             $sql->select()->where(DB_PREFIX . 'media.title LIKE :title');
             $params['title'] = '%' . $title . '%';
         }
         if (isset($_GET['category_id']) && $_GET['category_id'] > 0) {
             $sql->select()->join(DB_PREFIX . 'category_items', [DB_PREFIX . 'category_items.media_id' => DB_PREFIX . 'media.id']);
             $sql->select()->join(DB_PREFIX . 'categories', [DB_PREFIX . 'category_items.category_id' => DB_PREFIX . 'categories.id']);
             $sql->select()->where('category_id = :category_id');
             $params['category_id'] = (int) $_GET['category_id'];
         }
         $by = explode(' ', $order);
         $sql->select()->orderBy($by[0], $by[1]);
         if (null !== $limit) {
             $page = null !== $page && (int) $page > 1 ? $page * $limit - $limit : null;
             if (null !== $page) {
                 $sql->select()->offset($page);
             }
             $sql->select()->limit($limit);
         }
         //echo $sql;
         //exit();
         $rows = Table\Media::execute((string) $sql, $params)->rows();
     } else {
         if (null !== $limit) {
             $page = null !== $page && (int) $page > 1 ? $page * $limit - $limit : null;
             $rows = Table\Media::findBy(['library_id' => $this->lid], ['offset' => $page, 'limit' => $limit, 'order' => $order])->rows();
         } else {
             $rows = Table\Media::findBy(['library_id' => $this->lid], ['order' => $order])->rows();
         }
     }
     $library = new MediaLibrary();
     $library->getById($this->lid);
     foreach ($rows as $key => $value) {
         $icon = $this->getFileIcon($value->file, $library);
         $value->filesize = $this->formatFileSize($value->size);
         $value->icon = $icon['image'];
         $value->icon_width = $icon['width'];
         $value->icon_height = $icon['height'];
     }
     return $rows;
 }