tiles_array = array(); } public function setAvailableSpace($space) { $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 forceSize($width_must_fit=false) { $current_height = $this->image->height(); $current_width = $this->image->width(); // we need height of 250px but not for tiles stack if ($current_width > $current_height && !$width_must_fit) { $this->image->resize(floor((250*$current_width)/$current_height)); } else { $this->image->resize(200); } } public function get($extra = '') { return ''; } public function getMiniatureSrc() { return GET_THUMBNAIL_PATH.urlencode($this->getPath()); } public function getPath() { return $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(200, $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 < 200) { $extra = 'width:'.$img_w.'px;'; } $r .= ''; // $r .= $this->tiles_array[$i]->get(' style="margin-top:'.$top.'px; margin-left:'.$left.'px; "'); } return $r; } public function getOnHoverAction() { return 'javascript:t(this);return false;'; } public function getOnOutAction() { return 'javascript:o(this);return false;'; } public function getCount() { return count($this->tiles_array); } private $tiles_array; private $stack_name; } ?>