Exemple #1
0
/**
 * Gibt eine Url zu einem Artikel zurück.
 *
 * @param int|null $id
 * @param int|null $clang     SprachId des Artikels
 * @param array    $params    Array von Parametern
 * @param string   $separator
 *
 * @return string
 *
 * @package redaxo\structure
 */
function rex_getUrl($id = null, $clang = null, array $params = [], $separator = '&')
{
    $id = (int) $id;
    $clang = (int) $clang;
    // ----- get id
    if ($id == 0) {
        $id = rex::getProperty('article_id');
    }
    // ----- get clang
    // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben!
    // Die rexExtension muss selbst entscheiden was sie damit macht
    if (!rex_clang::exists($clang) && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) {
        $clang = rex_clang::getCurrentId();
    }
    // ----- EXTENSION POINT
    $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'clang' => $clang, 'params' => $params, 'separator' => $separator]));
    if ($url == '') {
        if (rex_clang::count() > 1) {
            $clang = $separator . 'clang=' . $clang;
        } else {
            $clang = '';
        }
        $params = rex_string::buildQuery($params, $separator);
        $params = $params ? $separator . $params : '';
        $url = rex_url::frontendController() . '?article_id=' . $id . $clang . $params;
    }
    return $url;
}
Exemple #2
0
/**
 * Gibt eine Url zu einem Artikel zurück.
 *
 * @param string       $_id
 * @param int|string   $_clang  SprachId des Artikels
 * @param array|string $_params Array von Parametern
 * @param bool         $escape  Flag whether the argument separator "&" should be escaped (&)
 *
 * @return string
 *
 * @package redaxo\structure
 */
function rex_getUrl($_id = '', $_clang = '', $_params = '', $escape = true)
{
    $id = (int) $_id;
    $clang = (int) $_clang;
    // ----- get id
    if ($id == 0) {
        $id = rex::getProperty('article_id');
    }
    // ----- get clang
    // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben!
    // Die rexExtension muss selbst entscheiden was sie damit macht
    if ($_clang === '' && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) {
        $clang = rex_clang::getCurrentId();
    }
    // ----- get params
    $param_string = rex_param_string($_params, $escape ? '&' : '&');
    $name = 'NoName';
    if ($id != 0) {
        $ooa = rex_article::get($id, $clang);
        if ($ooa) {
            $name = rex_parse_article_name($ooa->getName());
        }
    }
    // ----- EXTENSION POINT
    $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'name' => $name, 'clang' => $clang, 'params' => $param_string, 'escape' => $escape]));
    if ($url == '') {
        $_clang = '';
        if (rex_clang::count() > 1) {
            $_clang .= ($escape ? '&' : '&') . 'clang=' . $clang;
        }
        $url = rex_url::frontendController() . '?article_id=' . $id . $_clang . $param_string;
    }
    return $url;
}
Exemple #3
0
 /**
  * Factory method.
  *
  * @param string $host Host name
  * @param int    $port Port number
  * @param bool   $ssl  SSL flag
  *
  * @return static Socket instance
  *
  * @see rex_socket::factoryUrl()
  */
 public static function factory($host, $port = 80, $ssl = false)
 {
     if (get_called_class() === __CLASS__ && ($proxy = rex::getProperty('socket_proxy'))) {
         return rex_socket_proxy::factoryUrl($proxy)->setDestination($host, $port, $ssl);
     }
     return new static($host, $port, $ssl);
 }
Exemple #4
0
 public function testGetServer()
 {
     $origServer = rex::getProperty('server');
     rex::setProperty('server', 'http://www.redaxo.org');
     $this->assertEquals('http://www.redaxo.org/', rex::getServer());
     $this->assertEquals('https://www.redaxo.org/', rex::getServer('https'));
     $this->assertEquals('www.redaxo.org/', rex::getServer(''));
     rex::setProperty('server', $origServer);
 }
