/** * render * * @since 3.0.0 * * @param string $url * @param array $optionArray * * @return string */ public static function render($url = null, $optionArray = []) { $counter = 0; $output = null; /* html elements */ $titleElement = new Html\Element(); $titleElement->init('h3', ['class' => self::$_configArray['className']['title']]); $linkElement = new Html\Element(); $linkElement->init('a', ['target' => '_blank']); $boxElement = new Html\Element(); $boxElement->init('div', ['class' => self::$_configArray['className']['box']]); /* load result */ $reader = new Reader(); $result = $reader->loadXML($url)->getObject(); $result = $result->entry ? $result->entry : $result->channel->item; /* process result */ if ($result) { foreach ($result as $value) { if ($counter++ < $optionArray['limit']) { $linkElement->attr('href', $value->link->attributes()->href ? $value->link->attributes()->href : $value->link)->text($value->title); /* collect output */ $output .= $titleElement->html($linkElement) . $boxElement->text($value->summary ? $value->summary : $value->description); } } } else { self::setNotification('error', Language::get('url_incorrect') . Language::get('point')); } return $output; }
/** * renderTemplate * * @since 3.0.0 * * @return mixed */ public static function renderTemplate() { $registry = Registry::getInstance(); $request = Request::getInstance(); $language = Language::getInstance(); /* handle notification */ if (!is_dir(self::$_configArray['directory']) && !mkdir(self::$_configArray['directory'])) { self::setNotification('error', $language->get('directory_not_found') . $language->get('colon') . ' ' . self::$_configArray['directory'] . $language->get('point')); } /* prevent as needed */ if ($request->getPost() || $registry->get('noCache')) { return false; } /* cache as needed */ $cache = new Cache(); $cache->init(self::$_configArray['directory'], self::$_configArray['extension']); $fullRoute = $registry->get('fullRoute'); /* load from cache */ if ($cache->validate($fullRoute, self::$_configArray['lifetime'])) { $raw = $cache->retrieve($fullRoute); $content = preg_replace('/' . self::$_configArray['tokenPlaceholder'] . '/', $registry->get('token'), self::_uncompress($raw)); return ['header' => function_exists('gzdeflate') ? 'content-encoding: deflate' : null, 'content' => self::_compress($content)]; } else { $raw = Template\Tag::partial('templates/' . $registry->get('template') . '/index.phtml'); $content = preg_replace('/' . $registry->get('token') . '/', self::$_configArray['tokenPlaceholder'], $raw); $cache->store($fullRoute, self::_compress($content)); return ['content' => $raw]; } }
/** * renderStart * * @since 2.2.0 */ public static function renderStart() { if (Registry::get('firstParameter') === 'preview') { Registry::set('title', Language::get('preview', '_preview')); Registry::set('description', Language::get('description', '_preview')); Registry::set('centerBreak', true); } }
/** * setUp * * @since 3.0.0 */ public function setUp() { $this->_registry = Registry::getInstance(); $this->_language = Language::getInstance(); $this->_request = Request::getInstance(); $this->_config = Config::getInstance(); $this->_configArray = $this->_config->get(); $this->_config->set('dbPrefix', 'controller_'); }
/** * render * * @since 2.2.0 * * @return string */ public static function render() { $output = null; $outputItem = null; /* html elements */ $titleElement = new Html\Element(); $titleElement->init('h3', array('class' => self::$_config['className']['title'])); $linkElement = new Html\Element(); $linkElement->init('a'); $listElement = new Html\Element(); $listElement->init('ul', array('class' => self::$_config['className']['list'])); /* fetch articles */ $articles = Db::forTablePrefix('articles')->where('status', 1)->whereIn('language', array(Registry::get('language'), ''))->orderByDesc('category')->findArray(); /* process articles */ if (!$articles) { $error = Language::get('article_no') . Language::get('point'); } else { $accessValidator = new Validator\Access(); $accessDeny = 0; $lastCategory = 0; foreach ($articles as $value) { if ($accessValidator->validate($value['access'], Registry::get('myGroups')) === Validator\ValidatorInterface::PASSED) { $currentCategory = $value['category']; /* collect output */ if ($lastCategory != $currentCategory) { if ($lastCategory > 0) { $output .= $listElement->html($outputItem); $outputItem = null; } $output .= $titleElement->text($currentCategory < 1 ? Language::get('uncategorized') : Db::forTablePrefix('categories')->whereIdIs($currentCategory)->findOne()->title); } /* collect item output */ $outputItem .= '<li>'; $outputItem .= $linkElement->attr(array('href' => $value['category'] < 1 ? $value['alias'] : build_route('articles', $value['id']), 'title' => $value['description'] ? $value['description'] : $value['title']))->text($value['title']); $outputItem .= '</li>'; /* collect list output */ if (end($articles) === $value) { $output .= $listElement->html($outputItem); $outputItem = null; } $lastCategory = $currentCategory; } else { $accessDeny++; } } /* handle access */ if (count($articles) === $accessDeny) { $error = Language::get('access_no') . Language::get('point'); } } /* handle error */ if ($error) { $output = $listElement->html('<li>' . $error . '</li>'); } return $output; }
/** * adminPanelNotification * * @since 3.0.0 * * @return array */ public static function adminPanelNotification() { if (!is_dir(self::$_configArray['uploadDirectory'])) { self::setNotification('error', Language::get('directory_not_found') . Language::get('colon') . ' ' . self::$_configArray['uploadDirectory'] . Language::get('point')); } else { if (!chmod(self::$_configArray['uploadDirectory'], 0777)) { self::setNotification('error', Language::get('directory_permission_grant') . Language::get('colon') . ' ' . self::$_configArray['uploadDirectory'] . Language::get('point')); } } return self::getNotification(); }
/** * render * * @since 2.2.0 * * @return string */ public static function render() { $output = ''; $outputItem = ''; /* html elements */ $titleElement = new Element('h3', array('class' => self::$_config['className']['title'])); $linkElement = new Element('a'); $listElement = new Element('ul', array('class' => self::$_config['className']['list'])); /* fetch articles */ $articles = Db::forTablePrefix('articles')->selectExpr('*, YEAR(date) as year, MONTH(date) as month')->where('status', 1)->whereIn('language', array(Registry::get('language'), ''))->orderByDesc('date')->findArray(); /* process articles */ if (empty($articles)) { $error = Language::get('article_no') . Language::get('point'); } else { $accessValidator = new Validator\Access(); $accessDeny = 0; $lastDate = 0; foreach ($articles as $value) { if ($accessValidator->validate($value['access'], Registry::get('myGroups')) === Validator\ValidatorInterface::PASSED) { $currentDate = $value['month'] + $value['year']; /* collect output */ if ($lastDate != $currentDate) { if ($lastDate > 0) { $output .= $listElement->html($outputItem); $outputItem = ''; } $output .= $titleElement->text(Language::get($value['month'] - 1, '_month') . ' ' . $value['year']); } /* collect item output */ $outputItem .= '<li>'; $outputItem .= $linkElement->attr(array('href' => $value['category'] < 1 ? $value['alias'] : build_route('articles', $value['id']), 'title' => $value['description'] ? $value['description'] : $value['title']))->text($value['title']); $outputItem .= '</li>'; /* collect list output */ if (end($articles) === $value) { $output .= $listElement->html($outputItem); $outputItem = ''; } $lastDate = $currentDate; } else { $accessDeny++; } } /* handle access */ if (count($articles) === $accessDeny) { $error = Language::get('access_no') . Language::get('point'); } } /* handle error */ if ($error) { $output = $listElement->html('<li>' . $error . '</li>'); } return $output; }
/** * render * * @since 2.2.0 * * @return string */ public static function render() { $output = null; /* html elements */ $titleElement = new Html\Element(); $titleElement->init('h3', ['class' => self::$_configArray['className']['title']]); $linkElement = new Html\Element(); $linkElement->init('a'); $listElement = new Html\Element(); $listElement->init('ul', ['class' => self::$_configArray['className']['list']]); /* query articles */ $articles = Db::forTablePrefix('articles')->where('status', 1)->whereLanguageIs(Registry::get('language'))->orderByDesc('date')->findMany(); /* process articles */ if (!$articles) { $error = Language::get('article_no') . Language::get('point'); } else { $accessValidator = new Validator\Access(); $accessDeny = 0; $lastDate = 0; foreach ($articles as $value) { if ($accessValidator->validate($value->access, Registry::get('myGroups')) === Validator\ValidatorInterface::PASSED) { $month = date('n', strtotime($value->date)); $year = date('Y', strtotime($value->date)); $currentDate = $month + $year; /* collect output */ if ($lastDate != $currentDate) { $output .= $titleElement->text(Language::get($month - 1, '_month') . ' ' . $year); } $lastDate = $currentDate; /* collect item output */ $outputItem = '<li>'; $outputItem .= $linkElement->attr(['href' => Registry::get('parameterRoute') . build_route('articles', $value->id), 'title' => $value->description ? $value->description : $value->title])->text($value->title); $outputItem .= '</li>'; /* collect list output */ $output .= $listElement->html($outputItem); } else { $accessDeny++; } } /* handle access */ if (count($articles) === $accessDeny) { $error = Language::get('access_no') . Language::get('point'); } } /* handle error */ if ($error) { $output = $listElement->html('<li>' . $error . '</li>'); } return $output; }
/** * adminNotificationStart * * @since 2.2.0 */ public static function adminNotificationStart() { $output = ''; $aliasFilter = new Filter\Alias(); $urlVersion = 'http://service.redaxscript.com/version/' . $aliasFilter->sanitize(Language::get('version', '_package')); $urlNews = 'http://service.redaxscript.com/news'; /* get contents */ $contentsVersion = file_get_contents($urlVersion); $contentsNews = file_get_contents($urlNews); /* collect version output */ if ($contentsVersion) { $output = $contentsVersion; } /* collect news output */ if ($contentsNews) { $output .= $contentsNews; } echo $output; }
/** * adminPanelNotification * * @since 3.0.0 * * @return array */ public static function adminPanelNotification() { $output = []; $reader = new Reader(); $aliasFilter = new Filter\Alias(); $version = $aliasFilter->sanitize(Language::get('version', '_package')); /* load result */ $urlVersion = 'http://service.redaxscript.com/version/' . $version; $urlNews = 'http://service.redaxscript.com/news/' . $version; $resultVersion = $reader->loadJSON($urlVersion)->getArray(); $resultNews = $reader->loadJSON($urlNews)->getArray(); /* merge as needed */ if (is_array($resultVersion)) { $output = array_merge_recursive($output, $resultVersion); } if (is_array($resultNews)) { $output = array_merge_recursive($output, $resultNews); } return $output; }
/** * adminPanelNotification * * @since 3.0.0 * * @return array */ public static function adminPanelNotification() { if (Registry::get('firstParameter') !== 'admin') { /* load result */ $urlBase = self::$_configArray['url'] . Registry::get('root') . '/' . Registry::get('parameterRoute') . Registry::get('fullRoute'); $urlJSON = $urlBase . '&out=json'; $reader = new Reader(); $result = $reader->loadJSON($urlJSON)->getArray(); /* process result */ if ($result['messages']) { foreach ($result['messages'] as $value) { if (in_array($value['type'], self::$_configArray['typeArray'])) { $message = ['text' => $value['message'], 'attr' => ['href' => $urlBase, 'target' => '_blank']]; self::setNotification($value['type'], $message); } } } else { self::setNotification('success', Language::get('documentValidate', '_validator') . Language::get('point')); } return self::getNotification(); } }
/** * login * * @since 2.4.0 */ protected static function _login() { $root = Registry::get('root'); $token = Registry::get('token'); $tableArray = array('categories', 'articles', 'extras', 'comments', 'groups', 'users'); /* session values */ Request::setSession($root . '/logged_in', $token); Request::setSession($root . '/my_name', 'Demo'); Request::setSession($root . '/my_user', 'demo'); Request::setSession($root . '/my_email', 'demo@localhost'); foreach ($tableArray as $value) { Request::setSession($root . '/' . $value . '_new', 1); Request::setSession($root . '/' . $value . '_edit', 1); Request::setSession($root . '/' . $value . '_delete', 1); } Request::setSession($root . '/modules_install', 0); Request::setSession($root . '/modules_edit', 0); Request::setSession($root . '/modules_uninstall', 0); Request::setSession($root . '/settings_edit', 1); Request::setSession($root . '/filter', 1); /* notification */ notification(Language::get('welcome'), Language::get('logged_in'), Language::get('continue'), 'admin'); }
/** * setUp * * @since 2.6.0 */ protected function setUp() { $this->_registry = Registry::getInstance(); $this->_language = Language::getInstance(); }
/** * mail * * @since 3.0.0 * * @param array $mailArray * * @return boolean */ protected static function _mail($mailArray = []) { $toArray = [Db::getSetting('author') => Db::getSetting('email')]; $fromArray = [$mailArray['author'] => $mailArray['email']]; $subject = Language::get('contact'); $bodyArray = [Language::get('author') . Language::get('colon') . ' ' . $mailArray['author'], '<br />', Language::get('email') . Language::get('colon') . ' <a href="mailto:' . $mailArray['email'] . '">' . $mailArray['email'] . '</a>', '<br />', Language::get('url') . Language::get('colon') . ' <a href="' . $mailArray['url'] . '">' . $mailArray['url'] . '</a>', '<br />', Language::get('message') . Language::get('colon') . ' ' . $mailArray['text']]; /* send mail */ $mailer = new Mailer(); $mailer->init($toArray, $fromArray, $subject, $bodyArray); return $mailer->send(); }
/** * router * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Center * @author Henry Ruhs */ function router() { $firstParameter = Redaxscript\Registry::get('firstParameter'); $secondParameter = Redaxscript\Registry::get('secondParameter'); $thirdParameter = Redaxscript\Registry::get('thirdParameter'); $thirdSubParameter = Redaxscript\Registry::get('thirdSubParameter'); $config = Redaxscript\Config::getInstance(); Redaxscript\Hook::trigger('routerStart'); if (Redaxscript\Registry::get('routerBreak')) { return; } /* check token */ $messenger = new Redaxscript\Messenger(Redaxscript\Registry::getInstance()); if ($_POST && $_POST['token'] != Redaxscript\Registry::get('token')) { echo $messenger->setRoute(Redaxscript\Language::get('home'), Redaxscript\Registry::get('root'))->error(Redaxscript\Language::get('token_incorrect'), Redaxscript\Language::get('error_occurred')); return; } /* install routing */ if (Redaxscript\Registry::get('file') === 'install.php' && $config->get('env') !== 'production') { if (Redaxscript\Request::getPost('Redaxscript\\View\\InstallForm')) { $installController = new Redaxscript\Controller\Install(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance(), Redaxscript\Config::getInstance()); echo $installController->process(); return; } else { $systemStatus = new Redaxscript\View\SystemStatus(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); $installForm = new Redaxscript\View\InstallForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $systemStatus->render() . $installForm->render(); return; } } /* general routing */ $post_list = ['Redaxscript\\View\\LoginForm' => 'Redaxscript\\Controller\\Login', 'Redaxscript\\View\\RegisterForm' => 'Redaxscript\\Controller\\Register', 'Redaxscript\\View\\ResetForm' => 'Redaxscript\\Controller\\Reset', 'Redaxscript\\View\\RecoverForm' => 'Redaxscript\\Controller\\Recover', 'Redaxscript\\View\\CommentForm' => 'Redaxscript\\Controller\\Comment']; foreach ($post_list as $key => $value) { if (Redaxscript\Request::getPost($key)) { if (class_exists($value)) { $controller = new $value(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $controller->process(); } return; } } /* search routing */ if (Redaxscript\Request::getPost('Redaxscript\\View\\SearchForm')) { $messenger = new Redaxscript\Messenger(Redaxscript\Registry::getInstance()); $table = Redaxscript\Request::getPost('table'); if ($table) { $table = '/' . $table; } echo $messenger->setRoute(Redaxscript\Language::get('continue'), 'search' . $table . '/' . Redaxscript\Request::getPost('search'))->doRedirect(0)->success(Redaxscript\Language::get('search')); } /* parameter routing */ switch ($firstParameter) { case 'admin': if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token')) { admin_router(); } else { echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); } return; case 'login': switch ($secondParameter) { case 'recover': if (Redaxscript\Db::getSetting('recovery') == 1) { $recoverForm = new Redaxscript\View\RecoverForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $recoverForm->render(); return; } case 'reset': if (Redaxscript\Db::getSetting('recovery') == 1 && $thirdParameter && $thirdSubParameter) { $resetForm = new Redaxscript\View\ResetForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $resetForm->render(); return; } /* show error */ echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); return; default: $loginForm = new Redaxscript\View\LoginForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $loginForm->render(); return; } case 'logout': if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token')) { $logoutController = new Redaxscript\Controller\Logout(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $logoutController->process(); return; } /* show error */ echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); return; case 'register': if (Redaxscript\Db::getSetting('registration')) { $registerForm = new Redaxscript\View\RegisterForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $registerForm->render(); return; } /* show error */ echo $messenger->setRoute(Language::get('home'), Redaxscript\Registry::get('root'))->error(Language::get('access_no'), Language::get('error_occurred')); return; case 'search': $searchController = new Redaxscript\Controller\Search(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $searchController->process(); return; default: contents(); return; } Redaxscript\Hook::trigger('routerEnd'); }
/** * language * * @since 2.6.0 * * @param string $key * @param string $index * * @return string */ public static function language($key = null, $index = null) { $language = Language::getInstance(); return $language->get($key, $index); }
/** * send * * @since 2.6.0 * * @param array $postData */ public static function _send($postData = array()) { $toArray = array(Db::getSettings('author') => Db::getSettings('email')); $fromArray = array($postData['author'] => $postData['email']); $subject = Language::get('contact'); $bodyArray = array(Language::get('author') . Language::get('colon') . ' ' . $postData['author'], '<br />', Language::get('email') . Language::get('colon') . ' <a href="mailto:' . $postData['email'] . '">' . $postData['email'] . '</a>', '<br />', Language::get('url') . Language::get('colon') . ' <a href="' . $postData['url'] . '">' . $postData['url'] . '</a>', '<br />', Language::get('message') . Language::get('colon') . ' ' . $postData['text']); /* send message */ $mailer = new Mailer(); $mailer->init($toArray, $fromArray, $subject, $bodyArray); $mailer->send(); }
/** * get the content array * * @since 3.0.0 * * @param string $table name of the table * @param array $excludeArray array of the exclude * * @return array */ public static function getContentArray($table = null, $excludeArray = []) { $query = Db::forTablePrefix($table); if ($excludeArray) { $query->whereNotIn('id', $excludeArray); } $content = $query->orderByAsc('title')->findMany(); /* process content */ $contentArray[Language::get('select')] = 'select'; foreach ($content as $value) { $contentKey = $value->title . ' (' . $value->id . ')'; $contentArray[$contentKey] = intval($value->id); } return $contentArray; }
/** * 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; }
/** * setUp * * @since 2.1.0 */ protected function setUp() { $this->_language = Language::getInstance(); }
/** * error * * @since 3.0.0 * * @return string */ protected static function _error() { $messenger = new Messenger(Registry::getInstance()); return $messenger->setRoute(Language::get('back'), 'login')->doRedirect()->error(Language::get('something_wrong'), Language::get('error_occurred')); }
/** * setUp * * @since 2.1.0 */ public function setUp() { $this->_language = Language::getInstance(); }
/** * 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; }
/** * get the transport * * @since 3.0.0 * * @return string */ public static function getTransport() { $transport = new Assetic\Transport(Registry::getInstance(), Language::getInstance()); return $transport->getArray(); }
/** * setUp * * @since 2.6.0 */ public function setUp() { $this->_registry = Registry::getInstance(); $this->_language = Language::getInstance(); $this->_request = Request::getInstance(); }
/** * render * * @since 3.0.0 * * @param string $alias * @param string $path * * @return string */ public static function render($alias = null, $path = null) { $titleElement = new Html\Element(); $titleElement->init('h2', ['class' => 'rs-title-preview', 'id' => $alias]); $linkElement = new Html\Element(); $linkElement->init('a', ['href' => Registry::get('secondParameter') === $alias ? Registry::get('parameterRoute') . 'preview#' . $alias : Registry::get('parameterRoute') . 'preview/' . $alias])->text(Registry::get('secondParameter') === $alias ? Language::get('back') : $alias); /* collect output */ $output = $titleElement->html($linkElement); $output .= Template\Tag::partial($path); return $output; }
/** * render * * @since 2.2.0 * * @param mixed $file * @param array $optionArray * * @return string */ public static function render($file = null, $optionArray = []) { $output = null; /* device related images */ if (is_array($file)) { /* process source */ foreach ($file as $key => $value) { if (in_array($key, self::$_configArray['device']) && Registry::get('my' . ucfirst($key))) { $file = $value; } } } /* collect output */ if (file_exists($file)) { $imageElement = new Html\Element(); $imageElement->init('img', ['alt' => $optionArray['alt'], 'class' => self::$_configArray['className']['image'], 'src' => self::$_configArray['placeholder']]); /* collect image output */ $output = $imageElement->copy()->addClass($optionArray['className'])->attr('data-src', $file); /* placeholder */ if (self::$_configArray['placeholder']) { /* calculate image ratio */ $imageDimensions = getimagesize($file); $imageRatio = $imageDimensions[1] / $imageDimensions[0] * 100; /* placeholder */ $placeholderElement = new Html\Element(); $placeholderElement->init('div', ['class' => self::$_configArray['className']['placeholder'], 'style' => 'padding-bottom:' . $imageRatio . '%']); /* collect output */ $output = $placeholderElement->html($output); } /* noscript fallback */ $output .= '<noscript>' . $imageElement . '</noscript>'; } else { self::setNotification('error', Language::get('file_not_found') . Language::get('colon') . ' ' . $file . Language::get('point')); } return $output; }
/** * createThumb * * @since 3.0.0 * * @param string $directory * @param array $optionArray * * @return string */ protected static function _createThumb($directory = null, $optionArray = []) { /* gallery directory */ $galleryDirectory = new Directory(); $galleryDirectory->init($directory, [self::$_configArray['thumbDirectory']]); $galleryDirectory->create(self::$_configArray['thumbDirectory']); $galleryDirectoryArray = $galleryDirectory->getArray(); /* process directory */ if (chmod($directory . '/' . self::$_configArray['thumbDirectory'], 0777)) { foreach ($galleryDirectoryArray as $value) { $imagePath = $directory . '/' . $value; $imageExtension = strtolower(pathinfo($value, PATHINFO_EXTENSION)); $thumbPath = $directory . '/' . self::$_configArray['thumbDirectory'] . '/' . $value; /* switch extension */ switch ($imageExtension) { case 'gif': $image = imagecreatefromgif($imagePath); break; case 'jpg': $image = imagecreatefromjpeg($imagePath); break; case 'png': $image = imagecreatefrompng($imagePath); break; default: $image = null; } /* source and dist */ $sourceArray = self::_calcSource($imagePath); $distArray = self::_calcDist($sourceArray, $optionArray); /* create thumb files */ $thumb = imagecreatetruecolor($distArray['width'], $distArray['height']); imagecopyresampled($thumb, $image, 0, 0, 0, 0, $distArray['width'], $distArray['height'], $sourceArray['width'], $sourceArray['height']); imagejpeg($thumb, $thumbPath, $distArray['quality']); /* destroy image */ imagedestroy($thumb); imagedestroy($image); } } else { self::setNotification('error', Language::get('directory_permission_grant') . Language::get('colon') . ' ' . $directory . '/' . self::$_configArray['thumbDirectory'] . Language::get('point')); } }
/** * transport javascript variables * * @since 3.0.0 * * @param string $key * @param mixed $value * * @return Script */ public function transportVar($key = null, $value = null) { $transport = new Assetic\Transport(Registry::getInstance(), Language::getInstance()); $inline = $transport->render($key, $value); $this->appendInline($inline); return $this; }
/** * renderItem * * @param string $directory * @param array $optionArray * * @return string */ protected static function _renderItem($directory = null, $optionArray = []) { $outputItem = null; /* html elements */ $linkElement = new Html\Element(); $linkElement->init('a', ['class' => self::$_configArray['className']['link']]); $textSizeElement = new Html\Element(); $textSizeElement->init('span', ['class' => self::$_configArray['className']['textSize']]); $textDateElement = new Html\Element(); $textDateElement->init('span', ['class' => self::$_configArray['className']['textDate']]); /* lister directory */ $listerDirectory = new Directory(); $listerDirectory->init($directory); $listerDirectoryArray = $listerDirectory->getArray(); /* process directory */ foreach ($listerDirectoryArray as $value) { $path = $directory . '/' . $value; $fileExtension = pathinfo($path, PATHINFO_EXTENSION); $text = self::_replace($value, $fileExtension, $optionArray['replace']); $textDate = date(Db::getSetting('date'), filectime($path)); $isDir = is_dir($path); $isFile = is_file($path) && array_key_exists($fileExtension, self::$_configArray['extension']); /* handle directory */ if ($isDir || $isFile) { $outputItem .= '<li>'; } if ($isDir) { $outputItem .= $linkElement->copy()->attr(['href' => Registry::get('parameterRoute') . Registry::get('fullRoute') . '&directory=' . $path . $optionArray['hash'], 'title' => Language::get('directory', '_directory_lister')])->addClass(self::$_configArray['className']['types']['directory'])->text($text); $outputItem .= $textSizeElement->copy(); } else { if ($isFile) { $fileType = self::$_configArray['extension'][$fileExtension]; $textSize = ceil(filesize($path) / self::$_configArray['size']['divider']); $outputItem .= $linkElement->copy()->attr(['href' => Registry::get('root') . '/' . $path, 'target' => '_blank', 'title' => Language::get('file', '_directory_lister')])->addClass(self::$_configArray['className']['types'][$fileType])->text($text); $outputItem .= $textSizeElement->copy()->attr('data-unit', self::$_configArray['size']['unit'])->text($textSize); } } if ($isDir || $isFile) { $outputItem .= $textDateElement->copy()->text($textDate); $outputItem .= '</li>'; } } return $outputItem; }