Skip to content
Snippets Groups Projects
Select Git revision
  • 1b837a1abd760f296718b18604d0d6e7f1bf1687
  • main default protected
  • step-3263
  • feature/plugins-cli
  • feature/vite
  • step-2484-peerreview
  • biest/issue-5051
  • tests/simplify-jsonapi-tests
  • fix/typo-in-1a70031
  • feature/broadcasting
  • database-seeders-and-factories
  • feature/peer-review-2
  • feature-feedback-jsonapi
  • feature/peerreview
  • feature/balloon-plus
  • feature/stock-images-unsplash
  • tic-2588
  • 5.0
  • 5.2
  • biest/unlock-blocks
  • biest-1514
21 results

_bootstrap.php

  • Forked from Stud.IP / Stud.IP
    4033 commits behind the upstream repository.
    David Siegfried's avatar
    David Siegfried authored and Jan-Hendrik Willms committed
    1b837a1a
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    _bootstrap.php 4.45 KiB
    <?php
    
    // set include path
    $inc_path = ini_get('include_path');
    $inc_path .= PATH_SEPARATOR . dirname(__FILE__) . '/../..';
    $inc_path .= PATH_SEPARATOR . dirname(__FILE__) . '/../../config';
    ini_set('include_path', $inc_path);
    
    require 'lib/classes/StudipAutoloader.php';
    require 'lib/functions.php';
    require_once 'lib/language.inc.php';
    require 'lib/visual.inc.php';
    
    $STUDIP_BASE_PATH = realpath(dirname(__FILE__) . '/../..');
    
    StudipAutoloader::register();
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/calendar', 'Studip\\Calendar');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/classes');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/classes', 'Studip');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/exceptions');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/exceptions/resources');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/filesystem');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/migrations');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/models');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/models/resources');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/phplib');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/raumzeit');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/resources');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/plugins/core');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/modules');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/plugins/db');
    StudipAutoloader::addAutoloadPath($STUDIP_BASE_PATH . '/lib/plugins/engine');
    
    // load config-variables
    StudipFileloader::load(
        'config_defaults.inc.php config_local.inc.php',
        $GLOBALS,
        compact('STUDIP_BASE_PATH', 'ABSOLUTE_URI_STUDIP', 'ASSETS_URL', 'CANONICAL_RELATIVE_PATH_STUDIP'),
        true
    );
    require 'config/config.inc.php';
    
    // Do not send mails of any kind during tests
    require 'vendor/email_message/email_message.php';
    require 'vendor/email_message/debug_message.php';
    StudipMail::setDefaultTransporter(new debug_message_class());
    
    require_once 'vendor/flexi/lib/flexi.php';
    $GLOBALS['template_factory'] = new Flexi_TemplateFactory(dirname(dirname(__DIR__)) . '/templates');
    
    // create "fake" cache class
    if (!class_exists('StudipArrayCache')) {
        class StudipArrayCache implements StudipCache {
            public $data = [];
    
            function expire($key)
            {
                unset($this->data);
            }
    
            function flush()
            {
                $this->data = [];
            }
    
            function read($key)
            {
                return $this->data[$key];
            }
    
            function write($name, $content, $expire = 43200)
            {
                return ($this->data[$name] = $content);
            }
        }
    }
    
    // SimpleORMapFake
    if (!class_exists('StudipTestHelper')) {
        class StudipTestHelper
        {
            static function set_up_tables($tables)
            {
                // first step, set fake cache
                $testconfig = new Config(['cache_class' => 'StudipArrayCache']);
                Config::set($testconfig);
                StudipCacheFactory::setConfig($testconfig);
    
                $GLOBALS['CACHING_ENABLE'] = true;
    
                $cache = StudipCacheFactory::getCache(false);
    
                // second step, expire table scheme
                SimpleORMap::expireTableScheme();
    
                $schemes = [];
    
                foreach ($tables as $db_table) {
                    include TEST_FIXTURES_PATH."simpleormap/$db_table.php";
                    $db_fields = $pk = [];
                    foreach ($result as $rs) {
                        $db_fields[mb_strtolower($rs['name'])] = [
                            'name'    => $rs['name'],
                            'null'    => $rs['null'],
                            'default' => $rs['default'],
                            'type'    => $rs['type'],
                            'extra'   => $rs['extra']
                        ];
                        if ($rs['key'] == 'PRI'){
                            $pk[] = mb_strtolower($rs['name']);
                        }
                    }
                    $schemes[$db_table]['db_fields'] = $db_fields;
                    $schemes[$db_table]['pk'] = $pk;
                }
    
                $cache->write('DB_TABLE_SCHEMES', serialize($schemes));
            }
    
            static function tear_down_tables()
            {
                SimpleORMap::expireTableScheme();
                Config::set(null);
    
                StudipCacheFactory::setConfig(null);
                $GLOBALS['CACHING_ENABLE'] = false;
            }
        }
    }