diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php index fcb42a2689e..0e72f046738 100644 --- a/htdocs/comm/action/fiche.php +++ b/htdocs/comm/action/fiche.php @@ -160,7 +160,8 @@ if ($_POST["action"] == 'add_action') $societe->fetch($_REQUEST["socid"]); $actioncomm->societe = $societe; } - if ($_POST["add_webcal"] == 'on') $actioncomm->use_webcal=1; + if ($_POST["add_webcal"] == 'on' && $conf->webcal->enabled) $actioncomm->use_webcal=1; + if ($_POST["add_phenix"] == 'on' && $conf->phenix->enabled) $actioncomm->use_phenix=1; // On crée l'action $idaction=$actioncomm->add($user); @@ -384,7 +385,7 @@ if ($_GET["action"] == 'create') $html->select_duree("duree"); print ''; - add_row_for_webcal_link(); + add_row_for_calendar_link(); // Note print ''.$langs->trans("Note").''; @@ -528,7 +529,7 @@ if ($_GET["action"] == 'create') } print ''; - add_row_for_webcal_link(); + add_row_for_calendar_link(); // Note print ''.$langs->trans("Note").''; @@ -782,44 +783,77 @@ llxFooter('$Date$ - $Revision$'); /** - \brief Ajoute une ligne de tableau a 2 colonnes pour avoir l'option webcalendar + \brief Ajoute une ligne de tableau a 2 colonnes pour avoir l'option synchro calendrier \return int Retourne le nombre de lignes ajoutées */ -function add_row_for_webcal_link() +function add_row_for_calendar_link() { - global $conf,$langs,$user; - $nbtr=0; + global $conf,$langs,$user; + $nbtr=0; - // Lien avec calendrier si module activé - if ($conf->webcal->enabled) + // Lien avec calendrier si module activé + if ($conf->webcal->enabled) + { + if ($conf->global->PHPWEBCALENDAR_SYNCRO != 'never') { - if ($conf->global->PHPWEBCALENDAR_SYNCRO != 'never') + $langs->load("other"); + + print ''.$langs->trans("AddCalendarEntry","Webcalendar").''; + + if (! $user->webcal_login) + { + print ''; + print ' '.$langs->transnoentities("ErrorWebcalLoginNotDefined","id."\">".$user->login.""); + print ''; + print ''; + $nbtr++; + } + else + { + if ($conf->global->PHPWEBCALENDAR_SYNCRO == 'always') { - $langs->load("other"); - if (! $user->webcal_login) - { - print ''.$langs->trans("AddCalendarEntry").''; - print ''; - print ' '.$langs->transnoentities("ErrorWebcalLoginNotDefined","id."\">".$user->login.""); - print ''; - print ''; - $nbtr++; - } - else - { - if ($conf->global->PHPWEBCALENDAR_SYNCRO == 'always') - { - print ''; - } - else - { - print ''.$langs->trans("AddCalendarEntry").''; - print 'global->PHPWEBCALENDAR_SYNCRO=='always' || $conf->global->PHPWEBCALENDAR_SYNCRO=='yesbydefault')?' checked':'').'>'; - print ''; - $nbtr++; - } - } + print ''; } + else + { + print 'global->PHPWEBCALENDAR_SYNCRO=='always' || $conf->global->PHPWEBCALENDAR_SYNCRO=='yesbydefault')?' checked':'').'>'; + print ''; + $nbtr++; + } + } + } + } + + if ($conf->phenix->enabled) + { + if ($conf->global->PHPPHENIX_SYNCRO != 'never') + { + $langs->load("other"); + + print ''.$langs->trans("AddCalendarEntry","Phenix").''; + + if (! $user->phenix_login) + { + print ''; + print ' '.$langs->transnoentities("ErrorPhenixLoginNotDefined","id."\">".$user->login.""); + print ''; + print ''; + $nbtr++; + } + else + { + if ($conf->global->PHPPHENIX_SYNCRO == 'always') + { + print ''; + } + else + { + print 'global->PHPPHENIX_SYNCRO=='always' || $conf->global->PHPPHENIX_SYNCRO=='yesbydefault')?' checked':'').'>'; + print ''; + $nbtr++; + } + } + } } return $nbtr; diff --git a/htdocs/includes/triggers/interface_modPhenix_Phenixsynchro.class.php b/htdocs/includes/triggers/interface_modPhenix_Phenixsynchro.class.php new file mode 100644 index 00000000000..0a81b865262 --- /dev/null +++ b/htdocs/includes/triggers/interface_modPhenix_Phenixsynchro.class.php @@ -0,0 +1,417 @@ + + * Copyright (C) 2005-2008 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$ + */ + +/** + \file htdocs/includes/triggers/interface_modPhenix_Phenixsynchro.class.php + \ingroup phenix + \brief Fichier de gestion des triggers phenix +*/ + +include_once(DOL_DOCUMENT_ROOT.'/phenix/phenix.class.php'); + + +/** + \class InterfacePhenixsynchro + \brief Classe des fonctions triggers des actions phenix +*/ + +class InterfacePhenixsynchro +{ + var $db; + var $error; + + var $date; + var $duree; + var $texte; + var $desc; + + /** + * \brief Constructeur. + * \param DB Handler d'accès base + */ + function InterfacePhenixsynchro($DB) + { + $this->db = $DB ; + + $this->name = "Phenixsynchro"; + $this->family = "phenix"; + $this->description = "Les triggers de ce composant permettent d'insérer un évênement dans le calendrier phenix pour chaque grand évênement Dolibarr."; + $this->version = 'experimental'; // 'experimental' or 'dolibarr' or version + } + + /** + * \brief Renvoi nom du lot de triggers + * \return string Nom du lot de triggers + */ + function getName() + { + return $this->name; + } + + /** + * \brief Renvoi descriptif du lot de triggers + * \return string Descriptif du lot de triggers + */ + function getDesc() + { + return $this->description; + } + + /** + * \brief Renvoi version du lot de triggers + * \return string Version du lot de triggers + */ + function getVersion() + { + global $langs; + $langs->load("admin"); + + if ($this->version == 'experimental') return $langs->trans("Experimental"); + elseif ($this->version == 'dolibarr') return DOL_VERSION; + elseif ($this->version) return $this->version; + else return $langs->trans("Unknown"); + } + + /** + * \brief Fonction appelée lors du déclenchement d'un évènement Dolibarr. + * D'autres fonctions run_trigger peuvent etre présentes dans includes/triggers + * \param action Code de l'evenement + * \param object Objet concerné + * \param user Objet user + * \param lang Objet lang + * \param conf Objet conf + * \return int <0 si ko, 0 si aucune action faite, >0 si ok + */ + function run_trigger($action,$object,$user,$langs,$conf) + { + // Mettre ici le code à exécuter en réaction de l'action + // Les données de l'action sont stockées dans $object + + if (! $conf->phenix->enabled) return 0; // Module non actif + if (! $object->use_phenix) return 0; // Option syncro phenix non active + + // Actions + if ($action == 'ACTION_CREATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + // Initialisation donnees (date,duree,texte,desc) + if ($object->type_id == 5 && $object->contact->fullname) + { + $libellecal =$langs->transnoentities("TaskRDVWith",$object->contact->getFullName($langs))."\n"; + $libellecal.=$object->note; + } + else + { + $libellecal=""; + if ($langs->transnoentities("Action".$object->type_code) != "Action".$object->type_code) + { + $libellecal.=$langs->transnoentities("Action".$object->type_code)."\n"; + } + $libellecal.=($object->label!=$libellecal?$object->label."\n":""); + $libellecal.=($object->note?$object->note:""); + } + + $this->date=$object->date ? $object->date : $object->datep; + $this->duree=$object->duree; + $this->texte=$object->societe->nom; + $this->desc=$libellecal; + } + + // Third parties + elseif ($action == 'COMPANY_CREATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + // Initialisation donnees (date,duree,texte,desc) + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("NewCompanyToDolibarr",$object->nom); + $this->desc=$langs->transnoentities("NewCompanyToDolibarr",$object->nom); + if ($object->prefix) $this->desc.=" (".$object->prefix.")"; + //$this->desc.="\n".$langs->transnoentities("Customer").': '.yn($object->client); + //$this->desc.="\n".$langs->transnoentities("Supplier").': '.yn($object->fournisseur); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // Contracts + elseif ($action == 'CONTRACT_VALIDATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + // Initialisation donnees (date,duree,texte,desc) + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("ContractValidatedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("ContractValidatedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'CONTRACT_CANCEL') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("ContractCanceledInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("ContractCanceledInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'CONTRACT_CLOSE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("ContractClosedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("ContractClosedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // Proposals + elseif ($action == 'PROPAL_VALIDATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("PropalValidatedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("PropalValidatedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'PROPAL_CLOSE_SIGNED') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("PropalClosedSignedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("PropalClosedSignedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'PROPAL_CLOSE_REFUSED') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // Invoices + elseif ($action == 'BILL_VALIDATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("InvoiceValidatedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("InvoiceValidatedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'BILL_PAYED') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("InvoicePayedInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("InvoicePayedInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'BILL_CANCELED') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("InvoiceCanceledInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("InvoiceCanceledInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // Payments + elseif ($action == 'PAYMENT_CUSTOMER_CREATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("CustomerPaymentDoneInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("CustomerPaymentDoneInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("AmountTTC").': '.$object->total; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'PAYMENT_SUPPLIER_CREATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("SupplierPaymentDoneInDolibarr",$object->ref); + $this->desc=$langs->transnoentities("SupplierPaymentDoneInDolibarr",$object->ref); + $this->desc.="\n".$langs->transnoentities("AmountTTC").': '.$object->total; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // Members + elseif ($action == 'MEMBER_CREATE') + { + } + elseif ($action == 'MEMBER_VALIDATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + $langs->load("members"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("MemberValidatedInDolibarr",$object->id); + $this->desc=$langs->transnoentities("MemberValidatedInDolibarr",$object->id); + $this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; + $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'MEMBER_SUBSCRIPTION') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + $langs->load("members"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("MemberSubscriptionInDolibarr",$object->id); + $this->desc=$langs->transnoentities("MemberSubscriptionInDolibarr",$object->id); + $this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; + $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; + $this->desc.="\n".$langs->transnoentities("Amount").': '.$object->last_subscription_amount; + $this->desc.="\n".$langs->transnoentities("Period").': '.dolibarr_print_date($object->last_subscription_date_start,'day').' - '.dolibarr_print_date($object->last_subscription_date_end,'day'); + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'MEMBER_MODIFY') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + $langs->load("members"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("MemberModifiedInDolibarr",$object->id); + $this->desc=$langs->transnoentities("MemberModifiedInDolibarr",$object->id); + $this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; + $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'MEMBER_RESILIATE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + $langs->load("members"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("MemberResiliatedInDolibarr",$object->id); + $this->desc=$langs->transnoentities("MemberResiliatedInDolibarr",$object->id); + $this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; + $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + elseif ($action == 'MEMBER_DELETE') + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); + $langs->load("other"); + $langs->load("members"); + + $this->date=time(); + $this->duree=0; + $this->texte=$langs->transnoentities("MemberDeletedInDolibarr",$object->id); + $this->desc=$langs->transnoentities("MemberDeletedInDolibarr",$object->id); + $this->desc.="\n".$langs->transnoentities("Member").': '.$object->fullname; + $this->desc.="\n".$langs->transnoentities("Type").': '.$object->type; + $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; + } + + // If not found +/* + else + { + dolibarr_syslog("Trigger '".$this->name."' for action '$action' was ran by ".__FILE__." but no handler found for this action."); + return 0; + } +*/ + + // Ajoute entrée dans phenix + if ($this->date) + { + + // Crée objet phenix et connexion avec params $conf->phenix->db->xxx + $phenix = new Phenix(); + if (! $phenix->localdb->ok) + { + // Si la creation de l'objet n'as pu se connecter + $error ="Dolibarr n'a pu se connecter à la base Phenix avec les identifiants définis (host=".$conf->phenix->db->host." dbname=".$conf->phenix->db->name." user=".$conf->phenix->db->user."). "; + $error.="La mise a jour Webcalendar a été ignorée."; + $this->error=$error; + + //dolibarr_syslog("interface_phenix.class.php: ".$this->error); + return -1; + } + + $phenix->date=$this->date; + $phenix->duree=$this->duree; + $phenix->texte=$this->texte; + $phenix->desc=$this->desc; + + $result=$phenix->add($user); + if ($result > 0) + { + return 1; + } + else + { + $error ="Echec insertion dans phenix: ".$phenix->error." "; + $error.="La mise a jour Phenix a été ignorée."; + $this->error=$error; + + //dolibarr_syslog("interface_phenix.class.php: ".$this->error); + return -2; + } + } + + return 0; + } + +} +?> diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 863dc7c3b1a..434ed888ed3 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -85,8 +85,11 @@ EnableGDLibraryDesc=Install or enable GD library with your PHP for use this opti EnablePhpAVModuleDesc=You need to install a module compatible with your anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) ##### Webcal ##### LoginWebcal=Login for Webcalendar -AddCalendarEntry=Add entry in calendar ErrorWebcalLoginNotDefined=The Webcalendar login associated to your Dolibarr login %s is not defined. +##### Phenix ##### +ErrorPhenixLoginNotDefined=The Phenix login associated to your Dolibarr login %s is not defined. +##### Calendar common ##### +AddCalendarEntry=Add entry in calendar %s NewCompanyToDolibarr=Company %s added into Dolibarr ContractValidatedInDolibarr=Contract %s validated in Dolibarr ContractCanceledInDolibarr=Contract %s canceled in Dolibarr diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 65f6ef48787..99814f2af2e 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -85,8 +85,11 @@ EnableGDLibraryDesc=Vous devez activer ou installer la librairie GD avec votre P EnablePhpAVModuleDesc=Vous devez installer un module PHP compatible avec votre anti-virus. (Clamav : php4-clamavlib ou php5-clamavlib) ##### Webcal ##### LoginWebcal=Login Webcalendar -AddCalendarEntry=Ajouter entrée dans le calendrier ErrorWebcalLoginNotDefined=Le login Webcalendar associé à votre login Dolibarr %s n'est pas défini. +##### Phenix ##### +ErrorPhenixLoginNotDefined=Le login Phenix associé à votre login Dolibarr %s n'est pas défini. +##### Calendar common ##### +AddCalendarEntry=Ajouter entrée dans le calendrier %s NewCompanyToDolibarr=Société %s ajoutée dans Dolibarr ContractValidatedInDolibarr=Contrat %s validé dans Dolibarr ContractCanceledInDolibarr=Contrat %s annulé dans Dolibarr diff --git a/htdocs/phenix/phenix.class.php b/htdocs/phenix/phenix.class.php index 828b5e52d14..0cf3b66f460 100644 --- a/htdocs/phenix/phenix.class.php +++ b/htdocs/phenix/phenix.class.php @@ -1,6 +1,6 @@ - * Copyright (C) 2005-2007 Regis Houssin + * Copyright (C) 2005-2008 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 @@ -50,129 +50,131 @@ class 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; + 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); + // 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); + // 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.... +// Ajouter variable pour l'extension du nom des tables "px_" qui peut etre different +// récupérer id du user à partir de son login /** \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 + \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 phenix 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"; + global $langs; + + dolibarr_syslog("Phenix::add user=".$user->id); + + // Test si login phenix défini pour le user + if (! $user->phenix_login) + { + $langs->load("other"); + $this->error=$langs->transnoentities("ErrorPhenixLoginNotDefined","id."\">".$user->login.""); + dolibarr_syslog("Phenix::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) + { + $age_id = $id; + $age_createur_id = $user->id; + $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 px_agenda (age_id, age_createur_id, cal_date, cal_time, cal_mod_date, cal_mod_time, cal_duration, cal_priority, cal_type, cal_access, cal_name,cal_description)"; + $sql.= " VALUES ($age_id, '$age_createur_id', '$cal_date', '$cal_time', '$cal_mod_date', '$cal_mod_time', $cal_duration, $cal_priority, '$cal_type', '$cal_access', '$cal_name','$cal_description')"; + + dolibarr_syslog("Phenix::add sql=".$sql); $resql=$this->localdb->query($sql); if ($resql) { - $obj=$this->localdb->fetch_object($resql); - return ($obj->id + 1); + $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("Phenix::add ERROR ".$this->error); + return -1; + } } else { - $this->error=$this->localdb->error(); - return -1; + $this->localdb->rollback(); + $this->error = $this->localdb->error() . '
' .$sql; + dolibarr_syslog("Phenix::add ERROR ".$this->error); + return -2; } + } + else + { + $this->localdb->rollback(); + $this->error = $this->localdb->error() . '
' .$sql; + dolibarr_syslog("Phenix::add ERROR ".$this->error); + return -3; + } + } + + + /** + \brief Obtient l'id suivant dans phenix + \return int Retourne l'id suivant dans phenix, <0 si ko + */ + function get_next_id() + { + $sql = "SELECT max(age_id) as id FROM px_agenda"; + + $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; + } } }