public function get(RESTApiRequest $request) { $genres = new \VideoGenre(); $genres->setLocale($request->getLanguage()); if (!empty($this->categories)) { $response = array(); foreach ($this->categories as $category) { $response[$category['id']] = $this->filter($genres->getByCategoryId($category['id'], true)); } return $response; } else { return $this->filter($genres->getAll(true)); } }
private function filter($videos) { $videos = $this->manager->filterList($videos); $fields_map = $this->fields_map; $favorites = $this->favorites; $not_ended = $this->not_ended; $genre = new \VideoGenre(); $genres_map = $genre->getIdMap(); $videos = array_map(function ($video) use($fields_map, $favorites, $not_ended, $genres_map) { $new_video = array_intersect_key($video, $fields_map); $genre_ids = $new_video['genres_ids']; $new_video['genres_ids'] = array(); foreach ($genre_ids as $genre_id) { if (!empty($genres_map[$genre_id])) { $new_video['genres_ids'][] = $genres_map[$genre_id]; } } $new_video['added'] = intval(strtotime($video['added'])); $new_video['original_name'] = $video['o_name']; $new_video['hd'] = (int) $video['hd']; $new_video['rating_kinopoisk'] = (double) $video['rating_kinopoisk']; $new_video['rating_imdb'] = (double) $video['rating_imdb']; $series = unserialize($video['series']); $new_video['series'] = $series !== false ? $series : array(); $new_video['favorite'] = in_array($video['id'], $favorites) ? 1 : 0; $new_video['not_ended'] = !empty($not_ended[$video['id']]) ? 1 : 0; if ($new_video['not_ended']) { if (!empty($new_video['series'])) { $new_video['not_ended_episode'] = $not_ended[$video['id']]['series']; } $new_video['end_time'] = $not_ended[$video['id']]['end_time']; } $new_video['url'] = empty($video['rtsp_url']) ? '' : $video['rtsp_url']; if (preg_match("/(\\S+:\\/\\/\\S+)/", $new_video['url'], $match)) { $new_video['url'] = $match[1]; } return $new_video; }, $videos); return $videos; }