4 class Controller_Api_Playlists
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 $uuid = $this->getRelPath($dirInfo->getPathname());
28 $playlists->games[] = (object) array(
29 'content_rating' => 'Everyone',
30 'image' => $this->getImageUrl($this->getFirstImage($dirInfo)),
31 'title' => basename($dirInfo->getPathname()),
33 'version' => '11111111-0000-1111-0000-111111111111'
35 $playlists->playlists[$plnum]->tiles[] = (object) array(
41 header('Content-Type: application/json');
42 echo json_encode($playlists, JSON_PRETTY_PRINT);
45 protected function getDirs()
47 $dirs = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*');
48 $dirs2 = new \GlobIterator($GLOBALS['imagestore']['basedir'] . '/*/*');
50 $all = new \AppendIterator();
54 $allDirs = new \CallbackFilterIterator(
56 function ($fileInfo) {
57 return $fileInfo->isDir() && $this->hasImages($fileInfo);
60 return new \CachingIterator($allDirs);
63 protected function hasImages(\SplFileInfo $dirInfo)
65 $it = $this->getImageIterator($dirInfo);
70 protected function getImageIterator(\SplFileInfo $dirInfo)
72 $it = new \AppendIterator();
75 new \GlobIterator($dirInfo->getPathName() . '/*.jpg'),
81 new \GlobIterator($dirInfo->getPathName() . '/*.JPG'),
88 protected function groupByParent($dirs)
91 foreach ($dirs as $dirInfo) {
92 $arGroups[basename($dirInfo->getPathInfo())][] = $dirInfo;
97 protected function getRelPath($path)
99 return substr($path, strlen($GLOBALS['imagestore']['basedir']));
102 protected function getImageUrl($path)
104 if (isset($_SERVER['HTTPS'])) {
108 return $protocol . '://' . $_SERVER['HTTP_HOST']
109 . '/image?path=' . urlencode($this->getRelPath($path));
112 protected function getFirstImage(\SplFileInfo $dirInfo)
114 $it = $this->getImageIterator($dirInfo);
116 return $it->current();