LSldapObject : Add generate_container_dn parameter

This commit is contained in:
Benjamin Renard 2018-10-01 12:57:26 +02:00
parent 179d148335
commit 92425e7554
5 changed files with 163 additions and 91 deletions

View file

@ -31,6 +31,7 @@
'LSaddons' => [LSaddon(s)],
'container_dn' => 'ou=people',
'generate_container_dn' => '[callable]',
'container_auto_create' => array(
// Information des configurations pour la création du conteneur du type d'LSobjet
// lors de la création nouveau subDn
@ -132,6 +133,16 @@
</listitem>
</varlistentry>
<varlistentry>
<term>generate_container_dn</term>
<listitem>
<simpara><emphasis>Callable</emphasis> (au sens PHP), utilisé pour générer la
valeur du paramètre <literal>container_dn</literal> dynamiquement. Ce <emphasis>
callable</emphasis> prend en paramètre l'objet &LSobject; à créer et retourne
la valeur du paramètre <literal>container_dn</literal>.</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>container_auto_create</term>
<listitem>

View file

@ -942,12 +942,13 @@ class LSldapObject {
return $this -> dn;
}
else {
$container_dn=$this -> getContainerDn();
if ($container_dn) {
$rdn_attr=$this -> config['rdn'];
$topDn = LSsession :: getTopDn();
if( (isset($this -> config['rdn'])) && (isset($this -> attrs[$rdn_attr])) && (isset($this -> config['container_dn'])) && ($topDn) ) {
if( (isset($this -> config['rdn'])) && (isset($this -> attrs[$rdn_attr])) ) {
$rdn_val=$this -> attrs[$rdn_attr] -> getUpdateData();
if (!empty($rdn_val)) {
return $rdn_attr.'='.$rdn_val[0].','.$this -> config['container_dn'].','.$topDn;
return $rdn_attr.'='.$rdn_val[0].','.$container_dn;
}
else {
LSerror :: addErrorCode('LSldapObject_12',$this -> config['rdn']);
@ -959,6 +960,43 @@ class LSldapObject {
return;
}
}
return;
}
}
/**
* Retourne le container DN de l'objet
*
* Cette methode retourne le container DN de l'objet.
*
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @retval string Le container DN de l'objet
*/
function getContainerDn() {
$topDn = LSsession :: getTopDn();
if (isset($this -> config['generate_container_dn'])) {
if (is_callable($this -> config['generate_container_dn'])) {
try {
$container_dn=$this -> config['generate_container_dn']($this);
return $container_dn.','.$topDn;
}
catch (Exception $e) {
LSerror :: addErrorCode('LSldapObject_34',$e);
}
}
else {
LSerror :: addErrorCode('LSldapObject_33',$this -> config['generate_container_dn']);
}
}
else if ((isset($this -> config['container_dn'])) && ($topDn)) {
return $this -> config['container_dn'].','.$topDn;
}
else {
LSerror :: addErrorCode('LSldapObject_11',$this -> getType());
}
LSerror :: addErrorCode('LSldapObject_32');
return;
}
/**
@ -1900,9 +1938,17 @@ LSerror :: defineError('LSldapObject_31',
_("LSldapObject : Error during execution of the custom action %{customAction} on %{objectname}.")
);
LSerror :: defineError('LSldapObject_32',
_("LSldapObject : Fail to retrieve container DN.")
);
LSerror :: defineError('LSldapObject_33',
_("LSldapObject : The function %{func} to generate container DN is not callable.")
);
LSerror :: defineError('LSldapObject_34',
_("LSldapObject : Error during generating container DN : %{error}")
);
// LSrelation
LSerror :: defineError('LSrelations_05',
_("LSrelation : Some parameters are missing in the call of methods to handle standard relations (Method : %{meth}).")
);
?>

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-01 12:17+0200\n"
"PO-Revision-Date: 2018-10-01 12:20+0200\n"
"POT-Creation-Date: 2018-10-01 12:55+0200\n"
"PO-Revision-Date: 2018-10-01 12:56+0200\n"
"Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n"
@ -874,21 +874,21 @@ msgstr "LSsession : DN d'objet en relation incorrect dans les paramètres."
msgid "The attribute %{attr} is not valid."
msgstr "L'attribut %{attr} n'est pas valide."
#: includes/class/class.LSldapObject.php:1800
#: includes/class/class.LSldapObject.php:1838
msgid "LSldapObject : Object type unknown."
msgstr "LSldapObject : Type d'objet inconnu."
#: includes/class/class.LSldapObject.php:1803
#: includes/class/class.LSldapObject.php:1841
msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr ""
"LSldapObject : Le formulaire de mise à jour n'est pas défini pour l'objet "
"%{obj}."
#: includes/class/class.LSldapObject.php:1806
#: includes/class/class.LSldapObject.php:1844
msgid "LSldapObject : No form exists for the object %{obj}."
msgstr "LSldapObject : Aucun formulaire n'existe pour l'objet %{obj}"
#: includes/class/class.LSldapObject.php:1809
#: includes/class/class.LSldapObject.php:1847
msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow."
@ -896,7 +896,7 @@ msgstr ""
"LSldapObject : La fonction %{func} pour valider l'attribut %{attr} de "
"l'objet %{obj} est inconnu."
#: includes/class/class.LSldapObject.php:1812
#: includes/class/class.LSldapObject.php:1850
msgid ""
"LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}."
@ -904,7 +904,7 @@ msgstr ""
"LSldapObject : Des données de configurations sont manquant pour pouvoir "
"valider l'attribut %{attr} de l'objet %{obj}."
#: includes/class/class.LSldapObject.php:1816
#: includes/class/class.LSldapObject.php:1854
msgid ""
"LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist."
@ -912,14 +912,14 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée lors de l'évènement "
"%{event} de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:1819
#: includes/class/class.LSldapObject.php:1857
msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr ""
"LSldapObject : L'exécution de la fonction %{func} lors de l'évènement "
"%{event} de l'objet a échouée."
#: includes/class/class.LSldapObject.php:1823
#: includes/class/class.LSldapObject.php:1861
msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist."
@ -927,7 +927,7 @@ msgstr ""
"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."
#: includes/class/class.LSldapObject.php:1826
#: includes/class/class.LSldapObject.php:1864
msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist."
@ -935,7 +935,7 @@ msgstr ""
"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."
#: includes/class/class.LSldapObject.php:1829
#: includes/class/class.LSldapObject.php:1867
msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}."
@ -943,7 +943,7 @@ msgstr ""
"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."
#: includes/class/class.LSldapObject.php:1833
#: includes/class/class.LSldapObject.php:1871
msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object."
@ -951,7 +951,7 @@ msgstr ""
"LSldapObject : Des informations de configuration du type d'objet %{obj} sont "
"manquantes pour la génération du DN du nouvel objet."
#: includes/class/class.LSldapObject.php:1836
#: includes/class/class.LSldapObject.php:1874
msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN."
@ -959,11 +959,11 @@ msgstr ""
"LSldapObjet : L'attribut %{attr} de l'objet n'est pas encore défini. "
"Impossible de générer le DN."
#: includes/class/class.LSldapObject.php:1839
#: includes/class/class.LSldapObject.php:1877
msgid "LSldapObject : Without DN, the object could not be changed."
msgstr "LSldapObject : Sans DN, l'objet ne peut pas être modifié."
#: includes/class/class.LSldapObject.php:1842
#: includes/class/class.LSldapObject.php:1880
msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist."
@ -971,39 +971,39 @@ msgstr ""
"LSldapObject : L'attritbut %{attr_depend} dépendant de l'attribut %{attr} "
"n'existe pas."
#: includes/class/class.LSldapObject.php:1845
#: includes/class/class.LSldapObject.php:1883
msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr "LSldapObject : Erreur durant la suppression de l'objet %{objectname}"
#: includes/class/class.LSldapObject.php:1849
#: includes/class/class.LSldapObject.php:1887
msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet."
msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de "
"renommer l'objet."
#: includes/class/class.LSldapObject.php:1852
#: includes/class/class.LSldapObject.php:1890
msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet."
msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"renommé l'objet."
#: includes/class/class.LSldapObject.php:1856
#: includes/class/class.LSldapObject.php:1894
msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet."
msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de "
"supprimer l'objet."
#: includes/class/class.LSldapObject.php:1859
#: includes/class/class.LSldapObject.php:1897
msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet."
msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée après avoir "
"supprimé l'objet."
#: includes/class/class.LSldapObject.php:1863
#: includes/class/class.LSldapObject.php:1901
msgid ""
"LSldapObject : Error during the actions to be executed before creating the "
"object."
@ -1011,7 +1011,7 @@ msgstr ""
"LSldapObject : Erreur durant les actions devant être exécutée avant de créer "
"l'objet."
#: includes/class/class.LSldapObject.php:1866
#: includes/class/class.LSldapObject.php:1904
msgid ""
"LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway."
@ -1019,7 +1019,7 @@ msgstr ""
"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éé."
#: includes/class/class.LSldapObject.php:1870
#: includes/class/class.LSldapObject.php:1908
msgid ""
"LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist."
@ -1027,7 +1027,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée avant la création de "
"l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:1873
#: includes/class/class.LSldapObject.php:1911
msgid ""
"LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object."
@ -1035,7 +1035,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la suppression de l'objet."
#: includes/class/class.LSldapObject.php:1876
#: includes/class/class.LSldapObject.php:1914
msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist."
@ -1043,7 +1043,7 @@ msgstr ""
"LSldapObject : La fonction %{func} devant être exécutée après la suppression "
"de l'objet n'existe pas."
#: includes/class/class.LSldapObject.php:1879
#: includes/class/class.LSldapObject.php:1917
msgid ""
"LSldapObject : Error executing the function %{func} to be execute after "
"creating the object."
@ -1051,7 +1051,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} devant être "
"exécutée après la création de l'objet."
#: includes/class/class.LSldapObject.php:1883
#: includes/class/class.LSldapObject.php:1921
msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist."
@ -1059,7 +1059,7 @@ msgstr ""
"LSldapObject : La fonction %{func}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:1886
#: includes/class/class.LSldapObject.php:1924
msgid ""
"LSldapObject : Error during the execution of %{func} function on object "
"event %{event}."
@ -1067,7 +1067,7 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la fonction %{func} lors de "
"l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:1890
#: includes/class/class.LSldapObject.php:1928
msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist."
@ -1075,7 +1075,7 @@ msgstr ""
"LSldapObject : La méthode %{meth}, devant être exécutée lors de l'évènement "
"%{event} de l'objet, n'existe pas."
#: includes/class/class.LSldapObject.php:1893
#: includes/class/class.LSldapObject.php:1931
msgid ""
"LSldapObject : Error during execution of %{meth} method on object event "
"%{event}."
@ -1083,13 +1083,13 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de la méthode %{meth} lors de "
"l'évènement %{event} de l'objet."
#: includes/class/class.LSldapObject.php:1896
#: includes/class/class.LSldapObject.php:1934
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr ""
"LSldapObject : Erreur durant la génération du filtre LDAP de l'objet "
"%{LSobject}."
#: includes/class/class.LSldapObject.php:1900
#: includes/class/class.LSldapObject.php:1938
msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}."
@ -1097,7 +1097,22 @@ msgstr ""
"LSldapObject : Erreur durant l'exécution de l'action personnalisée "
"%{customAction} sur l'objet %{objectname}."
#: includes/class/class.LSldapObject.php:1905
#: includes/class/class.LSldapObject.php:1942
msgid "LSldapObject : Fail to retrieve container DN."
msgstr "LSldapObject : Impossible de récupérer le DN parent."
#: includes/class/class.LSldapObject.php:1945
msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable."
msgstr ""
"LSldapObject : La fonction %{func} pour générer le DN parent n'est pas "
"exécutable."
#: includes/class/class.LSldapObject.php:1948
msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}."
#: includes/class/class.LSldapObject.php:1953
msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})."
@ -1836,19 +1851,6 @@ msgstr "a bien été supprimé"
#~ "LSsession : La fonction de mise à jour de la relation %{relation} est "
#~ "inconnue."
#~ msgid "LSldapObject : Fail to retrieve container DN."
#~ msgstr "LSldapObject : Impossible de récupérer le DN parent."
#~ msgid ""
#~ "LSldapObject : The function %{func} to generate container DN is not "
#~ "callable."
#~ msgstr ""
#~ "LSldapObject : La fonction %{func} pour générer le DN parent n'est pas "
#~ "exécutable."
#~ msgid "LSldapObject : Error during generating container DN : %{error}"
#~ msgstr "LSldapObject : Erreur durant la génération du DN parent : %{error}."
#, fuzzy
#~ msgid "Administration"
#~ msgstr "Confirmation"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-10-01 12:17+0200\n"
"POT-Creation-Date: 2018-10-01 12:54+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -754,176 +754,189 @@ msgstr ""
msgid "The attribute %{attr} is not valid."
msgstr ""
#: includes/class/class.LSldapObject.php:1800
#: includes/class/class.LSldapObject.php:1838
msgid "LSldapObject : Object type unknown."
msgstr ""
#: includes/class/class.LSldapObject.php:1803
#: includes/class/class.LSldapObject.php:1841
msgid "LSldapObject : Update form is not defined for the object %{obj}."
msgstr ""
#: includes/class/class.LSldapObject.php:1806
#: includes/class/class.LSldapObject.php:1844
msgid "LSldapObject : No form exists for the object %{obj}."
msgstr ""
#: includes/class/class.LSldapObject.php:1809
#: includes/class/class.LSldapObject.php:1847
msgid ""
"LSldapObject : The function %{func} to validate the attribute %{attr} the "
"object %{obj} is unknow."
msgstr ""
#: includes/class/class.LSldapObject.php:1812
#: includes/class/class.LSldapObject.php:1850
msgid ""
"LSldapObject : Configuration data are missing to validate the attribute "
"%{attr} of the object %{obj}."
msgstr ""
#: includes/class/class.LSldapObject.php:1816
#: includes/class/class.LSldapObject.php:1854
msgid ""
"LSldapObject : The function %{func} to be executed on the object event "
"%{event} doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1819
#: includes/class/class.LSldapObject.php:1857
msgid ""
"LSldapObject : The %{func} execution on the object event %{event} failed."
msgstr ""
#: includes/class/class.LSldapObject.php:1823
#: includes/class/class.LSldapObject.php:1861
msgid ""
"LSldapObject : Class %{class}, which method %{meth} to be executed on the "
"object event %{event}, doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1826
#: includes/class/class.LSldapObject.php:1864
msgid ""
"LSldapObject : Method %{meth} within %{class} class to be executed on object "
"event %{event}, doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1829
#: includes/class/class.LSldapObject.php:1867
msgid ""
"LSldapObject : Error during execute %{meth} method within %{class} class, to "
"be executed on object event %{event}."
msgstr ""
#: includes/class/class.LSldapObject.php:1833
#: includes/class/class.LSldapObject.php:1871
msgid ""
"LSldapObject : Some configuration data of the object type %{obj} are missing "
"to generate the DN of the new object."
msgstr ""
#: includes/class/class.LSldapObject.php:1836
#: includes/class/class.LSldapObject.php:1874
msgid ""
"LSldapObject : The attibute %{attr} of the object is not yet defined. Can't "
"generate DN."
msgstr ""
#: includes/class/class.LSldapObject.php:1839
#: includes/class/class.LSldapObject.php:1877
msgid "LSldapObject : Without DN, the object could not be changed."
msgstr ""
#: includes/class/class.LSldapObject.php:1842
#: includes/class/class.LSldapObject.php:1880
msgid ""
"LSldapObject : The attribute %{attr_depend} depending on the attribute "
"%{attr} doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1845
#: includes/class/class.LSldapObject.php:1883
msgid "LSldapObject : Error during deleting the object %{objectname}."
msgstr ""
#: includes/class/class.LSldapObject.php:1849
#: includes/class/class.LSldapObject.php:1887
msgid ""
"LSldapObject : Error during actions to be executed before renaming the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:1852
#: includes/class/class.LSldapObject.php:1890
msgid ""
"LSldapObject : Error during actions to be executed after renaming the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:1856
#: includes/class/class.LSldapObject.php:1894
msgid ""
"LSldapObject : Error during actions to be executed before deleting the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:1859
#: includes/class/class.LSldapObject.php:1897
msgid ""
"LSldapObject : Error during actions to be executed after deleting the objet."
msgstr ""
#: includes/class/class.LSldapObject.php:1863
#: includes/class/class.LSldapObject.php:1901
msgid ""
"LSldapObject : Error during the actions to be executed before creating the "
"object."
msgstr ""
#: includes/class/class.LSldapObject.php:1866
#: includes/class/class.LSldapObject.php:1904
msgid ""
"LSldapObject : Error during the actions to be executed after creating the "
"object. It was created anyway."
msgstr ""
#: includes/class/class.LSldapObject.php:1870
#: includes/class/class.LSldapObject.php:1908
msgid ""
"LSldapObject : The function %{func} to be executed before creating the "
"object doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1873
#: includes/class/class.LSldapObject.php:1911
msgid ""
"LSldapObject : Error executing the function %{func} to be execute after "
"deleting the object."
msgstr ""
#: includes/class/class.LSldapObject.php:1876
#: includes/class/class.LSldapObject.php:1914
msgid ""
"LSldapObject : The function %{func} to be executed after deleting the object "
"doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1879
#: includes/class/class.LSldapObject.php:1917
msgid ""
"LSldapObject : Error executing the function %{func} to be execute after "
"creating the object."
msgstr ""
#: includes/class/class.LSldapObject.php:1883
#: includes/class/class.LSldapObject.php:1921
msgid ""
"LSldapObject : %{func} function, to be executed on object event %{event}, "
"doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1886
#: includes/class/class.LSldapObject.php:1924
msgid ""
"LSldapObject : Error during the execution of %{func} function on object "
"event %{event}."
msgstr ""
#: includes/class/class.LSldapObject.php:1890
#: includes/class/class.LSldapObject.php:1928
msgid ""
"LSldapObject : %{meth} method, to be executed on object event %{event}, "
"doesn't exist."
msgstr ""
#: includes/class/class.LSldapObject.php:1893
#: includes/class/class.LSldapObject.php:1931
msgid ""
"LSldapObject : Error during execution of %{meth} method on object event "
"%{event}."
msgstr ""
#: includes/class/class.LSldapObject.php:1896
#: includes/class/class.LSldapObject.php:1934
msgid "LSldapObject : Error during generate LDAP filter for %{LSobject}."
msgstr ""
#: includes/class/class.LSldapObject.php:1900
#: includes/class/class.LSldapObject.php:1938
msgid ""
"LSldapObject : Error during execution of the custom action %{customAction} "
"on %{objectname}."
msgstr ""
#: includes/class/class.LSldapObject.php:1905
#: includes/class/class.LSldapObject.php:1942
msgid "LSldapObject : Fail to retrieve container DN."
msgstr ""
#: includes/class/class.LSldapObject.php:1945
msgid ""
"LSldapObject : The function %{func} to generate container DN is not callable."
msgstr ""
#: includes/class/class.LSldapObject.php:1948
msgid "LSldapObject : Error during generating container DN : %{error}"
msgstr ""
#: includes/class/class.LSldapObject.php:1953
msgid ""
"LSrelation : Some parameters are missing in the call of methods to handle "
"standard relations (Method : %{meth})."