/** * 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; }
/** * testQuery * * @since 2.2.0 */ public function testQuery() { /* setup */ Request::setQuery('testKey', 'testValue'); /* result */ $result = Request::getQuery('testKey'); /* compare */ $this->assertEquals('testValue', $result); }
/** * 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; }
/** * render * * @since 2.3.0 * * @param string $table * * @return string */ public static function render($table = 'articles') { $output = ''; /* fetch result */ $result = Db::forTablePrefix($table)->where('status', 1)->where('access', 0)->where('language', Request::getQuery('l') ? Registry::get('language') : '')->orderGlobal('rank')->limitGlobal()->findArray(); /* process result */ if ($result) { $route = Registry::get('root') . '/' . Registry::get('rewriteRoute') . Registry::get('fullRoute'); if (Request::getQuery('l')) { $route .= Registry::get('languageRoute') . Registry::get('language'); } $title = Db::getSettings('title'); $description = Db::getSettings('description'); $author = Db::getSettings('author'); $copyright = Db::getSettings('copyright'); /* collect output */ $output = '<?xml version="1.0" encoding="' . Db::getSettings('charset') . '"?>'; $output .= '<feed xmlns="http://www.w3.org/2005/Atom">'; $output .= '<id>' . $route . '</id>'; $output .= '<link type="application/atom+xml" href="' . $route . '" rel="self" />'; $output .= '<updated>' . date('c', strtotime(Registry::get('now'))) . '</updated>'; /* title */ if ($title) { $output .= '<title>' . $title . '</title>'; } /* description */ if ($description) { $output .= '<subtitle>' . $description . '</subtitle>'; } /* author */ if ($author) { $output .= '<author><name>' . $author . '</name></author>'; } /* copyright */ if ($copyright) { $output .= '<rights>' . $copyright . '</rights>'; } /* generator */ $output .= '<generator>' . Language::get('name', '_package') . ' ' . Language::get('version', '_package') . '</generator>'; /* collect body output */ foreach ($result as $value) { $route = Registry::get('root') . '/' . Registry::get('rewriteRoute'); $route .= $value['category'] < 1 ? $value['alias'] : build_route($table, $value['id']); /* collect entry output */ $output .= '<entry>'; $output .= '<id>' . $route . '</id>'; $output .= '<link href="' . $route . '" />'; $output .= '<updated>' . date('c', strtotime($value['date'])) . '</updated>'; /* title */ $output .= '<title>' . ($table === 'comments' ? $value['author'] : $value['title']) . '</title>'; /* description */ if ($value['description']) { $output .= '<summary>' . $value['description'] . '</summary>'; } /* text */ $output .= '<content>' . strip_tags($value['text']) . '</content>'; /* author */ if ($value['author']) { $output .= '<author><name>' . $value['author'] . '</name></author>'; } $output .= '</entry>'; } $output .= '</feed>'; } return $output; }
/** * init the class * * @since 2.1.0 */ public function init() { $this->_detect(array('query' => Request::getQuery('t'), 'session' => Request::getSession($this->_registry->get('root') . '/template'), 'contents' => $this->_registry->get('lastTable') ? Db::forPrefixTable($this->_registry->get('lastTable'))->where('id', $this->_registry->get('lastId'))->findOne()->template : null, 'settings' => Db::getSettings('template'), 'fallback' => 'default'), 'template', 'templates/{value}/index.phtml'); }
/** * init the class * * @since 2.1.0 */ public function init() { $this->_detect(array('query' => Request::getQuery('l'), 'session' => Request::getSession($this->_registry->get('root') . '/language'), 'contents' => $this->_registry->get('lastTable') ? Db::forPrefixTable($this->_registry->get('lastTable'))->where('id', $this->_registry->get('lastId'))->findOne()->language : null, 'settings' => Db::getSettings('language'), 'browser' => substr(Request::getServer('HTTP_ACCEPT_LANGUAGE'), 0, 2), 'fallback' => 'en'), 'language', 'languages/{value}.json'); }