Exemple #5
0
 /**
  * Extends rex_extension::registerPoint() with FirePHP logging.
  */
 public static function registerPoint(rex_extension_point $extensionPoint)
 {
     $coreTimer = rex::getProperty('timer');
     $absDur = $coreTimer->getFormattedDelta();
     // start timer for this extensionPoint
     $timer = new rex_timer();
     $res = parent::registerPoint($extensionPoint);
     $epDur = $timer->getFormattedDelta();
     $memory = rex_formatter::bytes(memory_get_usage(true), [3]);
     self::$log[] = ['type' => 'EP', 'ep' => $extensionPoint->getName(), 'started' => $absDur, 'duration' => $epDur, 'memory' => $memory, 'subject' => $extensionPoint->getSubject(), 'params' => $extensionPoint->getParams(), 'read_only' => $extensionPoint->isReadonly(), 'result' => $res, 'timer' => $epDur];
     return $res;
 }
 public function getField()
 {
     $field = new rex_form_select_element();
     $field->setAttribute('class', 'form-control');
     $field->setLabel(rex_i18n::msg('system_setting_default_template_id'));
     $select = $field->getSelect();
     $select->setSize(1);
     $select->setSelected(rex::getProperty('default_template_id'));
     $templates = rex_template::getTemplatesForCategory(0);
     if (empty($templates)) {
         $select->addOption(rex_i18n::msg('option_no_template'), 0);
     } else {
         $select->addArrayOptions($templates);
     }
     return $field;
 }
Exemple #7
0
 /**
  * Stellt die Verbindung zur Datenbank her.
  */
 protected function selectDB($DBID)
 {
     $this->DBID = $DBID;
     try {
         if (!isset(self::$pdo[$DBID])) {
             $dbconfig = rex::getProperty('db');
             $conn = self::createConnection($dbconfig[$DBID]['host'], $dbconfig[$DBID]['name'], $dbconfig[$DBID]['login'], $dbconfig[$DBID]['password'], $dbconfig[$DBID]['persistent']);
             self::$pdo[$DBID] = $conn;
             // ggf. Strict Mode abschalten
             $this->setQuery('SET SQL_MODE=""');
             // set encoding
             $this->setQuery('SET NAMES utf8');
         }
     } catch (PDOException $e) {
         throw new rex_sql_exception('Could not connect to database', $e);
     }
 }
Exemple #8
0
 */
