Add export feature using existing LSioFormats

This commit is contained in:
Benjamin Renard 2021-02-05 11:42:55 +01:00
parent 7ecfa33afc
commit 5f4798a5a1
15 changed files with 769 additions and 264 deletions

2
debian/control vendored
View file

@ -6,7 +6,7 @@ Maintainer: Benjamin Renard <brenard@easter-eggs.com>
Package: ldapsaisie Package: ldapsaisie
Architecture: all Architecture: all
Depends: apache2 | httpd, php-ldap | php5-ldap, php-fpm | libapache2-mod-php5 | libapache2-mod-php | php5-cli | php-cli, smarty | smarty3, php-net-ldap2, php-net-ftp, php-mail, php-mail-mime, php-file-csv-datasource, php-console-table Depends: apache2 | httpd, php-ldap | php5-ldap, php-fpm | libapache2-mod-php5 | libapache2-mod-php | php5-cli | php-cli, smarty | smarty3, php-net-ldap2, php-net-ftp, php-mail, php-mail-mime, php-console-table
Recommends: php-mbstring, php-phpseclib Recommends: php-mbstring, php-phpseclib
Description: web based interface for managing LDAP servers content Description: web based interface for managing LDAP servers content
LdapSaisie is a Web application developed to manage LDAP directory. LdapSaisie is a Web application developed to manage LDAP directory.

View file

@ -103,18 +103,23 @@ création du type d'&LSobject;. En conséquence :
<sect4 id="config-LSobject-ioFormat-drivers-CSV"> <sect4 id="config-LSobject-ioFormat-drivers-CSV">
<title>Pilote de fichiers CSV</title> <title>Pilote de fichiers CSV</title>
<para>Ce pilote permet de gérer l'import/export de &LSobject; à partir d'un fichier <para>Ce pilote permet de gérer l'import/export de &LSobject; à partir d'un fichier
<literal>CSV</literal>. Ce pilote utilise la classe PEAR <application> <literal>CSV</literal>. Depuis la version 4 d'LdapSaisie, ce pilote utilise les
fonctions standards <literal>fgetcsv()</literal> et <literal>fputcsv</literal>
fournis par PHP. Avant cela, la classe PEAR <application>
<ulink url='http://pear.php.net/package/File_CSV_DataSource'>File_CSV_DataSource <ulink url='http://pear.php.net/package/File_CSV_DataSource'>File_CSV_DataSource
</ulink></application>. Par défaut, les paramètres de lecture et d'écriture des </ulink></application> était utilisée. Par défaut, les paramètres de lecture et
fichiers sont : la virgule sert de délimiteur, le caractère <literal>"</literal> peut d'écriture des fichiers sont : la virgule sert de délimiteur, le caractère
être utilisé pour encadrer les valeurs des champs et la longueur maximale d'une ligne <literal>"</literal> peut être utilisé pour encadrer les valeurs des champs et la
est 999999. Ces paramètres peuvent être modifiés en configurant les options du pilote. longueur maximale d'une ligne est infini. Ces paramètres peuvent être modifiés en
configurant les options du pilote.
<programlisting> <programlisting>
<citetitle>Structure</citetitle> <citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat']['[ID ioFormat]']['driver_options'] = array ( <![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat']['[ID ioFormat]']['driver_options'] = array (
'delimiter' => '[délimiteur]', 'delimiter' => '[délimiteur]',
'enclosure' => '[caractère d'encadrement de texte]',
'length' => [longueur maximale d'une ligne], 'length' => [longueur maximale d'une ligne],
'escape' => '[caratère d'encadrement]' 'escape' => '[caractère d'échappement]',
'multiple_value_delimiter' => '[délimiteur]',
);]]> );]]>
</programlisting> </programlisting>
@ -132,20 +137,40 @@ création du type d'&LSobject;. En conséquence :
<term>length</term> <term>length</term>
<listitem> <listitem>
<simpara>La longueur maximale d'une ligne du fichier. Si zéro est spécifié, la longueur d'une <simpara>La longueur maximale d'une ligne du fichier. Si zéro est spécifié, la longueur d'une
ligne ne sera pas limité, mais la lecture du fichier sera ralenti. (Par défaut : <literal>999999 ligne ne sera pas limité, mais la lecture du fichier sera ralentie. (Par défaut : <literal>0
</literal>) </literal>)
</simpara> </simpara>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term>escape</term> <term>enclosure</term>
<listitem> <listitem>
<simpara>Le caractère utilisé pour encadrer les valeurs des champs <simpara>Le caractère utilisé pour encadrer les valeurs des champs
(Par défaut : <literal>"</literal>).</simpara> (Par défaut : <literal>"</literal>).</simpara>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>escape</term>
<listitem>
<simpara>Le caractère d'échappement utilisé si un des champs d'une ligne de fichier contient le
caractère utilisé pour encadrer les valeurs. (Par défaut : <literal>\</literal>).</simpara>
<note><simpara>Selon la RFC4180, l'echappement du caractère utilisé pour encadrer les valeurs des
champs doit se faire en le doublant. Le caractère défini ici est une alternative à ce comportement
par défaut. Pour désactiver ce caractère d'échappement alternatif, il est possible depuis de la
version 7.4.0 de PHP de mettre ici une chaine vide.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>multiple_value_delimiter</term>
<listitem>
<simpara>Le caractère utilisé pour délimiter au sein d'un champs, les valeurs valeurs multiples d'un
attribut (Par défaut : <literal>|</literal>).</simpara>
</listitem>
</varlistentry>
</variablelist> </variablelist>
</para> </para>

View file

@ -65,9 +65,7 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
'driver' => 'CSV', 'driver' => 'CSV',
'driver_options' => array ( 'driver_options' => array (
'delimiter' => ';', 'delimiter' => ';',
'escape' => '"', 'enclosure' => '"',
'eol' => ';',
'length' => 2,
), ),
'fields' => array ( 'fields' => array (
'login' => 'uid', 'login' => 'uid',
@ -83,6 +81,43 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
'cn' => '%{personalTitle} %{givenName} %{sn}', 'cn' => '%{personalTitle} %{givenName} %{sn}',
), ),
), ),
'myfullcsv' => array (
'label' => 'Complete CSV',
'driver' => 'CSV',
'fields' => array (
'login' => 'uid',
'civility' => 'personalTitle',
'firstname' => 'givenName',
'lastname' => 'sn',
'fullname' => 'cn',
'mail' => 'mail',
'password' => 'userPassword',
'description' => 'description',
'accountables' => 'lsGodfatherDn',
'posix_uidnumber' => 'uidNumber',
'posix_gidnumber' => 'gidNumber',
'posix_shell' => 'loginShell',
'posix_home' => 'homeDirectory',
'posix_gecos' => 'gecos',
'password_expiration' => 'shadowExpire',
'password_max_age' => 'shadowMax',
'password_max_inactive' => 'shadowInactive',
'password_last_change' => 'shadowLastChange',
'samba_sid' => 'sambaSID',
'samba_primary_group_sid' => 'sambaPrimaryGroupSID',
'samba_account_flags' => 'sambaAcctFlags',
'samba_home_drive' => 'sambaHomeDrive',
'samba_home_path' => 'sambaHomePath',
'samba_profile_paht' => 'sambaProfilePath',
'samba_logon_script' => 'sambaLogonScript',
'samba_last_login' => 'sambaLogonTime',
'samba_last_logoff' => 'sambaLogoffTime',
'samba_expiration' => 'sambaKickoffTime',
'samba_password_last_change' => 'sambaPwdLastSet',
'samba_password_must_change' => 'sambaPwdMustChange',
'samba_password_cas_change' => 'sambaPwdCanChange',
),
),
), ),
'before_modify' => 'valid', 'before_modify' => 'valid',

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

View file

@ -220,66 +220,46 @@ class LSattribute extends LSlog_staticLoggerClass {
* @retval boolean true si l'ajout a fonctionner ou qu'il n'est pas nécessaire, false sinon * @retval boolean true si l'ajout a fonctionner ou qu'il n'est pas nécessaire, false sinon
*/ */
public function addToForm(&$form,$idForm,&$obj=NULL,$value=NULL) { public function addToForm(&$form,$idForm,&$obj=NULL,$value=NULL) {
if($this -> getConfig("form.$idForm")) { $form_mode = $this -> getConfig("form.$idForm", false);
if (!$this -> html) { self :: log_debug("$this -> addToForm($idForm): mode = ".varDump($form_mode));
LSerror :: addErrorCode('LSattribute_09',array('type' => 'html','name' => $this -> name)); if($form_mode === false) {
return; self :: log_debug("Attribute ".$this -> name." not in form $idForm.");
} return True;
if($this -> myRights() == 'n') { }
return true;
}
if (!is_null($value)) {
$data = $value;
}
else if(!is_empty($this -> data)) {
$data = $this -> getFormVal();
}
else if (!is_empty($this -> getConfig('default_value'))) {
$data = $obj -> getFData($this -> getConfig('default_value'));
}
else {
$data = NULL;
}
$element = $this -> html -> addToForm($form,$idForm,$data); $element = $this -> _addToForm($form, $idForm, $obj, $value);
if(!$element) { if(!$element)
LSerror :: addErrorCode('LSform_06',$this -> name); return false;
}
if($this -> getConfig('required')) { if($this -> getConfig('required', false, 'bool'))
$form -> setRequired($this -> name); $form -> setRequired($this -> name);
}
if ( ($this -> getConfig("form.$idForm")==0) || ($this -> myRights() == 'r') ) { if ( ($form_mode == 0) || ($this -> myRights() == 'r') ) {
self :: log_debug("Attribute ".$this -> name." is freeze in form $idForm."); self :: log_debug("Attribute ".$this -> name." is freeze in form $idForm.");
$element -> freeze(); $element -> freeze();
}
else {
$check_data = $this -> getConfig('check_data', array());
if(is_array($check_data)) {
foreach ($check_data as $rule => $rule_infos) {
if((!$form -> isRuleRegistered($rule))&&($rule!='')) {
LSerror :: addErrorCode('LSattribute_03',array('attr' => $this->name,'rule' => $rule));
return;
}
if(!isset($rule_infos['msg'])) {
$rule_infos['msg']=getFData(_('The value of field %{label} is invalid.'),$this -> getLabel());
}
else {
$rule_infos['msg']=__($rule_infos['msg']);
}
if(!isset($rule_infos['params']))
$rule_infos['params']=NULL;
$form -> addRule($this -> name,$rule,array('msg' => $rule_infos['msg'], 'params' => $rule_infos['params']));
}
}
else {
LSerror :: addErrorCode('LSattribute_04',$this->name);
}
}
} }
else { else {
self :: log_debug("Attribute ".$this -> name." not in form $idForm."); $check_data = $this -> getConfig('check_data', array());
if(is_array($check_data)) {
foreach ($check_data as $rule => $rule_infos) {
if((!$form -> isRuleRegistered($rule))&&($rule!='')) {
LSerror :: addErrorCode('LSattribute_03',array('attr' => $this->name,'rule' => $rule));
return;
}
if(!isset($rule_infos['msg'])) {
$rule_infos['msg']=getFData(_('The value of field %{label} is invalid.'),$this -> getLabel());
}
else {
$rule_infos['msg']=__($rule_infos['msg']);
}
if(!isset($rule_infos['params']))
$rule_infos['params']=NULL;
$form -> addRule($this -> name,$rule,array('msg' => $rule_infos['msg'], 'params' => $rule_infos['params']));
}
}
else {
LSerror :: addErrorCode('LSattribute_04', $this->name);
}
} }
return true; return true;
} }
@ -319,37 +299,75 @@ class LSattribute extends LSlog_staticLoggerClass {
} }
/** /**
* Ajoute l'attribut au formualaire de vue * Add attribute to LSview
*
* Cette méthode ajoute l'attribut au formulaire $form de vue si il doit l'être
* *
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
* *
* @param[in] object $form Le formulaire dans lequel doit être ajouté l'attribut * @param[in] $form LSform The LSform object
* *
* @retval boolean true si l'ajout a fonctionner ou qu'il n'est pas nécessaire, false sinon * @retval boolean True on succes, False otherwise
*/ */
public function addToView(&$form) { public function addToView(&$form) {
if ($this -> getConfig('view', false, 'bool') && ($this -> myRights() != 'n') ) { if (!$this -> getConfig('view', false, 'bool') || ($this -> myRights() == 'n') )
if (!$this -> html) { return true;
LSerror :: addErrorCode('LSattribute_09',array('type' => 'html','name' => $this -> name)); $element = $this -> _addToForm($form, 'view');
return; if ($element) {
}
if(!is_empty($this -> data)) {
$data = $this -> getFormVal();
}
else {
$data=null;
}
$element = $this -> html -> addToForm($form,'view',$data);
if(!$element instanceof LSformElement) {
LSerror :: addErrorCode('LSform_06',$this -> name);
return;
}
$element -> freeze(); $element -> freeze();
return true; return true;
} }
return true; return false;
}
/**
* Add attribute to export
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @param[in] $form LSform The LSform object
*
* @retval boolean True on succes, False otherwise
*/
public function addToExport(&$form) {
if ($this -> myRights() == 'n')
return False;
$element = $this -> _addToForm($form, 'export');
if ($element) {
$element -> freeze();
return True;
}
return False;
}
/**
* Add attribute to a LSform for export
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @param[in] object $form The LSform object
*
* @retval LSformElement|False LSformElement object on succes, False otherwise
*/
private function _addToForm(&$form, $idForm, &$obj=NULL, $data=NULL) {
if (!$this -> html) {
LSerror :: addErrorCode('LSattribute_09',array('type' => 'html','name' => $this -> name));
return;
}
if (is_null($data)) {
if(!is_empty($this -> data)) {
$data = $this -> getFormVal();
}
else if ($obj && !is_empty($this -> getConfig('default_value'))) {
$data = $obj -> getFData($this -> getConfig('default_value'));
}
}
$element = $this -> html -> addToForm($form, $idForm, $data);
if(!$element instanceof LSformElement) {
LSerror :: addErrorCode('LSform_06',$this -> name);
return;
}
return $element;
} }
/** /**

View file

@ -0,0 +1,103 @@
<?php
/*******************************************************************************
* Copyright (C) 2007 Easter-eggs
* http://ldapsaisie.labs.libre-entreprise.org
*
* Author: See AUTHORS file in top-level directory.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
******************************************************************************/
LSsession :: loadLSclass('LSlog_staticLoggerClass');
LSsession::loadLSclass('LSioFormat');
/**
* Manage export LSldapObject
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*/
class LSexport extends LSlog_staticLoggerClass {
/**
* Export objects
*
* @param[in] $LSobject LSldapObject An instance of the object type
* @param[in] $ioFormat string The LSioFormat name
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @retval boolean True on success, False otherwise
*/
public static function export($object, $ioFormat) {
// Load LSobject
if (is_string($object)) {
if (!LSsession::loadLSobject($object, true)) { // Load with warning
return false;
}
$object = new $object();
}
// Validate ioFormat
if(!$object -> isValidIOformat($ioFormat)) {
LSerror :: addErrorCode('LSexport_01', $ioFormat);
return false;
}
// Create LSioFormat object
$ioFormat = new LSioFormat($object -> type, $ioFormat);
if (!$ioFormat -> ready()) {
LSerror :: addErrorCode('LSexport_02');
return false;
}
// Load LSsearch class (with warning)
if (!LSsession :: loadLSclass('LSsearch', null, true)) {
return false;
}
// Search objects
$search = new LSsearch($object -> type, 'LSexport');
$search -> run();
// Retreive objets
$objects = $search -> listObjects();
if (!is_array($objects)) {
LSerror :: addErrorCode('LSexport_03');
return false;
}
self :: log_debug(count($objects)." object(s) found to export");
// Export objects using LSioFormat object
if (!$ioFormat -> exportObjects($objects)) {
LSerror :: addErrorCode('LSexport_04');
return false;
}
self :: log_debug("export(): objects exported");
return true;
}
}
LSerror :: defineError('LSexport_01',
___("LSexport: input/output format %{format} invalid.")
);
LSerror :: defineError('LSexport_02',
___("LSexport: Fail to initialize input/output driver.")
);
LSerror :: defineError('LSexport_03',
___("LSexport: Fail to load objects's data to export from LDAP directory.")
);
LSerror :: defineError('LSexport_04',
___("LSexport: Fail to export objects's data.")
);

