// we find some images or there are no subdirs anymore to check. $name = $file['name']; $second_level_images = array(); $dirs_to_check = array($filename); while (!empty($dirs_to_check)) { // get next subdir to check $subdir = array_pop($dirs_to_check); $subdir_files = \OC_Files::getDirectoryContent($subdir, 'image'); foreach ($subdir_files as $file) { if ($file['type'] == 'file') { $second_level_images[] = $subdir . '/' . $file['name']; } else { $dirs_to_check[] = $subdir . '/' . $file['name']; } } if (count($second_level_images) != 0) { // if we collected images for this directory $tl->addTile(new \OC\Pictures\TileStack($second_level_images, $name)); break; } } } } // and finally our images actually stored in the root folder for ($i = 0; $i < count($root_images); $i++) { $tl->addTile(new \OC\Pictures\TileSingle($root_images[$i])); } $tmpl = new OCP\Template('gallery', 'index', 'user'); $tmpl->assign('root', $root, false); $tmpl->assign('tl', $tl, false); $tmpl->printPage();
<?php include 'apps/gallery/lib/tiles.php'; $root = empty($_GET['root']) ? '/' : $_GET['root']; $images = \OC_FileCache::searchByMime('image', null, '/bartek/files' . $root); sort($images); $arr = array(); $tl = new \OC\Pictures\TilesLine(); $ts = new \OC\Pictures\TileStack(array(), ''); $previous_element = $images[0]; for ($i = 0; $i < count($images); $i++) { error_log($images[$i]); $prev_dir_arr = explode('/', $previous_element); $dir_arr = explode('/', $images[$i]); if (count($dir_arr) == 1) { $tl->addTile(new \OC\Pictures\TileSingle($images[$i])); continue; } if (strcmp($prev_dir_arr[0], $dir_arr[0]) != 0) { $tl->addTile(new \OC\Pictures\TileStack($arr, $prev_dir_arr[0])); $arr = array(); } $arr[] = $root . $images[$i]; $previous_element = $images[$i]; } $dir_arr = explode('/', $previous_element); if (count($dir_arr) == 0) { $tl->addTile(new \OC\Pictures\TileSingle($previous_element)); } else { if (count($dir_arr) && $ts->getCount() == 0) { $ts = new \OC\Pictures\TileStack(array($previous_element), $dir_arr[0]);
$fallback_images = array(); // if the folder only cotains subfolders with images -> these are taken for the stack preview for ($i = 0; $i < count($images); $i++) { $prev_dir_arr = explode('/', $previous_element); $dir_arr = explode('/', $images[$i]); if (count($dir_arr) == 1) { // getting the images in this directory $root_images[] = $root . $images[$i]; } else { if (strcmp($prev_dir_arr[0], $dir_arr[0]) != 0) { // if we entered a new directory if (count($second_level_images) == 0) { // if we don't have images in this directory if (count($fallback_images) != 0) { // but have fallback_images $tl->addTile(new \OC\Pictures\TileStack($fallback_images, $prev_dir_arr[0])); $fallback_images = array(); } } else { // if we collected images for this directory $tl->addTile(new \OC\Pictures\TileStack($second_level_images, $prev_dir_arr[0])); $fallback_images = array(); $second_level_images = array(); } } if (count($dir_arr) == 2) { // These are the pics in our current subdir $second_level_images[] = $root . $images[$i]; $fallback_images = array(); } else { // These are images from the deeper directories