Skip to content
Snippets Groups Projects
init.php 8.64 KiB
Newer Older
  • Learn to ignore specific revisions
  • SNA's avatar
    SNA committed
    <?php
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    /**
     * Copyright Maarch since 2008 under licence GPLv3.
     * See LICENCE.txt file at the root folder for more details.
     * This file is part of Maarch software.
     *
     */
    
    /**
     * @brief Core Controller
     * @author dev@maarch.org
     * @ingroup core
     */
    
    
    require_once dirname(__file__) . '/class/Url.php';
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    //dynamic session name
    
    $sessionName = str_replace("\\","/", dirname(__file__));
    $sessionName = str_replace($_SERVER['DOCUMENT_ROOT'], '', $sessionName);
    $sessionName = str_replace("/", '', $sessionName);
    
    $sessionName = str_replace('core', '', $sessionName);
    
    $sessionName = str_replace(".", '', $sessionName);
    
    if ($sessionName == '') {
        $sessionName = 'maarch';
    }
    
    Damien's avatar
    Damien committed
    $secure = empty($_SERVER["HTTPS"]) ? null : $_SERVER["HTTPS"];
    
    $httponly = true;
    
    $cookieParams = session_get_cookie_params();
    
    session_set_cookie_params(
    
        $cookieParams["path"], 
        $cookieParams["domain"], 
        $secure, 
        $httponly
    );
    
    session_name($sessionName);
    
    SNA's avatar
    SNA committed
    session_start();
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    
    
    $_SESSION['sessionName'] = $sessionName;
    
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
    if (!isset($_SESSION['config']) || !isset($_SESSION['businessapps'][0]['appid'])) {
    
        require_once('class/class_portal.php');
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
        $portal = new portal();
        $portal->unset_session();
        $portal->build_config();
    }
    
    if (isset($_SESSION['config']['default_timezone'])
    
        && ! empty($_SESSION['config']['default_timezone'])
    
        ini_set('date.timezone', $_SESSION['config']['default_timezone']);
        date_default_timezone_set($_SESSION['config']['default_timezone']);
    
        ini_set('date.timezone', 'Europe/Paris');
        date_default_timezone_set('Europe/Paris');
    
        && ! empty($_SESSION['config']['corepath'])
    
        chdir($_SESSION['config']['corepath']);
    
    SNA's avatar
    SNA committed
    }
    
    SNA's avatar
    SNA committed
    //ini_set('error_reporting', E_ALL);
    
    if (isset($_SESSION['custom_override_id'])
        && ! empty($_SESSION['custom_override_id'])
        && isset($_SESSION['config']['corepath'])
    
        && ! empty($_SESSION['config']['corepath'])
    
    ) {
        $path = $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
    
            . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR;
    
            $path . PATH_SEPARATOR . $_SESSION['config']['corepath']
            . PATH_SEPARATOR . get_include_path()
    
    } else if (isset($_SESSION['config']['corepath'])
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
        && ! empty($_SESSION['config']['corepath'])
    
            $_SESSION['config']['corepath'] . PATH_SEPARATOR . get_include_path()
    
    if(file_exists('installed.lck')) {
    
        require_once 'vendor/autoload.php';
    
    }
    
    
    
    /**
     * Get an array that represents directory tree
     * @param string $directory     Directory path
     * @param bool $recursive         Include sub directories
     * @param bool $listDirs         Include directories on listing
     * @param bool $listFiles         Include files on listing
     * @param regex $exclude         Exclude paths that matches this regex
     */
    function maarchFilesWhiteList($directory, $isCustom = false, $recursive = true, $listDirs = false, $listFiles = true, $exclude = '')
    {
        $arrayItems = array();
        $skipByExclude = false;
        $handle = opendir($directory);
        if ($handle) {
            while (false !== ($file = readdir($handle))) {
                preg_match("/(^(([\.]){1,2})$|"
                    . "(\.(svn|git|md|xml|default|inc|js|sql|html|sh|bat|txt|log|css|jpg|jpeg|png|gif|doc|docx"
                    . "|xls|xlsx|odt|ods|csv|pdf|rb|jar|svg|psd|msi|vbs))|(Thumbs\.db|\.DS_STORE|tools|css|js|img|lang|"
                    . "sql|tmp|log|logs|xml))$/iu", $file, $skip);
                if ($exclude) {
                    preg_match($exclude, $file, $skipByExclude);
                }
                if (!$skip && !$skipByExclude) {
                    if (is_dir($directory. DIRECTORY_SEPARATOR . $file)) {
                        if ($recursive) {
                            $arrayItems = array_merge(
                                $arrayItems, 
                                maarchFilesWhiteList(
                                    $directory. DIRECTORY_SEPARATOR . $file, 
                                    $isCustom, 
                                    $recursive, 
                                    $listDirs, 
                                    $listFiles, 
                                    $exclude
                                )
                            );
                        }
                        if ($listDirs) {
                            $fileName = $file;
                            $file = $directory . DIRECTORY_SEPARATOR . $file;
                            $arrayItems[$fileName] = $file;
                        }
                    } else {
                        if ($listFiles) {
                            //$fileName = $file;
                            $file = $directory . DIRECTORY_SEPARATOR . $file;
                            if (
                                $isCustom 
                                && file_exists('custom/' . $_SESSION['custom_override_id'] . '/' . $file)
                            ) {
                                //$arrayItems[$fileName] = 'custom/' . $_SESSION['custom_override_id'] . '/' . $file;
    
                                array_push($arrayItems, 'custom'. DIRECTORY_SEPARATOR . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR . $file);
    
                            } else {
                                //$arrayItems[$fileName] = $file;
                                array_push($arrayItems, $file);
                            }
                        }
                    }
                }
            }
            closedir($handle);
        }
        return $arrayItems;
    }
    
    
    
    Damien's avatar
    Damien committed
    if (!isset($_SESSION['maarchFilesWhiteList']) || $_SESSION['maarchFilesWhiteListTurn'] == 1 ) {
    
        $isCustom = false;
        if (
            is_dir('custom/' . $_SESSION['custom_override_id']) 
            && !empty($_SESSION['custom_override_id'])
        ) {
            $isCustom = true;
        }
    
    
        if(!isset($_SESSION['maarchFilesWhiteListTurn'])){
            $_SESSION['maarchFilesWhiteListTurn'] = 1;
        } else {
            $_SESSION['maarchFilesWhiteListTurn'] = 2;
        }
    
    
        $_SESSION['maarchFilesWhiteList'] = array();
        $_SESSION['maarchFilesWhiteList']['core'] = maarchFilesWhiteList('core', $isCustom);
        $_SESSION['maarchFilesWhiteList']['apps'] = maarchFilesWhiteList('apps', $isCustom);
        $_SESSION['maarchFilesWhiteList']['modules'] = array();
    
        $modules = array();
        $handle = opendir('modules');
        if ($handle) {
            while (false !== ($file = readdir($handle))) {
                //echo $file . '<br/>';
                if (is_dir($_SESSION['config']['corepath'] . '/modules/' . $file) && $file <> '.' && $file <> '..') {
                    array_push($modules, $file);
                }
            }
        }
    
        $countModules = count($modules);
        for ($z=0;$z<$countModules;$z++) {
    
            $_SESSION['maarchFilesWhiteList']['modules'][$modules[$z]] = maarchFilesWhiteList(
    
                'modules' . DIRECTORY_SEPARATOR . $modules[$z],
    
                $isCustom
            );
        }
        if (
            is_dir($_SESSION['config']['corepath'] . '/custom/' . $_SESSION['custom_override_id']) 
            && !empty($_SESSION['custom_override_id'])
        ) {
            if (is_dir($_SESSION['config']['corepath'] . 'custom/' . $_SESSION['custom_override_id'] . '/core')) {
    
                $_SESSION['maarchFilesWhiteList']['custom']['core'] = maarchFilesWhiteList('custom'. DIRECTORY_SEPARATOR . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR .'core');
    
                $_SESSION['maarchFilesWhiteList']['core'] 
                    = array_merge($_SESSION['maarchFilesWhiteList']['core'], $_SESSION['maarchFilesWhiteList']['custom']['core']);
            }
            if (is_dir($_SESSION['config']['corepath'] . 'custom/' . $_SESSION['custom_override_id']. '/apps')) {
    
                $_SESSION['maarchFilesWhiteList']['custom']['apps'] = maarchFilesWhiteList('custom' . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']. DIRECTORY_SEPARATOR .'apps');
    
                $_SESSION['maarchFilesWhiteList']['apps'] 
                    = array_merge($_SESSION['maarchFilesWhiteList']['apps'], $_SESSION['maarchFilesWhiteList']['custom']['apps']);
    
            }
    
            for ($z=0;$z<$countModules;$z++) {
    
                if (is_dir($_SESSION['config']['corepath'] . 'custom/' . $_SESSION['custom_override_id']. '/modules/' . $modules[$z])) {
                    $_SESSION['maarchFilesWhiteList']['custom']['modules'][$modules[$z]] = maarchFilesWhiteList(
    
                        'custom'. DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']. DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR . $modules[$z],
    
                        $isCustom
                    );
                    $_SESSION['maarchFilesWhiteList']['modules'][$modules[$z]] 
                        = array_merge($_SESSION['maarchFilesWhiteList']['modules'][$modules[$z]], $_SESSION['maarchFilesWhiteList']['custom']['modules'][$modules[$z]]);
                }
                
            }
        }
    
        // echo '<pre>';
        // print_r($_SESSION['maarchFilesWhiteList']);
        // echo '</pre>';
        // exit;