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);