summaryrefslogtreecommitdiff
path: root/modules/server_add/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'modules/server_add/controllers')
-rw-r--r--modules/server_add/controllers/admin_server_add.php4
-rw-r--r--modules/server_add/controllers/server_add.php22
2 files changed, 17 insertions, 9 deletions
diff --git a/modules/server_add/controllers/admin_server_add.php b/modules/server_add/controllers/admin_server_add.php
index 7cd82d60..38190fee 100644
--- a/modules/server_add/controllers/admin_server_add.php
+++ b/modules/server_add/controllers/admin_server_add.php
@@ -36,7 +36,7 @@ class Admin_Server_Add_Controller extends Admin_Controller {
if ($form->validate()) {
if (is_link($form->add_path->path->value)) {
$form->add_path->path->add_error("is_symlink", 1);
- } else if (! is_readable($form->add_path->path->value)) {
+ } else if (!is_readable($form->add_path->path->value)) {
$form->add_path->path->add_error("not_readable", 1);
} else {
$path = $form->add_path->path->value;
@@ -73,7 +73,7 @@ class Admin_Server_Add_Controller extends Admin_Controller {
$directories = array();
$path_prefix = $this->input->get("q");
foreach (glob("{$path_prefix}*") as $file) {
- if (is_dir($file)) {
+ if (is_dir($file) && !is_link($file)) {
$directories[] = $file;
}
}
diff --git a/modules/server_add/controllers/server_add.php b/modules/server_add/controllers/server_add.php
index 26b3bd08..9769cd6f 100644
--- a/modules/server_add/controllers/server_add.php
+++ b/modules/server_add/controllers/server_add.php
@@ -137,17 +137,25 @@ class Server_Add_Controller extends Admin_Controller {
// form [path, parent_id] where the parent_id refers to another Server_Add_File_Model. We
// have this extra level of abstraction because we don't know its Item_Model id yet.
$queue = $task->get("queue");
+ $paths = unserialize(module::get_var("server_add", "authorized_paths"));
+
while ($queue && microtime(true) - $start < 0.5) {
list($file, $parent_entry_id) = array_shift($queue);
- $entry = ORM::factory("server_add_file");
- $entry->task_id = $task->id;
- $entry->file = $file;
- $entry->parent_id = $parent_entry_id;
- $entry->save();
+ // Ignore the staging directories as directories to be imported.
+ if (empty($paths[$file])) {
+ $entry = ORM::factory("server_add_file");
+ $entry->task_id = $task->id;
+ $entry->file = $file;
+ $entry->parent_id = $parent_entry_id;
+ $entry->save();
+ $entry_id = $entry->id;
+ } else {
+ $entry_id = null;
+ }
foreach (glob("$file/*") as $child) {
if (is_dir($child)) {
- $queue[] = array($child, $entry->id);
+ $queue[] = array($child, $entry_id);
} else {
$ext = strtolower(pathinfo($child, PATHINFO_EXTENSION));
if (in_array($ext, array("gif", "jpeg", "jpg", "png", "flv", "mp4")) &&
@@ -155,7 +163,7 @@ class Server_Add_Controller extends Admin_Controller {
$child_entry = ORM::factory("server_add_file");
$child_entry->task_id = $task->id;
$child_entry->file = $child;
- $child_entry->parent_id = $entry->id;
+ $child_entry->parent_id = $entry_id;
$child_entry->save();
}
}