diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 1e8f6dadc18..9cbb86cf017 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -33,8 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
/**
- * \class Adherent
- * \brief Class to manage members of a foundation
+ * Class to manage members of a foundation
*/
class Adherent extends CommonObject
{
diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php
index d6a0ed1ce91..2c05f71a5da 100644
--- a/htdocs/adherents/class/adherent_type.class.php
+++ b/htdocs/adherents/class/adherent_type.class.php
@@ -28,8 +28,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
/**
- * \class AdherentType
- * \brief Class to manage members type
+ * Class to manage members type
*/
class AdherentType extends CommonObject
{
diff --git a/htdocs/adherents/class/adherentstats.class.php b/htdocs/adherents/class/adherentstats.class.php
index 52d73691cb8..c1a2537aa3a 100755
--- a/htdocs/adherents/class/adherentstats.class.php
+++ b/htdocs/adherents/class/adherentstats.class.php
@@ -28,8 +28,7 @@ include_once DOL_DOCUMENT_ROOT . '/adherents/class/cotisation.class.php';
/**
- * \class AdherentStats
- * \brief Classe permettant la gestion des stats des adherents
+ * Class to manage statistics of members
*/
class AdherentStats extends Stats
{
diff --git a/htdocs/adherents/class/cotisation.class.php b/htdocs/adherents/class/cotisation.class.php
index f08b2257a7d..f333a6fbb98 100644
--- a/htdocs/adherents/class/cotisation.class.php
+++ b/htdocs/adherents/class/cotisation.class.php
@@ -26,8 +26,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
/**
- * \class Cotisation
- * \brief Class to manage subscriptions of foundation members
+ * Class to manage subscriptions of foundation members
*/
class Cotisation extends CommonObject
{
diff --git a/htdocs/bookmarks/class/bookmark.class.php b/htdocs/bookmarks/class/bookmark.class.php
index 088d4751d2e..277e6318590 100644
--- a/htdocs/bookmarks/class/bookmark.class.php
+++ b/htdocs/bookmarks/class/bookmark.class.php
@@ -23,8 +23,7 @@
/**
- * \class Bookmark
- * \brief Class to manage bookmarks
+ * Class to manage bookmarks
*/
class Bookmark
{
diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index 0f9758cd427..4e2d80e7bd1 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -29,8 +29,7 @@ require_once DOL_DOCUMENT_ROOT .'/core/class/commonobject.class.php';
/**
- * \class Contact
- * \brief Classe permettant la gestion des contacts
+ * Class to manage contact/addresses
*/
class Contact extends CommonObject
{
diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php
index e16cbc29229..81390c9f0b0 100644
--- a/htdocs/holiday/class/holiday.class.php
+++ b/htdocs/holiday/class/holiday.class.php
@@ -89,6 +89,12 @@ class Holiday extends CommonObject
global $conf, $langs;
$error=0;
+ $now=dol_now();
+
+ // Check parameters
+ if (empty($this->fk_user) || ! is_numeric($this->fk_user) || $this->fk_user < 0) { $this->error="ErrorBadParameter"; return -1; }
+ if (empty($this->fk_validator) || ! is_numeric($this->fk_validator) || $this->fk_validator < 0) { $this->error="ErrorBadParameter"; return -1; }
+
// Insert request
$sql = "INSERT INTO ".MAIN_DB_PREFIX."holiday(";
@@ -103,22 +109,13 @@ class Holiday extends CommonObject
$sql.= ") VALUES (";
// User
- if(!empty($this->fk_user)) {
- $sql.= "'".$this->fk_user."',";
- } else {
- $error++;
- }
- $sql.= " NOW(),";
+ $sql.= "'".$this->fk_user."',";
+ $sql.= " '".$this->db->idate($now)."',";
$sql.= " '".addslashes($this->description)."',";
$sql.= " '".$this->db->idate($this->date_debut)."',";
$sql.= " '".$this->db->idate($this->date_fin)."',";
$sql.= " '1',";
- if(is_numeric($this->fk_validator)) {
- $sql.= " '".$this->fk_validator."'";
- }
- else {
- $error++;
- }
+ $sql.= " '".$this->fk_validator."'";
$sql.= ")";
@@ -183,7 +180,6 @@ class Holiday extends CommonObject
$sql.= " cp.fk_user_cancel,";
$sql.= " cp.detail_refuse";
-
$sql.= " FROM ".MAIN_DB_PREFIX."holiday as cp";
$sql.= " WHERE cp.rowid = ".$id;
@@ -226,12 +222,12 @@ class Holiday extends CommonObject
}
/**
- * Liste les congés payés pour un utilisateur
+ * List holidays for a particular user
*
- * @param int $user_id ID de l'utilisateur à lister
- * @param string $order Filtrage par ordre
- * @param string $filter Filtre de séléction
- * @return int -1 si erreur, 1 si OK et 2 si pas de résultat
+ * @param int $user_id ID of user to list
+ * @param string $order Sort order
+ * @param string $filter SQL Filter
+ * @return int -1 if KO, 1 if OK, 2 if no result
*/
function fetchByUser($user_id,$order='',$filter='')
{
@@ -321,11 +317,11 @@ class Holiday extends CommonObject
}
/**
- * Liste les congés payés de tout les utilisateurs
+ * List all holidays of all users
*
- * @param string $order Filtrage par ordre
- * @param string $filter Filtre de séléction
- * @return int -1 si erreur, 1 si OK et 2 si pas de résultat
+ * @param string $order Sort order
+ * @param string $filter SQL Filter
+ * @return int -1 if KO, 1 if OK, 2 if no result
*/
function fetchAll($order,$filter)
{
@@ -1595,5 +1591,27 @@ class Holiday extends CommonObject
}
}
+ /**
+ * Initialise an instance with random values.
+ * Used to build previews or test instances.
+ * id must be 0 if object instance is a specimen.
+ *
+ * @return void
+ */
+ function initAsSpecimen()
+ {
+ global $user,$langs;
+
+ // Initialise parameters
+ $this->id=0;
+ $this->specimen=1;
+
+ $this->fk_user=1;
+ $this->description='SPECIMEN description';
+ $this->date_debut=dol_now();
+ $this->date_fin=dol_now()+(24*3600);
+ $this->fk_validator=1;
+ }
+
}
?>
diff --git a/htdocs/holiday/fiche.php b/htdocs/holiday/fiche.php
index 38911ca13da..f564a1893e6 100644
--- a/htdocs/holiday/fiche.php
+++ b/htdocs/holiday/fiche.php
@@ -574,6 +574,9 @@ if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes')
* View
****************************************************/
+$form = new Form($db);
+
+
llxHeader(array(),$langs->trans('CPTitreMenu'));
if (empty($id) || $action == 'add' || $action == 'request')
@@ -621,7 +624,6 @@ if (empty($id) || $action == 'add' || $action == 'request')
dol_htmloutput_mesg('',$errors,'error');
}
- $html = new Form($db);
$cp = new Holiday($db);
$delayForRequest = $cp->getConfCP('delayForRequest');
@@ -678,10 +680,10 @@ if (empty($id) || $action == 'add' || $action == 'request')
print '
';
// Si la demande ne vient pas de l'agenda
if(!isset($_GET['datep'])) {
- $html->select_date(-1,'date_debut_');
+ $form->select_date(-1,'date_debut_');
} else {
$tmpdate = dol_mktime(0, 0, 0, GETPOST('datepmonth'), GETPOST('datepday'), GETPOST('datepyear'));
- $html->select_date($tmpdate,'date_debut_');
+ $form->select_date($tmpdate,'date_debut_');
}
print ' | ';
print '';
@@ -690,10 +692,10 @@ if (empty($id) || $action == 'add' || $action == 'request')
print '';
// Si la demande ne vient pas de l'agenda
if(!isset($_GET['datep'])) {
- $html->select_date(-1,'date_fin_');
+ $form->select_date(-1,'date_fin_');
} else {
$tmpdate = dol_mktime(0, 0, 0, GETPOST('datefmonth'), GETPOST('datefday'), GETPOST('datefyear'));
- $html->select_date($tmpdate,'date_fin_');
+ $form->select_date($tmpdate,'date_fin_');
}
print ' | ';
print '';
@@ -706,7 +708,7 @@ if (empty($id) || $action == 'add' || $action == 'request')
$valideurarray = $validator->listUsersForGroup();
print '';
- print $html->select_dolusers($validator->id, "valideur", 1, "", 0, $valideurarray);
+ print $form->select_dolusers($validator->id, "valideur", 1, "", 0, $valideurarray);
print ' | ';
print '';
print '';
@@ -798,44 +800,39 @@ else
{
if ($action == 'delete' && $cp->statut == 1) {
- if($user->rights->holiday->delete) {
- $html = new Form($db);
-
- $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleDeleteCP"),$langs->trans("ConfirmDeleteCP"),"confirm_delete", '', 0, 1);
+ if($user->rights->holiday->delete)
+ {
+ $ret=$form->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleDeleteCP"),$langs->trans("ConfirmDeleteCP"),"confirm_delete", '', 0, 1);
if ($ret == 'html') print '
';
}
}
// Si envoi en validation
- if ($action == 'sendToValidate' && $cp->statut == 1 && $userID == $cp->fk_user) {
- $html = new Form($db);
-
- $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleToValidCP"),$langs->trans("ConfirmToValidCP"),"confirm_send", '', 0, 1);
+ if ($action == 'sendToValidate' && $cp->statut == 1 && $userID == $cp->fk_user)
+ {
+ $ret=$form->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleToValidCP"),$langs->trans("ConfirmToValidCP"),"confirm_send", '', 0, 1);
if ($ret == 'html') print '
';
}
// Si validation de la demande
- if ($action == 'valid' && $cp->statut == 2 && $userID == $cp->fk_validator) {
- $html = new Form($db);
-
- $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleValidCP"),$langs->trans("ConfirmValidCP"),"confirm_valid", '', 0, 1);
+ if ($action == 'valid' && $cp->statut == 2 && $userID == $cp->fk_validator)
+ {
+ $ret=$form->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleValidCP"),$langs->trans("ConfirmValidCP"),"confirm_valid", '', 0, 1);
if ($ret == 'html') print '
';
}
// Si refus de la demande
- if ($action == 'refuse' && $cp->statut == 2 && $userID == $cp->fk_validator) {
- $html = new Form($db);
-
+ if ($action == 'refuse' && $cp->statut == 2 && $userID == $cp->fk_validator)
+ {
$array_input = array(array('type'=>"text",'label'=>"Entrez ci-dessous un motif de refus :",'name'=>"detail_refuse",'size'=>"50",'value'=>""));
- $ret=$html->form_confirm("fiche.php?id=".$_GET['id']."&action=confirm_refuse",$langs->trans("TitleRefuseCP"),"","confirm_refuse",$array_input,"",0);
+ $ret=$form->form_confirm("fiche.php?id=".$_GET['id']."&action=confirm_refuse",$langs->trans("TitleRefuseCP"),"","confirm_refuse",$array_input,"",0);
if ($ret == 'html') print '
';
}
// Si annulation de la demande
- if ($action == 'cancel' && $cp->statut == 2 && $userID == $cp->fk_validator) {
- $html = new Form($db);
-
- $ret=$html->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleCancelCP"),$langs->trans("ConfirmCancelCP"),"confirm_cancel", '', 0, 1);
+ if ($action == 'cancel' && $cp->statut == 2 && $userID == $cp->fk_validator)
+ {
+ $ret=$form->form_confirm("fiche.php?id=".$_GET['id'],$langs->trans("TitleCancelCP"),$langs->trans("ConfirmCancelCP"),"confirm_cancel", '', 0, 1);
if ($ret == 'html') print '
';
}
@@ -849,8 +846,6 @@ else
print '';
}
+ dol_fiche_end();
+
if (! $edit)
{
- print '
';
- print ''."\n";
+ print '
';
diff --git a/test/phpunit/HolidayTest.php b/test/phpunit/HolidayTest.php
new file mode 100644
index 00000000000..919b1a0162a
--- /dev/null
+++ b/test/phpunit/HolidayTest.php
@@ -0,0 +1,319 @@
+
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see
.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ * \file test/phpunit/HolidayTest.php
+ * \ingroup test
+ * \brief PHPUnit test
+ * \remarks To run this script as CLI: phpunit filename.php
+ */
+
+global $conf,$user,$langs,$db;
+//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver
+require_once 'PHPUnit/Autoload.php';
+require_once dirname(__FILE__).'/../../htdocs/master.inc.php';
+require_once dirname(__FILE__).'/../../htdocs/holiday/class/holiday.class.php';
+$langs->load("dict");
+
+if (empty($user->id))
+{
+ print "Load permissions for admin user nb 1\n";
+ $user->fetch(1);
+ $user->getrights();
+}
+
+$conf->global->MAIN_DISABLE_ALL_MAILS=1;
+
+
+/**
+ * Class for PHPUnit tests
+ *
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class HolidayTest extends PHPUnit_Framework_TestCase
+{
+ protected $savconf;
+ protected $savuser;
+ protected $savlangs;
+ protected $savdb;
+
+ /**
+ * Constructor
+ * We save global variables into local variables
+ *
+ * @return HolidayTest
+ */
+ function __construct()
+ {
+ //$this->sharedFixture
+ global $conf,$user,$langs,$db;
+ $this->savconf=$conf;
+ $this->savuser=$user;
+ $this->savlangs=$langs;
+ $this->savdb=$db;
+
+ print __METHOD__." db->type=".$db->type." user->id=".$user->id;
+ //print " - db ".$db->db;
+ print "\n";
+ }
+
+ // Static methods
+ public static function setUpBeforeClass()
+ {
+ global $conf,$user,$langs,$db;
+
+ $db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
+
+ print __METHOD__."\n";
+ }
+ public static function tearDownAfterClass()
+ {
+ global $conf,$user,$langs,$db;
+ $db->rollback();
+
+ print __METHOD__."\n";
+ }
+
+ /**
+ * Init phpunit tests
+ *
+ * @return void
+ */
+ protected function setUp()
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ print __METHOD__."\n";
+ }
+ /**
+ * End phpunit tests
+ *
+ * @return void
+ */
+ protected function tearDown()
+ {
+ print __METHOD__."\n";
+ }
+
+ /**
+ * testHolidayCreate
+ *
+ * @return int
+ */
+ public function testHolidayCreate()
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ $localobject=new Holiday($this->savdb);
+ $localobject->initAsSpecimen();
+ $result=$localobject->create($user);
+
+ print __METHOD__." result=".$result."\n";
+ $this->assertLessThan($result, 0);
+
+ return $result;
+ }
+
+ /**
+ * testHolidayFetch
+ *
+ * @param int $id Id of Holiday
+ * @return int
+ * @depends testHolidayCreate
+ * The depends says test is run only if previous is ok
+ */
+ public function testHolidayFetch($id)
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ $localobject=new Holiday($this->savdb);
+ $result=$localobject->fetch($id);
+
+ print __METHOD__." id=".$id." result=".$result."\n";
+ $this->assertLessThan($result, 0);
+
+ return $localobject;
+ }
+
+ /**
+ * testHolidayUpdate
+ *
+ * @param Holiday $localobject Holiday
+ * @return int
+ *
+ * @depends testHolidayFetch
+ * The depends says test is run only if previous is ok
+ */
+ public function testHolidayUpdate($localobject)
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ $localobject->oldcopy=dol_clone($localobject);
+
+ $localobject->note='New note after update';
+ //$localobject->note_public='New note public after update';
+ $localobject->lastname='New name';
+ $localobject->firstname='New firstname';
+ $localobject->address='New address';
+ $localobject->zip='New zip';
+ $localobject->town='New town';
+ $localobject->country_id=2;
+ //$localobject->status=0;
+ $localobject->phone_pro='New tel pro';
+ $localobject->phone_perso='New tel perso';
+ $localobject->phone_mobile='New tel mobile';
+ $localobject->fax='New fax';
+ $localobject->email='newemail@newemail.com';
+ $localobject->jabberid='New im id';
+ $localobject->default_lang='es_ES';
+ $result=$localobject->update($localobject->id,$user);
+ print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ $this->assertLessThan($result, 0, 'Holiday::update error');
+ $result=$localobject->update_note($localobject->note);
+ print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ $this->assertLessThan($result, 0, 'Holiday::update_note error');
+ //$result=$localobject->update_note_public($localobject->note_public);
+ //print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ //$this->assertLessThan($result, 0);
+
+ $newobject=new Holiday($this->savdb);
+ $result=$newobject->fetch($localobject->id);
+ print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ $this->assertLessThan($result, 0, 'Holiday::fetch error');
+
+ print __METHOD__." old=".$localobject->note." new=".$newobject->note."\n";
+ $this->assertEquals($localobject->note, $newobject->note);
+ //print __METHOD__." old=".$localobject->note_public." new=".$newobject->note_public."\n";
+ //$this->assertEquals($localobject->note_public, $newobject->note_public);
+ print __METHOD__." old=".$localobject->lastname." new=".$newobject->lastname."\n";
+ $this->assertEquals($localobject->lastname, $newobject->lastname);
+ print __METHOD__." old=".$localobject->firstname." new=".$newobject->firstname."\n";
+ $this->assertEquals($localobject->firstname, $newobject->firstname);
+ print __METHOD__." old=".$localobject->address." new=".$newobject->address."\n";
+ $this->assertEquals($localobject->address, $newobject->address);
+ print __METHOD__." old=".$localobject->zip." new=".$newobject->zip."\n";
+ $this->assertEquals($localobject->zip, $newobject->zip);
+ print __METHOD__." old=".$localobject->town." new=".$newobject->town."\n";
+ $this->assertEquals($localobject->town, $newobject->town);
+ print __METHOD__." old=".$localobject->country_id." new=".$newobject->country_id."\n";
+ $this->assertEquals($localobject->country_id, $newobject->country_id);
+ print __METHOD__." old=BE new=".$newobject->country_code."\n";
+ $this->assertEquals('BE', $newobject->country_code);
+ //print __METHOD__." old=".$localobject->status." new=".$newobject->status."\n";
+ //$this->assertEquals($localobject->status, $newobject->status);
+ print __METHOD__." old=".$localobject->phone_pro." new=".$newobject->phone_pro."\n";
+ $this->assertEquals($localobject->phone_pro, $newobject->phone_pro);
+ print __METHOD__." old=".$localobject->phone_pro." new=".$newobject->phone_pro."\n";
+ $this->assertEquals($localobject->phone_perso, $newobject->phone_perso);
+ print __METHOD__." old=".$localobject->phone_mobile." new=".$newobject->phone_mobile."\n";
+ $this->assertEquals($localobject->phone_mobile, $newobject->phone_mobile);
+ print __METHOD__." old=".$localobject->fax." new=".$newobject->fax."\n";
+ $this->assertEquals($localobject->fax, $newobject->fax);
+ print __METHOD__." old=".$localobject->email." new=".$newobject->email."\n";
+ $this->assertEquals($localobject->email, $newobject->email);
+ print __METHOD__." old=".$localobject->jabberid." new=".$newobject->jabberid."\n";
+ $this->assertEquals($localobject->jabberid, $newobject->jabberid);
+ print __METHOD__." old=".$localobject->default_lang." new=".$newobject->default_lang."\n";
+ $this->assertEquals($localobject->default_lang, $newobject->default_lang);
+
+ return $localobject;
+ }
+
+ /**
+ * testHolidayOther
+ *
+ * @param Holiday $localobject Holiday
+ * @return void
+ *
+ * @depends testHolidayUpdate
+ * The depends says test is run only if previous is ok
+ */
+ public function testHolidayOther($localobject)
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ //$localobject->fetch($localobject->id);
+
+ /*
+ $result=$localobject->getNomUrl(1);
+ print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ $this->assertNotEquals($result, '');
+
+ $result=$localobject->getFullAddress(1);
+ print __METHOD__." id=".$localobject->id." result=".$result."\n";
+ $this->assertContains("New address\nNew zip New town\nBelgium", $result);
+
+ $localobject->info($localobject->id);
+ print __METHOD__." localobject->date_creation=".$localobject->date_creation."\n";
+ $this->assertNotEquals($localobject->date_creation, '');
+ */
+
+ return $localobject->id;
+ }
+
+ /**
+ * testHolidayDelete
+ *
+ * @param int $id Id of Holiday
+ * @return void
+ *
+ * @depends testHolidayOther
+ * The depends says test is run only if previous is ok
+ */
+ public function testHolidayDelete($id)
+ {
+ global $conf,$user,$langs,$db;
+ $conf=$this->savconf;
+ $user=$this->savuser;
+ $langs=$this->savlangs;
+ $db=$this->savdb;
+
+ $localobject=new Holiday($this->savdb);
+ $result=$localobject->fetch($id);
+
+ $result=$localobject->delete(0);
+ print __METHOD__." id=".$id." result=".$result."\n";
+ $this->assertLessThan($result, 0);
+
+ return $result;
+ }
+
+}
+?>