From a0149a378ec5620b1b8d6fe0252d1c549f8d32a0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 16 Jan 2007 22:02:36 +0000 Subject: [PATCH] =?UTF-8?q?Retour=20arriere.=20Toutes=20les=20dates=20dans?= =?UTF-8?q?=20les=20propri=E9t=E9s=20des=20objets=20date=20doivent=20etre?= =?UTF-8?q?=20stock=E9es=20au=20format=20timestamp=20et=20non=20au=20forma?= =?UTF-8?q?t=20caract=E8re=20qui=20est=20inexploitable=20avec=20les=20fonc?= =?UTF-8?q?tions=20dates,=20tri,=20etc...=20Suppression=20des=20exception?= =?UTF-8?q?=20=20afin=20de=20garantir=20une=20uniformit=E9=20du=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/adherents/adherent.class.php | 2 +- htdocs/contact.class.php | 31 ++++++++++--------- htdocs/contact/perso.php | 12 ++++--- htdocs/lib/databases/mysql.lib.php | 12 +++---- htdocs/lib/functions.inc.php | 16 +++++++--- .../adherents/sync_member_ldap2dolibarr.php | 10 +++--- 6 files changed, 48 insertions(+), 35 deletions(-) diff --git a/htdocs/adherents/adherent.class.php b/htdocs/adherents/adherent.class.php index f991d590aec..206cf63ef28 100644 --- a/htdocs/adherents/adherent.class.php +++ b/htdocs/adherents/adherent.class.php @@ -603,7 +603,7 @@ class Adherent $sql.= " ".$this->db->pdate("d.datec")." as datec,"; $sql.= " ".$this->db->pdate("d.tms")." as datem,"; $sql.= " ".$this->db->pdate("d.datefin")." as datefin,"; - $sql.= " ".$this->db->pdate("d.naiss")." as datenaiss,"; + $sql.= " d.naiss as datenaiss,"; $sql.= " ".$this->db->pdate("d.datevalid")." as datev,"; $sql.= " d.pays,"; $sql.= " p.rowid as pays_id, p.code as pays_code, p.libelle as pays_lib,"; diff --git a/htdocs/contact.class.php b/htdocs/contact.class.php index 6c594b723fd..401cecf73d6 100644 --- a/htdocs/contact.class.php +++ b/htdocs/contact.class.php @@ -305,9 +305,9 @@ class Contact // Mis a jour contact $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET idp=".$id; - if ($this->birthday > 0) + if ($this->birthday) // <0 si avant 1970, >0 si apres 1970 { - if (eregi('\-',$this->birthday)) + if (eregi('^[0-9]+\-',$this->birthday)) { // Si date = chaine (ne devrait pas arriver) $sql .= ", birthday='".$this->birthday."'"; @@ -320,11 +320,12 @@ class Contact } if ($user) $sql .= ", fk_user_modif=".$user->id; $sql .= " WHERE idp=$id"; - - $result = $this->db->query($sql); - if (!$result) + + dolibarr_syslog("Contact::update_perso this->birthday=".$this->birthday." - sql=".$sql); + $resql = $this->db->query($sql); + if (! $resql) { - $this->error='Echec sql='.$sql; + $this->error=$this->db->error(); } // Mis a jour alerte birthday @@ -372,17 +373,18 @@ class Contact function fetch($id, $user=0) { global $langs; - $sql = "SELECT c.idp, c.fk_soc, c.civilite civilite_id, c.name, c.firstname,"; + $sql = "SELECT c.idp, c.fk_soc, c.civilite as civilite_id, c.name, c.firstname,"; $sql.= " c.address, c.cp, c.ville,"; $sql.= " c.fk_pays, p.libelle as pays, p.code as pays_code,"; - $sql.= " c.birthday as birthday, c.poste,"; - $sql.= " c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.note,"; + $sql.= " c.birthday,"; + $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.note,"; $sql.= " u.rowid as user_id, u.login as user_login"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON c.fk_pays = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u ON c.idp = u.fk_socpeople"; $sql.= " WHERE c.idp = ". $id; + dolibarr_syslog("Contact::fetch sql=".$sql); $resql=$this->db->query($sql); if ($resql) { @@ -401,10 +403,10 @@ class Contact $this->address = $obj->address; $this->cp = $obj->cp; $this->ville = $obj->ville; - $this->fk_pays = $obj->fk_pays; - $this->pays_code = $obj->fk_pays?$obj->pays_code:''; - //$this->pays = $obj->fk_pays?$obj->pays:''; - $this->pays = $langs->trans("Country".$obj->pays_code)?$langs->trans("Country".$obj->pays_code):''; + $this->fk_pays = $obj->fk_pays; + $this->pays_code = $obj->fk_pays?$obj->pays_code:''; + //$this->pays = $obj->fk_pays?$obj->pays:''; + $this->pays = $langs->trans("Country".$obj->pays_code)?$langs->trans("Country".$obj->pays_code):''; $this->societeid = $obj->fk_soc; $this->socid = $obj->fk_soc; @@ -428,8 +430,7 @@ class Contact $this->user_login = $obj->user_login; } $this->db->free($resql); - - + // Recherche le user Dolibarr lié à ce contact $sql = "SELECT u.rowid "; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php index 381e087cf98..98068cc4182 100644 --- a/htdocs/contact/perso.php +++ b/htdocs/contact/perso.php @@ -141,10 +141,12 @@ if ($_GET["action"] == 'edit') print ''.$langs->trans("Birthday").''; $html=new Form($db); - if ($contact->birthday && $contact->birthday > 0) + if ($contact->birthday) { print $html->select_date($contact->birthday,'birthday',0,0,0,"perso"); - } else { + } + else + { print $html->select_date(0,'birthday',0,0,1,"perso"); } print ''; @@ -194,7 +196,8 @@ else print ''.$langs->trans("Lastname").''.$contact->name.''; print ''.$langs->trans("Firstname").''.$contact->firstname.''; - if ($contact->birthday && $contact->birthday > 0) { + if ($contact->birthday) + { print ''.$langs->trans("Birthdate").''.dolibarr_print_date($contact->birthday); if ($contact->birthday_alert) @@ -202,7 +205,8 @@ else else print ' (alerte anniversaire inactive)'; } - else { + else + { print ''.$langs->trans("Birthday").''.$langs->trans("Unknown").""; } print ""; diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php index 8c80671b9e3..6864d4adc9a 100644 --- a/htdocs/lib/databases/mysql.lib.php +++ b/htdocs/lib/databases/mysql.lib.php @@ -423,11 +423,11 @@ class DoliDb /** - \brief Formatage (par la base de données) d'un champ de la base au format tms ou Date (YYYY-MM-DD HH:MM:SS) - afin de retourner une donnée toujours au format universel date tms unix. + \brief Formatage (par la base de données) d'un champ de la base au format TMS ou Date (YYYY-MM-DD HH:MM:SS) + afin de retourner une donnée toujours au format universel date TMS unix. Fonction à utiliser pour générer les SELECT. - \param param Date au format text à convertir - \return date Date au format tms. + \param param Nom champ base de type date ou chaine 'YYYY-MM-DD HH:MM:SS' + \return date Date au format TMS. */ function pdate($param) { @@ -437,8 +437,8 @@ class DoliDb /** \brief Formatage (par PHP) d'une date au format texte pour insertion dans champ date. Fonction à utiliser pour générer les INSERT. - \param param Date tms à convertir - \return date Date au format text YYYYMMDDHHMMSS. + \param param Date TMS à convertir + \return date Date au format texte YYYYMMDDHHMMSS. */ function idate($param) { diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 42cdf50a746..11fb9380b87 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -520,7 +520,8 @@ function dolibarr_print_date($time,$format='') { // Le formatage ne peut etre appliqué car windows ne supporte pas la fonction // mktime si l'année est inférieur à 1970. On retourne un format fixe - return "$syear-$smonth-$sday"; +// return "$syear-$smonth-$sday"; + return strftime($format,dolibarr_mktime($shour,$smin,0,$smonth,$sday,$syear)); } else { @@ -562,11 +563,18 @@ function dolibarr_stringtotime($string) */ function dolibarr_mktime($x,$y,$z,$month,$day,$year) { + $montharray=array(1=>'january',2=>'february',3=>'march',4=>'april',5=>'may',6=>'june', + 7=>'july',8=>'august',9=>'september',10=>'october',11=>'november',12=>'december'); + if ($year <= 1970 && $_SERVER["WINDIR"]) { - // Gestion a faire pour windows - - return 0; + // Sous Windows, mktime ne fonctionne pas quand année < 1970. + // On utilise strtotime pour obtenir la traduction. + $string=$day." ".$montharray[0+$month]." ".$year; + $date=strtotime($string); + //print "x".($month)."y".(0+$month)." ".$string." ".$date."e"; + //print "eee".$db->idate($date); + return $date; } else { diff --git a/scripts/adherents/sync_member_ldap2dolibarr.php b/scripts/adherents/sync_member_ldap2dolibarr.php index 5d6f9d86db6..2508bd6c740 100644 --- a/scripts/adherents/sync_member_ldap2dolibarr.php +++ b/scripts/adherents/sync_member_ldap2dolibarr.php @@ -150,12 +150,12 @@ if ($result >= 0) $member->photo=''; $member->public=1; $member->statut=-1; // Par defaut, statut brouillon - $member->naiss=dolibarr_mktime($ldapuser[$conf->global->LDAP_FIELD_BIRTHDATE][0]); + $member->naiss=dolibarr_stringtotime($ldapuser[$conf->global->LDAP_FIELD_BIRTHDATE][0]); // Cas particulier (on ne rentre jamais dans ce if) if (isset($ldapuser["prnxstatus"][0])) { - $member->datec=dolibarr_mktime($ldapuser["prnxfirtscontribution"][0]); - $member->datevalid=dolibarr_mktime($ldapuser["prnxfirtscontribution"][0]); + $member->datec=dolibarr_stringtotime($ldapuser["prnxfirtscontribution"][0]); + $member->datevalid=dolibarr_stringtotime($ldapuser["prnxfirtscontribution"][0]); if ($ldapuser["prnxstatus"][0]==1) { $member->statut=1; @@ -190,8 +190,8 @@ if ($result >= 0) // YOUR OWN CODE HERE //---------------------------- - $datefirst=dolibarr_mktime($ldapuser["prnxfirtscontribution"][0]); - $datelast=dolibarr_mktime($ldapuser["prnxlastcontribution"][0]); + $datefirst=dolibarr_stringtotime($ldapuser["prnxfirtscontribution"][0]); + $datelast=dolibarr_stringtotime($ldapuser["prnxlastcontribution"][0]); if ($datefirst) { $crowid=$member->cotisation($datefirst, 0, 0);