Compare commits

..

No commits in common. "1c42aa3a47ecd074c25903d991bcf1e19c26b230" and "9384d2e3125218070b2ee60042d9fe5ebff05712" have entirely different histories.

15 changed files with 381 additions and 340 deletions

View file

@ -1,9 +0,0 @@
<?php
$config = [];
if (PHP_VERSION_ID < 80100) {
$config['parameters']['typeAliases']['FTP\Connection'] = 'resource';
}
return $config;

View file

@ -1,6 +1,3 @@
includes:
- compat.php
parameters: parameters:
level: 3 level: 3
paths: paths:

View file

@ -1,6 +1,7 @@
<?php <?php
require 'Net/LDAP2.php'; require 'Net/LDAP2.php';
require 'Net/FTP.php';
require 'Console/Table.php'; require 'Console/Table.php';
require 'Zxcvbn/autoload.php'; require 'Zxcvbn/autoload.php';
require '/usr/share/php/phpseclib/autoload.php'; require '/usr/share/php/phpseclib/autoload.php';

View file

@ -7,3 +7,13 @@ repos:
- id: php-stan - id: php-stan
files: ^src\/.*\.(php)$ files: ^src\/.*\.(php)$
args: ['--configuration=.phpstan/config.neon'] args: ['--configuration=.phpstan/config.neon']
- repo: local
hooks:
- id: xmlint
files: ^doc\/.*\.(docbook)$
name: xmlint
entry: xmllint --valid --noout doc/LdapSaisie.docbook
pass_filenames: false
language: system
types: [text]
pass_filenames: false

12
INSTALL
View file

@ -23,8 +23,8 @@
* La librairie File_CSV_DataSource (paquet php-file-csv-datasource dans Debian) * La librairie File_CSV_DataSource (paquet php-file-csv-datasource dans Debian)
* La librairie Console_Table (nécessaire pour le fonctionnement de l'outil CLI, paquet php-console-table dans Debian) * La librairie Console_Table (nécessaire pour le fonctionnement de l'outil CLI, paquet php-console-table dans Debian)
* Les librairies Mail et Mail_Mime (nécessaire pour l'envoi de courriels, paquets php-mail et php-mail-mime dans Debian) * Les librairies Mail et Mail_Mime (nécessaire pour l'envoi de courriels, paquets php-mail et php-mail-mime dans Debian)
* L'extension PHP ftp (nécessaire pour le fonctionnement du LSaddon FTP, paquet php-ftp dans Debian) * La librairie Net_FTP (nécessaire pour le fonctionnement du LSaddon FTP, paquet php-console-table dans Debian)
* La librairie PhpSecLib (nécessaire pour le fonctionnement du LSaddon SSH, paquet php-phpseclib dans Debian) * La librairie PhpSecLib (nécessaire pour le fonctionnement du LSaddon SSH, paquet php-console-table dans Debian)
################# #################
# Avertissement # # Avertissement #
@ -78,7 +78,7 @@ Toutes les nuits, un snapshot de l'arbre Git est réalisé et est téléchargeab
Racine Racine
doc/ doc/
Les fichiers sources de la documentation (Markdown). Les fichiers sources de la documentation (docbook).
lsexample/ lsexample/
Les fichiers relatifs à l'annuaire d'exemple. Les fichiers relatifs à l'annuaire d'exemple.
src/ src/
@ -186,11 +186,17 @@ présente dans les sources du projet dans le dossier lsexample.
Nom du fichier de log des mises à jour. Nom du fichier de log des mises à jour.
THEME THEME
Le nom du theme à installer (facultatif et non traité dans ce tutoriel). Le nom du theme à installer (facultatif et non traité dans ce tutoriel).
BUILD_DOC
Variable booléene définissant si la documentation doit être compiler en utilisant le script buildDocExports.sh.
Ceci ne sera pas expliqué dans ce tutoriel et nous partirons donc du principe que cette variable est à 0.
######## ########
# Note # # Note #
######## ########
# #
# * D'autres variables sont présentes dans ce fichier et concerne uniquement la compilation de la documentation.
# Elle peuvent être ignorée à partir du moment ou la variable BUILD_DOC vaut 0.
#
# * Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin # * Il est possible d'utiliser dans ce fichier de configuration la variable bash $ROOT_DIR correspondant au chemin
# du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie. # du dossier d'installation, c'est à dire dans notre exemple /var/www/ldapsaisie.
# #

View file

@ -16,3 +16,39 @@ THEME_IMG_REF="default"
# Webserver service reload command to run on gettext MO files changed # Webserver service reload command to run on gettext MO files changed
#WEBSERVER_RELOAD_CMD='sudo service apache2 force-reload' #WEBSERVER_RELOAD_CMD='sudo service apache2 force-reload'
# Do doc export ?
BUILD_DOC=1
# The export dir
# If EXPORT_DIR is a zero length string, will not export doc
EXPORT_DOC_DIR=/var/www/ldapsaisie-doc
# PDF export name file
# If PDF is a zero length string, pdf doc export will not build
PDF=LdapSaisie.pdf
# EPUB export name file
# If EPUB is a zero length string, epub doc export will not build
EPUB=LdapSaisie.epub
# ALL_IN_ONE export name
# If ALL_IN_ONE is a zero length string, all-in-one doc export will not build
ALL_IN_ONE=all-in-one
# On-line export name
# If ONLINE is a zero length string, on-line doc export will not build
ONLINE=online
# Docbook export name
# If DOCBOOK is a zero length string, docbook doc export will not buil
DOCBOOK=docbook
# The CSS file to use in export
CSS=$ROOT_DIR/doc/styles/LS.css
# The image doc directory
IMAGES=$ROOT_DIR/doc/images
# The name of last update file
LAST_UPDATE_FILE=$EXPORT_DOC_DIR/last_update.txt

6
debian/control vendored
View file

@ -1,13 +1,13 @@
Source: ldapsaisie Source: ldapsaisie
Section: admin Section: admin
Priority: extra Priority: extra
Build-Depends: debhelper, bash-completion, python3, python3-venv, python3-pip Build-Depends: debhelper, xsltproc, docbook-xsl, bash-completion
Maintainer: Benjamin Renard <brenard@easter-eggs.com> 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-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, php-unidecode, php-zxcvbn, php-ftp, php-mail, php-mail-mime Recommends: php-mbstring, php-phpseclib, php-unidecode, php-zxcvbn
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.
It has been written in PHP / JavaScript and is published under the It has been written in PHP / JavaScript and is published under the

View file