View file

@ -324,17 +324,17 @@ LStemplate :: registerFunction('LSimport_implodeValues','LSimport_implodeValues'
LSerror :: defineError('LSimport_01', LSerror :: defineError('LSimport_01',
___("LSimport : Post data not found or not completed.") ___("LSimport: Post data not found or not completed.")
); );
LSerror :: defineError('LSimport_02', LSerror :: defineError('LSimport_02',
___("LSimport : object type invalid.") ___("LSimport: object type invalid.")
); );
LSerror :: defineError('LSimport_03', LSerror :: defineError('LSimport_03',
___("LSimport : input/output format %{format} invalid.") ___("LSimport: input/output format %{format} invalid.")
); );
LSerror :: defineError('LSimport_04', LSerror :: defineError('LSimport_04',
___("LSimport : Fail to initialize input/output driver") ___("LSimport: Fail to initialize input/output driver.")
); );
LSerror :: defineError('LSimport_05', LSerror :: defineError('LSimport_05',
___("LSimport : Fail to load objects's data from input file") ___("LSimport: Fail to load objects's data from input file.")
); );

View file

@ -20,15 +20,17 @@
******************************************************************************/ ******************************************************************************/
LSsession :: loadLSclass('LSlog_staticLoggerClass');
/** /**
* Manage IOformat of LSldapObject import/export * Manage IOformat of LSldapObject import/export
* *
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
*/ */
class LSioFormat { class LSioFormat extends LSlog_staticLoggerClass {
var $config=False; var $config = false;
var $driver=False; var $driver = False;
/** /**
* Constructor * Constructor
@ -39,17 +41,17 @@ class LSioFormat {
* @retval void * @retval void
**/ **/
public function __construct($LSobject, $ioFormat) { public function __construct($LSobject, $ioFormat) {
$conf=LSconfig::get('LSobjects.'.$LSobject.".ioFormat.".$ioFormat); $conf = LSconfig::get('LSobjects.'.$LSobject.".ioFormat.".$ioFormat);
if(is_array($conf)) { if(is_array($conf)) {
$this -> config=$conf; $this -> config = $conf;
if (isset($this -> config['driver']) && LSsession :: loadLSclass('LSioFormat'.$this -> config['driver'])) { $driver = $this -> getConfig('driver');
$driverClass='LSioFormat'.$this -> config['driver']; if ($driver && LSsession :: loadLSclass('LSioFormat'.$driver)) {
$driverOptions=array(); $driverClass = "LSioFormat".$driver;
if (isset($this -> config['driver_options'])) $driverOptions = $this -> config['driver_options']; $driverOptions = $this -> getConfig('driver_options', array(), 'array');
$this -> driver = new $driverClass($driverOptions); $this -> driver = new $driverClass($driverOptions);
} }
else { else {
LSerror :: addErrorCode('LSioFormat_01',$this -> config['driver']); LSerror :: addErrorCode('LSioFormat_01', $driver);
} }
} }
} }
@ -63,6 +65,19 @@ class LSioFormat {
return (is_array($this -> config) && $this -> driver !== False); return (is_array($this -> config) && $this -> driver !== False);
} }
/**
* Return a configuration parameter (or default value)
*
* @param[] $param The configuration parameter
* @param[] $default The default value (default : null)
* @param[] $cast Cast resulting value in specific type (default : disabled)
*
* @retval mixed The configuration parameter value or default value if not set
**/
public function getConfig($param, $default=null, $cast=null) {
return LSconfig :: get($param, $default, $cast, (is_array($this -> config)?$this -> config:array()));
}
/** /**
* Load and valid file * Load and valid file
* *
@ -83,7 +98,44 @@ class LSioFormat {
* @retval array The objects contained by the loaded file * @retval array The objects contained by the loaded file
**/ **/
public function getAll() { public function getAll() {
return $this -> driver -> getAllFormated($this -> config['fields'],$this -> config['generated_fields']); return $this -> driver -> getAllFormated(
$this -> getConfig('fields', array(), 'array'),
$this -> getConfig('generated_fields', array(), 'array')
);
}
/**
* Export objects
*
* @param $objects array of LSldapObject The objects to export
*
* @return boolean True on succes, False otherwise
*/
public function exportObjects(&$objects) {
self :: log_trace('exportObjects(): start');
$fields = $this -> getConfig('fields');
if (!$fields) {
self :: log_error('exportObjects(): No field configured !');
return false;
}
if (!LSsession :: loadLSclass('LSform', null, true))
return false;
$objects_data = array();
foreach($objects as $object) {
$objects_data[$object -> getDn()] = array();
// Build a LSform object
$export = new LSform($object, 'export');
// Add attributes to export and put their values to data to export
foreach($fields as $key => $attr_name) {
$object -> attrs[$attr_name] -> addToExport($export);
$objects_data[$object -> getDn()][$key] = $export -> elements[$attr_name] -> getApiValue();
}
}
self :: log_trace('exportObjects(): objects data = '.varDump($objects_data));
return $this -> driver -> exportObjectsData($objects_data);
} }
} }

View file

