<?php
namespace nur\ldap;

/**
 * Class PersonObject: une personne au sens inetOrg
 *
 * --autogen-properties-and-methods--
 * @property string $dn
 * @property string[] $sn
 * @property string[] $cn
 * @property string[] $objectClass
 * @property string[] $audio
 * @property string[] $businessCategory
 * @property string[] $carLicense
 * @property string[] $departmentNumber
 * @property string $displayName
 * @property string $employeeNumber
 * @property string[] $employeeType
 * @property string[] $givenName
 * @property string[] $homePhone
 * @property string[] $homePostalAddress
 * @property string[] $initials
 * @property string[] $jpegPhoto
 * @property string[] $labeledURI
 * @property string[] $mail
 * @property string[] $manager
 * @property string[] $mobile
 * @property string[] $o
 * @property string[] $pager
 * @property string[] $photo
 * @property string[] $roomNumber
 * @property string[] $secretary
 * @property string[] $uid
 * @property string[] $userCertificate
 * @property string[] $x500UniqueIdentifier
 * @property string $preferredLanguage
 * @property string[] $userSMIMECertificate
 * @property string[] $userPKCS12
 * @property string[] $title
 * @property int[] $x121Address
 * @property string[] $registeredAddress
 * @property string[] $destinationIndicator
 * @property string $preferredDeliveryMethod
 * @property string[] $telexNumber
 * @property string[] $teletexTerminalIdentifier
 * @property string[] $telephoneNumber
 * @property int[] $internationaliSDNNumber
 * @property string[] $facsimileTelephoneNumber
 * @property string[] $street
 * @property string[] $postOfficeBox
 * @property string[] $postalCode
 * @property string[] $postalAddress
 * @property string[] $physicalDeliveryOfficeName
 * @property string[] $ou
 * @property string[] $st
 * @property string[] $l
 * @property string[] $userPassword
 * @property string[] $seeAlso
 * @property string[] $description
 * @property string[] $eduPersonAffiliation
 * @property string[] $eduPersonNickname
 * @property string $eduPersonOrgDN
 * @property string[] $eduPersonOrgUnitDN
 * @property string $eduPersonPrimaryAffiliation
 * @property string $eduPersonPrincipalName
 * @property string[] $eduPersonPrincipalNamePrior
 * @property string[] $eduPersonEntitlement
 * @property string $eduPersonPrimaryOrgUnitDN
 * @property string[] $eduPersonScopedAffiliation
 * @property string[] $eduPersonTargetedID
 * @property string[] $eduPersonAssurance
 * @property string[] $eduPersonUniqueId
 * @property string[] $eduPersonOrcid
 * @property string[] $eduPersonAnalyticsTag
 * @property string $eduPersonDisplayPronouns
 * @method \nur\ldap\LdapAttr dn()
 * @method \nur\ldap\LdapAttr sn()
 * @method \nur\ldap\LdapAttr cn()
 * @method \nur\ldap\LdapAttr objectClass()
 * @method \nur\ldap\LdapAttr audio()
 * @method \nur\ldap\LdapAttr businessCategory()
 * @method \nur\ldap\LdapAttr carLicense()
 * @method \nur\ldap\LdapAttr departmentNumber()
 * @method \nur\ldap\LdapAttr displayName()
 * @method \nur\ldap\LdapAttr employeeNumber()
 * @method \nur\ldap\LdapAttr employeeType()
 * @method \nur\ldap\LdapAttr givenName()
 * @method \nur\ldap\LdapAttr homePhone()
 * @method \nur\ldap\LdapAttr homePostalAddress()
 * @method \nur\ldap\LdapAttr initials()
 * @method \nur\ldap\LdapAttr jpegPhoto()
 * @method \nur\ldap\LdapAttr labeledURI()
 * @method \nur\ldap\LdapAttr mail()
 * @method \nur\ldap\LdapAttr manager()
 * @method \nur\ldap\LdapAttr mobile()
 * @method \nur\ldap\LdapAttr o()
 * @method \nur\ldap\LdapAttr pager()
 * @method \nur\ldap\LdapAttr photo()
 * @method \nur\ldap\LdapAttr roomNumber()
 * @method \nur\ldap\LdapAttr secretary()
 * @method \nur\ldap\LdapAttr uid()
 * @method \nur\ldap\LdapAttr userCertificate()
 * @method \nur\ldap\LdapAttr x500UniqueIdentifier()
 * @method \nur\ldap\LdapAttr preferredLanguage()
 * @method \nur\ldap\LdapAttr userSMIMECertificate()
 * @method \nur\ldap\LdapAttr userPKCS12()
 * @method \nur\ldap\LdapAttr title()
 * @method \nur\ldap\LdapAttr x121Address()
 * @method \nur\ldap\LdapAttr registeredAddress()
 * @method \nur\ldap\LdapAttr destinationIndicator()
 * @method \nur\ldap\LdapAttr preferredDeliveryMethod()
 * @method \nur\ldap\LdapAttr telexNumber()
 * @method \nur\ldap\LdapAttr teletexTerminalIdentifier()
 * @method \nur\ldap\LdapAttr telephoneNumber()
 * @method \nur\ldap\LdapAttr internationaliSDNNumber()
 * @method \nur\ldap\LdapAttr facsimileTelephoneNumber()
 * @method \nur\ldap\LdapAttr street()
 * @method \nur\ldap\LdapAttr postOfficeBox()
 * @method \nur\ldap\LdapAttr postalCode()
 * @method \nur\ldap\LdapAttr postalAddress()
 * @method \nur\ldap\LdapAttr physicalDeliveryOfficeName()
 * @method \nur\ldap\LdapAttr ou()
 * @method \nur\ldap\LdapAttr st()
 * @method \nur\ldap\LdapAttr l()
 * @method \nur\ldap\LdapAttr userPassword()
 * @method \nur\ldap\LdapAttr seeAlso()
 * @method \nur\ldap\LdapAttr description()
 * @method \nur\ldap\LdapAttr eduPersonAffiliation()
 * @method \nur\ldap\LdapAttr eduPersonNickname()
 * @method \nur\ldap\LdapAttr eduPersonOrgDN()
 * @method \nur\ldap\LdapAttr eduPersonOrgUnitDN()
 * @method \nur\ldap\LdapAttr eduPersonPrimaryAffiliation()
 * @method \nur\ldap\LdapAttr eduPersonPrincipalName()
 * @method \nur\ldap\LdapAttr eduPersonPrincipalNamePrior()
 * @method \nur\ldap\LdapAttr eduPersonEntitlement()
 * @method \nur\ldap\LdapAttr eduPersonPrimaryOrgUnitDN()
 * @method \nur\ldap\LdapAttr eduPersonScopedAffiliation()
 * @method \nur\ldap\LdapAttr eduPersonTargetedID()
 * @method \nur\ldap\LdapAttr eduPersonAssurance()
 * @method \nur\ldap\LdapAttr eduPersonUniqueId()
 * @method \nur\ldap\LdapAttr eduPersonOrcid()
 * @method \nur\ldap\LdapAttr eduPersonAnalyticsTag()
 * @method \nur\ldap\LdapAttr eduPersonDisplayPronouns()
 */