rex_perm::register('moveArticle[]', null, rex_perm::OPTIONS);
rex_perm::register('moveCategory[]', null, rex_perm::OPTIONS);
rex_perm::register('copyArticle[]', null, rex_perm::OPTIONS);
rex_perm::register('copyContent[]', null, rex_perm::OPTIONS);
rex_perm::register('publishArticle[]', null, rex_perm::OPTIONS);
rex_perm::register('publishCategory[]', null, rex_perm::OPTIONS);
rex_perm::register('article2startarticle[]', null, rex_perm::OPTIONS);
rex_perm::register('article2category[]', null, rex_perm::OPTIONS);
rex_complex_perm::register('structure', 'rex_structure_perm');
require_once __DIR__ . '/functions/function_rex_url.php';
if (rex_request('article_id', 'int') == 0) {
    rex::setProperty('article_id', rex::getProperty('start_article_id'));
} else {
    $article_id = rex_request('article_id', 'int');
    $article_id = rex_article::get($article_id) ? $article_id : rex::getProperty('notfound_article_id');
    rex::setProperty('article_id', $article_id);
}
if (rex::isBackend() && rex::getUser()) {
    rex_view::addJsFile($this->getAssetsUrl('linkmap.js'));
    rex_extension::register('PAGE_SIDEBAR', function () {
        $category_id = rex_request('category_id', 'int');
        $article_id = rex_request('article_id', 'int');
        $clang = rex_request('clang', 'int');
        $ctype = rex_request('ctype', 'int');
        $category_id = rex_category::get($category_id) ? $category_id : 0;
        $article_id = rex_article::get($article_id) ? $article_id : 0;
        $clang = rex_clang::exists($clang) ? $clang : rex_clang::getStartId();
        // TODO - CHECK PERM
        $context = new rex_context(['page' => 'structure', 'category_id' => $category_id, 'article_id' => $article_id, 'clang' => $clang, 'ctype' => $ctype]);
        // check if a new category was folded
Exemple #9
0
 public static function checkPagePermissions(rex_user $user)
 {
     $check = function (rex_be_page $page) use(&$check, $user) {
         if (!$page->checkPermission($user)) {
             return false;
         }
         $subpages = $page->getSubpages();
         foreach ($subpages as $key => $subpage) {
             if (!$check($subpage)) {
                 unset($subpages[$key]);
             }
         }
         $page->setSubpages($subpages);
         return true;
     };
     foreach (self::$pages as $key => $page) {
         if (!$check($page)) {
             unset(self::$pages[$key]);
         }
     }
     self::$pageObject = null;
     $page = self::getCurrentPageObject();
     // --- page pruefen und benoetigte rechte checken
     if (!$page) {
         // --- fallback zur user startpage -> rechte checken
         $page = self::getPageObject($user->getStartPage());
         if (!$page) {
             // --- fallback zur system startpage -> rechte checken
             $page = self::getPageObject(rex::getProperty('start_page'));
             if (!$page) {
                 // --- fallback zur profile page
                 $page = self::getPageObject('profile');
             }
         }
         rex_response::setStatus(rex_response::HTTP_NOT_FOUND);
         rex_response::sendRedirect($page->getHref());
     }
     if ($page !== ($leaf = $page->getFirstSubpagesLeaf())) {
         rex_response::setStatus(rex_response::HTTP_MOVED_PERMANENTLY);
         $url = $leaf->hasHref() ? $leaf->getHref() : rex_context::restore()->getUrl(['page' => $leaf->getFullKey()], false);
         rex_response::sendRedirect($url);
     }
 }
Exemple #10
0
 /**
  * Sends content to the client.
  *
  * @param string $content      Content
  * @param string $contentType  Content type
  * @param int    $lastModified HTTP Last-Modified Timestamp
  * @param string $etag         HTTP Cachekey to identify the cache
  */
 public static function sendContent($content, $contentType = null, $lastModified = null, $etag = null)
 {
     if (!self::$sentContentType) {
         self::sendContentType($contentType);
     }
     if (!self::$sentCacheControl) {
         self::sendCacheControl();
     }
     $environment = rex::isBackend() ? 'backend' : 'frontend';
     if (self::$httpStatus == self::HTTP_OK && (false === strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') || false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome'))) {
         // ----- Last-Modified
         if (!self::$sentLastModified && (rex::getProperty('use_last_modified') === true || rex::getProperty('use_last_modified') === $environment)) {
             self::sendLastModified($lastModified);
         }
         // ----- ETAG
         if (!self::$sentEtag && (rex::getProperty('use_etag') === true || rex::getProperty('use_etag') === $environment)) {
             self::sendEtag($etag ?: self::md5($content));
         }
     }
     // ----- GZIP
     if (rex::getProperty('use_gzip') === true || rex::getProperty('use_gzip') === $environment) {
         $content = self::sendGzip($content);
     }
     self::cleanOutputBuffers();
     header('HTTP/1.1 ' . self::$httpStatus);
     // content length schicken, damit der browser einen ladebalken anzeigen kann
     header('Content-Length: ' . rex_string::size($content));
     echo $content;
     if (function_exists('fastcgi_finish_request')) {
         fastcgi_finish_request();
     }
 }
Exemple #11
0
        if (rex_be_controller::getCurrentPagePart(1) == 'content') {
            rex_be_controller::getPageObject('structure')->setIsActive(true);
        }
    });
    if (rex_be_controller::getCurrentPagePart(1) == 'system') {
        rex_system_setting::register(new rex_system_setting_default_template_id());
    }
    rex_extension::register('CLANG_DELETED', function (rex_extension_point $ep) {
        $del = rex_sql::factory();
        $del->setQuery('delete from ' . rex::getTablePrefix() . "article_slice where clang_id='" . $ep->getParam('clang')->getId() . "'");
    });
} else {
    rex_extension::register('FE_OUTPUT', function (rex_extension_point $ep) {
        $content = $ep->getSubject();
        $article = new rex_article_content();
        $article->setCLang(rex_clang::getCurrentId());
        if ($article->setArticleId(rex::getProperty('article_id'))) {
            $content .= $article->getArticleTemplate();
        } else {
            $content .= 'Kein Startartikel selektiert / No starting Article selected. Please click here to enter <a href="' . rex_url::backendController() . '">redaxo</a>';
            rex_response::sendPage($content);
            exit;
        }
        $art_id = $article->getArticleId();
        if ($art_id == rex::getProperty('notfound_article_id') && $art_id != rex::getProperty('start_article_id')) {
            rex_response::setStatus(rex_response::HTTP_NOT_FOUND);
        }
        // ----- inhalt ausgeben
        rex_response::sendPage($content, $article->getValue('updatedate'));
    });
}
Exemple #12
0
 /**
  * Returns  true if this Article is the not found article.
  *
  * @return bool
  */
 public function isNotFoundArticle()
 {
     return $this->id == rex::getProperty('notfound_article_id');
 }
