mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-24 12:07:10 -04:00
Reduce CURRENT_PATH deps.
This commit is contained in:
parent
d0f7f586e8
commit
a74e849faf
4 changed files with 15 additions and 10 deletions
|
@ -42,6 +42,7 @@ modulejs.define('ext/download', ['_', '$', 'core/event', 'core/location', 'core/
|
||||||
action: 'download',
|
action: 'download',
|
||||||
as: name + '.' + extension,
|
as: name + '.' + extension,
|
||||||
type: type,
|
type: type,
|
||||||
|
baseHref: location.getAbsHref(),
|
||||||
hrefs: _.pluck(selectedItems, 'absHref').join('|:|')
|
hrefs: _.pluck(selectedItems, 'absHref').join('|:|')
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ class Api {
|
||||||
|
|
||||||
$as = Util::get_request_param("as");
|
$as = Util::get_request_param("as");
|
||||||
$type = Util::get_request_param("type");
|
$type = Util::get_request_param("type");
|
||||||
|
$base_href = Util::get_request_param("baseHref");
|
||||||
$hrefs = Util::get_request_param("hrefs");
|
$hrefs = Util::get_request_param("hrefs");
|
||||||
|
|
||||||
$archive = new Archive($this->app);
|
$archive = new Archive($this->app);
|
||||||
|
@ -108,7 +109,7 @@ class Api {
|
||||||
header("Content-Type: application/octet-stream");
|
header("Content-Type: application/octet-stream");
|
||||||
header("Content-Disposition: attachment; filename=\"$as\"");
|
header("Content-Disposition: attachment; filename=\"$as\"");
|
||||||
header("Connection: close");
|
header("Connection: close");
|
||||||
$rc = $archive->output($type, $hrefs);
|
$rc = $archive->output($type, $base_href, $hrefs);
|
||||||
|
|
||||||
Util::json_fail(Util::ERR_FAILED, "packaging failed", $rc !== 0);
|
Util::json_fail(Util::ERR_FAILED, "packaging failed", $rc !== 0);
|
||||||
exit;
|
exit;
|
||||||
|
|
|
@ -6,7 +6,7 @@ class Archive {
|
||||||
private static $TAR_PASSTHRU_CMD = "cd [ROOTDIR] && tar --no-recursion -c -- [DIRS] [FILES]";
|
private static $TAR_PASSTHRU_CMD = "cd [ROOTDIR] && tar --no-recursion -c -- [DIRS] [FILES]";
|
||||||
private static $ZIP_PASSTHRU_CMD = "cd [ROOTDIR] && zip - -- [FILES]";
|
private static $ZIP_PASSTHRU_CMD = "cd [ROOTDIR] && zip - -- [FILES]";
|
||||||
|
|
||||||
private $app, $dirs, $files;
|
private $app, $base_path, $dirs, $files;
|
||||||
|
|
||||||
|
|
||||||
public function __construct($app) {
|
public function __construct($app) {
|
||||||
|
@ -15,7 +15,12 @@ class Archive {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function output($type, $urls) {
|
public function output($type, $base_url, $urls) {
|
||||||
|
|
||||||
|
$this->base_path = $this->app->to_path($base_url);
|
||||||
|
if (!$this->app->is_managed_path($this->base_path)) {
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
|
|
||||||
$this->dirs = array();
|
$this->dirs = array();
|
||||||
$this->files = array();
|
$this->files = array();
|
||||||
|
@ -24,9 +29,9 @@ class Archive {
|
||||||
|
|
||||||
if (count($this->dirs) === 0 && count($this->files) === 0) {
|
if (count($this->dirs) === 0 && count($this->files) === 0) {
|
||||||
if ($type === "php-tar") {
|
if ($type === "php-tar") {
|
||||||
$this->add_dir(CURRENT_PATH, "/");
|
$this->add_dir($this->base_path, "/");
|
||||||
} else {
|
} else {
|
||||||
$this->add_dir(CURRENT_PATH, ".");
|
$this->add_dir($this->base_path, ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +53,7 @@ class Archive {
|
||||||
|
|
||||||
private function shell_cmd($cmd) {
|
private function shell_cmd($cmd) {
|
||||||
|
|
||||||
$cmd = str_replace("[ROOTDIR]", escapeshellarg(CURRENT_PATH), $cmd);
|
$cmd = str_replace("[ROOTDIR]", escapeshellarg($this->base_path), $cmd);
|
||||||
$cmd = str_replace("[DIRS]", count($this->dirs) ? implode(" ", array_map("escapeshellarg", $this->dirs)) : "", $cmd);
|
$cmd = str_replace("[DIRS]", count($this->dirs) ? implode(" ", array_map("escapeshellarg", $this->dirs)) : "", $cmd);
|
||||||
$cmd = str_replace("[FILES]", count($this->files) ? implode(" ", array_map("escapeshellarg", $this->files)) : "", $cmd);
|
$cmd = str_replace("[FILES]", count($this->files) ? implode(" ", array_map("escapeshellarg", $this->files)) : "", $cmd);
|
||||||
try {
|
try {
|
||||||
|
@ -159,7 +164,7 @@ class Archive {
|
||||||
if ($this->app->is_managed_url($d) && !$this->app->is_hidden($n)) {
|
if ($this->app->is_managed_url($d) && !$this->app->is_hidden($n)) {
|
||||||
|
|
||||||
$real_file = $this->app->to_path($href);
|
$real_file = $this->app->to_path($href);
|
||||||
$archived_file = preg_replace("!^" . preg_quote(Util::normalize_path(CURRENT_PATH, true)) . "!", "", $real_file);
|
$archived_file = preg_replace("!^" . preg_quote(Util::normalize_path($this->base_path, true)) . "!", "", $real_file);
|
||||||
|
|
||||||
if (is_dir($real_file)) {
|
if (is_dir($real_file)) {
|
||||||
$this->add_dir($real_file, $archived_file);
|
$this->add_dir($real_file, $archived_file);
|
||||||
|
|
|
@ -9,10 +9,8 @@ describe('view', function () {
|
||||||
this.storeKey = '_h5ai';
|
this.storeKey = '_h5ai';
|
||||||
this.xConfig = {
|
this.xConfig = {
|
||||||
setup: {
|
setup: {
|
||||||
API: true,
|
|
||||||
APP_HREF: util.uniqPath('-APP/'),
|
APP_HREF: util.uniqPath('-APP/'),
|
||||||
ROOT_HREF: util.uniqPath('-ROOT/'),
|
ROOT_HREF: util.uniqPath('-ROOT/')
|
||||||
CURRENT_HREF: util.uniqPath('-CURRENT/')
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue