/** * 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; }