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))
48 'title' => basename($dirInfo->getPathname()),
50 'version' => '11111111-0000-1111-0000-111111111111',
51 '__details' => $this->getDetailsUrl($uuid),
53 $playlists->playlists[$plnum]->tiles[] = (object) array(
57 if (++$mainpage < 10) {
58 $playlists->playlists[1]->tiles[] = (object) array(
65 header('Content-Type: application/json');
66 echo json_encode($playlists, JSON_PRETTY_PRINT);
69 protected function getDirs()
71 $dirs = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*');
72 $dirs2 = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*/*');
74 $all = new \AppendIterator();
78 $allDirs = new \CallbackFilterIterator(
80 function ($fileInfo) {
81 return $fileInfo->isDir() && $this->hasImages($fileInfo);
84 return new \CachingIterator($allDirs);
87 protected function hasImages(\SplFileInfo $dirInfo)
89 $it = $this->getImageIterator($dirInfo);
94 protected function groupByParent($dirs)
97 foreach ($dirs as $dirInfo) {
98 $arGroups[basename($dirInfo->getPathInfo())][] = $dirInfo;
103 protected function getDetailsUrl($uuid)
105 return $this->getBaseUrl()
106 . 'api/v1/apps/' . rawurlencode($uuid);