С версии: 2.2.0
Автор: Henry Ruhs
Наследование: extends Singleton
Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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);
     }
 }
Пример #4
0
 /**
  * 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_');
 }
Пример #5
0
 /**
  * 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;
 }
Пример #6
0
 /**
  * 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();
 }
Пример #7
0
 /**
  * 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;
 }
Пример #8
0
 /**
  * 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;
 }
Пример #9
0
 /**
  * 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;
 }
Пример #10
0
 /**
  * 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;
 }
Пример #11
0
 /**
  * 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();
     }
 }
Пример #12
0
 /**
  * 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();
 }
Пример #14
0
 /**
  * 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();
 }
Пример #15
0
/**
 * 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');
}
Пример #16
0
 /**
  * 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);
 }
Пример #17
0
 /**
  * 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();
 }
Пример #18
0
 /**
  * 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;
 }
Пример #19
0
 /**
  * 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();
 }
Пример #21
0
 /**
  * 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'));
 }
Пример #22
0
 /**
  * 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;
 }
Пример #24
0
 /**
  * get the transport
  *
  * @since 3.0.0
  *
  * @return string
  */
 public static function getTransport()
 {
     $transport = new Assetic\Transport(Registry::getInstance(), Language::getInstance());
     return $transport->getArray();
 }
Пример #25
0
 /**
  * setUp
  *
  * @since 2.6.0
  */
 public function setUp()
 {
     $this->_registry = Registry::getInstance();
     $this->_language = Language::getInstance();
     $this->_request = Request::getInstance();
 }
Пример #26
0
 /**
  * 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;
 }
Пример #27
0
 /**
  * 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;
 }
Пример #28
0
 /**
  * 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'));
     }
 }
Пример #29
0
 /**
  * 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;
 }
Пример #30
0
 /**
  * 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;
 }