4 class Controller_Api_Playlists extends Controller_Api_ImageBase
6 public function handle()
8 $playlists = (object) array(
12 //main playlists in the store?
30 foreach ($this->groupByParent($this->getDirs()) as $dir => $arDirs) {
31 $plnum = count($playlists->playlists);
32 $playlists->playlists[$plnum] = (object) array(
38 $playlists->playlists[0]->tiles[] = array('playlist' => $id);
40 foreach ($arDirs as $dirInfo) {
42 '/', '-.-', $this->getRelPath($dirInfo->getPathname())
44 $playlists->games[] = (object) array(
45 'content_rating' => 'Everyone',
46 'image' => $this->getImageUrl($this->getFirstImage($dirInfo)),
47 'title' => basename($dirInfo->getPathname()),
49 'version' => '11111111-0000-1111-0000-111111111111',
50 '__details' => $this->getDetailsUrl($uuid),
52 $playlists->playlists[$plnum]->tiles[] = (object) array(
56 if (++$mainpage < 10) {
57 $playlists->playlists[1]->tiles[] = (object) array(
64 header('Content-Type: application/json');
65 echo json_encode($playlists, JSON_PRETTY_PRINT);
68 protected function getDirs()
70 $dirs = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*');
71 $dirs2 = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*/*');
73 $all = new \AppendIterator();
77 $allDirs = new \CallbackFilterIterator(
79 function ($fileInfo) {
80 return $fileInfo->isDir() && $this->hasImages($fileInfo);
83 return new \CachingIterator($allDirs);
86 protected function hasImages(\SplFileInfo $dirInfo)
88 $it = $this->getImageIterator($dirInfo);
93 protected function groupByParent($dirs)
96 foreach ($dirs as $dirInfo) {
97 $arGroups[basename($dirInfo->getPathInfo())][] = $dirInfo;
102 protected function getDetailsUrl($uuid)
104 return $this->getBaseUrl()
105 . 'api/v1/apps/' . rawurlencode($uuid);