function importDir($parent, $path) { global $abspath; $logtext = ""; $node_id = getNode($parent->getPath()."/".basename($path)); if ($node_id <= 0) { $node_id = createObject($parent, basename($path), "file_folder"); $logtext .= "Created ".$parent->getPathInTree()."/".basename($path)."<br/>"; if ($node_id === false) return false; } $new_parent = new mObject($node_id); $subitems = GetSubfilesAndSubfolders($path); foreach ($subitems as $subitem) { if (is_dir("$path/$subitem")) $logtext .= importDir($new_parent, "$path/$subitem"); else { createObject($new_parent, $subitem, "file", array("file" => "$subitem:$path/$subitem")); $logtext .= "Created ".$new_parent->getPathInTree()."/$subitem<br/>"; } } return $logtext; }
function actionImport_upload(&$system, $args) { global $abspath; $chroot = "$abspath/upload"; $object = new mObject($this->getNodeId($args)); if ($object->getNodeId() <= 0) { $system->addAlert(ucf(i18n("invalid upload target"))); return; } if (!$object->hasRight("write")) { $system->addAlert(ucf(i18n("not enough rights"))); return; } // Validate path... only folders under upload if (count($args['filenames']) == 0) { $system->addAlert(ucf(i18n("you must select some files or folders to import"))); return; } $path = empty($args['path']) ? "/" : urldecode($args['path']); $fullpath = extractPath("$chroot$path"); $testpath = substr($fullpath, 0, strlen($chroot)); if ($testpath != $chroot) { $system->addAlert(ucf(i18n("this path is not allowed"))); return; } $logtext = "<strong>Beginning import from upload folder</strong> - ".date("Y-m-d H:i:s")."<hr/>"; foreach ($args['filenames'] as $filename) { if (is_dir("$fullpath$filename")) { $logtext .= importDir($object, "$fullpath$filename"); } else if (is_file("$fullpath$filename")) { createObject($object, $filename, "file", array("file" => "$filename:$fullpath$filename")); $logtext .= "Created ".$object->getPathInTree()."/$filename<br/>"; } else $logtext .= "Did not find $path$filename - skipping<br/>"; } $logtext .= "<hr/><strong>Finished import</strong> - ".date("Y-m-d H:i:s")."<br/><br/>"; $system->paddZoneData("zone_import_log", utf8e($logtext)); }