class PersonObject extends LdapObject {
  const OBJECT_CLASSES = [
    "inetOrgPerson",
    "eduPerson",
  ];
  const PARENT_RDN = "ou=People";
  const DN_NAMES = "uid";

  #############################################################################
  const _AUTOGEN_CONSTS = ["SCHEMA"];
  const _AUTOGEN_PROPERTIES = [[self::class, "_AUTOGEN_PROPERTIES"]];
  const _AUTOGEN_METHODS = [[self::class, "_AUTOGEN_METHODS"]];
  const SCHEMA = /*autogen*/[
    'dn' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'sn' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'cn' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'objectClass' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'audio' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 8,
    ],
    'businessCategory' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'carLicense' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'departmentNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'displayName' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'employeeNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'employeeType' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'givenName' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'homePhone' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'homePostalAddress' => [
      'class' => 'nur\\ldap\\syntaxes\\PostalAddressSyntax',
      'flags' => 0,
    ],
    'initials' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'jpegPhoto' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 8,
    ],
    'labeledURI' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'mail' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'manager' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'mobile' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'o' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'pager' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'photo' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'roomNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'secretary' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'uid' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'userCertificate' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 10,
    ],
    'x500UniqueIdentifier' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 0,
    ],
    'preferredLanguage' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'userSMIMECertificate' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 8,
    ],
    'userPKCS12' => [
      'class' => 'nur\\ldap\\syntaxes\\BinarySyntax',
      'flags' => 8,
    ],
    'title' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'x121Address' => [
      'class' => 'nur\\ldap\\syntaxes\\IntegerSyntax',
      'flags' => 0,
    ],
    'registeredAddress' => [
      'class' => 'nur\\ldap\\syntaxes\\PostalAddressSyntax',
      'flags' => 0,
    ],
    'destinationIndicator' => [
      'class' => 'nur\\ldap\\syntaxes\\PrintableSyntax',
      'flags' => 0,
    ],
    'preferredDeliveryMethod' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'telexNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'teletexTerminalIdentifier' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'telephoneNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'internationaliSDNNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\IntegerSyntax',
      'flags' => 0,
    ],
    'facsimileTelephoneNumber' => [
      'class' => 'nur\\ldap\\syntaxes\\TelephoneSyntax',
      'flags' => 0,
    ],
    'street' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'postOfficeBox' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'postalCode' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'postalAddress' => [
      'class' => 'nur\\ldap\\syntaxes\\PostalAddressSyntax',
      'flags' => 0,
    ],
    'physicalDeliveryOfficeName' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'ou' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'st' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'l' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'userPassword' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'seeAlso' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'description' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonAffiliation' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonNickname' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonOrgDN' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'eduPersonOrgUnitDN' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonPrimaryAffiliation' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'eduPersonPrincipalName' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'eduPersonPrincipalNamePrior' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonEntitlement' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonPrimaryOrgUnitDN' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
    'eduPersonScopedAffiliation' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonTargetedID' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonAssurance' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonUniqueId' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonOrcid' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonAnalyticsTag' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 0,
    ],
    'eduPersonDisplayPronouns' => [
      'class' => 'nur\\ldap\\syntaxes\\StringSyntax',
      'flags' => 1,
    ],
  ];
}