2002-12-19 19:55:38 +01:00
< ? PHP
2003-02-03 14:13:02 +01:00
/* Copyright ( c ) 2002 - 2003 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2004-01-28 01:25:15 +01:00
* Copyright ( C ) 2004 Laurent Destailleur < eldy @ users . sourceforge . net >
2004-07-17 19:16:42 +02:00
* Copyright ( C ) 2004 Benoit Mortier < benoit . mortier @ opensides . be >
2004-06-16 15:21:13 +02:00
*
2002-12-19 19:55:38 +01:00
* 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 , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*
* $Id $
* $Source $
*/
2004-07-21 10:43:48 +02:00
class Form
{
2002-12-19 19:55:38 +01:00
var $db ;
var $errorstr ;
Function Form ( $DB )
2004-07-21 10:43:48 +02:00
{
$this -> db = $DB ;
return 1 ;
}
2004-02-17 10:43:59 +01:00
/*
2004-06-10 02:26:07 +02:00
* Retourne la liste d<EFBFBD> roulante des d<EFBFBD> partements / province / cantons
* avec un affichage avec rupture sur le pays
2004-02-17 10:43:59 +01:00
*
*/
2004-07-21 10:43:48 +02:00
Function select_departement ( $selected = '' )
{
print '<select name="departement_id">' ;
2004-06-10 02:26:07 +02:00
2004-07-21 10:43:48 +02:00
// On recherche les d<> partements/cantons/province active d'une region et pays actif
$sql = " SELECT d.rowid, d.code_departement as code , d.nom, d.active, p.libelle as libelle_pays, p.code as code_pays FROM " ;
$sql .= MAIN_DB_PREFIX . " c_departements as d, " . MAIN_DB_PREFIX . " c_regions as r, " . MAIN_DB_PREFIX . " c_pays as p " ;
$sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid " ;
$sql .= " AND d.active = 1 AND r.active = 1 AND p.active = 1 " ;
$sql .= " ORDER BY code_pays, code ASC " ;
2004-06-10 02:26:07 +02:00
2004-07-21 10:43:48 +02:00
if ( $this -> db -> query ( $sql ))
{
$num = $this -> db -> num_rows ();
$i = 0 ;
if ( $num )
{
$pays = '' ;
while ( $i < $num )
{
$obj = $this -> db -> fetch_object ( $i );
if ( $obj -> code == 0 ) {
print '<option value="0"> </option>' ;
}
else {
if ( $pays == '' || $pays != $obj -> libelle_pays ) {
// Affiche la rupture
print '<option value="-1">----- ' . $obj -> libelle_pays . " -----</option> \n " ;
$pays = $obj -> libelle_pays ;
}
if ( $selected > 0 && $selected == $obj -> rowid )
{
print '<option value="' . $obj -> rowid . '" selected>[' . $obj -> code . '] ' . $obj -> nom . '</option>' ;
}
else
{
print '<option value="' . $obj -> rowid . '">[' . $obj -> code . '] ' . $obj -> nom . '</option>' ;
}
}
$i ++ ;
}
}
}
else {
print " Erreur : $sql : " . $this -> db -> error ();
2004-06-10 02:26:07 +02:00
}
2004-07-21 10:43:48 +02:00
print '</select>' ;
}
/*
2004-06-10 02:26:07 +02:00
* Retourne la liste d<EFBFBD> roulante des pays actifs
2004-02-17 11:03:22 +01:00
*
*/
2004-06-10 19:34:33 +02:00
Function select_pays ( $selected = '' )
2004-02-17 11:03:22 +01:00
{
print '<select name="pays_id">' ;
2004-07-21 10:43:48 +02:00
$sql = " SELECT rowid, libelle, active FROM " . MAIN_DB_PREFIX . " c_pays " ;
2004-06-10 02:26:07 +02:00
$sql .= " WHERE active = 1 ORDER BY libelle ASC " ;
2004-02-17 11:03:22 +01:00
if ( $this -> db -> query ( $sql ))
{
$num = $this -> db -> num_rows ();
$i = 0 ;
if ( $num )
{
while ( $i < $num )
{
$obj = $this -> db -> fetch_object ( $i );
if ( $selected == $obj -> rowid )
{
2004-06-10 02:26:07 +02:00
print '<option value="' . $obj -> rowid . '" selected>' . $obj -> libelle . '</option>' ;
2004-02-17 11:03:22 +01:00
}
else
{
print '<option value="' . $obj -> rowid . '">' . $obj -> libelle . '</option>' ;
}
$i ++ ;
}
}
}
print '</select>' ;
}
2004-07-24 00:28:30 +02:00
/*
* Retourne la liste d<EFBFBD> roulante des soci<EFBFBD> t<EFBFBD> s
*
*/
Function select_societes ( $selected = '' )
{
// On recherche les societes
$sql = " SELECT s.idp, s.nom FROM " ;
$sql .= MAIN_DB_PREFIX . " societe as s " ;
$sql .= " ORDER BY nom ASC " ;
print '<select name="soc_id">' ;
if ( $this -> db -> query ( $sql ))
{
$num = $this -> db -> num_rows ();
$i = 0 ;
if ( $num )
{
while ( $i < $num )
{
$obj = $this -> db -> fetch_object ( $i );
if ( $selected > 0 && $selected == $obj -> idp )
{
print '<option value="' . $obj -> idp . '" selected>' . $obj -> nom . '</option>' ;
}
else
{
print '<option value="' . $obj -> idp . '">' . $obj -> nom . '</option>' ;
}
$i ++ ;
}
}
}
else {
print " Erreur : $sql : " . $this -> db -> error ();
}
print '</select>' ;
}
2004-07-21 10:43:48 +02:00
/*
* Retourne le nom d ' un pays
*
*/
Function pays_name ( $id )
{
$sql = " SELECT rowid, libelle FROM " . MAIN_DB_PREFIX . " c_pays " ;
$sql .= " WHERE rowid= $id " ;
if ( $this -> db -> query ( $sql ))
{
$num = $this -> db -> num_rows ();
if ( $num )
{
$obj = $this -> db -> fetch_object ( 0 );
print $obj -> libelle ;
}
else
{
print " Non d<> finit " ;
}
}
print '</select>' ;
}
2004-06-16 15:21:13 +02:00
/*
* Retourne la liste d<EFBFBD> roulante des civilite actives
*
*/
Function select_civilite ( $selected = '' )
{
print '<select name="civilite_id">' ;
2004-07-21 10:43:48 +02:00
$sql = " SELECT rowid, civilite, active FROM " . MAIN_DB_PREFIX . " c_civilite " ;
2004-06-16 15:21:13 +02:00
$sql .= " WHERE active = 1 " ;
if ( $this -> db -> query ( $sql ))
{
$num = $this -> db -> num_rows ();
$i = 0 ;
if ( $num )
{
while ( $i < $num )
{
$obj = $this -> db -> fetch_object ( $i );
if ( $selected == $obj -> rowid )
{
print '<option value="' . $obj -> rowid . '" selected>' . $obj -> civilite . '</option>' ;
}
else
{
print '<option value="' . $obj -> rowid . '">' . $obj -> civilite . '</option>' ;
}
$i ++ ;
}
}
}
print '</select>' ;
}
2004-06-10 19:34:33 +02:00
/*
* Retourne la liste d<EFBFBD> roulante des formes juridiques
* avec un affichage avec rupture sur le pays
*
*/
Function select_forme_juridique ( $selected = '' )
{
2004-07-21 10:05:56 +02:00
print '<select name="forme_juridique_code">' ;
2004-06-10 19:34:33 +02:00
2004-07-21 10:05:56 +02:00
// On recherche les formes juridiques actives des pays actifs
$sql = " SELECT f.rowid, f.code as code , f.libelle as nom, f.active, p.libelle as libelle_pays, p.code as code_pays FROM llx_c_forme_juridique as f, llx_c_pays as p " ;
$sql .= " WHERE f.fk_pays=p.rowid " ;
$sql .= " AND f.active = 1 AND p.active = 1 ORDER BY code_pays, code ASC " ;
if ( $this -> db -> query ( $sql ))
2004-06-10 19:34:33 +02:00
{
2004-07-21 10:05:56 +02:00
$num = $this -> db -> num_rows ();
$i = 0 ;
if ( $num )
2004-06-10 19:34:33 +02:00
{
2004-07-21 10:05:56 +02:00
$pays = '' ;
while ( $i < $num )
2004-06-10 19:34:33 +02:00
{
2004-07-21 10:05:56 +02:00
$obj = $this -> db -> fetch_object ( $i );
if ( $obj -> code == 0 ) {
print '<option value="0"> </option>' ;
}
else {
if ( $pays == '' || $pays != $obj -> libelle_pays ) {
// Affiche la rupture
print '<option value="0">----- ' . $obj -> libelle_pays . " -----</option> \n " ;
$pays = $obj -> libelle_pays ;
}
if ( $selected > 0 && $selected == $obj -> code )
{
print '<option value="' . $obj -> code . '" selected>[' . $obj -> code . '] ' . $obj -> nom . '</option>' ;
}
else
{
print '<option value="' . $obj -> code . '">[' . $obj -> code . '] ' . $obj -> nom . '</option>' ;
}
}
$i ++ ;
2004-06-10 19:34:33 +02:00
}
}
}
2004-07-21 10:05:56 +02:00
else {
print " Erreur : $sql : " . $this -> db -> error ();
}
print '</select>' ;
2004-06-10 19:34:33 +02:00
}
2004-07-21 10:05:56 +02:00
2002-12-19 19:55:38 +01:00
/*
*
*
*
*/
2003-09-12 15:00:02 +02:00
Function form_confirm ( $page , $title , $question , $action )
2003-03-25 18:43:25 +01:00
{
print '<form method="post" action="' . $page . '">' ;
2003-09-12 15:00:02 +02:00
print '<input type="hidden" name="action" value="' . $action . '">' ;
2004-01-24 20:52:10 +01:00
print '<table cellspacing="0" class="border" width="100%" cellpadding="3">' ;
2003-03-25 18:43:25 +01:00
print '<tr><td colspan="3">' . $title . '</td></tr>' ;
print '<tr><td class="valid">' . $question . '</td><td class="valid">' ;
$this -> selectyesno ( " confirm " , " no " );
print " </td> \n " ;
print '<td class="valid" align="center"><input type="submit" value="Confirmer"</td></tr>' ;
print '</table>' ;
print " </form> \n " ;
}
/*
*
*
*/
2003-10-09 00:43:59 +02:00
Function select_tva ( $name = '' , $defaulttx = '' )
2003-03-12 19:59:53 +01:00
{
if ( ! strlen ( trim ( $name )))
{
$name = " tauxtva " ;
}
2003-10-08 16:56:20 +02:00
$file = DOL_DOCUMENT_ROOT . " /conf/tva.local.php " ;
if ( is_readable ( $file ))
{
include $file ;
}
else
{
$txtva [ 0 ] = '19.6' ;
$txtva [ 1 ] = '5.5' ;
$txtva [ 2 ] = '0' ;
}
2003-09-07 20:21:09 +02:00
2003-10-09 00:43:59 +02:00
if ( $defaulttx == '' )
{
$defaulttx = $txtva [ 0 ];
}
2003-09-07 20:21:09 +02:00
$taille = sizeof ( $txtva );
2003-03-12 19:59:53 +01:00
print '<select name="' . $name . '">' ;
2003-09-07 20:21:09 +02:00
for ( $i = 0 ; $i < $taille ; $i ++ )
{
print '<option value="' . $txtva [ $i ] . '"' ;
if ( $txtva [ $i ] == $defaulttx )
{
print ' SELECTED>' . $txtva [ $i ] . ' %</option>' ;
}
else
{
print '>' . $txtva [ $i ] . ' %</option>' ;
}
}
2003-03-12 19:59:53 +01:00
print '</select>' ;
}
2004-07-17 19:16:42 +02:00
/*
* Affiche zone de selection de date
* Liste deroulante pour les jours , mois , annee et eventuellement heurs et minutes
* Les champs sont pr<EFBFBD> s<EFBFBD> lectionn<EFBFBD> es avec :
* - La date set_time ( timestamps ou date au format YYYY - MM - DD ou YYYY - MM - DD HH : MM )
* - La date du jour si set_time vaut ''
* - Aucune date ( champs vides ) si set_time vaut - 1
*/
2004-02-08 16:14:16 +01:00
Function select_date ( $set_time = '' , $prefix = 're' , $h = 0 , $m = 0 , $empty = 0 )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
if ( ! $set_time && ! $empty )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
$set_time = time ();
2003-03-12 19:59:53 +01:00
}
2002-12-19 19:55:38 +01:00
2003-03-12 19:59:53 +01:00
$strmonth [ 1 ] = " Janvier " ;
$strmonth [ 2 ] = " Février " ;
$strmonth [ 3 ] = " Mars " ;
$strmonth [ 4 ] = " Avril " ;
$strmonth [ 5 ] = " Mai " ;
$strmonth [ 6 ] = " Juin " ;
$strmonth [ 7 ] = " Juillet " ;
$strmonth [ 8 ] = " Août " ;
$strmonth [ 9 ] = " Septembre " ;
$strmonth [ 10 ] = " Octobre " ;
$strmonth [ 11 ] = " Novembre " ;
$strmonth [ 12 ] = " Décembre " ;
2004-07-17 19:16:42 +02:00
# Analyse de la date de pr<70> selection
if ( eregi ( '^([0-9]+)\-([0-9]+)\-([0-9]+)\s?([0-9]+)?:?([0-9]+)?' , $set_time , $reg )) {
// Date au format 'YYYY-MM-DD' ou 'YYYY-MM-DD HH:MM:SS'
$syear = $reg [ 1 ];
$smonth = $reg [ 2 ];
$sday = $reg [ 3 ];
$shour = $reg [ 4 ];
$smin = $reg [ 5 ];
}
else {
// Date est un timestamps
$syear = date ( " Y " , $set_time );
$smonth = date ( " n " , $set_time );
$sday = date ( " d " , $set_time );
$shour = date ( " H " , $set_time );
$smin = date ( " i " , $set_time );
}
2003-03-12 19:59:53 +01:00
2003-08-03 14:20:14 +02:00
print '<select name="' . $prefix . 'day">' ;
2004-02-08 16:14:16 +01:00
2004-07-17 19:16:42 +02:00
if ( $empty || $set_time == - 1 )
2004-02-08 16:14:16 +01:00
{
2004-07-17 19:16:42 +02:00
$sday = 0 ;
$smonth = 0 ;
$syear = 0 ;
$shour = 0 ;
$smin = 0 ;
2004-02-08 16:14:16 +01:00
2004-07-17 19:16:42 +02:00
print '<option value="0" selected>' ;
2004-02-08 16:14:16 +01:00
}
2003-03-12 19:59:53 +01:00
2004-07-17 19:16:42 +02:00
for ( $day = 1 ; $day <= 31 ; $day ++ )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
if ( $day == $sday )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
print " <option value= \" $day\ " selected > $day " ;
2003-03-12 19:59:53 +01:00
}
else
{
print " <option value= \" $day\ " > $day " ;
}
}
print " </select> " ;
2003-08-03 14:20:14 +02:00
print '<select name="' . $prefix . 'month">' ;
2004-07-17 19:16:42 +02:00
if ( $empty || $set_time == - 1 )
2004-02-08 16:14:16 +01:00
{
2004-07-17 19:16:42 +02:00
print '<option value="0" selected>' ;
2004-02-08 16:14:16 +01:00
}
2004-07-17 19:16:42 +02:00
for ( $month = 1 ; $month <= 12 ; $month ++ )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
if ( $month == $smonth )
2003-03-12 19:59:53 +01:00
{
2004-07-17 19:16:42 +02:00
print " <option value= \" $month\ " selected > " . $strmonth[$month] ;
2003-03-12 19:59:53 +01:00
}
else
{
print " <option value= \" $month\ " > " . $strmonth[$month] ;
}
}
print " </select> " ;
2004-02-08 16:14:16 +01:00
2004-07-17 19:16:42 +02:00
if ( $empty || $set_time == - 1 )
2003-03-12 19:59:53 +01:00
{
2004-02-08 16:14:16 +01:00
print '<input type="text" size="5" maxlength="4" name="' . $prefix . 'year">' ;
}
else
{
print '<select name="' . $prefix . 'year">' ;
2004-07-17 19:16:42 +02:00
for ( $year = $syear - 3 ; $year < $syear + 5 ; $year ++ )
2003-03-12 19:59:53 +01:00
{
2004-02-08 16:14:16 +01:00
if ( $year == $syear )
{
2004-07-17 19:16:42 +02:00
print " <option value= \" $year\ " selected > $year " ;
2004-02-08 16:14:16 +01:00
}
else
{
print " <option value= \" $year\ " > $year " ;
}
2003-03-12 19:59:53 +01:00
}
2004-02-08 16:14:16 +01:00
print " </select> \n " ;
2003-03-12 19:59:53 +01:00
}
2004-02-08 16:14:16 +01:00
2003-08-03 13:56:34 +02:00
if ( $h )
{
2003-08-03 14:20:14 +02:00
print '<select name="' . $prefix . 'hour">' ;
2003-08-03 13:56:34 +02:00
for ( $hour = 0 ; $hour < 24 ; $hour ++ )
{
if ( strlen ( $hour ) < 2 )
{
$hour = " 0 " . $hour ;
}
if ( $hour == $shour )
{
2004-07-17 19:16:42 +02:00
print " <option value= \" $hour\ " selected > $hour " ;
2003-08-03 13:56:34 +02:00
}
else
{
print " <option value= \" $hour\ " > $hour " ;
}
}
print " </select>H \n " ;
if ( $m )
{
2003-08-03 14:20:14 +02:00
print '<select name="' . $prefix . 'min">' ;
2003-08-03 13:56:34 +02:00
for ( $min = 0 ; $min < 60 ; $min ++ )
{
if ( strlen ( $min ) < 2 )
{
$min = " 0 " . $min ;
}
if ( $min == $smin )
{
2004-07-17 19:16:42 +02:00
print " <option value= \" $min\ " selected > $min " ;
2003-08-03 13:56:34 +02:00
}
else
{
print " <option value= \" $min\ " > $min " ;
}
}
print " </select>M \n " ;
}
}
2003-03-12 19:59:53 +01:00
}
/*
*
*
*/
2002-12-19 19:55:38 +01:00
Function select ( $name , $sql , $id = '' )
{
$result = $this -> db -> query ( $sql );
if ( $result )
{
print '<select name="' . $name . '">' ;
$num = $this -> db -> num_rows ();
$i = 0 ;
2002-12-27 22:54:03 +01:00
if ( strlen ( " $id " ))
2002-12-19 19:55:38 +01:00
{
while ( $i < $num )
{
$row = $this -> db -> fetch_row ( $i );
print " <option value= \" $row[0] \" " ;
if ( $id == $row [ 0 ])
{
2004-07-25 19:43:23 +02:00
print " selected " ;
2002-12-19 19:55:38 +01:00
}
print " > $row[1] </option> \n " ;
$i ++ ;
}
}
else
{
while ( $i < $num )
{
$row = $this -> db -> fetch_row ( $i );
print " <option value= \" $row[0] \" > $row[1] </option> \n " ;
$i ++ ;
}
}
print " </select> " ;
}
else
{
print $this -> db -> error ();
}
}
2003-11-09 18:24:14 +01:00
/**
* Affiche un select <EFBFBD> partir d ' un tableau
2002-12-22 21:04:24 +01:00
*
*/
2004-02-08 16:14:16 +01:00
Function select_array ( $name , $array , $id = '' , $empty = 0 , $key_libelle = 0 )
2002-12-22 21:04:24 +01:00
{
print '<select name="' . $name . '">' ;
$i = 0 ;
if ( strlen ( $id ))
2003-08-03 19:11:56 +02:00
{
if ( $empty == 1 )
{
$array [ 0 ] = " - " ;
}
2003-08-03 19:25:35 +02:00
reset ( $array );
2002-12-22 21:04:24 +01:00
while ( list ( $key , $value ) = each ( $array ))
{
print " <option value= \" $key\ " " ;
if ( $id == $key )
{
2004-07-25 19:43:23 +02:00
print " selected " ;
2002-12-22 21:04:24 +01:00
}
2004-02-08 16:14:16 +01:00
if ( $key_libelle )
{
print " >[ $key ] $value </option> \n " ;
}
else
{
print " > $value </option> \n " ;
}
2002-12-22 21:04:24 +01:00
}
}
else
{
while ( list ( $key , $value ) = each ( $array ) )
{
print " <option value= \" $key\ " " ;
2004-02-08 16:37:48 +01:00
if ( $key_libelle )
{
print " >[ $key ] $value </option> \n " ;
}
else
{
print " > $value </option> \n " ;
}
2002-12-22 21:04:24 +01:00
}
}
print " </select> " ;
}
/*
2002-12-19 19:55:38 +01:00
* Renvoie la cha<EFBFBD> ne de caract<EFBFBD> re d<EFBFBD> crivant l ' erreur
*
*
*/
Function error ()
{
return $this -> errorstr ;
}
2002-12-30 16:13:28 +01:00
/*
*
* Yes / No
*
*/
Function selectyesno ( $name , $value = '' )
{
2004-07-25 19:43:23 +02:00
global $langs ;
2002-12-30 16:13:28 +01:00
print '<select name="' . $name . '">' ;
if ( $value == 'yes' )
{
2004-07-25 19:43:23 +02:00
print '<option value="yes" selected>' . $langs -> trans ( " yes " ) . '</option>' ;
print '<option value="no">' . $langs -> trans ( " no " ) . '</option>' ;
2002-12-30 16:13:28 +01:00
}
else
{
2004-07-25 19:43:23 +02:00
print '<option value="yes">' . $langs -> trans ( " yes " ) . '</option>' ;
print '<option value="no" selected>' . $langs -> trans ( " no " ) . '</option>' ;
2002-12-30 16:13:28 +01:00
}
print '</select>' ;
}
2003-02-03 14:13:02 +01:00
/*
*
* Yes / No
*
*/
Function selectyesnonum ( $name , $value = '' )
{
2004-07-25 19:43:23 +02:00
global $langs ;
2003-02-03 14:13:02 +01:00
print '<select name="' . $name . '">' ;
if ( $value == 1 )
{
2004-07-25 19:43:23 +02:00
print '<option value="1" selected>' . $langs -> trans ( " yes " ) . '</option>' ;
print '<option value="0">' . $langs -> trans ( " no " ) . '</option>' ;
2003-02-03 14:13:02 +01:00
}
else
{
2004-07-25 19:43:23 +02:00
print '<option value="1">' . $langs -> trans ( " yes " ) . '</option>' ;
print '<option value="0" selected>' . $langs -> trans ( " no " ) . '</option>' ;
2003-02-03 14:13:02 +01:00
}
print '</select>' ;
}
2003-02-20 18:40:42 +01:00
/*
*
* Checkbox
*
*/
Function checkbox ( $name , $checked = 0 , $value = 1 )
{
if ( $checked == 1 ){
2003-03-03 18:39:23 +01:00
print " <input type= \" checkbox \" name= \" $name\ " value = \ " $value\ " checked /> \n " ;
2003-02-20 18:40:42 +01:00
} else {
2003-03-03 18:39:23 +01:00
print " <input type= \" checkbox \" name= \" $name\ " value = \ " $value\ " /> \n " ;
2003-02-20 18:40:42 +01:00
}
}
2002-12-19 19:55:38 +01:00
}
?>