Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
lib
unicaen
ldap
Commits
32cfab62
Commit
32cfab62
authored
Oct 14, 2019
by
David Surville
Browse files
Ajout des setters pour les différents attributs liés aux structures
parent
2138f7b6
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/UnicaenLdap/Entity/Base/People.php
View file @
32cfab62
...
...
@@ -33,11 +33,13 @@ class People extends Entity
'person'
,
'eduPerson'
,
'supannPerson'
,
'schacPersonalCharacteristics'
,
'schacEntryMetadata'
,
'ucbnEmp'
,
'ucbnEtu'
,
'posixAccount'
,
'sambaAccount'
,
'sambaSamAcount'
,
"schacPersonalCharacteristics"
,
"schacEntryMetadata"
'sambaSamAccount'
,
];
/**
...
...
@@ -228,56 +230,15 @@ class People extends Entity
'TITULAIRE'
,
];
/**
* Liste des patterns génériques utilisés pour différents attributs
*/
static
protected
$attribute_with_label_pattern
=
'/^\{(?<etiquette>[\w-:]+)\}(?<identifiant>.+)$/'
;
/**
* Liste des patterns spécifiques utilisés pour différents attributs
*/
static
protected
$structure_pattern
=
'/^(?<code>[\w-]+);(?<libelle>.+)$/'
;
static
protected
$secteur_disciplinaire_pattern
=
'/^(?<code>[\d]+);(?<libelle>.+)$/'
;
static
protected
$postal_address_pattern
=
'/^(.*)\$(.*)\$(.*)\$(.*)\$(.*)\$(.*)$/'
;
static
protected
$role_pattern
=
'/^\[role=(?<role>[\w-]+)\]\[type=(?<type>[\w-]+)\]\[code=(?<code>[\w-]+)\]\[libelle=(?<libelle>.+)\]$/'
;
static
protected
$role_src_pattern
=
'/^(?<code>[\d]{4});(?<libelle>.+)$/'
;
/**
* Ajoute ou affecte une valeur à un attribut Ldap
*
* @param string $attrName
* @param mixed $value
* @param bool $append
* @throws Exception
* @throws LdapException
*/
protected
function
appendOrNot
(
$attrName
,
$value
,
$append
)
{
(
!
$append
)
?
$this
->
set
(
$attrName
,
$value
)
:
$this
->
add
(
$attrName
,
$value
);
}
/**
* Vérifie une valeur et supprime les valeurs nulles
*
* @param mixed $value
* @return array
*/
protected
function
preFormat
(
$value
)
{
if
(
is_scalar
(
$value
)
||
is_null
(
$value
)
||
is_a
(
$value
,
'DateTime'
))
{
$value
=
[
$value
];
}
$value
=
array_filter
(
$value
);
return
$value
;
}
/**
* Attribut Ldap "sn"
*
...
...
src/UnicaenLdap/Entity/Base/Structure.php
View file @
32cfab62
...
...
@@ -3,6 +3,9 @@
namespace
UnicaenLdap\Entity\Base
;
use
UnicaenLdap\Entity\Entity
;
use
UnicaenLdap\Entity\Structure
as
StructureEntity
;
use
UnicaenLdap\Exception
;
use
Zend\Ldap\Exception\LdapException
;
/**
* Classe mère des entités de la branche "structures" de l'annuaire LDAP.
...
...
@@ -25,6 +28,25 @@ class Structure extends Entity
'ucbnEntite'
,
];
/**
* Liste des attributs autorisés pour une entité "People"
*
* @var array
*/
protected
$authorizedAttributes
=
[
// Attributes classes
'objectClass'
,
// Attributes
'description'
,
'facsimileTelephoneNumber'
,
'ou'
,
'postalAddress'
,
'supannCodeEntiteParent'
,
'supannRefId'
,
'supannTypeEntite'
,
'telephoneNumber'
,
];
/**
* Liste des attributs contenant des dates
*
...
...
@@ -38,4 +60,173 @@ class Structure extends Entity
* @var array
*/
protected
$monoValuedAttributes
=
[];
/**
* Attribut Ldap "description"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setDescription
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$this
->
appendOrNot
(
'description'
,
$value
,
$append
);
return
$this
;
}
/**
* Attribut Ldap "ou"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setOu
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$this
->
appendOrNot
(
'ou'
,
$value
,
$append
);
return
$this
;
}
/**
* Attribut Ldap "supannCodeEntiteParent"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setSupannCodeEntiteParent
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$value
=
array_map
(
function
(
$val
)
{
if
(
is_string
(
$val
))
{
if
(
0
!==
strpos
(
$val
,
$this
->
getService
()
->
getCodeStructurePrefixe
()))
{
$val
=
$this
->
getService
()
->
getCodeStructurePrefixe
()
.
$val
;
}
return
$val
;
}
elseif
(
$val
instanceof
StructureEntity
)
{
return
$val
->
get
(
'supannCodeEntite'
);
}
else
{
return
null
;
}
},
$value
);
$this
->
appendOrNot
(
'supannCodeEntiteParent'
,
array_filter
(
$value
),
$append
);
return
$this
;
}
/**
* Attribut Ldap "supannTypeEntite"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setSupannTypeEntiteAffectation
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$supannLabel
=
$this
->
getLabel
(
'SUPANN'
);
$value
=
array_map
(
function
(
$val
)
use
(
$supannLabel
)
{
if
(
is_string
(
$val
))
{
return
preg_match
(
"/^
$supannLabel
.+$/"
,
$val
)
?
$val
:
sprintf
(
'%s%s'
,
$supannLabel
,
$val
);
}
else
{
return
null
;
}
},
$value
);
$this
->
appendOrNot
(
'supannTypeEntite'
,
array_filter
(
$value
),
$append
);
return
$this
;
}
/**
* Attribut Ldap "telephoneNumber"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setTelephoneNumber
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$value
=
array_map
([
$this
,
'formatTel'
],
$value
);
$this
->
appendOrNot
(
'telephoneNumber'
,
$value
,
$append
);
return
$this
;
}
/**
* Attribut Ldap "facsimileTelephoneNumber"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setFacsimileTelephoneNumber
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$value
=
array_map
([
$this
,
'formatTel'
],
$value
);
$this
->
appendOrNot
(
'facsimileTelephoneNumber'
,
$value
,
$append
);
return
$this
;
}
/**
* Attribut Ldap "postalAddress"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setPostalAddress
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$value
=
array_filter
(
$value
,
function
(
$v
)
{
return
preg_match
(
self
::
$postal_address_pattern
,
$v
);
});
$this
->
appendOrNot
(
'postalAddress'
,
$value
,
$append
);
return
$this
;
}
/**
* Attribut Ldap "supannRefId"
*
* @param array|string|null $value
* @param bool $append
* @return self
* @throws Exception
* @throws LdapException
*/
public
function
setSupannRefId
(
$value
=
null
,
$append
=
false
)
{
$value
=
$this
->
preFormat
(
$value
);
$value
=
array_filter
(
$value
,
function
(
$v
)
{
return
preg_match
(
self
::
$attribute_with_label_pattern
,
$v
);
});
$this
->
appendOrNot
(
'supannRefId'
,
$value
,
$append
);
return
$this
;
}
}
\ No newline at end of file
src/UnicaenLdap/Entity/Entity.php
View file @
32cfab62
...
...
@@ -65,6 +65,16 @@ abstract class Entity
*/
protected
$monoValuedAttributes
=
[];
/**
* Liste des patterns génériques utilisés pour différents attributs
*/
static
protected
$attribute_with_label_pattern
=
'/^\{(?<etiquette>[\w-:]+)\}(?<identifiant>.+)$/'
;
/**
* Liste des patterns spécifiques utilisés pour différents attributs
*/
static
protected
$postal_address_pattern
=
'/^(.*)\$(.*)\$(.*)\$(.*)\$(.*)\$(.*)$/'
;
/**
* @param string $type type d'entité
...
...
@@ -345,6 +355,22 @@ abstract class Entity
return
$this
;
}
/**
* Ajoute ou affecte une valeur à un attribut Ldap
*
* @param string $attrName
* @param mixed $value
* @param bool $append
* @throws Exception
* @throws LdapException
*/
protected
function
appendOrNot
(
$attrName
,
$value
,
$append
)
{
(
!
$append
)
?
$this
->
set
(
$attrName
,
$value
)
:
$this
->
add
(
$attrName
,
$value
);
}
/**
* Méthode magique...
*
...
...
@@ -495,4 +521,23 @@ abstract class Entity
return
null
;
}
}
/**
* Vérifie une valeur et supprime les valeurs nulles
*
* @param mixed $value
* @return array
*/
protected
function
preFormat
(
$value
)
{
if
(
is_scalar
(
$value
)
||
is_null
(
$value
)
||
is_a
(
$value
,
'DateTime'
))
{
$value
=
[
$value
];
}
$value
=
array_filter
(
$value
);
return
$value
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment