protected function DisplayFileList::processServerFileList in Filebrowser 3.x
Same name and namespace in other branches
- 8.2 src/File/DisplayFileList.php \Drupal\filebrowser\File\DisplayFileList::processServerFileList()
1 call to DisplayFileList::processServerFileList()
- DisplayFileList::createFileDisplayList in src/
File/ DisplayFileList.php - Creates the data required to build the Filebrowser listing in following steps
File
- src/
File/ DisplayFileList.php, line 190
Class
- DisplayFileList
- Class FileDisplayList @package Drupal\filebrowser This class holds the list of files to be displayed on the filebrowser node. These files are retrieved from the filesystem and filtered for user and node access. The array produced by this class…
Namespace
Drupal\filebrowser\FileCode
protected function processServerFileList() {
/** @var /Drupal/filebrowser/File/DisplayFile $result_file */
$stats = [
'folders_count' => 0,
'files_count' => 0,
'total_size' => 0,
];
$encoding = $this->node->filebrowser->encoding;
// get the DB_contents for this nid
// first time after node creation $db_content = NULL; there is nothing in the DB
// If there is content it will return a filename as key, with next indexes:
// array ('nid' => '1', 'fid' => '3', 'root' => '/', 'path' => '/',)
$db_content = $this->storage
->loadRecordsFromRoot($this->node
->id(), $this->relativePath);
// debug($db_content, 'DB CONTENT');
// Iterate over file list from the server
if (!is_null($this->serverFileList)) {
foreach ($this->serverFileList as $key => $fs_file) {
// Build file relative path
$file_relative_path = $this
->buildFileRelativePath($fs_file->filename, $encoding);
// Build database file record if it doesn't exists
if (!isset($db_content[$file_relative_path])) {
$db_content[$file_relative_path] = [
'exists' => true,
'nid' => $this->node
->id(),
'root' => $this->relativePath,
'path' => $file_relative_path,
'description' => $this
->t('No description.'),
'file_data' => $fs_file,
];
}
$db_content[$file_relative_path]['exists'] = true;
$db_content[$file_relative_path]['display_name'] = $fs_file->filename;
$result_file = new DisplayFile($this->node
->id());
$result_file
->fileSetData($file_relative_path, $fs_file, $stats, $db_content[$file_relative_path], $this->fsRoot);
$result_list[$fs_file->filename] = $result_file;
}
}
// The abstracted filesystem does not provide . and .. files. Therefore
// we will create them manually
if ($this->isSubDir) {
$subDir = new DisplayFile($this->node
->id());
// Create the .. file data
$result_list['..'] = $subDir
->createSubdir($this->relativePath);
// Create the . file data
$file = new DisplayFile($this->node
->id());
$result_list['.'] = $file
->createUpDir($this->relativePath);
// Set DB content for Up-directory. In this case the '/' folder
$this
->createUpDirContent($db_content['/']);
//set DB record for current directory (. file)
if (!isset($db_content[$this->relativePath])) {
$db_content[$this->relativePath] = [
'exists' => TRUE,
'nid' => $this->node
->id(),
'root' => $this->relativePath,
'path' => $this->relativePath,
];
}
$db_content[$this->relativePath]['exists'] = true;
$db_content[$this->relativePath]['display_name'] = '.';
}
else {
// not a sub dir so we only set the . file and / DB data
if (!isset($db_content['/'])) {
$db_content['/'] = [
'nid' => $this->node
->id(),
'root' => '/',
'path' => '/',
];
}
$db_content['/']['exists'] = true;
$db_content['/']['display_name'] = '.';
// changes to the File System Array
$result_file = new DisplayFile($this->node
->id());
$result_list['.'] = $result_file
->createUpDir($this->relativePath);
}
//debug($db_content, 'END DB CONTENT');
// Set global folder properties
$this->data['stats'] = $this
->buildStatistics($result_list);
$this->data['relative_path'] = $this->relativePath;
$this
->dbSync($db_content, $result_list, $this->data);
return $result_list;
}