Skip to content
Snippets Groups Projects
Commit 45c9a417 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

rel #45291 : read mysql host from config, use PDO instead of deprecated mysql extension

parent f2917572
Branches
Tags
4 merge requests!1716Master,!1715Master,!1714Hotline master,!1713rel #45291 : read mysql host from config, use PDO instead of deprecated mysql extension
- ticket #45291 : SIGB Pergame : correction de la configuration base de données dans le service temps réel
\ No newline at end of file
......@@ -16,7 +16,7 @@
*
* You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
* along with BOKEH; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/////////////////////////////////////////////////////////////////////
// MAJ DES TRANSACTIONS EN TEMPS REEL PERGAME
......@@ -62,101 +62,130 @@
/////////////////////////////////////////////////////////////////////
// Initialisations
if ($_SERVER['SERVER_ADDR'] != "127.0.0.1" and $_SERVER['SERVER_ADDR'] != "::1" and $_SERVER['SERVER_ADDR'] != "192.168.2.71")
{
if ($_SERVER['SERVER_ADDR'] != "127.0.0.1"
and $_SERVER['SERVER_ADDR'] != "::1"
and $_SERVER['SERVER_ADDR'] != "192.168.2.71") {
define("PATH_CHARGE", "/var/www/html/vhosts/opac2/www/ftp/") ;
} else {
define("PATH_CHARGE", "../../");
}
else define("PATH_CHARGE","../../");
define("FICHIER",PATH_CHARGE."charge.txt");
define("FICHIER_JOUR",PATH_CHARGE."charge_jour.txt");
define("MAX_CONNECT","2");
define("TYPE_OPERATION",0);
define("ID_PROFIL_PRET",102);
define("ID_PROFIL_RESERVATION",103);
define("FICHIER", PATH_CHARGE . "charge.txt");
define("FICHIER_JOUR", PATH_CHARGE . "charge_jour.txt");
define("MAX_CONNECT", "2");
define("TYPE_OPERATION", 0);
define("ID_PROFIL_PRET", 102);
define("ID_PROFIL_RESERVATION", 103);
// Controle charge du serveur
$trace=$_REQUEST["trace"];
if($trace) trace("mode trace");
$statut=setConnect();
if($statut == "busy" and $_REQUEST["cmd"]!='8') retour($statut,"Trop de connexions"); // on laisse passer les abonnés (code 8)
$trace = $_REQUEST["trace"];
if ($trace)
trace("mode trace");
$statut = setConnect();
if ($statut == "busy" and $_REQUEST["cmd"]!='8')
retour($statut, "Trop de connexions"); // on laisse passer les abonnés (code 8)
$basePath = dirname(realpath(__FILE__)) . '/../';
set_include_path(get_include_path()
. PATH_SEPARATOR . $basePath
. PATH_SEPARATOR . $basePath . '/classes/');
require_once 'classe_cosmopaths.php';
$cosmo_path = new CosmoPaths();
$cfgfile = $cosmo_path->getConfigPath();
require_once 'fonctions/fonctions_base.php';
$cfg = lireConfig($cfgfile);
// Controle des parametres et connexion a la base
$nomBase=$_REQUEST["base"];
$user=$_REQUEST["user"];
$pwd=$_REQUEST["pass"];
$nomBase = $_REQUEST["base"];
$user = $_REQUEST["user"];
$pwd = $_REQUEST["pass"];
if($_SERVER['HTTP_HOST']=="localhost") $host="localhost"; else $host="172.16.77.60";
if (!$nomBase || !$user || !$pwd)
retour('sqlerror', 'Impossible de se connecter a mysql');
//$sql = mysql_connect("172.16.77.60", $user, $pwd);
$sql = mysql_connect($host, $user, $pwd);
if(!$sql) retour("sqlerror" ,"Impossible de se connecter a mysql");
if(! mysql_select_db($nomBase)) retour("sqlerror","Impossible de selectionner la base de donnees");
$host = $cfg['integration_server'];
try {
$sql = new PDO('mysql:host='. $host .';dbname=' . $nomBase, $user, $pwd);
} catch(Exception $e) {
retour('sqlerror', 'Impossible de se connecter a mysql<br>' . $e->getMessage());
}
// Traitement de l'action
$action=$_REQUEST["cmd"];
$values=str_replace("|",";",strip_tags($_REQUEST["ligne"]));
$values_array=explode(";",$values);
$action = $_REQUEST['cmd'];
$values = str_replace('|', ';', strip_tags($_REQUEST['ligne']));
$values_array = explode(';', $values);
// Lancer le traitement
switch($action)
{
case "2": // Nouveau prêt
$req="insert into prets(ID_PERGAME,IDABON,ORDREABON,EN_COURS,DATE_PRET,DATE_RETOUR,SUPPORT,ID_NOTICE_ORIGINE,CODE_BARRES,ID_SITE) values(";
$req.=$values_array[0].",";
$req.=$values_array[1].",";
$req.=$values_array[2].",";
$req.="1,";
$req.="'".$values_array[4]."',";
$req.="'".$values_array[5]."',";
$req.=$values_array[6].",";
$req.=$values_array[7].",";
$req.="'".$values_array[11]."',";
$req.=$values_array[8].")";
switch($action) {
case '2': // Nouveau prêt
$req = "insert into prets(ID_PERGAME,IDABON,ORDREABON,EN_COURS,DATE_PRET,DATE_RETOUR,SUPPORT,ID_NOTICE_ORIGINE,CODE_BARRES,ID_SITE) values(";
$req .= $values_array[0].",";
$req .= $values_array[1].",";
$req .= $values_array[2].",";
$req .= "1,";
$req .= "'".$values_array[4]."',";
$req .= "'".$values_array[5]."',";
$req .= $values_array[6].",";
$req .= $values_array[7].",";
$req .= "'".$values_array[11]."',";
$req .= $values_array[8].")";
break;
case "3": // Retour de prêt
$req="Update prets Set EN_COURS=0 Where ID_PERGAME=".$_REQUEST["ligne"];
break;
case "4": //Suppression de prêt
$req="Delete from prets Where ID_PERGAME=".$_REQUEST["ligne"];
break;
case "5": // prolongation de pret
$req="Update prets Set DATE_RETOUR='".$values_array[1]."' Where ID_PERGAME=".$values_array[0];
break;
case "6" : // Nouvelle réservation
$req="insert into reservations(ID_PERGAME,IDABON,ORDREABON,SUPPORT,ID_NOTICE_ORIGINE,DATE_RESA,ID_SITE) values(";
$req.=$values_array[0].",";
$req.=$values_array[1].",";
$req.=$values_array[2].",";
$resq.=$values_array[2].",";
$req.=$values_array[3].",";
$req.=$values_array[4].",";
$req.="'".$values_array[5]."',";
$req.=$values_array[6].")";
break;
case "7": // Suppression de réservation
$req="Delete from reservations Where ID_PERGAME=".$_REQUEST["ligne"];
$req = 'Delete from reservations Where ID_PERGAME=' . $_REQUEST['ligne'];
break;
case "8": // Abonnés
$id_pergame=$values_array[0];
$ordre_abon=$values_array[1];
$result=mysql_query("select ID_USER from bib_admin_users where IDABON=$id_pergame and ORDREABON=$ordre_abon");
$row = mysql_fetch_array($result, MYSQL_NUM);
$id_user=$row[0];
if($id_user>0)
{
$id_pergame = $values_array[0];
$ordre_abon = $values_array[1];
$id_user = 0;
if (false !== ($result = $sql->query('select ID_USER from bib_admin_users where IDABON='. $id_pergame . ' and ORDREABON=' . $ordre_abon))) {
$id_user = (int)$result->fetchColumn();
$result->closeCursor();
}
if ($id_user > 0) {
$req="update bib_admin_users set ";
$req.="NOM='".addslashes($values_array[2])."',";
$req.="PRENOM='".addslashes($values_array[3])."',";
$req.="NAISSANCE='".$values_array[4]."',";
$req.="LOGIN='".$values_array[0]."',";
$req.="LOGIN='".$values_array[0]."',";
$req.="PASSWORD='".substr($values_array[4],8,2).substr($values_array[4],4,4).substr($values_array[4],0,4)."',";
$req.="MAIL='".addslashes($values_array[7])."',";
$req.="DATE_DEBUT='".$values_array[5]."',";
$req.="DATE_FIN='".$values_array[6]."'";
$req.="DATE_FIN='".$values_array[6]."'";
$req.=" where ID_USER=".$id_user;
}
else
{
$req="insert into bib_admin_users (NOM, PRENOM, NAISSANCE, ID_SITE, LOGIN, PASSWORD,
} else {
$req="insert into bib_admin_users (NOM, PRENOM, NAISSANCE, ID_SITE, LOGIN, PASSWORD,
ROLE, ROLE_LEVEL, IDABON, ORDREABON, MAIL, DATE_DEBUT, DATE_FIN) Values(";
$req.="'".$values_array[2]."',";
$req.="'".$values_array[3]."',";
......@@ -174,108 +203,116 @@ switch($action)
$req.=')';
}
break;
default:
retour("erreur","fonction incorrecte : doit etre comprise entre 2 et 8");
default:
retour("erreur", "fonction incorrecte : doit etre comprise entre 2 et 8");
break;
}
// Execute requete et renvoie ok
if($trace) trace("REQUETE=".$req);
try
{
$controle=mysql_query($req);
if($controle == false)
{
$statut="sqlerror";
$msg="Erreur sql à l'execution de la requete : " .$req;
if ($trace)
trace('REQUETE=' . $req);
try {
if(false === $sql->exec($req)) {
$statut = 'sqlerror';
$msg = "Erreur sql à l'execution de la requete : " . $req;
}
} catch (Exception $e) {
$statut = "sqlerror";
$msg = "Erreur sql à l'execution de la requete : " . $req . '<br>' . $e->getMessage();
}
catch (Exception $e)
{
$statut="sqlerror";
$msg="Erreur sql à l'execution de la requete : " .$req.'<br>'.$e->getMessage();
}
mysql_close();
$sql = null;
// Retour
retour($statut,$msg);
retour($statut, $msg);
//-------------------------------------------------------------------
// FONCTIONS
//-------------------------------------------------------------------
function setConnect()
{
function setConnect() {
global $trace;
// Lire le fichier
$charge=@file_get_contents(FICHIER);
if($charge == false)
{
$charge = @file_get_contents(FICHIER);
if($charge == false) {
$charge=array_fill(0, 61, 0);
$charge[0]=time();
}
else $charge=unserialize($charge);
} else {
$charge=unserialize($charge);
}
$last_connect=array_shift($charge);
// Raz des secondes selon les cas
$actual_connect=time();
$diff=$actual_connect-$last_connect;
if($trace) trace("Diff=".$diff);
if($diff > 119) $charge=array_fill(0, 60, 0);
elseif($diff > 59)
{
$actual_sec=intval(date("s",$actual_connect));
$last_sec=intval(date("s",$last_connect));
if($actual_sec < $last_connect) $actual_sec+=60;
if($trace) trace("ACTUAL_SEC=".$actual_sec." - LAST_SEC=". $last_sec);
for($i=0; $i<=($actual_sec-$last_sec); $i++)
{
$index=$last_sec+$i;
if($index > 59) $index-=60;
$charge[$index]=0;
$actual_connect = time();
$diff = $actual_connect-$last_connect;
if($trace)
trace("Diff=".$diff);
if($diff > 119) {
$charge = array_fill(0, 60, 0);
} elseif($diff > 59) {
$actual_sec = intval(date("s",$actual_connect));
$last_sec = intval(date("s",$last_connect));
if ($actual_sec < $last_connect)
$actual_sec += 60;
if($trace)
trace("ACTUAL_SEC=".$actual_sec." - LAST_SEC=". $last_sec);
for($i=0; $i<=($actual_sec-$last_sec); $i++) {
$index = $last_sec+$i;
if($index > 59)
$index -= 60;
$charge[$index] = 0;
}
}
// Incremente la seconde courante
$seconde=intval(date("s",$actual_connect));
$seconde = intval(date("s",$actual_connect));
$charge[$seconde]++;
$moyenne=array_sum($charge) /60;
if($moyenne > MAX_CONNECT) $statut="busy"; else $statut="ok";
$moyenne = array_sum($charge) / 60;
if ($moyenne > MAX_CONNECT)
$statut="busy";
else
$statut="ok";
// Raz de la seconde suivante
$seconde++;
if($seconde == 60) $seconde=0;
$charge[$seconde]=0;
// Reecriture de la charge
array_unshift($charge,$actual_connect);
$charge=serialize($charge);
file_put_contents(FICHIER,$charge);
array_unshift($charge, $actual_connect);
$charge = serialize($charge);
file_put_contents(FICHIER, $charge);
// Maj stats du jour
$charge_jour=@file_get_contents(FICHIER_JOUR);
if($charge_jour) $charge_jour=unserialize($charge_jour);
if (!isset($charge_jour["date"]) || ($charge_jour["date"] != date("d-m-Y")))
{
$charge_jour = @file_get_contents(FICHIER_JOUR);
if($charge_jour)
$charge_jour = unserialize($charge_jour);
if (!isset($charge_jour["date"])
|| ($charge_jour["date"] != date("d-m-Y"))) {
$charge_jour=array("busy" => 0,"ok" => 0);
}
$charge_jour["date"]=date("d-m-Y");
$charge_jour["date"] = date("d-m-Y");
$charge_jour[$statut]++;
$charge_jour=serialize($charge_jour);
$charge_jour = serialize($charge_jour);
file_put_contents(FICHIER_JOUR,$charge_jour);
// Retour du statut
return $statut;
}
function retour($statut,$msg)
{
function retour($statut,$msg) {
print($statut);
if($_REQUEST["mode"]=="test") print('<br>'.$msg.'<br>');
if ($_REQUEST["mode"]=="test")
print('<br>'.$msg.'<br>');
exit;
}
function trace($msg)
{
function trace($msg) {
print($msg.'<br>');
}
?>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment