From 2b3d97d4044e3669e9d1659386e57f57b1ee423c Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 1 Oct 2007 19:35:00 +0000 Subject: [PATCH] =?UTF-8?q?D=E9but=20ajout=20module=20"Phenix"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/admin/phenix.php | 26 +++--- htdocs/conf/conf.class.php | 7 ++ htdocs/lib/phenix.class.php | 180 ++++++++++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 12 deletions(-) create mode 100644 htdocs/lib/phenix.class.php diff --git a/htdocs/admin/phenix.php b/htdocs/admin/phenix.php index f9264b36995..9cdb189836a 100644 --- a/htdocs/admin/phenix.php +++ b/htdocs/admin/phenix.php @@ -28,7 +28,7 @@ */ require("./pre.inc.php"); -//require_once(DOL_DOCUMENT_ROOT.'/lib/webcal.class.php'); +require_once(DOL_DOCUMENT_ROOT.'/lib/phenix.class.php'); if (!$user->admin) @@ -74,7 +74,6 @@ if ($actionsave) exit; } } -/* elseif ($actiontest) { //$resql=$db->query("select count(*) from llx_const"); @@ -95,6 +94,7 @@ elseif ($actiontest) if ($phenix->localdb->connected == 1 && $phenix->localdb->database_selected == 1) { // Vérifie si bonne base + /* $sql="SELECT cal_value FROM webcal_config WHERE cal_setting='application_name'"; $resql=$phenix->localdb->query($sql); if ($resql) @@ -111,39 +111,41 @@ elseif ($actiontest) $webcal->version=$obj->cal_value; } } - + */ $mesg ="
"; - $mesg.=$langs->trans("WebCalTestOk",$_POST["phpwebcalendar_host"],$_POST["phpwebcalendar_dbname"],$_POST["phpwebcalendar_user"]); - $mesg.='
'.$langs->trans("DetectedVersion").': '.($webcal->version?$webcal->version:$langs->trans("NotAvailable")); + $mesg.=$langs->trans("WebCalTestOk",$_POST["phpphenix_host"],$_POST["phpphenix_dbname"],$_POST["phpphenix_user"]); + //$mesg.='
'.$langs->trans("DetectedVersion").': '.($webcal->version?$webcal->version:$langs->trans("NotAvailable")); $mesg.="
"; + /* } else { $mesg ="
"; $mesg.=$langs->trans("WebCalErrorConnectOkButWrongDatabase"); $mesg.="
"; } + */ // Ne pas fermer car la conn de webcal est la meme que dolibarr si // parametre host/user/pass identique. //$webcal->localdb->close(); } - elseif ($webcal->connected == 1 && $webcal->database_selected != 1) + elseif ($phenix->connected == 1 && $phenix->database_selected != 1) { - $mesg ="
".$langs->trans("WebCalTestKo1",$_POST["phpwebcalendar_host"],$_POST["phpwebcalendar_dbname"]); - $mesg.="
".$webcal->localdb->error(); + $mesg ="
".$langs->trans("PhenixTestKo1",$_POST["phpphenix_host"],$_POST["phpphenix_dbname"]); + $mesg.="
".$phenix->localdb->error(); $mesg.="
"; //$webcal->localdb->close(); Ne pas fermer car la conn de webcal est la meme que dolibarr si parametre host/user/pass identique } else { - $mesg ="
".$langs->trans("WebCalTestKo2",$_POST["phpwebcalendar_host"],$_POST["phpwebcalendar_user"]); - $mesg.="
".$webcal->localdb->error(); + $mesg ="
".$langs->trans("PhenixTestKo2",$_POST["phpphenix_host"],$_POST["phpphenix_user"]); + $mesg.="
".$phenix->localdb->error(); $mesg.="
"; } //$resql=$db->query("select count(*) from llx_const"); //print "< ".$db." - ".$db->db." - ".$resql." - ".$db->error().">
\n"; } -*/ + /** * Affichage du formulaire de saisie @@ -300,7 +302,7 @@ print "\n"; clearstatcache(); -if ($mesg) print "
$mesg
"; +if ($mesg) print "
".$mesg."
"; print "
"; $db->close(); diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php index 4239d1fb271..df0a043e61d 100644 --- a/htdocs/conf/conf.class.php +++ b/htdocs/conf/conf.class.php @@ -284,6 +284,13 @@ class Conf $this->webcal->db->user=defined('PHPWEBCALENDAR_USER')?PHPWEBCALENDAR_USER:''; $this->webcal->db->pass=defined('PHPWEBCALENDAR_PASS')?PHPWEBCALENDAR_PASS:''; $this->webcal->db->name=defined('PHPWEBCALENDAR_DBNAME')?PHPWEBCALENDAR_DBNAME:''; + // Module phenix + $this->phenix->enabled=defined('MAIN_MODULE_PHENIX')?MAIN_MODULE_PHENIX:0; + $this->phenix->db->type=defined('PHPPHENIX_TYPE')?PHPPHENIX_TYPE:'__dolibarr_main_db_type__'; + $this->phenix->db->host=defined('PHPPHENIX_HOST')?PHPPHENIX_HOST:''; + $this->phenix->db->user=defined('PHPPHENIX_USER')?PHPPHENIX_USER:''; + $this->phenix->db->pass=defined('PHPPHENIX_PASS')?PHPPHENIX_PASS:''; + $this->phenix->db->name=defined('PHPPHENIX_DBNAME')?PHPPHENIX_DBNAME:''; // Module mantis $this->mantis->enabled=defined('MAIN_MODULE_MANTIS')?MAIN_MODULE_MANTIS:0; $this->mantis->db->type=defined('PHPMANTIS_TYPE')?PHPMANTIS_TYPE:'__dolibarr_main_db_type__'; diff --git a/htdocs/lib/phenix.class.php b/htdocs/lib/phenix.class.php new file mode 100644 index 00000000000..960aeab7d82 --- /dev/null +++ b/htdocs/lib/phenix.class.php @@ -0,0 +1,180 @@ + + * Copyright (C) 2005-2007 Regis Houssin + * + * This program 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. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file htdocs/lib/phenix.class.php + \ingroup phenix + \brief Ensemble des fonctions permettant d'acceder a la database phenix. + \author Laurent Destailleur. + \author Regis Houssin. + \version $Revision$ +*/ + + +/** + \class Phenix + \brief Classe permettant d'acceder a la database phenix +*/ + +class Phenix { + + var $localdb; + var $error; + var $date; + var $duree = 0; /* Secondes */ + var $texte; + var $desc; + + + + /** + \brief Constructeur de la classe d'interface à Phenix + */ + function Phenix() + { + global $conf; + global $dolibarr_main_db_type,$dolibarr_main_db_host,$dolibarr_main_db_user; + global $dolibarr_main_db_pass,$dolibarr_main_db_name; + + // Défini parametres phenix (avec substitution eventuelle) + $phenixtype=eregi_replace('__dolibarr_main_db_type__',$dolibarr_main_db_type,$conf->phenix->db->type); + $phenixhost=eregi_replace('__dolibarr_main_db_host__',$dolibarr_main_db_host,$conf->phenix->db->host); + $phenixuser=eregi_replace('__dolibarr_main_db_user__',$dolibarr_main_db_user,$conf->phenix->db->user); + $phenixpass=eregi_replace('__dolibarr_main_db_pass__',$dolibarr_main_db_pass,$conf->phenix->db->pass); + $phenixname=eregi_replace('__dolibarr_main_db_name__',$dolibarr_main_db_name,$conf->phenix->db->name); + + // On initie la connexion à la base Phenix + require_once (DOL_DOCUMENT_ROOT ."/lib/databases/".$phenixtype.".lib.php"); + $this->localdb = new DoliDb($phenixtype,$phenixhost,$phenixuser,$phenixpass,$phenixname); + } + +// TODO : Modifier la suite.... + + + /** + \brief Ajoute objet en tant qu'entree dans le calendrier de l'utilisateur + \param[in] user Le login de l'utilisateur + \return int 1 en cas de succès, -1,-2,-3 en cas d'erreur, -4 si login webcal non défini + */ + function add($user) +{ + global $langs; + + dolibarr_syslog("Webcal::add user=".$user->id); + + // Test si login webcal défini pour le user + if (! $user->webcal_login) + { + $langs->load("other"); + $this->error=$langs->transnoentities("ErrorWebcalLoginNotDefined","id."\">".$user->login.""); + dolibarr_syslog("Webcal::add ERROR ".$this->error); + return -4; + } + + $this->localdb->begin(); + + // Recupère l'id max+1 dans la base webcalendar + $id = $this->get_next_id(); + + if ($id > 0) + { + $cal_id = $id; + $cal_create_by = $user->webcal_login; + $cal_date = strftime('%Y%m%d', $this->date); + $cal_time = strftime('%H%M%S', $this->date); + $cal_mod_date = strftime('%Y%m%d', time()); + $cal_mod_time = strftime('%H%M%S', time()); + $cal_duration = round($this->duree / 60); + $cal_priority = 2; // Medium avec 1.0, Haute avec 1.1 + // Rem: 1.0: 1=bas, 2=medium, 3=haut + // 1.1: 1=haut, 2=haut, 3=haut, 4=medium ... 9=bas + $cal_type = "E"; // Evenement de type "intemporel" + $cal_access = "P"; // Acces publique + $cal_name = $this->texte; // Title for event + $cal_description = $this->desc; // Desc for event + + $sql = "INSERT INTO webcal_entry (cal_id, cal_create_by,cal_date,cal_time,cal_mod_date, cal_mod_time,cal_duration,cal_priority,cal_type, cal_access, cal_name,cal_description)"; + $sql.= " VALUES ($cal_id, '$cal_create_by', '$cal_date', '$cal_time', '$cal_mod_date', '$cal_mod_time', $cal_duration, $cal_priority, '$cal_type', '$cal_access', '$cal_name','$cal_description')"; + + dolibarr_syslog("Webcal::add sql=".$sql); + $resql=$this->localdb->query($sql); + if ($resql) + { + $sql = "INSERT INTO webcal_entry_user (cal_id, cal_login, cal_status)"; + $sql .= " VALUES ($cal_id, '$cal_create_by', 'A')"; + + $resql=$this->localdb->query($sql); + if ($resql) + { + // OK + $this->localdb->commit(); + return 1; + } + else + { + $this->localdb->rollback(); + $this->error = $this->localdb->error() . '
' .$sql; + dolibarr_syslog("Webcal::add ERROR ".$this->error); + return -1; + } + } + else + { + $this->localdb->rollback(); + $this->error = $this->localdb->error() . '
' .$sql; + dolibarr_syslog("Webcal::add ERROR ".$this->error); + return -2; + } + } + else + { + $this->localdb->rollback(); + $this->error = $this->localdb->error() . '
' .$sql; + dolibarr_syslog("Webcal::add ERROR ".$this->error); + return -3; + } + } + + + /** + \brief Obtient l'id suivant dans le webcalendar + \return int Retourne l'id suivant dans webcalendar, <0 si ko + */ + function get_next_id() + { + $sql = "SELECT max(cal_id) as id FROM webcal_entry"; + + $resql=$this->localdb->query($sql); + if ($resql) + { + $obj=$this->localdb->fetch_object($resql); + return ($obj->id + 1); + } + else + { + $this->error=$this->localdb->error(); + return -1; + } + } + +} +?>