2005-10-30 15:02:38 +01:00
< ? php
2018-12-16 13:36:51 +01:00
/* Copyright ( C ) 2005 - 2018 Laurent Destailleur < eldy @ users . sourceforge . net >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2012-10-25 22:30:17 +02:00
* Copyright ( C ) 2012 Marcos GarcÃa < marcosgdf @ gmail . com >
* Copyright ( C ) 2012 Charles - Fr BENKE < charles . fr @ benke . fr >
2015-08-25 21:59:46 +02:00
* Copyright ( C ) 2015 Juanjo Menent < jmenent @ 2 byte . es >
2005-10-30 15:02: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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2005-10-30 15:02:38 +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
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
2005-10-30 15:02:38 +01:00
*/
/**
2009-05-19 02:14:27 +02:00
* \file htdocs / exports / export . php
* \ingroup export
2011-02-05 19:40:52 +01:00
* \brief Pages of export Wizard
2009-05-19 02:14:27 +02:00
*/
2009-03-03 01:42:40 +01:00
2012-08-22 23:11:24 +02:00
require_once '../main.inc.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formfile.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formother.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/exports/class/export.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/modules/export/modules_export.php' ;
2012-10-29 10:36:26 +01:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
2006-01-22 17:14:33 +01:00
2018-05-26 20:51:17 +02:00
// Load translation files required by the page
2020-02-18 12:22:25 +01:00
$langs -> loadlangs ( array ( 'admin' , 'exports' , 'other' , 'users' , 'companies' , 'projects' , 'suppliers' , 'products' , 'bank' , 'bills' ));
2005-10-30 15:02:38 +01:00
2009-05-22 17:57:47 +02:00
// Everybody should be able to go on this page
//if (! $user->admin)
// accessforbidden();
2005-10-30 15:02:38 +01:00
2020-12-03 19:45:36 +01:00
// Map icons, array duplicated in import.php, was not synchronized, TODO put it somewhere only once
2012-08-16 13:07:12 +02:00
$entitytoicon = array (
'invoice' => 'bill' ,
2020-10-31 14:32:18 +01:00
'invoice_line' => 'bill' ,
2012-08-16 13:07:12 +02:00
'order' => 'order' ,
2020-10-31 14:32:18 +01:00
'order_line' => 'order' ,
2012-08-16 13:07:12 +02:00
'propal' => 'propal' ,
2020-10-31 14:32:18 +01:00
'propal_line' => 'propal' ,
2012-08-16 13:07:12 +02:00
'intervention' => 'intervention' ,
2020-10-31 14:32:18 +01:00
'inter_line' => 'intervention' ,
2012-08-16 13:07:12 +02:00
'member' => 'user' ,
2020-10-31 14:32:18 +01:00
'member_type' => 'group' ,
'subscription' => 'payment' ,
'payment' => 'payment' ,
2012-08-16 13:07:12 +02:00
'tax' => 'generic' ,
2021-02-25 22:50:40 +01:00
'tax_type' => 'generic' ,
'other' => 'generic' ,
2012-08-16 13:07:12 +02:00
'account' => 'account' ,
'product' => 'product' ,
2020-10-31 14:32:18 +01:00
'virtualproduct' => 'product' ,
2017-01-29 21:25:29 +01:00
'subproduct' => 'product' ,
2018-05-23 17:48:18 +02:00
'product_supplier_ref' => 'product' ,
2021-02-25 22:50:40 +01:00
'stock' => 'stock' ,
2018-05-23 17:48:18 +02:00
'warehouse' => 'stock' ,
2017-11-24 17:44:19 +01:00
'batch' => 'stock' ,
'stockbatch' => 'stock' ,
2012-08-16 13:07:12 +02:00
'category' => 'category' ,
2012-11-18 15:24:01 +01:00
'shipment' => 'sending' ,
2020-10-31 14:32:18 +01:00
'shipment_line' => 'sending' ,
'reception' => 'sending' ,
'reception_line' => 'sending' ,
2018-02-09 16:08:28 +01:00
'expensereport' => 'trip' ,
2020-10-31 14:32:18 +01:00
'expensereport_line' => 'trip' ,
2018-02-09 16:08:28 +01:00
'holiday' => 'holiday' ,
2020-10-31 14:32:18 +01:00
'contract_line' => 'contract' ,
'translation' => 'generic' ,
'bomm' => 'bom' ,
'bomline' => 'bom'
2012-08-16 13:07:12 +02:00
);
2020-12-03 19:45:36 +01:00
// Translation code, array duplicated in import.php, was not synchronized, TODO put it somewhere only once
2012-08-16 13:07:12 +02:00
$entitytolang = array (
'user' => 'User' ,
'company' => 'Company' ,
2020-10-31 14:32:18 +01:00
'contact' => 'Contact' ,
2012-08-16 13:07:12 +02:00
'invoice' => 'Bill' ,
2020-10-31 14:32:18 +01:00
'invoice_line' => 'InvoiceLine' ,
2012-08-16 13:07:12 +02:00
'order' => 'Order' ,
2020-10-31 14:32:18 +01:00
'order_line' => 'OrderLine' ,
'propal' => 'Proposal' ,
'propal_line' => 'ProposalLine' ,
2012-08-16 13:07:12 +02:00
'intervention' => 'Intervention' ,
2020-10-31 14:32:18 +01:00
'inter_line' => 'InterLine' ,
2012-08-16 13:07:12 +02:00
'member' => 'Member' ,
2020-10-31 14:32:18 +01:00
'member_type' => 'MemberType' ,
'subscription' => 'Subscription' ,
2012-08-16 13:07:12 +02:00
'tax' => 'SocialContribution' ,
2020-10-31 14:32:18 +01:00
'tax_type' => 'DictionarySocialContributions' ,
2012-08-16 13:07:12 +02:00
'account' => 'BankTransactions' ,
'payment' => 'Payment' ,
'product' => 'Product' ,
2017-01-29 21:25:29 +01:00
'virtualproduct' => 'AssociatedProducts' ,
'subproduct' => 'SubProduct' ,
2018-05-23 17:48:18 +02:00
'product_supplier_ref' => 'SupplierPrices' ,
'service' => 'Service' ,
2020-10-31 14:32:18 +01:00
'stock' => 'Stock' ,
2017-10-20 14:52:01 +02:00
'movement' => 'StockMovement' ,
2017-11-24 17:44:19 +01:00
'batch' => 'Batch' ,
'stockbatch' => 'StockDetailPerBatch' ,
2015-04-08 18:40:10 +02:00
'warehouse' => 'Warehouse' ,
2012-08-16 13:07:12 +02:00
'category' => 'Category' ,
'other' => 'Other' ,
2020-10-31 14:32:18 +01:00
'trip' => 'TripsAndExpenses' ,
'shipment' => 'Shipments' ,
'shipment_line' => 'ShipmentLine' ,
'project' => 'Projects' ,
'projecttask' => 'Tasks' ,
'task_time' => 'TaskTimeSpent' ,
2015-03-26 11:20:39 +01:00
'action' => 'Event' ,
2015-02-22 13:16:49 +01:00
'expensereport' => 'ExpenseReport' ,
2015-08-26 21:01:01 +02:00
'expensereport_line' => 'ExpenseReportLine' ,
2018-02-09 16:08:28 +01:00
'holiday' => 'TitreRequestCP' ,
'contract' => 'Contract' ,
2020-10-31 14:32:18 +01:00
'contract_line' => 'ContractLine' ,
'translation' => 'Translation' ,
'bom' => 'BOM' ,
'bomline' => 'BOMLine'
2012-08-16 13:07:12 +02:00
);
2006-02-25 15:26:29 +01:00
2019-11-13 19:35:02 +01:00
$array_selected = isset ( $_SESSION [ " export_selected_fields " ]) ? $_SESSION [ " export_selected_fields " ] : array ();
$array_filtervalue = isset ( $_SESSION [ " export_filtered_fields " ]) ? $_SESSION [ " export_filtered_fields " ] : array ();
$datatoexport = GETPOST ( " datatoexport " , " aZ09 " );
2020-09-16 19:39:50 +02:00
$action = GETPOST ( 'action' , 'aZ09' );
2019-11-13 19:35:02 +01:00
$confirm = GETPOST ( 'confirm' , 'alpha' );
$step = GETPOST ( " step " , " int " ) ? GETPOST ( " step " , " int " ) : 1 ;
$export_name = GETPOST ( " export_name " , " alphanohtml " );
$hexa = GETPOST ( " hexa " , " alpha " );
$exportmodelid = GETPOST ( " exportmodelid " , " int " );
$field = GETPOST ( " field " , " alpa " );
$objexport = new Export ( $db );
2019-01-27 11:55:16 +01:00
$objexport -> load_arrays ( $user , $datatoexport );
2006-01-22 17:14:33 +01:00
2019-11-13 19:35:02 +01:00
$objmodelexport = new ModeleExports ( $db );
2011-11-08 10:18:45 +01:00
$form = new Form ( $db );
2008-10-25 19:27:15 +02:00
$htmlother = new FormOther ( $db );
2008-01-20 14:53:02 +01:00
$formfile = new FormFile ( $db );
2019-11-13 19:35:02 +01:00
$sqlusedforexport = '' ;
2005-10-30 15:02:38 +01:00
2020-02-11 10:38:09 +01:00
$head = array ();
2012-10-29 10:36:26 +01:00
$upload_dir = $conf -> export -> dir_temp . '/' . $user -> id ;
2019-11-13 19:35:02 +01:00
$usefilters = 1 ;
2012-11-14 00:27:25 +01:00
2021-03-20 19:30:08 +01:00
// Security check
$result = restrictedArea ( $user , 'export' );
2006-01-08 18:08:20 +01:00
/*
* Actions
*/
2009-03-03 01:42:40 +01:00
2021-02-25 22:50:40 +01:00
if ( $action == 'selectfield' ) { // Selection of field at step 2
2019-11-13 19:35:02 +01:00
$fieldsarray = $objexport -> array_export_fields [ 0 ];
$fieldsentitiesarray = $objexport -> array_export_entities [ 0 ];
2020-10-31 14:32:18 +01:00
$fieldsdependenciesarray = $objexport -> array_export_dependencies [ 0 ];
2012-07-24 16:19:46 +02:00
2021-02-25 22:50:40 +01:00
if ( $field == 'all' ) {
foreach ( $fieldsarray as $key => $val ) {
if ( ! empty ( $array_selected [ $key ])) {
continue ; // If already selected, check next
}
2019-11-13 19:35:02 +01:00
$array_selected [ $key ] = count ( $array_selected ) + 1 ;
2020-10-31 14:32:18 +01:00
//print_r($array_selected);
$_SESSION [ " export_selected_fields " ] = $array_selected ;
2008-05-17 00:50:38 +02:00
}
2020-10-31 14:32:18 +01:00
} else {
$warnings = array ();
2012-07-27 16:03:20 +02:00
2020-10-31 14:32:18 +01:00
$array_selected [ $field ] = count ( $array_selected ) + 1 ; // We tag the key $field as "selected"
// We check if there is a dependency to activate
/* var_dump ( $field );
2021-02-25 22:50:40 +01:00
var_dump ( $fieldsentitiesarray [ $field ]);
var_dump ( $fieldsdependenciesarray ); */
2020-10-31 14:32:18 +01:00
$listofdependencies = array ();
2021-02-25 22:50:40 +01:00
if ( ! empty ( $fieldsentitiesarray [ $field ]) && ! empty ( $fieldsdependenciesarray [ $fieldsentitiesarray [ $field ]])) {
2020-10-31 14:32:18 +01:00
// We found a dependency on the type of field
$tmp = $fieldsdependenciesarray [ $fieldsentitiesarray [ $field ]]; // $fieldsdependenciesarray=array('element'=>'fd.rowid') or array('element'=>array('fd.rowid','ab.rowid'))
2021-02-25 22:50:40 +01:00
if ( is_array ( $tmp )) {
$listofdependencies = $tmp ;
} else {
$listofdependencies = array ( $tmp );
}
} elseif ( ! empty ( $field ) && ! empty ( $fieldsdependenciesarray [ $field ])) {
2020-10-31 14:32:18 +01:00
// We found a dependency on a dedicated field
$tmp = $fieldsdependenciesarray [ $field ]; // $fieldsdependenciesarray=array('fd.fieldx'=>'fd.rowid') or array('fd.fieldx'=>array('fd.rowid','ab.rowid'))
2021-02-25 22:50:40 +01:00
if ( is_array ( $tmp )) {
$listofdependencies = $tmp ;
} else {
$listofdependencies = array ( $tmp );
}
2020-10-31 14:32:18 +01:00
}
2021-02-25 22:50:40 +01:00
if ( count ( $listofdependencies )) {
foreach ( $listofdependencies as $fieldid ) {
if ( empty ( $array_selected [ $fieldid ])) {
2020-10-31 14:32:18 +01:00
$array_selected [ $fieldid ] = count ( $array_selected ) + 1 ; // We tag the key $fieldid as "selected"
$warnings [] = $langs -> trans ( " ExportFieldAutomaticallyAdded " , $langs -> transnoentitiesnoconv ( $fieldsarray [ $fieldid ]));
}
}
}
//print_r($array_selected);
$_SESSION [ " export_selected_fields " ] = $array_selected ;
setEventMessages ( $warnings , null , 'warnings' );
}
2006-01-08 18:08:20 +01:00
}
2021-02-25 22:50:40 +01:00
if ( $action == 'unselectfield' ) {
if ( $_GET [ " field " ] == 'all' ) {
2019-11-13 19:35:02 +01:00
$array_selected = array ();
$_SESSION [ " export_selected_fields " ] = $array_selected ;
2020-10-31 14:32:18 +01:00
} else {
unset ( $array_selected [ $_GET [ " field " ]]);
// Renumber fields of array_selected (from 1 to nb_elements)
asort ( $array_selected );
$i = 0 ;
$array_selected_save = $array_selected ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $value ) {
2020-10-31 14:32:18 +01:00
$i ++ ;
$array_selected [ $code ] = $i ;
//print "x $code x $i y<br>";
}
$_SESSION [ " export_selected_fields " ] = $array_selected ;
}
2006-01-21 20:08:36 +01:00
}
2012-10-25 22:30:17 +02:00
2021-02-25 22:50:40 +01:00
if ( $action == 'downfield' || $action == 'upfield' ) {
2020-10-31 14:32:18 +01:00
$pos = $array_selected [ $_GET [ " field " ]];
2021-02-25 22:50:40 +01:00
if ( $action == 'downfield' ) {
$newpos = $pos + 1 ;
}
if ( $action == 'upfield' ) {
$newpos = $pos - 1 ;
}
2020-10-31 14:32:18 +01:00
// Recherche code avec qui switcher
$newcode = " " ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $value ) {
if ( $value == $newpos ) {
2020-10-31 14:32:18 +01:00
$newcode = $code ;
break ;
}
}
//print("Switch pos=$pos (code=".$_GET["field"].") and newpos=$newpos (code=$newcode)");
2021-02-25 22:50:40 +01:00
if ( $newcode ) { // Si newcode trouve (protection contre resoumission de page)
2020-10-31 14:32:18 +01:00
$array_selected [ $_GET [ " field " ]] = $newpos ;
$array_selected [ $newcode ] = $pos ;
$_SESSION [ " export_selected_fields " ] = $array_selected ;
}
2006-01-08 18:08:20 +01:00
}
2006-01-21 20:08:36 +01:00
2021-02-25 22:50:40 +01:00
if ( $step == 1 || $action == 'cleanselect' ) {
2020-10-31 14:32:18 +01:00
$_SESSION [ " export_selected_fields " ] = array ();
$_SESSION [ " export_filtered_fields " ] = array ();
$array_selected = array ();
$array_filtervalue = array ();
2006-01-08 18:08:20 +01:00
}
2005-11-19 23:09:12 +01:00
2021-02-25 22:50:40 +01:00
if ( $action == 'builddoc' ) {
2021-02-03 18:00:27 +01:00
$max_execution_time_for_importexport = ( empty ( $conf -> global -> EXPORT_MAX_EXECUTION_TIME ) ? 300 : $conf -> global -> EXPORT_MAX_EXECUTION_TIME ); // 5mn if not defined
2020-10-31 14:32:18 +01:00
$max_time = @ ini_get ( " max_execution_time " );
2021-02-25 22:50:40 +01:00
if ( $max_time && $max_time < $max_execution_time_for_importexport ) {
2021-02-03 18:00:27 +01:00
dol_syslog ( " max_execution_time= " . $max_time . " is lower than max_execution_time_for_importexport= " . $max_execution_time_for_importexport . " . We try to increase it dynamically. " );
@ ini_set ( " max_execution_time " , $max_execution_time_for_importexport ); // This work only if safe mode is off. also web servers has timeout of 300
2020-10-31 14:32:18 +01:00
}
// Build export file
2019-11-13 19:35:02 +01:00
$result = $objexport -> build_file ( $user , GETPOST ( 'model' , 'alpha' ), $datatoexport , $array_selected , $array_filtervalue );
2021-02-25 22:50:40 +01:00
if ( $result < 0 ) {
2015-12-08 11:35:08 +01:00
setEventMessages ( $objexport -> error , $objexport -> errors , 'errors' );
2019-11-13 19:35:02 +01:00
$sqlusedforexport = $objexport -> sqlusedforexport ;
2020-05-21 15:05:19 +02:00
} else {
2015-12-08 11:35:08 +01:00
setEventMessages ( $langs -> trans ( " FileSuccessfullyBuilt " ), null , 'mesgs' );
2020-10-31 14:32:18 +01:00
$sqlusedforexport = $objexport -> sqlusedforexport ;
}
2006-01-21 20:08:36 +01:00
}
2012-10-29 10:36:26 +01:00
// Delete file
2021-02-25 22:50:40 +01:00
if ( $step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes' ) {
2019-11-13 19:35:02 +01:00
$file = $upload_dir . " / " . GETPOST ( 'file' ); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
2012-10-29 10:36:26 +01:00
2019-11-13 19:35:02 +01:00
$ret = dol_delete_file ( $file );
2021-02-25 22:50:40 +01:00
if ( $ret ) {
setEventMessages ( $langs -> trans ( " FileWasRemoved " , GETPOST ( 'file' )), null , 'mesgs' );
} else {
setEventMessages ( $langs -> trans ( " ErrorFailToDeleteFile " , GETPOST ( 'file' )), null , 'errors' );
}
2012-10-29 10:36:26 +01:00
header ( 'Location: ' . $_SERVER [ " PHP_SELF " ] . '?step=' . $step . '&datatoexport=' . $datatoexport );
exit ;
}
2021-02-25 22:50:40 +01:00
if ( $action == 'deleteprof' ) {
if ( GETPOST ( " id " , 'int' )) {
2020-09-30 18:39:23 +02:00
$objexport -> fetch ( GETPOST ( 'id' , 'int' ));
2019-11-13 19:35:02 +01:00
$result = $objexport -> delete ( $user );
2008-12-04 21:27:01 +01:00
}
}
2012-11-21 20:24:15 +01:00
// TODO The export for filter is not yet implemented (old code created conflicts with step 2). We must use same way of working and same combo list of predefined export than step 2.
2021-02-25 22:50:40 +01:00
if ( $action == 'add_export_model' ) {
if ( $export_name ) {
2007-03-24 17:46:02 +01:00
asort ( $array_selected );
// Set save string
2019-11-13 19:35:02 +01:00
$hexa = '' ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $key => $val ) {
if ( $hexa ) {
$hexa .= ',' ;
}
2019-11-13 19:35:02 +01:00
$hexa .= $key ;
2007-03-24 17:46:02 +01:00
}
2019-11-13 19:35:02 +01:00
$hexafiltervalue = '' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $array_filtervalue ) && is_array ( $array_filtervalue )) {
foreach ( $array_filtervalue as $key => $val ) {
if ( $hexafiltervalue ) {
$hexafiltervalue .= ',' ;
}
2019-11-13 19:35:02 +01:00
$hexafiltervalue .= $key . '=' . $val ;
2015-06-24 18:29:29 +02:00
}
2012-10-25 22:30:17 +02:00
}
2015-07-29 12:10:04 +02:00
2020-10-31 14:32:18 +01:00
$objexport -> model_name = $export_name ;
$objexport -> datatoexport = $datatoexport ;
$objexport -> hexa = $hexa ;
$objexport -> hexafiltervalue = $hexafiltervalue ;
2021-06-21 15:03:45 +02:00
$objexport -> fk_user = ( GETPOST ( 'visibility' , 'aZ09' ) == 'all' ? 0 : $user -> id );
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
$result = $objexport -> create ( $user );
2021-02-25 22:50:40 +01:00
if ( $result >= 0 ) {
2019-01-27 11:55:16 +01:00
setEventMessages ( $langs -> trans ( " ExportModelSaved " , $objexport -> model_name ), null , 'mesgs' );
2020-05-21 15:05:19 +02:00
} else {
2008-12-04 21:27:01 +01:00
$langs -> load ( " errors " );
2021-02-25 22:50:40 +01:00
if ( $objexport -> errno == 'DB_ERROR_RECORD_ALREADY_EXISTS' ) {
2015-12-08 11:35:08 +01:00
setEventMessages ( $langs -> trans ( " ErrorExportDuplicateProfil " ), null , 'errors' );
2021-02-25 22:50:40 +01:00
} else {
setEventMessages ( $objexport -> error , $objexport -> errors , 'errors' );
}
2007-03-24 17:46:02 +01:00
}
2020-05-21 15:05:19 +02:00
} else {
2015-10-17 17:09:34 +02:00
setEventMessages ( $langs -> trans ( " ErrorFieldRequired " , $langs -> transnoentities ( " ExportModelName " )), null , 'errors' );
2007-03-24 17:46:02 +01:00
}
2007-03-23 18:58:06 +01:00
}
2019-06-21 13:25:40 +02:00
// Reload a predefined export model
2021-02-25 22:50:40 +01:00
if ( $step == 2 && $action == 'select_model' ) {
2020-10-31 14:32:18 +01:00
$_SESSION [ " export_selected_fields " ] = array ();
$_SESSION [ " export_filtered_fields " ] = array ();
2012-10-25 22:30:17 +02:00
2020-10-31 14:32:18 +01:00
$array_selected = array ();
$array_filtervalue = array ();
2012-10-25 22:30:17 +02:00
2020-10-31 14:32:18 +01:00
$result = $objexport -> fetch ( $exportmodelid );
2021-02-25 22:50:40 +01:00
if ( $result > 0 ) {
2020-01-19 19:01:46 +01:00
$fieldsarray = preg_split ( " /,(?! [^(]* \ ))/ " , $objexport -> hexa );
2019-11-13 19:35:02 +01:00
$i = 1 ;
2021-02-25 22:50:40 +01:00
foreach ( $fieldsarray as $val ) {
2019-11-13 19:35:02 +01:00
$array_selected [ $val ] = $i ;
2007-03-24 17:46:02 +01:00
$i ++ ;
}
2019-11-13 19:35:02 +01:00
$_SESSION [ " export_selected_fields " ] = $array_selected ;
2012-10-25 22:30:17 +02:00
2019-11-13 19:35:02 +01:00
$fieldsarrayvalue = explode ( ',' , $objexport -> hexafiltervalue );
$i = 1 ;
2021-02-25 22:50:40 +01:00
foreach ( $fieldsarrayvalue as $val ) {
2019-11-13 19:35:02 +01:00
$tmp = explode ( '=' , $val );
$array_filtervalue [ $tmp [ 0 ]] = $tmp [ 1 ];
2012-10-25 22:30:17 +02:00
$i ++ ;
}
2019-11-13 19:35:02 +01:00
$_SESSION [ " export_filtered_fields " ] = $array_filtervalue ;
2020-10-31 14:32:18 +01:00
}
2007-03-23 18:58:06 +01:00
}
2012-11-20 15:56:44 +01:00
// Get form with filters
2021-02-25 22:50:40 +01:00
if ( $step == 4 && $action == 'submitFormField' ) {
2012-10-25 22:30:17 +02:00
// on boucle sur les champs selectionne pour recuperer la valeur
2021-02-25 22:50:40 +01:00
if ( is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2019-11-13 19:35:02 +01:00
$_SESSION [ " export_filtered_fields " ] = array ();
2021-02-25 22:50:40 +01:00
foreach ( $objexport -> array_export_TypeFields [ 0 ] as $code => $type ) { // $code: s.fieldname $value: Text|Boolean|List:ccc
2019-11-13 19:35:02 +01:00
$newcode = ( string ) preg_replace ( '/\./' , '_' , $code );
2022-02-22 23:44:56 +01:00
//print 'xxx '.$code."=".$newcode."=".$type."=".GETPOST($newcode)."\n<br>";
2022-01-26 12:53:06 +01:00
$check = 'alphanohtml' ;
2019-11-13 19:35:02 +01:00
$filterqualified = 1 ;
2022-01-26 12:53:06 +01:00
if ( ! GETPOSTISSET ( $newcode ) || GETPOST ( $newcode , $check ) == '' ) {
2021-02-25 22:50:40 +01:00
$filterqualified = 0 ;
2022-01-26 12:53:06 +01:00
} elseif ( preg_match ( '/^List/' , $type ) && ( is_numeric ( GETPOST ( $newcode , $check )) && GETPOST ( $newcode , $check ) <= 0 )) {
2021-02-25 22:50:40 +01:00
$filterqualified = 0 ;
}
if ( $filterqualified ) {
2012-11-20 15:56:44 +01:00
//print 'Filter on '.$newcode.' type='.$type.' value='.$_POST[$newcode]."\n";
2022-01-26 12:53:06 +01:00
$objexport -> array_export_FilterValue [ 0 ][ $code ] = GETPOST ( $newcode , $check );
2012-11-20 15:56:44 +01:00
}
2012-10-25 22:30:17 +02:00
}
2019-11-13 19:35:02 +01:00
$array_filtervalue = ( ! empty ( $objexport -> array_export_FilterValue [ 0 ]) ? $objexport -> array_export_FilterValue [ 0 ] : '' );
$_SESSION [ " export_filtered_fields " ] = $array_filtervalue ;
2012-10-25 22:30:17 +02:00
}
}
2006-01-21 20:08:36 +01:00
/*
2009-08-12 14:59:14 +02:00
* View
2006-01-21 20:08:36 +01:00
*/
2005-11-19 23:09:12 +01:00
2021-02-25 22:50:40 +01:00
if ( $step == 1 || ! $datatoexport ) {
2020-10-31 14:32:18 +01:00
llxHeader ( '' , $langs -> trans ( " NewExport " ), 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones' );
$h = 0 ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=1' ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 1 " ;
$hselected = $h ;
$h ++ ;
2020-12-16 16:06:33 +01:00
print dol_get_fiche_head ( $head , $hselected , '' , - 1 );
2020-10-31 14:32:18 +01:00
print '<div class="opacitymedium">' . $langs -> trans ( " SelectExportDataSet " ) . '</div><br>' ;
// Affiche les modules d'exports
print '<div class="div-table-responsive-no-min">' ; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " Module " ) . '</td>' ;
print '<td>' . $langs -> trans ( " ExportableDatas " ) . '</td>' ;
print '<td> </td>' ;
print '</tr>' ;
2021-02-25 22:50:40 +01:00
if ( count ( $objexport -> array_export_module )) {
2020-12-13 16:27:44 +01:00
asort ( $objexport -> array_export_code_for_sort );
//var_dump($objexport->array_export_code_for_sort);
//$sortedarrayofmodules = dol_sort_array($objexport->array_export_module, 'module_position', 'asc', 0, 0, 1);
2021-02-25 22:50:40 +01:00
foreach ( $objexport -> array_export_code_for_sort as $key => $value ) {
2020-10-31 14:32:18 +01:00
print '<tr class="oddeven"><td nospan="nospan">' ;
//print img_object($objexport->array_export_module[$key]->getName(),$export->array_export_module[$key]->picto).' ';
print $objexport -> array_export_module [ $key ] -> getName ();
print '</td><td>' ;
2020-12-03 19:45:36 +01:00
$entity = preg_replace ( '/:.*$/' , '' , $objexport -> array_export_icon [ $key ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
2019-11-13 19:35:02 +01:00
$label = $objexport -> array_export_label [ $key ];
2020-10-31 14:32:18 +01:00
//print $value.'-'.$icon.'-'.$label."<br>";
2020-12-13 16:27:44 +01:00
print img_object ( $objexport -> array_export_module [ $key ] -> getName (), $entityicon ) . ' ' ;
2020-10-31 14:32:18 +01:00
print $label ;
print '</td><td class="right">' ;
2020-12-13 16:27:44 +01:00
if ( $objexport -> array_export_perms [ $key ]) {
2020-10-31 14:32:18 +01:00
print '<a href="' . DOL_URL_ROOT . '/exports/export.php?step=2&module_position=' . $objexport -> array_export_module [ $key ] -> module_position . '&datatoexport=' . $objexport -> array_export_code [ $key ] . '">' . img_picto ( $langs -> trans ( " NewExport " ), 'next' , 'class="fa-15x"' ) . '</a>' ;
} else {
2021-03-20 19:16:44 +01:00
print '<span class="opacitymedium">' . $langs -> trans ( " NotEnoughPermissions " ) . '</span>' ;
2020-10-31 14:32:18 +01:00
}
2021-02-25 22:50:40 +01:00
print '</td></tr>' ;
2020-10-31 14:32:18 +01:00
}
} else {
print '<tr><td class="oddeven" colspan="3">' . $langs -> trans ( " NoExportableData " ) . '</td></tr>' ;
}
print '</table>' ;
print '</div>' ;
print '</div>' ;
2005-11-19 23:09:12 +01:00
}
2021-02-25 22:50:40 +01:00
if ( $step == 2 && $datatoexport ) {
2020-10-31 14:32:18 +01:00
llxHeader ( '' , $langs -> trans ( " NewExport " ), 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones' );
2008-04-01 14:09:33 +02:00
2020-10-31 14:32:18 +01:00
$h = 0 ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=1' ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 1 " ;
$h ++ ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 2 " ;
$hselected = $h ;
$h ++ ;
2009-03-03 01:42:40 +01:00
2020-12-16 16:06:33 +01:00
print dol_get_fiche_head ( $head , $hselected , '' , - 2 );
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
print '<div class="fichecenter">' ;
print '<div class="underbanner clearboth"></div>' ;
2019-03-04 10:42:09 +01:00
2020-10-31 14:32:18 +01:00
print '<table width="100%" class="border tableforfield">' ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
// Module
print '<tr><td class="titlefield">' . $langs -> trans ( " Module " ) . '</td>' ;
print '<td>' ;
print $objexport -> array_export_module [ 0 ] -> getName ();
print '</td></tr>' ;
2006-01-08 18:08:20 +01:00
2021-02-25 22:50:40 +01:00
// Lot de donnees a exporter
print '<tr><td>' . $langs -> trans ( " DatasetToExport " ) . '</td>' ;
print '<td>' ;
$entity = preg_replace ( '/:.*$/' , '' , $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
print img_object ( $objexport -> array_export_module [ 0 ] -> getName (), $entityicon ) . ' ' ;
print $objexport -> array_export_label [ 0 ];
print '</td></tr>' ;
2020-10-31 14:32:18 +01:00
print '</table>' ;
print '</div>' ;
print dol_get_fiche_end ();
print '<br>' ;
// Combo list of export models
print '<form action="' . $_SERVER [ " PHP_SELF " ] . '" method="post">' ;
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
print '<input type="hidden" name="action" value="select_model">' ;
print '<input type="hidden" name="step" value="2">' ;
print '<input type="hidden" name="datatoexport" value="' . $datatoexport . '">' ;
print '<div class="valignmiddle marginbottomonly">' ;
print '<span class="opacitymedium">' . $langs -> trans ( " SelectExportFields " ) . '</span> ' ;
2021-06-21 15:03:45 +02:00
$htmlother -> select_export_model ( $exportmodelid , 'exportmodelid' , $datatoexport , 1 , $user -> id );
2020-10-31 14:32:18 +01:00
print ' ' ;
print '<input type="submit" class="button" value="' . $langs -> trans ( " Select " ) . '">' ;
print '</div>' ;
print '</form>' ;
print '<div class="div-table-responsive-no-min">' ; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre">' ;
2006-02-25 15:26:29 +01:00
print '<td>' . $langs -> trans ( " Entities " ) . '</td>' ;
2020-10-31 14:32:18 +01:00
print '<td>' . $langs -> trans ( " ExportableFields " ) . '</td>' ;
print '<td width="100" class="center">' ;
print '<a class="liste_titre commonlink" title=' . $langs -> trans ( " All " ) . ' alt=' . $langs -> trans ( " All " ) . ' href="' . $_SERVER [ " PHP_SELF " ] . '?step=2&datatoexport=' . $datatoexport . '&action=selectfield&field=all">' . $langs -> trans ( " All " ) . " </a> " ;
print ' / ' ;
print '<a class="liste_titre commonlink" title=' . $langs -> trans ( " None " ) . ' alt=' . $langs -> trans ( " None " ) . ' href="' . $_SERVER [ " PHP_SELF " ] . '?step=2&datatoexport=' . $datatoexport . '&action=unselectfield&field=all">' . $langs -> trans ( " None " ) . " </a> " ;
print '</td>' ;
print '<td width="44%">' . $langs -> trans ( " ExportedFields " ) . '</td>' ;
print '</tr>' ;
// Champs exportables
$fieldsarray = $objexport -> array_export_fields [ 0 ];
// Select request if all fields are selected
$sqlmaxforexport = $objexport -> build_sql ( 0 , array (), array ());
2006-01-08 18:08:20 +01:00
2012-11-14 00:27:25 +01:00
// $this->array_export_module[0]=$module;
// $this->array_export_code[0]=$module->export_code[$r];
// $this->array_export_label[0]=$module->export_label[$r];
// $this->array_export_sql[0]=$module->export_sql[$r];
// $this->array_export_fields[0]=$module->export_fields_array[$r];
// $this->array_export_entities[0]=$module->export_fields_entities[$r];
// $this->array_export_alias[0]=$module->export_fields_alias[$r];
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
$i = 0 ;
2021-02-25 22:50:40 +01:00
foreach ( $fieldsarray as $code => $label ) {
2020-10-31 14:32:18 +01:00
print '<tr class="oddeven">' ;
$i ++ ;
$entity = ( ! empty ( $objexport -> array_export_entities [ 0 ][ $code ]) ? $objexport -> array_export_entities [ 0 ][ $code ] : $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
$entitylang = ( ! empty ( $entitytolang [ $entity ]) ? $entitytolang [ $entity ] : $entity );
print '<td class="nowrap">' ;
// If value of entityicon=entitylang='icon:Label'
//print $code.'-'.$label.'-'.$entity;
$tmparray = explode ( ':' , $entityicon );
2021-02-25 22:50:40 +01:00
if ( count ( $tmparray ) >= 2 ) {
2020-10-31 14:32:18 +01:00
$entityicon = $tmparray [ 0 ];
$entitylang = $tmparray [ 1 ];
}
print img_object ( '' , $entityicon ) . ' ' . $langs -> trans ( $entitylang );
print '</td>' ;
$text = ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '<i>' ) . $langs -> trans ( $label ) . ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '</i>' );
$tablename = getablenamefromfield ( $code , $sqlmaxforexport );
$htmltext = '<b>' . $langs -> trans ( " Name " ) . " :</b> " . $text . '<br>' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_special [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " ComputedField " ) . " -> " . $langs -> trans ( " Method " ) . " :</b> " . $objexport -> array_export_special [ 0 ][ $code ] . " <br> " ;
} else {
$htmltext .= '<b>' . $langs -> trans ( " Table " ) . " -> " . $langs -> trans ( " Field " ) . " :</b> " . $tablename . " -> " . preg_replace ( '/^.*\./' , '' , $code ) . " <br> " ;
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_examplevalues [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " SourceExample " ) . ':</b> ' . $objexport -> array_export_examplevalues [ 0 ][ $code ] . '<br>' ;
2015-09-10 12:34:00 +02:00
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_TypeFields [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Type " ) . ':</b> ' . $objexport -> array_export_TypeFields [ 0 ][ $code ] . '<br>' ;
2017-06-13 18:50:31 +02:00
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_help [ 0 ][ $code ])) {
2019-12-23 12:24:27 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Help " ) . ':</b> ' . $langs -> trans ( $objexport -> array_export_help [ 0 ][ $code ]) . '<br>' ;
}
2017-06-13 18:50:31 +02:00
2021-02-25 22:50:40 +01:00
if ( isset ( $array_selected [ $code ]) && $array_selected [ $code ]) {
2020-10-31 14:32:18 +01:00
// Selected fields
print '<td> </td>' ;
print '<td class="center"><a class="reposition" href="' . $_SERVER [ " PHP_SELF " ] . '?step=2&datatoexport=' . $datatoexport . '&action=unselectfield&field=' . $code . '">' . img_left ( 'default' , 0 , 'style="max-width: 20px"' ) . '</a></td>' ;
print '<td>' ;
//print $text.'-'.$htmltext."<br>";
print $form -> textwithpicto ( $text , $htmltext );
2009-10-03 14:08:48 +02:00
//print ' ('.$code.')';
2020-10-31 14:32:18 +01:00
print '</td>' ;
} else {
// Fields not selected
print '<td>' ;
2011-02-05 19:40:52 +01:00
//print $text.'-'.$htmltext."<br>";
2019-01-27 11:55:16 +01:00
print $form -> textwithpicto ( $text , $htmltext );
2009-10-03 14:08:48 +02:00
//print ' ('.$code.')';
2020-10-31 14:32:18 +01:00
print '</td>' ;
print '<td class="center"><a class="reposition" href="' . $_SERVER [ " PHP_SELF " ] . '?step=2&datatoexport=' . $datatoexport . '&action=selectfield&field=' . $code . '">' . img_right ( 'default' , 0 , 'style="max-width: 20px"' ) . '</a></td>' ;
print '<td> </td>' ;
}
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
print '</tr>' ;
}
2007-03-23 18:58:06 +01:00
2020-10-31 14:32:18 +01:00
print '</table>' ;
print '</div>' ;
2017-06-13 18:50:31 +02:00
2020-10-31 14:32:18 +01:00
/*
2021-03-16 04:22:55 +01:00
* Action bar
2021-02-25 22:50:40 +01:00
*/
2020-10-31 14:32:18 +01:00
print '<div class="tabsAction tabsActionNoBottom">' ;
2006-01-08 18:08:20 +01:00
2021-02-25 22:50:40 +01:00
if ( count ( $array_selected )) {
2012-10-25 22:30:17 +02:00
// If filters exist
2021-02-25 22:50:40 +01:00
if ( $usefilters && isset ( $objexport -> array_export_TypeFields [ 0 ]) && is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2012-10-25 22:30:17 +02:00
print '<a class="butAction" href="export.php?step=3&datatoexport=' . $datatoexport . '">' . $langs -> trans ( " NextStep " ) . '</a>' ;
2020-05-21 15:05:19 +02:00
} else {
2012-10-25 22:30:17 +02:00
print '<a class="butAction" href="export.php?step=4&datatoexport=' . $datatoexport . '">' . $langs -> trans ( " NextStep " ) . '</a>' ;
}
2020-05-21 15:05:19 +02:00
} else {
2018-11-13 21:40:17 +01:00
print '<a class="butActionRefused classfortooltip" href="#" title="' . dol_escape_htmltag ( $langs -> trans ( " SelectAtLeastOneField " )) . '">' . $langs -> trans ( " NextStep " ) . '</a>' ;
2007-03-24 17:46:02 +01:00
}
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
print '</div>' ;
2006-01-08 18:08:20 +01:00
}
2021-02-25 22:50:40 +01:00
if ( $step == 3 && $datatoexport ) {
if ( count ( $array_selected ) < 1 ) { // This occurs when going back to page after sessecion expired
2020-10-31 14:32:18 +01:00
// Switch to step 2
header ( " Location: " . DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport );
exit ;
}
2016-07-15 14:14:55 +02:00
2020-10-31 14:32:18 +01:00
llxHeader ( '' , $langs -> trans ( " NewExport " ), 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones' );
2012-10-25 22:30:17 +02:00
$h = 0 ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=1' ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 1 " ;
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 2 " ;
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=3&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 3 " ;
2019-11-13 19:35:02 +01:00
$hselected = $h ;
2012-10-25 22:30:17 +02:00
$h ++ ;
2020-12-16 16:06:33 +01:00
print dol_get_fiche_head ( $head , $hselected , '' , - 2 );
2012-10-25 22:30:17 +02:00
2020-10-31 14:32:18 +01:00
print '<div class="fichecenter">' ;
print '<div class="underbanner clearboth"></div>' ;
2019-03-02 14:07:13 +01:00
print '<table width="100%" class="border tableforfield">' ;
2012-10-25 22:30:17 +02:00
// Module
2017-03-16 20:33:51 +01:00
print '<tr><td class="titlefield">' . $langs -> trans ( " Module " ) . '</td>' ;
2012-10-25 22:30:17 +02:00
print '<td>' ;
//print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $objexport -> array_export_module [ 0 ] -> getName ();
print '</td></tr>' ;
// Lot de donnees a exporter
2017-03-16 20:33:51 +01:00
print '<tr><td>' . $langs -> trans ( " DatasetToExport " ) . '</td>' ;
2012-10-25 22:30:17 +02:00
print '<td>' ;
2020-12-03 19:45:36 +01:00
$entity = preg_replace ( '/:.*$/' , '' , $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
print img_object ( $objexport -> array_export_module [ 0 ] -> getName (), $entityicon ) . ' ' ;
print $objexport -> array_export_label [ 0 ];
2012-10-25 22:30:17 +02:00
print '</td></tr>' ;
// Nbre champs exportes
2017-03-16 20:33:51 +01:00
print '<tr><td>' . $langs -> trans ( " ExportedFields " ) . '</td>' ;
2019-11-13 19:35:02 +01:00
$list = '' ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $value ) {
2019-11-13 19:35:02 +01:00
$list .= ( ! empty ( $list ) ? ', ' : '' );
$list .= ( isset ( $objexport -> array_export_fields [ 0 ][ $code ]) ? $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]) : '' );
2012-10-25 22:30:17 +02:00
}
print '<td>' . $list . '</td></tr>' ;
print '</table>' ;
2017-03-16 20:33:51 +01:00
print '</div>' ;
2017-06-13 18:50:31 +02:00
2012-10-25 22:30:17 +02:00
print '<br>' ;
// Combo list of export models
2019-03-02 14:07:13 +01:00
print '<span class="opacitymedium">' . $langs -> trans ( " SelectFilterFields " ) . '</span><br><br>' ;
2012-11-14 00:27:25 +01:00
2012-10-25 22:30:17 +02:00
// un formulaire en plus pour recuperer les filtres
2012-11-14 00:27:25 +01:00
print '<form action="' . $_SERVER [ " PHP_SELF " ] . '?step=4&action=submitFormField&datatoexport=' . $datatoexport . '" name="FilterField" method="post">' ;
2019-12-18 23:12:31 +01:00
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
2019-03-04 10:42:09 +01:00
2019-11-13 19:35:02 +01:00
print '<div class="div-table-responsive-no-min">' ; // You can use div-table-responsive-no-min if you dont need reserved height for your table
2019-03-07 14:13:38 +01:00
2020-10-31 14:32:18 +01:00
print '<table class="noborder centpercent">' ;
2012-10-25 22:30:17 +02:00
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " Entities " ) . '</td>' ;
2012-11-14 00:27:25 +01:00
//print '<td>'.$langs->trans("ExportableFields").'</td>';
2019-03-10 09:39:31 +01:00
//print '<td class="center"></td>';
2012-11-14 00:27:25 +01:00
print '<td>' . $langs -> trans ( " ExportableFields " ) . '</td>' ;
2012-10-25 22:30:17 +02:00
print '<td width="25%">' . $langs -> trans ( " FilteredFieldsValues " ) . '</td>' ;
print '</tr>' ;
// Champs exportables
2019-11-13 19:35:02 +01:00
$fieldsarray = $objexport -> array_export_fields [ 0 ];
2012-10-25 22:30:17 +02:00
// Champs filtrable
2019-11-13 19:35:02 +01:00
$Typefieldsarray = $objexport -> array_export_TypeFields [ 0 ];
2012-10-25 22:30:17 +02:00
// valeur des filtres
2019-11-13 19:35:02 +01:00
$ValueFiltersarray = ( ! empty ( $objexport -> array_export_FilterValue [ 0 ]) ? $objexport -> array_export_FilterValue [ 0 ] : '' );
2012-10-25 22:30:17 +02:00
// Select request if all fields are selected
2019-11-13 19:35:02 +01:00
$sqlmaxforexport = $objexport -> build_sql ( 0 , array (), array ());
2012-10-25 22:30:17 +02:00
$i = 0 ;
2012-11-14 00:27:25 +01:00
// on boucle sur les champs
2021-02-25 22:50:40 +01:00
foreach ( $fieldsarray as $code => $label ) {
2017-04-14 11:22:48 +02:00
print '<tr class="oddeven">' ;
2012-10-25 22:30:17 +02:00
$i ++ ;
2019-11-13 19:35:02 +01:00
$entity = ( ! empty ( $objexport -> array_export_entities [ 0 ][ $code ]) ? $objexport -> array_export_entities [ 0 ][ $code ] : $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
$entitylang = ( ! empty ( $entitytolang [ $entity ]) ? $entitytolang [ $entity ] : $entity );
2012-10-25 22:30:17 +02:00
2013-04-25 01:13:13 +02:00
print '<td class="nowrap">' ;
2012-10-25 22:30:17 +02:00
// If value of entityicon=entitylang='icon:Label'
2019-11-13 19:35:02 +01:00
$tmparray = explode ( ':' , $entityicon );
2021-02-25 22:50:40 +01:00
if ( count ( $tmparray ) >= 2 ) {
2019-11-13 19:35:02 +01:00
$entityicon = $tmparray [ 0 ];
$entitylang = $tmparray [ 1 ];
2012-10-25 22:30:17 +02:00
}
2019-01-27 11:55:16 +01:00
print img_object ( '' , $entityicon ) . ' ' . $langs -> trans ( $entitylang );
2012-10-25 22:30:17 +02:00
print '</td>' ;
2012-11-20 14:07:52 +01:00
// Field name
2019-11-13 19:35:02 +01:00
$labelName = ( ! empty ( $fieldsarray [ $code ]) ? $fieldsarray [ $code ] : '' );
$ValueFilter = ( ! empty ( $array_filtervalue [ $code ]) ? $array_filtervalue [ $code ] : '' );
$text = ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '<i>' ) . $langs -> trans ( $labelName ) . ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '</i>' );
2012-10-25 22:30:17 +02:00
2019-11-13 19:35:02 +01:00
$tablename = getablenamefromfield ( $code , $sqlmaxforexport );
$htmltext = '<b>' . $langs -> trans ( " Name " ) . ':</b> ' . $text . '<br>' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_special [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " ComputedField " ) . " -> " . $langs -> trans ( " Method " ) . " :</b> " . $objexport -> array_export_special [ 0 ][ $code ] . " <br> " ;
2020-05-21 15:05:19 +02:00
} else {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Table " ) . " -> " . $langs -> trans ( " Field " ) . " :</b> " . $tablename . " -> " . preg_replace ( '/^.*\./' , '' , $code ) . " <br> " ;
2017-06-13 18:50:31 +02:00
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_examplevalues [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " SourceExample " ) . ':</b> ' . $objexport -> array_export_examplevalues [ 0 ][ $code ] . '<br>' ;
2015-09-12 15:19:19 +02:00
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_TypeFields [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Type " ) . ':</b> ' . $objexport -> array_export_TypeFields [ 0 ][ $code ] . '<br>' ;
2019-12-23 12:24:27 +01:00
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_help [ 0 ][ $code ])) {
2019-12-23 12:24:27 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Help " ) . ':</b> ' . $langs -> trans ( $objexport -> array_export_help [ 0 ][ $code ]) . '<br>' ;
2017-06-13 18:50:31 +02:00
}
2012-11-14 00:27:25 +01:00
print '<td>' ;
2019-01-27 11:55:16 +01:00
print $form -> textwithpicto ( $text , $htmltext );
2012-11-14 00:27:25 +01:00
print '</td>' ;
2012-11-21 18:52:25 +01:00
2012-11-20 14:07:52 +01:00
// Filter value
2012-11-14 00:27:25 +01:00
print '<td>' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $Typefieldsarray [ $code ])) { // Example: Text, List:c_country:label:rowid, Number, Boolean
2019-11-13 19:35:02 +01:00
$szInfoFiltre = $objexport -> genDocFilter ( $Typefieldsarray [ $code ]);
2021-02-25 22:50:40 +01:00
if ( $szInfoFiltre ) { // Is there an info help for this filter ?
2019-11-13 19:35:02 +01:00
$tmp = $objexport -> build_filterField ( $Typefieldsarray [ $code ], $code , $ValueFilter );
2016-03-25 15:24:57 +01:00
print $form -> textwithpicto ( $tmp , $szInfoFiltre );
2020-05-21 15:05:19 +02:00
} else {
2012-11-14 00:27:25 +01:00
print $objexport -> build_filterField ( $Typefieldsarray [ $code ], $code , $ValueFilter );
}
2012-10-25 22:30:17 +02:00
}
2012-11-14 00:27:25 +01:00
print '</td>' ;
2012-10-25 22:30:17 +02:00
print '</tr>' ;
}
print '</table>' ;
2020-10-31 14:32:18 +01:00
print '</div>' ;
2012-10-25 22:30:17 +02:00
print '</div>' ;
/*
2021-03-16 04:22:55 +01:00
* Action bar
2012-11-21 18:52:25 +01:00
*/
2017-05-09 16:52:03 +02:00
print '<div class="tabsAction tabsActionNoBottom">' ;
2012-10-25 22:30:17 +02:00
// il n'est pas obligatoire de filtrer les champs
print '<a class="butAction" href="javascript:FilterField.submit();">' . $langs -> trans ( " NextStep " ) . '</a>' ;
print '</div>' ;
}
2021-02-25 22:50:40 +01:00
if ( $step == 4 && $datatoexport ) {
if ( count ( $array_selected ) < 1 ) { // This occurs when going back to page after sessecion expired
2020-10-31 14:32:18 +01:00
// Switch to step 2
header ( " Location: " . DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport );
exit ;
}
asort ( $array_selected );
llxHeader ( '' , $langs -> trans ( " NewExport " ), 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones' );
$stepoffset = 0 ;
$h = 0 ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=1' ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 1 " ;
$h ++ ;
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 2 " ;
$h ++ ;
// If filters exist
2021-02-25 22:50:40 +01:00
if ( $usefilters && isset ( $objexport -> array_export_TypeFields [ 0 ]) && is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=3&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 3 " ;
$h ++ ;
$stepoffset ++ ;
}
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=4&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " " . ( 3 + $stepoffset );
$hselected = $h ;
$h ++ ;
2020-12-16 16:06:33 +01:00
print dol_get_fiche_head ( $head , $hselected , '' , - 2 );
2020-10-31 14:32:18 +01:00
print '<div class="fichecenter">' ;
print '<div class="underbanner clearboth"></div>' ;
print '<table width="100%" class="border tableforfield">' ;
// Module
print '<tr><td class="titlefield tableforfield">' . $langs -> trans ( " Module " ) . '</td>' ;
print '<td>' ;
//print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $objexport -> array_export_module [ 0 ] -> getName ();
print '</td></tr>' ;
2021-02-25 22:50:40 +01:00
// Lot de donnees a exporter
print '<tr><td>' . $langs -> trans ( " DatasetToExport " ) . '</td>' ;
print '<td>' ;
2020-12-03 19:45:36 +01:00
$entity = preg_replace ( '/:.*$/' , '' , $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
2021-02-25 22:50:40 +01:00
print img_object ( $objexport -> array_export_module [ 0 ] -> getName (), $entityicon ) . ' ' ;
print $objexport -> array_export_label [ 0 ];
print '</td></tr>' ;
2020-10-31 14:32:18 +01:00
// List of exported fields
print '<tr><td>' . $langs -> trans ( " ExportedFields " ) . '</td>' ;
$list = '' ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $value ) {
2020-10-31 14:32:18 +01:00
$list .= ( ! empty ( $list ) ? ', ' : '' );
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]);
}
print '<td>' . $list . '</td>' ;
print '</tr>' ;
// List of filtered fiels
2021-02-25 22:50:40 +01:00
if ( isset ( $objexport -> array_export_TypeFields [ 0 ]) && is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2020-10-31 14:32:18 +01:00
print '<tr><td>' . $langs -> trans ( " FilteredFields " ) . '</td>' ;
$list = '' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $array_filtervalue )) {
foreach ( $array_filtervalue as $code => $value ) {
if ( isset ( $objexport -> array_export_fields [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$list .= ( $list ? ', ' : '' );
2021-02-25 22:50:40 +01:00
if ( isset ( $array_filtervalue [ $code ]) && preg_match ( '/^\s*[<>]/' , $array_filtervalue [ $code ])) {
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]) . ( isset ( $array_filtervalue [ $code ]) ? $array_filtervalue [ $code ] : '' );
} else {
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]) . " =' " . ( isset ( $array_filtervalue [ $code ]) ? $array_filtervalue [ $code ] : '' ) . " ' " ;
}
2020-10-31 14:32:18 +01:00
}
}
}
print '<td>' . ( ! empty ( $list ) ? $list : '<span class="opacitymedium">' . $langs -> trans ( " None " ) . '</span>' ) . '</td>' ;
print '</tr>' ;
}
print '</table>' ;
print '</div>' ;
print '<br>' ;
// Select request if all fields are selected
$sqlmaxforexport = $objexport -> build_sql ( 0 , array (), array ());
print '<div class="marginbottomonly"><span class="opacitymedium">' . $langs -> trans ( " ChooseFieldsOrdersAndTitle " ) . '</span></div>' ;
print '<div class="div-table-responsive-no-min">' ; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '<table class="noborder centpercent">' ;
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " Entities " ) . '</td>' ;
print '<td>' . $langs -> trans ( " ExportedFields " ) . '</td>' ;
print '<td class="right" colspan="2">' . $langs -> trans ( " Position " ) . '</td>' ;
//print '<td> </td>';
//print '<td>'.$langs->trans("FieldsTitle").'</td>';
print '</tr>' ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $value ) {
2020-10-31 14:32:18 +01:00
print '<tr class="oddeven">' ;
$entity = ( ! empty ( $objexport -> array_export_entities [ 0 ][ $code ]) ? $objexport -> array_export_entities [ 0 ][ $code ] : $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
$entitylang = ( ! empty ( $entitytolang [ $entity ]) ? $entitytolang [ $entity ] : $entity );
print '<td class="nowrap">' ;
// If value of entityicon=entitylang='icon:Label'
$tmparray = explode ( ':' , $entityicon );
2021-02-25 22:50:40 +01:00
if ( count ( $tmparray ) >= 2 ) {
2020-10-31 14:32:18 +01:00
$entityicon = $tmparray [ 0 ];
$entitylang = $tmparray [ 1 ];
}
print img_object ( '' , $entityicon ) . ' ' . $langs -> trans ( $entitylang );
print '</td>' ;
$labelName = $objexport -> array_export_fields [ 0 ][ $code ];
2017-06-13 18:50:31 +02:00
2019-11-13 19:35:02 +01:00
$text = ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '<i>' ) . $langs -> trans ( $labelName ) . ( empty ( $objexport -> array_export_special [ 0 ][ $code ]) ? '' : '</i>' );
2017-06-13 18:50:31 +02:00
2020-10-31 14:32:18 +01:00
$tablename = getablenamefromfield ( $code , $sqlmaxforexport );
$htmltext = '<b>' . $langs -> trans ( " Name " ) . ':</b> ' . $text . '<br>' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_special [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " ComputedField " ) . " -> " . $langs -> trans ( " Method " ) . " :</b> " . $objexport -> array_export_special [ 0 ][ $code ] . " <br> " ;
} else {
$htmltext .= '<b>' . $langs -> trans ( " Table " ) . " -> " . $langs -> trans ( " Field " ) . " :</b> " . $tablename . " -> " . preg_replace ( '/^.*\./' , '' , $code ) . " <br> " ;
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_examplevalues [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " SourceExample " ) . ':</b> ' . $objexport -> array_export_examplevalues [ 0 ][ $code ] . '<br>' ;
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_TypeFields [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Type " ) . ':</b> ' . $objexport -> array_export_TypeFields [ 0 ][ $code ] . '<br>' ;
}
2021-02-25 22:50:40 +01:00
if ( ! empty ( $objexport -> array_export_help [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$htmltext .= '<b>' . $langs -> trans ( " Help " ) . ':</b> ' . $langs -> trans ( $objexport -> array_export_help [ 0 ][ $code ]) . '<br>' ;
}
print '<td>' ;
print $form -> textwithpicto ( $text , $htmltext );
2009-10-03 14:08:48 +02:00
//print ' ('.$code.')';
2020-10-31 14:32:18 +01:00
print '</td>' ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
print '<td class="right" width="100">' ;
print $value . ' ' ;
print '</td><td class="center nowraponall" width="40">' ;
2021-02-25 22:50:40 +01:00
if ( $value < count ( $array_selected )) {
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?step=' . $step . '&datatoexport=' . $datatoexport . '&action=downfield&field=' . $code . '">' . img_down () . '</a>' ;
}
if ( $value > 1 ) {
print '<a href="' . $_SERVER [ " PHP_SELF " ] . '?step=' . $step . '&datatoexport=' . $datatoexport . '&action=upfield&field=' . $code . '">' . img_up () . '</a>' ;
}
2020-10-31 14:32:18 +01:00
print '</td>' ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
//print '<td> </td>';
//print '<td>'.$langs->trans($objexport->array_export_fields[0][$code]).'</td>';
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
print '</tr>' ;
}
2007-03-24 17:46:02 +01:00
2020-10-31 14:32:18 +01:00
print '</table>' ;
print '</div>' ;
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
print '</div>' ;
2008-12-04 21:27:01 +01:00
2020-10-31 14:32:18 +01:00
/*
2021-03-16 04:22:55 +01:00
* Action bar
2021-02-25 22:50:40 +01:00
*/
2020-10-31 14:32:18 +01:00
print '<div class="tabsAction">' ;
2008-12-04 21:27:01 +01:00
2021-02-25 22:50:40 +01:00
if ( count ( $array_selected )) {
2020-10-31 14:32:18 +01:00
print '<a class="butAction" href="export.php?step=' . ( $step + 1 ) . '&datatoexport=' . $datatoexport . '">' . $langs -> trans ( " NextStep " ) . '</a>' ;
}
2008-12-04 21:27:01 +01:00
2020-10-31 14:32:18 +01:00
print '</div>' ;
2008-12-04 21:27:01 +01:00
2009-03-03 01:42:40 +01:00
2008-12-04 21:27:01 +01:00
// Area for profils export
2021-02-25 22:50:40 +01:00
if ( count ( $array_selected )) {
2007-03-24 17:46:02 +01:00
print '<br>' ;
2019-12-23 12:24:27 +01:00
print '<div class="marginbottomonly">' ;
2020-10-31 14:32:18 +01:00
print '<span class="opacitymedium">' . $langs -> trans ( " SaveExportModel " ) . '</span>' ;
print '</div>' ;
2009-03-03 01:42:40 +01:00
2007-03-24 17:46:02 +01:00
print '<form class="nocellnopadd" action="export.php" method="post">' ;
2019-12-18 23:12:31 +01:00
print '<input type="hidden" name="token" value="' . newToken () . '">' ;
2020-10-31 14:32:18 +01:00
print '<input type="hidden" name="action" value="add_export_model">' ;
print '<input type="hidden" name="step" value="' . $step . '">' ;
print '<input type="hidden" name="datatoexport" value="' . $datatoexport . '">' ;
print '<input type="hidden" name="hexa" value="' . $hexa . '">' ;
2007-03-24 17:46:02 +01:00
2020-10-31 14:32:18 +01:00
print '<div class="div-table-responsive-no-min">' ; // You can use div-table-responsive-no-min if you dont need reserved height for your table
print '<table class="noborder centpercent">' ;
2007-03-24 17:46:02 +01:00
print '<tr class="liste_titre">' ;
print '<td>' . $langs -> trans ( " ExportModelName " ) . '</td>' ;
2021-06-21 15:03:45 +02:00
print '<td>' . $langs -> trans ( " Visibility " ) . '</td>' ;
print '<td></td>' ;
2007-03-24 17:46:02 +01:00
print '</tr>' ;
2018-06-18 10:12:19 +02:00
2017-04-14 11:22:48 +02:00
print '<tr class="oddeven">' ;
2021-06-22 15:45:47 +02:00
print '<td><input name="export_name" value=""></td>' ;
2021-06-21 15:03:45 +02:00
print '<td>' ;
$arrayvisibility = array ( 'private' => $langs -> trans ( " Private " ), 'all' => $langs -> trans ( " Everybody " ));
print $form -> selectarray ( 'visibility' , $arrayvisibility , 'private' );
print '</td>' ;
print '<td class="right">' ;
2020-11-19 20:23:38 +01:00
print '<input type="submit" class="button reposition button-save" value="' . $langs -> trans ( " Save " ) . '">' ;
2020-10-31 14:32:18 +01:00
print '</td></tr>' ;
2008-12-04 21:27:01 +01:00
2021-06-21 15:03:45 +02:00
$tmpuser = new User ( $db );
2020-10-31 14:32:18 +01:00
// List of existing export profils
2021-06-21 15:03:45 +02:00
$sql = " SELECT rowid, label, fk_user, entity " ;
2019-11-13 19:35:02 +01:00
$sql .= " FROM " . MAIN_DB_PREFIX . " export_model " ;
2020-09-20 02:30:53 +02:00
$sql .= " WHERE type = ' " . $db -> escape ( $datatoexport ) . " ' " ;
2021-06-21 15:03:45 +02:00
if ( empty ( $conf -> global -> EXPORTS_SHARE_MODELS )) { // EXPORTS_SHARE_MODELS means all templates are visible, whatever is owner.
$sql .= " AND fk_user IN (0, " . (( int ) $user -> id ) . " ) " ;
2021-02-25 22:50:40 +01:00
}
2019-11-13 19:35:02 +01:00
$sql .= " ORDER BY rowid " ;
2008-12-04 21:27:01 +01:00
$resql = $db -> query ( $sql );
2021-02-25 22:50:40 +01:00
if ( $resql ) {
2008-12-04 21:27:01 +01:00
$num = $db -> num_rows ( $resql );
$i = 0 ;
2021-02-25 22:50:40 +01:00
while ( $i < $num ) {
2008-12-04 21:27:01 +01:00
$obj = $db -> fetch_object ( $resql );
2021-06-21 15:03:45 +02:00
2017-04-14 13:02:29 +02:00
print '<tr class="oddeven"><td>' ;
2008-12-04 21:27:01 +01:00
print $obj -> label ;
2021-06-21 15:03:45 +02:00
print '</td>' ;
print '<td>' ;
if ( empty ( $obj -> fk_user )) {
print $langs -> trans ( " Everybody " );
} else {
$tmpuser -> fetch ( $obj -> fk_user );
print $tmpuser -> getNomUrl ( 1 );
}
print '</td>' ;
print '<td class="right">' ;
2020-09-30 18:39:23 +02:00
print '<a class="reposition" href="' . $_SERVER [ " PHP_SELF " ] . '?step=' . $step . '&datatoexport=' . $datatoexport . '&action=deleteprof&token=' . newToken () . '&id=' . $obj -> rowid . '">' ;
2008-12-04 21:27:01 +01:00
print img_delete ();
print '</a>' ;
print '</tr>' ;
$i ++ ;
}
2020-05-21 15:05:19 +02:00
} else {
2020-09-20 16:46:29 +02:00
dol_print_error ( $db );
2008-12-04 21:27:01 +01:00
}
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
print '</table>' ;
print '</div>' ;
2019-03-04 10:42:09 +01:00
2020-10-31 14:32:18 +01:00
print '</form>' ;
}
2006-01-08 18:08:20 +01:00
}
2021-02-25 22:50:40 +01:00
if ( $step == 5 && $datatoexport ) {
if ( count ( $array_selected ) < 1 ) { // This occurs when going back to page after sessecion expired
2020-10-31 14:32:18 +01:00
// Switch to step 2
header ( " Location: " . DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport );
exit ;
}
2017-06-13 18:50:31 +02:00
2015-05-05 13:46:28 +02:00
asort ( $array_selected );
2006-01-21 20:08:36 +01:00
2020-10-31 14:32:18 +01:00
llxHeader ( '' , $langs -> trans ( " NewExport " ), 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones' );
2009-03-03 01:42:40 +01:00
2020-10-31 14:32:18 +01:00
$h = 0 ;
$stepoffset = 0 ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=1' ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 1 " ;
$h ++ ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=2&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 2 " ;
$h ++ ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
// si le filtrage est parametre pour l'export ou pas
2021-02-25 22:50:40 +01:00
if ( $usefilters && isset ( $objexport -> array_export_TypeFields [ 0 ]) && is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=3&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " 3 " ;
$h ++ ;
$stepoffset ++ ;
}
2012-10-25 22:30:17 +02:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=4&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " " . ( 3 + $stepoffset );
$h ++ ;
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
$head [ $h ][ 0 ] = DOL_URL_ROOT . '/exports/export.php?step=5&datatoexport=' . $datatoexport ;
$head [ $h ][ 1 ] = $langs -> trans ( " Step " ) . " " . ( 4 + $stepoffset );
$hselected = $h ;
$h ++ ;
2009-03-03 01:42:40 +01:00
2020-12-16 16:06:33 +01:00
print dol_get_fiche_head ( $head , $hselected , '' , - 2 );
2006-01-08 18:08:20 +01:00
2020-10-31 14:32:18 +01:00
/*
2021-02-25 22:50:40 +01:00
* Confirmation suppression fichier
*/
if ( $action == 'remove_file' ) {
2020-10-31 14:32:18 +01:00
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?step=5&datatoexport=' . $datatoexport . '&file=' . urlencode ( GETPOST ( " file " )), $langs -> trans ( 'DeleteFile' ), $langs -> trans ( 'ConfirmDeleteFile' ), 'confirm_deletefile' , '' , 0 , 1 );
}
print '<div class="fichecenter">' ;
print '<div class="underbanner clearboth"></div>' ;
print '<table width="100%" class="border tableforfield">' ;
// Module
print '<tr><td class="titlefield">' . $langs -> trans ( " Module " ) . '</td>' ;
print '<td>' ;
//print img_object($objexport->array_export_module[0]->getName(),$objexport->array_export_module[0]->picto).' ';
print $objexport -> array_export_module [ 0 ] -> getName ();
print '</td></tr>' ;
2021-02-25 22:50:40 +01:00
// Dataset to export
print '<tr><td>' . $langs -> trans ( " DatasetToExport " ) . '</td>' ;
print '<td>' ;
$entity = preg_replace ( '/:.*$/' , '' , $objexport -> array_export_icon [ 0 ]);
$entityicon = strtolower ( ! empty ( $entitytoicon [ $entity ]) ? $entitytoicon [ $entity ] : $entity );
print img_object ( $objexport -> array_export_module [ 0 ] -> getName (), $entityicon ) . ' ' ;
print $objexport -> array_export_label [ 0 ];
print '</td></tr>' ;
2020-10-31 14:32:18 +01:00
// List of exported fields
print '<tr><td>' . $langs -> trans ( " ExportedFields " ) . '</td>' ;
$list = '' ;
2021-02-25 22:50:40 +01:00
foreach ( $array_selected as $code => $label ) {
2020-10-31 14:32:18 +01:00
$list .= ( ! empty ( $list ) ? ', ' : '' );
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]);
}
print '<td>' . $list . '</td></tr>' ;
// List of filtered fields
2021-02-25 22:50:40 +01:00
if ( isset ( $objexport -> array_export_TypeFields [ 0 ]) && is_array ( $objexport -> array_export_TypeFields [ 0 ])) {
2020-10-31 14:32:18 +01:00
print '<tr><td>' . $langs -> trans ( " FilteredFields " ) . '</td>' ;
$list = '' ;
2021-02-25 22:50:40 +01:00
if ( ! empty ( $array_filtervalue )) {
foreach ( $array_filtervalue as $code => $value ) {
if ( isset ( $objexport -> array_export_fields [ 0 ][ $code ])) {
2020-10-31 14:32:18 +01:00
$list .= ( $list ? ', ' : '' );
2021-02-25 22:50:40 +01:00
if ( isset ( $array_filtervalue [ $code ]) && preg_match ( '/^\s*[<>]/' , $array_filtervalue [ $code ])) {
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]) . ( isset ( $array_filtervalue [ $code ]) ? $array_filtervalue [ $code ] : '' );
} else {
$list .= $langs -> trans ( $objexport -> array_export_fields [ 0 ][ $code ]) . " =' " . ( isset ( $array_filtervalue [ $code ]) ? $array_filtervalue [ $code ] : '' ) . " ' " ;
}
2020-10-31 14:32:18 +01:00
}
}
}
print '<td>' . ( ! empty ( $list ) ? $list : '<span class="opacitymedium">' . $langs -> trans ( " None " ) . '</span>' ) . '</td>' ;
print '</tr>' ;
}
print '</table>' ;
print '</div>' ;
print '<br>' ;
// List of available export formats
$htmltabloflibs = '<table class="noborder centpercent">' ;
$htmltabloflibs .= '<tr class="liste_titre">' ;
$htmltabloflibs .= '<td>' . $langs -> trans ( " AvailableFormats " ) . '</td>' ;
$htmltabloflibs .= '<td>' . $langs -> trans ( " LibraryUsed " ) . '</td>' ;
$htmltabloflibs .= '<td class="right">' . $langs -> trans ( " LibraryVersion " ) . '</td>' ;
$htmltabloflibs .= '</tr>' . " \n " ;
$liste = $objmodelexport -> liste_modeles ( $db );
$listeall = $liste ;
2021-02-25 22:50:40 +01:00
foreach ( $listeall as $key => $val ) {
if ( preg_match ( '/__\(Disabled\)__/' , $listeall [ $key ])) {
2020-10-31 14:32:18 +01:00
$listeall [ $key ] = preg_replace ( '/__\(Disabled\)__/' , '(' . $langs -> transnoentitiesnoconv ( " Disabled " ) . ')' , $listeall [ $key ]);
unset ( $liste [ $key ]);
}
$htmltabloflibs .= '<tr class="oddeven">' ;
$htmltabloflibs .= '<td>' . img_picto_common ( $key , $objmodelexport -> getPictoForKey ( $key )) . ' ' ;
$text = $objmodelexport -> getDriverDescForKey ( $key );
$label = $listeall [ $key ];
$htmltabloflibs .= $form -> textwithpicto ( $label , $text ) . '</td>' ;
$htmltabloflibs .= '<td>' . $objmodelexport -> getLibLabelForKey ( $key ) . '</td>' ;
$htmltabloflibs .= '<td class="right">' . $objmodelexport -> getLibVersionForKey ( $key ) . '</td>' ;
$htmltabloflibs .= '</tr>' . " \n " ;
}
$htmltabloflibs .= '</table>' ;
print '<span class="opacitymedium">' . $form -> textwithpicto ( $langs -> trans ( " NowClickToGenerateToBuildExportFile " ), $htmltabloflibs , 1 , 'help' , '' , 0 , 2 , 'helphonformat' ) . '</span>' ;
//print $htmltabloflibs;
print '<br>' ;
print '</div>' ;
2021-02-25 22:50:40 +01:00
if ( $sqlusedforexport && $user -> admin ) {
2020-10-31 14:32:18 +01:00
print info_admin ( $langs -> trans ( " SQLUsedForExport " ) . ':<br> ' . $sqlusedforexport , 0 , 0 , 1 , '' , 'TechnicalInformation' );
}
2021-02-25 22:50:40 +01:00
if ( ! is_dir ( $conf -> export -> dir_temp )) {
dol_mkdir ( $conf -> export -> dir_temp );
}
2020-10-31 14:32:18 +01:00
// Show existing generated documents
// NB: La fonction show_documents rescanne les modules qd genallowed=1, sinon prend $liste
2022-02-22 23:44:56 +01:00
print $formfile -> showdocuments ( 'export' , '' , $upload_dir , $_SERVER [ " PHP_SELF " ] . '?step=5&datatoexport=' . $datatoexport , $liste , 1 , ( GETPOST ( 'model' ) ? GETPOST ( 'model' ) : 'csv' ), 1 , 1 , 0 , 0 , 0 , '' , 'none' , '' , '' , '' );
2005-11-19 23:09:12 +01:00
}
2005-10-30 15:02:38 +01:00
2011-08-27 16:24:16 +02:00
llxFooter ();
2009-10-03 14:08:48 +02:00
2012-12-01 15:45:05 +01:00
$db -> close ();
2012-11-20 15:56:44 +01:00
2019-11-13 19:35:02 +01:00
exit ; // don't know why but apache hangs with php 5.3.10-1ubuntu3.12 and apache 2.2.2 if i remove this exit or replace with return
2015-05-05 13:46:28 +02:00
2009-10-03 14:08:48 +02:00
/**
2011-09-10 14:21:41 +02:00
* Return table name of an alias . For this , we look for the " tablename as alias " in sql string .
*
2012-01-08 00:52:07 +01:00
* @ param string $code Alias . Fieldname
* @ param string $sqlmaxforexport SQL request to parse
* @ return string Table name of field
2009-10-03 14:08:48 +02:00
*/
2019-01-27 15:20:16 +01:00
function getablenamefromfield ( $code , $sqlmaxforexport )
2009-10-03 14:08:48 +02:00
{
2019-11-13 19:35:02 +01:00
$alias = preg_replace ( '/\.(.*)$/i' , '' , $code ); // Keep only 'Alias' and remove '.Fieldname'
$regexstring = '/([a-zA-Z_]+) as ' . preg_quote ( $alias ) . '[, \)]/i' ;
2017-06-13 18:50:31 +02:00
2019-11-13 19:35:02 +01:00
$newsql = $sqlmaxforexport ;
$newsql = preg_replace ( '/^(.*) FROM /i' , '' , $newsql ); // Remove part before the FROM
$newsql = preg_replace ( '/WHERE (.*)$/i' , '' , $newsql ); // Remove part after the WHERE so we have now only list of table aliases in a string. We must keep the ' ' before WHERE
2017-06-13 18:50:31 +02:00
2021-02-25 22:50:40 +01:00
if ( preg_match ( $regexstring , $newsql , $reg )) {
2019-11-13 19:35:02 +01:00
return $reg [ 1 ]; // The tablename
2021-02-25 22:50:40 +01:00
} else {
return '' ;
}
2009-10-03 14:08:48 +02:00
}