37 lines
861 B
PHP
37 lines
861 B
PHP
|
<?php
|
||
|
namespace nur\ldap\syntaxes;
|
||
|
|
||
|
use nur\b\date\Datetime;
|
||
|
use nur\data\types\SDatetimeType;
|
||
|
|
||
|
class DateSyntax extends AbstractSyntax {
|
||
|
function __construct() {
|
||
|
$this->type = new SDatetimeType();
|
||
|
}
|
||
|
|
||
|
/** @var SDatetimeType */
|
||
|
protected $type;
|
||
|
|
||
|
|
||
|
function php2ldap($value): ?string {
|
||
|
$value = $this->type->with($value);
|
||
|
if ($value === null) return null;
|
||
|
$datetime = new Datetime($value);
|
||
|
return $datetime->formatRfc4517();
|
||
|
}
|
||
|
|
||
|
function ldap2php(string $value) {
|
||
|
[$y, $m, $d, $H, $M, $S] = [
|
||
|
substr($value, 0, 4),
|
||
|
substr($value, 4, 2),
|
||
|
substr($value, 6, 2),
|
||
|
substr($value, 8, 2),
|
||
|
substr($value, 10, 2),
|
||
|
substr($value, 12, 2),
|
||
|
];
|
||
|
$datetime = new Datetime(gmmktime($H, $M, $S, $m, $d, $y));
|
||
|
$value = preg_replace('/ 00:00:00$/', "", $datetime->format());
|
||
|
return $value;
|
||
|
}
|
||
|
}
|