diff --git a/htdocs/admin/export.php b/htdocs/admin/export.php index b83b15571b8..9b154e88789 100644 --- a/htdocs/admin/export.php +++ b/htdocs/admin/export.php @@ -86,13 +86,14 @@ print ' '; print ''."\n"; print ''; -// Example with a yes / no select +/* No more need for this, you can set that a profile is public when saving it. print ''; print ''.$langs->trans("EXPORTS_SHARE_MODELS").''; print ' '; print ''; print ajax_constantonoff('EXPORTS_SHARE_MODELS'); print ''; +*/ print ''; print ''.$langs->trans("ExportCsvSeparator").''; diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index d352b996ef2..991e3cb37cc 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -110,7 +110,7 @@ class FormOther * @param string $htmlname Nom de la zone select * @param string $type Type des modeles recherches * @param int $useempty Show an empty value in list - * @param int $fk_user User that has created the template (this is set to null to get all export model when EXPORTS_SHARE_MODELS is on) + * @param int $fk_user User we want templates * @return void */ public function select_export_model($selected = '', $htmlname = 'exportmodelid', $type = '', $useempty = 0, $fk_user = null) @@ -121,8 +121,8 @@ class FormOther $sql = "SELECT rowid, label, fk_user"; $sql .= " FROM ".MAIN_DB_PREFIX."export_model"; $sql .= " WHERE type = '".$this->db->escape($type)."'"; - if (!empty($fk_user)) { - $sql .= " AND fk_user IN (0, ".$fk_user.")"; // An export model + 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) $fk_user).")"; } $sql .= " ORDER BY label"; $result = $this->db->query($sql); @@ -132,6 +132,8 @@ class FormOther print ''; } + $tmpuser = new User($this->db); + $num = $this->db->num_rows($result); $i = 0; while ($i < $num) { @@ -140,8 +142,7 @@ class FormOther $label = $obj->label; if ($obj->fk_user == 0) { $label .= ' ('.$langs->trans("Everybody").')'; - } elseif (!empty($conf->global->EXPORTS_SHARE_MODELS) && empty($fk_user) && is_object($user) && $user->id != $obj->fk_user) { - $tmpuser = new User($this->db); + } elseif ($obj->fk_user > 0) { $tmpuser->fetch($obj->fk_user); $label .= ' ('.$tmpuser->getFullName($langs).')'; } @@ -171,7 +172,7 @@ class FormOther * @param string $htmlname Nom de la zone select * @param string $type Type des modeles recherches * @param int $useempty Affiche valeur vide dans liste - * @param int $fk_user User that has created the template (this is set to null to get all export model when EXPORTS_SHARE_MODELS is on) + * @param int $fk_user User that has created the template * @return void */ public function select_import_model($selected = '', $htmlname = 'importmodelid', $type = '', $useempty = 0, $fk_user = null) @@ -182,10 +183,10 @@ class FormOther $sql = "SELECT rowid, label, fk_user"; $sql .= " FROM ".MAIN_DB_PREFIX."import_model"; $sql .= " WHERE type = '".$this->db->escape($type)."'"; - if (!empty($fk_user)) { - $sql .= " AND fk_user IN (0, ".$fk_user.")"; // An export model + 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) $fk_user).")"; } - $sql .= " ORDER BY rowid"; + $sql .= " ORDER BY label"; $result = $this->db->query($sql); if ($result) { print ''; print '
'; print ''.$langs->trans("SelectExportFields").' '; - if (empty($conf->global->EXPORTS_SHARE_MODELS)) { - $htmlother->select_export_model($exportmodelid, 'exportmodelid', $datatoexport, 1, $user->id); - } else { - $htmlother->select_export_model($exportmodelid, 'exportmodelid', $datatoexport, 1); - } + $htmlother->select_export_model($exportmodelid, 'exportmodelid', $datatoexport, 1, $user->id); print ' '; print ''; print '
'; @@ -1007,20 +1004,28 @@ if ($step == 4 && $datatoexport) { print ''; print ''; print ''; - print ''; + print ''; + print ''; print ''; print ''; - print ''; + print ''; + print ''; + $tmpuser = new User($db); + // List of existing export profils - $sql = "SELECT rowid, label"; + $sql = "SELECT rowid, label, fk_user, entity"; $sql .= " FROM ".MAIN_DB_PREFIX."export_model"; $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)) { // EXPORTS_SHARE_MODELS means all templates are visible, whatever is owner. + $sql .= " AND fk_user IN (0, ".((int) $user->id).")"; } $sql .= " ORDER BY rowid"; $resql = $db->query($sql); @@ -1029,9 +1034,19 @@ if ($step == 4 && $datatoexport) { $i = 0; while ($i < $num) { $obj = $db->fetch_object($resql); + print ''; + print ''; + print '
'.$langs->trans("ExportModelName").' '.$langs->trans("Visibility").'
'; + print ''; + $arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody")); + print $form->selectarray('visibility', $arrayvisibility, 'private'); + print ''; print ''; print '
'; print $obj->label; - print ''; + print ''; + if (empty($obj->fk_user)) { + print $langs->trans("Everybody"); + } else { + $tmpuser->fetch($obj->fk_user); + print $tmpuser->getNomUrl(1); + } + print ''; print 'rowid.'">'; print img_delete(); print ''; diff --git a/htdocs/imports/class/import.class.php b/htdocs/imports/class/import.class.php index 567aaf754a8..44ec5935d49 100644 --- a/htdocs/imports/class/import.class.php +++ b/htdocs/imports/class/import.class.php @@ -55,6 +55,12 @@ class Import */ public $errors = array(); + // To store import templates + public $hexa; // List of fields in the export profile + public $datatoimport; + public $model_name; // Name of export profile + public $fk_user; + /** * Constructor @@ -266,11 +272,18 @@ class Import $this->db->begin(); $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'import_model ('; - $sql .= 'fk_user, label, type, field'; + $sql .= 'fk_user,'; + $sql .= ' label,'; + $sql .= ' type,'; + $sql .= ' field'; $sql .= ')'; - $sql .= " VALUES (".($user->id > 0 ? $user->id : 0).", '".$this->db->escape($this->model_name)."', '".$this->db->escape($this->datatoimport)."', '".$this->db->escape($this->hexa)."')"; + $sql .= " VALUES ("; + $sql .= (isset($this->fk_user) ? (int) $this->fk_user : 'null').","; + $sql .= " '".$this->db->escape($this->model_name)."',"; + $sql .= " '".$this->db->escape($this->datatoimport)."',"; + $sql .= " '".$this->db->escape($this->hexa)."'"; + $sql .= ")"; - dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { $this->db->commit(); diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 20a846123f1..4c5975ecb43 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -226,6 +226,7 @@ if ($action == 'add_import_model') { $objimport->model_name = $import_name; $objimport->datatoimport = $datatoimport; $objimport->hexa = $hexa; + $objimport->fk_user = (GETPOST('visibility', 'aZ09') == 'all' ? 0 : $user->id); $result = $objimport->create($user); if ($result >= 0) { @@ -968,7 +969,7 @@ if ($step == 4 && $datatoimport) { $s = str_replace('{s1}', img_picto('', 'grip_title', '', false, 0, 0, '', '', 0), $s); print $s; print ' '; - $htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1); + $htmlother->select_import_model($importmodelid, 'importmodelid', $datatoimport, 1, $user->id); print ''; print ''; print ''; @@ -1249,28 +1250,51 @@ if ($step == 4 && $datatoimport) { print ''; print ''; print ''; - print ''; + print ''; + print ''; print ''; print ''; - print ''; + print ''; + print ''; // List of existing import profils - $sql = "SELECT rowid, label"; + $sql = "SELECT rowid, label, fk_user, entity"; $sql .= " FROM ".MAIN_DB_PREFIX."import_model"; $sql .= " WHERE type = '".$db->escape($datatoimport)."'"; + 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).")"; + } $sql .= " ORDER BY rowid"; + $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); + + $tmpuser = new user($db); + $i = 0; while ($i < $num) { $obj = $db->fetch_object($resql); + print ''; + print ''; + print '
'.$langs->trans("ImportModelName").' '.$langs->trans("Visibility").'
'; + print ''; + $arrayvisibility = array('private'=>$langs->trans("Private"), 'all'=>$langs->trans("Everybody")); + print $form->selectarray('visibility', $arrayvisibility, 'private'); + print ''; print ''; print '
'; print $obj->label; - print ''; + print ''; + if (empty($obj->fk_user)) { + print $langs->trans("Everybody"); + } else { + $tmpuser->fetch($obj->fk_user); + print $tmpuser->getNomUrl(1); + } + print ''; print 'rowid.'&filetoimport='.urlencode($filetoimport).'">'; print img_delete(); print '';