Compare commits

...

2 commits

Author SHA1 Message Date
Benjamin Renard
961740c855
Fix some french translated messages 2023-08-18 15:51:28 +02:00
Benjamin Renard
0c171789d3
LSauth add filter_function parameter 2023-08-18 15:51:27 +02:00
6 changed files with 177 additions and 77 deletions

View file

@ -25,6 +25,7 @@ serveur LDAP.</para>
'[object type 1]',
'[object type 2]' => array(
'filter' => '[LDAP filter]',
'filter_function' => [callable],
'password_attribute' => '[attribute name]',
'web_access' => [booléen],
'api_access' => [booléen],
@ -170,6 +171,21 @@ serveur LDAP.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>filter_function</term>
<listitem>
<simpara><emphasis>Callable</emphasis> (au sens PHP) utilisé pour filtrer les utilisateurs
trouvés dans l'annuaire à partir des autres paramètres : cette fonction, si elle est définie,
sera appelée pour chaque utilisateur trouvé, avec pour unique paramètre, une référence à l'objet
LDAP correspondant (<literal>LSldapObject</literal>). Cette méthode devra alors retourner
<literal>true</literal> ou <literal>false</literal> pour respectivement autoriser ou interdire
l'accès à l'application à l'utilisateur.</simpara>
<note><simpara>Si un utilisateur est exclus par cette méthode et qu'aucun autre utilisateur
correspondant n'a été trouvé dans l'annuaire, une page d'erreur sera affichée et indiquera que
l'accès à l'application est refusée.</simpara></note>
</listitem>
</varlistentry>
<varlistentry>
<term>password_attribute</term>
<listitem>

View file

@ -132,6 +132,7 @@ class LSauth extends LSlog_staticLoggerClass {
$objTypes[$objType] = array(
'filter' => self :: getConfig("LSobjects.$objType.filter", null, 'string'),
'filter_function' => self :: getConfig("LSobjects.$objType.filter_function", null),
'password_attribute' => self :: getConfig("LSobjects.$objType.password_attribute", 'userPassword', 'string'),
);
}
@ -169,11 +170,19 @@ class LSauth extends LSlog_staticLoggerClass {
*/
public static function username2LSobjects($username) {
$user_objects = array();
$excluded_objects = false;
foreach (self :: getAuthObjectTypes() as $objType => $objParams) {
if (!LSsession :: loadLSobject($objType)) {
LSerror :: addErrorCode('LSauth_03', $objType);
return false;
}
if (isset($objParams['filter_function']) && !is_callable($objParams['filter_function'])) {
LSerror :: addErrorCode(
'LSauth_09',
['objtype' => $objType, 'function' => format_callable($objParams['filter_function'])]
);
return false;
}
$authobject = new $objType();
$result = $authobject -> searchObject(
$username,
@ -181,12 +190,28 @@ class LSauth extends LSlog_staticLoggerClass {
$objParams['filter'],
array('withoutCache' => true, 'onlyAccessible' => false)
);
for($i=0; $i<count($result); $i++)
for($i=0; $i<count($result); $i++) {
if (
isset($objParams['filter_function'])
&& !call_user_func_array($objParams['filter_function'], [$result[$i]])
) {
self :: log_debug(
sprintf(
'username2LSobjects(%s): user %s filtered out by filter function %s',
$username, $result[$i]->getDn(), format_callable($objParams['filter_function'])
)
);
$excluded_objects = true;
continue;
}
$user_objects[$result[$i] -> getDn()] = $result[$i];
}
}
$nbresult = count($user_objects);
if ($nbresult == 0) {
if ($excluded_objects)
self :: accessDenied();
// incorrect login
self :: log_debug('Invalid username');
LSerror :: addErrorCode('LSauth_01');
@ -306,6 +331,29 @@ class LSauth extends LSlog_staticLoggerClass {
return self :: $params['displayLoginForm'];
}
/**
* Handle access denied error
*
* @return never
**/
public static function accessDenied() {
http_response_code(401);
if (LSsession :: get('api_mode') || LSsession :: getAjaxDisplay()) {
header('Content-Type: application/json');
$errors = array(_("You are not authorized to access this application."));
echo json_encode(
['errors' => [_("You are not authorized to access this application.")], 'success' => false],
(isset($_REQUEST['pretty'])?JSON_PRETTY_PRINT:0)
);
}
else if (class_exists('LStemplate')) {
LStemplate :: assign('pagetitle', _("Access denied."));
LStemplate :: assign('error', _("You are not authorized to access this application."));
LStemplate :: display("error.tpl");
}
exit();
}
}
/*
@ -335,3 +383,6 @@ ___("LSauth : Failed to get authentication informations from provider.")
LSerror :: defineError('LSauth_08',
___("LSauth : Method %{method} configured doesn't support API mode.")
);
LSerror :: defineError('LSauth_09',
___("LSauth : The filter function speficied for %{objtype} is not callable (%{function}).")
);

View file

@ -1963,7 +1963,7 @@ LSerror :: defineError('LSsearch_01',
___("LSsearch : Invalid filter : %{filter}.")
);
LSerror :: defineError('LSsearch_02',
___("LSsearch : Invalid basedn : %{basedn}.")
___("LSsearch : Invalid basedn (%{basedn}).")
);
LSerror :: defineError('LSsearch_03',
___("LSsearch : Invalid value for %{param} parameter.")
@ -1972,7 +1972,7 @@ LSerror :: defineError('LSsearch_04',
___("LSsearch : Invalid size limit. Must be an integer greater or equal to 0.")
);
LSerror :: defineError('LSsearch_05',
___("LSsearch : Invalid parameter %{attr}. Must be an boolean.")
___("LSsearch : Invalid parameter %{param}. Must be an boolean.")
);
LSerror :: defineError('LSsearch_06',
___("LSsearch : Invalid parameter attributes. Must be an string or an array of strings.")

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2023-07-19 12:07+0200\n"
"PO-Revision-Date: 2023-08-18 15:45+0200\n"
"Last-Translator: Benjamin Renard <brenard@easter-eggs.com>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n"
@ -174,7 +174,9 @@ msgstr ""
#: includes/addons/LSaddons.ssh.php:59
msgid ""
"SSH : Unable to rename folder from %{old} to %{new} on the remote server."
msgstr "SSH : Impossible de renommer le dossier %{dir} sur le serveur distant."
msgstr ""
"SSH : Impossible de renommer le dossier de %{old} vers %{new} sur le serveur "
"distant."
#: includes/addons/LSaddons.exportSearchResultAsCSV.php:27
msgid "ExportSearchResultAsCSV Support : function fputcsv is not available."
@ -278,7 +280,7 @@ msgid "Download"
msgstr "Télécharger"
#: includes/addons/LSaddons.showSupportInfo.php:78
#: includes/addons/LSaddons.accesslog.php:249
#: includes/addons/LSaddons.accesslog.php:248
#: includes/addons/LSaddons.showTechInfo.php:117
msgid "Go back"
msgstr "Retour"
@ -426,15 +428,15 @@ msgstr "Remplacer"
msgid "Increment"
msgstr "Incrémenter"
#: includes/addons/LSaddons.accesslog.php:239
#: includes/addons/LSaddons.accesslog.php:238
msgid "Hide LdapSaisie modifications"
msgstr "Cacher les modifications d'LdapSaisie"
#: includes/addons/LSaddons.accesslog.php:239
#: includes/addons/LSaddons.accesslog.php:238
msgid "Show LdapSaisie modifications"
msgstr "Voir les modifications d'LdapSaisie"
#: includes/addons/LSaddons.accesslog.php:244
#: includes/addons/LSaddons.accesslog.php:243
#: includes/class/class.LSsession.php:1875 includes/routes.php:157
#: includes/routes.php:474 templates/default/select.tpl:29
msgid "Refresh"
@ -803,57 +805,57 @@ msgid "Error updating object on LDAP server."
msgstr ""
"Une erreur est survenue en mettant à jour cet objet dans l'annuaire LDAP."
#: includes/class/class.LSio.php:883
#: includes/class/class.LSio.php:887
msgid "LSio: Post data not found or not completed."
msgstr "LSio : les données transmises sont introuvables ou incomplètes."
#: includes/class/class.LSio.php:886
#: includes/class/class.LSio.php:890
msgid "LSio: object type invalid."
msgstr "LSio : type d'objet invalide."
#: includes/class/class.LSio.php:889
#: includes/class/class.LSio.php:893
msgid "LSio: input/output format %{format} invalid."
msgstr "LSio : Le format d'entrée/sortie %{format} est invalide."
#: includes/class/class.LSio.php:892
#: includes/class/class.LSio.php:896
msgid "LSio: Fail to initialize input/output driver."
msgstr "LSio : Impossible d'initialiser le pilote d'entrée/sortie."
#: includes/class/class.LSio.php:895
#: includes/class/class.LSio.php:899
msgid "LSio: Fail to load objects's data from input file."
msgstr ""
"LSio: Impossible de charger les données des objets depuis le fichier "
"d'import."
#: includes/class/class.LSio.php:898
#: includes/class/class.LSio.php:902
msgid "LSio: Fail to load objects's data to export from LDAP directory."
msgstr ""
"LSio: Impossible de charger les données des objets à exporter depuis "
"l'annuaire LDAP."
#: includes/class/class.LSio.php:901
#: includes/class/class.LSio.php:905
msgid "LSio: Fail to export objects's data."
msgstr "LSio: Impossible d'exporter les données des objets."
#: includes/class/class.LSio.php:904
#: includes/class/class.LSio.php:908
msgid "LSio: An error occured running before import hooks. Stop the import."
msgstr ""
"LSio : Une erreur est survenue durant l'exécution des déclencheurs d'avant "
"import. Arrêt de l'import."
#: includes/class/class.LSio.php:907
#: includes/class/class.LSio.php:911
msgid "LSio: An error occured running after import hooks."
msgstr ""
"LSio : Une erreur est survenue durant l'exécution des déclencheurs d'après "
"import."
#: includes/class/class.LSio.php:910
#: includes/class/class.LSio.php:914
msgid "LSio: Error occured loading objects's data from input file."
msgstr ""
"LSio: Une erreur est survenue en chargeant les données des objets depuis le "
"fichier d'import."
#: includes/class/class.LSio.php:913
#: includes/class/class.LSio.php:917
msgid ""
"LSio: This input/output format only support update. You must check the "
"'Update objects if exists' box."
@ -1048,7 +1050,7 @@ msgstr "Aucun résultat"
#: includes/class/class.LSformElement_supannCompositeAttribute.php:276
#: includes/class/class.LSformElement_supannCompositeAttribute.php:293
msgid "%{val} (unrecognized)"
msgstr "%{value} (valeur non-reconnue)"
msgstr "%{val} (valeur non-reconnue)"
#: includes/class/class.LSformElement_supannCompositeAttribute.php:351
msgid "Fail to decode composite value #%{idx}."
@ -1671,7 +1673,7 @@ msgid ""
"(Code : %{code})"
msgstr ""
"LSsession : Erreur durant la création de la liste des niveaux. Contacter les "
"administrateurs. (Code : %{type})"
"administrateurs. (Code : %{code})"
#: includes/class/class.LSsession.php:3184
msgid "LSsession : The password recovery is disabled for this LDAP server."
@ -2008,7 +2010,7 @@ msgid ""
"standard relations (Method : %{meth})."
msgstr ""
"LSrelation : Des paramètres sont manquants dans l'appel des méthodes de "
"manipulation des relations standards."
"manipulation des relations standards (méthode : %{meth})."
#: includes/class/class.LSformRule_password.php:58
msgid "Password is too long (maximum: %{maxLength})."
@ -2146,7 +2148,7 @@ msgstr "URI de serveur LDAP invalide (%{uri})"
#: includes/class/class.LSformRule_ldapSearchURI.php:75
msgid "Invalid LDAP host (%{host})"
msgstr "Hôte LDAP invalide (%{type})."
msgstr "Hôte LDAP invalide (%{host})."
#: includes/class/class.LSformRule_ldapSearchURI.php:79
msgid "Invalid LDAP port (%{port})"
@ -2245,7 +2247,7 @@ msgid ""
"LSrelation : Invalid parameter '%{parameter}' of the relation %{relation}: "
"objects %{LSobject} have no function '%{function}'."
msgstr ""
"LSrelation : Le paramètre '%{parametre}' de la relation %{relation} est "
"LSrelation : Le paramètre '%{parameter}' de la relation %{relation} est "
"invalide: les objets %{LSobject} n'ont pas de fonction '%{function}'."
#: includes/class/class.LSrelation.php:1041
@ -2261,8 +2263,7 @@ msgstr "LSsession : Erreur durant la mise à jour de la relation %{relation}"
#: includes/class/class.LSrelation.php:1047
msgid "LSrelation : Object type %{LSobject} unknown (Relation : %{relation})."
msgstr ""
"LSsession : La fonction de mise à jour de la relation %{relation} est "
"inconnue."
"LSrelation : Type d'objet %{LSobject} inconnu (relation : %{relation})."
#: includes/class/class.LSrelation.php:1050
msgid ""
@ -2418,11 +2419,11 @@ msgstr "Fichier trop gros."
msgid "File is too light."
msgstr "Fichier trop petit."
#: includes/class/class.LSauthMethod_CAS.php:137
#: includes/class/class.LSauthMethod_CAS.php:153
msgid "LSauthMethod_CAS : Failed to load phpCAS."
msgstr "LSauthMethod_CAS : Impossible de charger phpCAS."
#: includes/class/class.LSauthMethod_CAS.php:140
#: includes/class/class.LSauthMethod_CAS.php:156
msgid ""
"LSauthMethod_CAS : Please check your configuration : you must configure CAS "
"server SSL certificate validation using one of the following constant : "
@ -2708,43 +2709,60 @@ msgstr ""
"LSattr_ldap_password : La fonction d'encodage %{function} n'est pas "
"disponible. Le mot de passe sera stocké en clair."
#: includes/class/class.LSauth.php:315
#: includes/class/class.LSauth.php:343 includes/class/class.LSauth.php:345
#: includes/class/class.LSauth.php:351
msgid "You are not authorized to access this application."
msgstr "Vous n'êtes pas autorisé à accéder à cette application."
#: includes/class/class.LSauth.php:350
msgid "Access denied."
msgstr "Accès interdit."
#: includes/class/class.LSauth.php:363
msgid "LSauth : Login or password incorrect."
msgstr "LSauth : Identifiant ou mot de passe incorrects."
#: includes/class/class.LSauth.php:318
#: includes/class/class.LSauth.php:366
msgid "LSauth : Impossible to identify you : Duplication of identities."
msgstr "LSauth : Impossible de vous identifier : Duplication d'identité."
#: includes/class/class.LSauth.php:321
#: includes/class/class.LSauth.php:369
msgid "LSauth : Could not load type of identifiable objects %{type}."
msgstr "LSauth : Impossible de charger le type d'objets identifiables %{type}."
#: includes/class/class.LSauth.php:324
#: includes/class/class.LSauth.php:372
msgid "LSauth : Can't load authentication method %{method}."
msgstr ""
"LSauth : Impossible de charger la méthode d'authentification %{method}."
#: includes/class/class.LSauth.php:327
#: includes/class/class.LSauth.php:375
msgid "LSauth : Failed to build the authentication provider %{method}."
msgstr ""
"LSauth : Impossible de construire le gestionnaire d'authentification "
"%{method}."
#: includes/class/class.LSauth.php:330
#: includes/class/class.LSauth.php:378
msgid "LSauth : Not correctly initialized."
msgstr "LSauth : Mauvaise initialisation."
#: includes/class/class.LSauth.php:333
#: includes/class/class.LSauth.php:381
msgid "LSauth : Failed to get authentication informations from provider."
msgstr ""
"LSauth : Impossible de récupérer les informations authentification auprès du "
"gestionnaire."
#: includes/class/class.LSauth.php:336
#: includes/class/class.LSauth.php:384
msgid "LSauth : Method %{method} configured doesn't support API mode."
msgstr "LSauth : La méthode %{method} configurée ne supporte pas le mode API."
#: includes/class/class.LSauth.php:387
msgid ""
"LSauth : The filter function speficied for %{objtype} is not callable "
"(%{function})."
msgstr ""
"LSauth : La fonction de filtrage pour les %{objtype} n'est pas exécutable "
"(%{function})."
#: includes/class/class.LSformElement_supannEtuInscription.php:41
msgid "Organism"
msgstr "Etablissement"
@ -2804,8 +2822,8 @@ msgid "LSsearch : Invalid filter : %{filter}."
msgstr "LSsearch : Filtre invalide : %{filter}."
#: includes/class/class.LSsearch.php:1966
msgid "LSsearch : Invalid basedn : %{basedn}."
msgstr "LSsearch : Base DN invalide."
msgid "LSsearch : Invalid basedn (%{basedn})."
msgstr "LSsearch : Base DN invalide (%{basedn})."
#: includes/class/class.LSsearch.php:1969
msgid "LSsearch : Invalid value for %{param} parameter."
@ -2819,7 +2837,7 @@ msgstr ""
"supérieur ou égal à 0."
#: includes/class/class.LSsearch.php:1975
msgid "LSsearch : Invalid parameter %{attr}. Must be an boolean."
msgid "LSsearch : Invalid parameter %{param}. Must be an boolean."
msgstr "LSsearch : Paramètre %{param} invalide. Il doit être un booléen."
#: includes/class/class.LSsearch.php:1978
@ -3482,15 +3500,15 @@ msgstr ""
"Compte verrouillé pour une raison technique (détection d'homonyme, suspicion "
"de compte piraté…)"
#: conf/LSaddons/config.LSaddons.supann.php:166
#: conf/LSaddons/config.LSaddons.supann.php:172
msgid "Female"
msgstr "Femme"
#: conf/LSaddons/config.LSaddons.supann.php:167
#: conf/LSaddons/config.LSaddons.supann.php:173
msgid "Male"
msgstr "Homme"
#: conf/LSaddons/config.LSaddons.supann.php:168
#: conf/LSaddons/config.LSaddons.supann.php:174
msgid "Other"
msgstr "Autre"
@ -3612,7 +3630,7 @@ msgstr "Messages"
msgid "Nb / page :"
msgstr "Nb / page :"
#: templates/default/showObjectAccessLogs.tpl:71
#: templates/default/showObjectAccessLogs.tpl:80
msgid "No access log found for this object."
msgstr "Aucun log d'accès trouvé pour cet objet."
@ -3751,7 +3769,7 @@ msgstr "Valider"
msgid "Value"
msgstr "Valeur"
#: templates/default/showObjectAccessLogs.tpl:76
#: templates/default/showObjectAccessLogs.tpl:85
msgid "event(s) found for this object."
msgstr "événement(s) trouvé(s) pour cet objet."

View file

@ -217,7 +217,7 @@ msgid "Download"
msgstr ""
#: includes/addons/LSaddons.showSupportInfo.php:78
#: includes/addons/LSaddons.accesslog.php:249
#: includes/addons/LSaddons.accesslog.php:248
#: includes/addons/LSaddons.showTechInfo.php:117
msgid "Go back"
msgstr ""
@ -350,15 +350,15 @@ msgstr ""
msgid "Increment"
msgstr ""
#: includes/addons/LSaddons.accesslog.php:239
#: includes/addons/LSaddons.accesslog.php:238
msgid "Hide LdapSaisie modifications"
msgstr ""
#: includes/addons/LSaddons.accesslog.php:239
#: includes/addons/LSaddons.accesslog.php:238
msgid "Show LdapSaisie modifications"
msgstr ""
#: includes/addons/LSaddons.accesslog.php:244
#: includes/addons/LSaddons.accesslog.php:243
#: includes/class/class.LSsession.php:1875 includes/routes.php:157
#: includes/routes.php:474 templates/default/select.tpl:29
msgid "Refresh"
@ -683,47 +683,47 @@ msgstr ""
msgid "Error updating object on LDAP server."
msgstr ""
#: includes/class/class.LSio.php:883
#: includes/class/class.LSio.php:887
msgid "LSio: Post data not found or not completed."
msgstr ""
#: includes/class/class.LSio.php:886
#: includes/class/class.LSio.php:890
msgid "LSio: object type invalid."
msgstr ""
#: includes/class/class.LSio.php:889
#: includes/class/class.LSio.php:893
msgid "LSio: input/output format %{format} invalid."
msgstr ""
#: includes/class/class.LSio.php:892
#: includes/class/class.LSio.php:896
msgid "LSio: Fail to initialize input/output driver."
msgstr ""
#: includes/class/class.LSio.php:895
#: includes/class/class.LSio.php:899
msgid "LSio: Fail to load objects's data from input file."
msgstr ""
#: includes/class/class.LSio.php:898
#: includes/class/class.LSio.php:902
msgid "LSio: Fail to load objects's data to export from LDAP directory."
msgstr ""
#: includes/class/class.LSio.php:901
#: includes/class/class.LSio.php:905
msgid "LSio: Fail to export objects's data."
msgstr ""
#: includes/class/class.LSio.php:904
#: includes/class/class.LSio.php:908
msgid "LSio: An error occured running before import hooks. Stop the import."
msgstr ""
#: includes/class/class.LSio.php:907
#: includes/class/class.LSio.php:911
msgid "LSio: An error occured running after import hooks."
msgstr ""
#: includes/class/class.LSio.php:910
#: includes/class/class.LSio.php:914
msgid "LSio: Error occured loading objects's data from input file."
msgstr ""
#: includes/class/class.LSio.php:913
#: includes/class/class.LSio.php:917
msgid ""
"LSio: This input/output format only support update. You must check the "
"'Update objects if exists' box."
@ -2041,11 +2041,11 @@ msgstr ""
msgid "File is too light."
msgstr ""
#: includes/class/class.LSauthMethod_CAS.php:137
#: includes/class/class.LSauthMethod_CAS.php:153
msgid "LSauthMethod_CAS : Failed to load phpCAS."
msgstr ""
#: includes/class/class.LSauthMethod_CAS.php:140
#: includes/class/class.LSauthMethod_CAS.php:156
msgid ""
"LSauthMethod_CAS : Please check your configuration : you must configure CAS "
"server SSL certificate validation using one of the following constant : "
@ -2299,38 +2299,53 @@ msgid ""
"password will be stored in clear text."
msgstr ""
#: includes/class/class.LSauth.php:315
#: includes/class/class.LSauth.php:343 includes/class/class.LSauth.php:345
#: includes/class/class.LSauth.php:351
msgid "You are not authorized to access this application."
msgstr ""
#: includes/class/class.LSauth.php:350
msgid "Access denied."
msgstr ""
#: includes/class/class.LSauth.php:363
msgid "LSauth : Login or password incorrect."
msgstr ""
#: includes/class/class.LSauth.php:318
#: includes/class/class.LSauth.php:366
msgid "LSauth : Impossible to identify you : Duplication of identities."
msgstr ""
#: includes/class/class.LSauth.php:321
#: includes/class/class.LSauth.php:369
msgid "LSauth : Could not load type of identifiable objects %{type}."
msgstr ""
#: includes/class/class.LSauth.php:324
#: includes/class/class.LSauth.php:372
msgid "LSauth : Can't load authentication method %{method}."
msgstr ""
#: includes/class/class.LSauth.php:327
#: includes/class/class.LSauth.php:375
msgid "LSauth : Failed to build the authentication provider %{method}."
msgstr ""
#: includes/class/class.LSauth.php:330
#: includes/class/class.LSauth.php:378
msgid "LSauth : Not correctly initialized."
msgstr ""
#: includes/class/class.LSauth.php:333
#: includes/class/class.LSauth.php:381
msgid "LSauth : Failed to get authentication informations from provider."
msgstr ""
#: includes/class/class.LSauth.php:336
#: includes/class/class.LSauth.php:384
msgid "LSauth : Method %{method} configured doesn't support API mode."
msgstr ""
#: includes/class/class.LSauth.php:387
msgid ""
"LSauth : The filter function speficied for %{objtype} is not callable "
"(%{function})."
msgstr ""
#: includes/class/class.LSformElement_supannEtuInscription.php:41
msgid "Organism"
msgstr ""
@ -2390,7 +2405,7 @@ msgid "LSsearch : Invalid filter : %{filter}."
msgstr ""
#: includes/class/class.LSsearch.php:1966
msgid "LSsearch : Invalid basedn : %{basedn}."
msgid "LSsearch : Invalid basedn (%{basedn})."
msgstr ""
#: includes/class/class.LSsearch.php:1969
@ -2403,7 +2418,7 @@ msgid ""
msgstr ""
#: includes/class/class.LSsearch.php:1975
msgid "LSsearch : Invalid parameter %{attr}. Must be an boolean."
msgid "LSsearch : Invalid parameter %{param}. Must be an boolean."
msgstr ""
#: includes/class/class.LSsearch.php:1978
@ -2979,15 +2994,15 @@ msgid ""
"a hacked account, etc.)"
msgstr ""
#: conf/LSaddons/config.LSaddons.supann.php:166
#: conf/LSaddons/config.LSaddons.supann.php:172
msgid "Female"
msgstr ""
#: conf/LSaddons/config.LSaddons.supann.php:167
#: conf/LSaddons/config.LSaddons.supann.php:173
msgid "Male"
msgstr ""
#: conf/LSaddons/config.LSaddons.supann.php:168
#: conf/LSaddons/config.LSaddons.supann.php:174
msgid "Other"
msgstr ""
@ -3109,7 +3124,7 @@ msgstr ""
msgid "Nb / page :"
msgstr ""
#: templates/default/showObjectAccessLogs.tpl:71
#: templates/default/showObjectAccessLogs.tpl:80
msgid "No access log found for this object."
msgstr ""
@ -3246,7 +3261,7 @@ msgstr ""
msgid "Value"
msgstr ""
#: templates/default/showObjectAccessLogs.tpl:76
#: templates/default/showObjectAccessLogs.tpl:85
msgid "event(s) found for this object."
msgstr ""