Skip to content
Snippets Groups Projects
class_core_tools.php 130 KiB
Newer Older
  • Learn to ignore specific revisions
  • SNA's avatar
    SNA committed
    <?php
    /*
    
    *   Copyright 2008-2015 Maarch
    
    SNA's avatar
    SNA committed
    *
    
    *   This file is part of Maarch Framework.
    
    SNA's avatar
    SNA committed
    *
    *   Maarch Framework is free software: you can redistribute it and/or modify
    *   it under the terms of the GNU General Public License as published by
    *   the Free Software Foundation, either version 3 of the License, or
    *   (at your option) any later version.
    *
    *   Maarch Framework is distributed in the hope that it will be useful,
    *   but WITHOUT ANY WARRANTY; without even the implied warranty of
    *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    *   GNU General Public License for more details.
    *
    *   You should have received a copy of the GNU General Public License
    
    *   along with Maarch Framework.  If not, see <http://www.gnu.org/licenses/>.
    
    SNA's avatar
    SNA committed
    */
    
    
    /****************************************************************************/
    /*                                                                          */
    /*                                                                          */
    /*               THIS PAGE CAN NOT BE OVERWRITTEN IN A CUSTOM               */
    /*                                                                          */
    /*                                                                          */
    /* **************************************************************************/
    
    
    
    SNA's avatar
    SNA committed
    /**
    * @defgroup core Framework core
    */
    
    /**
    * @brief   Contains all the functions to load core and modules
    *
    * @file
    * @author  Laurent Giovannoni  <dev@maarch.org>
    * @date $date$
    * @version $Revision$
    * @ingroup core
    */
    
    /**
    * @brief   Contains all the functions to load core and modules
    *
    * <ul>
    * <li>Loads core tables into session</li>
    * <li>Loads modules settings into session</li>
    * <li>Builds the application menu</li>
    *  <li>Management and building the framework</li>
    *  <li>Modules services loading</li>
    *  <li>Execution of the module services </li>
    *</ul>
    *
    * @ingroup core
    */
    class core_tools extends functions
    {
        /**
        * Load Maarch core configuration into sessions vars from the core/xml/config.xml file
        */
        public function build_core_config($pathtoxmlcore)
        {
            $xmlconfig = simplexml_load_file($pathtoxmlcore);
    
            // Loads  core tables into session ($_SESSION['tablename'] array)
            $TABLENAME = $xmlconfig->TABLENAME ;
    
            $_SESSION['tablename']['actions']            = (string) $TABLENAME->actions;
            $_SESSION['tablename']['authors']            = (string) $TABLENAME->authors;
            $_SESSION['tablename']['docservers']         = (string) $TABLENAME->docservers;
            $_SESSION['tablename']['doctypes']           = (string) $TABLENAME->doctypes;
            $_SESSION['tablename']['ext_docserver']      = (string) $TABLENAME->extdocserver;
            $_SESSION['tablename']['fulltext']           = (string) $TABLENAME->fulltext;
            $_SESSION['tablename']['groupsecurity']      = (string) $TABLENAME->groupsecurity;
            $_SESSION['tablename']['history']            = (string) $TABLENAME->history;
            $_SESSION['tablename']['history_batch']      = (string) $TABLENAME->history_batch;
            $_SESSION['tablename']['param']              = (string) $TABLENAME->param;
            $_SESSION['tablename']['resgroups']          = (string) $TABLENAME->resgroups;
            $_SESSION['tablename']['resgroup_content']   = (string) $TABLENAME->resgroup_content;
            $_SESSION['tablename']['security']           = (string) $TABLENAME->security;
            $_SESSION['tablename']['status']             = (string) $TABLENAME->status;
            $_SESSION['tablename']['usergroups']         = (string) $TABLENAME->usergroups;
            $_SESSION['tablename']['usergroup_content']  = (string) $TABLENAME->usergroupcontent;
    
    SNA's avatar
    SNA committed
            $_SESSION['tablename']['usergroup_services'] = (string) $TABLENAME->usergroups_services;
    
            $_SESSION['tablename']['users']              = (string) $TABLENAME->users;
    
    SNA's avatar
    SNA committed
        }
    
        /**
        * Load Maarch modules configuration into sessions vars from modules/module_name/xml/config.xml files
        *
        * @param $modules array  Enabled modules of the application
        */
        public function load_modules_config($modules, $mode_batch=false)
        {
    
            require_once "core/class/class_request.php";
    
    SNA's avatar
    SNA committed
            // Browses enabled modules
    
            for ($i = 0; $i < count($modules); $i ++) {
                if (file_exists(
    
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR
                    . "config.xml"
    
                )
                ) {
                    $configPath = $_SESSION['config']['corepath'] . 'custom'
    
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "config.xml";
    
                    $configPath = 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "config.xml";
    
    SNA's avatar
    SNA committed
                }
    
    
                if (file_exists('modules'.DIRECTORY_SEPARATOR.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR.'lang'.DIRECTORY_SEPARATOR.$_SESSION['config']['lang'].'.php')) {
                    include_once 'modules'.DIRECTORY_SEPARATOR.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR.'lang'.DIRECTORY_SEPARATOR.$_SESSION['config']['lang'].'.php';
                }
    
                if (file_exists($configPath)) {
                    // Reads the config.xml file of the current module
                    $xmlconfig = simplexml_load_file($configPath);
    
                    // Loads into $_SESSION['modules_loaded'] module's informations
                    foreach ($xmlconfig->CONFIG as $CONFIG) {
                        $_SESSION['modules_loaded'][$modules[$i]['moduleid']]['name'] =
                            (string) $CONFIG->name;
                        $_SESSION['modules_loaded'][$modules[$i]['moduleid']]['path'] =
                            'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                            . DIRECTORY_SEPARATOR;
                        $comment = (string) $CONFIG->comment;
                        if ( !empty($comment) && defined($comment)
                            && constant($comment) <> NULL
                        ) {
                            $comment = constant($comment);
                        }
                        $_SESSION['modules_loaded'][$modules[$i]['moduleid']]['comment'] =
                            $comment;
    
    SNA's avatar
    SNA committed
    
    
                        $_SESSION['modules_loaded'][$modules[$i]['moduleid']]['fileprefix'] = (string) $CONFIG->fileprefix;
                        $_SESSION['modules_loaded'][$modules[$i]['moduleid']]['loaded'] = (string) $CONFIG->loaded;
                    }
    
    SNA's avatar
    SNA committed
                }
    
                if (file_exists(
                    $_SESSION['config']['corepath'] . 'custom'
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php"
                )
                ) {
                    $path_module_tools = $_SESSION['config']['corepath'] . 'custom'
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php";
                } else {
                    $path_module_tools = 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php";
                }
    
                if (file_exists($path_module_tools)) {
                    require_once($path_module_tools);
    
    SNA's avatar
    SNA committed
                    $modules_tools = new $modules[$i]['moduleid'];
                    //Loads the tables of the module into session
                    $modules_tools->build_modules_tables();
                    //Loads log keywords of the module
                }
    
                foreach ($xmlconfig->KEYWORDS as $keyword) {
    
                    $tmp = (string) $keyword->label;
    
                    if ( !empty($tmp) && defined($tmp) && constant($tmp) <> NULL ) {
    
                        $tmp = constant($tmp);
    
    SNA's avatar
    SNA committed
                    }
    
    SNA's avatar
    SNA committed
    
    
    SNA's avatar
    SNA committed
                    $id = (string) $keyword->id;
    
                    if (! $this->is_var_in_history_keywords_tab($id)) {
                        array_push(
    
                            $_SESSION['history_keywords'],
                            array(
                                'id' => $id,
                                'label' => $tmp
                            )
    
    SNA's avatar
    SNA committed
                    }
                }
            }
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
            if (!$mode_batch) {
    
    SNA's avatar
    SNA committed
                //Loads logs keywords of the actions
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                $db = new Database();
                $stmt = $db->query(
    
                    "select id, label_action from "
                    . $_SESSION['tablename']['actions']
                    . " where enabled = 'Y' and history = 'Y'"
    
    Giovannoni Laurent's avatar
    Giovannoni Laurent committed
                while ($res = $stmt->fetchObject()) {
    
                        $_SESSION['history_keywords'],
                        array(
                            'id' =>'ACTION#' . $res->id,
                            'label' => $this->show_string($res->label_action)
                        )
    
    SNA's avatar
    SNA committed
                }
            }
        }
    
        /**
        * Check if the log keyword is known in the apps
        *
        * @param $id  string Log keyword to check
        * @return bool True if the keyword is found, False otherwise
        */
        public function is_var_in_history_keywords_tab($id)
        {
            $found = false;
            for($i=0;$i<count($_SESSION['history_keywords']);$i++)
            {
                if($_SESSION['history_keywords'][$i]['id'] == $id)
                {
                    $found = $_SESSION['history_keywords'][$i]['label'];
                    break;
                }
            }
            return $found;
        }
    
        /**
        * Loads the modules specific vars into session
        *
        * @param $modules Enabled modules of the application
        */
        public function load_var_session($modules, $userData)
        {
            for ($i = 0;$i < count($modules); $i ++) {
    
                if (file_exists(
                    $_SESSION['config']['corepath'] . 'custom'
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php"
                )
                ) {
                    $path_module_tools = $_SESSION['config']['corepath'] . 'custom'
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php";
                } else {
                    $path_module_tools = 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "class"
                        . DIRECTORY_SEPARATOR . "class_modules_tools.php";
                }
    
    SNA's avatar
    SNA committed
                if (file_exists($path_module_tools)) {
                    require_once $path_module_tools;
                    $modules_tools = new $modules[$i]['moduleid'];
                    if (method_exists(
                        $modules[$i]['moduleid'], 'load_module_var_session'
                    )
                    ) {
                        $modules_tools->load_module_var_session($userData);
                    }
                }
    
                //$this->show_array($_SESSION['user']['baskets']);
    
    SNA's avatar
    SNA committed
            }
        }
    
        /**
        * Loads language variables into session
        */
    
        public static function load_lang($lang = 'fr', $maarch_directory = '', $maarch_apps = '')
    
    SNA's avatar
    SNA committed
        {
            if(isset($_SESSION['config']['lang']) && !empty($_SESSION['config']['lang']))
            {
                $lang = $_SESSION['config']['lang'];
            }
            if(isset($_SESSION['config']['corepath']) && !empty($_SESSION['config']['corepath']))
            {
               $maarch_directory = $_SESSION['config']['corepath'];
            }
            if(isset($_SESSION['config']['app_id']) && !empty($_SESSION['config']['app_id']))
            {
               $maarch_apps = $_SESSION['config']['app_id'];
            }
            //Loading custom lang file if present, this means that language constants are defined in the custom language file before other language files
            if (isset($_SESSION['custom_override_id']) && !empty($_SESSION['custom_override_id']))
                self::load_lang_custom_override($_SESSION['custom_override_id']);
    
    
            if(isset($lang) && file_exists($maarch_directory.'apps/maarch_entreprise/lang'.DIRECTORY_SEPARATOR.$lang.'.php'))
    
    SNA's avatar
    SNA committed
            {
    
                include($maarch_directory.'apps/maarch_entreprise/lang'.DIRECTORY_SEPARATOR.$lang.'.php');
    
    SNA's avatar
    SNA committed
            }
            else
            {
    
                $_SESSION['error'] = "Language file missing";
    
    SNA's avatar
    SNA committed
            }
            if(isset($_SESSION['modules']))
            {
                self::load_lang_modules($_SESSION['modules']);
            }
    
        }
    
        /**
        * Loads language variables of each module
        *
    
        * @param $modules array Enabled modules of the application
    
    SNA's avatar
    SNA committed
        */
    
        private static function load_lang_modules($modules)
    
    SNA's avatar
    SNA committed
        {
    
            for ($i=0;$i<count($modules);$i++) {
                $file_path = $_SESSION['config']['corepath'] . 'custom'
                    . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                    . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
    
                    . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR
    
                    . 'lang' . DIRECTORY_SEPARATOR
                    . $_SESSION['config']['lang'] . '.php';
                if (!file_exists($file_path)) {
                    $file_path = $_SESSION['config']['corepath'] . 'modules'
                    . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR
                    . $_SESSION['config']['lang'] . '.php';
    
                if (isset($_SESSION['config']['lang']) && file_exists($file_path)) {
                    include($file_path);
    
                } else if ($_SESSION['config']['debug'] === "true") {
                    $_SESSION['info'] .= "Language file missing for module : "
    
                    . $modules[$i]['moduleid']."<br/>";
    
    SNA's avatar
    SNA committed
                }
            }
        }
    
    
        private static function load_lang_custom_override($custom_id)
    
    SNA's avatar
    SNA committed
        {
            $pathname = $_SESSION['config']['corepath'].'custom'.DIRECTORY_SEPARATOR.$custom_id.DIRECTORY_SEPARATOR.$_SESSION['config']['lang'].'.php';
    
            if (file_exists($pathname)) {
                include($pathname);
            }
        }
    
        /**
        * Loads menu items of each module and the application into session from menu.xml files
        *
        * @param $modules array Enabled modules of the application
        */
        public function load_menu($modules)
        {
    
            if (file_exists(
                $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR . 'apps'
                . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
                . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'menu.xml'
            )
            ) {
                $path = $_SESSION['config']['corepath'] . 'custom'
                    . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                    . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR
                    . $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . 'xml'
                    . DIRECTORY_SEPARATOR . 'menu.xml';
            } else {
                $path = 'apps' . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
                    . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'menu.xml';
            }
            // Reads the apps/apps_name/xml/menu.xml file  and loads into session
            $xmlconfig = simplexml_load_file($path);
            foreach ($xmlconfig->MENU as $MENU2) {
                $_SESSION['menu'][$k]['id'] = (string) $MENU2->id;
                if (isset($_SESSION['menu'][$k]['id'])
                    && isset($_SESSION['user']['services'][$_SESSION['menu'][$k]['id']])
                    && $_SESSION['user']['services'][$_SESSION['menu'][$k]['id']] == true
                ) { // Menu Identifier must be equal to the Service identifier
                    $libmenu = (string) $MENU2->libconst;
                    if ( !empty($libmenu) && defined($libmenu)
                        && constant($libmenu) <> NULL
                    ) {
                        $libmenu  = constant($libmenu);
                    }
                    $_SESSION['menu'][$k]['libconst'] = $libmenu;
                    $_SESSION['menu'][$k]['url'] = $_SESSION['config']['businessappurl']
                        . (string) $MENU2->url;
                    if (trim((string) $MENU2->target) <> "") {
                        $tmp = preg_replace(
                            '/\/core\/$/', '/', $_SESSION['urltocore']
                        );
                        $_SESSION['menu'][$k]['url'] = $tmp. (string) $MENU2->url;
                        $_SESSION['menu'][$k]['target'] = (string) $MENU2->target;
                    }
                    $_SESSION['menu'][$k]['style'] = (string) $MENU2->style;
                    $_SESSION['menu'][$k]['show'] = true;
                } else {
                    $_SESSION['menu'][$k]['libconst'] ='';
                    $_SESSION['menu'][$k]['url'] ='';
                    $_SESSION['menu'][$k]['style'] = '';
                    $_SESSION['menu'][$k]['show'] = false;
                }
                $k ++;
            }
            // Browses the enabled modules array
    
            for ($i = 0; $i < count($modules); $i ++) {
                if (file_exists(
    
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
                    )
    
                ) {
                    $menuPath = $_SESSION['config']['corepath'] . 'custom'
    
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "menu.xml";
    
    SNA's avatar
    SNA committed
                    $menuPath = 'modules' . DIRECTORY_SEPARATOR
    
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "menu.xml";
    
    SNA's avatar
    SNA committed
                }
    
    SNA's avatar
    SNA committed
    
    
                    $_SESSION['config']['corepath'] . 'modules'
                    . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
    
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
    
                )
                ) {
                    $xmlconfig = simplexml_load_file($menuPath);
                    foreach ($xmlconfig->MENU as $MENU) {
    
    SNA's avatar
    SNA committed
                        $_SESSION['menu'][$k]['id'] = (string) $MENU->id;
    
                            $_SESSION['user']['services'][$_SESSION['menu'][$k]['id']]
    
    SNA's avatar
    SNA committed
                        )
    
                        && $_SESSION['user']['services'][$_SESSION['menu'][$k]['id']] == true
                        ) {
    
                            $libmenu = (string) $MENU->libconst;
                            if ( !empty($libmenu) && defined($libmenu)
                                && constant($libmenu) <> NULL
                            ) {
                                $libmenu  = constant($libmenu);
                            }
                            $_SESSION['menu'][$k]['libconst'] = $libmenu;
    
                            $_SESSION['menu'][$k]['url'] = $_SESSION['config']['businessappurl']
    
                                . (string) $MENU->url;
    
                            if (trim((string) $MENU->target) <> "") {
                                $tmp = preg_replace(
    
                                    '/\/core\/$/', '/', $_SESSION['urltocore']
    
    SNA's avatar
    SNA committed
                                $_SESSION['menu'][$k]['url'] = $tmp
    
                                    . (string) $MENU->url;
    
    SNA's avatar
    SNA committed
                                $_SESSION['menu'][$k]['target'] = (string) $MENU->target;
                            }
                            $_SESSION['menu'][$k]['style'] = (string) $MENU->style;
                            $_SESSION['menu'][$k]['show'] = true;
    
    SNA's avatar
    SNA committed
                            $_SESSION['menu'][$k]['libconst'] = '';
                            $_SESSION['menu'][$k]['url'] = '';
                            $_SESSION['menu'][$k]['style'] = '';
                            $_SESSION['menu'][$k]['show'] = false;
                        }
    
    SNA's avatar
    SNA committed
                    }
                }
            }
    
            $this->load_quicklaunch($modules);
        }
    
        /**
        * Builds the application menu from the session var menu
        *
        * @param  $menu array Enabled menu items
    
        * @param  $myProfil boolean Enabled my profil item
        * @param  $logout boolean Enabled logout item
    
        public function build_menu($menu, $myProfil = true, $logout = true)
    
            //menu tri
            $i=0;
            foreach ($menu as $key => $row) {
                $label[$i] = $row['libconst'];
                $i++;
            }
            // Trie les données par volume décroissant, edition croissant
            // Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
            array_multisort($label, SORT_ASC, $label, SORT_ASC, $menu);
    
            // Browses the menu items
            for($i=0;$i<count($menu);$i++)
            {
                if($menu[$i]['show'] == true)
                {
                    $tmp = $menu[$i]['url'];
    
                    if(preg_match('/php$/', $tmp))
                    {
                        $tmp .= "?reinit=true";
                    }
                    else
                    {
                        $tmp .= "&reinit=true";
                    }
                    $tmp = htmlentities  ( $tmp,ENT_COMPAT, 'UTF-8', true); // Encodes
                    ?>
                    <li onmouseover="this.className='on';" onmouseout="this.className='';">
    
    Damien's avatar
    Damien committed
                    <a href="#" onclick="window.open('<?php echo($tmp);?>', '<?php
    
                        if(isset($menu[$i]['target']) && $menu[$i]['target'] <> '') {
                            echo $menu[$i]['target'];
                        } else {
                            echo '_self';
    
                        }?>');"><span><span style="width:30px;height:30px;display:inline-block;text-align:center;"><i class="<?php 
    
                            echo $menu[$i]['style'] . ' fa-2x';
    
                            ?>"></i></span><span><?php 
    
                            echo trim($menu[$i]['libconst']);?></span></span></a></li>
                    <?php
                }
            }
    
            // Menu items always displayed
    
            echo '<li onmouseover="this.className=\'on\';" onmouseout="this.className=\'\';">
            <a href="'.$_SESSION['config']['businessappurl']
    
                . 'index.php?page=modify_user&amp;admin=users&amp;reinit=true"><span><span style="width:30px;height:30px;display:inline-block;text-align:center;"><i class="fa fa-user fa-2x"></i></span><span>'._MY_INFO.'</span></span></a></li>';
    
            echo '<li onmouseover="this.className=\'on\';" onmouseout="this.className=\'\';">
            <a href="'.$_SESSION['config']['businessappurl']
    
                . 'index.php?display=true&amp;page=logout&amp;logout=true"><span><span style="width:30px;height:30px;display:inline-block;text-align:center;"><i class="fa fa-power-off fa-2x"></i></span><span>'._LOGOUT.'</span></span></a></li>';
    
        }
    
        /**
        * Loads menu items of each module and the application into session from menu.xml files
        *
        * @param $modules array Enabled modules of the application
        */
        public function load_quicklaunch($modules)
        {
            $k = 0;
    
                $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR . 'apps'
                . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
                . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'menu.xml'
    
    SNA's avatar
    SNA committed
                $path = $_SESSION['config']['corepath'] . 'custom'
    
                    . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                    . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR
                    . $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . 'xml'
                    . DIRECTORY_SEPARATOR . 'menu.xml';
    
            } else {
                $path = 'apps' . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
    
                    . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'menu.xml';
    
    SNA's avatar
    SNA committed
            }
            // Reads the apps/apps_name/xml/menu.xml file  and loads into session
            $xmlconfig = simplexml_load_file($path);
            foreach ($xmlconfig->MENU as $MENU2) {
    
                $_SESSION['quicklaunch'][$k]['id'] = (string) $MENU2->id;
                if (isset($_SESSION['quicklaunch'][$k]['id'])
                    && isset($_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']])
                    && $_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']] == true
    
    SNA's avatar
    SNA committed
                ) { // Menu Identifier must be equal to the Service identifier
    
                    $libmenu = (string) $MENU2->libconst;
    
    SNA's avatar
    SNA committed
                    if ( !empty($libmenu) && defined($libmenu)
    
                        && constant($libmenu) <> NULL
    
                        $libmenu  = constant($libmenu);
    
    SNA's avatar
    SNA committed
                    }
    
                    $_SESSION['quicklaunch'][$k]['libconst'] = $libmenu;
                    $_SESSION['quicklaunch'][$k]['url'] = $_SESSION['config']['businessappurl']
    
                        . (string) $MENU2->url;
    
                    if (trim((string) $MENU2->target) <> "") {
                        $tmp = preg_replace(
    
    Cyril Vazquez's avatar
    Cyril Vazquez committed
                            '/\/core\/$/', '/', $_SESSION['urltocore']
    
                        $_SESSION['quicklaunch'][$k]['url'] = $tmp. (string) $MENU2->url;
                        $_SESSION['quicklaunch'][$k]['target'] = (string) $MENU2->target;
    
    SNA's avatar
    SNA committed
                    }
    
                    $_SESSION['quicklaunch'][$k]['style'] = (string) $MENU2->style;
                    $_SESSION['quicklaunch'][$k]['show'] = true;
    
                    $_SESSION['quicklaunch'][$k]['libconst'] ='';
                    $_SESSION['quicklaunch'][$k]['url'] ='';
                    $_SESSION['quicklaunch'][$k]['style'] = '';
                    $_SESSION['quicklaunch'][$k]['show'] = false;
    
    SNA's avatar
    SNA committed
                }
    
    SNA's avatar
    SNA committed
            }
    
            // Browses the enabled modules array
            for ($i = 0; $i < count($modules); $i ++) {
                if (file_exists(
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
                    )
                ) {
                    $menuPath = $_SESSION['config']['corepath'] . 'custom'
                        . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "menu.xml";
                } else {
                    $menuPath = 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "menu.xml";
                }
    
                if (file_exists(
                    $_SESSION['config']['corepath'] . 'modules'
                    . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
                ) || file_exists(
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR . "menu.xml"
                )
                ) {
                    $xmlconfig = simplexml_load_file($menuPath);
                    foreach ($xmlconfig->MENU as $MENU) {
                        $_SESSION['quicklaunch'][$k]['id'] = (string) $MENU->id;
                        if (isset(
                            $_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']]
                        )
                        && $_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']] == true
                        ) {
                            $libmenu = (string) $MENU->libconst;
                            if ( !empty($libmenu) && defined($libmenu)
                                && constant($libmenu) <> NULL
                            ) {
                                $libmenu  = constant($libmenu);
                            }
                            $_SESSION['quicklaunch'][$k]['libconst'] = $libmenu;
                            $_SESSION['quicklaunch'][$k]['url'] = $_SESSION['config']['businessappurl']
                                . (string) $MENU->url;
                            if (trim((string) $MENU->target) <> "") {
                                $tmp = preg_replace(
                                    '/\/core\/$/', '/', $_SESSION['urltocore']
                                );
                                $_SESSION['quicklaunch'][$k]['url'] = $tmp
                                    . (string) $MENU->url;
                                $_SESSION['quicklaunch'][$k]['target'] = (string) $MENU->target;
                            }
                            $_SESSION['quicklaunch'][$k]['style'] = (string) $MENU->style;
                            $_SESSION['quicklaunch'][$k]['show'] = true;
                        } else {
                            $_SESSION['quicklaunch'][$k]['libconst'] = '';
                            $_SESSION['quicklaunch'][$k]['url'] = '';
                            $_SESSION['quicklaunch'][$k]['style'] = '';
                            $_SESSION['quicklaunch'][$k]['show'] = false;
                        }
                        $k ++;
                    }
                }
            }
            
    
    SNA's avatar
    SNA committed
        }
    
        /**
    
        * Builds the application quicklaunch from the session var quicklaunch
    
    SNA's avatar
    SNA committed
        *
    
        * @param  $quicklaunch array Enabled quicklaunch items
    
    SNA's avatar
    SNA committed
        */
    
        public function build_quicklaunch($quicklaunch)
    
    SNA's avatar
    SNA committed
        {
    
            //$this->show_array($quicklaunch);
            // Browses the quicklaunch items
            $arrTmpQuicklaunch = array();
            for ($i=0;$i<count($quicklaunch);$i++) {
                if ($quicklaunch[$i]['show'] == true) {
                    array_push($arrTmpQuicklaunch, $quicklaunch[$i]);
                }
            }
    
            echo '<div style="width: 85%;margin: auto;">';
    
            for ($i=0;$i<count($arrTmpQuicklaunch);$i++) {
                if ($arrTmpQuicklaunch[$i]['show'] == true) {
                    $tmp = $arrTmpQuicklaunch[$i]['url'];
                    if (preg_match('/php$/', $tmp)) {
                        $tmp .= "?reinit=true";
                    } else {
    
    SNA's avatar
    SNA committed
                        $tmp .= "&reinit=true";
                    }
    
                    $tmp = htmlentities($tmp, ENT_COMPAT, 'UTF-8', true); // Encodes
    
    SNA's avatar
    SNA committed
                    ?>
    
                    <a href="#" style="display: inline-block;width: 45%;float:left;" onclick="window.open('<?php 
    
                            echo $tmp;
                            ?>', '<?php 
                            if(
                                isset($arrTmpQuicklaunch[$i]['target']) 
                                && $arrTmpQuicklaunch[$i]['target'] <> ''
                            ) {
                                echo $arrTmpQuicklaunch[$i]['target'];
                            } else {
                                echo '_self';
                            }?>');">
                            <span>
    
                    <span style="width:30px;height:30px;display:inline-block;text-align:center;" id="<?php 
                        echo $arrTmpQuicklaunch[$i]['style'];
                        ?>" >
                        <i style="width:30px;height:30px;" class="<?php 
                            echo $arrTmpQuicklaunch[$i]['style'] . ' fa-2x'
    
                            ;?> mCdarkGrey"></i>
    
                                echo trim($arrTmpQuicklaunch[$i]['libconst']);
                                ?>
    
    SNA's avatar
    SNA committed
                    <?php
    
                } else {
                    //$this->show_array($arrTmpQuicklaunch[$i]);
    
    SNA's avatar
    SNA committed
                }
    
                if($i%2){
                    echo '<div style="clear:both;"></div>';
                }
                
    
    SNA's avatar
    SNA committed
            }
    
            echo '</div>';
    
            echo '<div style="clear:both;"></div>';
    
            // quicklaunch items always displayed
    
            echo '<div style="width: 85%;margin: auto;">';
            echo '<a style="display: inline-block;width: 45%;float: left;" href="' . $_SESSION['config']['businessappurl']
                    . 'index.php?page=modify_user&amp;admin=users&amp;reinit=true">';
            echo '<span>';
    
            echo '<span style="width:30px;height:30px;display:inline-block;text-align:center;">'
    
                .'<i class="fa fa-user fa-2x mCdarkGrey"></i></span>';
    
            echo '<span>'. _MY_INFO . '</span>';
            echo '</a>';
    
            echo '<a style="display: inline-block;width: 45%;float: left;" href="' . $_SESSION['config']['businessappurl']
    
                . 'index.php?display=true&amp;page=logout&amp;logout=true">';
    
            echo '<span style="width:30px;height:30px;display:inline-block;text-align:center;">'
    
                .'<i class="fa fa-power-off fa-2x mCdarkGrey"></i></span>';
    
            echo '<span>'. _LOGOUT . '</span>';
            echo '</a>';
            echo '<div style="clear:both;"></div>';
            echo '</div>';
    
    SNA's avatar
    SNA committed
        }
    
        /**
        * Loads application services into session
        */
        public function load_app_services()
        {
            // Reads the application config.xml file
            if (file_exists(
                $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR . 'apps'
                . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
                . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR . 'services.xml'
            )
            ) {
                $path = $_SESSION['config']['corepath'] . 'custom'
                    . DIRECTORY_SEPARATOR . $_SESSION['custom_override_id']
                    . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR
                    . $_SESSION['config']['app_id'] . DIRECTORY_SEPARATOR . 'xml'
                    . DIRECTORY_SEPARATOR . 'services.xml';
            } else {
                $path = 'apps' . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
                    . DIRECTORY_SEPARATOR . 'xml' . DIRECTORY_SEPARATOR
                    . 'services.xml';
            }
            $xmlconfig = simplexml_load_file($path);
            $k = 0;
            $m = 0;
    
            include_once 'apps/' .$_SESSION['config']['app_id']. '/lang/' . $_SESSION['config']['lang'].'.php' ;
    
    SNA's avatar
    SNA committed
            // Browses the services in that file and loads $_SESSION['app_services']
            foreach ($xmlconfig->SERVICE as $service) {
                $_SESSION['app_services'][$k] = array();
                $_SESSION['app_services'][$k]['id'] = (string) $service->id;
    
                $name = (string) $service->name;
    
                if ( !empty($name) && defined($name) && constant($name) <> NULL ) {
    
                    $name  = constant($name);
    
    SNA's avatar
    SNA committed
                }
    
                $_SESSION['app_services'][$k]['name'] = $name;
                $comment = (string) $service->comment;
    
    SNA's avatar
    SNA committed
                if ( !empty($comment) && defined($comment)
    
                    && constant($comment) <> NULL
    
                    $comment  = constant($comment);
    
    SNA's avatar
    SNA committed
                }
    
                $_SESSION['app_services'][$k]['comment'] = $comment;
    
    SNA's avatar
    SNA committed
                if (isset($service->servicepage)) {
                    $_SESSION['app_services'][$k]['servicepage'] = (string) $service->servicepage;
                    $_SESSION['app_services'][$k]['servicepage'] = preg_replace(
    
                        '/&admin/', '&amp;admin',
    
    SNA's avatar
    SNA committed
                        $_SESSION['app_services'][$k]['servicepage']
                    );
                    $_SESSION['app_services'][$k]['servicepage'] = preg_replace(
    
                        '/&module/', '&amp;module',
    
    SNA's avatar
    SNA committed
                        $_SESSION['app_services'][$k]['servicepage']
                    );
                }
                $_SESSION['app_services'][$k]['servicetype'] = (string) $service->servicetype;
    
                if (isset($service->style)) {
                    $_SESSION['app_services'][$k]['style'] = (string) $service->style;
                }
    
                $systemService = (string) $service->system_service;
                if ($systemService == "false") {
                    $_SESSION['app_services'][$k]['system_service'] = false;
                } else {
                    $_SESSION['app_services'][$k]['system_service'] = true;
                }
                $_SESSION['app_services'][$k]['enabled'] = (string) $service->enabled;
                $l = 0;
                foreach ($service->WHEREAMIUSED as $whereAmIUsed) {
                    if (isset($whereAmIUsed)) {
                        $_SESSION['app_services'][$k]['whereamiused'][$l]['page'] = (string) $whereAmIUsed->page;
                        $_SESSION['app_services'][$k]['whereamiused'][$l]['nature'] = (string) $whereAmIUsed->nature;
                        if (isset($whereAmIUsed->button_label)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['button_label'] = (string) $whereAmIUsed->button_label;
                        }
                        if (isset($whereAmIUsed->tab_label)) {
    
                            $label = (string) $whereAmIUsed->tab_label;
                            if ( !empty($label) && defined($label)
                                && constant($label) <> NULL
                            ) {
                                $label  = constant($label);
                            }
    
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['tab_label'] = $label;
    
    SNA's avatar
    SNA committed
                        }
                        if (isset($whereAmIUsed->tab_order)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['tab_order'] = (string) $whereAmIUsed->tab_order;
                        }
                        if (isset($whereAmIUsed->width)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['width'] = (string) $whereAmIUsed->width;
                        }
                        if (isset($whereAmIUsed->frame_id)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['frame_id'] = (string) $whereAmIUsed->frame_id;
                        }
                        if (isset($whereAmIUsed->height)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['height'] = (string) $whereAmIUsed->height;
                        }
                        if (isset($whereAmIUsed->scrolling)){
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['scrolling'] = (string) $whereAmIUsed->scrolling;
                        }
                        if (isset($whereAmIUsed->style)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['style'] = (string) $whereAmIUsed->style;
                        }
                        if (isset($whereAmIUsed->border)) {
                            $_SESSION['app_services'][$k]['whereamiused'][$l]['border'] = (string) $whereAmIUsed->border;
                        }
                        $l ++;
                    }
                }
                $m = 0;
                // Loads preprocess and postprocess
                foreach ($service->PROCESSINBACKGROUND as $processInBackground) {
                    $_SESSION['app_services'][$k]['processinbackground'][$m]['page'] = (string) $processInBackground->page;
                    if ((string) $processInBackground->preprocess <> "") {
                        $_SESSION['app_services'][$k]['processinbackground'][$m]['preprocess'] = (string) $processInBackground->preprocess;
                    }
                    if ((string) $processInBackground->postprocess <> "") {
                        $_SESSION['app_services'][$k]['processinbackground'][$m]['postprocess'] = (string) $processInBackground->postprocess;
                    }
                    $_SESSION['app_services'][$k]['processinbackground'][$m]['processorder'] = (string) $processInBackground->processorder;
                    $m++;
                }
                $k ++;
            }
        }
    
        /**
        * Loads the services of each module into session
        *
        * @param $modules array Enabled modules of the application
        */
        public function load_modules_services($modules)
        {
            // Browses the enabled modules array
    
            for ($i = 0; $i < count($modules); $i ++) {
    
    SNA's avatar
    SNA committed
                // Reads the module config.xml file
    
                    $_SESSION['config']['corepath'] . 'custom' . DIRECTORY_SEPARATOR
                    . $_SESSION['custom_override_id'] . DIRECTORY_SEPARATOR
                    . 'modules' . DIRECTORY_SEPARATOR . $modules[$i]['moduleid']
                    . DIRECTORY_SEPARATOR . "xml" . DIRECTORY_SEPARATOR
                    . "services.xml"
    
                )
                ) {
                    $path = $_SESSION['config']['corepath'] . 'custom'
    
                        . DIRECTORY_SEPARATOR  . $_SESSION['custom_override_id']
                        . DIRECTORY_SEPARATOR . 'modules' . DIRECTORY_SEPARATOR
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "services.xml";
    
    SNA's avatar
    SNA committed
                    $path = 'modules' . DIRECTORY_SEPARATOR
    
                        . $modules[$i]['moduleid'] . DIRECTORY_SEPARATOR . "xml"
                        . DIRECTORY_SEPARATOR . "services.xml";
    
    SNA's avatar
    SNA committed
                }
                $xmlconfig = simplexml_load_file($path);
                $k = 0;
                $m = 0;
    
                foreach ($xmlconfig->SERVICE as $service) {
                    if ((string) $service->enabled == "true") {
    
    SNA's avatar
    SNA committed
                        $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['id'] = (string) $service->id;
    
                        $name = (string) $service->name;
                        if ( !empty($name) && defined($name)
                            && constant($name) <> NULL
                        ) {
                            $name  = constant($name);
                        }
    
                        $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['name'] =
    
                            $name;
    
                        $comment = (string) $service->comment;
                        if ( !empty($comment) && defined($comment)
                            && constant($comment) <> NULL
                        ) {
                            $comment  = constant($comment);
                        }
    
    SNA's avatar
    SNA committed
                        $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['comment'] =
    
    SNA's avatar
    SNA committed
    
    
                        if (isset($service->servicepage)) {
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['servicepage'] = (string) $service->servicepage;
                        }
                        $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['servicetype'] = (string) $service->servicetype;
    
    
                        if (isset($service->style)) {
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['style'] = (string) $service->style;
                        }
                        $systemService =  (string) $service->system_service;
    
                        if ($systemService == "false") {
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['system_service'] = false;
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['system_service'] = true;
                        }
                        $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['enabled'] = (string) $service->enabled;
    
    
                        $l = 0;
                        foreach ($service->WHEREAMIUSED as $whereAmIUsed) {
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['page'] = (string) $whereAmIUsed->page;
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['nature'] = (string) $whereAmIUsed->nature;
    
                            if (isset($whereAmIUsed->button_label)) {
    
                                $label = (string) $whereAmIUsed->button_label;
                                if ( !empty($label) && defined($label)
                                    && constant($label) <> NULL
                                ) {
                                    $label  = constant($label);
                                }
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['button_label'] =
    
    SNA's avatar
    SNA committed
                            }
    
                            if (isset($whereAmIUsed->tab_label)) {
    
                                $label = (string) $whereAmIUsed->tab_label;
                                if ( !empty($label) && defined($label)
                                    && constant($label) <> NULL
                                ) {
                                    $label  = constant($label);
                                }
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['tab_label'] =
    
    SNA's avatar
    SNA committed
                            }
    
                            if (isset($whereAmIUsed->tab_order)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['tab_order'] = (string) $whereAmIUsed->tab_order;
                            }
    
                            if (isset($whereAmIUsed->frame_id)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['frame_id'] = (string) $whereAmIUsed->frame_id;
                            }
    
                            if (isset($whereAmIUsed->width)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['width'] = (string) $whereAmIUsed->width;
                            }
    
                            if (isset($whereAmIUsed->height)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['height'] = (string) $whereAmIUsed->height;
                            }
    
                            if (isset($whereAmIUsed->scrolling)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['scrolling'] = (string) $whereAmIUsed->scrolling;
                            }
    
                            if (isset($whereAmIUsed->style)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['style'] = (string) $whereAmIUsed->style;
                            }
    
                            if (isset($whereAmIUsed->border)) {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['border'] = (string) $whereAmIUsed->border;
                            }
    
    SNA's avatar
    SNA committed
                        }
    
                        $m = 0;
                        foreach ($service->PROCESSINBACKGROUND as $processInBackground) {
    
    SNA's avatar
    SNA committed
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['page'] = (string) $processInBackground->page;
    
                            if ((string) $processInBackground->preprocess <> "") {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['preprocess'] = (string) $processInBackground->preprocess;
                            }
    
                            if ((string) $processInBackground->postprocess <> "") {
    
    SNA's avatar
    SNA committed
                                $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['postprocess'] = (string) $processInBackground->postprocess;
                            }
                            $_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['processorder'] = (string) $processInBackground->processorder;