4 class Controller_Api_Playlists extends Controller_Api_ImageBase
6 public function handle()
8 $playlists = (object) array(
10 'playlists' => array()
12 //-1 - link to playlists
17 foreach ($this->groupByParent($this->getDirs()) as $dir => $arDirs) {
18 $plnum = count($playlists->playlists);
19 $playlists->playlists[$plnum] = (object) array(
25 foreach ($arDirs as $dirInfo) {
27 '/', '-.-', $this->getRelPath($dirInfo->getPathname())
29 $playlists->games[] = (object) array(
30 'content_rating' => 'Everyone',
31 'image' => $this->getImageUrl($this->getFirstImage($dirInfo)),
32 'title' => basename($dirInfo->getPathname()),
34 'version' => '11111111-0000-1111-0000-111111111111',
35 '__details' => $this->getDetailsUrl($uuid),
37 $playlists->playlists[$plnum]->tiles[] = (object) array(
43 header('Content-Type: application/json');
44 echo json_encode($playlists, JSON_PRETTY_PRINT);
47 protected function getDirs()
49 $dirs = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*');
50 $dirs2 = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*/*');
52 $all = new \AppendIterator();
56 $allDirs = new \CallbackFilterIterator(
58 function ($fileInfo) {
59 return $fileInfo->isDir() && $this->hasImages($fileInfo);
62 return new \CachingIterator($allDirs);
65 protected function hasImages(\SplFileInfo $dirInfo)
67 $it = $this->getImageIterator($dirInfo);
72 protected function groupByParent($dirs)
75 foreach ($dirs as $dirInfo) {
76 $arGroups[basename($dirInfo->getPathInfo())][] = $dirInfo;
81 protected function getDetailsUrl($uuid)
83 return $this->getBaseUrl()
84 . 'api/v1/apps/' . rawurlencode($uuid);