diff --git a/src/UnicaenZimbra/Entity/DistributionList.php b/src/UnicaenZimbra/Entity/DistributionList.php index be4b1de65a5e28079d0efa66c6b18b9adc807af1..a8647669892ee3f49c66586fdb7c55129cf799b3 100644 --- a/src/UnicaenZimbra/Entity/DistributionList.php +++ b/src/UnicaenZimbra/Entity/DistributionList.php @@ -8,6 +8,36 @@ namespace UnicaenZimbra\Entity; +use SimpleXMLElement; + class DistributionList extends Entity { + public function populate( SimpleXMLElement $object ) + { + $this->data = array(); + $this->data['id'] = (string) $object['id']; + $this->data['name'] = (string) $object['name']; + $this->id = (string) $object['id']; + $this->name = (string) $object['name']; + + foreach ($object->children()->a as $data) { + $key = (string) $data['n']; + + if (isset($this->data[$key])) { // store multiple attributes in an array + $this->data[$key] = (array) $this->data[$key]; + $this->data[$key][] = self::convertFromXml($data); + } else { + $this->data[$key] = self::convertFromXml($data); + } + } + + foreach($object->children()->dlm as $member) { + if (isset($this->data['members'])) { // store multiple attributes in an array + $this->data['members'] = (array) $this->data['members']; + $this->data['members'][] = self::convertFromXml($member); + } else { + $this->data['members'] = (array) self::convertFromXml($member); + } + } + } } diff --git a/src/UnicaenZimbra/Processus/BoiteGenerique.php b/src/UnicaenZimbra/Processus/BoiteGenerique.php index 1979eab5ef6c3ced3d9e4fc80be0e3c4ddcc60c8..1d9b76c9f31f5056a36d7ec33cd6b5513fbdb969 100644 --- a/src/UnicaenZimbra/Processus/BoiteGenerique.php +++ b/src/UnicaenZimbra/Processus/BoiteGenerique.php @@ -240,9 +240,9 @@ class BoiteGenerique extends Processus * @param string $userMail Adresse mail de l'utilisateur * @return self */ - public function grantUserToAdresseFonctionnelle( $adresseFonctionnelle, $userMail ) + public function grantUserToAdresseFonctionnelle($adresseFonctionnelle, $userMail) { - $afName = $this->getMailName( $adresseFonctionnelle ); + $afName = $this->getMailName($adresseFonctionnelle); $distribListService = $this->getServiceManager()->get('zimbraServiceDistributionList'); $accountService = $this->getServiceManager()->get('zimbraServiceAccount'); @@ -252,7 +252,8 @@ class BoiteGenerique extends Processus $identityService = $this->getServiceManager()->get('zimbraServiceIdentity'); // Travail sur la boite générique - $bgAccount = $distribListService->getMembers($adresseFonctionnelle, 1)[0]; + $dlAccount = $distribListService->get($adresseFonctionnelle); + $bgAccount = $dlAccount->members[0]; $userAccount = $accountService->get( $userMail ); $folderService->setAccount($bgAccount); @@ -289,7 +290,7 @@ class BoiteGenerique extends Processus // ACE $ace = new Right; - $ace->setTarget($distribListService->get($adresseFonctionnelle)) + $ace->setTarget($dlAccount) ->setGrantee($userAccount) ->setRightByRightName('sendAsDistList'); $rightService->grantRight($ace); @@ -318,9 +319,9 @@ class BoiteGenerique extends Processus * @param string $userMail Adresse mail de l'utilisateur * @return self */ - public function revokeUserFromAdresseFonctionnelle( $adresseFonctionnelle, $userMail ) + public function revokeUserFromAdresseFonctionnelle($adresseFonctionnelle, $userMail) { - $afName = $this->getMailName( $adresseFonctionnelle ); + $afName = $this->getMailName($adresseFonctionnelle); $distribListService = $this->getServiceManager()->get('zimbraServiceDistributionList'); $accountService = $this->getServiceManager()->get('zimbraServiceAccount'); @@ -330,7 +331,8 @@ class BoiteGenerique extends Processus $identityService = $this->getServiceManager()->get('zimbraServiceIdentity'); // Travail sur la boite générique - $bgAccount = $distribListService->getMembers($adresseFonctionnelle, 1)[0]; + $dlAccount = $distribListService->get($adresseFonctionnelle); + $bgAccount = $dlAccount->members[0]; $userAccount = $accountService->get( $userMail ); $folderService->setAccount($bgAccount); @@ -350,7 +352,7 @@ class BoiteGenerique extends Processus // ACE $ace = new Right; - $ace->setTarget($distribListService->get($adresseFonctionnelle)) + $ace->setTarget($dlAccount) ->setGrantee($userAccount) ->setRightByRightName('sendAsDistList'); $rightService->revokeRight($ace); diff --git a/src/UnicaenZimbra/Service/DistributionList.php b/src/UnicaenZimbra/Service/DistributionList.php index 48c3e1750166d64a12e94f7a78586923959e1c82..fc0d8838db5c6e4767da23cba81f098c2bd1d635 100644 --- a/src/UnicaenZimbra/Service/DistributionList.php +++ b/src/UnicaenZimbra/Service/DistributionList.php @@ -13,7 +13,7 @@ use UnicaenZimbra\Entity\Account as AccountEntity; use UnicaenZimbra\Zimbra; class DistributionList extends Service { - + /** * Retourne la liste des listes de distribution *