2016-01-24 21:17:11 +01:00
< ? php
2017-07-09 20:57:45 +02:00
/* Copyright ( C ) 2004 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2016-01-24 21:17:11 +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 3 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 < http :// www . gnu . org / licenses />.
*/
/**
2017-10-20 21:39:19 +02:00
* \file htdocs / admin / website . php
2016-02-02 16:24:12 +01:00
* \ingroup setup
* \brief Page to administer web sites
2016-01-24 21:17:11 +01:00
*/
require '../main.inc.php' ;
2016-02-02 16:24:12 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formadmin.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php' ;
2016-01-24 21:17:11 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php' ;
2017-07-03 02:09:14 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
2017-12-19 11:40:29 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/website.lib.php' ;
2016-02-02 16:24:12 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
2017-10-20 21:39:19 +02:00
require_once DOL_DOCUMENT_ROOT . '/website/class/website.class.php' ;
2016-01-24 21:17:11 +01:00
2018-05-26 18:52:14 +02:00
// Load translation files required by the page
$langs -> loadlangs ( array ( 'errors' , 'admin' , 'companies' , 'website' ));
2016-01-24 21:17:11 +01:00
2019-01-27 11:55:16 +01:00
$action = GETPOST ( 'action' , 'alpha' ) ? GETPOST ( 'action' , 'alpha' ) : 'view' ;
$confirm = GETPOST ( 'confirm' , 'alpha' );
2017-12-15 10:36:35 +01:00
$backtopage = GETPOST ( 'backtopage' , 'alpha' );
2019-01-27 11:55:16 +01:00
$rowid = GETPOST ( 'rowid' , 'alpha' );
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$id = 1 ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
if ( ! $user -> admin ) accessforbidden ();
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$acts [ 0 ] = " activate " ;
$acts [ 1 ] = " disable " ;
2019-01-27 11:55:16 +01:00
$actl [ 0 ] = img_picto ( $langs -> trans ( " Disabled " ), 'switch_off' );
$actl [ 1 ] = img_picto ( $langs -> trans ( " Activated " ), 'switch_on' );
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$status = 1 ;
2016-01-24 21:17:11 +01:00
2017-07-09 20:57:45 +02:00
// Load variable for pagination
2019-01-27 11:55:16 +01:00
$limit = GETPOST ( 'limit' , 'int' ) ? GETPOST ( 'limit' , 'int' ) : $conf -> liste_limit ;
$sortfield = GETPOST ( 'sortfield' , 'alpha' );
$sortorder = GETPOST ( 'sortorder' , 'alpha' );
$page = GETPOST ( 'page' , 'int' );
2017-07-09 20:57:45 +02:00
if ( empty ( $page ) || $page == - 1 ) { $page = 0 ; } // If $page is not defined, or '' or -1
$offset = $limit * $page ;
2016-02-02 16:24:12 +01:00
$pageprev = $page - 1 ;
$pagenext = $page + 1 ;
2016-01-24 21:17:11 +01:00
2017-06-10 12:56:28 +02:00
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
2018-04-05 13:21:00 +02:00
$hookmanager -> initHooks ( array ( 'website' ));
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Name of SQL tables of dictionaries
$tabname = array ();
$tabname [ 1 ] = MAIN_DB_PREFIX . " website " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Dictionary labels
$tablib = array ();
$tablib [ 1 ] = " Websites " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Requests to extract data
$tabsql = array ();
2018-01-07 18:33:20 +01:00
$tabsql [ 1 ] = " SELECT f.rowid as rowid, f.entity, f.ref, f.description, f.virtualhost, f.status FROM " . MAIN_DB_PREFIX . 'website as f WHERE f.entity IN (' . getEntity ( 'website' ) . ')' ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Criteria to sort dictionaries
$tabsqlsort = array ();
2016-04-19 11:02:55 +02:00
$tabsqlsort [ 1 ] = " ref ASC " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Nom des champs en resultat de select pour affichage du dictionnaire
$tabfield = array ();
2017-07-19 16:38:00 +02:00
$tabfield [ 1 ] = " ref,description,virtualhost " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Nom des champs d'edition pour modification d'un enregistrement
$tabfieldvalue = array ();
2017-07-19 16:38:00 +02:00
$tabfieldvalue [ 1 ] = " ref,description,virtualhost " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Nom des champs dans la table pour insertion d'un enregistrement
$tabfieldinsert = array ();
2017-07-19 16:38:00 +02:00
$tabfieldinsert [ 1 ] = " ref,description,virtualhost,entity " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Nom du rowid si le champ n'est pas de type autoincrement
// Example: "" if id field is "rowid" and has autoincrement on
// "nameoffield" if id field is not "rowid" or has not autoincrement on
$tabrowid = array ();
$tabrowid [ 1 ] = " " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Condition to show dictionary in setup page
$tabcond = array ();
2017-10-20 21:39:19 +02:00
$tabcond [ 1 ] = ( ! empty ( $conf -> website -> enabled ));
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// List of help for fields
$tabhelp = array ();
2017-10-20 21:39:19 +02:00
$tabhelp [ 1 ] = array ( 'ref' => $langs -> trans ( " EnterAnyCode " ), 'virtualhost' => $langs -> trans ( " SetHereVirtualHost " , DOL_DATA_ROOT . '/website/<i>websiteref</i>' ));
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// List of check for fields (NOT USED YET)
$tabfieldcheck = array ();
$tabfieldcheck [ 1 ] = array ();
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
$elementList = array ();
$sourceList = array ();
2016-01-24 21:17:11 +01:00
2017-12-19 11:40:29 +01:00
/*
* Actions
*/
2017-07-20 20:05:49 +02:00
// Actions add or modify a website
2019-01-27 11:55:16 +01:00
if ( GETPOST ( 'actionadd' , 'alpha' ) || GETPOST ( 'actionmodify' , 'alpha' ))
2016-02-02 16:24:12 +01:00
{
2019-01-27 11:55:16 +01:00
$listfield = explode ( ',' , $tabfield [ $id ]);
$listfieldinsert = explode ( ',' , $tabfieldinsert [ $id ]);
$listfieldmodify = explode ( ',' , $tabfieldinsert [ $id ]);
$listfieldvalue = explode ( ',' , $tabfieldvalue [ $id ]);
2016-02-02 16:24:12 +01:00
// Check that all fields are filled
$ok = 1 ;
foreach ( $listfield as $f => $value )
{
2017-12-19 11:40:29 +01:00
if ( $value == 'ref' && ( ! isset ( $_POST [ $value ]) || $_POST [ $value ] == '' ))
{
$ok = 0 ;
$fieldnamekey = $listfield [ $f ];
setEventMessages ( $langs -> transnoentities ( " ErrorFieldRequired " , $langs -> transnoentities ( $fieldnamekey )), null , 'errors' );
break ;
}
elseif ( $value == 'ref' && ! preg_match ( '/^[a-z0-9_\-\.]+$/i' , $_POST [ $value ]))
{
2017-07-19 16:38:00 +02:00
$ok = 0 ;
2017-12-19 11:40:29 +01:00
$fieldnamekey = $listfield [ $f ];
2017-07-19 16:38:00 +02:00
setEventMessages ( $langs -> transnoentities ( " ErrorFieldCanNotContainSpecialCharacters " , $langs -> transnoentities ( $fieldnamekey )), null , 'errors' );
2017-12-19 11:40:29 +01:00
break ;
}
2016-02-02 16:24:12 +01:00
}
2017-07-03 02:09:14 +02:00
2017-07-20 20:05:49 +02:00
// Clean parameters
if ( ! empty ( $_POST [ 'ref' ]))
{
$websitekey = strtolower ( $_POST [ 'ref' ]);
}
2016-02-02 16:24:12 +01:00
// Si verif ok et action add, on ajoute la ligne
2019-01-27 11:55:16 +01:00
if ( $ok && GETPOST ( 'actionadd' , 'alpha' ))
2016-02-02 16:24:12 +01:00
{
if ( $tabrowid [ $id ])
{
// Recupere id libre pour insertion
$newid = 0 ;
$sql = " SELECT max( " . $tabrowid [ $id ] . " ) newid from " . $tabname [ $id ];
$result = $db -> query ( $sql );
if ( $result )
{
$obj = $db -> fetch_object ( $result );
$newid = ( $obj -> newid + 1 );
} else {
dol_print_error ( $db );
}
}
2017-07-20 20:05:49 +02:00
/* $website = new Website ( $db );
$website -> ref =
$website -> description =
$website -> virtualhost =
$website -> create ( $user ); */
2016-02-02 16:24:12 +01:00
// Add new entry
$sql = " INSERT INTO " . $tabname [ $id ] . " ( " ;
// List of fields
2019-01-27 11:55:16 +01:00
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldinsert ))
2016-02-02 16:24:12 +01:00
$sql .= $tabrowid [ $id ] . " , " ;
$sql .= $tabfieldinsert [ $id ];
$sql .= " ,status) " ;
$sql .= " VALUES( " ;
// List of values
2019-01-27 11:55:16 +01:00
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldinsert ))
2016-02-02 16:24:12 +01:00
$sql .= $newid . " , " ;
$i = 0 ;
foreach ( $listfieldinsert as $f => $value )
{
if ( $value == 'entity' ) {
$_POST [ $listfieldvalue [ $i ]] = $conf -> entity ;
}
2017-07-20 20:05:49 +02:00
if ( $value == 'ref' ) {
$_POST [ $listfieldvalue [ $i ]] = strtolower ( $_POST [ $listfieldvalue [ $i ]]);
}
2016-02-02 16:24:12 +01:00
if ( $i ) $sql .= " , " ;
if ( $_POST [ $listfieldvalue [ $i ]] == '' ) $sql .= " null " ;
else $sql .= " ' " . $db -> escape ( $_POST [ $listfieldvalue [ $i ]]) . " ' " ;
$i ++ ;
}
$sql .= " ,1) " ;
dol_syslog ( " actionadd " , LOG_DEBUG );
$result = $db -> query ( $sql );
if ( $result ) // Add is ok
{
setEventMessages ( $langs -> transnoentities ( " RecordSaved " ), null , 'mesgs' );
2017-07-03 02:09:14 +02:00
unset ( $_POST ); // Clean $_POST array, we keep only
2016-02-02 16:24:12 +01:00
}
else
{
if ( $db -> errno () == 'DB_ERROR_RECORD_ALREADY_EXISTS' ) {
setEventMessages ( $langs -> transnoentities ( " ErrorRecordAlreadyExists " ), null , 'errors' );
}
else {
dol_print_error ( $db );
}
}
}
// Si verif ok et action modify, on modifie la ligne
2019-01-27 11:55:16 +01:00
if ( $ok && GETPOST ( 'actionmodify' , 'alpha' ))
2016-02-02 16:24:12 +01:00
{
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
2017-08-22 15:32:45 +02:00
$db -> begin ();
2017-07-03 02:09:14 +02:00
$website = new Website ( $db );
2019-01-27 11:55:16 +01:00
$rowid = GETPOST ( 'rowid' , 'int' );
2017-07-03 02:09:14 +02:00
$website -> fetch ( $rowid );
2016-02-02 16:24:12 +01:00
// Modify entry
$sql = " UPDATE " . $tabname [ $id ] . " SET " ;
// Modifie valeur des champs
2019-01-27 11:55:16 +01:00
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldmodify ))
2016-02-02 16:24:12 +01:00
{
$sql .= $tabrowid [ $id ] . " = " ;
$sql .= " ' " . $db -> escape ( $rowid ) . " ', " ;
}
$i = 0 ;
foreach ( $listfieldmodify as $field )
{
if ( $field == 'entity' ) {
$_POST [ $listfieldvalue [ $i ]] = $conf -> entity ;
}
if ( $i ) $sql .= " , " ;
$sql .= $field . " = " ;
if ( $_POST [ $listfieldvalue [ $i ]] == '' ) $sql .= " null " ;
else $sql .= " ' " . $db -> escape ( $_POST [ $listfieldvalue [ $i ]]) . " ' " ;
$i ++ ;
}
$sql .= " WHERE " . $rowidcol . " = ' " . $rowid . " ' " ;
dol_syslog ( " actionmodify " , LOG_DEBUG );
//print $sql;
$resql = $db -> query ( $sql );
2017-07-03 02:09:14 +02:00
if ( $resql )
{
2019-01-27 11:55:16 +01:00
$newname = dol_sanitizeFileName ( GETPOST ( 'ref' , 'aZ09' ));
2017-07-03 02:09:14 +02:00
if ( $newname != $website -> ref )
{
2017-10-20 21:39:19 +02:00
$srcfile = DOL_DATA_ROOT . '/website/' . $website -> ref ;
$destfile = DOL_DATA_ROOT . '/website/' . $newname ;
2017-08-22 15:32:45 +02:00
if ( dol_is_dir ( $destfile ))
{
$error ++ ;
setEventMessages ( $langs -> trans ( 'ErrorDirAlreadyExists' , $destfile ), null , 'errors' );
}
else
{
@ rename ( $srcfile , $destfile );
// We must now rename $website->ref into $newname inside files
$arrayreplacement = array ( $website -> ref . '/htmlheader.html' => $newname . '/htmlheader.html' );
$listofilestochange = dol_dir_list ( $destfile , 'files' , 0 , '\.php$' );
foreach ( $listofilestochange as $key => $value )
{
dolReplaceInFile ( $value [ 'fullname' ], $arrayreplacement );
}
}
2017-07-03 02:09:14 +02:00
}
}
else
2016-02-02 16:24:12 +01:00
{
2017-08-22 15:32:45 +02:00
$error ++ ;
setEventMessages ( $db -> lasterror (), null , 'errors' );
}
if ( ! $error )
{
$db -> commit ();
}
else
{
$db -> rollback ();
2016-02-02 16:24:12 +01:00
}
}
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
}
2016-01-24 21:17:11 +01:00
2019-01-27 11:55:16 +01:00
if ( GETPOST ( 'actioncancel' , 'alpha' ))
2016-02-02 16:24:12 +01:00
{
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
}
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
if ( $action == 'confirm_delete' && $confirm == 'yes' ) // delete
{
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
2016-01-24 21:17:11 +01:00
2017-12-19 11:40:29 +01:00
$website = new Website ( $db );
$website -> fetch ( $rowid );
2017-07-03 02:09:14 +02:00
2017-12-19 11:40:29 +01:00
if ( $website -> id > 0 )
2016-02-02 16:24:12 +01:00
{
2018-07-22 16:56:11 +02:00
$sql = " DELETE from " . MAIN_DB_PREFIX . " website_account WHERE fk_website =' " . $rowid . " ' " ;
$result = $db -> query ( $sql );
$sql = " DELETE from " . MAIN_DB_PREFIX . " website_page WHERE fk_website =' " . $rowid . " ' " ;
$result = $db -> query ( $sql );
$sql = " DELETE from " . MAIN_DB_PREFIX . " website_extrafields WHERE fk_object =' " . $rowid . " ' " ;
$result = $db -> query ( $sql );
2017-12-19 11:40:29 +01:00
2018-07-22 16:56:11 +02:00
$sql = " DELETE from " . MAIN_DB_PREFIX . " website WHERE rowid =' " . $rowid . " ' " ;
2017-12-19 11:40:29 +01:00
$result = $db -> query ( $sql );
if ( ! $result )
{
if ( $db -> errno () == 'DB_ERROR_CHILD_EXISTS' )
{
setEventMessages ( $langs -> transnoentities ( " ErrorRecordIsUsedByChild " ), null , 'errors' );
}
else
{
dol_print_error ( $db );
}
}
if ( $website -> ref )
{
dol_delete_dir_recursive ( $conf -> website -> dir_output . '/' . $website -> ref );
}
}
else
{
dol_print_error ( $db , 'Failed to load website with id ' . $rowid );
2016-02-02 16:24:12 +01:00
}
}
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// activate
if ( $action == $acts [ 0 ])
{
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
if ( $rowid ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET status = 1 WHERE rowid =' " . $rowid . " ' " ;
}
$result = $db -> query ( $sql );
if ( ! $result )
{
dol_print_error ( $db );
}
}
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// disable
if ( $action == $acts [ 1 ])
{
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
if ( $rowid ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET status = 0 WHERE rowid =' " . $rowid . " ' " ;
}
$result = $db -> query ( $sql );
if ( ! $result )
{
dol_print_error ( $db );
}
}
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
/*
* View
*/
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$form = new Form ( $db );
$formadmin = new FormAdmin ( $db );
2016-01-24 21:17:11 +01:00
2017-12-15 10:36:35 +01:00
llxHeader ( '' , $langs -> trans ( " WebsiteSetup " ));
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$titre = $langs -> trans ( " WebsiteSetup " );
2017-12-15 10:36:35 +01:00
$linkback = '<a href="' . ( $backtopage ? $backtopage : DOL_URL_ROOT . '/admin/modules.php' ) . '">' . $langs -> trans ( " BackToModuleList " ) . '</a>' ;
2019-01-27 11:55:16 +01:00
print load_fiche_titre ( $titre , $linkback , 'title_setup' );
2016-01-24 21:17:11 +01:00
2018-02-10 12:15:24 +01:00
// Onglets
$head = array ();
$h = 0 ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . " /admin/website.php " ;
$head [ $h ][ 1 ] = $langs -> trans ( " WebSites " );
$head [ $h ][ 2 ] = 'website' ;
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . " /admin/website_options.php " ;
$head [ $h ][ 1 ] = $langs -> trans ( " Options " );
$head [ $h ][ 2 ] = 'options' ;
$h ++ ;
dol_fiche_head ( $head , 'website' , '' , - 1 );
2016-02-02 16:24:12 +01:00
print $langs -> trans ( " WebsiteSetupDesc " ) . '<br>' ;
print " <br> \n " ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
// Confirmation de la suppression de la ligne
if ( $action == 'delete' )
{
2019-01-27 11:55:16 +01:00
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?' . ( $page ? 'page=' . $page . '&' : '' ) . 'sortfield=' . $sortfield . '&sortorder=' . $sortorder . '&rowid=' . $rowid , $langs -> trans ( 'DeleteWebsite' ), $langs -> trans ( 'ConfirmDeleteWebsite' ), 'confirm_delete' , '' , 0 , 1 );
2016-02-02 16:24:12 +01:00
}
//var_dump($elementList);
2016-01-24 21:17:11 +01:00
/*
2017-07-09 22:30:19 +02:00
* Show website list
2016-01-24 21:17:11 +01:00
*/
2016-02-02 16:24:12 +01:00
if ( $id )
{
// Complete requete recherche valeurs avec critere de tri
$sql = $tabsql [ $id ];
2019-01-27 11:55:16 +01:00
$sql .= $db -> order ( $sortfield , $sortorder );
2017-07-17 16:45:24 +02:00
$sql .= $db -> plimit ( $limit + 1 , $offset );
2016-02-02 16:24:12 +01:00
//print $sql;
2019-01-27 11:55:16 +01:00
$fieldlist = explode ( ',' , $tabfield [ $id ]);
2016-02-02 16:24:12 +01:00
2017-07-03 02:09:14 +02:00
print '<form action="' . $_SERVER [ 'PHP_SELF' ] . '" method="POST">' ;
2016-02-02 16:24:12 +01:00
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<table class="noborder" width="100%">' ;
// Form to add a new line
if ( $tabname [ $id ])
{
$alabelisused = 0 ;
$var = false ;
2019-01-27 11:55:16 +01:00
$fieldlist = explode ( ',' , $tabfield [ $id ]);
2016-02-02 16:24:12 +01:00
// Line for title
print '<tr class="liste_titre">' ;
foreach ( $fieldlist as $field => $value )
{
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$valuetoshow = ucfirst ( $fieldlist [ $field ]); // Par defaut
$valuetoshow = $langs -> trans ( $valuetoshow ); // try to translate
2017-04-28 13:10:08 +02:00
$align = '' ;
2016-02-02 16:24:12 +01:00
if ( $fieldlist [ $field ] == 'lang' ) { $valuetoshow = $langs -> trans ( " Language " ); }
if ( $valuetoshow != '' )
{
2017-04-28 13:10:08 +02:00
print '<td class="' . $align . '">' ;
2019-01-27 11:55:16 +01:00
if ( ! empty ( $tabhelp [ $id ][ $value ]) && preg_match ( '/^http(s*):/i' , $tabhelp [ $id ][ $value ])) print '<a href="' . $tabhelp [ $id ][ $value ] . '" target="_blank">' . $valuetoshow . ' ' . img_help ( 1 , $valuetoshow ) . '</a>' ;
2017-07-21 12:42:21 +02:00
elseif ( ! empty ( $tabhelp [ $id ][ $value ]))
{
if ( $value == 'virtualhost' ) print $form -> textwithpicto ( $valuetoshow , $tabhelp [ $id ][ $value ], 1 , 'help' , '' , 0 , 2 , 'tooltipvirtual' );
else print $form -> textwithpicto ( $valuetoshow , $tabhelp [ $id ][ $value ]);
}
2016-02-02 16:24:12 +01:00
else print $valuetoshow ;
print '</td>' ;
2019-02-03 14:29:45 +01:00
}
if ( $fieldlist [ $field ] == 'libelle' || $fieldlist [ $field ] == 'label' ) $alabelisused = 1 ;
2016-02-02 16:24:12 +01:00
}
print '<td colspan="4">' ;
print '</td>' ;
print '</tr>' ;
// Line to enter new values
print " <tr " . $bcnd [ $var ] . " > " ;
$obj = new stdClass ();
// If data was already input, we define them in obj to populate input fields.
2019-01-27 11:55:16 +01:00
if ( GETPOST ( 'actionadd' , 'alpha' ))
2016-02-02 16:24:12 +01:00
{
foreach ( $fieldlist as $key => $val )
{
2019-01-27 11:55:16 +01:00
if ( GETPOST ( $val , 'alpha' ))
2016-02-02 16:24:12 +01:00
$obj -> $val = GETPOST ( $val );
}
}
2019-01-27 11:55:16 +01:00
fieldListWebsites ( $fieldlist , $obj , $tabname [ $id ], 'add' );
2016-02-02 16:24:12 +01:00
2019-01-31 12:42:38 +01:00
print '<td colspan="3" class="right">' ;
2016-02-02 16:24:12 +01:00
if ( $action != 'edit' )
{
print '<input type="submit" class="button" name="actionadd" value="' . $langs -> trans ( " Add " ) . '">' ;
}
print '</td>' ;
print " </tr> " ;
$colspan = count ( $fieldlist ) + 2 ;
}
2017-04-28 13:10:08 +02:00
print '</table>' ;
2016-02-02 16:24:12 +01:00
print '</form>' ;
2017-07-09 22:30:19 +02:00
// List of websites in database
2016-02-02 16:24:12 +01:00
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
if ( $num )
{
2017-04-28 13:10:08 +02:00
print '<br>' ;
2017-07-03 02:09:14 +02:00
print '<form action="' . $_SERVER [ 'PHP_SELF' ] . '" method="POST">' ;
2017-04-28 13:10:08 +02:00
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<input type="hidden" name="page" value="' . $page . '">' ;
print '<input type="hidden" name="rowid" value="' . $rowid . '">' ;
2017-07-03 02:09:14 +02:00
2017-04-28 13:10:08 +02:00
print '<table class="noborder" width="100%">' ;
2017-07-03 02:09:14 +02:00
2016-02-02 16:24:12 +01:00
// Title of lines
print '<tr class="liste_titre">' ;
foreach ( $fieldlist as $field => $value )
{
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$showfield = 1 ; // Par defaut
$align = " left " ;
$sortable = 1 ;
$valuetoshow = '' ;
/*
$tmparray = getLabelOfField ( $fieldlist [ $field ]);
$showfield = $tmp [ 'showfield' ];
$valuetoshow = $tmp [ 'valuetoshow' ];
$align = $tmp [ 'align' ];
$sortable = $tmp [ 'sortable' ];
*/
$valuetoshow = ucfirst ( $fieldlist [ $field ]); // Par defaut
$valuetoshow = $langs -> trans ( $valuetoshow ); // try to translate
if ( $fieldlist [ $field ] == 'lang' ) { $valuetoshow = $langs -> trans ( " Language " ); }
if ( $fieldlist [ $field ] == 'type' ) { $valuetoshow = $langs -> trans ( " Type " ); }
if ( $fieldlist [ $field ] == 'code' ) { $valuetoshow = $langs -> trans ( " Code " ); }
// Affiche nom du champ
if ( $showfield )
{
2019-01-27 11:55:16 +01:00
print getTitleFieldOfList ( $valuetoshow , 0 , $_SERVER [ " PHP_SELF " ], ( $sortable ? $fieldlist [ $field ] : '' ), ( $page ? 'page=' . $page . '&' : '' ), " " , " align= " . $align , $sortfield , $sortorder );
2016-02-02 16:24:12 +01:00
}
}
2019-01-27 11:55:16 +01:00
print getTitleFieldOfList ( $langs -> trans ( " Status " ), 0 , $_SERVER [ " PHP_SELF " ], " status " , ( $page ? 'page=' . $page . '&' : '' ), " " , 'align="center"' , $sortfield , $sortorder );
2016-02-02 16:24:12 +01:00
print getTitleFieldOfList ( '' );
print getTitleFieldOfList ( '' );
print '</tr>' ;
// Lines with values
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
//print_r($obj);
2017-04-28 13:10:08 +02:00
print '<tr class="oddeven" id="rowid-' . $obj -> rowid . '">' ;
2016-02-02 16:24:12 +01:00
if ( $action == 'edit' && ( $rowid == ( ! empty ( $obj -> rowid ) ? $obj -> rowid : $obj -> code )))
{
$tmpaction = 'edit' ;
$parameters = array ( 'fieldlist' => $fieldlist , 'tabname' => $tabname [ $id ]);
2019-01-27 11:55:16 +01:00
$reshook = $hookmanager -> executeHooks ( 'editWebsiteFieldlist' , $parameters , $obj , $tmpaction ); // Note that $action and $object may have been modified by some hooks
2016-02-02 16:24:12 +01:00
$error = $hookmanager -> error ; $errors = $hookmanager -> errors ;
2019-01-27 11:55:16 +01:00
if ( empty ( $reshook )) fieldListWebsites ( $fieldlist , $obj , $tabname [ $id ], 'edit' );
2016-02-02 16:24:12 +01:00
2019-01-31 12:42:38 +01:00
print '<td colspan="3" class="right"><a name="' . ( ! empty ( $obj -> rowid ) ? $obj -> rowid : $obj -> code ) . '"> </a><input type="submit" class="button" name="actionmodify" value="' . $langs -> trans ( " Modify " ) . '">' ;
2016-02-02 16:24:12 +01:00
print ' <input type="submit" class="button" name="actioncancel" value="' . $langs -> trans ( " Cancel " ) . '"></td>' ;
}
else
{
$tmpaction = 'view' ;
$parameters = array ( 'var' => $var , 'fieldlist' => $fieldlist , 'tabname' => $tabname [ $id ]);
2019-01-27 11:55:16 +01:00
$reshook = $hookmanager -> executeHooks ( 'viewWebsiteFieldlist' , $parameters , $obj , $tmpaction ); // Note that $action and $object may have been modified by some hooks
2016-02-02 16:24:12 +01:00
$error = $hookmanager -> error ; $errors = $hookmanager -> errors ;
if ( empty ( $reshook ))
{
foreach ( $fieldlist as $field => $value )
{
$showfield = 1 ;
$align = " left " ;
2016-10-31 21:24:23 +01:00
$fieldname = $fieldlist [ $field ];
$valuetoshow = $obj -> $fieldname ;
2016-02-02 16:24:12 +01:00
// Show value for field
if ( $showfield ) print '<td align="' . $align . '">' . $valuetoshow . '</td>' ;
}
}
// Can an entry be erased or disabled ?
2017-12-19 11:40:29 +01:00
$iserasable = 1 ; $isdisable = 1 ; // true by default
if ( $obj -> status ) $iserasable = 0 ; // We can't delete a website on. Disable it first.
2016-02-02 16:24:12 +01:00
2017-07-03 02:09:14 +02:00
$url = $_SERVER [ " PHP_SELF " ] . '?' . ( $page ? 'page=' . $page . '&' : '' ) . 'sortfield=' . $sortfield . '&sortorder=' . $sortorder . '&rowid=' . ( ! empty ( $obj -> rowid ) ? $obj -> rowid : ( ! empty ( $obj -> code ) ? $obj -> code : '' )) . '&code=' . ( ! empty ( $obj -> code ) ? urlencode ( $obj -> code ) : '' ) . '&' ;
2016-02-02 16:24:12 +01:00
// Active
print '<td align="center" class="nowrap">' ;
2019-08-19 18:34:54 +02:00
print '<a class="reposition" href="' . $url . 'action=' . $acts [( $obj -> status ? 1 : 0 )] . '">' . $actl [( $obj -> status ? 1 : 0 )] . '</a>' ;
2016-02-02 16:24:12 +01:00
print " </td> " ;
// Modify link
2017-12-19 11:40:29 +01:00
print '<td align="center"><a class="reposition" href="' . $url . 'action=edit">' . img_edit () . '</a></td>' ;
2016-02-02 16:24:12 +01:00
// Delete link
2019-08-19 18:34:54 +02:00
if ( $iserasable ) print '<td align="center"><a class="reposition" href="' . $url . 'action=delete">' . img_delete () . '</a></td>' ;
2017-12-19 11:40:29 +01:00
else print '<td align="center">' . img_delete ( $langs -> trans ( " DisableSiteFirst " ), 'class="opacitymedium"' ) . '</td>' ;
2016-02-02 16:24:12 +01:00
print " </tr> \n " ;
}
$i ++ ;
}
2017-07-03 02:09:14 +02:00
2017-04-28 13:10:08 +02:00
print '</table>' ;
2017-07-03 02:09:14 +02:00
2017-04-28 13:10:08 +02:00
print '</form>' ;
2016-02-02 16:24:12 +01:00
}
}
else {
dol_print_error ( $db );
}
}
2016-01-24 21:17:11 +01:00
2018-02-10 12:15:24 +01:00
dol_fiche_end ();
2018-07-29 10:29:12 +02:00
// End of page
2016-02-02 16:24:12 +01:00
llxFooter ();
$db -> close ();
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
/**
* Show fields in insert / edit mode
*
* @ param array $fieldlist Array of fields
* @ param Object $obj If we show a particular record , obj is filled with record fields
* @ param string $tabname Name of SQL table
* @ param string $context 'add' = Output field for the " add form " , 'edit' = Output field for the " edit form " , 'hide' = Output field for the " add form " but we dont want it to be rendered
* @ return void
*/
2019-01-27 15:20:16 +01:00
function fieldListWebsites ( $fieldlist , $obj = '' , $tabname = '' , $context = '' )
2016-02-02 16:24:12 +01:00
{
global $conf , $langs , $db ;
global $form ;
global $region_id ;
global $elementList , $sourceList , $localtax_typeList ;
global $bc ;
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
$formadmin = new FormAdmin ( $db );
2016-01-24 21:17:11 +01:00
2016-02-02 16:24:12 +01:00
foreach ( $fieldlist as $field => $value )
{
2016-10-31 21:24:23 +01:00
$fieldname = $fieldlist [ $field ];
2016-02-24 17:09:04 +01:00
if ( $fieldlist [ $field ] == 'lang' )
2016-02-02 16:24:12 +01:00
{
print '<td>' ;
2019-01-27 11:55:16 +01:00
print $formadmin -> select_language ( $conf -> global -> MAIN_LANG_DEFAULT , 'lang' );
2016-02-02 16:24:12 +01:00
print '</td>' ;
}
2016-10-31 21:24:23 +01:00
elseif ( $fieldlist [ $field ] == 'code' && isset ( $obj -> $fieldname )) {
print '<td><input type="text" class="flat" value="' . ( ! empty ( $obj -> $fieldname ) ? $obj -> $fieldname : '' ) . '" size="10" name="' . $fieldlist [ $field ] . '"></td>' ;
2016-02-02 16:24:12 +01:00
}
else
{
print '<td>' ;
$size = '' ;
if ( $fieldlist [ $field ] == 'code' ) $size = 'size="8" ' ;
if ( $fieldlist [ $field ] == 'position' ) $size = 'size="4" ' ;
if ( $fieldlist [ $field ] == 'libelle' ) $size = 'size="32" ' ;
if ( $fieldlist [ $field ] == 'tracking' ) $size = 'size="92" ' ;
if ( $fieldlist [ $field ] == 'sortorder' ) $size = 'size="2" ' ;
2016-10-31 21:24:23 +01:00
print '<input type="text" ' . $size . ' class="flat" value="' . ( isset ( $obj -> $fieldname ) ? $obj -> $fieldname : '' ) . '" name="' . $fieldlist [ $field ] . '">' ;
2016-02-02 16:24:12 +01:00
print '</td>' ;
}
}
}