Exemple #13
0
 private function _setActivePath()
 {
     $article_id = rex::getProperty('article_id');
     if ($OOArt = rex_article::get($article_id)) {
         $path = trim($OOArt->getPath(), '|');
         $this->path = [];
         if ($path != '') {
             $this->path = explode('|', $path);
         }
         $this->current_article_id = $article_id;
         $this->current_category_id = $OOArt->getCategoryId();
         return true;
     }
     return false;
 }
Exemple #14
0
require_once rex_path::core('functions/function_rex_other.php');
// ----------------- VERSION
rex::setProperty('version', '5.0.0-alpha7');
$cacheFile = rex_path::cache('config.yml.cache');
$configFile = rex_path::data('config.yml');
if (file_exists($cacheFile) && file_exists($configFile) && filemtime($cacheFile) >= filemtime($configFile)) {
    $config = rex_file::getCache($cacheFile);
} else {
    $config = array_merge(rex_file::getConfig(rex_path::core('default.config.yml')), rex_file::getConfig($configFile));
    rex_file::putCache($cacheFile, $config);
}
foreach ($config as $key => $value) {
    if (in_array($key, ['fileperm', 'dirperm'])) {
        $value = octdec($value);
    }
    rex::setProperty($key, $value);
}
date_default_timezone_set(rex::getProperty('timezone', 'Europe/Berlin'));
if (!rex::isSetup()) {
    rex_error_handler::register();
}
// ----------------- REX PERMS
rex_complex_perm::register('clang', 'rex_clang_perm');
// ----- SET CLANG
if (!rex::isSetup()) {
    rex_clang::setCurrentId(rex_request('clang', 'int', rex_clang::getStartId()));
}
if (isset($REX['LOAD_PAGE']) && $REX['LOAD_PAGE']) {
    unset($REX);
    require rex_path::core(rex::isBackend() ? 'backend.php' : 'frontend.php');
}
Exemple #15
0
 protected function setUp()
 {
     $this->proxy = rex::getProperty('socket_proxy');
     rex::setProperty('socket_proxy', null);
 }
Exemple #16
0
 /**
  * Gibt den Wert einer Session-Variable zurück.
  */
 public function getSessionVar($varname, $default = '')
 {
     if (isset($_SESSION[rex::getProperty('instname')][$this->systemId][$varname])) {
         return $_SESSION[rex::getProperty('instname')][$this->systemId][$varname];
     }
     return $default;
 }
