Newer
Older
* This file is part of Maarch Framework.
*
* 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/>.
/****************************************************************************/
/* */
/* */
/* THIS PAGE CAN NOT BE OVERWRITTEN IN A CUSTOM */
/* */
/* */
/* **************************************************************************/
* @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
*/
* 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']['history'] = (string) $TABLENAME->history;
$_SESSION['tablename']['history_batch'] = (string) $TABLENAME->history_batch;
$_SESSION['tablename']['param'] = (string) $TABLENAME->param;
$_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;
$_SESSION['tablename']['usergroup_services'] = (string) $TABLENAME->usergroups_services;
$_SESSION['tablename']['users'] = (string) $TABLENAME->users;
* 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)
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';
} else {
$configPath = 'modules'.DIRECTORY_SEPARATOR
.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR.'xml'
.DIRECTORY_SEPARATOR.'config.xml';
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;
if (!empty($comment) && defined($comment)
&& constant($comment) != null
) {
$comment = constant($comment);
}
$_SESSION['modules_loaded'][$modules[$i]['moduleid']]['comment'] =
$comment;
$_SESSION['modules_loaded'][$modules[$i]['moduleid']]['fileprefix'] = (string) $CONFIG->fileprefix;
$_SESSION['modules_loaded'][$modules[$i]['moduleid']]['loaded'] = (string) $CONFIG->loaded;
}
$_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';
$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;
$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) {
array_push(
$_SESSION['history_keywords'],
array(
'id' => $id,
'select id, label_action from '
.$_SESSION['tablename']['actions']
." where enabled = 'Y' and history = 'Y'"
array_push(
$_SESSION['history_keywords'],
array(
'id' => 'ACTION#'.$res->id,
'label' => $this->show_string($res->label_action),
* 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;
}
}
* Loads the modules specific vars into session.
*
* @param $modules Enabled modules of the application
*/
for ($i = 0; $i < count($modules); ++$i) {
$_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';
$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;
if (method_exists(
$modules[$i]['moduleid'], 'load_module_var_session'
)
) {
$modules_tools->load_module_var_session($userData);
}
}
//$this->show_array($_SESSION['user']['baskets']);
public static function load_lang($lang = 'fr', $maarch_directory = '', $maarch_apps = '')
if (isset($_SESSION['config']['lang']) && !empty($_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')) {
include $maarch_directory.'apps/maarch_entreprise/lang'.DIRECTORY_SEPARATOR.$lang.'.php';
} else {
$_SESSION['error'] = 'Language file missing';
* Loads language variables of each module.
*
* @param $modules array Enabled modules of the application
*/
private static function load_lang_modules($modules)
$file_path = 'custom'
.DIRECTORY_SEPARATOR.$_SESSION['custom_override_id']
.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR
.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR
.'lang'.DIRECTORY_SEPARATOR
.$_SESSION['config']['lang'].'.php';
$file_path = '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;
} elseif ($_SESSION['config']['debug'] === 'true') {
$_SESSION['info'] .= 'Language file missing for module : '
.$modules[$i]['moduleid'].'<br/>';
private static function load_lang_custom_override($custom_id)
{
$pathname = $_SESSION['config']['corepath'].'custom'.DIRECTORY_SEPARATOR.$custom_id.DIRECTORY_SEPARATOR.$_SESSION['config']['lang'].'.php';
if (file_exists($pathname)) {
* Loads menu items of each module and the application into session from menu.xml files.
*
* @param $modules array Enabled modules of the application
*/
$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'
$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';
$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;
$_SESSION['menu'][$k]['angular'] = empty((string) $MENU2->angular) ? 'false' : (string) $MENU2->angular;
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
}
$_SESSION['menu'][$k]['libconst'] = $libmenu;
if ($_SESSION['menu'][$k]['angular'] == 'true') {
$_SESSION['menu'][$k]['url'] = (string) $MENU2->url;
} else {
$_SESSION['menu'][$k]['url'] = $_SESSION['config']['businessappurl'].(string) $MENU2->url;
$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;
}
}
// 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['menu'][$k]['angular'] = empty((string) $MENU->angular) ? 'false' : (string) $MENU->angular;
if (isset(
$_SESSION['user']['services'][$_SESSION['menu'][$k]['id']]
&& $_SESSION['user']['services'][$_SESSION['menu'][$k]['id']] == true
) {
$libmenu = (string) $MENU->libconst;
if (!empty($libmenu) && defined($libmenu)
&& constant($libmenu) != null
}
$_SESSION['menu'][$k]['libconst'] = $libmenu;
if ($_SESSION['menu'][$k]['angular'] == 'true') {
$_SESSION['menu'][$k]['url'] = (string) $MENU->url;
} else {
$_SESSION['menu'][$k]['url'] = $_SESSION['config']['businessappurl'].(string) $MENU->url;
$tmp = preg_replace(
'/\/core\/$/', '/', $_SESSION['urltocore']
$_SESSION['menu'][$k]['target'] = (string) $MENU->target;
}
$_SESSION['menu'][$k]['style'] = (string) $MENU->style;
$_SESSION['menu'][$k]['show'] = true;
} else {
$_SESSION['menu'][$k]['libconst'] = '';
$_SESSION['menu'][$k]['url'] = '';
$_SESSION['menu'][$k]['style'] = '';
$_SESSION['menu'][$k]['show'] = false;
}
$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
*/

Florian Azizian
committed
public function build_menu($menu, $myProfil = true, $logout = true)
foreach ($menu as $key => $row) {
$label[$i] = $row['libconst'];
}
// 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);
for ($i = 0; $i < count($menu); ++$i) {
if ($menu[$i]['show'] == true) {
echo '<li onmouseover="this.className=\'on\';" onmouseout="this.className=\'\';">';
echo '<a style="display:flex;align-items:center;" onClick="triggerAngular(\'#'.$menu[$i]['url'].'\')">';
echo "<i style='width:40px;text-align:center;' class='{$menu[$i]['style']} fa-2x'></i>";
echo '<span>';
echo trim($menu[$i]['libconst']);
echo '</span></span></a></li>';
if (preg_match('/php$/', $tmp)) {
$tmp .= '?reinit=true';
} else {
$tmp .= '&reinit=true';
$tmp = htmlentities($tmp, ENT_COMPAT, 'UTF-8', true); // Encodes
echo "<li onmouseover=\"this.className='on';\" onmouseout=\"this.className='';\">";
echo '<a style="display:flex;align-items:center;" href="#" ';
if ($menu[$i]['id'] == 'index_mlb') {
echo 'onclick="checkMultiIndexingGroup(\''.$tmp.'\');">';
} else {
echo 'onclick="window.open(\''.$tmp.'\',\'';
if (isset($menu[$i]['target']) && $menu[$i]['target'] != '') {
echo $menu[$i]['target'];
} else {
echo '_self';
}
echo '\');">';
}
echo '<i style="width:40px;text-align:center;" class="'.$menu[$i]['style'].' fa-2x"></i>';
echo '<span>';
echo trim($menu[$i]['libconst']);
echo '</span></span></a></li>';
}
}
// Menu items always displayed

Florian Azizian
committed
if ($myProfil) {
echo '<li onmouseover="this.className=\'on\';" onmouseout="this.className=\'\';">';
echo '<a style="display:flex;align-items:center;" onClick="triggerAngular(\'#/profile\')">';
echo '<i style="width:40px;text-align:center;" class="fa fa-user fa-2x"></i>';
echo '<span>'._MY_INFO.'</span></a></li>';

Florian Azizian
committed
}
if ($logout) {
echo '<li onmouseover="this.className=\'on\';" onmouseout="this.className=\'\';">';
echo '<a style="display:flex;align-items:center;" href="'.$_SESSION['config']['businessappurl'].'index.php?display=true&page=logout&logout=true">';
echo '<i style="width:40px;text-align:center;" class="fa fa-power-off fa-2x"></i>';
echo '<span>'._LOGOUT.'</span></a></li>';

Florian Azizian
committed
}
* 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;
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['quicklaunch'][$k]['id'] = (string) $MENU2->id;
$_SESSION['quicklaunch'][$k]['angular'] = empty((string) $MENU2->angular) ? 'false' : (string) $MENU2->angular;
if (isset($_SESSION['quicklaunch'][$k]['id'])
&& isset($_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']])
&& $_SESSION['user']['services'][$_SESSION['quicklaunch'][$k]['id']] == true
$libmenu = (string) $MENU2->libconst;
if (!empty($libmenu) && defined($libmenu)
&& constant($libmenu) != null
$_SESSION['quicklaunch'][$k]['libconst'] = $libmenu;
if ($_SESSION['quicklaunch'][$k]['angular'] == 'true') {
$_SESSION['quicklaunch'][$k]['url'] = (string) $MENU2->url;
} else {
$_SESSION['quicklaunch'][$k]['url'] = $_SESSION['config']['businessappurl'].(string) $MENU2->url;
}
$tmp = preg_replace(
$_SESSION['quicklaunch'][$k]['url'] = $tmp.(string) $MENU2->url;
$_SESSION['quicklaunch'][$k]['target'] = (string) $MENU2->target;
$_SESSION['quicklaunch'][$k]['style'] = (string) $MENU2->style;
$_SESSION['quicklaunch'][$k]['show'] = true;
} else {
$_SESSION['quicklaunch'][$k]['libconst'] = '';
$_SESSION['quicklaunch'][$k]['url'] = '';
$_SESSION['quicklaunch'][$k]['style'] = '';
$_SESSION['quicklaunch'][$k]['show'] = false;
// Browses the enabled modules array
for ($i = 0; $i < count($modules); ++$i) {
$_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';
$menuPath = 'modules'.DIRECTORY_SEPARATOR
.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR.'xml'
.DIRECTORY_SEPARATOR.'menu.xml';
$_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) {
$_SESSION['quicklaunch'][$k]['id'] = (string) $MENU->id;
$_SESSION['quicklaunch'][$k]['angular'] = empty((string) $MENU->angular) ? 'false' : (string) $MENU->angular;
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
}
$_SESSION['quicklaunch'][$k]['libconst'] = $libmenu;
if ($_SESSION['quicklaunch'][$k]['angular'] == 'true') {
$_SESSION['quicklaunch'][$k]['url'] = (string) $MENU->url;
} else {
$_SESSION['quicklaunch'][$k]['url'] = $_SESSION['config']['businessappurl'].(string) $MENU->url;
}
$tmp = preg_replace(
'/\/core\/$/', '/', $_SESSION['urltocore']
);
$_SESSION['quicklaunch'][$k]['url'] = $tmp
$_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;
}
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';
$path = 'apps'.DIRECTORY_SEPARATOR.$_SESSION['config']['app_id']
.DIRECTORY_SEPARATOR.'xml'.DIRECTORY_SEPARATOR
.'services.xml';
include_once 'apps/'.$_SESSION['config']['app_id'].'/lang/'.$_SESSION['config']['lang'].'.php';
// 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);
$_SESSION['app_services'][$k]['name'] = $name;
$comment = (string) $service->comment;
if (!empty($comment) && defined($comment)
&& constant($comment) != null
$_SESSION['app_services'][$k]['comment'] = $comment;
if (isset($service->servicepage)) {
$_SESSION['app_services'][$k]['servicepage'] = (string) $service->servicepage;
$_SESSION['app_services'][$k]['servicepage'] = preg_replace(
'/&admin/', '&admin',
$_SESSION['app_services'][$k]['servicepage']
);
$_SESSION['app_services'][$k]['servicepage'] = preg_replace(
'/&module/', '&module',
$_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;
$_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
$_SESSION['app_services'][$k]['whereamiused'][$l]['tab_label'] = $label;
}
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;
}
$_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;
}
}
}
$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;
* 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) {
$path = '';
$moduleServiceXml = 'modules'.DIRECTORY_SEPARATOR.$modules[$i]['moduleid'].DIRECTORY_SEPARATOR.'xml'.DIRECTORY_SEPARATOR.'services.xml';
if (file_exists(
'custom'.DIRECTORY_SEPARATOR . $_SESSION['custom_override_id'].DIRECTORY_SEPARATOR.$moduleServiceXml
)
) {
$path = 'custom' .DIRECTORY_SEPARATOR.$_SESSION['custom_override_id'].DIRECTORY_SEPARATOR.$moduleServiceXml;
} elseif (file_exists($moduleServiceXml)) {
$path = $moduleServiceXml;
if (!empty($path)) {
$xmlconfig = simplexml_load_file($path);
$k = 0;
$m = 0;
foreach ($xmlconfig->SERVICE as $service) {
if ((string) $service->enabled == 'true') {
$_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);
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['comment'] =
$comment;
if (isset($service->servicepage)) {
$_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)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['style'] = (string) $service->style;
$systemService = (string) $service->system_service;
if ($systemService == 'false') {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['system_service'] = false;
} else {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['system_service'] = true;
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['enabled'] = (string) $service->enabled;
$l = 0;
foreach ($service->WHEREAMIUSED as $whereAmIUsed) {
$_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);
}
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['button_label'] =
$label;
}
if (isset($whereAmIUsed->tab_label)) {
$label = (string) $whereAmIUsed->tab_label;
if (!empty($label) && defined($label)
&& constant($label) != null
) {
$label = constant($label);
}
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['tab_label'] =
$label;
}
if (isset($whereAmIUsed->tab_order)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['tab_order'] = (string) $whereAmIUsed->tab_order;
}
if (isset($whereAmIUsed->frame_id)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['frame_id'] = (string) $whereAmIUsed->frame_id;
}
if (isset($whereAmIUsed->width)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['width'] = (string) $whereAmIUsed->width;
}
if (isset($whereAmIUsed->height)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['height'] = (string) $whereAmIUsed->height;
}
if (isset($whereAmIUsed->scrolling)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['scrolling'] = (string) $whereAmIUsed->scrolling;
}
if (isset($whereAmIUsed->style)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['style'] = (string) $whereAmIUsed->style;
}
if (isset($whereAmIUsed->border)) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['whereamiused'][$l]['border'] = (string) $whereAmIUsed->border;
}
++$l;
$m = 0;
foreach ($service->PROCESSINBACKGROUND as $processInBackground) {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['page'] = (string) $processInBackground->page;
if ((string) $processInBackground->preprocess != '') {
$_SESSION['modules_services'][$modules[$i]['moduleid']][$k]['processinbackground'][$m]['preprocess'] = (string) $processInBackground->preprocess;
}
if ((string) $processInBackground->postprocess != '') {
$_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;
++$m;
* Executes the module' s services in the page.
*
* @param $modules_services array List of the module's services
* @param $whereami string Page where to execute the service
* @param $servicenature string Nature of the service (by default, the function takes all the services natures)
* @param $id_service string Identifier of one specific service (empty by default)
* @param $id_module string Identifier of one specific module (empty by default)
*/
public function execute_modules_services($modules_services, $whereami, $servicenature = 'all', $id_service = '', $id_module = '')
$executedServices = array();
for ($i = 0; $i < count($modules_services[$id_module]); ++$i) {
&& isset($modules_services[$id_module][$i]['whereamiused'])
$modules_services[$id_module][$i]['whereamiused']
) {
$name = $id = $width = $height = $frameborder = $scrolling = $style = '';
if ($modules_services[$id_module][$i]['whereamiused'][$k]['page'] == $whereami) {
if ($modules_services[$id_module][$i]['whereamiused'][$k]['nature'] == 'frame'
&& $_SESSION['user']['services'][$modules_services[$id_module][$i]['id']]
$modules_services[$id_module][$i]['id'],
$executedServices
)
$executedServices,
$modules_services[$id_module][$i]['id']
$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id']
$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id']
$name = 'name="'.$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id'].'"';
}
if (isset(
$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id']
$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id']
$id = 'id="'.$modules_services[$id_module][$i]['whereamiused'][$k]['frame_id'].'"';
}
if (isset(
$modules_services[$id_module][$i]['whereamiused'][$k]['width']
$modules_services[$id_module][$i]['whereamiused'][$k]['width']
$width = 'width="'.$modules_services[$id_module][$i]['whereamiused'][$k]['width'].'" ';
}
if (isset(
$modules_services[$id_module][$i]['whereamiused'][$k]['height']
$modules_services[$id_module][$i]['whereamiused'][$k]['height']
$height = 'height="'.$modules_services[$id_module][$i]['whereamiused'][$k]['height'].'"';