tiles_array = array(); } public function setAvailableSpace($space) { $this->available_space = $space; } public function getTilesCount() { return count($this->tiles_array); } public function addTile($tile) { array_push($this->tiles_array, $tile); } public function getLeftSpace() { $occupied_space = 0; for ($i = 0; $i < count($this->tiles_array); $i++) { $occupied_space += $this->tiles_array[$i]->getWidth(); } return $this->available_space - $occupied_space; } public function tileWillFit($tile) { return $this->getLeftSpace() > $tile->getWidth(); } public function get() { $r = ''; return $r; } private $tiles_array; private $available_space; } class TileSingle extends TileBase { public function __construct($path) { \OC_Log::write(TAG, 'Loading file from path '.$path, \OC_Log::DEBUG); $this->file_path = $path; /* $this->image = new \OC_Image(); if (!$this->image->loadFromFile($this->file_path)) { \OC_Log::write(TAG, 'Loading file filed', \OC_Log::ERROR); return; } $this->image->fixOrientation();*/ } public function getWidth() { $a = ThumbnailsManager::getInstance()->getThumbnailInfo($this->file_path); return $a['width']; } public function get($extra = '') { // !HACK! file path needs to be encoded twice because files app decode twice url, so any special chars like + or & in filename // !HACK! will result in failing of opening them return ''; } public function getMiniatureSrc() { return \OCP\Util::linkTo('gallery', 'ajax/thumbnail.php').'&filepath='.urlencode($this->getPath()); } public function getPath() { return $this->file_path; } public function getOnClickAction() { return '';//'javascript:openFile(\''.$this->file_path.'\');'; } private $file_path; private $image; } class TileStack extends TileBase { const STACK_REPRESENTATIVES = 3; public function __construct($path_array, $stack_name) { $this->tiles_array = array(); $this->stack_name = $stack_name; for ($i = 0; $i < count($path_array) && $i < self::STACK_REPRESENTATIVES; $i++) { $tile = new TileSingle($path_array[$i]); array_push($this->tiles_array, $tile); } } public function forceSize($width_must_fit=false) { for ($i = 0; $i < count($this->tiles_array); $i++) $this->tiles_array[$i]->forceSize(true); } public function getWidth() { $max = 0; for ($i = 0; $i < count($this->tiles_array); $i++) { $max = max($max, $this->tiles_array[$i]->getWidth()); } return min(IMAGE_WIDTH, $max); } public function get() { $r = ''; for ($i = 0; $i < count($this->tiles_array); $i++) { $top = rand(-5, 5); $left = rand(-5, 5); $img_w = $this->tiles_array[$i]->getWidth(); $extra = ''; if ($img_w < IMAGE_WIDTH) { $extra = 'width:'.$img_w.'px;'; } $r .= ''; } return $r; } public function getOnHoverAction() { return 'javascript:explode(this);return false;'; } public function getOnOutAction() { return 'javascript:deplode(this);return false;'; } public function getCount() { return count($this->tiles_array); } public function getOnClickAction() { return 'javascript:openNewGal(\''.rawurlencode($this->stack_name).'\');'; } private $tiles_array; private $stack_name; }