2004-10-19 20:58:50 +02:00
< ? php
2011-10-25 11:24:06 +02:00
/* Copyright ( C ) 2003 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2013-02-27 15:23:25 +01:00
* Copyright ( C ) 2004 - 2013 Laurent Destailleur < eldy @ users . sourceforge . net >
2012-12-30 15:13:49 +01:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
2013-08-14 12:48:00 +02:00
* Copyright ( C ) 2013 Juanjo Menent < jmenent @ 2 byte . es >
2003-02-10 17:19:46 +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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2003-02-10 17:19:46 +01:00
* ( 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
2011-08-01 00:21:57 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2003-02-10 17:19:46 +01:00
*/
2004-08-29 14:01:58 +02:00
2005-04-11 19:21:47 +02:00
/**
2009-06-29 15:45:56 +02:00
* \file htdocs / admin / const . php
* \ingroup setup
2010-04-18 16:37:59 +02:00
* \brief Admin page to define miscellaneous constants
2009-02-18 17:48:27 +01:00
*/
2004-08-29 14:01:58 +02:00
2012-08-22 23:24:21 +02:00
require '../main.inc.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php' ;
2003-02-10 17:19:46 +01:00
2004-08-29 14:01:58 +02:00
$langs -> load ( " admin " );
2012-08-06 08:13:58 +02:00
if ( ! $user -> admin )
accessforbidden ();
2011-10-25 11:24:06 +02:00
2012-07-10 11:45:38 +02:00
$rowid = GETPOST ( 'rowid' , 'int' );
$entity = GETPOST ( 'entity' , 'int' );
2012-08-06 08:13:58 +02:00
$action = GETPOST ( 'action' , 'alpha' );
$update = GETPOST ( 'update' , 'alpha' );
2013-02-13 16:46:28 +01:00
$delete = GETPOST ( 'delete' ); // Do not use alpha here
2012-08-06 08:13:58 +02:00
$debug = GETPOST ( 'debug' , 'int' );
2014-04-23 11:24:58 +02:00
$consts = GETPOST ( 'const' , 'array' );
2012-08-06 08:13:58 +02:00
$constname = GETPOST ( 'constname' , 'alpha' );
$constvalue = GETPOST ( 'constvalue' );
$constnote = GETPOST ( 'constnote' , 'alpha' );
2004-02-21 00:40:13 +01:00
2009-12-21 01:06:04 +01:00
2013-02-13 16:46:28 +01:00
2009-06-29 15:45:56 +02:00
/*
* Actions
*/
2009-12-21 01:06:04 +01:00
2013-12-07 00:53:58 +01:00
if ( $action == 'add' || ( GETPOST ( 'add' ) && $action != 'update' ))
2003-02-10 18:43:29 +01:00
{
2010-03-26 23:00:58 +01:00
$error = 0 ;
2012-08-06 08:13:58 +02:00
if ( empty ( $constname ))
2010-03-26 23:00:58 +01:00
{
2015-10-17 16:18:33 +02:00
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentitiesnoconv ( " Name " )), null , 'errors' );
2010-03-26 23:00:58 +01:00
$error ++ ;
}
2012-08-06 08:13:58 +02:00
if ( $constvalue == '' )
2010-03-26 23:00:58 +01:00
{
2015-10-17 16:18:33 +02:00
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentitiesnoconv ( " Value " )), null , 'errors' );
2010-03-26 23:00:58 +01:00
$error ++ ;
}
if ( ! $error )
2003-02-23 19:16:12 +01:00
{
2013-12-07 00:26:30 +01:00
if ( dolibarr_set_const ( $db , $constname , $constvalue , 'chaine' , 1 , $constnote , $entity ) >= 0 )
2013-02-13 16:46:28 +01:00
{
2015-10-23 12:58:30 +02:00
setEventMessages ( $langs -> trans ( " RecordSaved " ), null , 'mesgs' );
2013-12-07 00:26:30 +01:00
$action = " " ;
$constname = " " ;
$constvalue = " " ;
$constnote = " " ;
2013-02-13 16:46:28 +01:00
}
else
2010-03-26 23:00:58 +01:00
{
2012-02-18 12:54:23 +01:00
dol_print_error ( $db );
2010-03-26 23:00:58 +01:00
}
2003-02-23 19:16:12 +01:00
}
2004-02-21 00:40:13 +01:00
}
2003-02-20 18:40:42 +01:00
2013-02-13 16:46:28 +01:00
// Mass update
if ( ! empty ( $consts ) && $action == 'update' )
2004-02-21 00:40:13 +01:00
{
2013-02-13 16:46:28 +01:00
$nbmodified = 0 ;
2012-07-10 11:45:38 +02:00
foreach ( $consts as $const )
2003-02-23 19:16:12 +01:00
{
2012-07-10 18:57:27 +02:00
if ( ! empty ( $const [ " check " ]))
2009-12-18 15:34:25 +01:00
{
2013-02-13 16:46:28 +01:00
if ( dolibarr_set_const ( $db , $const [ " name " ], $const [ " value " ], $const [ " type " ], 1 , $const [ " note " ], $const [ " entity " ]) >= 0 )
{
$nbmodified ++ ;
}
else
2009-12-18 15:34:25 +01:00
{
2012-02-18 12:54:23 +01:00
dol_print_error ( $db );
2009-12-18 15:34:25 +01:00
}
}
}
2015-10-23 12:58:30 +02:00
if ( $nbmodified > 0 ) setEventMessages ( $langs -> trans ( " RecordSaved " ), null , 'mesgs' );
2013-02-13 16:46:28 +01:00
$action = '' ;
2009-12-18 15:34:25 +01:00
}
2013-02-13 16:46:28 +01:00
// Mass delete
if ( ! empty ( $consts ) && $action == 'delete' )
2009-12-18 15:34:25 +01:00
{
2013-02-13 16:46:28 +01:00
$nbdeleted = 0 ;
2012-07-10 11:45:38 +02:00
foreach ( $consts as $const )
2009-12-18 15:34:25 +01:00
{
2012-07-10 18:57:27 +02:00
if ( ! empty ( $const [ " check " ])) // Is checkbox checked
2009-12-18 15:34:25 +01:00
{
2013-02-13 16:46:28 +01:00
if ( dolibarr_del_const ( $db , $const [ " rowid " ], - 1 ) >= 0 )
{
$nbdeleted ++ ;
}
else
2009-12-18 15:34:25 +01:00
{
2012-02-18 12:54:23 +01:00
dol_print_error ( $db );
2009-12-18 15:34:25 +01:00
}
}
2003-02-23 19:16:12 +01:00
}
2015-10-23 12:58:30 +02:00
if ( $nbdeleted > 0 ) setEventMessages ( $langs -> trans ( " RecordDeleted " ), null , 'mesgs' );
2013-03-30 14:27:13 +01:00
$action = '' ;
2003-02-10 18:43:29 +01:00
}
2009-12-21 01:06:04 +01:00
// Delete line from delete picto
2011-10-25 11:24:06 +02:00
if ( $action == 'delete' )
2009-12-21 01:06:04 +01:00
{
2013-02-13 16:46:28 +01:00
if ( dolibarr_del_const ( $db , $rowid , $entity ) >= 0 )
{
2015-10-23 12:58:30 +02:00
setEventMessages ( $langs -> trans ( " RecordDeleted " ), null , 'mesgs' );
2013-02-13 16:46:28 +01:00
}
else
2009-12-21 01:06:04 +01:00
{
2012-02-18 12:54:23 +01:00
dol_print_error ( $db );
2009-12-21 01:06:04 +01:00
}
}
2004-02-21 00:40:13 +01:00
2009-06-29 15:45:56 +02:00
/*
* View
*/
2013-09-06 12:10:09 +02:00
$form = new Form ( $db );
2015-12-06 12:01:59 +01:00
$wikihelp = 'EN:Setup_Other|FR:Paramétrage_Divers|ES:Configuración_Varios' ;
llxHeader ( '' , $langs -> trans ( " Setup " ), $wikihelp );
2005-10-14 23:05:13 +02:00
2010-11-13 13:25:14 +01:00
// Add logic to show/hide buttons
2010-09-06 13:04:01 +02:00
if ( $conf -> use_javascript_ajax )
{
?>
2011-10-25 11:24:06 +02:00
< script type = " text/javascript " >
2010-09-06 13:04:01 +02:00
jQuery ( document ) . ready ( function () {
jQuery ( " #updateconst " ) . hide ();
jQuery ( " #delconst " ) . hide ();
jQuery ( " .checkboxfordelete " ) . click ( function () {
jQuery ( " #delconst " ) . show ();
2013-02-13 16:46:28 +01:00
jQuery ( " #action " ) . val ( 'delete' );
2010-09-06 13:04:01 +02:00
});
2013-02-27 15:23:25 +01:00
jQuery ( " .inputforupdate " ) . keyup ( function () { // keypress does not support back
2011-02-02 09:39:44 +01:00
var field_id = jQuery ( this ) . attr ( " id " );
var row_num = field_id . split ( " _ " );
2010-09-06 13:04:01 +02:00
jQuery ( " #updateconst " ) . show ();
2013-02-13 16:46:28 +01:00
jQuery ( " #action " ) . val ( 'update' );
2015-05-12 14:22:00 +02:00
jQuery ( " #check_ " + row_num [ 1 ]) . prop ( " checked " , true );
2010-09-06 13:04:01 +02:00
});
});
</ script >
< ? php
}
2015-09-24 18:33:48 +02:00
print load_fiche_titre ( $langs -> trans ( " OtherSetup " ), '' , 'title_setup' );
2004-07-25 15:12:15 +02:00
2006-08-12 19:53:18 +02:00
print $langs -> trans ( " ConstDesc " ) . " <br> \n " ;
print " <br> \n " ;
2013-12-07 00:26:30 +01:00
print '<form action="' . $_SERVER [ " PHP_SELF " ] . (( empty ( $user -> entity ) && $debug ) ? '?debug=1' : '' ) . '" method="POST">' ;
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<input type="hidden" id="action" name="action" value="">' ;
2017-01-17 20:04:41 +01:00
print '<div class="div-table-responsive-no-min">' ;
2005-04-28 02:26:34 +02:00
print '<table class="noborder" width="100%">' ;
2004-07-25 15:12:15 +02:00
print '<tr class="liste_titre">' ;
2004-07-25 19:43:23 +02:00
print '<td>' . $langs -> trans ( " Name " ) . '</td>' ;
print '<td>' . $langs -> trans ( " Value " ) . '</td>' ;
2009-10-29 00:54:56 +01:00
print '<td>' . $langs -> trans ( " Comment " ) . '</td>' ;
2011-08-21 12:01:36 +02:00
if ( ! empty ( $conf -> multicompany -> enabled ) && ! $user -> entity ) print '<td>' . $langs -> trans ( " Entity " ) . '</td>' ;
2007-02-04 22:23:58 +01:00
print '<td align="center">' . $langs -> trans ( " Action " ) . '</td>' ;
2004-07-25 15:12:15 +02:00
print " </tr> \n " ;
2010-11-13 13:25:14 +01:00
// Line to add new record
2005-04-28 02:42:34 +02:00
$var = false ;
2009-12-21 01:06:04 +01:00
print " \n " ;
2004-08-05 03:44:51 +02:00
2013-12-07 00:26:30 +01:00
print '<tr ' . $bc [ $var ] . '><td><input type="text" class="flat" size="24" name="constname" value="' . $constname . '"></td>' . " \n " ;
2004-08-05 03:44:51 +02:00
print '<td>' ;
2013-12-07 00:26:30 +01:00
print '<input type="text" class="flat" size="30" name="constvalue" value="' . $constvalue . '">' ;
2004-08-05 03:44:51 +02:00
print '</td><td>' ;
2013-12-07 00:26:30 +01:00
print '<input type="text" class="flat" size="40" name="constnote" value="' . $constnote . '">' ;
2009-04-16 10:23:00 +02:00
print '</td>' ;
2009-12-18 15:34:25 +01:00
// Limit to superadmin
2011-08-21 12:01:36 +02:00
if ( ! empty ( $conf -> multicompany -> enabled ) && ! $user -> entity )
2009-04-16 10:23:00 +02:00
{
print '<td>' ;
print '<input type="text" class="flat" size="1" name="entity" value="' . $conf -> entity . '">' ;
print '</td>' ;
2013-12-07 00:26:30 +01:00
print '<td align="center">' ;
2009-04-16 10:23:00 +02:00
}
else
{
2013-12-07 00:26:30 +01:00
print '<td align="center">' ;
2009-04-16 10:23:00 +02:00
print '<input type="hidden" name="entity" value="' . $conf -> entity . '">' ;
}
2013-12-07 00:26:30 +01:00
print '<input type="submit" class="button" value="' . $langs -> trans ( " Add " ) . '" name="add">' ;
2004-08-05 03:44:51 +02:00
print " </td> \n " ;
print '</tr>' ;
2007-02-04 22:23:58 +01:00
2004-08-05 03:44:51 +02:00
2011-09-14 23:50:17 +02:00
// Show constants
2009-06-27 09:43:15 +02:00
$sql = " SELECT " ;
$sql .= " rowid " ;
2009-12-23 02:12:47 +01:00
$sql .= " , " . $db -> decrypt ( 'name' ) . " as name " ;
$sql .= " , " . $db -> decrypt ( 'value' ) . " as value " ;
2009-12-18 15:34:25 +01:00
$sql .= " , type " ;
2009-06-27 09:43:15 +02:00
$sql .= " , note " ;
$sql .= " , entity " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " const " ;
2009-12-18 15:34:25 +01:00
$sql .= " WHERE entity IN ( " . $user -> entity . " , " . $conf -> entity . " ) " ;
2015-07-12 18:05:56 +02:00
if (( empty ( $user -> entity ) || $user -> admin ) && $debug ) {} // to force for superadmin to debug
else if ( ! GETPOST ( 'visible' ) || GETPOST ( 'visible' ) != 'all' ) $sql .= " AND visible = 1 " ; // We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits
if ( GETPOST ( 'name' )) $sql .= natural_search ( " name " , GETPOST ( 'name' ));
2009-12-18 15:34:25 +01:00
$sql .= " ORDER BY entity, name ASC " ;
2009-06-27 09:43:15 +02:00
2014-06-12 11:31:53 +02:00
dol_syslog ( " Const::listConstant " , LOG_DEBUG );
2003-02-10 17:19:46 +01:00
$result = $db -> query ( $sql );
2009-02-18 17:48:27 +01:00
if ( $result )
2003-02-10 17:19:46 +01:00
{
2009-02-18 17:48:27 +01:00
$num = $db -> num_rows ( $result );
$i = 0 ;
$var = false ;
2003-02-10 18:43:29 +01:00
2009-02-18 17:48:27 +01:00
while ( $i < $num )
2003-02-10 18:43:29 +01:00
{
2009-02-18 17:48:27 +01:00
$obj = $db -> fetch_object ( $result );
$var =! $var ;
2009-05-07 01:30:49 +02:00
print " \n " ;
2009-02-18 17:48:27 +01:00
2011-02-02 08:04:30 +01:00
print '<tr ' . $bc [ $var ] . '><td>' . $obj -> name . '</td>' . " \n " ;
2009-02-18 17:48:27 +01:00
// Value
print '<td>' ;
2013-12-07 00:26:30 +01:00
print '<input type="hidden" name="const[' . $i . '][rowid]" value="' . $obj -> rowid . '">' ;
print '<input type="hidden" name="const[' . $i . '][name]" value="' . $obj -> name . '">' ;
print '<input type="hidden" name="const[' . $i . '][type]" value="' . $obj -> type . '">' ;
print '<input type="text" id="value_' . $i . '" class="flat inputforupdate" size="30" name="const[' . $i . '][value]" value="' . htmlspecialchars ( $obj -> value ) . '">' ;
print '</td>' ;
2009-02-18 17:48:27 +01:00
// Note
2013-12-07 00:26:30 +01:00
print '<td>' ;
2014-11-30 13:28:09 +01:00
print '<input type="text" id="note_' . $i . '" class="flat inputforupdate" size="40" name="const[' . $i . '][note]" value="' . htmlspecialchars ( $obj -> note , 1 ) . '">' ;
2009-04-16 10:23:00 +02:00
print '</td>' ;
2009-05-07 01:30:49 +02:00
2009-12-18 15:34:25 +01:00
// Entity limit to superadmin
2011-08-21 12:01:36 +02:00
if ( ! empty ( $conf -> multicompany -> enabled ) && ! $user -> entity )
2009-04-16 10:23:00 +02:00
{
print '<td>' ;
2009-12-18 15:34:25 +01:00
print '<input type="text" class="flat" size="1" name="const[' . $i . '][entity]" value="' . $obj -> entity . '">' ;
2009-04-16 10:23:00 +02:00
print '</td>' ;
2013-12-07 00:26:30 +01:00
print '<td align="center">' ;
2009-04-16 10:23:00 +02:00
}
else
{
2013-12-07 00:26:30 +01:00
print '<td align="center">' ;
2009-12-18 15:34:25 +01:00
print '<input type="hidden" name="const[' . $i . '][entity]" value="' . $obj -> entity . '">' ;
2009-04-16 10:23:00 +02:00
}
2009-05-07 01:30:49 +02:00
2010-03-26 23:00:58 +01:00
if ( $conf -> use_javascript_ajax )
2009-12-21 01:06:04 +01:00
{
2011-02-02 09:39:44 +01:00
print '<input type="checkbox" class="flat checkboxfordelete" id="check_' . $i . '" name="const[' . $i . '][check]" value="1">' ;
2009-12-21 01:06:04 +01:00
}
2009-12-21 07:06:29 +01:00
else
{
2012-02-23 20:42:25 +01:00
print '<a href="' . $_SERVER [ 'PHP_SELF' ] . '?rowid=' . $obj -> rowid . '&entity=' . $obj -> entity . '&action=delete' . (( empty ( $user -> entity ) && $debug ) ? '&debug=1' : '' ) . '">' . img_delete () . '</a>' ;
2009-12-21 07:06:29 +01:00
}
2009-12-21 01:06:04 +01:00
2009-02-18 17:48:27 +01:00
print " </td></tr> \n " ;
2009-05-07 01:30:49 +02:00
print " \n " ;
2009-02-18 17:48:27 +01:00
$i ++ ;
2003-02-10 18:43:29 +01:00
}
2003-02-10 17:19:46 +01:00
}
2003-02-20 18:40:42 +01:00
2004-07-25 15:12:15 +02:00
2003-02-10 17:19:46 +01:00
print '</table>' ;
2017-01-17 20:04:41 +01:00
print '</div>' ;
2003-02-10 17:19:46 +01:00
2009-12-21 01:06:04 +01:00
if ( $conf -> use_javascript_ajax )
{
print '<br>' ;
2010-09-06 13:04:01 +02:00
print '<div id="updateconst" align="right">' ;
2009-12-21 01:06:04 +01:00
print '<input type="submit" name="update" class="button" value="' . $langs -> trans ( " Modify " ) . '">' ;
print '</div>' ;
2010-09-06 13:04:01 +02:00
print '<div id="delconst" align="right">' ;
2009-12-21 01:06:04 +01:00
print '<input type="submit" name="delete" class="button" value="' . $langs -> trans ( " Delete " ) . '">' ;
print '</div>' ;
}
2009-12-18 15:34:25 +01:00
print " </form> \n " ;
2017-01-17 20:04:41 +01:00
2012-02-23 20:42:25 +01:00
llxFooter ();
2009-12-18 15:34:25 +01:00
2003-02-10 17:19:46 +01:00
$db -> close ();