2
0
forked from Wavyzz/dolibarr

Retour arriere. Toutes les dates dans les proprits des objets date doivent etre stockes au format timestamp et non au format caractre qui est inexploitable avec les fonctions dates, tri, etc...

Suppression des exception  afin de garantir une uniformit du code.
This commit is contained in:
Laurent Destailleur
2007-01-16 22:02:36 +00:00
parent bb32e1db48
commit a0149a378e
6 changed files with 48 additions and 35 deletions

View File

@@ -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,";

View File

@@ -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."'";
@@ -321,10 +321,11 @@ 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)
{
@@ -429,7 +431,6 @@ class Contact
}
$this->db->free($resql);
// Recherche le user Dolibarr li<6C> <20> ce contact
$sql = "SELECT u.rowid ";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";

View File

@@ -141,10 +141,12 @@ if ($_GET["action"] == 'edit')
print '<tr><td>'.$langs->trans("Birthday").'</td><td>';
$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 '</td>';
@@ -194,7 +196,8 @@ else
print '<tr><td width="20%">'.$langs->trans("Lastname").'</td><td>'.$contact->name.'</td>';
print '<td width="20%">'.$langs->trans("Firstname").'</td><td width="25%">'.$contact->firstname.'</td></tr>';
if ($contact->birthday && $contact->birthday > 0) {
if ($contact->birthday)
{
print '<tr><td>'.$langs->trans("Birthdate").'</td><td colspan="3">'.dolibarr_print_date($contact->birthday);
if ($contact->birthday_alert)
@@ -202,7 +205,8 @@ else
else
print ' (alerte anniversaire inactive)</td>';
}
else {
else
{
print '<tr><td>'.$langs->trans("Birthday").'</td><td colspan="3">'.$langs->trans("Unknown")."</td>";
}
print "</tr>";

View File

@@ -423,11 +423,11 @@ class DoliDb
/**
\brief Formatage (par la base de donn<6E>es) d'un champ de la base au format tms ou Date (YYYY-MM-DD HH:MM:SS)
afin de retourner une donn<6E>e toujours au format universel date tms unix.
\brief Formatage (par la base de donn<6E>es) d'un champ de la base au format TMS ou Date (YYYY-MM-DD HH:MM:SS)
afin de retourner une donn<6E>e toujours au format universel date TMS unix.
Fonction <20> utiliser pour g<>n<EFBFBD>rer les SELECT.
\param param Date au format text <20> 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 <20> utiliser pour g<>n<EFBFBD>rer les INSERT.
\param param Date tms <20> convertir
\return date Date au format text YYYYMMDDHHMMSS.
\param param Date TMS <20> convertir
\return date Date au format texte YYYYMMDDHHMMSS.
*/
function idate($param)
{

View File

@@ -520,7 +520,8 @@ function dolibarr_print_date($time,$format='')
{
// Le formatage ne peut etre appliqu<71> car windows ne supporte pas la fonction
// mktime si l'ann<6E>e est inf<6E>rieur <20> 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<6E>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
{

View File

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