Since: 2.6.0
Author: Henry Ruhs
Inheritance: implements Redaxscript\Filter\FilterInterface
Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * testPath
  *
  * @since 2.6.0
  *
  * @param string $path
  * @param string $expect
  *
  * @dataProvider providerPath
  */
 public function testPath($path = null, $expect = null)
 {
     /* setup */
     $filter = new Filter\Path();
     /* actual */
     $actual = $filter->sanitize($path);
     /* compare */
     $this->assertEquals($expect, $actual);
 }
 /**
  * render
  *
  * @since 2.6.0
  *
  * @param string $directory
  * @param array $options
  *
  * @return string
  */
 public static function render($directory = null, $options = null)
 {
     $output = null;
     $outputDirectory = null;
     $outputFile = null;
     /* hash option */
     if ($options['hash']) {
         $hashString = '#' . $options['hash'];
     }
     /* handle query */
     $directoryQuery = Request::getQuery('d');
     if ($directoryQuery && $directory !== $directoryQuery) {
         $pathFilter = new Filter\Path();
         $directory = $pathFilter->sanitize($directoryQuery);
         $parentDirectory = $pathFilter->sanitize(dirname($directory));
     }
     /* has directory */
     if (is_dir($directory)) {
         /* html elements */
         $linkElement = new Html\Element();
         $linkElement->init('a', array('class' => self::$_config['className']['link']));
         $textSizeElement = new Html\Element();
         $textSizeElement->init('span', array('class' => self::$_config['className']['textSize']));
         $textDateElement = new Html\Element();
         $textDateElement->init('span', array('class' => self::$_config['className']['textDate']));
         $listElement = new Html\Element();
         $listElement->init('ul', array('class' => self::$_config['className']['list']));
         /* list directory object */
         $listDirectory = new Directory();
         $listDirectory->init($directory);
         $listDirectoryArray = $listDirectory->getArray();
         /* date format */
         $dateFormat = Db::getSettings('date');
         /* parent directory */
         if (is_dir($parentDirectory)) {
             $outputDirectory .= '<li>';
             $outputDirectory .= $linkElement->copy()->attr(array('href' => Registry::get('rewriteRoute') . Registry::get('fullRoute') . '&d=' . $parentDirectory . $hashString, 'title' => Language::get('directory_parent', '_directory_lister')))->addClass(self::$_config['className']['types']['directoryParent'])->text(Language::get('directory_parent', '_directory_lister'));
             $outputDirectory .= '</li>';
         }
         /* process directory */
         foreach ($listDirectoryArray as $key => $value) {
             $path = $directory . '/' . $value;
             $fileExtension = pathinfo($path, PATHINFO_EXTENSION);
             $text = $value;
             /* replace option */
             if ($options['replace']) {
                 foreach ($options['replace'] as $replaceKey => $replaceValue) {
                     if ($replaceKey === self::$_config['replaceKey']['extension']) {
                         $replaceKey = $fileExtension;
                     }
                     $text = str_replace($replaceKey, $replaceValue, $text);
                 }
             }
             /* handle directory */
             if (is_dir($path)) {
                 $outputDirectory .= '<li>';
                 $outputDirectory .= $linkElement->copy()->attr(array('href' => Registry::get('rewriteRoute') . Registry::get('fullRoute') . '&d=' . $path . $hashString, 'title' => Language::get('directory', '_directory_lister')))->addClass(self::$_config['className']['types']['directory'])->text($text);
                 $outputDirectory .= $textSizeElement->copy();
                 $outputDirectory .= $textDateElement->copy()->text(date($dateFormat, filectime($path)));
                 $outputDirectory .= '</li>';
             } else {
                 if (is_file($path)) {
                     if (array_key_exists($fileExtension, self::$_config['extension'])) {
                         $fileType = self::$_config['extension'][$fileExtension];
                         $outputFile .= '<li>';
                         $outputFile .= $linkElement->copy()->attr(array('href' => $path, 'target' => '_blank', 'title' => Language::get('file', '_directory_lister')))->addClass(self::$_config['className']['types'][$fileType])->text($text);
                         $outputFile .= $textSizeElement->copy()->attr('data-unit', self::$_config['size']['unit'])->html(ceil(filesize($path) / self::$_config['size']['divider']));
                         $outputFile .= $textDateElement->copy()->html(date($dateFormat, filectime($path)));
                         $outputFile .= '</li>';
                     }
                 }
             }
         }
         /* collect list output */
         if ($outputDirectory || $outputFile) {
             $output = $listElement->html($outputDirectory . $outputFile);
         }
     }
     return $output;
 }