@ -36,13 +36,12 @@
[PEAR_Mail_Mime](https://pear.php.net/package/Mail_Mime) (nécessaire pour l'envoi de courriels, [PEAR_Mail_Mime](https://pear.php.net/package/Mail_Mime) (nécessaire pour l'envoi de courriels,
paquets `php-mail` et `php-mail-mime` dans Debian) paquets `php-mail` et `php-mail-mime` dans Debian)
- L'[extension PHP `ftp`](https://www.php.net/manual/fr/intro.ftp.php) (nécessaire pour le - La librairie [Net_FTP](https://pear.php.net/package/Net_FTP) (nécessaire pour le fonctionnement du
fonctionnement du [LSaddon](../conf/index.md#configuration-des-lsaddons) FTP, paquet `php-ftp` [LSaddon](../conf/index.md#configuration-des-lsaddons) FTP, paquet `php-console-table` dans Debian)
dans Debian)
- La librairie [PhpSecLib](https://github.com/phpseclib/phpseclib) (nécessaire pour le - La librairie [PhpSecLib](https://github.com/phpseclib/phpseclib) (nécessaire pour le
fonctionnement du [LSaddon](../conf/index.md#configuration-des-lsaddons) SSH, paquet fonctionnement du [LSaddon](../conf/index.md#configuration-des-lsaddons) SSH, paquet `php-console-table`
`php-phpseclib` dans Debian) dans Debian)
!!! warning !!! warning

View file

@ -0,0 +1,30 @@
<?php
/*******************************************************************************
* Copyright (C) 2007 Easter-eggs
* https://ldapsaisie.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.
******************************************************************************/
/*
************************************************
* Données de configuration pour le support FTP *
************************************************
*/
// Pear :: NET_FTP
define('NET_FTP','/usr/share/php/Net/FTP.php');

View file

