public function getParametersForDisplay($pa_rec) { $va_parameters = caUnserializeForDatabase($pa_rec["parameters"]); $va_params = array(); $o_config = Configuration::load(); $vs_batch_media_import_root_directory = $o_config->get('batch_media_import_root_directory'); $vs_relative_directory = preg_replace("!{$vs_batch_media_import_root_directory}[/]*!", "", $va_parameters["importFromDirectory"]); $va_params['importFromDirectory'] = array('label' => _t("Importing media from"), 'value' => "/" . $vs_relative_directory); if (file_exists($va_parameters["importFromDirectory"])) { $va_counts = caGetDirectoryContentsCount($va_parameters["importFromDirectory"], $va_parameters["includeSubDirectories"], false); $va_params['number_of_files'] = array('label' => _t("Files to import"), 'value' => (int) $va_counts['files']); } return $va_params; }
/** * Return contents of specified import sub-directory */ public function GetDirectoryLevel() { if (!$this->request->isLoggedIn() || !$this->request->user->canDoAction('can_use_plugin_tools')) { $this->response->setRedirect($this->request->config->get('error_display_url') . '/n/3500?r=' . urlencode($this->request->getFullUrlPath())); return; } $ps_id = $this->request->getParameter('id', pString); $pn_max = $this->request->getParameter('max', pString); $vs_root_directory = $this->request->config->get('batch_media_import_root_directory'); $va_level_data = array(); if ($this->request->getParameter('init', pInteger)) { // // On first load (init) of browser load all levels in single request // $va_tmp = explode(";", $ps_id); $va_acc = array(); foreach ($va_tmp as $vs_tmp) { list($vs_directory, $vn_start) = explode(":", $vs_tmp); if (!$vs_directory) { continue; } $va_tmp = explode('/', $vs_directory); $vs_k = array_pop($va_tmp); if (!$vs_k) { $vs_k = '/'; } $va_level_data[$vs_k] = $va_file_list = $this->_getDirectoryListing($vs_root_directory . '/' . $vs_directory, false, 20, (int) $vn_start, (int) $pn_max); $va_level_data[$vs_k]['_primaryKey'] = 'name'; $va_counts = caGetDirectoryContentsCount($vs_root_directory . '/' . $vs_directory, false, false); $va_level_data[$vs_k]['_itemCount'] = $va_counts['files'] + $va_counts['directories']; } } else { list($ps_directory, $pn_start) = explode(":", $ps_id); if (!$ps_directory) { $va_level_data[$vs_k] = array('/' => array('item_id' => '/', 'name' => 'Root', 'type' => 'DIR', 'children' => 1)); $va_level_data[$vs_k]['_primaryKey'] = 'name'; $va_level_data[$vs_k]['_itemCount'] = 1; } else { $va_tmp = explode('/', $ps_directory); $vs_k = array_pop($va_tmp); if (!$vs_k) { $vs_k = '/'; } $va_level_data[$vs_k] = $va_file_list = $this->_getDirectoryListing($vs_root_directory . '/' . $ps_directory, false, 20, (int) $pn_start, (int) $pn_max); $va_level_data[$vs_k]['_primaryKey'] = 'name'; $va_counts = caGetDirectoryContentsCount($vs_root_directory . '/' . $ps_directory, false, false); $va_level_data[$vs_k]['_itemCount'] = $va_counts['files'] + $va_counts['directories']; } } $this->view->setVar('directory_list', $va_level_data); $this->render('tools/directory_level_json.php'); }
/** * Returns counts of files and directories for the directory $dir and, optionally, all sub-directories. * * @param string $dir The path to the directory you wish to get the contents list for * @param bool $pb_recursive Optional. By default caGetDirectoryContentsAsList() will recurse through all sub-directories of $dir; set this to false to only consider files that are in $dir itself. * @param bool $pb_include_hidden_files Optional. By default caGetDirectoryContentsAsList() does not consider hidden files (files starting with a '.') when calculating file counts. Set this to true to include hidden files in counts. Note that the special UNIX '.' and '..' directory entries are *never* counted as files. * @return array An array of counts with two keys: 'directories' and 'files' */ function caGetDirectoryContentsCount($dir, $pb_recursive = true, $pb_include_hidden_files = false) { $vn_file_count = 0; if (substr($dir, -1, 1) == "/") { $dir = substr($dir, 0, strlen($dir) - 1); } $va_counts = array('directories' => 0, 'files' => 0); if ($handle = @opendir($dir)) { while (false !== ($item = readdir($handle))) { if ($item != "." && $item != ".." && ($pb_include_hidden_files || !$pb_include_hidden_files && $item[0] !== '.')) { $vb_is_dir = is_dir("{$dir}/{$item}"); if ($vb_is_dir) { $va_counts['directories']++; } if ($pb_recursive && $vb_is_dir) { $va_recursive_counts = caGetDirectoryContentsCount("{$dir}/{$item}", true, $pb_include_hidden_files); $va_counts['files'] += $va_recursive_counts['files']; $va_counts['directories'] += $va_recursive_counts['directories']; } else { if (!$vb_is_dir) { $va_counts['files']++; } } } } closedir($handle); } return $va_counts; }
public function GetDirectoryLevel() { $ps_id = $this->request->getParameter('id', pString); $pn_max = $this->request->getParameter('max', pString); $vs_root_directory = $this->request->config->get('batch_media_import_root_directory'); $va_level_data = array(); if ($this->request->getParameter('init', pInteger)) { // // On first load (init) of browser load all levels in single request // $va_tmp = explode(";", $ps_id); $va_acc = array(); $vn_i = 0; foreach ($va_tmp as $vs_tmp) { list($vs_directory, $vn_start) = explode(":", $vs_tmp); if (!$vs_directory) { continue; } $va_tmp = explode('/', $vs_directory); $vs_k = array_pop($va_tmp); if (!$vs_k) { $vs_k = '/'; } $va_level_data["{$vs_k}|{$vn_i}"] = $va_file_list = $this->_getDirectoryListing($vs_root_directory . '/' . $vs_directory, false, 20, (int) $vn_start, (int) $pn_max); $va_level_data["{$vs_k}|{$vn_i}"]['_primaryKey'] = 'name'; $va_counts = caGetDirectoryContentsCount($vs_root_directory . '/' . $vs_directory, false, false); $va_level_data["{$vs_k}|{$vn_i}"]['_itemCount'] = $va_counts['files'] + $va_counts['directories']; $vn_i++; } } else { list($ps_directory, $pn_start) = explode(":", $ps_id); $va_tmp = explode('/', $ps_directory); $vn_level = sizeof($va_tmp); if ($ps_directory[0] == '/') { $vn_level--; } if (!$ps_directory) { $va_level_data["{$vs_k}|{$vn_level}"] = array('/' => array('item_id' => '/', 'name' => 'Root', 'type' => 'DIR', 'children' => 1)); $va_level_data["{$vs_k}|{$vn_level}"]['_primaryKey'] = 'name'; $va_level_data["{$vs_k}|{$vn_level}"]['_itemCount'] = 1; } else { $va_tmp = explode('/', $ps_directory); $vs_k = array_pop($va_tmp); if (!$vs_k) { $vs_k = '/'; } $va_level_data["{$vs_k}|{$vn_level}"] = $va_file_list = $this->_getDirectoryListing($vs_root_directory . '/' . $ps_directory, false, 20, (int) $pn_start, (int) $pn_max); $va_level_data["{$vs_k}|{$vn_level}"]['_primaryKey'] = 'name'; $va_counts = caGetDirectoryContentsCount($vs_root_directory . '/' . $ps_directory, false, false); $va_level_data["{$vs_k}|{$vn_level}"]['_itemCount'] = $va_counts['files'] + $va_counts['directories']; } } $this->view->setVar('directory_list', caSanitizeArray($va_level_data)); $this->render('mediaimport/directory_level_json.php'); }