Qual: Move a not frequently used function out of functions.lib.php

Enhance PHPUnit tests
This commit is contained in:
Laurent Destailleur
2012-01-21 14:10:22 +01:00
parent 27673e4e45
commit 70a67bc3f1
11 changed files with 141 additions and 65 deletions

View File

@@ -23,6 +23,7 @@ require_once(DOL_DOCUMENT_ROOT.'/cashdesk/class/Facturation.class.php');
require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php');
require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php');
require_once(DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php');
$obj_facturation = unserialize($_SESSION['serObjFacturation']);
unset ($_SESSION['serObjFacturation']);

View File

@@ -27,13 +27,14 @@
require("../../main.inc.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/agenda.lib.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/project.lib.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
require_once(DOL_DOCUMENT_ROOT."/contact/class/contact.class.php");
require_once(DOL_DOCUMENT_ROOT."/user/class/user.class.php");
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/cactioncomm.class.php");
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/actioncomm.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/class/html.formactions.class.php");
require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/project.lib.php");
$langs->load("companies");
$langs->load("commercial");

View File

@@ -510,7 +510,7 @@ if (count($listofextcals))
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/ical.class.php");
foreach($listofextcals as $extcal)
{
$url=$extcal['src'];
$url=$extcal['src']; // Example: https://www.google.com/calendar/ical/eldy10%40gmail.com/private-cde92aa7d7e0ef6110010a821a2aaeb/basic.ics
$namecal = $extcal['name'];
$colorcal = $extcal['color'];
//print "url=".$url." namecal=".$namecal." colorcal=".$colorcal;
@@ -520,14 +520,34 @@ if (count($listofextcals))
if (is_array($ical->get_event_list())) $icalevents=array_merge($icalevents,$ical->get_event_list());
if (is_array($ical->get_freebusy_list())) $icalevents=array_merge($icalevents,$ical->get_freebusy_list());
if(count($icalevents)>0)
if (count($icalevents)>0)
{
// Duplicate all repeatable events into new entries
foreach($icalevents as $icalevent)
{
if (is_array($icalevent['RRULE'])) //repeatable event
{
//if ($event->date_start_in_calendar < $firstdaytoshow) $event->date_start_in_calendar=$firstdaytoshow;
//if ($event->date_end_in_calendar > $lastdaytoshow) $event->date_end_in_calendar=$lastdaytoshow;
$datecur=$icalevent['DTSTART']['unixtime'];
if ($icalevent['RRULE']['FREQ']=='WEEKLY')
{
$until=dol_stringtotime($icalevent['RRULE']['UNTIL'],1);
}
}
}
// Loop on each entry into cal file to know if entry is qualified and add an ActionComm into $eventarray
foreach($icalevents as $icalevent)
{
//print $icalevent['SUMMARY'].'->'.var_dump($icalevent).'<br>';exit;
// Create a new object action
$event=new ActionComm($db);
$addevent = false;
if($icalevent['DTSTART;VALUE=DATE']) //fullday event
if ($icalevent['DTSTART;VALUE=DATE']) //fullday event
{
// For full day events, date are also GMT but they wont but converted using tz during output
$datestart=dol_stringtotime($icalevent['DTSTART;VALUE=DATE'],1);
@@ -537,18 +557,21 @@ if (count($listofextcals))
$event->fulldayevent=true;
$addevent=true;
}
elseif (is_array($icalevent['RRULE'])) //repeatable event
{
$addevent=false; //TODO: a faire
}
elseif(!is_array($icalevent['DTSTART'])) //non-repeatable and not fullday event
elseif (!is_array($icalevent['DTSTART'])) //non-repeatable and not fullday event DTSTART;TZID=Europe/Paris:20120102T100000
{
$datestart=$icalevent['DTSTART'];
$dateend=$icalevent['DTEND'];
$addevent=true;
}
//elseif (is_array($icalevent['DTSTART']) && ! empty($icalevent['DTSTART']['unixtime']) && ! is_array($icalevent['RRULE']))
elseif (is_array($icalevent['DTSTART']) && ! empty($icalevent['DTSTART']['unixtime']))
{
$datestart=$icalevent['DTSTART']['unixtime'];
$dateend=$icalevent['DTEND']['unixtime'];
$addevent=true;
}
if($addevent)
if ($addevent)
{
$event->id=$icalevent['UID'];
$event->icalname=$namecal;
@@ -573,7 +596,7 @@ if (count($listofextcals))
$event->ponctuel=1;
}
// Check values
// Add event into $eventarray if date range are ok.
if ($event->date_end_in_calendar < $firstdaytoshow || $event->date_start_in_calendar > $lastdaytoshow)
{
// This record is out of visible range

View File

@@ -533,6 +533,8 @@ class Contact extends CommonObject
$this->priv = $obj->priv;
$this->mail = $obj->email;
// TODO Replace birthday with a date selector
require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
$this->birthday = dol_stringtotime($obj->birthday);
//print "fetch: ".$obj->birthday.'-'.$this->birthday;
$this->birthday_alert = $obj->birthday_alert;

View File

@@ -198,6 +198,70 @@ function ConvertSecondToTime($iSecond,$format='all',$lengthOfDay=86400,$lengthOf
}
/**
* Convert a string date into a GM Timestamps date
*
* @param string $string Date in a string
* YYYYMMDD
* YYYYMMDDHHMMSS
* YYYYMMDDTHHMMSSZ
* YYYY-MM-DDTHH:MM:SSZ (RFC3339)
* DD/MM/YY or DD/MM/YYYY (this format should not be used anymore)
* DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (this format should not be used anymore)
* @param int $gm 1=Input date is GM date, 0=Input date is local date
* 19700101020000 -> 7200 with gm=1
* @return date Date
*
* @see dol_print_date, dol_mktime, dol_getdate
*/
function dol_stringtotime($string, $gm=1)
{
// Convert date with format DD/MM/YYY HH:MM:SS. This part of code should not be used.
if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i',$string,$reg))
{
dol_syslog("dol_stringtotime call to function with deprecated parameter", LOG_WARNING);
// Date est au format 'DD/MM/YY' ou 'DD/MM/YY HH:MM:SS'
// Date est au format 'DD/MM/YYYY' ou 'DD/MM/YYYY HH:MM:SS'
$sday = $reg[1];
$smonth = $reg[2];
$syear = $reg[3];
$shour = $reg[4];
$smin = $reg[5];
$ssec = $reg[6];
if ($syear < 50) $syear+=1900;
if ($syear >= 50 && $syear < 100) $syear+=2000;
$string=sprintf("%04d%02d%02d%02d%02d%02d",$syear,$smonth,$sday,$shour,$smin,$ssec);
}
// Convert date with format RFC3339
else if (preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})Z$/i',$string,$reg))
{
$syear = $reg[1];
$smonth = $reg[2];
$sday = $reg[3];
$shour = $reg[4];
$smin = $reg[5];
$ssec = $reg[6];
$string=sprintf("%04d%02d%02d%02d%02d%02d",$syear,$smonth,$sday,$shour,$smin,$ssec);
}
// Convert date with format YYYYMMDDTHHMMSSZ
else if (preg_match('/^([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})Z$/i',$string,$reg))
{
$syear = $reg[1];
$smonth = $reg[2];
$sday = $reg[3];
$shour = $reg[4];
$smin = $reg[5];
$ssec = $reg[6];
$string=sprintf("%04d%02d%02d%02d%02d%02d",$syear,$smonth,$sday,$shour,$smin,$ssec);
}
$string=preg_replace('/([^0-9])/i','',$string);
$tmp=$string.'000000';
$date=dol_mktime(substr($tmp,8,2),substr($tmp,10,2),substr($tmp,12,2),substr($tmp,4,2),substr($tmp,6,2),substr($tmp,0,4),$gm);
return $date;
}
/** Return previous day
*
* @param int $day Day

View File

@@ -972,58 +972,6 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
}
/**
* Convert a string date into a GM Timestamps date
*
* @param string $string Date in a string
* YYYYMMDD
* YYYYMMDDHHMMSS
* YYYY-MM-DDTHH:MM:SSZ (RFC3339)
* DD/MM/YY or DD/MM/YYYY (this format should not be used anymore)
* DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (this format should not be used anymore)
* @param int $gm 1=Input date is GM date, 0=Input date is local date
* 19700101020000 -> 7200 with gm=1
* @return date Date
*
* @see dol_print_date, dol_mktime, dol_getdate
*/
function dol_stringtotime($string, $gm=1)
{
if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i',$string,$reg))
{
// This part of code should not be used.
dol_syslog("Functions.lib::dol_stringtotime call to function with deprecated parameter", LOG_WARNING);
// Date est au format 'DD/MM/YY' ou 'DD/MM/YY HH:MM:SS'
// Date est au format 'DD/MM/YYYY' ou 'DD/MM/YYYY HH:MM:SS'
$sday = $reg[1];
$smonth = $reg[2];
$syear = $reg[3];
$shour = $reg[4];
$smin = $reg[5];
$ssec = $reg[6];
if ($syear < 50) $syear+=1900;
if ($syear >= 50 && $syear < 100) $syear+=2000;
$string=sprintf("%04d%02d%02d%02d%02d%02d",$syear,$smonth,$sday,$shour,$smin,$ssec);
}
// Convert date RFC3339
else if (preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})Z$/i',$string,$reg))
{
$syear = $reg[1];
$smonth = $reg[2];
$sday = $reg[3];
$shour = $reg[4];
$smin = $reg[5];
$ssec = $reg[6];
$string=sprintf("%04d%02d%02d%02d%02d%02d",$syear,$smonth,$sday,$shour,$smin,$ssec);
}
$string=preg_replace('/([^0-9])/i','',$string);
$tmp=$string.'000000';
$date=dol_mktime(substr($tmp,8,2),substr($tmp,10,2),substr($tmp,12,2),substr($tmp,4,2),substr($tmp,6,2),substr($tmp,0,4),$gm);
return $date;
}
/**
* Return an array with date info
* PHP getdate is restricted to the years 1901-2038 on Unix and 1970-2038 on Windows

View File

@@ -23,6 +23,7 @@
*/
require_once(DOL_DOCUMENT_ROOT."/core/modules/export/modules_export.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
/**

View File

@@ -24,6 +24,7 @@
require_once(DOL_DOCUMENT_ROOT."/core/modules/export/modules_export.php");
require_once(DOL_DOCUMENT_ROOT."/core/modules/export/export_excel.modules.php");
require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
/**

View File

@@ -392,6 +392,7 @@ if (! defined('NOLOGIN'))
$dol_dst=0;
if (isset($_POST["dst_first"]) && isset($_POST["dst_second"]))
{
include_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
$datenow=dol_now();
$datefirst=dol_stringtotime($_POST["dst_first"]);
$datesecond=dol_stringtotime($_POST["dst_second"]);
@@ -416,7 +417,7 @@ if (! defined('NOLOGIN'))
$_SESSION["dol_loginmesg"]=$langs->trans("ErrorBadLoginPassword");
// Appel des triggers
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
include_once(DOL_DOCUMENT_ROOT."/core/class/interfaces.class.php");
$interface=new Interfaces($db);
$result=$interface->run_triggers('USER_LOGIN_FAILED',$user,$user,$langs,$conf,GETPOST("username","alpha",2));
if ($result < 0) { $error++; }

View File

@@ -1,7 +1,7 @@
#!/usr/bin/php
<?php
/*
* Copyright (C) 2009-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009-2012 Laurent Destailleur <eldy@users.sourceforge.net>
*
* 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
@@ -40,6 +40,7 @@ require_once(DOL_DOCUMENT_ROOT."/cron/functions_cron.lib.php");
require_once(DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php");
require_once(DOL_DOCUMENT_ROOT."/core/modules/facture/modules_facture.php");
require_once(DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php');
require_once(DOL_DOCUMENT_ROOT."/core/lib/date.lib.php");
// Load main language strings

View File

@@ -209,6 +209,39 @@ class DateLibTest extends PHPUnit_Framework_TestCase
return $result;
}
/**
*/
public function testDolStringToTime()
{
global $conf,$user,$langs,$db;
$conf=$this->savconf;
$user=$this->savuser;
$langs=$this->savlangs;
$db=$this->savdb;
$stime='1970-01-01T02:00:00Z';
$result=dol_stringtotime($stime);
print __METHOD__." result=".$result."\n";
$this->assertEquals(7200,$result);
$stime='19700101T020000Z';
$result=dol_stringtotime($stime);
print __METHOD__." result=".$result."\n";
$this->assertEquals(7200,$result);
$stime='19700101020000';
$result=dol_stringtotime($stime);
print __METHOD__." result=".$result."\n";
$this->assertEquals(7200,$result);
$stime='19700101';
$result=dol_stringtotime($stime);
print __METHOD__." result=".$result."\n";
$this->assertEquals(0,$result);
return $result;
}
/**
*/
public function testDolGetFirstDay()