LSattr_ldap::naiveDate: Add format option

This commit is contained in:
Benjamin Renard 2021-06-10 19:01:22 +02:00
parent eccb234210
commit 8dbbda801a
2 changed files with 43 additions and 4 deletions

View file

@ -6,4 +6,35 @@
une <emphasis>timezone</emphasis>, cependant celle-ci sera complètement ignorée.
Ce type peut-être utilisé à la place du type &LSattr_ldap_date;.</para>
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle><![CDATA[...
'ldap_options' => array (
'format' => '[Format de stockage]', // Default : "%Y%m%d%H%M%SZ"
),
...]]>
</programlisting>
<variablelist>
<title>Paramètres de configuration</title>
<varlistentry>
<term>format</term>
<listitem>
<para>Format de stockage de la date dans l'annuaire. Ce format est composé à
partir des motifs clés gérés par la fonction <function>strftime()</function>
de &php;. Pour plus d'information, consulter
<ulink url='http://www.php.net/strftime'>la documentation officielle</ulink>.
<note><simpara>La valeur par défaut est <emphasis>%Y%m%d%H%M%SZ</emphasis>,
correspondant à la syntaxe <literal>Generalized Time</literal> (sans les
micro-secondes) telle que définie dans la
<ulink url='https://tools.ietf.org/html/rfc4517'>RFC4517</ulink>. Exemples :
<literal>20091206230506Z</literal>
<emphasis>(=2009/12/06 23:05:66 UTC)</emphasis>.</simpara></note>
</para>
</listitem>
</varlistentry>
</variablelist>
</sect4>

View file

@ -28,8 +28,6 @@
*/
class LSattr_ldap_naiveDate extends LSattr_ldap {
const FORMAT = "%Y%m%d%H%M%S";
/**
* Return the display value of the attribute after handling is LDAP type
*
@ -40,7 +38,7 @@ class LSattr_ldap_naiveDate extends LSattr_ldap {
public function getDisplayValue($data) {
$retval = array();
foreach(ensureIsArray($data) as $val) {
$date = strptime($val, self::FORMAT);
$date = strptime($val, $this -> getFormat());
if (is_array($date)) {
$retval[] = mktime(
$date['tm_hour'],
@ -65,9 +63,19 @@ class LSattr_ldap_naiveDate extends LSattr_ldap {
public function getUpdateData($data) {
$retval = array();
foreach(ensureIsArray($data) as $val) {
$retval[] = strftime(self::FORMAT, $val).'Z';
$retval[] = strftime($this -> getFormat(), $val);
}
return $retval;
}
/**
* Return the storage format of the date (as accept by strptime()/strftime())
*
* @retval string the storage format of the date
**/
public function getFormat() {
return $this -> getConfig('ldap_options.format', "%Y%m%d%H%M%SZ");
}
}