More refactorings.

This commit is contained in:
Lars Jung 2014-05-18 22:04:06 +02:00
parent fc9f846cb5
commit 344c0a8005
5 changed files with 55 additions and 63 deletions

View file

@ -135,9 +135,15 @@ Options
/* /*
Calc the size of folders. Calc the size of folders.
This operation is real slow. The calculated sizes differ slightly for both
calculation types since "php" only adds the file size, while "shell-du"
also adds the sizes for the actual folder files.
- type: "php" (sloooow) or "shell-du" (sloow)
*/ */
"foldersize": { "foldersize": {
"enabled": true "enabled": true,
"type": "php"
}, },
/* /*

View file

@ -15,7 +15,6 @@ class Api {
public function apply() { public function apply() {
$options = $this->app->get_options(); $options = $this->app->get_options();
$action = use_request_param("action"); $action = use_request_param("action");
if ($action === "get") { if ($action === "get") {
@ -80,14 +79,8 @@ class Api {
else if ($action === "getThumbHref") { else if ($action === "getThumbHref") {
if (!$options["thumbnails"]["enabled"]) { json_fail(1, "thumbnails disabled", !$options["thumbnails"]["enabled"]);
json_fail(1, "thumbnails disabled"); json_fail(2, "thumbnails not supported", !HAS_PHP_JPG);
}
normalized_require_once("class-thumb");
if (!Thumb::is_supported()) {
json_fail(2, "thumbnails not supported");
}
$type = use_request_param("type"); $type = use_request_param("type");
$src_url = use_request_param("href"); $src_url = use_request_param("href");
@ -97,9 +90,7 @@ class Api {
$thumb = new Thumb($this->app); $thumb = new Thumb($this->app);
$thumb_url = $thumb->thumb($type, $src_url, $mode, $width, $height); $thumb_url = $thumb->thumb($type, $src_url, $mode, $width, $height);
if ($thumb_url === null) { json_fail(3, "thumbnail creation failed", $thumb_url === null);
json_fail(3, "thumbnail creation failed");
}
json_exit(array("absHref" => $thumb_url)); json_exit(array("absHref" => $thumb_url));
} }
@ -113,7 +104,6 @@ class Api {
$type = use_request_param("type"); $type = use_request_param("type");
$hrefs = use_request_param("hrefs"); $hrefs = use_request_param("hrefs");
normalized_require_once("class-archive");
$archive = new Archive($this->app); $archive = new Archive($this->app);
$hrefs = explode("|:|", trim($hrefs)); $hrefs = explode("|:|", trim($hrefs));
@ -124,9 +114,7 @@ class Api {
header("Connection: close"); header("Connection: close");
$rc = $archive->output($type, $hrefs); $rc = $archive->output($type, $hrefs);
if ($rc !== 0) { json_fail("packaging failed", $rc !== 0);
json_fail("packaging failed");
}
exit; exit;
} }
@ -152,7 +140,6 @@ class Api {
json_fail(6, "already exists", file_exists($dest)); json_fail(6, "already exists", file_exists($dest));
json_fail(7, "can't move uploaded file", !move_uploaded_file($userfile["tmp_name"], $dest)); json_fail(7, "can't move uploaded file", !move_uploaded_file($userfile["tmp_name"], $dest));
json_exit(); json_exit();
} }
@ -183,12 +170,9 @@ class Api {
} }
} }
if (count($errors)) { json_fail(2, "deletion failed for some", count($errors) > 0);
json_fail(2, "deletion failed for some");
} else {
json_exit(); json_exit();
} }
}
else if ($action === "rename") { else if ($action === "rename") {

View file

@ -113,12 +113,6 @@ class App {
} }
public function get_generic_json() {
return json_encode(array("items" => $this->get_items(CURRENT_URL, 1))) . "\n";
}
public function get_items($url, $what) { public function get_items($url, $what) {
$code = $this->get_http_code($url); $code = $this->get_http_code($url);
@ -157,7 +151,9 @@ class App {
$cache = array(); $cache = array();
$folder = Item::get($this, CURRENT_PATH, $cache); $folder = Item::get($this, CURRENT_PATH, $cache);
time_log("f2");
$items = $folder->get_content($cache); $items = $folder->get_content($cache);
time_log("f3");
uasort($items, array("Item", "cmp")); uasort($items, array("Item", "cmp"));
$html = "<table>"; $html = "<table>";

View file

@ -14,10 +14,46 @@ class Item {
return strcasecmp($item1->path, $item2->path); return strcasecmp($item1->path, $item2->path);
} }
private static $size_cache = array();
private static function filesize($app, $path) {
if (array_key_exists($path, Item::$size_cache)) {
return Item::$size_cache[$path];
}
$size = 0;
if (is_file($path)) {
$size = @filesize($path);
} else if (is_dir($path)) {
$options = $app->get_options();
if ($options["foldersize"]["enabled"]) {
if (HAS_CMD_DU && $options["foldersize"]["type"] === "shell-du") {
$cmdv = array("du", "-sk", $path);
$size = intval(preg_replace("#\s.*$#", "", exec_cmdv($cmdv)), 10) * 1024;
} else {
foreach ($app->read_dir($path) as $name) {
$size += Item::filesize($app, $path . "/" . $name);
}
}
}
}
Item::$size_cache[$path] = $size;
return $size;
}
public static function get($app, $path, &$cache) { public static function get($app, $path, &$cache) {
if (!starts_with($path, ROOT_PATH)) { if (!starts_with($path, ROOT_PATH)) {
error_log("ILLEGAL REQUEST: " . $path . ", " . ROOT_PATH); err_log("ILLEGAL REQUEST: " . $path . ", " . ROOT_PATH);
return null; return null;
} }
@ -47,21 +83,9 @@ class Item {
$this->path = normalize_path($path, false); $this->path = normalize_path($path, false);
$this->is_folder = is_dir($this->path); $this->is_folder = is_dir($this->path);
$this->url = $this->app->to_url($path, $this->is_folder); $this->url = $app->to_url($this->path, $this->is_folder);
$this->date = @filemtime($this->path); $this->date = @filemtime($this->path);
$this->size = Item::filesize($app, $this->path);
if ($this->is_folder) {
$this->size = null;
$options = $app->get_options();
if ($options["foldersize"]["enabled"]) {
$cmdv = array("du", "-sk", $this->path);
$this->size = intval(preg_replace("#\s.*$#", "", exec_cmdv($cmdv)), 10) * 1024;
}
} else {
$this->size = @filesize($this->path);
}
$this->is_content_fetched = false; $this->is_content_fetched = false;
} }

View file

@ -6,13 +6,6 @@ class Thumb {
private static $AVCONV_CMD = "avconv -ss 0:01:00 -i [SOURCE] -an -vframes 1 [TARGET]"; private static $AVCONV_CMD = "avconv -ss 0:01:00 -i [SOURCE] -an -vframes 1 [TARGET]";
private static $CONVERT_CMD = "convert -strip [SOURCE][0] [TARGET]"; private static $CONVERT_CMD = "convert -strip [SOURCE][0] [TARGET]";
private static $THUMB_CACHE = "thumbs"; private static $THUMB_CACHE = "thumbs";
private static $CAPTURE_CACHE = "captures";
public static final function is_supported() {
return Image::is_supported();
}
private $app, $thumbs_path, $thumbs_href; private $app, $thumbs_path, $thumbs_href;
@ -65,7 +58,7 @@ class Thumb {
$et = false; $et = false;
$opts = $this->app->get_options(); $opts = $this->app->get_options();
if ($opts["thumbnails"]["exif"] === true && function_exists("exif_thumbnail")) { if (HAS_PHP_EXIF && $opts["thumbnails"]["exif"] === true) {
$et = @exif_thumbnail($source_path); $et = @exif_thumbnail($source_path);
} }
if($et !== false) { if($et !== false) {
@ -116,17 +109,6 @@ class Image {
private $source_file, $source, $width, $height, $type, $dest; private $source_file, $source, $width, $height, $type, $dest;
public static final function is_supported() {
if (!function_exists("gd_info")) {
return false;
}
$gdinfo = gd_info();
return array_key_exists("JPG Support", $gdinfo) && $gdinfo["JPG Support"] || array_key_exists("JPEG Support", $gdinfo) && $gdinfo["JPEG Support"];
}
public function __construct($filename = null) { public function __construct($filename = null) {
$this->source_file = null; $this->source_file = null;