@ -20,38 +20,37 @@
******************************************************************************/ ******************************************************************************/
// Error messages // Messages d'erreur
// Support // Support
LSerror :: defineError('FTP_SUPPORT_01', LSerror :: defineError('FTP_SUPPORT_01',
___("FTP support: PHP ftp extension is missing.") ___("FTP Support : Pear::Net_FTP is missing.")
); );
// Other errors LSerror :: defineError('FTP_SUPPORT_02',
___("FTP Support : The constant %{const} is not defined.")
);
// Autres erreurs
LSerror :: defineError('FTP_00', LSerror :: defineError('FTP_00',
___("FTP error: %{msg}") ___("Net_FTP Error : %{msg}")
); );
LSerror :: defineError('FTP_01', LSerror :: defineError('FTP_01',
___("FTP: Unable to connect to FTP Server (Step : %{step}).") ___("FTP Support : Unable to connect to FTP Server (Step : %{step}).")
); );
LSerror :: defineError('FTP_02', LSerror :: defineError('FTP_02',
___("FTP: Unable to make directory %{dir} on the remote server.") ___("FTP Support : Unable to make directory %{dir} on the remote server.")
); );
LSerror :: defineError('FTP_03', LSerror :: defineError('FTP_03',
___("FTP: Unable to list directory %{dir} content on the remote server.") ___("FTP Support : Unable to delete directory %{dir} on the remote server.")
); );
LSerror :: defineError('FTP_04', LSerror :: defineError('FTP_04',
___("FTP: Unable to delete directory %{dir} on the remote server.") ___("FTP Support : Unable to modify rights on the directory %{dir} on the remote server.")
); );
LSerror :: defineError('FTP_05', LSerror :: defineError('FTP_05',
___("FTP: Unable to delete file %{file} on the remote server.") ___("FTP Support : Unable to rename folder from %{old} to %{new} on the remote server.")
);
LSerror :: defineError('FTP_06',
___("FTP: Unable to modify rights on the directory %{dir} on the remote server.")
);
LSerror :: defineError('FTP_07',
___("FTP: Unable to rename folder from %{old} to %{new} on the remote server.")
); );
/** /**
@ -64,23 +63,21 @@ LSerror :: defineError('FTP_07',
function LSaddon_ftp_support() { function LSaddon_ftp_support() {
$retval = true; $retval = true;
// PHP ftp extension dependency // Net_FTP lib dependency
if (!function_exists('ftp_connect')) { if (!class_exists('Net_FTP')) {
if (!defined('NET_FTP')) {
LSerror :: addErrorCode('FTP_SUPPORT_02', 'NET_FTP');
$retval = false;
} else if(!LSsession::includeFile(NET_FTP, true)) {
LSerror :: addErrorCode('FTP_SUPPORT_01'); LSerror :: addErrorCode('FTP_SUPPORT_01');
$retval = false; $retval = false;
} }
}
return $retval; return $retval;
} }
/**
* Log last FTP error
* @return void
*/
function _logLastFtpError() {
$error = error_get_last();
if ($error) LSerror :: addErrorCode('FTP_00', $error['message']);
}
/** /**
* Connect to FTP server * Connect to FTP server
@ -92,24 +89,42 @@ function _logLastFtpError() {
* @param string $user The username * @param string $user The username
* @param string $pwd The password * @param string $pwd The password
* *
* @return FTP\Connection|resource|false FTP\Connection (or resource with PHP <= 8.1.0) in case of * @return Net_FTP|false Net_FTP object in case of success, false otherwise
* success, false otherwise
*/ */
function connectToFTP($host, $port, $user, $pwd) { function connectToFTP($host, $port, $user, $pwd) {
$cnx = @ftp_connect($host, $port); $cnx = new Net_FTP();
if ($cnx === false) { $do = $cnx -> connect($host, $port);
_logLastFtpError(); if (!$do instanceof PEAR_Error){
LSerror :: addErrorCode('FTP_01', "1"); $do = $cnx -> login($user, $pwd);
if (!$do instanceof PEAR_Error) {
return $cnx;
}
else {
LSerror :: addErrorCode('FTP_01', "2");
LSerror :: addErrorCode('FTP_00', $do -> getMessage());
return false; return false;
} }
if (@ftp_login($cnx, $user, $pwd)) }
return $cnx; else {
_logLastFtpError(); LSerror :: addErrorCode('FTP_01', "1");
LSerror :: addErrorCode('FTP_01', "2"); LSerror :: addErrorCode('FTP_00', $do -> getMessage());
return false; return false;
} }
}
/** /**
* Creation d'un ou plusieurs dossiers via FTP
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @param string $host Le nom ou l'IP du serveur FTP
* @param string $port Le port de connexion au serveur ftp
* @param string $user Le nom d'utilidateur de connexion
* @param string $pwd Le mot de passe de connexion
* @param array $dirs ou string Le(s) dossier(s) à ajouter
*
* @return bool True ou false si il y a un problème durant la création du/des dossier(s)
* Create one or more directories throught FTP * Create one or more directories throught FTP
* *
* @author Benjamin Renard <brenard@easter-eggs.com> * @author Benjamin Renard <brenard@easter-eggs.com>
@ -128,67 +143,19 @@ function createDirsByFTP($host, $port, $user, $pwd, $dirs, $chmod=NULL) {
$cnx = connectToFTP($host, $port, $user, $pwd); $cnx = connectToFTP($host, $port, $user, $pwd);
if (!$cnx) return false; if (!$cnx) return false;
foreach(ensureIsArray($dirs) as $dir) { foreach(ensureIsArray($dirs) as $dir) {
if (@ftp_mkdir($cnx, $dir) === false) { $do = $cnx -> mkdir($dir, true);
_logLastFtpError(); if ($do instanceof PEAR_Error) {
LSerror :: addErrorCode('FTP_02', $dir); LSerror :: addErrorCode('FTP_02', $dir);
LSerror :: addErrorCode('FTP_00', $do -> getMessage());
return false; return false;
} }
if ($chmod && !@ftp_chmod($cnx, $chmod, $dir)) { if ($chmod) {
_logLastFtpError(); $do = $cnx -> chmod($dir, $chmod);
LSerror :: addErrorCode('FTP_06', $dir); if ($do instanceof PEAR_Error) {
}
}
return true;
}
/**
* Internal function call recursively to remove a directory and its content
* @param FTP\Connection|resource $cnx The FTP\Connection object (or resource with PHP < 8.1.0)
* @param string $dir The directory path to remove
* @return boolean
*/
function _removeDirByFTP(&$cnx, $dir) {
if ($dir[strlen($dir)-1] == '/')
$dir = substr($dir, 0, strlen($dir)-1);
$items = @ftp_nlist($cnx, $dir);
LSlog :: get_logger('LSaddon_ftp') -> trace(
"_removeDirByFTP($dir): directory content: ".varDump($items));
if (!is_array($items)) {
_logLastFtpError();
LSerror :: addErrorCode('FTP_03', $dir);
return false;
}
foreach($items as $item) {
if (@ftp_chdir($cnx, $item)) {
LSlog :: get_logger('LSaddon_ftp') -> trace(
"_removeDirByFTP($dir): item '$item' is a directory, delete it recursively");
if (!_removeDirByFTP($cnx, $item))
return false;
}
else {
LSlog :: get_logger('LSaddon_ftp') -> trace(
"_removeDirByFTP($dir): item '$item' is a file, delete it");
if (!@ftp_delete($cnx, $item)) {
_logLastFtpError();
LSerror :: addErrorCode('FTP_05', $item);
return false;
}
else {
LSlog :: get_logger('LSaddon_ftp') -> trace(
"_removeDirByFTP($dir): file '$item' removed");
}
}
}
if (@!ftp_rmdir($cnx, $dir)) {
_logLastFtpError();
LSerror :: addErrorCode('FTP_04', $dir); LSerror :: addErrorCode('FTP_04', $dir);
return false; LSerror :: addErrorCode('FTP_00', $do -> getMessage());
}
} }
else {
LSlog :: get_logger('LSaddon_ftp') -> trace(
"_removeDirByFTP($dir): directory '$dir' removed");
} }
return true; return true;
} }
@ -214,9 +181,17 @@ function _removeDirByFTP(&$cnx, $dir) {
function removeDirsByFTP($host, $port, $user, $pwd, $dirs) { function removeDirsByFTP($host, $port, $user, $pwd, $dirs) {
$cnx = connectToFTP($host, $port, $user, $pwd); $cnx = connectToFTP($host, $port, $user, $pwd);
if (!$cnx) return false; if (!$cnx) return false;
foreach(ensureIsArray($dirs) as $dir) foreach(ensureIsArray($dirs) as $dir) {
if (!_removeDirByFTP($cnx, $dir)) if ($dir[strlen($dir)-1] != '/') {
$dir .= '/';
}
$do = $cnx -> rm($dir,true);
if ($do instanceof PEAR_Error) {
LSerror :: addErrorCode('FTP_03', $dir);
LSerror :: addErrorCode('FTP_00', $do -> getMessage());
return false; return false;
}
}
return true; return true;
} }
@ -237,9 +212,10 @@ function removeDirsByFTP($host, $port, $user, $pwd, $dirs) {
function renameDirByFTP($host, $port, $user, $pwd, $old, $new) { function renameDirByFTP($host, $port, $user, $pwd, $old, $new) {
$cnx = connectToFTP($host, $port, $user, $pwd); $cnx = connectToFTP($host, $port, $user, $pwd);
if (!$cnx) return false; if (!$cnx) return false;
if (!@ftp_rename($cnx, $old, $new)) { $do = $cnx -> rename($old, $new);
_logLastFtpError(); if ($do instanceof PEAR_Error) {
LSerror :: addErrorCode('FTP_07', array('old' => $old, 'new' => $new)); LSerror :: addErrorCode('FTP_05', array('old' => $old, 'new' => $new));
LSerror :: addErrorCode('FTP_00', $do -> getMessage());
return false; return false;
} }
return true; return true;

View file

@ -28,19 +28,13 @@ LSerror :: defineError('POSIX_SUPPORT_01',
); );
LSerror :: defineError('POSIX_SUPPORT_02', LSerror :: defineError('POSIX_SUPPORT_02',
___("POSIX support: Unable to load LSaddon::FTP.") ___("POSIX Support : Unable to load LSaddon::FTP.")
); );
// Autres erreurs // Autres erreurs
LSerror :: defineError('POSIX_01', LSerror :: defineError('POSIX_01',
___("POSIX : The attribute %{dependency} is missing. Unable to forge the attribute %{attr}.") ___("POSIX : The attribute %{dependency} is missing. Unable to forge the attribute %{attr}.")
); );
LSerror :: defineError('POSIX_02',
___("POSIX: Fail to create user home directory.")
);
LSerror :: defineError('POSIX_03',
___("POSIX: Fail to delete user home directory.")
);
/** /**
* Verification du support POSIX par ldapSaisie * Verification du support POSIX par ldapSaisie
@ -195,30 +189,6 @@ function createHomeDirectoryByFTP($ldapObject) {
return true; return true;
} }
/**
* Delete home directory by FTP
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @param LSldapObject $ldapObject L'objet ldap
*
* @return bool True on success, false otherwise
*/
function deleteHomeDirectoryByFTP($ldapObject) {
$dir = getFData(LS_POSIX_HOMEDIRECTORY_FTP_PATH, $ldapObject, 'getValue');
if (
!removeDirsByFTP(
LS_POSIX_HOMEDIRECTORY_FTP_HOST, LS_POSIX_HOMEDIRECTORY_FTP_PORT,
LS_POSIX_HOMEDIRECTORY_FTP_USER, LS_POSIX_HOMEDIRECTORY_FTP_PWD,
$dir
)
) {
LSerror :: addErrorCode('POSIX_03');
return false;
}
return true;
}
/** /**
* Generate member attribute value from memberUid * Generate member attribute value from memberUid
* *

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: 2023-10-13 18:57+0200\n" "PO-Revision-Date: 2023-08-18 15:45+0200\n"
"Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n" "Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise." "Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n" "org>\n"
@ -336,25 +336,17 @@ msgid "POSIX Support: The constant %{const} is not defined."
msgstr "Support POSIX : La constante %{const} n'est pas définie." msgstr "Support POSIX : La constante %{const} n'est pas définie."
#: includes/addons/LSaddons.posix.php:31 #: includes/addons/LSaddons.posix.php:31
msgid "POSIX support: Unable to load LSaddon::FTP." msgid "POSIX Support : Unable to load LSaddon::FTP."
msgstr "Support POSIX : Impossible de charger LSaddon::FTP." msgstr "Support POSIX : Impossible de charger LSaddon::FTP."
#: includes/addons/LSaddons.posix.php:36 #: includes/addons/LSaddons.posix.php:36
msgid "" msgid ""
"POSIX: The attribute %{dependency} is missing. Unable to forge the attribute " "POSIX : The attribute %{dependency} is missing. Unable to forge the "
"%{attr}." "attribute %{attr}."
msgstr "" msgstr ""
"POSIX : L'attribut %{dependency} est manquant. Impossible de générer " "Support POSIX : L'attribut %{dependency} est manquant. Impossible de générer "
"l'attribut %{attr}." "l'attribut %{attr}."
#: includes/addons/LSaddons.posix.php:39
msgid "POSIX: Fail to create user home directory."
msgstr "POSIX : Impossible de créer le dossier personnel de l'utilisateur."
#: includes/addons/LSaddons.posix.php:42
msgid "POSIX: Fail to delete user home directory."
msgstr "POSIX : Impossible de supprimer le dossier personnel de l'utilisateur."
#: includes/addons/LSaddons.orgchart.php:27 #: includes/addons/LSaddons.orgchart.php:27
msgid "" msgid ""
"Organizational Chart Support : The global array %{array} is not defined." "Organizational Chart Support : The global array %{array} is not defined."
@ -528,50 +520,48 @@ msgid "The user him-self"
msgstr "L'utilisateur lui-même" msgstr "L'utilisateur lui-même"
#: includes/addons/LSaddons.ftp.php:27 #: includes/addons/LSaddons.ftp.php:27
msgid "FTP support: PHP ftp extension is missing." msgid "FTP Support : Pear::Net_FTP is missing."
msgstr "Support FTP : L'extension PHP ftp n'est pas installée." msgstr "Support FTP : Pear::Net_FTP n'est pas installé."
#: includes/addons/LSaddons.ftp.php:32 #: includes/addons/LSaddons.ftp.php:31
msgid "FTP error: %{msg}" msgid "FTP Support : The constant %{const} is not defined."
msgstr "Erreur FTP : %{msg}" msgstr "Support FTP : La constante %{const} n'est pas définie."
#: includes/addons/LSaddons.ftp.php:36 #: includes/addons/LSaddons.ftp.php:37
msgid "FTP: Unable to connect to FTP Server (Step : %{step})." msgid "Net_FTP Error : %{msg}"
msgstr "FTP : Impossible de se connecter au serveur FTP (Étape : %{step})" msgstr "Net_FTP Erreur : %{msg}"
#: includes/addons/LSaddons.ftp.php:39 #: includes/addons/LSaddons.ftp.php:41
msgid "FTP: Unable to make directory %{dir} on the remote server." msgid "FTP Support : Unable to connect to FTP Server (Step : %{step})."
msgstr "FTP : Impossible de créer le dossier %{dir} sur le serveur distant."
#: includes/addons/LSaddons.ftp.php:42
msgid "FTP: Unable to list directory %{dir} content on the remote server."
msgstr "" msgstr ""
"FTP : Impossible de lister le contenu du dossier %{dir} sur le serveur " "Support FTP : Impossible de se connecter au serveur FTP (Étape : %{step})"
#: includes/addons/LSaddons.ftp.php:44
msgid "FTP Support : Unable to make directory %{dir} on the remote server."
msgstr ""
"Support FTP : Impossible de créer le dossier %{dir} sur le serveur distant."
#: includes/addons/LSaddons.ftp.php:47
msgid "FTP Support : Unable to delete directory %{dir} on the remote server."
msgstr ""
"Support FTP : Impossible de supprimer le dossier %{dir} sur le serveur "
"distant." "distant."
#: includes/addons/LSaddons.ftp.php:45 #: includes/addons/LSaddons.ftp.php:50
msgid "FTP: Unable to delete directory %{dir} on the remote server."
msgstr ""
"FTP : Impossible de supprimer le dossier %{dir} sur le serveur distant."
#: includes/addons/LSaddons.ftp.php:48
msgid "FTP: Unable to delete file %{file} on the remote server."
msgstr ""
"FTP : Impossible de supprimer le fichier %{dir} sur le serveur distant."
#: includes/addons/LSaddons.ftp.php:51
msgid "" msgid ""
"FTP: Unable to modify rights on the directory %{dir} on the remote server." "FTP Support : Unable to modify rights on the directory %{dir} on the remote "
"server."
msgstr "" msgstr ""
"FTP : Impossible de modifier les droits sur le dossier %{dir} sur le serveur " "Support FTP : Impossible de modifier les droits sur le dossier %{dir} sur le "
"distant." "serveur distant."
#: includes/addons/LSaddons.ftp.php:54 #: includes/addons/LSaddons.ftp.php:53
msgid "" msgid ""
"FTP: Unable to rename folder from %{old} to %{new} on the remote server." "FTP Support : Unable to rename folder from %{old} to %{new} on the remote "
"server."
msgstr "" msgstr ""
"FTP : Impossible de renommer le dossier %{old} en %{new} sur le serveur " "Support FTP : Impossible de renommer le dossier %{old} en %{new} sur le "
"distant." "serveur distant."
#: includes/addons/LSaddons.mailquota.php:27 #: includes/addons/LSaddons.mailquota.php:27
msgid "MAILQUOTA Support : The constant %{const} is not defined." msgid "MAILQUOTA Support : The constant %{const} is not defined."
@ -645,10 +635,6 @@ msgstr ""
"MAILDIR : Erreur durant la récupération du chemin distant du dossier des " "MAILDIR : Erreur durant la récupération du chemin distant du dossier des "
"mails." "mails."
#: includes/addons/LSaddons.watermark.php:78
msgid "PRE-PRODUCTION"
msgstr "PRÉ-PRODUCTION"
#: includes/addons/LSaddons.showTechInfo.php:63 #: includes/addons/LSaddons.showTechInfo.php:63
#: templates/default/showTechInfo.tpl:16 #: templates/default/showTechInfo.tpl:16
msgid "Structural object class" msgid "Structural object class"
@ -1474,7 +1460,7 @@ 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}."
#: includes/class/class.LSattribute.php:823 #: includes/class/class.LSattribute.php:829
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})."
@ -1482,7 +1468,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})."
#: includes/class/class.LSattribute.php:826 #: includes/class/class.LSattribute.php:832
msgid "" msgid ""
"LSattribute : The function %{func} to display the attribute %{attr} is " "LSattribute : The function %{func} to display the attribute %{attr} is "
"unknow." "unknow."
@ -1490,14 +1476,14 @@ msgstr ""
"LSattribute : La fonction %{func} pour afficher l'attribut %{attr} est " "LSattribute : La fonction %{func} pour afficher l'attribut %{attr} est "
"inconnue." "inconnue."
#: includes/class/class.LSattribute.php:829 #: includes/class/class.LSattribute.php:835
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."
#: includes/class/class.LSattribute.php:832 #: includes/class/class.LSattribute.php:838
msgid "" msgid ""
"LSattribute : Configuration data to verify the attribute %{attr} are " "LSattribute : Configuration data to verify the attribute %{attr} are "
"incorrect." "incorrect."
@ -1505,22 +1491,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."
#: includes/class/class.LSattribute.php:835 #: includes/class/class.LSattribute.php:841
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."
#: includes/class/class.LSattribute.php:838 #: includes/class/class.LSattribute.php:844
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."
#: includes/class/class.LSattribute.php:841 #: includes/class/class.LSattribute.php:847
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."
#: includes/class/class.LSattribute.php:844 #: includes/class/class.LSattribute.php:850
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."
@ -1528,7 +1514,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."
#: includes/class/class.LSattribute.php:847 #: includes/class/class.LSattribute.php:853
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 ""
@ -1772,21 +1758,21 @@ msgstr "Type de fichier invalide (%{type})."
msgid "The attribute %{attr} is not valid." msgid "The attribute %{attr} is not valid."
msgstr "L'attribut %{attr} n'est pas valide." msgstr "L'attribut %{attr} n'est pas valide."
#: includes/class/class.LSldapObject.php:3165 #: includes/class/class.LSldapObject.php:3160
msgid "LSldapObject : Object type unknown." msgid "LSldapObject : Object type unknown."
msgstr "LSldapObject : Type d'objet inconnu." msgstr "LSldapObject : Type d'objet inconnu."
#: includes/class/class.LSldapObject.php:3168 #: includes/class/class.LSldapObject.php:3163
msgid "LSldapObject : Update form is not defined for the object %{obj}." msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr "" msgstr ""
"LSldapObject : Le formulaire de mise à jour n'est pas défini pour l'objet " "LSldapObject : Le formulaire de mise à jour n'est pas défini pour l'objet "
"%{obj}." "%{obj}."
#: includes/class/class.LSldapObject.php:3171 #: includes/class/class.LSldapObject.php:3166
msgid "LSldapObject : No form exists for the object %{obj}." msgid "LSldapObject : No form exists for the object %{obj}."
msgstr "LSldapObject : Aucun formulaire n'existe pour l'objet %{obj}" msgstr "LSldapObject : Aucun formulaire n'existe pour l'objet %{obj}"
#: includes/class/class.LSldapObject.php:3174 #: includes/class/class.LSldapObject.php:3169
msgid "" msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the " "LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow." "object %{obj} is unknow."
@ -1794,7 +1780,7 @@ msgstr ""
"LSldapObject : La fonction %{func} pour valider l'attribut %{attr} de " "LSldapObject : La fonction %{func} pour valider l'attribut %{attr} de "
"l'objet %{obj} est inconnue." "l'objet %{obj} est inconnue."
#: includes/class/class.LSldapObject.php:3177 #: includes/class/class.LSldapObject.php:3172
msgid "" msgid ""
"LSldapObject : Configuration data are missing to validate the attribute " "LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}." "%{attr} of the object %{obj}."
@ -1802,7 +1788,7 @@ msgstr ""
"LSldapObject : Des données de configurations sont manquantes pour pouvoir " "LSldapObject : Des données de configurations sont manquantes pour pouvoir "
"valider l'attribut %{attr} de l'objet %{obj}." "valider l'attribut %{attr} de l'objet %{obj}."
#: includes/class/class.LSldapObject.php:3181 #: includes/class/class.LSldapObject.php:3176
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed on the object event " "LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist." "%{event} doesn't exist."
@ -1810,14 +1796,14 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée lors de l'évènement " "LSldapObject : La fonction %{func} devant être exécutée lors de l'évènement "
"%{event} de l'objet n'existe pas." "%{event} de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3184 #: includes/class/class.LSldapObject.php:3179
msgid "" msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed." "LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr "" msgstr ""
"LSldapObject : L'exécution de la fonction %{func} lors de l'évènement " "LSldapObject : L'exécution de la fonction %{func} lors de l'évènement "
"%{event} de l'objet a échouée." "%{event} de l'objet a échouée."
#: includes/class/class.LSldapObject.php:3188 #: includes/class/class.LSldapObject.php:3183
msgid "" msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the " "LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist." "object event %{event}, doesn't exist."
@ -1825,7 +1811,7 @@ msgstr ""
"La classe %{class}, contenant la méthode %{meth} devant être exécutée lors " "La classe %{class}, contenant la méthode %{meth} devant être exécutée lors "
"de l'évènement %{event} de l'objet, n'existe pas." "de l'évènement %{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3191 #: includes/class/class.LSldapObject.php:3186
msgid "" msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object " "LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist." "event %{event}, doesn't exist."
@ -1833,7 +1819,7 @@ msgstr ""
"LSldapObject : La méthode %{meth} de la classe %{class} devant être exécutée " "LSldapObject : La méthode %{meth} de la classe %{class} devant être exécutée "
"lors de l'évènement %{event} de l'objet n'existe pas." "lors de l'évènement %{event} de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3194 #: includes/class/class.LSldapObject.php:3189
msgid "" msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to " "LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}." "be executed on object event %{event}."
@ -1841,7 +1827,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la méthode %{meth} de la classe " "LSldapObject : Erreur durant l'exécution de la méthode %{meth} de la classe "
"%{class} devant être exécutée lors de l'évènement %{event} de l'objet." "%{class} devant être exécutée lors de l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3198 #: includes/class/class.LSldapObject.php:3193
msgid "" msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing " "LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object." "to generate the DN of the new object."
@ -1849,7 +1835,7 @@ msgstr ""
"LSldapObject : Des informations de configuration du type d'objet %{obj} sont " "LSldapObject : Des informations de configuration du type d'objet %{obj} sont "
"manquantes pour la génération du DN du nouvel objet." "manquantes pour la génération du DN du nouvel objet."
#: includes/class/class.LSldapObject.php:3201 #: includes/class/class.LSldapObject.php:3196
msgid "" msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't " "LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN." "generate DN."
@ -1857,11 +1843,11 @@ msgstr ""
"LSldapObject : L'attribut %{attr} de l'objet n'est pas encore défini. " "LSldapObject : L'attribut %{attr} de l'objet n'est pas encore défini. "
"Impossible de générer le DN." "Impossible de générer le DN."
#: includes/class/class.LSldapObject.php:3204 #: includes/class/class.LSldapObject.php:3199
msgid "LSldapObject : Without DN, the object could not be changed." msgid "LSldapObject : Without DN, the object could not be changed."
msgstr "LSldapObject : Sans DN, l'objet ne peut pas être modifié." msgstr "LSldapObject : Sans DN, l'objet ne peut pas être modifié."
#: includes/class/class.LSldapObject.php:3207 #: includes/class/class.LSldapObject.php:3202
msgid "" msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute " "LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist." "%{attr} doesn't exist."
@ -1869,39 +1855,39 @@ msgstr ""
"LSldapObject : L'attritbut %{attr_depend} dépendant de l'attribut %{attr} " "LSldapObject : L'attritbut %{attr_depend} dépendant de l'attribut %{attr} "
"n'existe pas." "n'existe pas."
#: includes/class/class.LSldapObject.php:3210 #: includes/class/class.LSldapObject.php:3205
msgid "LSldapObject : Error during deleting the object %{objectname}." msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr "LSldapObject : Erreur durant la suppression de l'objet %{objectname}" msgstr "LSldapObject : Erreur durant la suppression de l'objet %{objectname}"
#: includes/class/class.LSldapObject.php:3214 #: includes/class/class.LSldapObject.php:3209
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet." "LSldapObject : Error during actions to be executed before renaming the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de " "LSldapObject : Erreur durant les actions devant être exécutée avant de "
"renommer l'objet." "renommer l'objet."
#: includes/class/class.LSldapObject.php:3217 #: includes/class/class.LSldapObject.php:3212
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet." "LSldapObject : Error during actions to be executed after renaming the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir " "LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"renommé l'objet." "renommé l'objet."
#: includes/class/class.LSldapObject.php:3221 #: includes/class/class.LSldapObject.php:3216
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet." "LSldapObject : Error during actions to be executed before deleting the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de " "LSldapObject : Erreur durant les actions devant être exécutée avant de "
"supprimer l'objet." "supprimer l'objet."
#: includes/class/class.LSldapObject.php:3224 #: includes/class/class.LSldapObject.php:3219
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet." "LSldapObject : Error during actions to be executed after deleting the objet."
msgstr "" msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir " "LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"supprimé l'objet." "supprimé l'objet."
#: includes/class/class.LSldapObject.php:3228 #: includes/class/class.LSldapObject.php:3223
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed before creating the " "LSldapObject : Error during the actions to be executed before creating the "
"object." "object."
@ -1909,7 +1895,7 @@ msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de créer " "LSldapObject : Erreur durant les actions devant être exécutée avant de créer "
"l'objet." "l'objet."
#: includes/class/class.LSldapObject.php:3231 #: includes/class/class.LSldapObject.php:3226
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed after creating the " "LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway." "object. It was created anyway."
@ -1917,7 +1903,7 @@ msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutées après la " "LSldapObject : Erreur durant les actions devant être exécutées après la "
"création de l'objet. Il a tout de même été créé." "création de l'objet. Il a tout de même été créé."
#: includes/class/class.LSldapObject.php:3235 #: includes/class/class.LSldapObject.php:3230
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed before creating the " "LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist." "object doesn't exist."
@ -1925,7 +1911,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée avant la création de " "LSldapObject : La fonction %{func} devant être exécutée avant la création de "
"l'objet n'existe pas." "l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3238 #: includes/class/class.LSldapObject.php:3233
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object." "deleting the object."
@ -1933,7 +1919,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être " "LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la suppression de l'objet." "exécutée après la suppression de l'objet."
#: includes/class/class.LSldapObject.php:3241 #: includes/class/class.LSldapObject.php:3236
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object " "LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist." "doesn't exist."
@ -1941,7 +1927,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée après la suppression " "LSldapObject : La fonction %{func} devant être exécutée après la suppression "
"de l'objet n'existe pas." "de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:3244 #: includes/class/class.LSldapObject.php:3239
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"creating the object." "creating the object."
@ -1949,7 +1935,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être " "LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la création de l'objet." "exécutée après la création de l'objet."
#: includes/class/class.LSldapObject.php:3248 #: includes/class/class.LSldapObject.php:3243
msgid "" msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, " "LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
@ -1957,7 +1943,7 @@ msgstr ""
"LSldapObject : La fonction %{func}, devant être exécutée lors de l'évènement " "LSldapObject : La fonction %{func}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas." "%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3251 #: includes/class/class.LSldapObject.php:3246
msgid "" msgid ""
"LSldapObject : Error during the execution of %{func} function on object " "LSldapObject : Error during the execution of %{func} function on object "
"event %{event}." "event %{event}."
@ -1965,7 +1951,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} lors de " "LSldapObject : Erreur durant l'exécution de la fonction %{func} lors de "
"l'évènement %{event} de l'objet." "l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3255 #: includes/class/class.LSldapObject.php:3250
msgid "" msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, " "LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
@ -1973,7 +1959,7 @@ msgstr ""
"LSldapObject : La méthode %{meth}, devant être exécutée lors de l'évènement " "LSldapObject : La méthode %{meth}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas." "%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:3258 #: includes/class/class.LSldapObject.php:3253
msgid "" msgid ""
"LSldapObject : Error during execution of %{meth} method on object event " "LSldapObject : Error during execution of %{meth} method on object event "
"%{event}." "%{event}."
@ -1981,13 +1967,13 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la méthode %{meth} lors de " "LSldapObject : Erreur durant l'exécution de la méthode %{meth} lors de "
"l'évènement %{event} de l'objet." "l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:3261 #: includes/class/class.LSldapObject.php:3256
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}." msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr "" msgstr ""
"LSldapObject : Erreur durant la génération du filtre LDAP de l'objet " "LSldapObject : Erreur durant la génération du filtre LDAP de l'objet "
"%{LSobject}." "%{LSobject}."
#: includes/class/class.LSldapObject.php:3265 #: includes/class/class.LSldapObject.php:3260
msgid "" msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} " "LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}." "on %{objectname}."
@ -1995,22 +1981,22 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de l'action personnalisée " "LSldapObject : Erreur durant l'exécution de l'action personnalisée "
"%{customAction} sur l'objet %{objectname}." "%{customAction} sur l'objet %{objectname}."
#: includes/class/class.LSldapObject.php:3269 #: includes/class/class.LSldapObject.php:3264
msgid "LSldapObject : Fail to retrieve container DN." msgid "LSldapObject : Fail to retrieve container DN."
msgstr "LSldapObject : Impossible de récupérer le DN parent." msgstr "LSldapObject : Impossible de récupérer le DN parent."
#: includes/class/class.LSldapObject.php:3272 #: includes/class/class.LSldapObject.php:3267
msgid "" msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable." "LSldapObject : The function %{func} to generate container DN is not callable."
msgstr "" msgstr ""
"LSldapObject : La fonction %{func} pour générer le DN parent n'est pas " "LSldapObject : La fonction %{func} pour générer le DN parent n'est pas "
"exécutable." "exécutable."
#: includes/class/class.LSldapObject.php:3275 #: includes/class/class.LSldapObject.php:3270
msgid "LSldapObject : Error during generating container DN : %{error}" msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}." msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}."
#: includes/class/class.LSldapObject.php:3278 #: includes/class/class.LSldapObject.php:3273
msgid "" msgid ""
"LSldapObject : An LDAP object with the same DN as generated for this new one " "LSldapObject : An LDAP object with the same DN as generated for this new one "
"already exists. Please verify your configuration." "already exists. Please verify your configuration."
@ -2018,7 +2004,7 @@ msgstr ""
"LSldapObject : Un objet LDAP avec le même DN que celui généré pour ce nouvel " "LSldapObject : Un objet LDAP avec le même DN que celui généré pour ce nouvel "
"objet existe déjà. Merci de vérifier votre configuration." "objet existe déjà. Merci de vérifier votre configuration."
#: includes/class/class.LSldapObject.php:3283 #: includes/class/class.LSldapObject.php:3278
msgid "" msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle " "LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})." "standard relations (Method : %{meth})."
@ -3790,3 +3776,6 @@ msgstr "événement(s) trouvé(s) pour cet objet."
#: templates/default/import.tpl:27 templates/default/import.tpl:33 #: templates/default/import.tpl:27 templates/default/import.tpl:33
msgid "no" msgid "no"
msgstr "non" msgstr "non"
#~ msgid "PRE-PRODUCTION"
#~ msgstr "PRÉ-PRODUCTION"

View file

@ -260,21 +260,13 @@ msgid "POSIX Support: The constant %{const} is not defined."
msgstr "" msgstr ""
#: includes/addons/LSaddons.posix.php:31 #: includes/addons/LSaddons.posix.php:31
msgid "POSIX support: Unable to load LSaddon::FTP." msgid "POSIX Support : Unable to load LSaddon::FTP."
msgstr "" msgstr ""
#: includes/addons/LSaddons.posix.php:36 #: includes/addons/LSaddons.posix.php:36
msgid "" msgid ""
"POSIX: The attribute %{dependency} is missing. Unable to forge the attribute " "POSIX : The attribute %{dependency} is missing. Unable to forge the "
"%{attr}." "attribute %{attr}."
msgstr ""
#: includes/addons/LSaddons.posix.php:39
msgid "POSIX: Fail to create user home directory."
msgstr ""
#: includes/addons/LSaddons.posix.php:42
msgid "POSIX: Fail to delete user home directory."
msgstr "" msgstr ""
#: includes/addons/LSaddons.orgchart.php:27 #: includes/addons/LSaddons.orgchart.php:27
@ -442,41 +434,39 @@ msgid "The user him-self"
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:27 #: includes/addons/LSaddons.ftp.php:27
msgid "FTP support: PHP ftp extension is missing." msgid "FTP Support : Pear::Net_FTP is missing."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:32 #: includes/addons/LSaddons.ftp.php:31
msgid "FTP error: %{msg}" msgid "FTP Support : The constant %{const} is not defined."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:36 #: includes/addons/LSaddons.ftp.php:37
msgid "FTP: Unable to connect to FTP Server (Step : %{step})." msgid "Net_FTP Error : %{msg}"
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:39 #: includes/addons/LSaddons.ftp.php:41
msgid "FTP: Unable to make directory %{dir} on the remote server." msgid "FTP Support : Unable to connect to FTP Server (Step : %{step})."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:42 #: includes/addons/LSaddons.ftp.php:44
msgid "FTP: Unable to list directory %{dir} content on the remote server." msgid "FTP Support : Unable to make directory %{dir} on the remote server."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:45 #: includes/addons/LSaddons.ftp.php:47
msgid "FTP: Unable to delete directory %{dir} on the remote server." msgid "FTP Support : Unable to delete directory %{dir} on the remote server."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:48 #: includes/addons/LSaddons.ftp.php:50
msgid "FTP: Unable to delete file %{file} on the remote server."
msgstr ""
#: includes/addons/LSaddons.ftp.php:51
msgid "" msgid ""
"FTP: Unable to modify rights on the directory %{dir} on the remote server." "FTP Support : Unable to modify rights on the directory %{dir} on the remote "
"server."
msgstr "" msgstr ""
#: includes/addons/LSaddons.ftp.php:54 #: includes/addons/LSaddons.ftp.php:53
msgid "" msgid ""
"FTP: Unable to rename folder from %{old} to %{new} on the remote server." "FTP Support : Unable to rename folder from %{old} to %{new} on the remote "
"server."
msgstr "" msgstr ""
#: includes/addons/LSaddons.mailquota.php:27 #: includes/addons/LSaddons.mailquota.php:27
@ -537,10 +527,6 @@ msgstr ""
msgid "MAILDIR : Error retrieving remote path of the maildir." msgid "MAILDIR : Error retrieving remote path of the maildir."
msgstr "" msgstr ""
#: includes/addons/LSaddons.watermark.php:78
msgid "PRE-PRODUCTION"
msgstr ""
#: includes/addons/LSaddons.showTechInfo.php:63 #: includes/addons/LSaddons.showTechInfo.php:63
#: templates/default/showTechInfo.tpl:16 #: templates/default/showTechInfo.tpl:16
msgid "Structural object class" msgid "Structural object class"
@ -1258,49 +1244,49 @@ 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 ""
#: includes/class/class.LSattribute.php:823 #: includes/class/class.LSattribute.php:829
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 ""
#: includes/class/class.LSattribute.php:826 #: includes/class/class.LSattribute.php:832
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 ""
#: includes/class/class.LSattribute.php:829 #: includes/class/class.LSattribute.php:835
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 ""
#: includes/class/class.LSattribute.php:832 #: includes/class/class.LSattribute.php:838
msgid "" msgid ""
"LSattribute : Configuration data to verify the attribute %{attr} are " "LSattribute : Configuration data to verify the attribute %{attr} are "
"incorrect." "incorrect."
msgstr "" msgstr ""
#: includes/class/class.LSattribute.php:835 #: includes/class/class.LSattribute.php:841
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 ""
#: includes/class/class.LSattribute.php:838 #: includes/class/class.LSattribute.php:844
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 ""
#: includes/class/class.LSattribute.php:841 #: includes/class/class.LSattribute.php:847
msgid "LSattribute : Generation of the attribute %{attr} failed." msgid "LSattribute : Generation of the attribute %{attr} failed."
msgstr "" msgstr ""
#: includes/class/class.LSattribute.php:844 #: includes/class/class.LSattribute.php:850
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 ""
#: includes/class/class.LSattribute.php:847 #: includes/class/class.LSattribute.php:853
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 ""
@ -1502,195 +1488,195 @@ msgstr ""
msgid "The attribute %{attr} is not valid." msgid "The attribute %{attr} is not valid."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3165 #: includes/class/class.LSldapObject.php:3160
msgid "LSldapObject : Object type unknown." msgid "LSldapObject : Object type unknown."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3168 #: includes/class/class.LSldapObject.php:3163
msgid "LSldapObject : Update form is not defined for the object %{obj}." msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3171 #: includes/class/class.LSldapObject.php:3166
msgid "LSldapObject : No form exists for the object %{obj}." msgid "LSldapObject : No form exists for the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3174 #: includes/class/class.LSldapObject.php:3169
msgid "" msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the " "LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow." "object %{obj} is unknow."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3177 #: includes/class/class.LSldapObject.php:3172
msgid "" msgid ""
"LSldapObject : Configuration data are missing to validate the attribute " "LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}." "%{attr} of the object %{obj}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3181 #: includes/class/class.LSldapObject.php:3176
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed on the object event " "LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist." "%{event} doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3184 #: includes/class/class.LSldapObject.php:3179
msgid "" msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed." "LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3188 #: includes/class/class.LSldapObject.php:3183
msgid "" msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the " "LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist." "object event %{event}, doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3191 #: includes/class/class.LSldapObject.php:3186
msgid "" msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object " "LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist." "event %{event}, doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3194 #: includes/class/class.LSldapObject.php:3189
msgid "" msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to " "LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}." "be executed on object event %{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3198 #: includes/class/class.LSldapObject.php:3193
msgid "" msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing " "LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object." "to generate the DN of the new object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3201 #: includes/class/class.LSldapObject.php:3196
msgid "" msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't " "LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN." "generate DN."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3204 #: includes/class/class.LSldapObject.php:3199
msgid "LSldapObject : Without DN, the object could not be changed." msgid "LSldapObject : Without DN, the object could not be changed."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3207 #: includes/class/class.LSldapObject.php:3202
msgid "" msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute " "LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist." "%{attr} doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3210 #: includes/class/class.LSldapObject.php:3205
msgid "LSldapObject : Error during deleting the object %{objectname}." msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3214 #: includes/class/class.LSldapObject.php:3209
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet." "LSldapObject : Error during actions to be executed before renaming the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3217 #: includes/class/class.LSldapObject.php:3212
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet." "LSldapObject : Error during actions to be executed after renaming the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3221 #: includes/class/class.LSldapObject.php:3216
msgid "" msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet." "LSldapObject : Error during actions to be executed before deleting the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3224 #: includes/class/class.LSldapObject.php:3219
msgid "" msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet." "LSldapObject : Error during actions to be executed after deleting the objet."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3228 #: includes/class/class.LSldapObject.php:3223
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed before creating the " "LSldapObject : Error during the actions to be executed before creating the "
"object." "object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3231 #: includes/class/class.LSldapObject.php:3226
msgid "" msgid ""
"LSldapObject : Error during the actions to be executed after creating the " "LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway." "object. It was created anyway."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3235 #: includes/class/class.LSldapObject.php:3230
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed before creating the " "LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist." "object doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3238 #: includes/class/class.LSldapObject.php:3233
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object." "deleting the object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3241 #: includes/class/class.LSldapObject.php:3236
msgid "" msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object " "LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3244 #: includes/class/class.LSldapObject.php:3239
msgid "" msgid ""
"LSldapObject : Error executing the function %{func} to be execute after " "LSldapObject : Error executing the function %{func} to be execute after "
"creating the object." "creating the object."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3248 #: includes/class/class.LSldapObject.php:3243
msgid "" msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, " "LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3251 #: includes/class/class.LSldapObject.php:3246
msgid "" msgid ""
"LSldapObject : Error during the execution of %{func} function on object " "LSldapObject : Error during the execution of %{func} function on object "
"event %{event}." "event %{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3255 #: includes/class/class.LSldapObject.php:3250
msgid "" msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, " "LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist." "doesn't exist."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3258 #: includes/class/class.LSldapObject.php:3253
msgid "" msgid ""
"LSldapObject : Error during execution of %{meth} method on object event " "LSldapObject : Error during execution of %{meth} method on object event "
"%{event}." "%{event}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3261 #: includes/class/class.LSldapObject.php:3256
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}." msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3265 #: includes/class/class.LSldapObject.php:3260
msgid "" msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} " "LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}." "on %{objectname}."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3269 #: includes/class/class.LSldapObject.php:3264
msgid "LSldapObject : Fail to retrieve container DN." msgid "LSldapObject : Fail to retrieve container DN."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3272 #: includes/class/class.LSldapObject.php:3267
msgid "" msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable." "LSldapObject : The function %{func} to generate container DN is not callable."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3275 #: includes/class/class.LSldapObject.php:3270
msgid "LSldapObject : Error during generating container DN : %{error}" msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3278 #: includes/class/class.LSldapObject.php:3273
msgid "" msgid ""
"LSldapObject : An LDAP object with the same DN as generated for this new one " "LSldapObject : An LDAP object with the same DN as generated for this new one "
"already exists. Please verify your configuration." "already exists. Please verify your configuration."
msgstr "" msgstr ""
#: includes/class/class.LSldapObject.php:3283 #: includes/class/class.LSldapObject.php:3278
msgid "" msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle " "LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})." "standard relations (Method : %{meth})."

View file

@ -80,6 +80,19 @@ do
fi fi
done done
if [ $BUILD_DOC -eq 1 ]
then
msg "-> Clean the doc : " -en
cd $ROOT_DIR/doc >> $LOG_FILE && make clean >> $LOG_FILE && cd - >> $LOG_FILE
if [ $? -gt 0 ]
then
msg "Error"
exit 1
else
msg "Ok"
fi
fi
if [ "$THEME" != "" ] if [ "$THEME" != "" ]
then then
msg "\t\t-> Remove theme : " -en msg "\t\t-> Remove theme : " -en
@ -286,3 +299,40 @@ then
else else
msg "Changed detected :\n\n/!\\ You have to force-reload your webserver to handle it ! /!\\\n\n" msg "Changed detected :\n\n/!\\ You have to force-reload your webserver to handle it ! /!\\\n\n"
fi fi
if [ $BUILD_DOC -eq 1 ]
then
[ -n "$LAST_UPDATE_FILE" ] && [ "`$ROOT_DIR/checkDocExportsNecessity.sh`" == "" ] && echo "Export documentation is not necessary. Pass." && exit
msg "-> Do you want build the documentation (y/N) ? " -en
read a
if [ "$a" == "y" -o "$a" == "Y" ]
then
msg "-> Build the doc : " -en
cd $ROOT_DIR/doc
make clean >> $LOG_FILE 2>&1
make >> $LOG_FILE 2>&1 &
export P=$!
trap exitwhell INT
function exitwhell() {
[ -n "$P" ] && kill -9 $P 2> /dev/null
echo " -- INT -- "
exit 1
}
while [ -d /proc/$P ]
do
echo -n .
sleep 1
done
echo done.
if [ -n "$EXPORT_DOC_DIR" ]
then
$ROOT_DIR/buildDocExports.sh
fi
fi
fi