code syntax exports externalsite directory

This commit is contained in:
Frédéric FRANCE 2021-02-25 22:50:40 +01:00
parent f7c119e48c
commit d6ffdfe835
No known key found for this signature in database
GPG Key ID: 06809324E4B2ABC1
5 changed files with 364 additions and 416 deletions

View File

@ -96,50 +96,49 @@ class Export
$modulesdir = dolGetModulesDirs(); $modulesdir = dolGetModulesDirs();
foreach ($modulesdir as $dir) foreach ($modulesdir as $dir) {
{
// Search available exports // Search available exports
$handle = @opendir(dol_osencode($dir)); $handle = @opendir(dol_osencode($dir));
if (is_resource($handle)) if (is_resource($handle)) {
{
// Search module files // Search module files
while (($file = readdir($handle)) !== false) while (($file = readdir($handle)) !== false) {
{
$reg = array(); $reg = array();
if (is_readable($dir.$file) && preg_match("/^(mod.*)\.class\.php$/i", $file, $reg)) if (is_readable($dir.$file) && preg_match("/^(mod.*)\.class\.php$/i", $file, $reg)) {
{
$modulename = $reg[1]; $modulename = $reg[1];
// Defined if module is enabled // Defined if module is enabled
$enabled = true; $enabled = true;
$part = strtolower(preg_replace('/^mod/i', '', $modulename)); $part = strtolower(preg_replace('/^mod/i', '', $modulename));
if ($part == 'propale') $part = 'propal'; if ($part == 'propale') {
if (empty($conf->$part->enabled)) $enabled = false; $part = 'propal';
}
if (empty($conf->$part->enabled)) {
$enabled = false;
}
if ($enabled) if ($enabled) {
{
// Loading Class // Loading Class
$file = $dir.$modulename.".class.php"; $file = $dir.$modulename.".class.php";
$classname = $modulename; $classname = $modulename;
require_once $file; require_once $file;
$module = new $classname($this->db); $module = new $classname($this->db);
if (isset($module->export_code) && is_array($module->export_code)) if (isset($module->export_code) && is_array($module->export_code)) {
{ foreach ($module->export_code as $r => $value) {
foreach ($module->export_code as $r => $value)
{
//print $i.'-'.$filter.'-'.$modulename.'-'.join(',',$module->export_code).'<br>'; //print $i.'-'.$filter.'-'.$modulename.'-'.join(',',$module->export_code).'<br>';
if ($filter && ($filter != $module->export_code[$r])) continue; if ($filter && ($filter != $module->export_code[$r])) {
continue;
}
// Test if condition to show are ok // Test if condition to show are ok
if (!empty($module->export_enabled[$r]) && !verifCond($module->export_enabled[$r])) continue; if (!empty($module->export_enabled[$r]) && !verifCond($module->export_enabled[$r])) {
continue;
}
// Test if permissions are ok // Test if permissions are ok
$bool = true; $bool = true;
if (isset($module->export_permission)) if (isset($module->export_permission)) {
{ foreach ($module->export_permission[$r] as $val) {
foreach ($module->export_permission[$r] as $val)
{
$perm = $val; $perm = $val;
//print_r("$perm[0]-$perm[1]-$perm[2]<br>"); //print_r("$perm[0]-$perm[1]-$perm[2]<br>");
if (!empty($perm[2])) { if (!empty($perm[2])) {
@ -147,8 +146,12 @@ class Export
} else { } else {
$bool = isset($user->rights->{$perm[0]}->{$perm[1]}) ? $user->rights->{$perm[0]}->{$perm[1]} : false; $bool = isset($user->rights->{$perm[0]}->{$perm[1]}) ? $user->rights->{$perm[0]}->{$perm[1]} : false;
} }
if ($perm[0] == 'user' && $user->admin) $bool = true; if ($perm[0] == 'user' && $user->admin) {
if (!$bool) break; $bool = true;
}
if (!$bool) {
break;
}
} }
} }
//print $bool." $perm[0]"."<br>"; //print $bool." $perm[0]"."<br>";
@ -158,10 +161,8 @@ class Export
// { // {
// Charge fichier lang en rapport // Charge fichier lang en rapport
$langtoload = $module->getLangFilesArray(); $langtoload = $module->getLangFilesArray();
if (is_array($langtoload)) if (is_array($langtoload)) {
{ foreach ($langtoload as $key) {
foreach ($langtoload as $key)
{
$langs->load($key); $langs->load($key);
} }
} }
@ -234,12 +235,18 @@ class Export
$i = 0; $i = 0;
//print_r($array_selected); //print_r($array_selected);
foreach ($this->array_export_fields[$indice] as $key => $value) foreach ($this->array_export_fields[$indice] as $key => $value) {
{ if (!array_key_exists($key, $array_selected)) {
if (!array_key_exists($key, $array_selected)) continue; // Field not selected continue; // Field not selected
if (preg_match('/^none\./', $key)) continue; // A field that must not appears into SQL }
if ($i > 0) $sql .= ', '; if (preg_match('/^none\./', $key)) {
else $i++; continue; // A field that must not appears into SQL
}
if ($i > 0) {
$sql .= ', ';
} else {
$i++;
}
if (strpos($key, ' as ') === false) { if (strpos($key, ' as ') === false) {
$newfield = $key.' as '.str_replace(array('.', '-', '(', ')'), '_', $key); $newfield = $key.' as '.str_replace(array('.', '-', '(', ')'), '_', $key);
@ -252,14 +259,16 @@ class Export
$sql .= $this->array_export_sql_end[$indice]; $sql .= $this->array_export_sql_end[$indice];
// Add the WHERE part. Filtering into sql if a filtering array is provided // Add the WHERE part. Filtering into sql if a filtering array is provided
if (is_array($array_filterValue) && !empty($array_filterValue)) if (is_array($array_filterValue) && !empty($array_filterValue)) {
{
$sqlWhere = ''; $sqlWhere = '';
// Loop on each condition to add // Loop on each condition to add
foreach ($array_filterValue as $key => $value) foreach ($array_filterValue as $key => $value) {
{ if (preg_match('/GROUP_CONCAT/i', $key)) {
if (preg_match('/GROUP_CONCAT/i', $key)) continue; continue;
if ($value != '') $sqlWhere .= " and ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]); }
if ($value != '') {
$sqlWhere .= " and ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]);
}
} }
$sql .= $sqlWhere; $sql .= $sqlWhere;
} }
@ -268,12 +277,12 @@ class Export
$sql .= $this->array_export_sql_order[$indice]; $sql .= $this->array_export_sql_order[$indice];
// Add the HAVING part. // Add the HAVING part.
if (is_array($array_filterValue) && !empty($array_filterValue)) if (is_array($array_filterValue) && !empty($array_filterValue)) {
{
// Loop on each condition to add // Loop on each condition to add
foreach ($array_filterValue as $key => $value) foreach ($array_filterValue as $key => $value) {
{ if (preg_match('/GROUP_CONCAT/i', $key) and $value != '') {
if (preg_match('/GROUP_CONCAT/i', $key) and $value != '') $sql .= " HAVING ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]); $sql .= " HAVING ".$this->build_filterQuery($this->array_export_TypeFields[$indice][$key], $key, $array_filterValue[$key]);
}
} }
} }
@ -297,37 +306,41 @@ class Export
// build the input field on depend of the type of file // build the input field on depend of the type of file
switch ($InfoFieldList[0]) { switch ($InfoFieldList[0]) {
case 'Text': case 'Text':
if (!(strpos($ValueField, '%') === false)) if (!(strpos($ValueField, '%') === false)) {
$szFilterQuery .= " ".$NameField." LIKE '".$ValueField."'"; $szFilterQuery .= " ".$NameField." LIKE '".$ValueField."'";
else $szFilterQuery .= " ".$NameField." = '".$ValueField."'"; } else {
$szFilterQuery .= " ".$NameField." = '".$ValueField."'";
}
break; break;
case 'Date': case 'Date':
if (strpos($ValueField, "+") > 0) if (strpos($ValueField, "+") > 0) {
{
// mode plage // mode plage
$ValueArray = explode("+", $ValueField); $ValueArray = explode("+", $ValueField);
$szFilterQuery = "(".$this->conditionDate($NameField, trim($ValueArray[0]), ">="); $szFilterQuery = "(".$this->conditionDate($NameField, trim($ValueArray[0]), ">=");
$szFilterQuery .= " AND ".$this->conditionDate($NameField, trim($ValueArray[1]), "<=").")"; $szFilterQuery .= " AND ".$this->conditionDate($NameField, trim($ValueArray[1]), "<=").")";
} else { } else {
if (is_numeric(substr($ValueField, 0, 1))) if (is_numeric(substr($ValueField, 0, 1))) {
$szFilterQuery = $this->conditionDate($NameField, trim($ValueField), "="); $szFilterQuery = $this->conditionDate($NameField, trim($ValueField), "=");
else $szFilterQuery = $this->conditionDate($NameField, trim(substr($ValueField, 1)), substr($ValueField, 0, 1)); } else {
$szFilterQuery = $this->conditionDate($NameField, trim(substr($ValueField, 1)), substr($ValueField, 0, 1));
}
} }
break; break;
case 'Duree': case 'Duree':
break; break;
case 'Numeric': case 'Numeric':
// si le signe - // si le signe -
if (strpos($ValueField, "+") > 0) if (strpos($ValueField, "+") > 0) {
{
// mode plage // mode plage
$ValueArray = explode("+", $ValueField); $ValueArray = explode("+", $ValueField);
$szFilterQuery = "(".$NameField.">=".$ValueArray[0]; $szFilterQuery = "(".$NameField.">=".$ValueArray[0];
$szFilterQuery .= " AND ".$NameField."<=".$ValueArray[1].")"; $szFilterQuery .= " AND ".$NameField."<=".$ValueArray[1].")";
} else { } else {
if (is_numeric(substr($ValueField, 0, 1))) if (is_numeric(substr($ValueField, 0, 1))) {
$szFilterQuery = " ".$NameField."=".$ValueField; $szFilterQuery = " ".$NameField."=".$ValueField;
else $szFilterQuery = " ".$NameField.substr($ValueField, 0, 1).substr($ValueField, 1); } else {
$szFilterQuery = " ".$NameField.substr($ValueField, 0, 1).substr($ValueField, 1);
}
} }
break; break;
case 'Boolean': case 'Boolean':
@ -335,12 +348,14 @@ class Export
break; break;
case 'Status': case 'Status':
case 'List': case 'List':
if (is_numeric($ValueField)) if (is_numeric($ValueField)) {
$szFilterQuery = " ".$NameField."=".$ValueField; $szFilterQuery = " ".$NameField."=".$ValueField;
else { } else {
if (!(strpos($ValueField, '%') === false)) if (!(strpos($ValueField, '%') === false)) {
$szFilterQuery = " ".$NameField." LIKE '".$ValueField."'"; $szFilterQuery = " ".$NameField." LIKE '".$ValueField."'";
else $szFilterQuery = " ".$NameField." = '".$ValueField."'"; } else {
$szFilterQuery = " ".$NameField." = '".$ValueField."'";
}
} }
break; break;
default: default:
@ -361,9 +376,13 @@ class Export
public function conditionDate($Field, $Value, $Sens) public function conditionDate($Field, $Value, $Sens)
{ {
// TODO date_format is forbidden, not performant and not portable. Use instead BETWEEN // TODO date_format is forbidden, not performant and not portable. Use instead BETWEEN
if (strlen($Value) == 4) $Condition = " date_format(".$Field.",'%Y') ".$Sens." '".$Value."'"; if (strlen($Value) == 4) {
elseif (strlen($Value) == 6) $Condition = " date_format(".$Field.",'%Y%m') ".$Sens." '".$Value."'"; $Condition = " date_format(".$Field.",'%Y') ".$Sens." '".$Value."'";
else $Condition = " date_format(".$Field.",'%Y%m%d') ".$Sens." ".$Value; } elseif (strlen($Value) == 6) {
$Condition = " date_format(".$Field.",'%Y%m') ".$Sens." '".$Value."'";
} else {
$Condition = " date_format(".$Field.",'%Y%m%d') ".$Sens." ".$Value;
}
return $Condition; return $Condition;
} }
@ -385,8 +404,7 @@ class Export
$InfoFieldList = explode(":", $TypeField); $InfoFieldList = explode(":", $TypeField);
// build the input field on depend of the type of file // build the input field on depend of the type of file
switch ($InfoFieldList[0]) switch ($InfoFieldList[0]) {
{
case 'Text': case 'Text':
case 'Date': case 'Date':
$szFilterField = '<input type="text" name="'.$NameField.'" value="'.$ValueField.'">'; $szFilterField = '<input type="text" name="'.$NameField.'" value="'.$ValueField.'">';
@ -403,15 +421,21 @@ class Export
case 'Boolean': case 'Boolean':
$szFilterField = '<select name="'.$NameField.'" class="flat">'; $szFilterField = '<select name="'.$NameField.'" class="flat">';
$szFilterField .= '<option '; $szFilterField .= '<option ';
if ($ValueField == '') $szFilterField .= ' selected '; if ($ValueField == '') {
$szFilterField .= ' selected ';
}
$szFilterField .= ' value="">&nbsp;</option>'; $szFilterField .= ' value="">&nbsp;</option>';
$szFilterField .= '<option '; $szFilterField .= '<option ';
if ($ValueField == 'yes' || $ValueField == '1') $szFilterField .= ' selected '; if ($ValueField == 'yes' || $ValueField == '1') {
$szFilterField .= ' selected ';
}
$szFilterField .= ' value="1">'.yn(1).'</option>'; $szFilterField .= ' value="1">'.yn(1).'</option>';
$szFilterField .= '<option '; $szFilterField .= '<option ';
if ($ValueField == 'no' || $ValueField == '0') $szFilterField .= ' selected '; if ($ValueField == 'no' || $ValueField == '0') {
$szFilterField .= ' selected ';
}
$szFilterField .= ' value="0">'.yn(0).'</option>'; $szFilterField .= ' value="0">'.yn(0).'</option>';
$szFilterField .= "</select>"; $szFilterField .= "</select>";
break; break;
@ -422,51 +446,50 @@ class Export
// 3 : Name of field with key (if it is not "rowid"). Used this field as key for combo list. // 3 : Name of field with key (if it is not "rowid"). Used this field as key for combo list.
// 4 : Name of element for getEntity(). // 4 : Name of element for getEntity().
if (!empty($InfoFieldList[3])) if (!empty($InfoFieldList[3])) {
$keyList = $InfoFieldList[3]; $keyList = $InfoFieldList[3];
else $keyList = 'rowid'; } else {
$keyList = 'rowid';
}
$sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code'); $sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code');
if ($InfoFieldList[1] == 'c_stcomm') $sql = 'SELECT id as id, '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code'); if ($InfoFieldList[1] == 'c_stcomm') {
if ($InfoFieldList[1] == 'c_country') $sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label, code as code'; $sql = 'SELECT id as id, '.$keyList.' as rowid, '.$InfoFieldList[2].' as label'.(empty($InfoFieldList[3]) ? '' : ', '.$InfoFieldList[3].' as code');
}
if ($InfoFieldList[1] == 'c_country') {
$sql = 'SELECT '.$keyList.' as rowid, '.$InfoFieldList[2].' as label, code as code';
}
$sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[1]; $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[1];
if (!empty($InfoFieldList[4])) { if (!empty($InfoFieldList[4])) {
$sql .= ' WHERE entity IN ('.getEntity($InfoFieldList[4]).')'; $sql .= ' WHERE entity IN ('.getEntity($InfoFieldList[4]).')';
} }
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql) {
{
$szFilterField = '<select class="flat" name="'.$NameField.'">'; $szFilterField = '<select class="flat" name="'.$NameField.'">';
$szFilterField .= '<option value="0">&nbsp;</option>'; $szFilterField .= '<option value="0">&nbsp;</option>';
$num = $this->db->num_rows($resql); $num = $this->db->num_rows($resql);
$i = 0; $i = 0;
if ($num) if ($num) {
{ while ($i < $num) {
while ($i < $num)
{
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
if ($obj->label == '-') if ($obj->label == '-') {
{
// Discard entry '-' // Discard entry '-'
$i++; $i++;
continue; continue;
} }
//var_dump($InfoFieldList[1]); //var_dump($InfoFieldList[1]);
$labeltoshow = dol_trunc($obj->label, 18); $labeltoshow = dol_trunc($obj->label, 18);
if ($InfoFieldList[1] == 'c_stcomm') if ($InfoFieldList[1] == 'c_stcomm') {
{
$langs->load("companies"); $langs->load("companies");
$labeltoshow = (($langs->trans("StatusProspect".$obj->id) != "StatusProspect".$obj->id) ? $langs->trans("StatusProspect".$obj->id) : $obj->label); $labeltoshow = (($langs->trans("StatusProspect".$obj->id) != "StatusProspect".$obj->id) ? $langs->trans("StatusProspect".$obj->id) : $obj->label);
} }
if ($InfoFieldList[1] == 'c_country') if ($InfoFieldList[1] == 'c_country') {
{
//var_dump($sql); //var_dump($sql);
$langs->load("dict"); $langs->load("dict");
$labeltoshow = (($langs->trans("Country".$obj->code) != "Country".$obj->code) ? $langs->trans("Country".$obj->code) : $obj->label); $labeltoshow = (($langs->trans("Country".$obj->code) != "Country".$obj->code) ? $langs->trans("Country".$obj->code) : $obj->label);
} }
if (!empty($ValueField) && $ValueField == $obj->rowid) if (!empty($ValueField) && $ValueField == $obj->rowid) {
{
$szFilterField .= '<option value="'.$obj->rowid.'" selected>'.$labeltoshow.'</option>'; $szFilterField .= '<option value="'.$obj->rowid.'" selected>'.$labeltoshow.'</option>';
} else { } else {
$szFilterField .= '<option value="'.$obj->rowid.'" >'.$labeltoshow.'</option>'; $szFilterField .= '<option value="'.$obj->rowid.'" >'.$labeltoshow.'</option>';
@ -477,7 +500,9 @@ class Export
$szFilterField .= "</select>"; $szFilterField .= "</select>";
$this->db->free($resql); $this->db->free($resql);
} else dol_print_error($this->db); } else {
dol_print_error($this->db);
}
break; break;
} }
@ -542,8 +567,7 @@ class Export
dol_syslog(__METHOD__." ".$model.", ".$datatoexport.", ".implode(",", $array_selected)); dol_syslog(__METHOD__." ".$model.", ".$datatoexport.", ".implode(",", $array_selected));
// Check parameters or context properties // Check parameters or context properties
if (empty($this->array_export_fields) || !is_array($this->array_export_fields)) if (empty($this->array_export_fields) || !is_array($this->array_export_fields)) {
{
$this->error = "ErrorBadParameter"; $this->error = "ErrorBadParameter";
dol_syslog($this->error, LOG_ERR); dol_syslog($this->error, LOG_ERR);
return -1; return -1;
@ -556,22 +580,20 @@ class Export
require_once $dir.$file; require_once $dir.$file;
$objmodel = new $classname($this->db); $objmodel = new $classname($this->db);
if (!empty($sqlquery)) $sql = $sqlquery; if (!empty($sqlquery)) {
else { $sql = $sqlquery;
} else {
// Define value for indice from $datatoexport // Define value for indice from $datatoexport
$foundindice = 0; $foundindice = 0;
foreach ($this->array_export_code as $key => $dataset) foreach ($this->array_export_code as $key => $dataset) {
{ if ($datatoexport == $dataset) {
if ($datatoexport == $dataset)
{
$indice = $key; $indice = $key;
$foundindice++; $foundindice++;
//print "Found indice = ".$indice." for dataset=".$datatoexport."\n"; //print "Found indice = ".$indice." for dataset=".$datatoexport."\n";
break; break;
} }
} }
if (empty($foundindice)) if (empty($foundindice)) {
{
$this->error = "ErrorBadParameter can't find dataset ".$datatoexport." into preload arrays this->array_export_code"; $this->error = "ErrorBadParameter can't find dataset ".$datatoexport." into preload arrays this->array_export_code";
return -1; return -1;
} }
@ -582,13 +604,11 @@ class Export
$this->sqlusedforexport = $sql; $this->sqlusedforexport = $sql;
dol_syslog(__METHOD__, LOG_DEBUG); dol_syslog(__METHOD__, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql) {
{
//$this->array_export_label[$indice] //$this->array_export_label[$indice]
if (!empty($conf->global->EXPORT_PREFIX_SPEC)) { if (!empty($conf->global->EXPORT_PREFIX_SPEC)) {
$filename = $conf->global->EXPORT_PREFIX_SPEC."_".$datatoexport; $filename = $conf->global->EXPORT_PREFIX_SPEC."_".$datatoexport;
} } else {
else {
$filename = "export_".$datatoexport; $filename = "export_".$datatoexport;
} }
$filename .= '.'.$objmodel->getDriverExtension(); $filename .= '.'.$objmodel->getDriverExtension();
@ -600,55 +620,48 @@ class Export
dol_mkdir($dirname); dol_mkdir($dirname);
$result = $objmodel->open_file($dirname."/".$filename, $outputlangs); $result = $objmodel->open_file($dirname."/".$filename, $outputlangs);
if ($result >= 0) if ($result >= 0) {
{
// Genere en-tete // Genere en-tete
$objmodel->write_header($outputlangs); $objmodel->write_header($outputlangs);
// Genere ligne de titre // Genere ligne de titre
$objmodel->write_title($this->array_export_fields[$indice], $array_selected, $outputlangs, isset($this->array_export_TypeFields[$indice]) ? $this->array_export_TypeFields[$indice] : null); $objmodel->write_title($this->array_export_fields[$indice], $array_selected, $outputlangs, isset($this->array_export_TypeFields[$indice]) ? $this->array_export_TypeFields[$indice] : null);
while ($obj = $this->db->fetch_object($resql)) while ($obj = $this->db->fetch_object($resql)) {
{
// Process special operations // Process special operations
if (!empty($this->array_export_special[$indice])) if (!empty($this->array_export_special[$indice])) {
{ foreach ($this->array_export_special[$indice] as $key => $value) {
foreach ($this->array_export_special[$indice] as $key => $value) if (!array_key_exists($key, $array_selected)) {
{ continue; // Field not selected
if (!array_key_exists($key, $array_selected)) continue; // Field not selected }
// Operation NULLIFNEG // Operation NULLIFNEG
if ($this->array_export_special[$indice][$key] == 'NULLIFNEG') if ($this->array_export_special[$indice][$key] == 'NULLIFNEG') {
{
//$alias=$this->array_export_alias[$indice][$key]; //$alias=$this->array_export_alias[$indice][$key];
$alias = str_replace(array('.', '-', '(', ')'), '_', $key); $alias = str_replace(array('.', '-', '(', ')'), '_', $key);
if ($obj->$alias < 0) $obj->$alias = ''; if ($obj->$alias < 0) {
} $obj->$alias = '';
// Operation ZEROIFNEG }
elseif ($this->array_export_special[$indice][$key] == 'ZEROIFNEG') } elseif ($this->array_export_special[$indice][$key] == 'ZEROIFNEG') {
{ // Operation ZEROIFNEG
//$alias=$this->array_export_alias[$indice][$key]; //$alias=$this->array_export_alias[$indice][$key];
$alias = str_replace(array('.', '-', '(', ')'), '_', $key); $alias = str_replace(array('.', '-', '(', ')'), '_', $key);
if ($obj->$alias < 0) $obj->$alias = '0'; if ($obj->$alias < 0) {
} $obj->$alias = '0';
// Operation GETNUMOPENDAYS (for Holiday module) }
elseif ($this->array_export_special[$indice][$key] == 'getNumOpenDays') } elseif ($this->array_export_special[$indice][$key] == 'getNumOpenDays') {
{ // Operation GETNUMOPENDAYS (for Holiday module)
include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
//$alias=$this->array_export_alias[$indice][$key]; //$alias=$this->array_export_alias[$indice][$key];
$alias = str_replace(array('.', '-', '(', ')'), '_', $key); $alias = str_replace(array('.', '-', '(', ')'), '_', $key);
$obj->$alias = num_open_day(dol_stringtotime($obj->d_date_debut, 1), dol_stringtotime($obj->d_date_fin, 1), 0, 1, $obj->d_halfday, $mysoc->country_code); $obj->$alias = num_open_day(dol_stringtotime($obj->d_date_debut, 1), dol_stringtotime($obj->d_date_fin, 1), 0, 1, $obj->d_halfday, $mysoc->country_code);
} } elseif ($this->array_export_special[$indice][$key] == 'getRemainToPay') {
// Operation INVOICEREMAINTOPAY // Operation INVOICEREMAINTOPAY
elseif ($this->array_export_special[$indice][$key] == 'getRemainToPay')
{
//$alias=$this->array_export_alias[$indice][$key]; //$alias=$this->array_export_alias[$indice][$key];
$alias = str_replace(array('.', '-', '(', ')'), '_', $key); $alias = str_replace(array('.', '-', '(', ')'), '_', $key);
$remaintopay = ''; $remaintopay = '';
if ($obj->f_rowid > 0) if ($obj->f_rowid > 0) {
{
global $tmpobjforcomputecall; global $tmpobjforcomputecall;
if (!is_object($tmpobjforcomputecall)) if (!is_object($tmpobjforcomputecall)) {
{
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$tmpobjforcomputecall = new Facture($this->db); $tmpobjforcomputecall = new Facture($this->db);
} }
@ -725,8 +738,7 @@ class Export
dol_syslog(get_class($this)."::create", LOG_DEBUG); dol_syslog(get_class($this)."::create", LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql) {
{
$this->db->commit(); $this->db->commit();
return 1; return 1;
} else { } else {
@ -751,11 +763,9 @@ class Export
dol_syslog("Export::fetch", LOG_DEBUG); dol_syslog("Export::fetch", LOG_DEBUG);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result) {
{
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
if ($obj) if ($obj) {
{
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->model_name = $obj->label; $this->model_name = $obj->label;
$this->datatoexport = $obj->type; $this->datatoexport = $obj->type;
@ -794,13 +804,13 @@ class Export
dol_syslog(get_class($this)."::delete", LOG_DEBUG); dol_syslog(get_class($this)."::delete", LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (!$resql) { $error++; $this->errors[] = "Error ".$this->db->lasterror(); } if (!$resql) {
$error++; $this->errors[] = "Error ".$this->db->lasterror();
}
// Commit or rollback // Commit or rollback
if ($error) if ($error) {
{ foreach ($this->errors as $errmsg) {
foreach ($this->errors as $errmsg)
{
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
$this->error .= ($this->error ? ', '.$errmsg : $errmsg); $this->error .= ($this->error ? ', '.$errmsg : $errmsg);
} }
@ -829,12 +839,10 @@ class Export
$sql .= " ORDER BY rowid"; $sql .= " ORDER BY rowid";
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result) {
{
$num = $this->db->num_rows($result); $num = $this->db->num_rows($result);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num) {
{
$obj = $this->db->fetch_object($result); $obj = $this->db->fetch_object($result);
$keyModel = array_search($obj->type, $this->array_export_code); $keyModel = array_search($obj->type, $this->array_export_code);
print "<tr>"; print "<tr>";

View File

@ -54,14 +54,14 @@ $entitytoicon = array(
'subscription' => 'payment', 'subscription' => 'payment',
'payment' => 'payment', 'payment' => 'payment',
'tax' => 'generic', 'tax' => 'generic',
'tax_type' => 'generic', 'tax_type' => 'generic',
'other' => 'generic', 'other' => 'generic',
'account' => 'account', 'account' => 'account',
'product' => 'product', 'product' => 'product',
'virtualproduct'=>'product', 'virtualproduct'=>'product',
'subproduct' => 'product', 'subproduct' => 'product',
'product_supplier_ref' => 'product', 'product_supplier_ref' => 'product',
'stock' => 'stock', 'stock' => 'stock',
'warehouse' => 'stock', 'warehouse' => 'stock',
'batch' => 'stock', 'batch' => 'stock',
'stockbatch' => 'stock', 'stockbatch' => 'stock',
@ -159,17 +159,16 @@ $usefilters = 1;
* Actions * Actions
*/ */
if ($action == 'selectfield') // Selection of field at step 2 if ($action == 'selectfield') { // Selection of field at step 2
{
$fieldsarray = $objexport->array_export_fields[0]; $fieldsarray = $objexport->array_export_fields[0];
$fieldsentitiesarray = $objexport->array_export_entities[0]; $fieldsentitiesarray = $objexport->array_export_entities[0];
$fieldsdependenciesarray = $objexport->array_export_dependencies[0]; $fieldsdependenciesarray = $objexport->array_export_dependencies[0];
if ($field == 'all') if ($field == 'all') {
{ foreach ($fieldsarray as $key => $val) {
foreach ($fieldsarray as $key=>$val) if (!empty($array_selected[$key])) {
{ continue; // If already selected, check next
if (!empty($array_selected[$key])) continue; // If already selected, check next }
$array_selected[$key] = count($array_selected) + 1; $array_selected[$key] = count($array_selected) + 1;
//print_r($array_selected); //print_r($array_selected);
$_SESSION["export_selected_fields"] = $array_selected; $_SESSION["export_selected_fields"] = $array_selected;
@ -180,29 +179,30 @@ if ($action == 'selectfield') // Selection of field at step 2
$array_selected[$field] = count($array_selected) + 1; // We tag the key $field as "selected" $array_selected[$field] = count($array_selected) + 1; // We tag the key $field as "selected"
// We check if there is a dependency to activate // We check if there is a dependency to activate
/*var_dump($field); /*var_dump($field);
var_dump($fieldsentitiesarray[$field]); var_dump($fieldsentitiesarray[$field]);
var_dump($fieldsdependenciesarray);*/ var_dump($fieldsdependenciesarray);*/
$listofdependencies = array(); $listofdependencies = array();
if (!empty($fieldsentitiesarray[$field]) && !empty($fieldsdependenciesarray[$fieldsentitiesarray[$field]])) if (!empty($fieldsentitiesarray[$field]) && !empty($fieldsdependenciesarray[$fieldsentitiesarray[$field]])) {
{
// We found a dependency on the type of field // 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')) $tmp = $fieldsdependenciesarray[$fieldsentitiesarray[$field]]; // $fieldsdependenciesarray=array('element'=>'fd.rowid') or array('element'=>array('fd.rowid','ab.rowid'))
if (is_array($tmp)) $listofdependencies = $tmp; if (is_array($tmp)) {
else $listofdependencies = array($tmp); $listofdependencies = $tmp;
} elseif (!empty($field) && !empty($fieldsdependenciesarray[$field])) } else {
{ $listofdependencies = array($tmp);
}
} elseif (!empty($field) && !empty($fieldsdependenciesarray[$field])) {
// We found a dependency on a dedicated field // 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')) $tmp = $fieldsdependenciesarray[$field]; // $fieldsdependenciesarray=array('fd.fieldx'=>'fd.rowid') or array('fd.fieldx'=>array('fd.rowid','ab.rowid'))
if (is_array($tmp)) $listofdependencies = $tmp; if (is_array($tmp)) {
else $listofdependencies = array($tmp); $listofdependencies = $tmp;
} else {
$listofdependencies = array($tmp);
}
} }
if (count($listofdependencies)) if (count($listofdependencies)) {
{ foreach ($listofdependencies as $fieldid) {
foreach ($listofdependencies as $fieldid) if (empty($array_selected[$fieldid])) {
{
if (empty($array_selected[$fieldid]))
{
$array_selected[$fieldid] = count($array_selected) + 1; // We tag the key $fieldid as "selected" $array_selected[$fieldid] = count($array_selected) + 1; // We tag the key $fieldid as "selected"
$warnings[] = $langs->trans("ExportFieldAutomaticallyAdded", $langs->transnoentitiesnoconv($fieldsarray[$fieldid])); $warnings[] = $langs->trans("ExportFieldAutomaticallyAdded", $langs->transnoentitiesnoconv($fieldsarray[$fieldid]));
} }
@ -214,10 +214,8 @@ if ($action == 'selectfield') // Selection of field at step 2
setEventMessages($warnings, null, 'warnings'); setEventMessages($warnings, null, 'warnings');
} }
} }
if ($action == 'unselectfield') if ($action == 'unselectfield') {
{ if ($_GET["field"] == 'all') {
if ($_GET["field"] == 'all')
{
$array_selected = array(); $array_selected = array();
$_SESSION["export_selected_fields"] = $array_selected; $_SESSION["export_selected_fields"] = $array_selected;
} else { } else {
@ -226,8 +224,7 @@ if ($action == 'unselectfield')
asort($array_selected); asort($array_selected);
$i = 0; $i = 0;
$array_selected_save = $array_selected; $array_selected_save = $array_selected;
foreach ($array_selected as $code=>$value) foreach ($array_selected as $code => $value) {
{
$i++; $i++;
$array_selected[$code] = $i; $array_selected[$code] = $i;
//print "x $code x $i y<br>"; //print "x $code x $i y<br>";
@ -236,52 +233,48 @@ if ($action == 'unselectfield')
} }
} }
if ($action == 'downfield' || $action == 'upfield') if ($action == 'downfield' || $action == 'upfield') {
{
$pos = $array_selected[$_GET["field"]]; $pos = $array_selected[$_GET["field"]];
if ($action == 'downfield') $newpos = $pos + 1; if ($action == 'downfield') {
if ($action == 'upfield') $newpos = $pos - 1; $newpos = $pos + 1;
}
if ($action == 'upfield') {
$newpos = $pos - 1;
}
// Recherche code avec qui switcher // Recherche code avec qui switcher
$newcode = ""; $newcode = "";
foreach ($array_selected as $code=>$value) foreach ($array_selected as $code => $value) {
{ if ($value == $newpos) {
if ($value == $newpos)
{
$newcode = $code; $newcode = $code;
break; break;
} }
} }
//print("Switch pos=$pos (code=".$_GET["field"].") and newpos=$newpos (code=$newcode)"); //print("Switch pos=$pos (code=".$_GET["field"].") and newpos=$newpos (code=$newcode)");
if ($newcode) // Si newcode trouve (protection contre resoumission de page) if ($newcode) { // Si newcode trouve (protection contre resoumission de page)
{
$array_selected[$_GET["field"]] = $newpos; $array_selected[$_GET["field"]] = $newpos;
$array_selected[$newcode] = $pos; $array_selected[$newcode] = $pos;
$_SESSION["export_selected_fields"] = $array_selected; $_SESSION["export_selected_fields"] = $array_selected;
} }
} }
if ($step == 1 || $action == 'cleanselect') if ($step == 1 || $action == 'cleanselect') {
{
$_SESSION["export_selected_fields"] = array(); $_SESSION["export_selected_fields"] = array();
$_SESSION["export_filtered_fields"] = array(); $_SESSION["export_filtered_fields"] = array();
$array_selected = array(); $array_selected = array();
$array_filtervalue = array(); $array_filtervalue = array();
} }
if ($action == 'builddoc') if ($action == 'builddoc') {
{
$max_execution_time_for_importexport = (empty($conf->global->EXPORT_MAX_EXECUTION_TIME) ? 300 : $conf->global->EXPORT_MAX_EXECUTION_TIME); // 5mn if not defined $max_execution_time_for_importexport = (empty($conf->global->EXPORT_MAX_EXECUTION_TIME) ? 300 : $conf->global->EXPORT_MAX_EXECUTION_TIME); // 5mn if not defined
$max_time = @ini_get("max_execution_time"); $max_time = @ini_get("max_execution_time");
if ($max_time && $max_time < $max_execution_time_for_importexport) if ($max_time && $max_time < $max_execution_time_for_importexport) {
{
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."); 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 @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
} }
// Build export file // Build export file
$result = $objexport->build_file($user, GETPOST('model', 'alpha'), $datatoexport, $array_selected, $array_filtervalue); $result = $objexport->build_file($user, GETPOST('model', 'alpha'), $datatoexport, $array_selected, $array_filtervalue);
if ($result < 0) if ($result < 0) {
{
setEventMessages($objexport->error, $objexport->errors, 'errors'); setEventMessages($objexport->error, $objexport->errors, 'errors');
$sqlusedforexport = $objexport->sqlusedforexport; $sqlusedforexport = $objexport->sqlusedforexport;
} else { } else {
@ -291,47 +284,46 @@ if ($action == 'builddoc')
} }
// Delete file // Delete file
if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes') if ($step == 5 && $action == 'confirm_deletefile' && $confirm == 'yes') {
{
$file = $upload_dir."/".GETPOST('file'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). $file = $upload_dir."/".GETPOST('file'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
$ret = dol_delete_file($file); $ret = dol_delete_file($file);
if ($ret) setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); if ($ret) {
else setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors'); setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs');
} else {
setEventMessages($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), null, 'errors');
}
header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport); header('Location: '.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport);
exit; exit;
} }
if ($action == 'deleteprof') if ($action == 'deleteprof') {
{ if (GETPOST("id", 'int')) {
if (GETPOST("id", 'int'))
{
$objexport->fetch(GETPOST('id', 'int')); $objexport->fetch(GETPOST('id', 'int'));
$result = $objexport->delete($user); $result = $objexport->delete($user);
} }
} }
// 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. // 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.
if ($action == 'add_export_model') if ($action == 'add_export_model') {
{ if ($export_name) {
if ($export_name)
{
asort($array_selected); asort($array_selected);
// Set save string // Set save string
$hexa = ''; $hexa = '';
foreach ($array_selected as $key=>$val) foreach ($array_selected as $key => $val) {
{ if ($hexa) {
if ($hexa) $hexa .= ','; $hexa .= ',';
}
$hexa .= $key; $hexa .= $key;
} }
$hexafiltervalue = ''; $hexafiltervalue = '';
if (!empty($array_filtervalue) && is_array($array_filtervalue)) if (!empty($array_filtervalue) && is_array($array_filtervalue)) {
{ foreach ($array_filtervalue as $key => $val) {
foreach ($array_filtervalue as $key=>$val) if ($hexafiltervalue) {
{ $hexafiltervalue .= ',';
if ($hexafiltervalue) $hexafiltervalue .= ','; }
$hexafiltervalue .= $key.'='.$val; $hexafiltervalue .= $key.'='.$val;
} }
} }
@ -342,14 +334,15 @@ if ($action == 'add_export_model')
$objexport->hexafiltervalue = $hexafiltervalue; $objexport->hexafiltervalue = $hexafiltervalue;
$result = $objexport->create($user); $result = $objexport->create($user);
if ($result >= 0) if ($result >= 0) {
{
setEventMessages($langs->trans("ExportModelSaved", $objexport->model_name), null, 'mesgs'); setEventMessages($langs->trans("ExportModelSaved", $objexport->model_name), null, 'mesgs');
} else { } else {
$langs->load("errors"); $langs->load("errors");
if ($objexport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') if ($objexport->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
setEventMessages($langs->trans("ErrorExportDuplicateProfil"), null, 'errors'); setEventMessages($langs->trans("ErrorExportDuplicateProfil"), null, 'errors');
else setEventMessages($objexport->error, $objexport->errors, 'errors'); } else {
setEventMessages($objexport->error, $objexport->errors, 'errors');
}
} }
} else { } else {
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("ExportModelName")), null, 'errors'); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("ExportModelName")), null, 'errors');
@ -357,8 +350,7 @@ if ($action == 'add_export_model')
} }
// Reload a predefined export model // Reload a predefined export model
if ($step == 2 && $action == 'select_model') if ($step == 2 && $action == 'select_model') {
{
$_SESSION["export_selected_fields"] = array(); $_SESSION["export_selected_fields"] = array();
$_SESSION["export_filtered_fields"] = array(); $_SESSION["export_filtered_fields"] = array();
@ -366,12 +358,10 @@ if ($step == 2 && $action == 'select_model')
$array_filtervalue = array(); $array_filtervalue = array();
$result = $objexport->fetch($exportmodelid); $result = $objexport->fetch($exportmodelid);
if ($result > 0) if ($result > 0) {
{
$fieldsarray = preg_split("/,(?! [^(]*\))/", $objexport->hexa); $fieldsarray = preg_split("/,(?! [^(]*\))/", $objexport->hexa);
$i = 1; $i = 1;
foreach ($fieldsarray as $val) foreach ($fieldsarray as $val) {
{
$array_selected[$val] = $i; $array_selected[$val] = $i;
$i++; $i++;
} }
@ -379,8 +369,7 @@ if ($step == 2 && $action == 'select_model')
$fieldsarrayvalue = explode(',', $objexport->hexafiltervalue); $fieldsarrayvalue = explode(',', $objexport->hexafiltervalue);
$i = 1; $i = 1;
foreach ($fieldsarrayvalue as $val) foreach ($fieldsarrayvalue as $val) {
{
$tmp = explode('=', $val); $tmp = explode('=', $val);
$array_filtervalue[$tmp[0]] = $tmp[1]; $array_filtervalue[$tmp[0]] = $tmp[1];
$i++; $i++;
@ -390,21 +379,20 @@ if ($step == 2 && $action == 'select_model')
} }
// Get form with filters // Get form with filters
if ($step == 4 && $action == 'submitFormField') if ($step == 4 && $action == 'submitFormField') {
{
// on boucle sur les champs selectionne pour recuperer la valeur // on boucle sur les champs selectionne pour recuperer la valeur
if (is_array($objexport->array_export_TypeFields[0])) if (is_array($objexport->array_export_TypeFields[0])) {
{
$_SESSION["export_filtered_fields"] = array(); $_SESSION["export_filtered_fields"] = array();
foreach ($objexport->array_export_TypeFields[0] as $code => $type) // $code: s.fieldname $value: Text|Boolean|List:ccc foreach ($objexport->array_export_TypeFields[0] as $code => $type) { // $code: s.fieldname $value: Text|Boolean|List:ccc
{
$newcode = (string) preg_replace('/\./', '_', $code); $newcode = (string) preg_replace('/\./', '_', $code);
//print 'xxx'.$code."=".$newcode."=".$type."=".$_POST[$newcode]."\n<br>"; //print 'xxx'.$code."=".$newcode."=".$type."=".$_POST[$newcode]."\n<br>";
$filterqualified = 1; $filterqualified = 1;
if (!GETPOSTISSET($newcode) || GETPOST($newcode, 'restricthtml') == '') $filterqualified = 0; if (!GETPOSTISSET($newcode) || GETPOST($newcode, 'restricthtml') == '') {
elseif (preg_match('/^List/', $type) && (is_numeric(GETPOST($newcode, 'restricthtml')) && GETPOST($newcode, 'restricthtml') <= 0)) $filterqualified = 0; $filterqualified = 0;
if ($filterqualified) } elseif (preg_match('/^List/', $type) && (is_numeric(GETPOST($newcode, 'restricthtml')) && GETPOST($newcode, 'restricthtml') <= 0)) {
{ $filterqualified = 0;
}
if ($filterqualified) {
//print 'Filter on '.$newcode.' type='.$type.' value='.$_POST[$newcode]."\n"; //print 'Filter on '.$newcode.' type='.$type.' value='.$_POST[$newcode]."\n";
$objexport->array_export_FilterValue[0][$code] = GETPOST($newcode, 'restricthtml'); $objexport->array_export_FilterValue[0][$code] = GETPOST($newcode, 'restricthtml');
} }
@ -419,8 +407,7 @@ if ($step == 4 && $action == 'submitFormField')
* View * View
*/ */
if ($step == 1 || !$datatoexport) if ($step == 1 || !$datatoexport) {
{
llxHeader('', $langs->trans("NewExport"), 'EN:Module_Exports_En|FR:Module_Exports|ES:M&oacute;dulo_Exportaciones'); llxHeader('', $langs->trans("NewExport"), 'EN:Module_Exports_En|FR:Module_Exports|ES:M&oacute;dulo_Exportaciones');
$h = 0; $h = 0;
@ -443,13 +430,11 @@ if ($step == 1 || !$datatoexport)
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print '</tr>'; print '</tr>';
if (count($objexport->array_export_module)) if (count($objexport->array_export_module)) {
{
asort($objexport->array_export_code_for_sort); asort($objexport->array_export_code_for_sort);
//var_dump($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); //$sortedarrayofmodules = dol_sort_array($objexport->array_export_module, 'module_position', 'asc', 0, 0, 1);
foreach ($objexport->array_export_code_for_sort as $key => $value) foreach ($objexport->array_export_code_for_sort as $key => $value) {
{
print '<tr class="oddeven"><td nospan="nospan">'; print '<tr class="oddeven"><td nospan="nospan">';
//print img_object($objexport->array_export_module[$key]->getName(),$export->array_export_module[$key]->picto).' '; //print img_object($objexport->array_export_module[$key]->getName(),$export->array_export_module[$key]->picto).' ';
print $objexport->array_export_module[$key]->getName(); print $objexport->array_export_module[$key]->getName();
@ -466,7 +451,7 @@ if ($step == 1 || !$datatoexport)
} else { } else {
print $langs->trans("NotEnoughPermissions"); print $langs->trans("NotEnoughPermissions");
} }
print '</td></tr>'; print '</td></tr>';
} }
} else { } else {
print '<tr><td class="oddeven" colspan="3">'.$langs->trans("NoExportableData").'</td></tr>'; print '<tr><td class="oddeven" colspan="3">'.$langs->trans("NoExportableData").'</td></tr>';
@ -477,8 +462,7 @@ if ($step == 1 || !$datatoexport)
print '</div>'; print '</div>';
} }
if ($step == 2 && $datatoexport) if ($step == 2 && $datatoexport) {
{
llxHeader('', $langs->trans("NewExport"), 'EN:Module_Exports_En|FR:Module_Exports|ES:M&oacute;dulo_Exportaciones'); llxHeader('', $langs->trans("NewExport"), 'EN:Module_Exports_En|FR:Module_Exports|ES:M&oacute;dulo_Exportaciones');
$h = 0; $h = 0;
@ -505,14 +489,14 @@ if ($step == 2 && $datatoexport)
print $objexport->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a exporter // Lot de donnees a exporter
print '<tr><td>'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td>'.$langs->trans("DatasetToExport").'</td>';
print '<td>'; print '<td>';
$entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]); $entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]);
$entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity); $entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity);
print img_object($objexport->array_export_module[0]->getName(), $entityicon).' '; print img_object($objexport->array_export_module[0]->getName(), $entityicon).' ';
print $objexport->array_export_label[0]; print $objexport->array_export_label[0];
print '</td></tr>'; print '</td></tr>';
print '</table>'; print '</table>';
print '</div>'; print '</div>';
@ -568,8 +552,7 @@ if ($step == 2 && $datatoexport)
$i = 0; $i = 0;
foreach ($fieldsarray as $code=>$label) foreach ($fieldsarray as $code => $label) {
{
print '<tr class="oddeven">'; print '<tr class="oddeven">';
$i++; $i++;
@ -583,8 +566,7 @@ if ($step == 2 && $datatoexport)
//print $code.'-'.$label.'-'.$entity; //print $code.'-'.$label.'-'.$entity;
$tmparray = explode(':', $entityicon); $tmparray = explode(':', $entityicon);
if (count($tmparray) >= 2) if (count($tmparray) >= 2) {
{
$entityicon = $tmparray[0]; $entityicon = $tmparray[0];
$entitylang = $tmparray[1]; $entitylang = $tmparray[1];
} }
@ -595,27 +577,22 @@ if ($step == 2 && $datatoexport)
$tablename = getablenamefromfield($code, $sqlmaxforexport); $tablename = getablenamefromfield($code, $sqlmaxforexport);
$htmltext = '<b>'.$langs->trans("Name").":</b> ".$text.'<br>'; $htmltext = '<b>'.$langs->trans("Name").":</b> ".$text.'<br>';
if (!empty($objexport->array_export_special[0][$code])) if (!empty($objexport->array_export_special[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>"; $htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>";
} else { } else {
$htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>"; $htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>";
} }
if (!empty($objexport->array_export_examplevalues[0][$code])) if (!empty($objexport->array_export_examplevalues[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>';
} }
if (!empty($objexport->array_export_TypeFields[0][$code])) if (!empty($objexport->array_export_TypeFields[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>';
} }
if (!empty($objexport->array_export_help[0][$code])) if (!empty($objexport->array_export_help[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>'; $htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>';
} }
if (isset($array_selected[$code]) && $array_selected[$code]) if (isset($array_selected[$code]) && $array_selected[$code]) {
{
// Selected fields // Selected fields
print '<td>&nbsp;</td>'; print '<td>&nbsp;</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 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>';
@ -642,15 +619,13 @@ if ($step == 2 && $datatoexport)
print '</div>'; print '</div>';
/* /*
* Barre d'action * Barre d'action
*/ */
print '<div class="tabsAction tabsActionNoBottom">'; print '<div class="tabsAction tabsActionNoBottom">';
if (count($array_selected)) if (count($array_selected)) {
{
// If filters exist // If filters exist
if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) {
{
print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>'; print '<a class="butAction" href="export.php?step=3&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
} else { } else {
print '<a class="butAction" href="export.php?step=4&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>'; print '<a class="butAction" href="export.php?step=4&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
@ -662,10 +637,8 @@ if ($step == 2 && $datatoexport)
print '</div>'; print '</div>';
} }
if ($step == 3 && $datatoexport) if ($step == 3 && $datatoexport) {
{ if (count($array_selected) < 1) { // This occurs when going back to page after sessecion expired
if (count($array_selected) < 1) // This occurs when going back to page after sessecion expired
{
// Switch to step 2 // Switch to step 2
header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport); header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport);
exit; exit;
@ -713,8 +686,7 @@ if ($step == 3 && $datatoexport)
// Nbre champs exportes // Nbre champs exportes
print '<tr><td>'.$langs->trans("ExportedFields").'</td>'; print '<tr><td>'.$langs->trans("ExportedFields").'</td>';
$list = ''; $list = '';
foreach ($array_selected as $code=>$value) foreach ($array_selected as $code => $value) {
{
$list .= (!empty($list) ? ', ' : ''); $list .= (!empty($list) ? ', ' : '');
$list .= (isset($objexport->array_export_fields[0][$code]) ? $langs->trans($objexport->array_export_fields[0][$code]) : ''); $list .= (isset($objexport->array_export_fields[0][$code]) ? $langs->trans($objexport->array_export_fields[0][$code]) : '');
} }
@ -755,8 +727,7 @@ if ($step == 3 && $datatoexport)
$i = 0; $i = 0;
// on boucle sur les champs // on boucle sur les champs
foreach ($fieldsarray as $code => $label) foreach ($fieldsarray as $code => $label) {
{
print '<tr class="oddeven">'; print '<tr class="oddeven">';
$i++; $i++;
@ -767,8 +738,7 @@ if ($step == 3 && $datatoexport)
print '<td class="nowrap">'; print '<td class="nowrap">';
// If value of entityicon=entitylang='icon:Label' // If value of entityicon=entitylang='icon:Label'
$tmparray = explode(':', $entityicon); $tmparray = explode(':', $entityicon);
if (count($tmparray) >= 2) if (count($tmparray) >= 2) {
{
$entityicon = $tmparray[0]; $entityicon = $tmparray[0];
$entitylang = $tmparray[1]; $entitylang = $tmparray[1];
} }
@ -782,22 +752,18 @@ if ($step == 3 && $datatoexport)
$tablename = getablenamefromfield($code, $sqlmaxforexport); $tablename = getablenamefromfield($code, $sqlmaxforexport);
$htmltext = '<b>'.$langs->trans("Name").':</b> '.$text.'<br>'; $htmltext = '<b>'.$langs->trans("Name").':</b> '.$text.'<br>';
if (!empty($objexport->array_export_special[0][$code])) if (!empty($objexport->array_export_special[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>"; $htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>";
} else { } else {
$htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>"; $htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>";
} }
if (!empty($objexport->array_export_examplevalues[0][$code])) if (!empty($objexport->array_export_examplevalues[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>';
} }
if (!empty($objexport->array_export_TypeFields[0][$code])) if (!empty($objexport->array_export_TypeFields[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>';
} }
if (!empty($objexport->array_export_help[0][$code])) if (!empty($objexport->array_export_help[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>'; $htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>';
} }
@ -807,11 +773,9 @@ if ($step == 3 && $datatoexport)
// Filter value // Filter value
print '<td>'; print '<td>';
if (!empty($Typefieldsarray[$code])) // Example: Text, List:c_country:label:rowid, Number, Boolean if (!empty($Typefieldsarray[$code])) { // Example: Text, List:c_country:label:rowid, Number, Boolean
{
$szInfoFiltre = $objexport->genDocFilter($Typefieldsarray[$code]); $szInfoFiltre = $objexport->genDocFilter($Typefieldsarray[$code]);
if ($szInfoFiltre) // Is there an info help for this filter ? if ($szInfoFiltre) { // Is there an info help for this filter ?
{
$tmp = $objexport->build_filterField($Typefieldsarray[$code], $code, $ValueFilter); $tmp = $objexport->build_filterField($Typefieldsarray[$code], $code, $ValueFilter);
print $form->textwithpicto($tmp, $szInfoFiltre); print $form->textwithpicto($tmp, $szInfoFiltre);
} else { } else {
@ -837,10 +801,8 @@ if ($step == 3 && $datatoexport)
print '</div>'; print '</div>';
} }
if ($step == 4 && $datatoexport) if ($step == 4 && $datatoexport) {
{ if (count($array_selected) < 1) { // This occurs when going back to page after sessecion expired
if (count($array_selected) < 1) // This occurs when going back to page after sessecion expired
{
// Switch to step 2 // Switch to step 2
header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport); header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport);
exit; exit;
@ -862,8 +824,7 @@ if ($step == 4 && $datatoexport)
$h++; $h++;
// If filters exist // If filters exist
if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) {
{
$head[$h][0] = DOL_URL_ROOT.'/exports/export.php?step=3&datatoexport='.$datatoexport; $head[$h][0] = DOL_URL_ROOT.'/exports/export.php?step=3&datatoexport='.$datatoexport;
$head[$h][1] = $langs->trans("Step")." 3"; $head[$h][1] = $langs->trans("Step")." 3";
$h++; $h++;
@ -888,20 +849,19 @@ if ($step == 4 && $datatoexport)
print $objexport->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Lot de donnees a exporter // Lot de donnees a exporter
print '<tr><td>'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td>'.$langs->trans("DatasetToExport").'</td>';
print '<td>'; print '<td>';
$entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]); $entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]);
$entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity); $entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity);
print img_object($objexport->array_export_module[0]->getName(), $entityicon).' '; print img_object($objexport->array_export_module[0]->getName(), $entityicon).' ';
print $objexport->array_export_label[0]; print $objexport->array_export_label[0];
print '</td></tr>'; print '</td></tr>';
// List of exported fields // List of exported fields
print '<tr><td>'.$langs->trans("ExportedFields").'</td>'; print '<tr><td>'.$langs->trans("ExportedFields").'</td>';
$list = ''; $list = '';
foreach ($array_selected as $code=>$value) foreach ($array_selected as $code => $value) {
{
$list .= (!empty($list) ? ', ' : ''); $list .= (!empty($list) ? ', ' : '');
$list .= $langs->trans($objexport->array_export_fields[0][$code]); $list .= $langs->trans($objexport->array_export_fields[0][$code]);
} }
@ -909,19 +869,18 @@ if ($step == 4 && $datatoexport)
print '</tr>'; print '</tr>';
// List of filtered fiels // List of filtered fiels
if (isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) if (isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) {
{
print '<tr><td>'.$langs->trans("FilteredFields").'</td>'; print '<tr><td>'.$langs->trans("FilteredFields").'</td>';
$list = ''; $list = '';
if (!empty($array_filtervalue)) if (!empty($array_filtervalue)) {
{ foreach ($array_filtervalue as $code => $value) {
foreach ($array_filtervalue as $code=>$value) if (isset($objexport->array_export_fields[0][$code])) {
{
if (isset($objexport->array_export_fields[0][$code]))
{
$list .= ($list ? ', ' : ''); $list .= ($list ? ', ' : '');
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] : ''); if (isset($array_filtervalue[$code]) && preg_match('/^\s*[<>]/', $array_filtervalue[$code])) {
else $list .= $langs->trans($objexport->array_export_fields[0][$code])."='".(isset($array_filtervalue[$code]) ? $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] : '')."'";
}
} }
} }
} }
@ -949,8 +908,7 @@ if ($step == 4 && $datatoexport)
//print '<td>'.$langs->trans("FieldsTitle").'</td>'; //print '<td>'.$langs->trans("FieldsTitle").'</td>';
print '</tr>'; print '</tr>';
foreach ($array_selected as $code=>$value) foreach ($array_selected as $code => $value) {
{
print '<tr class="oddeven">'; print '<tr class="oddeven">';
$entity = (!empty($objexport->array_export_entities[0][$code]) ? $objexport->array_export_entities[0][$code] : $objexport->array_export_icon[0]); $entity = (!empty($objexport->array_export_entities[0][$code]) ? $objexport->array_export_entities[0][$code] : $objexport->array_export_icon[0]);
@ -960,8 +918,7 @@ if ($step == 4 && $datatoexport)
print '<td class="nowrap">'; print '<td class="nowrap">';
// If value of entityicon=entitylang='icon:Label' // If value of entityicon=entitylang='icon:Label'
$tmparray = explode(':', $entityicon); $tmparray = explode(':', $entityicon);
if (count($tmparray) >= 2) if (count($tmparray) >= 2) {
{
$entityicon = $tmparray[0]; $entityicon = $tmparray[0];
$entitylang = $tmparray[1]; $entitylang = $tmparray[1];
} }
@ -974,22 +931,18 @@ if ($step == 4 && $datatoexport)
$tablename = getablenamefromfield($code, $sqlmaxforexport); $tablename = getablenamefromfield($code, $sqlmaxforexport);
$htmltext = '<b>'.$langs->trans("Name").':</b> '.$text.'<br>'; $htmltext = '<b>'.$langs->trans("Name").':</b> '.$text.'<br>';
if (!empty($objexport->array_export_special[0][$code])) if (!empty($objexport->array_export_special[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>"; $htmltext .= '<b>'.$langs->trans("ComputedField")." -> ".$langs->trans("Method")." :</b> ".$objexport->array_export_special[0][$code]."<br>";
} else { } else {
$htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>"; $htmltext .= '<b>'.$langs->trans("Table")." -> ".$langs->trans("Field").":</b> ".$tablename." -> ".preg_replace('/^.*\./', '', $code)."<br>";
} }
if (!empty($objexport->array_export_examplevalues[0][$code])) if (!empty($objexport->array_export_examplevalues[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("SourceExample").':</b> '.$objexport->array_export_examplevalues[0][$code].'<br>';
} }
if (!empty($objexport->array_export_TypeFields[0][$code])) if (!empty($objexport->array_export_TypeFields[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>'; $htmltext .= '<b>'.$langs->trans("Type").':</b> '.$objexport->array_export_TypeFields[0][$code].'<br>';
} }
if (!empty($objexport->array_export_help[0][$code])) if (!empty($objexport->array_export_help[0][$code])) {
{
$htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>'; $htmltext .= '<b>'.$langs->trans("Help").':</b> '.$langs->trans($objexport->array_export_help[0][$code]).'<br>';
} }
@ -1001,8 +954,12 @@ if ($step == 4 && $datatoexport)
print '<td class="right" width="100">'; print '<td class="right" width="100">';
print $value.' '; print $value.' ';
print '</td><td class="center nowraponall" width="40">'; print '</td><td class="center nowraponall" width="40">';
if ($value < count($array_selected)) print '<a href="'.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport.'&action=downfield&field='.$code.'">'.img_down().'</a>'; if ($value < count($array_selected)) {
if ($value > 1) print '<a href="'.$_SERVER["PHP_SELF"].'?step='.$step.'&datatoexport='.$datatoexport.'&action=upfield&field='.$code.'">'.img_up().'</a>'; 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>';
}
print '</td>'; print '</td>';
//print '<td>&nbsp;</td>'; //print '<td>&nbsp;</td>';
@ -1017,13 +974,12 @@ if ($step == 4 && $datatoexport)
print '</div>'; print '</div>';
/* /*
* Barre d'action * Barre d'action
* *
*/ */
print '<div class="tabsAction">'; print '<div class="tabsAction">';
if (count($array_selected)) if (count($array_selected)) {
{
print '<a class="butAction" href="export.php?step='.($step + 1).'&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>'; print '<a class="butAction" href="export.php?step='.($step + 1).'&datatoexport='.$datatoexport.'">'.$langs->trans("NextStep").'</a>';
} }
@ -1031,8 +987,7 @@ if ($step == 4 && $datatoexport)
// Area for profils export // Area for profils export
if (count($array_selected)) if (count($array_selected)) {
{
print '<br>'; print '<br>';
print '<div class="marginbottomonly">'; print '<div class="marginbottomonly">';
@ -1062,15 +1017,15 @@ if ($step == 4 && $datatoexport)
$sql = "SELECT rowid, label"; $sql = "SELECT rowid, label";
$sql .= " FROM ".MAIN_DB_PREFIX."export_model"; $sql .= " FROM ".MAIN_DB_PREFIX."export_model";
$sql .= " WHERE type = '".$db->escape($datatoexport)."'"; $sql .= " WHERE type = '".$db->escape($datatoexport)."'";
if (empty($conf->global->EXPORTS_SHARE_MODELS))$sql .= " AND fk_user=".$user->id; if (empty($conf->global->EXPORTS_SHARE_MODELS)) {
$sql .= " AND fk_user=".$user->id;
}
$sql .= " ORDER BY rowid"; $sql .= " ORDER BY rowid";
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql) {
{
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num) {
{
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
print '<tr class="oddeven"><td>'; print '<tr class="oddeven"><td>';
print $obj->label; print $obj->label;
@ -1092,10 +1047,8 @@ if ($step == 4 && $datatoexport)
} }
} }
if ($step == 5 && $datatoexport) if ($step == 5 && $datatoexport) {
{ if (count($array_selected) < 1) { // This occurs when going back to page after sessecion expired
if (count($array_selected) < 1) // This occurs when going back to page after sessecion expired
{
// Switch to step 2 // Switch to step 2
header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport); header("Location: ".DOL_URL_ROOT.'/exports/export.php?step=2&datatoexport='.$datatoexport);
exit; exit;
@ -1117,8 +1070,7 @@ if ($step == 5 && $datatoexport)
$h++; $h++;
// si le filtrage est parametre pour l'export ou pas // si le filtrage est parametre pour l'export ou pas
if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) if ($usefilters && isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) {
{
$head[$h][0] = DOL_URL_ROOT.'/exports/export.php?step=3&datatoexport='.$datatoexport; $head[$h][0] = DOL_URL_ROOT.'/exports/export.php?step=3&datatoexport='.$datatoexport;
$head[$h][1] = $langs->trans("Step")." 3"; $head[$h][1] = $langs->trans("Step")." 3";
$h++; $h++;
@ -1137,10 +1089,9 @@ if ($step == 5 && $datatoexport)
print dol_get_fiche_head($head, $hselected, '', -2); print dol_get_fiche_head($head, $hselected, '', -2);
/* /*
* Confirmation suppression fichier * Confirmation suppression fichier
*/ */
if ($action == 'remove_file') if ($action == 'remove_file') {
{
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 $form->formconfirm($_SERVER["PHP_SELF"].'?step=5&datatoexport='.$datatoexport.'&file='.urlencode(GETPOST("file")), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1);
} }
@ -1156,39 +1107,37 @@ if ($step == 5 && $datatoexport)
print $objexport->array_export_module[0]->getName(); print $objexport->array_export_module[0]->getName();
print '</td></tr>'; print '</td></tr>';
// Dataset to export // Dataset to export
print '<tr><td>'.$langs->trans("DatasetToExport").'</td>'; print '<tr><td>'.$langs->trans("DatasetToExport").'</td>';
print '<td>'; print '<td>';
$entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]); $entity = preg_replace('/:.*$/', '', $objexport->array_export_icon[0]);
$entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity); $entityicon = strtolower(!empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity);
print img_object($objexport->array_export_module[0]->getName(), $entityicon).' '; print img_object($objexport->array_export_module[0]->getName(), $entityicon).' ';
print $objexport->array_export_label[0]; print $objexport->array_export_label[0];
print '</td></tr>'; print '</td></tr>';
// List of exported fields // List of exported fields
print '<tr><td>'.$langs->trans("ExportedFields").'</td>'; print '<tr><td>'.$langs->trans("ExportedFields").'</td>';
$list = ''; $list = '';
foreach ($array_selected as $code=>$label) foreach ($array_selected as $code => $label) {
{
$list .= (!empty($list) ? ', ' : ''); $list .= (!empty($list) ? ', ' : '');
$list .= $langs->trans($objexport->array_export_fields[0][$code]); $list .= $langs->trans($objexport->array_export_fields[0][$code]);
} }
print '<td>'.$list.'</td></tr>'; print '<td>'.$list.'</td></tr>';
// List of filtered fields // List of filtered fields
if (isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) if (isset($objexport->array_export_TypeFields[0]) && is_array($objexport->array_export_TypeFields[0])) {
{
print '<tr><td>'.$langs->trans("FilteredFields").'</td>'; print '<tr><td>'.$langs->trans("FilteredFields").'</td>';
$list = ''; $list = '';
if (!empty($array_filtervalue)) if (!empty($array_filtervalue)) {
{ foreach ($array_filtervalue as $code => $value) {
foreach ($array_filtervalue as $code=>$value) if (isset($objexport->array_export_fields[0][$code])) {
{
if (isset($objexport->array_export_fields[0][$code]))
{
$list .= ($list ? ', ' : ''); $list .= ($list ? ', ' : '');
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] : ''); if (isset($array_filtervalue[$code]) && preg_match('/^\s*[<>]/', $array_filtervalue[$code])) {
else $list .= $langs->trans($objexport->array_export_fields[0][$code])."='".(isset($array_filtervalue[$code]) ? $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] : '')."'";
}
} }
} }
} }
@ -1211,10 +1160,8 @@ if ($step == 5 && $datatoexport)
$liste = $objmodelexport->liste_modeles($db); $liste = $objmodelexport->liste_modeles($db);
$listeall = $liste; $listeall = $liste;
foreach ($listeall as $key => $val) foreach ($listeall as $key => $val) {
{ if (preg_match('/__\(Disabled\)__/', $listeall[$key])) {
if (preg_match('/__\(Disabled\)__/', $listeall[$key]))
{
$listeall[$key] = preg_replace('/__\(Disabled\)__/', '('.$langs->transnoentitiesnoconv("Disabled").')', $listeall[$key]); $listeall[$key] = preg_replace('/__\(Disabled\)__/', '('.$langs->transnoentitiesnoconv("Disabled").')', $listeall[$key]);
unset($liste[$key]); unset($liste[$key]);
} }
@ -1237,13 +1184,14 @@ if ($step == 5 && $datatoexport)
print '</div>'; print '</div>';
if ($sqlusedforexport && $user->admin) if ($sqlusedforexport && $user->admin) {
{
print info_admin($langs->trans("SQLUsedForExport").':<br> '.$sqlusedforexport, 0, 0, 1, '', 'TechnicalInformation'); print info_admin($langs->trans("SQLUsedForExport").':<br> '.$sqlusedforexport, 0, 0, 1, '', 'TechnicalInformation');
} }
if (!is_dir($conf->export->dir_temp)) dol_mkdir($conf->export->dir_temp); if (!is_dir($conf->export->dir_temp)) {
dol_mkdir($conf->export->dir_temp);
}
// Show existing generated documents // Show existing generated documents
// NB: La fonction show_documents rescanne les modules qd genallowed=1, sinon prend $liste // NB: La fonction show_documents rescanne les modules qd genallowed=1, sinon prend $liste
@ -1273,8 +1221,9 @@ function getablenamefromfield($code, $sqlmaxforexport)
$newsql = preg_replace('/^(.*) FROM /i', '', $newsql); // Remove part before the FROM $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 $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
if (preg_match($regexstring, $newsql, $reg)) if (preg_match($regexstring, $newsql, $reg)) {
{
return $reg[1]; // The tablename return $reg[1]; // The tablename
} else return ''; } else {
return '';
}
} }

View File

@ -48,8 +48,7 @@ print '<br>';
print '<div class="center">'; print '<div class="center">';
if (count($export->array_export_code)) if (count($export->array_export_code)) {
{
print dolGetButtonTitle($langs->trans('NewExport'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/exports/export.php?leftmenu=export', '', $user->rights->export->creer); print dolGetButtonTitle($langs->trans('NewExport'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/exports/export.php?leftmenu=export', '', $user->rights->export->creer);
} }
print '</div>'; print '</div>';
@ -71,10 +70,8 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/export/modules_export.php';
$model = new ModeleExports($db); $model = new ModeleExports($db);
$liste = $model->liste_modeles($db); // This is not a static method for exports because method load non static properties $liste = $model->liste_modeles($db); // This is not a static method for exports because method load non static properties
foreach ($liste as $key => $val) foreach ($liste as $key => $val) {
{ if (preg_match('/__\(Disabled\)__/', $liste[$key])) {
if (preg_match('/__\(Disabled\)__/', $liste[$key]))
{
$liste[$key] = preg_replace('/__\(Disabled\)__/', '('.$langs->transnoentitiesnoconv("Disabled").')', $liste[$key]); $liste[$key] = preg_replace('/__\(Disabled\)__/', '('.$langs->transnoentitiesnoconv("Disabled").')', $liste[$key]);
} }

View File

@ -26,14 +26,17 @@
* \brief Page de configuration du module externalsite * \brief Page de configuration du module externalsite
*/ */
if (!defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check anti CSRF attack test if (!defined('NOSCANPOSTFORINJECTION')) {
define('NOSCANPOSTFORINJECTION', '1'); // Do not check anti CSRF attack test
}
require '../../main.inc.php'; require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
if (!$user->admin) if (!$user->admin) {
accessforbidden(); accessforbidden();
}
// Load translation files required by the page // Load translation files required by the page
$langs->loadLangs(array('admin', 'other', 'externalsite')); $langs->loadLangs(array('admin', 'other', 'externalsite'));
@ -43,8 +46,7 @@ $def = array();
$action = GETPOST('action', 'aZ09'); $action = GETPOST('action', 'aZ09');
// Sauvegardes parametres // Sauvegardes parametres
if ($action == 'update') if ($action == 'update') {
{
$i = 0; $i = 0;
$db->begin(); $db->begin();
@ -55,8 +57,7 @@ if ($action == 'update')
$i += dolibarr_set_const($db, 'EXTERNALSITE_LABEL', trim($label), 'chaine', 0, '', $conf->entity); $i += dolibarr_set_const($db, 'EXTERNALSITE_LABEL', trim($label), 'chaine', 0, '', $conf->entity);
$i += dolibarr_set_const($db, 'EXTERNALSITE_URL', trim($exturl), 'chaine', 0, '', $conf->entity); $i += dolibarr_set_const($db, 'EXTERNALSITE_URL', trim($exturl), 'chaine', 0, '', $conf->entity);
if ($i >= 2) if ($i >= 2) {
{
$db->commit(); $db->commit();
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
} else { } else {

View File

@ -44,35 +44,29 @@ $keyforcontent = GETPOST('keyforcontent', 'aZ09');
* View * View
*/ */
if (empty($keyforcontent) && empty($conf->global->EXTERNALSITE_URL)) if (empty($keyforcontent) && empty($conf->global->EXTERNALSITE_URL)) {
{
llxHeader(); llxHeader();
print '<div class="error">'.$langs->trans('ExternalSiteModuleNotComplete').'</div>'; print '<div class="error">'.$langs->trans('ExternalSiteModuleNotComplete').'</div>';
llxFooter(); llxFooter();
exit; exit;
} }
if (!empty($keyforcontent)) if (!empty($keyforcontent)) {
{
llxHeader(); llxHeader();
print '<div class="framecontent" style="height: '.($_SESSION['dol_screenheight'] - 90).'px">'; print '<div class="framecontent" style="height: '.($_SESSION['dol_screenheight'] - 90).'px">';
if (!preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent) if (!preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent)
&& !preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) && !preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) {
{
$langs->load("errors"); $langs->load("errors");
print $langs->trans("ErrorBadSyntaxForParamKeyForContent", 'EXTERNAL_SITE_CONTENT_', 'EXTERNAL_SITE_URL_'); print $langs->trans("ErrorBadSyntaxForParamKeyForContent", 'EXTERNAL_SITE_CONTENT_', 'EXTERNAL_SITE_URL_');
} elseif (empty($conf->global->$keyforcontent)) } elseif (empty($conf->global->$keyforcontent)) {
{
$langs->load("errors"); $langs->load("errors");
print $langs->trans("ErrorVariableKeyForContentMustBeSet", 'EXTERNAL_SITE_CONTENT_'.$keyforcontent, 'EXTERNAL_SITE_URL_'.$keyforcontent); print $langs->trans("ErrorVariableKeyForContentMustBeSet", 'EXTERNAL_SITE_CONTENT_'.$keyforcontent, 'EXTERNAL_SITE_URL_'.$keyforcontent);
} else { } else {
if (preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent)) if (preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent)) {
{
print $conf->global->$keyforcontent; print $conf->global->$keyforcontent;
} elseif (preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) } elseif (preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) {
{
/*print " /*print "
<html> <html>
<head> <head>
@ -80,17 +74,17 @@ if (!empty($keyforcontent))
</head> </head>
<frameset ".(empty($conf->global->MAIN_MENU_INVERT)?"rows":"cols")."=\"".$heightforframes.",*\" border=0 framespacing=0 frameborder=0> <frameset ".(empty($conf->global->MAIN_MENU_INVERT)?"rows":"cols")."=\"".$heightforframes.",*\" border=0 framespacing=0 frameborder=0>
<frame name=\"barre\" src=\"frametop.php?mainmenu=".$mainmenu."&leftmenu=".$leftmenu."&idmenu=".$idmenu.($theme?'&theme='.$theme:'').($codelang?'&lang='.$codelang:'')."&nobackground=1\" noresize scrolling=\"NO\" noborder> <frame name=\"barre\" src=\"frametop.php?mainmenu=".$mainmenu."&leftmenu=".$leftmenu."&idmenu=".$idmenu.($theme?'&theme='.$theme:'').($codelang?'&lang='.$codelang:'')."&nobackground=1\" noresize scrolling=\"NO\" noborder>
"; ";
print '<frame name="main" src="'; print '<frame name="main" src="';
print $conf->global->$keyforcontent; print $conf->global->$keyforcontent;
print '">'; print '">';
print " print "
<noframes> <noframes>
<body> <body>
</body> </body>
</noframes> </noframes>
</frameset> </frameset>
<noframes> <noframes>
@ -111,8 +105,7 @@ if (!empty($keyforcontent))
print '<div>'; print '<div>';
llxFooter(); llxFooter();
} else { } else {
if (preg_match('/^\//', $conf->global->EXTERNALSITE_URL) || preg_match('/^http/i', $conf->global->EXTERNALSITE_URL)) if (preg_match('/^\//', $conf->global->EXTERNALSITE_URL) || preg_match('/^http/i', $conf->global->EXTERNALSITE_URL)) {
{
print " print "
<html> <html>
<head> <head>