diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index 8de7bebcd2b..fa5ff5481cc 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -36,7 +36,6 @@ 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.'/core/class/html.formfile.class.php';
-
if (! empty($conf->projet->enabled))
{
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
@@ -541,6 +540,7 @@ $help_url='EN:Module_Agenda_En|FR:Module_Agenda|ES:M&omodulodulo_Agenda';
llxHeader('',$langs->trans("Agenda"),$help_url);
$form = new Form($db);
+$formfile = new FormFile($db);
$formactions = new FormActions($db);
if ($action == 'create')
@@ -1290,7 +1290,7 @@ if ($id > 0)
if (empty($conf->global->AGENDA_DISABLE_BUILDDOC))
{
- print '
';
+ print '
';
print ''; // ancre
/*
diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php
index 4e1de9768ac..5813762aece 100644
--- a/htdocs/comm/action/peruser.php
+++ b/htdocs/comm/action/peruser.php
@@ -205,6 +205,8 @@ if ($action == 'show_day' || $action == 'show_week' || $action == 'show_month' |
$param.="&maxprint=".$maxprint;
$prev = dol_get_first_day_week($day, $month, $year);
+//print "day=".$day." month=".$month." year=".$year;
+//var_dump($prev); exit;
$prev_year = $prev['prev_year'];
$prev_month = $prev['prev_month'];
$prev_day = $prev['prev_day'];
@@ -223,6 +225,7 @@ $next_day = $next['day'];
// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1)
$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year);
$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd');
+//print $firstday.'-'.$first_month.'-'.$first_year;
//print dol_print_date($firstdaytoshow,'dayhour');
//print dol_print_date($lastdaytoshow,'dayhour');
@@ -534,12 +537,16 @@ echo '' ;
echo '';
-// Table :
+// Line header with list of days
+
+//print "begin_d=".$begin_d." end_d=".$end_d;
+
+
echo '
';
echo '
';
echo '
';
-$i=0;
+$i=0; // 0 = sunday,
while ($i < 7)
{
if (($i + 1) < $begin_d || ($i + 1) > $end_d)
@@ -679,7 +686,7 @@ foreach ($usernames as $username)
// Lopp on each day of week
$i = 0;
- for ($iter_day = 0; $iter_day < 7; $iter_day++)
+ for ($iter_day = 0; $iter_day < 8; $iter_day++)
{
if (($i + 1) < $begin_d || ($i + 1) > $end_d)
{
diff --git a/htdocs/core/datepicker.php b/htdocs/core/datepicker.php
index 9c584c2ef6e..d8b32788add 100644
--- a/htdocs/core/datepicker.php
+++ b/htdocs/core/datepicker.php
@@ -26,17 +26,18 @@
* \brief File to manage popup date selector
*/
-if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language
-//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language
+if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // disabled
+//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load global conf for START_WEEK
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
-//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations
+//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1);
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1);
-if (! defined('NOLOGIN')) define('NOLOGIN',1); // Not disabled cause need to load personalized language
-if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1);
-if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1);
+if (! defined('NOLOGIN')) define('NOLOGIN',1); // disabled
+if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1);
+if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1);
require_once '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang')); // If language was forced on URL by the main.inc.php
$langs->load("main");
@@ -186,37 +187,46 @@ function displayBox($selectedDate,$month,$year)
\n";
+ if (($mydate["wday"] + 1) % 7 == $startday) echo "\n";
//$thedate=strtotime("tomorrow",$thedate);
$day++;
diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php
index d2c6ce4bd4f..072db988dc1 100644
--- a/htdocs/core/lib/date.lib.php
+++ b/htdocs/core/lib/date.lib.php
@@ -479,34 +479,36 @@ function dol_get_last_day($year,$month=12,$gm=false)
return $datelim;
}
-/** Return first day of week for a date
+/** Return first day of week for a date. First day of week may be monday if option MAIN_START_WEEK is 1.
*
* @param int $day Day
* @param int $month Month
* @param int $year Year
* @param int $gm False or 0 or 'server' = Return date to compare with server TZ, True or 1 to compare with GM date.
- * @return array year,month,week,first_day,prev_year,prev_month,prev_day
+ * @return array year,month,week,first_day,first_month,first_year,prev_day,prev_month,prev_year
*/
function dol_get_first_day_week($day,$month,$year,$gm=false)
{
global $conf;
+ //$day=2; $month=2; $year=2015;
$date = dol_mktime(0,0,0,$month,$day,$year,$gm);
//Checking conf of start week
$start_week = (isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1);
- $tmparray = dol_getdate($date,true);
+ $tmparray = dol_getdate($date,true); // detail of current day
- //Calculate days to count
+ //Calculate days = offset from current day
$days = $start_week - $tmparray['wday'];
if ($days>=1) $days=7-$days;
$days = abs($days);
$seconds = $days*24*60*60;
+ //print 'start_week='.$start_week.' tmparray[wday]='.$tmparray['wday'].' day offset='.$days.' seconds offset='.$seconds.' ';
//Get first day of week
- $tmpday = date($tmparray[0])-$seconds;
- $tmpday = date("d",$tmpday);
+ $tmpdaytms = date($tmparray[0])-$seconds; // $tmparray[0] is day of parameters
+ $tmpday = date("d",$tmpdaytms);
//Check first day of week is in same month than current day or not
if ($tmpday>$day)
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 6af9f298e8e..b194c6ef6e8 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -1046,8 +1046,9 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
/**
* Return an array with locale date info.
* PHP getdate is restricted to the years 1901-2038 on Unix and 1970-2038 on Windows
- * WARNING: This function always use PHP server timezone to return locale informations.
+ * WARNING: This function always use PHP server timezone to return locale informations !!!
* Usage must be avoid.
+ * FIXME: Replace this with PHP date function and a parameter $gm
*
* @param int $timestamp Timestamp
* @param boolean $fast Fast mode
@@ -1057,7 +1058,7 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
* 'minutes' => $min,
* 'hours' => $hour,
* 'mday' => $day,
- * 'wday' => $dow,
+ * 'wday' => $dow, 0=sunday, 6=saturday
* 'mon' => $month,
* 'year' => $year,
* 'yday' => floor($secsInYear/$_day_power),
@@ -1091,7 +1092,7 @@ function dol_getdate($timestamp,$fast=false)
{
$arrayinfo=getdate($timestamp);
- $startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
+ /*$startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
if($startday==1)
{
if ($arrayinfo["wday"]==0)
@@ -1102,7 +1103,7 @@ function dol_getdate($timestamp,$fast=false)
{
$arrayinfo["wday"]=$arrayinfo["wday"]-1;
}
- }
+ }*/
}
return $arrayinfo;
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index 4b77cba7a9c..30db4bf232f 100755
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -22,14 +22,14 @@ ProductAccountancySellCode=Accountancy code (sell)
ProductOrService=Product or Service
ProductsAndServices=Products and Services
ProductsOrServices=Products or Services
-ProductsAndServicesOnSell=Available Products and Services
-ProductsAndServicesNotOnSell=Obsolete Products and Services
+ProductsAndServicesOnSell=Products and Services for sale or for purchase
+ProductsAndServicesNotOnSell=Products and Services out of sale
ProductsAndServicesStatistics=Products and Services statistics
ProductsStatistics=Products statistics
ProductsOnSell=Product for sale or for pruchase
ProductsNotOnSell=Product out of sale and out of purchase
ProductsOnSellAndOnBuy=Products for sale and for purchase
-ServicesOnSell=Services for sale or for pruchase
+ServicesOnSell=Services for sale or for purchase
ServicesNotOnSell=Services out of sale
ServicesOnSellAndOnBuy=Services for sale and for purchase
InternalRef=Internal reference
diff --git a/test/phpunit/DateLibTest.php b/test/phpunit/DateLibTest.php
index 9dd362cca9d..5f33a9f5095 100644
--- a/test/phpunit/DateLibTest.php
+++ b/test/phpunit/DateLibTest.php
@@ -343,4 +343,24 @@ class DateLibTest extends PHPUnit_Framework_TestCase
return $result;
}
+ /**
+ * testDolGetFirstDayWeek
+ *
+ * @return int
+ */
+ public function testDolGetFirstDayWeek()
+ {
+ global $conf;
+
+ $day=3; $month=2; $year=2015;
+ $conf->global->MAIN_START_WEEK = 1; // start on monday
+ $prev = dol_get_first_day_week($day, $month, $year);
+ $this->assertEquals(2, (int) $prev['first_day']); // monday for month 2, year 2014 is the 2
+
+ $day=3; $month=2; $year=2015;
+ $conf->global->MAIN_START_WEEK = 0; // start on sunday
+ $prev = dol_get_first_day_week($day, $month, $year);
+ $this->assertEquals(1, (int) $prev['first_day']); // sunday for month 2, year 2015 is the 1st
+ }
+
}
diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php
index 9ce5d33f4a6..24408d53594 100755
--- a/test/phpunit/FunctionsLibTest.php
+++ b/test/phpunit/FunctionsLibTest.php
@@ -890,4 +890,32 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase
return true;
}
+ /**
+ * testDolGetDate
+ *
+ * @return boolean
+ */
+ public function testDolGetDate()
+ {
+ global $conf;
+
+ $conf->global->MAIN_START_WEEK = 0;
+
+ $tmp=dol_getdate(1); // 1/1/1970 and 1 second = thirday
+ $this->assertEquals(4, $tmp['wday']);
+
+ $tmp=dol_getdate(24*60*60+1); // 2/1/1970 and 1 second = friday
+ $this->assertEquals(5, $tmp['wday']);
+
+ $conf->global->MAIN_START_WEEK = 1;
+
+ $tmp=dol_getdate(1); // 1/1/1970 and 1 second = thirday
+ $this->assertEquals(4, $tmp['wday']);
+
+ $tmp=dol_getdate(24*60*60+1); // 2/1/1970 and 1 second = friday
+ $this->assertEquals(5, $tmp['wday']);
+
+ return true;
+ }
+
}