mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-25 11:29:06 +01:00
Add export feature using existing LSioFormats
This commit is contained in:
parent
7ecfa33afc
commit
5f4798a5a1
15 changed files with 769 additions and 264 deletions
2
debian/control
vendored
2
debian/control
vendored
|
@ -6,7 +6,7 @@ Maintainer: Benjamin Renard <brenard@easter-eggs.com>
|
|||
|
||||
Package: ldapsaisie
|
||||
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
|
||||
Description: web based interface for managing LDAP servers content
|
||||
LdapSaisie is a Web application developed to manage LDAP directory.
|
||||
|
|
|
@ -103,18 +103,23 @@ création du type d'&LSobject;. En conséquence :
|
|||
<sect4 id="config-LSobject-ioFormat-drivers-CSV">
|
||||
<title>Pilote de fichiers CSV</title>
|
||||
<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></application>. Par défaut, les paramètres de lecture et d'écriture des
|
||||
fichiers sont : la virgule sert de délimiteur, le caractère <literal>"</literal> peut
|
||||
être utilisé pour encadrer les valeurs des champs et la longueur maximale d'une ligne
|
||||
est 999999. Ces paramètres peuvent être modifiés en configurant les options du pilote.
|
||||
</ulink></application> était utilisée. Par défaut, les paramètres de lecture et
|
||||
d'écriture des fichiers sont : la virgule sert de délimiteur, le caractère
|
||||
<literal>"</literal> peut être utilisé pour encadrer les valeurs des champs et la
|
||||
longueur maximale d'une ligne est infini. Ces paramètres peuvent être modifiés en
|
||||
configurant les options du pilote.
|
||||
<programlisting>
|
||||
<citetitle>Structure</citetitle>
|
||||
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['ioFormat']['[ID ioFormat]']['driver_options'] = array (
|
||||
'delimiter' => '[délimiteur]',
|
||||
'enclosure' => '[caractère d'encadrement de texte]',
|
||||
'length' => [longueur maximale d'une ligne],
|
||||
'escape' => '[caratère d'encadrement]'
|
||||
'escape' => '[caractère d'échappement]',
|
||||
'multiple_value_delimiter' => '[délimiteur]',
|
||||
);]]>
|
||||
</programlisting>
|
||||
|
||||
|
@ -132,20 +137,40 @@ création du type d'&LSobject;. En conséquence :
|
|||
<term>length</term>
|
||||
<listitem>
|
||||
<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>)
|
||||
</simpara>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>escape</term>
|
||||
<term>enclosure</term>
|
||||
<listitem>
|
||||
<simpara>Le caractère utilisé pour encadrer les valeurs des champs
|
||||
(Par défaut : <literal>"</literal>).</simpara>
|
||||
</listitem>
|
||||
</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>
|
||||
|
||||
</para>
|
||||
|
|
|
@ -65,9 +65,7 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
|||
'driver' => 'CSV',
|
||||
'driver_options' => array (
|
||||
'delimiter' => ';',
|
||||
'escape' => '"',
|
||||
'eol' => ';',
|
||||
'length' => 2,
|
||||
'enclosure' => '"',
|
||||
),
|
||||
'fields' => array (
|
||||
'login' => 'uid',
|
||||
|
@ -83,6 +81,43 @@ $GLOBALS['LSobjects']['LSpeople'] = array (
|
|||
'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',
|
||||
|
|
BIN
src/images/default/export.png
Normal file
BIN
src/images/default/export.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 581 B |
|
@ -220,37 +220,21 @@ class LSattribute extends LSlog_staticLoggerClass {
|
|||
* @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) {
|
||||
if($this -> getConfig("form.$idForm")) {
|
||||
if (!$this -> html) {
|
||||
LSerror :: addErrorCode('LSattribute_09',array('type' => 'html','name' => $this -> name));
|
||||
return;
|
||||
}
|
||||
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;
|
||||
$form_mode = $this -> getConfig("form.$idForm", false);
|
||||
self :: log_debug("$this -> addToForm($idForm): mode = ".varDump($form_mode));
|
||||
if($form_mode === false) {
|
||||
self :: log_debug("Attribute ".$this -> name." not in form $idForm.");
|
||||
return True;
|
||||
}
|
||||
|
||||
$element = $this -> html -> addToForm($form,$idForm,$data);
|
||||
if(!$element) {
|
||||
LSerror :: addErrorCode('LSform_06',$this -> name);
|
||||
}
|
||||
$element = $this -> _addToForm($form, $idForm, $obj, $value);
|
||||
if(!$element)
|
||||
return false;
|
||||
|
||||
if($this -> getConfig('required')) {
|
||||
if($this -> getConfig('required', false, 'bool'))
|
||||
$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.");
|
||||
$element -> freeze();
|
||||
}
|
||||
|
@ -277,10 +261,6 @@ class LSattribute extends LSlog_staticLoggerClass {
|
|||
LSerror :: addErrorCode('LSattribute_04', $this->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
self :: log_debug("Attribute ".$this -> name." not in form $idForm.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -319,37 +299,75 @@ class LSattribute extends LSlog_staticLoggerClass {
|
|||
}
|
||||
|
||||
/**
|
||||
* Ajoute l'attribut au formualaire de vue
|
||||
*
|
||||
* Cette méthode ajoute l'attribut au formulaire $form de vue si il doit l'être
|
||||
* Add attribute to LSview
|
||||
*
|
||||
* @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) {
|
||||
if ($this -> getConfig('view', false, 'bool') && ($this -> myRights() != 'n') ) {
|
||||
if (!$this -> getConfig('view', false, 'bool') || ($this -> myRights() == 'n') )
|
||||
return true;
|
||||
$element = $this -> _addToForm($form, 'view');
|
||||
if ($element) {
|
||||
$element -> freeze();
|
||||
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 {
|
||||
$data=null;
|
||||
else if ($obj && !is_empty($this -> getConfig('default_value'))) {
|
||||
$data = $obj -> getFData($this -> getConfig('default_value'));
|
||||
}
|
||||
$element = $this -> html -> addToForm($form,'view',$data);
|
||||
}
|
||||
|
||||
$element = $this -> html -> addToForm($form, $idForm, $data);
|
||||
if(!$element instanceof LSformElement) {
|
||||
LSerror :: addErrorCode('LSform_06',$this -> name);
|
||||
return;
|
||||
}
|
||||
$element -> freeze();
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
103
src/includes/class/class.LSexport.php
Normal file
103
src/includes/class/class.LSexport.php
Normal 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.")
|
||||
);
|
|
@ -333,8 +333,8 @@ LSerror :: defineError('LSimport_03',
|
|||
___("LSimport: input/output format %{format} invalid.")
|
||||
);
|
||||
LSerror :: defineError('LSimport_04',
|
||||
___("LSimport : Fail to initialize input/output driver")
|
||||
___("LSimport: Fail to initialize input/output driver.")
|
||||
);
|
||||
LSerror :: defineError('LSimport_05',
|
||||
___("LSimport : Fail to load objects's data from input file")
|
||||
___("LSimport: Fail to load objects's data from input file.")
|
||||
);
|
||||
|
|
|
@ -20,14 +20,16 @@
|
|||
|
||||
******************************************************************************/
|
||||
|
||||
LSsession :: loadLSclass('LSlog_staticLoggerClass');
|
||||
|
||||
/**
|
||||
* Manage IOformat of LSldapObject import/export
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*/
|
||||
class LSioFormat {
|
||||
class LSioFormat extends LSlog_staticLoggerClass {
|
||||
|
||||
var $config=False;
|
||||
var $config = false;
|
||||
var $driver = False;
|
||||
|
||||
/**
|
||||
|
@ -42,14 +44,14 @@ class LSioFormat {
|
|||
$conf = LSconfig::get('LSobjects.'.$LSobject.".ioFormat.".$ioFormat);
|
||||
if(is_array($conf)) {
|
||||
$this -> config = $conf;
|
||||
if (isset($this -> config['driver']) && LSsession :: loadLSclass('LSioFormat'.$this -> config['driver'])) {
|
||||
$driverClass='LSioFormat'.$this -> config['driver'];
|
||||
$driverOptions=array();
|
||||
if (isset($this -> config['driver_options'])) $driverOptions = $this -> config['driver_options'];
|
||||
$driver = $this -> getConfig('driver');
|
||||
if ($driver && LSsession :: loadLSclass('LSioFormat'.$driver)) {
|
||||
$driverClass = "LSioFormat".$driver;
|
||||
$driverOptions = $this -> getConfig('driver_options', array(), 'array');
|
||||
$this -> driver = new $driverClass($driverOptions);
|
||||
}
|
||||
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 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
|
||||
*
|
||||
|
@ -83,7 +98,44 @@ class LSioFormat {
|
|||
* @retval array The objects contained by the loaded file
|
||||
**/
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,8 +30,40 @@ LSsession :: loadLSclass('LSioFormatDriver');
|
|||
*/
|
||||
class LSioFormatCSV extends LSioFormatDriver {
|
||||
|
||||
// File_CSV_DataSource object
|
||||
private $csv=false;
|
||||
private $delimiter = null;
|
||||
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
|
||||
|
@ -41,29 +73,57 @@ class LSioFormatCSV extends LSioFormatDriver {
|
|||
* @retval boolean True if file is loaded, false otherwise
|
||||
**/
|
||||
public function loadFile($path) {
|
||||
$this->csv=new File_CSV_DataSource;
|
||||
if (is_array($this -> options)) {
|
||||
foreach ($this -> options as $opt_key => $opt_val) {
|
||||
if (isset($this->csv -> settings[$opt_key]))
|
||||
$this->csv -> settings[$opt_key] = $opt_val;
|
||||
}
|
||||
}
|
||||
if ($this->csv->load($path)) {
|
||||
return True;
|
||||
}
|
||||
self :: log_debug("loadFile($path)");
|
||||
$fd = fopen($path, 'r');
|
||||
if ($fd === false) {
|
||||
self :: log_error("Fail to open file '$path'.");
|
||||
return false;
|
||||
}
|
||||
|
||||
$this -> rows = array();
|
||||
while (
|
||||
(
|
||||
$row = fgetcsv(
|
||||
$fd, $this -> length, $this -> delimiter,
|
||||
$this -> enclosure, $this -> escape
|
||||
)
|
||||
) !== FALSE) {
|
||||
$this -> rows[] = $row;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if loaded file data are valid
|
||||
*
|
||||
* @retval boolean True if loaded file data are valid, false otherwise
|
||||
**/
|
||||
public function isValid() {
|
||||
if ($this -> csv && $this -> csv -> isSymmetric()) {
|
||||
return True;
|
||||
if (!is_array($this -> rows) && empty($this -> rows)) {
|
||||
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
|
||||
**/
|
||||
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
|
||||
**/
|
||||
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.")
|
||||
);
|
||||
|
|
|
@ -20,12 +20,14 @@
|
|||
|
||||
******************************************************************************/
|
||||
|
||||
LSsession :: loadLSclass('LSlog_staticLoggerClass');
|
||||
|
||||
/**
|
||||
* Driver to manage ioFormat file of LSldapObject import/export
|
||||
*
|
||||
* @author Benjamin Renard <brenard@easter-eggs.com>
|
||||
*/
|
||||
class LSioFormatDriver {
|
||||
class LSioFormatDriver extends LSlog_staticLoggerClass {
|
||||
|
||||
protected $options=array();
|
||||
|
||||
|
@ -137,4 +139,29 @@ class LSioFormatDriver {
|
|||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -456,6 +456,11 @@ function handle_LSobject_search($request) {
|
|||
'url' => "object/$LSobject/import",
|
||||
'action' => 'import'
|
||||
);
|
||||
$LSview_actions['export'] = array (
|
||||
'label' => _('Export'),
|
||||
'url' => "object/$LSobject/export",
|
||||
'action' => 'export'
|
||||
);
|
||||
}
|
||||
}
|
||||
$LSview_actions['refresh'] = array (
|
||||
|
@ -835,6 +840,45 @@ function handle_old_import_php($request) {
|
|||
}
|
||||
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
|
||||
*
|
||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: LdapSaisie\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
|
||||
"org>\n"
|
||||
|
@ -437,68 +437,68 @@ msgstr "LSformRule_%{type} : Le paramètre %{param} n'est pas défini."
|
|||
msgid "LSformRule: Unknown rule type %{type}."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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}."
|
||||
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 ""
|
||||
"Failed to load existing object %{dn} from LDAP server. Can't update object."
|
||||
msgstr ""
|
||||
"Impossible de charger l'objet existant %{dn} depuis l'annuaire LDAP. "
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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."
|
||||
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."
|
||||
msgstr "LSimport : Le format d'entrée/sortie %{format} est invalide."
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:331
|
||||
msgid "LSimport : Fail to initialize input/output driver"
|
||||
msgstr "LSimport : Impossible d'initialiser le pilote d'entrée/sortie"
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:336
|
||||
msgid "LSimport: Fail to initialize input/output driver."
|
||||
msgstr "LSimport : Impossible d'initialiser le pilote d'entrée/sortie."
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:334
|
||||
msgid "LSimport : Fail to load objects's data from input file"
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:339
|
||||
msgid "LSimport: Fail to load objects's data from input file."
|
||||
msgstr ""
|
||||
"LSimport: Impossible de charger les données des objets depuis le fichier "
|
||||
"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.LSsmoothbox.php:39
|
||||
#: /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:1240
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1382
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:623
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1279
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1421
|
||||
#: templates/default/recoverpassword.tpl:21
|
||||
msgid "Validate"
|
||||
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_supannLabeledValue.php:62
|
||||
#: /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:1168
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1253
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1395
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1039
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1207
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1292
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1434
|
||||
msgid "Modify"
|
||||
msgstr "Modifier"
|
||||
|
||||
|
@ -846,6 +846,24 @@ msgstr ""
|
|||
"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."
|
||||
|
||||
#: /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
|
||||
msgid ""
|
||||
"LSformRule_differentPassword : Other password attribute is not configured."
|
||||
|
@ -884,11 +902,11 @@ msgstr ""
|
|||
"LSformRule_differentPassword : Les autres attributs mots de passe doivent "
|
||||
"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."
|
||||
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 ""
|
||||
"LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} "
|
||||
"& HTML = %{html})."
|
||||
|
@ -896,7 +914,7 @@ msgstr ""
|
|||
"LSattribute : Attribut %{attr} : Les types LDAP ou HTML sont inconnus (LDAP "
|
||||
"= %{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 ""
|
||||
"LSattribute : The function %{func} to display the attribute %{attr} is "
|
||||
"unknow."
|
||||
|
@ -904,14 +922,14 @@ msgstr ""
|
|||
"LSattribute : La fonction %{func} pour afficher l'attribut %{attr} est "
|
||||
"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 ""
|
||||
"LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow."
|
||||
msgstr ""
|
||||
"LSattribute : La règle %{rule} de validation de l'attribut %{attr} n'existe "
|
||||
"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 ""
|
||||
"LSattribute : Configuration data to verify the attribute %{attr} are "
|
||||
"incorrect."
|
||||
|
@ -919,22 +937,22 @@ msgstr ""
|
|||
"LSattribute : Les données de configuration pour vérifier l'attribut %{attr} "
|
||||
"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 ""
|
||||
"LSattribute : The function %{func} to save the attribute %{attr} is unknow."
|
||||
msgstr ""
|
||||
"LSattribute : La fonction %{func} pour sauvegarder l'attribut %{attr} est "
|
||||
"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."
|
||||
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."
|
||||
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 ""
|
||||
"LSattribute : Generation of the attribute %{attr} did not return a correct "
|
||||
"value."
|
||||
|
@ -942,7 +960,7 @@ msgstr ""
|
|||
"LSattribute : La génération de l'attribut %{attr} n'a pas retournée de "
|
||||
"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 ""
|
||||
"LSattribute : The attr_%{type} of the attribute %{name} is not yet defined."
|
||||
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/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
|
||||
msgid "Refresh"
|
||||
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:85
|
||||
#: /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:1160
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1055
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1199
|
||||
msgid "Delete"
|
||||
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/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"
|
||||
msgstr "Nouveau"
|
||||
|
||||
|
@ -1719,14 +1737,14 @@ msgid "Delete this field."
|
|||
msgstr "Supprimer cette valeur."
|
||||
|
||||
#: /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 ?"
|
||||
msgstr ""
|
||||
"Êtes-vous vraiment sûre de vouloir exécuter l'action personnalisée %{title} "
|
||||
"sur cette recherche ?"
|
||||
|
||||
#: /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 ""
|
||||
"Do you really want to execute custom action %{customAction} on "
|
||||
"%{objectname} ?"
|
||||
|
@ -1875,8 +1893,8 @@ msgid "Display RSS stack."
|
|||
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/routes.php:574
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1326
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:579
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1365
|
||||
msgid "undefined"
|
||||
msgstr "non-définie"
|
||||
|
||||
|
@ -2249,6 +2267,10 @@ msgstr ""
|
|||
"LScli : La fonction de prise en charge de la commande CLI '%{command}' n'est "
|
||||
"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
|
||||
msgid "LSlog : Fail to load logging handler %{handler}."
|
||||
msgstr "LSlog : Impossible de charger l'handler %{handler}."
|
||||
|
@ -2271,14 +2293,14 @@ msgid "Unknown error : %{error}"
|
|||
msgstr "Erreur inconnu : %{error}"
|
||||
|
||||
#: /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:1245
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1191
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1284
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1426
|
||||
msgid "View"
|
||||
msgstr "Voir"
|
||||
|
||||
#: /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"
|
||||
msgstr "Copier"
|
||||
|
||||
|
@ -2294,7 +2316,7 @@ msgstr ""
|
|||
"LSsearchEntry : formaterFunction %{func} invalide utilisé pour "
|
||||
"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."
|
||||
msgstr ""
|
||||
"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"
|
||||
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"
|
||||
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
|
||||
msgid "Search"
|
||||
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
|
||||
msgid "Approximative search"
|
||||
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
|
||||
msgid "Recursive search"
|
||||
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 ""
|
||||
"The custom action %{title} have been successfully execute on this search."
|
||||
msgstr ""
|
||||
"L'action personnalisée %{title} a été correctement exécutée sur cette "
|
||||
"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"
|
||||
msgstr "Masque de saisie"
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:910
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1626
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:949
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1665
|
||||
msgid "Object has been added."
|
||||
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"
|
||||
msgstr "Mon compte"
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1110
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1716
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1149
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1755
|
||||
msgid "The object has been partially modified."
|
||||
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:1719
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1758
|
||||
msgid "The object has been modified successfully."
|
||||
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:1760
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1267
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1799
|
||||
msgid "%{objectname} has been successfully deleted."
|
||||
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}"
|
||||
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> ?"
|
||||
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 ""
|
||||
"The custom action %{customAction} have been successfully execute on "
|
||||
"%{objectname}."
|
||||
|
@ -2506,7 +2533,7 @@ msgstr "Fichier"
|
|||
msgid "Forgot your password ?"
|
||||
msgstr "Mot de passe perdu ?"
|
||||
|
||||
#: templates/default/import.tpl:13
|
||||
#: templates/default/export.tpl:8 templates/default/import.tpl:13
|
||||
msgid "Format"
|
||||
msgstr "Format"
|
||||
|
||||
|
@ -2654,7 +2681,7 @@ msgstr "Mise à jour des objets existants"
|
|||
msgid "Updated objects"
|
||||
msgstr "Objets mis à jour"
|
||||
|
||||
#: templates/default/import.tpl:36
|
||||
#: templates/default/export.tpl:15 templates/default/import.tpl:36
|
||||
msgid "Valid"
|
||||
msgstr "Valider"
|
||||
|
||||
|
|
|
@ -360,65 +360,65 @@ msgstr ""
|
|||
msgid "LSformRule: Unknown rule type %{type}."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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}."
|
||||
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 ""
|
||||
"Failed to load existing object %{dn} from LDAP server. Can't update object."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:331
|
||||
msgid "LSimport : Fail to initialize input/output driver"
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:336
|
||||
msgid "LSimport: Fail to initialize input/output driver."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:334
|
||||
msgid "LSimport : Fail to load objects's data from input file"
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSimport.php:339
|
||||
msgid "LSimport: Fail to load objects's data from input file."
|
||||
msgstr ""
|
||||
|
||||
#: /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.LSsmoothbox.php:39
|
||||
#: /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:1240
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1382
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:623
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1279
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1421
|
||||
#: templates/default/recoverpassword.tpl:21
|
||||
msgid "Validate"
|
||||
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_supannLabeledValue.php:62
|
||||
#: /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:1168
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1253
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1395
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1039
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1207
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1292
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1434
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
|
||||
|
@ -725,6 +725,22 @@ msgid ""
|
|||
"value, you can't select it."
|
||||
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
|
||||
msgid ""
|
||||
"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}."
|
||||
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."
|
||||
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 ""
|
||||
"LSattribute : Attribute %{attr} : LDAP or HTML types unknow (LDAP = %{ldap} "
|
||||
"& HTML = %{html})."
|
||||
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 ""
|
||||
"LSattribute : The function %{func} to display the attribute %{attr} is "
|
||||
"unknow."
|
||||
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 ""
|
||||
"LSattribute : The rule %{rule} to validate the attribute %{attr} is unknow."
|
||||
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 ""
|
||||
"LSattribute : Configuration data to verify the attribute %{attr} are "
|
||||
"incorrect."
|
||||
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 ""
|
||||
"LSattribute : The function %{func} to save the attribute %{attr} is unknow."
|
||||
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."
|
||||
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."
|
||||
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 ""
|
||||
"LSattribute : Generation of the attribute %{attr} did not return a correct "
|
||||
"value."
|
||||
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 ""
|
||||
"LSattribute : The attr_%{type} of the attribute %{name} is not yet defined."
|
||||
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/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
|
||||
msgid "Refresh"
|
||||
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:85
|
||||
#: /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:1160
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1055
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1199
|
||||
msgid "Delete"
|
||||
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/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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1436,12 +1452,12 @@ msgid "Delete this field."
|
|||
msgstr ""
|
||||
|
||||
#: /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 ?"
|
||||
msgstr ""
|
||||
|
||||
#: /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 ""
|
||||
"Do you really want to execute custom action %{customAction} on "
|
||||
"%{objectname} ?"
|
||||
|
@ -1579,8 +1595,8 @@ msgid "Display RSS stack."
|
|||
msgstr ""
|
||||
|
||||
#: /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:1326
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:579
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1365
|
||||
msgid "undefined"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1906,6 +1922,10 @@ msgstr ""
|
|||
msgid "LScli : The CLI command '%{command}' handler is not callable."
|
||||
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
|
||||
msgid "LSlog : Fail to load logging handler %{handler}."
|
||||
msgstr ""
|
||||
|
@ -1928,14 +1948,14 @@ msgid "Unknown error : %{error}"
|
|||
msgstr ""
|
||||
|
||||
#: /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:1245
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1191
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1284
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1426
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: /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"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1949,7 +1969,7 @@ msgid ""
|
|||
"%{column}."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
|
@ -1966,67 +1986,72 @@ msgstr ""
|
|||
msgid "Import"
|
||||
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"
|
||||
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
|
||||
msgid "Search"
|
||||
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
|
||||
msgid "Approximative search"
|
||||
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
|
||||
msgid "Recursive search"
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:593
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:598
|
||||
msgid ""
|
||||
"The custom action %{title} have been successfully execute on this search."
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:910
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1626
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:949
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1665
|
||||
msgid "Object has been added."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1047
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1086
|
||||
msgid "My account"
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1110
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1716
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1149
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1755
|
||||
msgid "The object has been partially modified."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1113
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1719
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1152
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1758
|
||||
msgid "The object has been modified successfully."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1228
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1760
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1267
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1799
|
||||
msgid "%{objectname} has been successfully deleted."
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1237
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1276
|
||||
msgid "Deleting : %{objectname}"
|
||||
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> ?"
|
||||
msgstr ""
|
||||
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1348
|
||||
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/routes.php:1387
|
||||
msgid ""
|
||||
"The custom action %{customAction} have been successfully execute on "
|
||||
"%{objectname}."
|
||||
|
@ -2155,7 +2180,7 @@ msgstr ""
|
|||
msgid "Forgot your password ?"
|
||||
msgstr ""
|
||||
|
||||
#: templates/default/import.tpl:13
|
||||
#: templates/default/export.tpl:8 templates/default/import.tpl:13
|
||||
msgid "Format"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2301,7 +2326,7 @@ msgstr ""
|
|||
msgid "Updated objects"
|
||||
msgstr ""
|
||||
|
||||
#: templates/default/import.tpl:36
|
||||
#: templates/default/export.tpl:15 templates/default/import.tpl:36
|
||||
msgid "Valid"
|
||||
msgstr ""
|
||||
|
||||
|
|
19
src/templates/default/export.tpl
Normal file
19
src/templates/default/export.tpl
Normal 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}
|
Loading…
Reference in a new issue