Exemple #17
0
echo rex_view::title(rex_i18n::msg('title_templates'));
$OUT = true;
$function = rex_request('function', 'string');
$template_id = rex_request('template_id', 'int');
$save = rex_request('save', 'string');
$goon = rex_request('goon', 'string');
$success = '';
$error = '';
$content = '';
$message = '';
if ($function == 'delete') {
    $del = rex_sql::factory();
    $del->setQuery('SELECT ' . rex::getTablePrefix() . 'article.id,' . rex::getTablePrefix() . 'template.name FROM ' . rex::getTablePrefix() . 'article
        LEFT JOIN ' . rex::getTablePrefix() . 'template ON ' . rex::getTablePrefix() . 'article.template_id=' . rex::getTablePrefix() . 'template.id
        WHERE ' . rex::getTablePrefix() . 'article.template_id="' . $template_id . '" LIMIT 0,10');
    if ($del->getRows() > 0 || rex::getProperty('default_template_id') == $template_id) {
        $error = rex_i18n::msg('cant_delete_template_because_its_in_use', rex_i18n::msg('id') . ' = ' . $template_id);
    } else {
        $del->setQuery('DELETE FROM ' . rex::getTablePrefix() . 'template WHERE id = "' . $template_id . '" LIMIT 1');
        // max. ein Datensatz darf loeschbar sein
        rex_file::delete(rex_path::addonCache('templates', $template_id . '.template'));
        $success = rex_i18n::msg('template_deleted');
    }
} elseif ($function == 'edit') {
    $legend = rex_i18n::msg('edit_template') . ' <small class="rex-primary-id">' . rex_i18n::msg('id') . ' = ' . $template_id . '</small>';
    $hole = rex_sql::factory();
    $hole->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id = "' . $template_id . '"');
    if ($hole->getRows() == 1) {
        $templatename = $hole->getValue('name');
        $template = $hole->getValue('content');
        $active = $hole->getValue('active');
Exemple #18
0
 /**
  * Löscht einen Artikel.
  *
  * @param int $id ArtikelId des Artikels, der gelöscht werden soll
  *
  * @throws rex_api_exception
  *
  * @return string Eine Statusmeldung
  */
 public static function _deleteArticle($id)
 {
     // artikel loeschen
     //
     // kontrolle ob erlaubnis nicht hier.. muss vorher geschehen
     //
     // -> startarticle = 0
     // --> artikelfiles löschen
     // ---> article
     // ---> content
     // ---> clist
     // ---> alist
     // -> startarticle = 1
     // --> rekursiv aufrufen
     if ($id == rex::getProperty('start_article_id')) {
         throw new rex_api_exception(rex_i18n::msg('cant_delete_sitestartarticle'));
     }
     if ($id == rex::getProperty('notfound_article_id')) {
         throw new rex_api_exception(rex_i18n::msg('cant_delete_notfoundarticle'));
     }
     $ART = rex_sql::factory();
     $ART->setQuery('select * from ' . rex::getTablePrefix() . 'article where id=? and clang_id=?', [$id, rex_clang::getStartId()]);
     $message = '';
     if ($ART->getRows() > 0) {
         $parent_id = $ART->getValue('parent_id');
         $message = rex_extension::registerPoint(new rex_extension_point('ART_PRE_DELETED', $message, ['id' => $id, 'parent_id' => $parent_id, 'name' => $ART->getValue('name'), 'status' => $ART->getValue('status'), 'priority' => $ART->getValue('priority'), 'path' => $ART->getValue('path'), 'template_id' => $ART->getValue('template_id')]));
         if ($ART->getValue('startarticle') == 1) {
             $message = rex_i18n::msg('category_deleted');
             $SART = rex_sql::factory();
             $SART->setQuery('select * from ' . rex::getTablePrefix() . 'article where parent_id=? and clang_id=?', [$id, rex_clang::getStartId()]);
             for ($i = 0; $i < $SART->getRows(); ++$i) {
                 self::_deleteArticle($id);
                 $SART->next();
             }
         } else {
             $message = rex_i18n::msg('article_deleted');
         }
         rex_article_cache::delete($id);
         $ART->setQuery('delete from ' . rex::getTablePrefix() . 'article where id=' . $id);
         $ART->setQuery('delete from ' . rex::getTablePrefix() . 'article_slice where article_id=' . $id);
         // --------------------------------------------------- Listen generieren
         rex_article_cache::deleteLists($parent_id);
         return $message;
     } else {
         throw new rex_api_exception(rex_i18n::msg('category_doesnt_exist'));
     }
 }
Exemple #19
0
             $return .= rex_view::error(rex_i18n::msg('version_warning_working_version_to_live'));
         } elseif (rex::getUser()->hasPerm('version[live_version]')) {
             rex_article_revision::copyContent($params['article_id'], $params['clang'], rex_article_revision::WORK, rex_article_revision::LIVE);
             $return .= rex_view::success(rex_i18n::msg('version_info_working_version_to_live'));
         }
         break;
     case 'copy_live_to_work':
         rex_article_revision::copyContent($params['article_id'], $params['clang'], rex_article_revision::LIVE, rex_article_revision::WORK);
         $return .= rex_view::success(rex_i18n::msg('version_info_live_version_to_working'));
         break;
 }
 if (!rex::getUser()->hasPerm('version[live_version]')) {
     $rex_version_article[$params['article_id']] = 1;
     unset($revisions[0]);
 }
 rex::getProperty('login')->setSessionVar('rex_version_article', $rex_version_article);
 $context = new rex_context(['page' => $params['page'], 'article_id' => $params['article_id'], 'clang' => $params['clang'], 'ctype' => $params['ctype']]);
 $items = [];
 $brand = '';
 foreach ($revisions as $version => $revision) {
     $item = [];
     $item['title'] = $revision;
     $item['href'] = $context->getUrl(['rex_set_version' => $version]);
     if ($rex_version_article[$params['article_id']] == $version) {
         $item['active'] = true;
         $brand = $revision;
     }
     $items[] = $item;
 }
 $toolbar = '';
 $fragment = new rex_fragment();
Exemple #20
0
 public static function hasSession()
 {
     self::startSession();
     $instname = rex::getProperty('instname');
     return isset($_SESSION[$instname][self::SYSTEM_ID]['UID']) && $_SESSION[$instname][self::SYSTEM_ID]['UID'] > 0;
 }
Exemple #21
0
        }
    }
}
rex_be_controller::setPages($pages);
// ----- Prepare Core Pages
if (rex::getUser()) {
    rex_be_controller::appendLoggedInPages();
    rex_be_controller::setCurrentPage(trim(rex_request('page', 'string')));
}
rex_view::addJsFile(rex_url::coreAssets('jquery.min.js'));
rex_view::addJsFile(rex_url::coreAssets('jquery-ui.custom.min.js'));
rex_view::addJsFile(rex_url::coreAssets('jquery-pjax.min.js'));
rex_view::addJsFile(rex_url::coreAssets('standard.js'));
rex_view::addJsFile(rex_url::coreAssets('sha1.js'));
rex_view::setJsProperty('backend', true);
rex_view::setJsProperty('accesskeys', rex::getProperty('use_accesskeys'));
// ----- INCLUDE ADDONS
include_once rex_path::core('packages.php');
// ----- Prepare AddOn Pages
if (rex::getUser()) {
    rex_be_controller::appendPackagePages();
}
$pages = rex_extension::registerPoint(new rex_extension_point('PAGES_PREPARED', rex_be_controller::getPages()));
rex_be_controller::setPages($pages);
// Set Startpage
if ($user = rex::getUser()) {
    // --- page pruefen und benoetigte rechte checken
    rex_be_controller::checkPagePermissions($user);
}
$page = rex_be_controller::getCurrentPage();
rex_view::setJsProperty('page', $page);
Exemple #22
0
 /**
  * Gibt den Wert einer Session-Variable zurück.
  */
 public function getSessionVar($varname, $default = '')
 {
     static $sessChecked = false;
     // validate session-id - once per request - to prevent fixation
     if (!$sessChecked) {
         $rexSessId = !empty($_SESSION['REX_SESSID']) ? $_SESSION['REX_SESSID'] : '';
         if (!empty($rexSessId) && $rexSessId !== session_id()) {
             // clear redaxo related session properties on a possible attack
             $_SESSION[rex::getProperty('instname')][$this->systemId] = [];
         }
         $sessChecked = true;
     }
     if (isset($_SESSION[rex::getProperty('instname')][$this->systemId][$varname])) {
         return $_SESSION[rex::getProperty('instname')][$this->systemId][$varname];
     }
     return $default;
 }
