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;
 | 
						|
  }
 | 
						|
}
 |