Example #1
0
 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');
 }
Example #3
0
/**
 * 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');
 }