Exemple #23
0
 /**
  * Loads all translation defintions.
  */
 private static function loadAll()
 {
     self::$msg = [];
     if (!self::$locale) {
         self::$locale = rex::getProperty('lang');
     }
     foreach (self::$directories as $dir) {
         self::loadFile($dir . DIRECTORY_SEPARATOR . self::$locale . '.lang');
     }
     self::$loaded = true;
 }
Exemple #24
0
<?php

$curPage = rex_be_controller::getCurrentPageObject();
if (!$curPage->hasLayout()) {
    if (rex_request::isPJAXRequest()) {
        echo '</section>';
    }
    return;
}
?>

</section></div><?php 
if (rex_request::isPJAXContainer('#rex-js-page-container')) {
    return;
}
echo '</div>';
$sidebar = rex_extension::registerPoint(new rex_extension_point('PAGE_SIDEBAR', ''));
if ($sidebar != '') {
    $sidebarfragment = new rex_fragment();
    $sidebarfragment->content = $sidebar;
    echo $sidebarfragment->parse('core/sidebar.php');
    unset($sidebarfragment);
}
unset($fragment);
$footerfragment = new rex_fragment();
$footerfragment->setVar('time', rex::getProperty('timer')->getFormattedDelta(rex_timer::SEC));
echo $footerfragment->parse('core/footer.php');
unset($footerfragment);
$bottomfragment = new rex_fragment();
echo $bottomfragment->parse('core/bottom.php');
unset($bottomfragment);
Exemple #25
0
 /**
  * Initializes all packages.
  */
 public static function initialize($dbExists = true)
 {
     if ($dbExists) {
         $config = rex::getConfig('package-config', []);
     } else {
         $config = [];
         foreach (rex::getProperty('setup_addons') as $addon) {
             $config[$addon]['install'] = false;
         }
     }
     $addons = self::$addons;
     self::$addons = [];
     foreach ($config as $addonName => $addonConfig) {
         $addon = isset($addons[$addonName]) ? $addons[$addonName] : new self($addonName);
         $addon->setProperty('install', isset($addonConfig['install']) ? $addonConfig['install'] : false);
         $addon->setProperty('status', isset($addonConfig['status']) ? $addonConfig['status'] : false);
         self::$addons[$addonName] = $addon;
         if (!$dbExists && is_array($plugins = $addon->getProperty('system_plugins'))) {
             foreach ($plugins as $plugin) {
                 $config[$addonName]['plugins'][$plugin]['install'] = false;
             }
         }
         if (isset($config[$addonName]['plugins']) && is_array($config[$addonName]['plugins'])) {
             $plugins = $addon->plugins;
             $addon->plugins = [];
             foreach ($config[$addonName]['plugins'] as $pluginName => $pluginConfig) {
                 $plugin = isset($plugins[$pluginName]) ? $plugins[$pluginName] : new rex_plugin($pluginName, $addon);
                 $plugin->setProperty('install', isset($pluginConfig['install']) ? $pluginConfig['install'] : false);
                 $plugin->setProperty('status', isset($pluginConfig['status']) ? $pluginConfig['status'] : false);
                 $addon->plugins[$pluginName] = $plugin;
             }
         }
     }
 }