@ -30,8 +30,40 @@ LSsession :: loadLSclass('LSioFormatDriver');
*/ */
class LSioFormatCSV extends LSioFormatDriver { class LSioFormatCSV extends LSioFormatDriver {
// File_CSV_DataSource object private $delimiter = null;
private $csv=false; private $enclosure = null;
private $escape = null;
private $length = null;
private $rows = null;
private $headers = null;
/**
* Constructor
*
* @param[in] array $options Driver's options
*
* @retval void
**/
public function __construct($options) {
parent :: __construct($options);
// As recommend in PHP doc, we enable this ini parameter to allow detection of
// Macintosh line-ending convention.
ini_set("auto_detect_line_endings", true);
// Set CSV input/output parameters
$this -> delimiter = $this -> getOption('delimiter', ",", "string");
$this -> enclosure = $this -> getOption('enclosure', '"', "string");
$this -> escape = $this -> getOption('escape', "\\", "string");
$this -> length = $this -> getOption('length', 0, "int");
$this -> multiple_value_delimiter = $this -> getOption('multiple_value_delimiter', '|', "string");
self :: log_debug(
'New LSioFormatCSV objet started with delimiter="'.$this -> delimiter.'", '.
'enclosure = <'.$this -> enclosure.'>, escape = "'.$this -> escape.'", '.
'length = '.$this -> length.' and multiple value delimiter = "'.
$this -> multiple_value_delimiter.'"'
);
}
/** /**
* Load file * Load file
@ -41,17 +73,29 @@ class LSioFormatCSV extends LSioFormatDriver {
* @retval boolean True if file is loaded, false otherwise * @retval boolean True if file is loaded, false otherwise
**/ **/
public function loadFile($path) { public function loadFile($path) {
$this->csv=new File_CSV_DataSource; self :: log_debug("loadFile($path)");
if (is_array($this -> options)) { $fd = fopen($path, 'r');
foreach ($this -> options as $opt_key => $opt_val) { if ($fd === false) {
if (isset($this->csv -> settings[$opt_key])) self :: log_error("Fail to open file '$path'.");
$this->csv -> settings[$opt_key] = $opt_val; return false;
}
} }
if ($this->csv->load($path)) {
return True; $this -> rows = array();
while (
(
$row = fgetcsv(
$fd, $this -> length, $this -> delimiter,
$this -> enclosure, $this -> escape
)
) !== FALSE) {
$this -> rows[] = $row;
} }
return false; if (!$this -> rows)
return false;
$this -> headers = array_shift($this -> rows);
self :: log_trace("loadFile($path): headers = ".varDump($this -> headers));
self :: log_debug("loadFile($path): ".count($this -> rows)." row(s) loaded.");
return true;
} }
/** /**
@ -60,10 +104,26 @@ class LSioFormatCSV extends LSioFormatDriver {
* @retval boolean True if loaded file data are valid, false otherwise * @retval boolean True if loaded file data are valid, false otherwise
**/ **/
public function isValid() { public function isValid() {
if ($this -> csv && $this -> csv -> isSymmetric()) { if (!is_array($this -> rows) && empty($this -> rows)) {
return True; self :: log_error("No data loaded from input file");
return false;
} }
return False;
if (!$this -> headers) {
self :: log_error("Header line seem empty");
return false;
}
for($i = 0; $i < count($this -> rows); $i++) {
if (count($this -> rows[$i]) != count($this -> headers)) {
self :: log_error(
"Input row #$i contain ".count($this -> rows[$i])." field(s) when ".
"headers has ".count($this -> headers)
);
return false;
}
}
self :: log_debug("isValid(): all ".count($this -> rows)." row(s) are symetric.");
return True;
} }
/** /**
@ -87,7 +147,17 @@ class LSioFormatCSV extends LSioFormatDriver {
* @retval array The objects contained by the loaded file * @retval array The objects contained by the loaded file
**/ **/
public function getAll() { public function getAll() {
return $this -> csv -> connect(); $objects = array();
foreach($this -> rows as $row) {
$object = array();
foreach ($this -> headers as $idx => $key) {
$values = explode($this -> multiple_value_delimiter, $row[$idx]);
$object[$key] = (count($values) == 1?$values[0]:$values);
}
$objects[] = $object;
}
self :: log_trace("getAll(): objects = ".varDump($objects));
return $objects;
} }
/** /**
@ -104,7 +174,67 @@ class LSioFormatCSV extends LSioFormatDriver {
* @retval array The fields names of the loaded file * @retval array The fields names of the loaded file
**/ **/
public function getFieldNames() { public function getFieldNames() {
return $this -> csv -> getHeaders(); return $this -> headers;
} }
/**
* Export objects data
*
* @param[in] $stream The stream where objects's data have to be exported
* @param[in] $objects_data Array of objects data to export
*
* @return boolean True on succes, False otherwise
*/
public function exportObjectsData($objects_data) {
if (!function_exists('fputcsv')) {
LSerror :: addErrorCode('LSioFormatCSV_01');
return false;
}
$first = true;
$stream = fopen('php://temp/maxmemory:'. (5*1024*1024), 'w+');
foreach($objects_data as $dn => $object_data) {
if ($first) {
$this -> writeRow($stream, array_keys($object_data));
$first = false;
}
$row = array();
foreach($object_data as $values)
$row[] = (is_array($values)?implode($this -> multiple_value_delimiter, $values):$values);
$this -> writeRow($stream, $row);
}
header("Content-disposition: attachment; filename=export.csv");
header("Content-type: text/csv");
rewind($stream);
print stream_get_contents($stream);
@fclose($stream);
exit();
}
/**
* Write CSV row to stream
*
* @param[in] $stream The CSV file description reference
* @param[in] $row An array of a CSV row fields to write
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @retval boolean True if CSV row is successfully writed, false in other case
*/
private function writeRow($stream, $row) {
// Escape character could only be specified since php 5.5.4
if (!defined('PHP_VERSION_ID') or PHP_VERSION_ID < 50504) {
$result = fputcsv($stream, $row, $this -> delimiter, $this -> enclosure);
}
else {
$result = fputcsv($stream, $row, $this -> delimiter, $this -> enclosure, $this -> escape);
}
return ($result !== false);
}
} }
LSerror :: defineError('LSioFormatCSV_01',
___("LSioFormatCSV: function fputcsv is not available.")
);

View file

@ -20,12 +20,14 @@
******************************************************************************/ ******************************************************************************/
LSsession :: loadLSclass('LSlog_staticLoggerClass');
/** /**
* Driver to manage ioFormat file of LSldapObject import/export * Driver to manage ioFormat file of LSldapObject import/export
* *
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
*/ */
class LSioFormatDriver { class LSioFormatDriver extends LSlog_staticLoggerClass {
protected $options=array(); protected $options=array();
@ -137,4 +139,29 @@ class LSioFormatDriver {
return $retall; return $retall;
} }
/**
* Export objects data
*
* @param[in] $objects_data Array of objects data to export
*
* @return boolean True on succes, False otherwise
*/
public function exportObjectsData($objects_data) {
// Must be implement in real drivers
return False;
}
/**
* Return a option parameter (or default value)
*
* @param[] $param The option parameter
* @param[] $default The default value (default : null)
* @param[] $cast Cast resulting value in specific type (default : disabled)
*
* @retval mixed The option parameter value or default value if not set
**/
public function getOption($param, $default=null, $cast=null) {
return LSconfig :: get($param, $default, $cast, $this -> options);
}
} }

View file

