items = array(); $this->restoreSession(); } public function restoreSession() { $session = MediaListing_Main::instance()->session(); if ($session->exists(static::CONF_BasketContents)) { $this->items = $session->get(static::CONF_BasketContents); } } public function saveSession() { $session = MediaListing_Main::instance()->session(); $session->set(static::CONF_BasketContents, $this->items); } public function addItems($items) { if ( ! is_array($items)) { $items = array($items); } $this->items = array_merge($this->items, $items); $this->saveSession(); } public function getItems() { return $this->items; } public function clear() { $this->items = array(); $this->saveSession(); } public function removeItems($items) { if ( ! is_array($items)) { $items = array($items); } $this->items = array_values(array_diff($this->items, $items)); $this->saveSession(); } public function count() { return count($this->items); } public function contains($item) { return in_array($item, $this->items); } protected function loadSourcePrefixes() { if ($this->source_prefixes !== null) { return; } $config = MediaListing_Main::instance()->config(); $sources = $config->get('sources'); $this->source_prefixes = array(); foreach ($sources as $source_path) { list($name, $path) = explode(':', $source_path); $this->source_prefixes[$name] = $path; } } public function size($item) { $this->loadSourcePrefixes(); list($source,$path) = explode(':', $item); return MediaListing_Main::recursiveFilesize($this->source_prefixes[$source] . '/' . $path); } public function totalSize() { if ($this->cached_total_size === null) { $this->cached_total_size = 0; $this->loadSourcePrefixes(); foreach ($this->items as $item_path) { list($source,$path) = explode(':', $item_path); $this->cached_total_size += MediaListing_Main::recursiveFilesize($this->source_prefixes[$source] . '/' . $path); } } return $this->cached_total_size; } } ?>