Пример #1
0
 public function addTestFolder($folder)
 {
     if (is_dir($folder)) {
         rex_autoload::addDirectory($folder);
         $this->testFoldersIterator->append(rex_finder::factory($folder)->recursive()->filesOnly()->getIterator());
     }
 }
Пример #2
0
    // add package path for fragment loading
    if (is_readable($folder . 'fragments')) {
        rex_fragment::addDirectory($folder . 'fragments' . DIRECTORY_SEPARATOR);
    }
    // add addon path for class-loading
    if (is_readable($folder . 'lib')) {
        rex_autoload::addDirectory($folder . 'lib');
    }
    if (is_readable($folder . 'vendor')) {
        rex_autoload::addDirectory($folder . 'vendor');
    }
    $autoload = $package->getProperty('autoload');
    if (is_array($autoload) && isset($autoload['classes']) && is_array($autoload['classes'])) {
        foreach ($autoload['classes'] as $dir) {
            $dir = $package->getPath($dir);
            if (is_readable($dir)) {
                rex_autoload::addDirectory($dir);
            }
        }
    }
}
// now we actually include the addons logic
foreach ($packageOrder as $packageId) {
    $package = rex_package::get($packageId);
    // include the addon itself
    if (is_readable($package->getPath(rex_package::FILE_BOOT))) {
        $package->includeFile(rex_package::FILE_BOOT);
    }
}
// ----- all addons configs included
rex_extension::registerPoint(new rex_extension_point('PACKAGES_INCLUDED'));
Пример #3
0
 /**
  * Installs a package.
  *
  * @param bool $installDump When TRUE, the sql dump will be importet
  *
  * @throws rex_functional_exception
  *
  * @return bool TRUE on success, FALSE on error
  */
 public function install($installDump = true)
 {
     try {
         // check package directory perms
         $install_dir = $this->package->getPath();
         if (!rex_dir::isWritable($install_dir)) {
             throw new rex_functional_exception($this->i18n('dir_not_writable', $install_dir));
         }
         // check package.yml
         $packageFile = $this->package->getPath(rex_package::FILE_PACKAGE);
         if (!is_readable($packageFile)) {
             throw new rex_functional_exception($this->i18n('missing_yml_file'));
         }
         try {
             rex_file::getConfig($packageFile);
         } catch (rex_yaml_parse_exception $e) {
             throw new rex_functional_exception($this->i18n('invalid_yml_file') . ' ' . $e->getMessage());
         }
         $packageId = $this->package->getProperty('package');
         if ($packageId === null) {
             throw new rex_functional_exception($this->i18n('missing_id', $this->package->getPackageId()));
         }
         if ($packageId != $this->package->getPackageId()) {
             $parts = explode('/', $packageId, 2);
             throw new rex_functional_exception($this->wrongPackageId($parts[0], isset($parts[1]) ? $parts[1] : null));
         }
         if ($this->package->getVersion() === null) {
             throw new rex_functional_exception($this->i18n('missing_version'));
         }
         // check requirements and conflicts
         $message = '';
         if (!$this->checkRequirements()) {
             $message = $this->message;
         }
         if (!$this->checkConflicts()) {
             $message .= $this->message;
         }
         if ($message) {
             throw new rex_functional_exception($message);
         }
         $reinstall = $this->package->getProperty('install');
         $available = $this->package->isAvailable();
         $this->package->setProperty('install', true);
         // include install.php
         if (is_readable($this->package->getPath(rex_package::FILE_INSTALL))) {
             if (!$available) {
                 rex_autoload::addDirectory($this->package->getPath('lib'));
                 rex_autoload::addDirectory($this->package->getPath('vendor'));
                 rex_i18n::addDirectory($this->package->getPath('lang'));
             }
             $this->package->includeFile(rex_package::FILE_INSTALL);
             if (($instmsg = $this->package->getProperty('installmsg', '')) != '') {
                 throw new rex_functional_exception($instmsg);
             }
             if (!$this->package->isInstalled()) {
                 throw new rex_functional_exception($this->i18n('no_reason'));
             }
         }
         // import install.sql
         $installSql = $this->package->getPath(rex_package::FILE_INSTALL_SQL);
         if ($installDump === true && is_readable($installSql)) {
             rex_sql_util::importDump($installSql);
         }
         if (!$reinstall) {
             $this->package->setProperty('status', true);
         }
         $this->saveConfig();
         if ($this->generatePackageOrder) {
             self::generatePackageOrder();
         }
         // copy assets
         $assets = $this->package->getPath('assets');
         if (is_dir($assets)) {
             if (!rex_dir::copy($assets, $this->package->getAssetsPath())) {
                 throw new rex_functional_exception($this->i18n('install_cant_copy_files'));
             }
         }
         $this->message = $this->i18n($reinstall ? 'reinstalled' : 'installed', $this->package->getName());
         return true;
     } catch (rex_functional_exception $e) {
         $this->message = $e->getMessage();
     } catch (rex_sql_exception $e) {
         $this->message = 'SQL error: ' . $e->getMessage();
     }
     $this->package->setProperty('install', false);
     $this->message = $this->i18n('no_install', $this->package->getName()) . '<br />' . $this->message;
     return false;
 }
Пример #4
0
// start output buffering as early as possible, so we can be sure
// we can set http header whenever we want/need to
ob_start();
ob_implicit_flush(0);
mb_internal_encoding('UTF-8');
// deactivate session cache limiter
session_cache_limiter(false);
// set arg_separator to get valid html output if session.use_trans_sid is activated
ini_set('arg_separator.output', '&amp;');
require_once __DIR__ . '/lib/util/path.php';
rex_path::init($REX['HTDOCS_PATH'], $REX['BACKEND_FOLDER']);
require_once rex_path::core('lib/autoload.php');
// register core-classes  as php-handlers
rex_autoload::register();
// add core base-classpath to autoloader
rex_autoload::addDirectory(rex_path::core('lib'));
rex_url::init($REX['HTDOCS_PATH'], $REX['BACKEND_FOLDER']);
// start timer at the very beginning
rex::setProperty('timer', new rex_timer($_SERVER['REQUEST_TIME_FLOAT']));
// add backend flag to rex
rex::setProperty('redaxo', $REX['REDAXO']);
// add core lang directory to rex_i18n
rex_i18n::addDirectory(rex_path::core('lang'));
// add core base-fragmentpath to fragmentloader
rex_fragment::addDirectory(rex_path::core('fragments/'));
// ----------------- FUNCTIONS
require_once rex_path::core('functions/function_rex_globals.php');
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');