@ -456,6 +456,11 @@ function handle_LSobject_search($request) {
'url' => "object/$LSobject/import", 'url' => "object/$LSobject/import",
'action' => 'import' 'action' => 'import'
); );
$LSview_actions['export'] = array (
'label' => _('Export'),
'url' => "object/$LSobject/export",
'action' => 'export'
);
} }
} }
$LSview_actions['refresh'] = array ( $LSview_actions['refresh'] = array (
@ -835,6 +840,45 @@ function handle_old_import_php($request) {
} }
LSurl :: add_handler('#^import\.php#', 'handle_old_import_php', false); LSurl :: add_handler('#^import\.php#', 'handle_old_import_php', false);
/*
* Handle LSobject export request
*
* @param[in] $request LSurlRequest The request
*
* @retval void
**/
function handle_LSobject_export($request) {
$object = get_LSobject_from_request($request, true);
if (!$object)
return;
$ioFormats = array();
$result = null;
if ( LSsession :: loadLSclass('LSexport', null, true)) { // Load class with warning
$ioFormats = $object->listValidIOformats();
if (!is_array($ioFormats) || empty($ioFormats)) {
$ioFormats = array();
LSerror :: addErrorCode('LSsession_16');
}
else if (isset($_REQUEST['ioFormat'])) {
if (!LSexport::export($object, $_REQUEST['ioFormat']))
LSlog :: error("An error occurred exporting ".$object -> type);
}
}
// Define page title & template variables
LStemplate :: assign('pagetitle', _('Export').' : '.$object->getLabel());
LStemplate :: assign('LSobject', $object -> getType());
LStemplate :: assign('ioFormats', $ioFormats);
// Set & display template
LSsession :: setTemplate('export.tpl');
LStemplate :: addCssFile('LSform.css');
LSsession :: displayTemplate();
}
LSurl :: add_handler('#^object/(?P<LSobject>[^/]+)/export/?$#', 'handle_LSobject_export');
/* /*
* Handle LSobject create request * Handle LSobject create request
* *

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n" "Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2021-02-04 11:51+0100\n" "PO-Revision-Date: 2021-02-05 10:32+0100\n"
"Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n" "Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise." "Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n" "org>\n"
@ -437,68 +437,68 @@ msgstr "LSformRule_%{type} : Le paramètre %{param} n'est pas défini."
msgid "LSformRule: Unknown rule type %{type}." msgid "LSformRule: Unknown rule type %{type}."
msgstr "LSformRule : Type de règle %{type} inconnu." msgstr "LSformRule : Type de règle %{type} inconnu."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:203 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:208
msgid "Failed to set post data on creation form." msgid "Failed to set post data on creation form."
msgstr "Impossible de définir les données dans le formulaire de création." msgstr "Impossible de définir les données dans le formulaire de création."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:209 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:214
msgid "Error validating creation form." msgid "Error validating creation form."
msgstr "Une erreur est survenue en validant le formulaire de création." msgstr "Une erreur est survenue en validant le formulaire de création."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:214 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:219
msgid "Failed to validate object data." msgid "Failed to validate object data."
msgstr "Impossible de valider les données de l'objet." msgstr "Impossible de valider les données de l'objet."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:221 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:226
msgid "Failed to generate DN for this object." msgid "Failed to generate DN for this object."
msgstr "Impossible de générer le DN de cet objet." msgstr "Impossible de générer le DN de cet objet."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:235 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:240
msgid "Error creating object on LDAP server." msgid "Error creating object on LDAP server."
msgstr "Une erreur est survenue en création cet objet dans l'annuaire LDAP." msgstr "Une erreur est survenue en création cet objet dans l'annuaire LDAP."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:241 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:246
msgid "An object already exist on LDAP server with DN %{dn}." msgid "An object already exist on LDAP server with DN %{dn}."
msgstr "Un objet existe déjà dans l'annuaire LDAP avec le DN %{dn}." msgstr "Un objet existe déjà dans l'annuaire LDAP avec le DN %{dn}."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:252 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:257
msgid "" msgid ""
"Failed to load existing object %{dn} from LDAP server. Can't update object." "Failed to load existing object %{dn} from LDAP server. Can't update object."
msgstr "" msgstr ""
"Impossible de charger l'objet existant %{dn} depuis l'annuaire LDAP. " "Impossible de charger l'objet existant %{dn} depuis l'annuaire LDAP. "
"Impossible de mettre à jour cet objet." "Impossible de mettre à jour cet objet."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:260 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:265
msgid "Failed to set post data on update form." msgid "Failed to set post data on update form."
msgstr "Impossible de définir les données dans le formulaire de mise à jours." msgstr "Impossible de définir les données dans le formulaire de mise à jours."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:266 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:271
msgid "Error validating update form." msgid "Error validating update form."
msgstr "Une erreur est survenue en validant le formulaire de mise à jour." msgstr "Une erreur est survenue en validant le formulaire de mise à jour."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:276 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:281
msgid "Error updating object on LDAP server." msgid "Error updating object on LDAP server."
msgstr "" msgstr ""
"Une erreur est survenue en mettant à jour cet objet dans l'annuaire LDAP." "Une erreur est survenue en mettant à jour cet objet dans l'annuaire LDAP."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:322 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:327
msgid "LSimport : Post data not found or not completed." msgid "LSimport: Post data not found or not completed."
msgstr "LSimport : les données transmises sont introuvables ou incomplètes." msgstr "LSimport : les données transmises sont introuvables ou incomplètes."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:325 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:330
msgid "LSimport : object type invalid." msgid "LSimport: object type invalid."
msgstr "LSimport : type d'objet invalide." msgstr "LSimport : type d'objet invalide."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:328 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:333
msgid "LSimport : input/output format %{format} invalid." msgid "LSimport: input/output format %{format} invalid."
msgstr "LSimport : Le format d'entrée/sortie %{format} est invalide." msgstr "LSimport : Le format d'entrée/sortie %{format} est invalide."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:331 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:336
msgid "LSimport : Fail to initialize input/output driver" msgid "LSimport: Fail to initialize input/output driver."
msgstr "LSimport : Impossible d'initialiser le pilote d'entrée/sortie" msgstr "LSimport : Impossible d'initialiser le pilote d'entrée/sortie."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:334 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:339
msgid "LSimport : Fail to load objects's data from input file" msgid "LSimport: Fail to load objects's data from input file."
msgstr "" msgstr ""
"LSimport: Impossible de charger les données des objets depuis le fichier " "LSimport: Impossible de charger les données des objets depuis le fichier "
"d'import." "d'import."
@ -518,9 +518,9 @@ msgstr "Confirmez-vous votre choix ?"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSconfirmBox.php:37 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSconfirmBox.php:37
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsmoothbox.php:39 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsmoothbox.php:39
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:74 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:74
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:618 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:623
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1240 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1279
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1382 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1421
#: templates/default/recoverpassword.tpl:21 #: templates/default/recoverpassword.tpl:21
msgid "Validate" msgid "Validate"
msgstr "Valider" msgstr "Valider"
@ -665,10 +665,10 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:68 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:68
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_supannLabeledValue.php:62 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_supannLabeledValue.php:62
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:174 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:174
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1000 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1039
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1168 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1207
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1253 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1292
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1395 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1434
msgid "Modify" msgid "Modify"
msgstr "Modifier" msgstr "Modifier"
@ -846,6 +846,24 @@ msgstr ""
"LSattr_html_select_objet : l'objet sélectionné %{name} n'a pas de valeur " "LSattr_html_select_objet : l'objet sélectionné %{name} n'a pas de valeur "
"dans son attribut %{attr}, vous ne pouvez pas le sélectionner." "dans son attribut %{attr}, vous ne pouvez pas le sélectionner."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:93
msgid "LSexport: input/output format %{format} invalid."
msgstr "LSimport : Le format d'entrée/sortie %{format} est invalide."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:96
msgid "LSexport: Fail to initialize input/output driver."
msgstr "LSexport : Impossible d'initialiser le pilote d'entrée/sortie."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:99
msgid "LSexport: Fail to load objects's data to export from LDAP directory."
msgstr ""
"LSexport: Impossible de charger les données des objets à exporter depuis "
"l'annuaire LDAP."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:102
msgid "LSexport: Fail to export objects's data."
msgstr "LSexport: Impossible d'exporter les données des objets."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformRule_differentPassword.php:90 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformRule_differentPassword.php:90
msgid "" msgid ""
"LSformRule_differentPassword : Other password attribute is not configured." "LSformRule_differentPassword : Other password attribute is not configured."
@ -884,11 +902,11 @@ msgstr ""
"LSformRule_differentPassword : Les autres attributs mots de passe doivent " "LSformRule_differentPassword : Les autres attributs mots de passe doivent "
"utiliser LSattr_ldap :: password. Ce n'est pas le cas de l'attribut %{attr}." "utiliser LSattr_ldap :: password. Ce n'est pas le cas de l'attribut %{attr}."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:266 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:250
msgid "The value of field %{label} is invalid." msgid "The value of field %{label} is invalid."
msgstr "La valeur du champ %{label} est incorrecte." msgstr "La valeur du champ %{label} est incorrecte."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:720 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:738
msgid "" msgid ""
"LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} " "LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} "
"& HTML = %{html})." "& HTML = %{html})."
@ -896,7 +914,7 @@ msgstr ""
"LSattribute : Attribut %{attr} : Les types LDAP ou HTML sont inconnus (LDAP " "LSattribute : Attribut %{attr} : Les types LDAP ou HTML sont inconnus (LDAP "
"= %{ldap} & HTML = %{html})." "= %{ldap} & HTML = %{html})."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:723 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:741
msgid "" msgid ""
"LSattribute : The function %{func} to display the attribute %{attr} is " "LSattribute : The function %{func} to display the attribute %{attr} is "
"unknow." "unknow."
@ -904,14 +922,14 @@ msgstr ""
"LSattribute : La fonction %{func} pour afficher l'attribut %{attr} est " "LSattribute : La fonction %{func} pour afficher l'attribut %{attr} est "
"inconnue." "inconnue."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:726 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:744
msgid "" msgid ""
"LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow." "LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow."
msgstr "" msgstr ""
"LSattribute : La règle %{rule} de validation de l'attribut %{attr} n'existe " "LSattribute : La règle %{rule} de validation de l'attribut %{attr} n'existe "
"pas." "pas."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:729 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:747
msgid "" msgid ""
"LSattribute : Configuration data to verify the attribute %{attr} are " "LSattribute : Configuration data to verify the attribute %{attr} are "
"incorrect." "incorrect."
@ -919,22 +937,22 @@ msgstr ""
"LSattribute : Les données de configuration pour vérifier l'attribut %{attr} " "LSattribute : Les données de configuration pour vérifier l'attribut %{attr} "
"sont incorrecte." "sont incorrecte."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:732 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:750
msgid "" msgid ""
"LSattribute : The function %{func} to save the attribute %{attr} is unknow." "LSattribute : The function %{func} to save the attribute %{attr} is unknow."
msgstr "" msgstr ""
"LSattribute : La fonction %{func} pour sauvegarder l'attribut %{attr} est " "LSattribute : La fonction %{func} pour sauvegarder l'attribut %{attr} est "
"inconnue." "inconnue."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:735 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:753
msgid "LSattribute : The value of the attribute %{attr} can't be generated." msgid "LSattribute : The value of the attribute %{attr} can't be generated."
msgstr "LSattribute : La valeur de l'attribut %{attr} ne peut être générée." msgstr "LSattribute : La valeur de l'attribut %{attr} ne peut être générée."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:738 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:756
msgid "LSattribute : Generation of the attribute %{attr} failed." msgid "LSattribute : Generation of the attribute %{attr} failed."
msgstr "LSattribute : La génération de l'attribut %{attr} a échouée." msgstr "LSattribute : La génération de l'attribut %{attr} a échouée."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:741 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:759
msgid "" msgid ""
"LSattribute : Generation of the attribute %{attr} did not return a correct " "LSattribute : Generation of the attribute %{attr} did not return a correct "
"value." "value."
@ -942,7 +960,7 @@ msgstr ""
"LSattribute : La génération de l'attribut %{attr} n'a pas retournée de " "LSattribute : La génération de l'attribut %{attr} n'a pas retournée de "
"valeur correcte." "valeur correcte."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:744 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:762
msgid "" msgid ""
"LSattribute : The attr_%{type} of the attribute %{name} is not yet defined." "LSattribute : The attr_%{type} of the attribute %{name} is not yet defined."
msgstr "" msgstr ""
@ -1005,7 +1023,7 @@ msgstr "Votre nouveau mot de passe vous a été envoyé à l'adresse %{mail}."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:1640 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:1640
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:156 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:156
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:462 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:467
#: templates/default/select.tpl:29 #: templates/default/select.tpl:29
msgid "Refresh" msgid "Refresh"
msgstr "Rafraîchir" msgstr "Rafraîchir"
@ -1509,8 +1527,8 @@ msgstr "Attention"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:69 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:69
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:85 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:85
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:190 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:190
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1016 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1055
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1160 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1199
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
@ -1521,7 +1539,7 @@ msgstr "Aucun objet."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSrelation.php:712 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSrelation.php:712
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:449 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:449
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:945 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:984
msgid "New" msgid "New"
msgstr "Nouveau" msgstr "Nouveau"
@ -1719,14 +1737,14 @@ msgid "Delete this field."
msgstr "Supprimer cette valeur." msgstr "Supprimer cette valeur."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:229 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:229
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:614 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:619
msgid "Do you really want to execute custom action %{title} on this search ?" msgid "Do you really want to execute custom action %{title} on this search ?"
msgstr "" msgstr ""
"Êtes-vous vraiment sûre de vouloir exécuter l'action personnalisée %{title} " "Êtes-vous vraiment sûre de vouloir exécuter l'action personnalisée %{title} "
"sur cette recherche ?" "sur cette recherche ?"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:235 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:235
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1376 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1415
msgid "" msgid ""
"Do you really want to execute custom action %{customAction} on " "Do you really want to execute custom action %{customAction} on "
"%{objectname} ?" "%{objectname} ?"
@ -1875,8 +1893,8 @@ msgid "Display RSS stack."
msgstr "Afficher la file RSS." msgstr "Afficher la file RSS."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_password.php:100 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_password.php:100
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:574 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:579
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1326 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1365
msgid "undefined" msgid "undefined"
msgstr "non-définie" msgstr "non-définie"
@ -2249,6 +2267,10 @@ msgstr ""
"LScli : La fonction de prise en charge de la commande CLI '%{command}' n'est " "LScli : La fonction de prise en charge de la commande CLI '%{command}' n'est "
"pas exécutable." "pas exécutable."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormatCSV.php:236
msgid "LSioFormatCSV: function fputcsv is not available."
msgstr "LSioFormatCSV : la fonction fputcsv n'est pas disponible."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSlog.php:478 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSlog.php:478
msgid "LSlog : Fail to load logging handler %{handler}." msgid "LSlog : Fail to load logging handler %{handler}."
msgstr "LSlog : Impossible de charger l'handler %{handler}." msgstr "LSlog : Impossible de charger l'handler %{handler}."
@ -2271,14 +2293,14 @@ msgid "Unknown error : %{error}"
msgstr "Erreur inconnu : %{error}" msgstr "Erreur inconnu : %{error}"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:166 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:166
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1191
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1245 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1284
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1426
msgid "View" msgid "View"
msgstr "Voir" msgstr "Voir"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:182 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:182
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1008 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1047
msgid "Copy" msgid "Copy"
msgstr "Copier" msgstr "Copier"
@ -2294,7 +2316,7 @@ msgstr ""
"LSsearchEntry : formaterFunction %{func} invalide utilisé pour " "LSsearchEntry : formaterFunction %{func} invalide utilisé pour "
"l'extraDisplayedColumns %{column}." "l'extraDisplayedColumns %{column}."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormat.php:92 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormat.php:144
msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable." msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable."
msgstr "" msgstr ""
"LSioFormat : Le pilote d'IOformat %{driver} est invalide ou n'est pas " "LSioFormat : Le pilote d'IOformat %{driver} est invalide ou n'est pas "
@ -2313,69 +2335,74 @@ msgstr "Vous devez fournir un mot clé pour les recherches globales."
msgid "Import" msgid "Import"
msgstr "Importer" msgstr "Importer"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:467 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:460
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:871
msgid "Export"
msgstr "Exporter"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:472
msgid "Reset" msgid "Reset"
msgstr "Réinitialiser" msgstr "Réinitialiser"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:505 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:510
#: templates/default/select.tpl:28 templates/default/global_search.tpl:6 #: templates/default/select.tpl:28 templates/default/global_search.tpl:6
msgid "Search" msgid "Search"
msgstr "Rechercher" msgstr "Rechercher"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:506 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:511
#: templates/default/select.tpl:31 #: templates/default/select.tpl:31
msgid "Approximative search" msgid "Approximative search"
msgstr "Recherche approximative" msgstr "Recherche approximative"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:507 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:512
#: templates/default/select.tpl:32 #: templates/default/select.tpl:32
msgid "Recursive search" msgid "Recursive search"
msgstr "Recherche récursive" msgstr "Recherche récursive"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:593 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:598
msgid "" msgid ""
"The custom action %{title} have been successfully execute on this search." "The custom action %{title} have been successfully execute on this search."
msgstr "" msgstr ""
"L'action personnalisée %{title} a été correctement exécutée sur cette " "L'action personnalisée %{title} a été correctement exécutée sur cette "
"recherche." "recherche."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:904 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:943
msgid "Data entry form" msgid "Data entry form"
msgstr "Masque de saisie" msgstr "Masque de saisie"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:910 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:949
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1626 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1665
msgid "Object has been added." msgid "Object has been added."
msgstr "L'objet a été ajouté." msgstr "L'objet a été ajouté."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1047 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1086
msgid "My account" msgid "My account"
msgstr "Mon compte" msgstr "Mon compte"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1110 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1149
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1716 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1755
msgid "The object has been partially modified." msgid "The object has been partially modified."
msgstr "L'objet a été partiellement modifié." msgstr "L'objet a été partiellement modifié."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1113 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1719 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1758
msgid "The object has been modified successfully." msgid "The object has been modified successfully."
msgstr "L'objet a bien été modifié." msgstr "L'objet a bien été modifié."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1228 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1267
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1760 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1799
msgid "%{objectname} has been successfully deleted." msgid "%{objectname} has been successfully deleted."
msgstr "%{objectname} a bien été supprimé." msgstr "%{objectname} a bien été supprimé."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1237 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1276
msgid "Deleting : %{objectname}" msgid "Deleting : %{objectname}"
msgstr "Suppression : %{objectname}" msgstr "Suppression : %{objectname}"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1238 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1277
msgid "Do you really want to delete <strong>%{displayName}</strong> ?" msgid "Do you really want to delete <strong>%{displayName}</strong> ?"
msgstr "Voulez-vous vraiment supprimer <strong>%{displayName}</strong> ?" msgstr "Voulez-vous vraiment supprimer <strong>%{displayName}</strong> ?"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1348 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387
msgid "" msgid ""
"The custom action %{customAction} have been successfully execute on " "The custom action %{customAction} have been successfully execute on "
"%{objectname}." "%{objectname}."
@ -2506,7 +2533,7 @@ msgstr "Fichier"
msgid "Forgot your password ?" msgid "Forgot your password ?"
msgstr "Mot de passe perdu ?" msgstr "Mot de passe perdu ?"
#: templates/default/import.tpl:13 #: templates/default/export.tpl:8 templates/default/import.tpl:13
msgid "Format" msgid "Format"
msgstr "Format" msgstr "Format"
@ -2654,7 +2681,7 @@ msgstr "Mise à jour des objets existants"
msgid "Updated objects" msgid "Updated objects"
msgstr "Objets mis à jour" msgstr "Objets mis à jour"
#: templates/default/import.tpl:36 #: templates/default/export.tpl:15 templates/default/import.tpl:36
msgid "Valid" msgid "Valid"
msgstr "Valider" msgstr "Valider"

View file

@ -360,65 +360,65 @@ msgstr ""
msgid "LSformRule: Unknown rule type %{type}." msgid "LSformRule: Unknown rule type %{type}."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:203 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:208
msgid "Failed to set post data on creation form." msgid "Failed to set post data on creation form."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:209 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:214
msgid "Error validating creation form." msgid "Error validating creation form."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:214 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:219
msgid "Failed to validate object data." msgid "Failed to validate object data."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:221 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:226
msgid "Failed to generate DN for this object." msgid "Failed to generate DN for this object."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:235 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:240
msgid "Error creating object on LDAP server." msgid "Error creating object on LDAP server."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:241 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:246
msgid "An object already exist on LDAP server with DN %{dn}." msgid "An object already exist on LDAP server with DN %{dn}."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:252 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:257
msgid "" msgid ""
"Failed to load existing object %{dn} from LDAP server. Can't update object." "Failed to load existing object %{dn} from LDAP server. Can't update object."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:260 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:265
msgid "Failed to set post data on update form." msgid "Failed to set post data on update form."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:266 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:271
msgid "Error validating update form." msgid "Error validating update form."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:276 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:281
msgid "Error updating object on LDAP server." msgid "Error updating object on LDAP server."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:322 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:327
msgid "LSimport : Post data not found or not completed." msgid "LSimport: Post data not found or not completed."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:325 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:330
msgid "LSimport : object type invalid." msgid "LSimport: object type invalid."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:328 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:333
msgid "LSimport : input/output format %{format} invalid." msgid "LSimport: input/output format %{format} invalid."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:331 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:336
msgid "LSimport : Fail to initialize input/output driver" msgid "LSimport: Fail to initialize input/output driver."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:334 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:339
msgid "LSimport : Fail to load objects's data from input file" msgid "LSimport: Fail to load objects's data from input file."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_pwdHistory.php:76 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_pwdHistory.php:76
@ -436,9 +436,9 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSconfirmBox.php:37 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSconfirmBox.php:37
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsmoothbox.php:39 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsmoothbox.php:39
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:74 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:74
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:618 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:623
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1240 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1279
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1382 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1421
#: templates/default/recoverpassword.tpl:21 #: templates/default/recoverpassword.tpl:21
msgid "Validate" msgid "Validate"
msgstr "" msgstr ""
@ -569,10 +569,10 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:68 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:68
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_supannLabeledValue.php:62 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_supannLabeledValue.php:62
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:174 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:174
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1000 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1039
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1168 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1207
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1253 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1292
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1395 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1434
msgid "Modify" msgid "Modify"
msgstr "" msgstr ""
@ -725,6 +725,22 @@ msgid ""
"value, you can't select it." "value, you can't select it."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:93
msgid "LSexport: input/output format %{format} invalid."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:96
msgid "LSexport: Fail to initialize input/output driver."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:99
msgid "LSexport: Fail to load objects's data to export from LDAP directory."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSexport.php:102
msgid "LSexport: Fail to export objects's data."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformRule_differentPassword.php:90 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformRule_differentPassword.php:90
msgid "" msgid ""
"LSformRule_differentPassword : Other password attribute is not configured." "LSformRule_differentPassword : Other password attribute is not configured."
@ -753,53 +769,53 @@ msgid ""
"LSattr_ldap :: password. It's not the case of the attribure %{attr}." "LSattr_ldap :: password. It's not the case of the attribure %{attr}."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:266 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:250
msgid "The value of field %{label} is invalid." msgid "The value of field %{label} is invalid."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:720 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:738
msgid "" msgid ""
"LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} " "LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} "
"& HTML = %{html})." "& HTML = %{html})."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:723 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:741
msgid "" msgid ""
"LSattribute : The function %{func} to display the attribute %{attr} is " "LSattribute : The function %{func} to display the attribute %{attr} is "
"unknow." "unknow."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:726 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:744
msgid "" msgid ""
"LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow." "LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:729 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:747
msgid "" msgid ""
"LSattribute : Configuration data to verify the attribute %{attr} are " "LSattribute : Configuration data to verify the attribute %{attr} are "
"incorrect." "incorrect."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:732 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:750
msgid "" msgid ""
"LSattribute : The function %{func} to save the attribute %{attr} is unknow." "LSattribute : The function %{func} to save the attribute %{attr} is unknow."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:735 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:753
msgid "LSattribute : The value of the attribute %{attr} can't be generated." msgid "LSattribute : The value of the attribute %{attr} can't be generated."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:738 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:756
msgid "LSattribute : Generation of the attribute %{attr} failed." msgid "LSattribute : Generation of the attribute %{attr} failed."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:741 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:759
msgid "" msgid ""
"LSattribute : Generation of the attribute %{attr} did not return a correct " "LSattribute : Generation of the attribute %{attr} did not return a correct "
"value." "value."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:744 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattribute.php:762
msgid "" msgid ""
"LSattribute : The attr_%{type} of the attribute %{name} is not yet defined." "LSattribute : The attr_%{type} of the attribute %{name} is not yet defined."
msgstr "" msgstr ""
@ -853,7 +869,7 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:1640 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:1640
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:156 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:156
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:462 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:467
#: templates/default/select.tpl:29 #: templates/default/select.tpl:29
msgid "Refresh" msgid "Refresh"
msgstr "" msgstr ""
@ -1262,8 +1278,8 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:69 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:69
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:85 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_select_object.php:85
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:190 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:190
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1016 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1055
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1160 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1199
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
@ -1274,7 +1290,7 @@ msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSrelation.php:712 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSrelation.php:712
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:449 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:449
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:945 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:984
msgid "New" msgid "New"
msgstr "" msgstr ""
@ -1436,12 +1452,12 @@ msgid "Delete this field."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:229 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:229
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:614 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:619
msgid "Do you really want to execute custom action %{title} on this search ?" msgid "Do you really want to execute custom action %{title} on this search ?"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:235 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSform.php:235
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1376 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1415
msgid "" msgid ""
"Do you really want to execute custom action %{customAction} on " "Do you really want to execute custom action %{customAction} on "
"%{objectname} ?" "%{objectname} ?"
@ -1579,8 +1595,8 @@ msgid "Display RSS stack."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_password.php:100 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSattr_ldap_password.php:100
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:574 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:579
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1326 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1365
msgid "undefined" msgid "undefined"
msgstr "" msgstr ""
@ -1906,6 +1922,10 @@ msgstr ""
msgid "LScli : The CLI command '%{command}' handler is not callable." msgid "LScli : The CLI command '%{command}' handler is not callable."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormatCSV.php:236
msgid "LSioFormatCSV: function fputcsv is not available."
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSlog.php:478 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSlog.php:478
msgid "LSlog : Fail to load logging handler %{handler}." msgid "LSlog : Fail to load logging handler %{handler}."
msgstr "" msgstr ""
@ -1928,14 +1948,14 @@ msgid "Unknown error : %{error}"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:166 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:166
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1191
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1245 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1284
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1426
msgid "View" msgid "View"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:182 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsearchEntry.php:182
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1008 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1047
msgid "Copy" msgid "Copy"
msgstr "" msgstr ""
@ -1949,7 +1969,7 @@ msgid ""
"%{column}." "%{column}."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormat.php:92 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSioFormat.php:144
msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable." msgid "LSioFormat : IOformat driver %{driver} invalid or unavailable."
msgstr "" msgstr ""
@ -1966,67 +1986,72 @@ msgstr ""
msgid "Import" msgid "Import"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:467 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:460
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:871
msgid "Export"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:472
msgid "Reset" msgid "Reset"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:505 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:510
#: templates/default/select.tpl:28 templates/default/global_search.tpl:6 #: templates/default/select.tpl:28 templates/default/global_search.tpl:6
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:506 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:511
#: templates/default/select.tpl:31 #: templates/default/select.tpl:31
msgid "Approximative search" msgid "Approximative search"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:507 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:512
#: templates/default/select.tpl:32 #: templates/default/select.tpl:32
msgid "Recursive search" msgid "Recursive search"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:593 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:598
msgid "" msgid ""
"The custom action %{title} have been successfully execute on this search." "The custom action %{title} have been successfully execute on this search."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:904 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:943
msgid "Data entry form" msgid "Data entry form"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:910 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:949
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1626 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1665
msgid "Object has been added." msgid "Object has been added."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1047 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1086
msgid "My account" msgid "My account"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1110 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1149
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1716 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1755
msgid "The object has been partially modified." msgid "The object has been partially modified."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1113 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1719 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1758
msgid "The object has been modified successfully." msgid "The object has been modified successfully."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1228 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1267
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1760 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1799
msgid "%{objectname} has been successfully deleted." msgid "%{objectname} has been successfully deleted."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1237 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1276
msgid "Deleting : %{objectname}" msgid "Deleting : %{objectname}"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1238 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1277
msgid "Do you really want to delete <strong>%{displayName}</strong> ?" msgid "Do you really want to delete <strong>%{displayName}</strong> ?"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1348 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387
msgid "" msgid ""
"The custom action %{customAction} have been successfully execute on " "The custom action %{customAction} have been successfully execute on "
"%{objectname}." "%{objectname}."
@ -2155,7 +2180,7 @@ msgstr ""
msgid "Forgot your password ?" msgid "Forgot your password ?"
msgstr "" msgstr ""
#: templates/default/import.tpl:13 #: templates/default/export.tpl:8 templates/default/import.tpl:13
msgid "Format" msgid "Format"
msgstr "" msgstr ""
@ -2301,7 +2326,7 @@ msgstr ""
msgid "Updated objects" msgid "Updated objects"
msgstr "" msgstr ""
#: templates/default/import.tpl:36 #: templates/default/export.tpl:15 templates/default/import.tpl:36
msgid "Valid" msgid "Valid"
msgstr "" msgstr ""

View file

@ -0,0 +1,19 @@
{extends file='ls:base_connected.tpl'}
{block name="content"}
{if $pagetitle != ''}<h1 id='LSview_title'>{$pagetitle|escape:"htmlall"}</h1>{/if}
<div class='LSform'>
<form action='object/{$LSobject|escape:"url"}/export' method='get'>
<dl class='LSform'>
<dt class='LSform'><label for='ioFormat'>{tr msg='Format'}</label></dt>
<dd class='LSform'>
<select name='ioFormat'>
{html_options options=$ioFormats}
</select>
</dd>
<dd class='LSform'><input type='submit' value='{tr msg='Valid'}'/></dd>
</dl>
</form>
</div>
{/block}