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 array('/', ' '), array('-.-', '+'),
43 $this->getRelPath($dirInfo->getPathname())
45 $playlists->games[] = (object) array(
46 'content_rating' => 'Everyone',
47 'image' => $this->getImageUrl($this->getFirstImage($dirInfo))
49 'title' => basename($dirInfo->getPathname()),
51 'version' => '11111111-0000-1111-0000-111111111111',
52 '__details' => $this->getDetailsUrl($uuid),
54 $playlists->playlists[$plnum]->tiles[] = (object) array(
58 if (++$mainpage < 10) {
59 $playlists->playlists[1]->tiles[] = (object) array(
66 header('Content-Type: application/json');
67 echo json_encode($playlists, JSON_PRETTY_PRINT);
70 protected function getDirs()
72 $dirs = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*');
73 $dirs2 = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*/*');
75 $all = new \AppendIterator();
79 $allDirs = new \CallbackFilterIterator(
81 function ($fileInfo) {
82 return $fileInfo->isDir() && $this->hasImages($fileInfo);
85 return new \CachingIterator($allDirs);
88 protected function hasImages(\SplFileInfo $dirInfo)
90 $it = $this->getImageIterator($dirInfo);
95 protected function groupByParent($dirs)
98 foreach ($dirs as $dirInfo) {
99 $arGroups[basename($dirInfo->getPathInfo())][] = $dirInfo;
104 protected function getDetailsUrl($uuid)
106 return $this->getBaseUrl()
107 . 'api/v1/apps/' . rawurlencode($uuid);