240 lines
7.9 KiB
PHP
240 lines
7.9 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of NOALYSS.
|
|
*
|
|
* PhpCompta 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 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* PhpCompta 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 PhpCompta; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
// Copyright (2002-2021) Author Dany De Bontridder <danydb@noalyss.eu>
|
|
|
|
namespace Noalyss;
|
|
|
|
use \HtmlInput;
|
|
use \Dossier;
|
|
use \User;
|
|
|
|
/**
|
|
* @file
|
|
* @brief Main class for Mobile device
|
|
*/
|
|
|
|
/**
|
|
* @class Mobile
|
|
* @brief Main class for Mobile device
|
|
*/
|
|
class Mobile
|
|
{
|
|
/**
|
|
* @brief Load a module with all its data from database thanks the access_code
|
|
* @global \Noalyss\type $g_user
|
|
* @param type $p_access_code
|
|
* @return type
|
|
*/
|
|
|
|
function load_module($p_access_code)
|
|
{
|
|
global $g_user;
|
|
$cn=Dossier::connect();
|
|
$aModule=$cn->get_row("
|
|
select
|
|
me_file,me_parameter,me_javascript,me_type,menu_ref.me_code,
|
|
pmo_id,pmo_order,pmo_default
|
|
from menu_ref
|
|
join profile_mobile using (me_code)
|
|
where
|
|
me_code=$1 and
|
|
(me_file is not null or trim(me_file) <>'' or
|
|
me_javascript is not null or trim (me_javascript) <> '')
|
|
and profile_mobile.p_id=$2",
|
|
array($p_access_code,$g_user->get_profile()));
|
|
|
|
if (count($aModule)==0)
|
|
{
|
|
return [];
|
|
}
|
|
return $aModule;
|
|
}
|
|
/**
|
|
* @brief HTML Page
|
|
* @staticvar int $already_call
|
|
* @return type
|
|
*/
|
|
function page_start()
|
|
{
|
|
global $version_noalyss;
|
|
// check not called twiced
|
|
static $already_call=0;
|
|
if ($already_call==1)
|
|
return;
|
|
$already_call=1;
|
|
|
|
$style="style-classic7.css";
|
|
|
|
$title="NOALYSS";
|
|
echo '<!doctype html>';
|
|
printf("\n");
|
|
|
|
echo "<HTML>";
|
|
|
|
echo "<HEAD>";
|
|
echo '<meta charset="utf-8">';
|
|
echo "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
|
|
echo "
|
|
<TITLE>$title</TITLE>
|
|
<link rel=\"icon\" type=\"image/ico\" href=\"favicon.ico\" />
|
|
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
|
|
<LINK id=\"bootstrap\" REL=\"stylesheet\" type=\"text/css\" href=\"css/bootstrap.min.css\" media=\"screen\"/>
|
|
<LINK id=\"fontello\" REL=\"stylesheet\" type=\"text/css\" href=\"css/font/fontello/css/fontello.css\" media=\"screen\"/>
|
|
<LINK id=\"pagestyle\" REL=\"stylesheet\" type=\"text/css\" href=\"css/".$style."?version=".$version_noalyss."\" media=\"screen\"/>
|
|
<link rel=\"stylesheet\" type=\"text/css\" href=\"css/style-print.css?version=".$version_noalyss."\" media=\"print\"/>";
|
|
|
|
// preload font
|
|
echo '<link rel="preload" href="./css/font/OpenSansRegular.woff" as="font" crossorigin="anonymous" />';
|
|
echo '<link rel="preload" href="./css/font/SansationLight/SansationLight.woff" as="font" crossorigin="anonymous" />';
|
|
echo '<link rel="preload" href="./css/font/fontello/fontello.woff" as="font" crossorigin="anonymous" />';
|
|
|
|
echo '<script language="javascript" src="js/calendar.js"></script>
|
|
<script type="text/javascript" src="js/lang/calendar-en.js"></script>';
|
|
|
|
if (isset($_SESSION[SESSION_KEY.'g_lang'])&&$_SESSION[SESSION_KEY.'g_lang']=='fr_FR.utf8')
|
|
{
|
|
echo '<script type="text/javascript" src="js/lang/calendar-fr.js"></script>';
|
|
}
|
|
elseif (isset($_SESSION[SESSION_KEY.'g_lang'])&&$_SESSION[SESSION_KEY.'g_lang']=='nl_NL.utf8')
|
|
{
|
|
echo '<script type="text/javascript" src="js/lang/calendar-nl.js"></script>';
|
|
}
|
|
|
|
echo '
|
|
<script language="javascript" src="js/calendar-setup.js"></script>
|
|
<LINK REL="stylesheet" type="text/css" href="css/calendar-blue.css" media="screen">
|
|
';
|
|
// language
|
|
if (isset($_SESSION[SESSION_KEY.'g_lang']))
|
|
{
|
|
set_language();
|
|
}
|
|
|
|
echo load_all_script();
|
|
echo ' </HEAD> ';
|
|
|
|
echo "<BODY>";
|
|
echo '<div id="info_div"></div>';
|
|
echo '<div id="error_div">'.
|
|
HtmlInput::title_box(_("Erreur"), 'error_div', 'hide').
|
|
'<div id="error_content_div">'.
|
|
'</div>'.
|
|
'<p style="text-align:center">'.
|
|
HtmlInput::button_action('Valider',
|
|
'$(\'error_div\').style.visibility=\'hidden\';$(\'error_content_div\').innerHTML=\'\';').
|
|
'</p>'.
|
|
'</div>';
|
|
}
|
|
|
|
/**
|
|
* @brief Display the menu available for this folder
|
|
*
|
|
*/
|
|
public function display_menu()
|
|
{
|
|
if (DEBUGNOALYSS>1)
|
|
{
|
|
echo __CLASS__."→".__FUNCTION__;
|
|
}
|
|
$cn=Dossier::connect();
|
|
$user=new \Noalyss_user($cn);
|
|
|
|
$aModule=$cn->get_array("select *
|
|
from profile_mobile pm
|
|
join menu_ref mr on (pm.me_code=mr.me_code)
|
|
where p_id=$1 order by pmo_order", [$user->get_profile()]);
|
|
require_once NOALYSS_TEMPLATE."/mobile-display_menu.php";
|
|
}
|
|
|
|
/**
|
|
* @brief execute the menu
|
|
* @global type $g_user
|
|
* @staticvar int $level
|
|
* @param type $p_access_code
|
|
* @return type
|
|
*/
|
|
public function execute_menu($p_access_code)
|
|
{
|
|
global $g_user,$g_parameter,$cn;
|
|
$aModule=$this->load_module($p_access_code);
|
|
if ( empty($aModule)) {
|
|
return;
|
|
}
|
|
/*-- Load the standard headers if needed -- */
|
|
if ( $aModule['pmo_default'] == 1) {
|
|
$this->page_start();
|
|
}
|
|
|
|
echo HtmlInput::anchor("❮"._("Retour"), "mobile.php?".http_build_query(["gDossier"=>Dossier::id()]));
|
|
|
|
if ($aModule['me_file']!="")
|
|
{
|
|
if ($aModule['me_parameter']!=="")
|
|
{
|
|
// if there are paramter put them in superglobal
|
|
$array=compute_variable($aModule['me_parameter']);
|
|
put_global($array);
|
|
}
|
|
if (DEBUGNOALYSS==2)
|
|
{
|
|
echo $aModule['me_file'], " param : ", $aModule['me_parameter'];
|
|
}
|
|
/*
|
|
* Log the file we input to put in the folder test-noalyss for replaying it
|
|
*/
|
|
if (LOGINPUT)
|
|
{
|
|
$file_loginput=fopen($_ENV['TMP'].'/scenario-'.$_SERVER['REQUEST_TIME'].'.php', 'a+');
|
|
fwrite($file_loginput, "include '".$aModule['me_file']."';");
|
|
fwrite($file_loginput, "\n");
|
|
fclose($file_loginput);
|
|
}
|
|
// if file is not a plugin, include the file, otherwise
|
|
// include the plugin launcher
|
|
if ($aModule['me_type']!='PL')
|
|
{
|
|
if (file_exists($aModule['me_file']))
|
|
{
|
|
require_once $aModule['me_file'];
|
|
}
|
|
elseif (file_exists(NOALYSS_INCLUDE.'/'.$aModule['me_file']))
|
|
{
|
|
require_once NOALYSS_INCLUDE.'/'.$aModule['me_file'];
|
|
}
|
|
else
|
|
{
|
|
echo echo_warning(_("Fichier non trouvé"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
require 'extension_get.inc.php';
|
|
}
|
|
|
|
exit();
|
|
}
|
|
elseif ($aModule['me_javascript']!='')
|
|
{
|
|
$js=noalyss_str_replace('<DOSSIER>', dossier::id(), $aModule['me_javascript']);
|
|
echo create_script($js);
|
|
}
|
|
}
|
|
|
|
}
|