Exemple #26
0
         $tmpl_td = '<td data-title="' . rex_i18n::msg('header_template') . '">' . $template_select->get() . '</td>';
     }
     $echo .= '<tr class="mark">
                 <td class="rex-table-icon"><i class="rex-icon rex-icon-article"></i></td>
                 <td class="rex-table-id" data-title="' . rex_i18n::msg('header_id') . '">-</td>
                 <td data-title="' . rex_i18n::msg('header_article_name') . '"><input class="form-control" type="text" name="article-name" autofocus /></td>
                 ' . $tmpl_td . '
                 <td data-title="' . rex_i18n::msg('header_date') . '">' . rex_formatter::strftime(time(), 'date') . '</td>
                 <td class="rex-table-priority" data-title="' . rex_i18n::msg('header_priority') . '"><input class="form-control" type="text" name="article-position" value="' . ($sql->getRows() + 1) . '" /></td>
                 <td class="rex-table-action" colspan="3"><input type="hidden" name="rex-api-call" value="article_add" /><button class="btn btn-save" type="submit" name="artadd_function"' . rex::getAccesskey(rex_i18n::msg('article_add'), 'save') . '>' . rex_i18n::msg('article_add') . '</button></td>
             </tr>
                         ';
 }
 // --------------------- ARTIKEL LIST
 for ($i = 0; $i < $sql->getRows(); ++$i) {
     if ($sql->getValue('id') == rex::getProperty('start_article_id')) {
         $class = ' rex-icon-sitestartarticle';
     } elseif ($sql->getValue('startarticle') == 1) {
         $class = ' rex-icon-startarticle';
     } else {
         $class = ' rex-icon-article';
     }
     $class_startarticle = '';
     if ($sql->getValue('startarticle') == 1) {
         $class_startarticle = ' rex-startarticle';
     }
     // --------------------- ARTIKEL EDIT FORM
     if ($function == 'edit_art' && $sql->getValue('id') == $article_id && $KATPERM) {
         $tmpl_td = '';
         if ($withTemplates) {
             $template_select->setSelected($sql->getValue('template_id'));
Exemple #27
0
$sel_lang->setId('rex-id-lang');
$sel_lang->setSize(1);
$sel_lang->setSelected(rex::getProperty('lang'));
foreach (rex_i18n::getLocales() as $l) {
    $sel_lang->addOption($l, $l);
}
if (!empty($error)) {
    echo rex_view::error(implode('<br />', $error));
}
if ($info != '') {
    echo rex_view::info($info);
}
if ($success != '') {
    echo rex_view::success($success);
}
$dbconfig = rex::getProperty('db');
$version = rex_path::src();
if (strlen($version) > 21) {
    $version = substr($version, 0, 8) . '..' . substr($version, strlen($version) - 13);
}
$content = [];
$content[] = '
                        <h3>' . rex_i18n::msg('delete_cache') . '</h3>
                        <p>' . rex_i18n::msg('delete_cache_description') . '</p>
                        <p><a class="btn btn-delete" href="' . rex_url::currentBackendPage(['func' => 'generate']) . '">' . rex_i18n::msg('delete_cache') . '</a></p>

                        <h3>' . rex_i18n::msg('setup') . '</h3>
                        <p>' . rex_i18n::msg('setup_text') . '</p>
                        <p><a class="btn btn-setup" href="' . rex_url::currentBackendPage(['func' => 'setup']) . '" data-confirm="' . rex_i18n::msg('setup_restart') . '?" data-pjax="false">' . rex_i18n::msg('setup') . '</a></p>';
$content[] = '
                        <h3>' . rex_i18n::msg('version') . '</h3>
Exemple #28
0
 }
 $content .= '
         <fieldset>
             <input type="hidden" name="javascript" value="0" id="rex-js-javascript" />
             <input type="hidden" name="subpage" value="" />
             <input type="hidden" name="save" value="1" />
             ' . $add_hidden;
 $formElements = [];
 $n = [];
 $n['label'] = '<label for="rex-user-login">' . rex_i18n::msg('login_name') . '</label>';
 $n['field'] = $add_user_login;
 $formElements[] = $n;
 $n = [];
 $n['label'] = '<label for="rex-js-user-password">' . rex_i18n::msg('password') . '</label>';
 $n['field'] = '<input class="form-control" type="password" id="rex-js-user-password" name="userpsw" autocomplete="off" />';
 if (rex::getProperty('pswfunc') != '') {
     $n['note'] = rex_i18n::msg('psw_encrypted');
 }
 $formElements[] = $n;
 $n = [];
 $n['label'] = '<label for="rex-user-name">' . rex_i18n::msg('name') . '</label>';
 $n['field'] = '<input class="form-control" type="text" id="rex-user-name" name="username" value="' . htmlspecialchars($username) . '" autofocus />';
 $formElements[] = $n;
 $n = [];
 $n['label'] = '<label for="rex-user-description">' . rex_i18n::msg('description') . '</label>';
 $n['field'] = '<input class="form-control" type="text" id="rex-user-description" name="userdesc" value="' . htmlspecialchars($userdesc) . '" />';
 $formElements[] = $n;
 $fragment = new rex_fragment();
 $fragment->setVar('flush', true);
 $fragment->setVar('group', true);
 $fragment->setVar('elements', $formElements, false);
Exemple #29
0
 private static function installAddons($uninstallBefore = false, $installDump = true)
 {
     $addonErr = '';
     rex_package_manager::synchronizeWithFileSystem();
     if ($uninstallBefore) {
         foreach (array_reverse(rex_package::getSystemPackages()) as $package) {
             $manager = rex_package_manager::factory($package);
             $state = $manager->uninstall($installDump);
             if ($state !== true) {
                 $addonErr .= '<li>' . $package->getPackageId() . '<ul><li>' . $manager->getMessage() . '</li></ul></li>';
             }
         }
     }
     foreach (rex::getProperty('system_addons') as $packageRepresentation) {
         $state = true;
         $package = rex_package::get($packageRepresentation);
         $manager = rex_package_manager::factory($package);
         if ($state === true && !$package->isInstalled()) {
             $state = $manager->install($installDump);
         }
         if ($state !== true) {
             $addonErr .= '<li>' . $package->getPackageId() . '<ul><li>' . $manager->getMessage() . '</li></ul></li>';
         }
         if ($state === true && !$package->isAvailable()) {
             $state = $manager->activate();
             if ($state !== true) {
                 $addonErr .= '<li>' . $package->getPackageId() . '<ul><li>' . $manager->getMessage() . '</li></ul></li>';
             }
         }
     }
     if ($addonErr != '') {
         $addonErr = '<ul class="rex-ul1">
         <li>
         <h3 class="rex-hl3">' . rex_i18n::msg('setup_513', '<span class="rex-error">', '</span>') . '</h3>
         <ul>' . $addonErr . '</ul>
         </li>
         </ul>';
     }
     return $addonErr;
 }
Exemple #30
0
 public static function checkPage(rex_user $user)
 {
     $page = self::getCurrentPageObject();
     // --- page pruefen und benoetigte rechte checken
     if (!$page || !$page->checkPermission($user)) {
         // --- fallback zur user startpage -> rechte checken
         $page = self::getPageObject($user->getStartPage());
         if (!$page || !$page->checkPermission($user)) {
             // --- fallback zur system startpage -> rechte checken
             $page = self::getPageObject(rex::getProperty('start_page'));
             if (!$page || !$page->checkPermission($user)) {
                 // --- fallback zur profile page
                 $page = self::getPageObject('profile');
             }
         }
         rex_response::setStatus(rex_response::HTTP_FORBIDDEN);
         rex_response::sendRedirect($page->getHref());
     }
     if ($page !== ($leaf = $page->getFirstSubpagesLeaf())) {
         rex_response::setStatus(rex_response::HTTP_MOVED_PERMANENTLY);
         $url = $leaf->hasHref() ? $leaf->getHref() : rex_context::restore()->getUrl(['page' => $leaf->getFullKey()], false);
         rex_response::sendRedirect($url);
     }
 }