/**
* render
*
* @since 2.6.0
*
* @param string $directory
* @param array $optionArray
*
* @return string
*/
public static function render($directory = null, $optionArray = [])
{
$output = null;
$outputItem = null;
/* html elements */
$listElement = new Html\Element();
$listElement->init('ul', ['class' => self::$_configArray['className']['list']]);
/* handle option */
if ($optionArray['hash']) {
$optionArray['hash'] = '#' . $optionArray['hash'];
}
/* handle query */
$directoryQuery = Request::getQuery('directory');
$directoryQueryArray = explode('/', $directoryQuery);
/* parent directory */
if ($directoryQueryArray[0] === $directory && $directory !== $directoryQuery) {
$pathFilter = new Filter\Path();
$rootDirectory = $directory;
$directory = $pathFilter->sanitize($directoryQuery);
$parentDirectory = $pathFilter->sanitize(dirname($directory));
$outputItem .= self::_renderParent($rootDirectory, $parentDirectory, $optionArray);
}
/* has directory */
if (is_dir($directory)) {
$outputItem .= self::_renderItem($directory, $optionArray);
/* collect list output */
if ($outputItem) {
$output = $listElement->html($outputItem);
}
} else {
self::setNotification('error', Language::get('directory_not_found') . Language::get('colon') . ' ' . $directory . Language::get('point'));
}
return $output;
}