diff --git a/config/unicaen-zimbra.global.php.dist b/config/unicaen-zimbra.global.php.dist index 2bb9dac0d0ab84b71e76baad69a56f6b782aaf17..cb4ca4bc547f0a1193faa32c139d451d77b1435f 100644 --- a/config/unicaen-zimbra.global.php.dist +++ b/config/unicaen-zimbra.global.php.dist @@ -6,6 +6,7 @@ $settings = array( 'email' => 'adminsoap@unicaen.fr', 'password' => 'ZsIoMaBpRa', 'domain' => 'unicaen.fr', + 'boite_generique_cos_id' => 'e00428a1-0c00-11d9-836a-000d93afea2a', // COS par défaut (à modifier) ); return array( diff --git a/config/unicaen-zimbra.local.php.dist b/config/unicaen-zimbra.local.php.dist index c3a4322531f3c60fe88d8e7e20554c703ddfb41c..e06bc31c64cf7b5d454d54554ee843970e586de8 100644 --- a/config/unicaen-zimbra.local.php.dist +++ b/config/unicaen-zimbra.local.php.dist @@ -6,6 +6,7 @@ $settings = array( 'email' => 'david.surville@pp.unicaen.fr', 'password' => 'Zimbra14', 'domain' => 'pp.unicaen.fr', + 'boite_generique_cos_id' => 'e00428a1-0c00-11d9-836a-000d93afea2a', ); return array( diff --git a/src/UnicaenZimbra/Options/ModuleOptions.php b/src/UnicaenZimbra/Options/ModuleOptions.php index bb37f87eebad91fb70da4bed9d1d7c3ce07e9035..dfa02d55d3818b25bf1cf7d0e28ab957dcbdc8fc 100644 --- a/src/UnicaenZimbra/Options/ModuleOptions.php +++ b/src/UnicaenZimbra/Options/ModuleOptions.php @@ -34,7 +34,18 @@ class ModuleOptions extends \ZfcUser\Options\ModuleOptions * @var string */ protected $domain; + + /** + * + * @var string + */ + protected $boiteGeneriqueCosId; + /** + * + * @var boolean + */ + protected $debugMode = false; @@ -124,7 +135,7 @@ class ModuleOptions extends \ZfcUser\Options\ModuleOptions * @param string $domain * @return ModuleOptions */ - public function setdomain($domain) + public function setDomain($domain) { $this->domain = (string) $domain; return $this; @@ -137,5 +148,45 @@ class ModuleOptions extends \ZfcUser\Options\ModuleOptions public function getDomain() { return $this->domain; - } + } + + /** + * + * @param string $boiteGeneriqueCosId + * @return ModuleOptions + */ + public function setBoiteGeneriqueCosId($boiteGeneriqueCosId) + { + $this->boiteGeneriqueCosId = (string) $boiteGeneriqueCosId; + return $this; + } + + /** + * + * @return string + */ + public function getBoiteGeneriqueCosId() + { + return $this->boiteGeneriqueCosId; + } + + /** + * + * @param boolean $debugMode + * @return ModuleOptions + */ + public function setDebugMode($debugMode) + { + $this->debugMode = $debugMode == true; + return $this; + } + + /** + * + * @return boolean + */ + public function getDebugMode() + { + return $this->debugMode; + } } \ No newline at end of file diff --git a/src/UnicaenZimbra/Processus/BoiteGenerique.php b/src/UnicaenZimbra/Processus/BoiteGenerique.php index d79f74086de579fb33e112b8fa79e312e18dcf1b..7e808e6ae14672d2c52a90289eefd4c68cc78ada 100644 --- a/src/UnicaenZimbra/Processus/BoiteGenerique.php +++ b/src/UnicaenZimbra/Processus/BoiteGenerique.php @@ -24,11 +24,11 @@ class BoiteGenerique extends Processus /** * Création d'une boite générique * - * @todo Ajouter la COS... - * @param string $name Nom de la boite - * @param string $password Mot de passe de la boite * @param string $mail Adresse mail de la boite générique + * @param string $password Mot de passe de la boite + * @param string $name Nom de la boite * @param string $description Description + * @return self */ public function create( $mail, $password, $name, $description ) { @@ -38,27 +38,31 @@ class BoiteGenerique extends Processus $account = new Account; $account->name = $mail; $account->description = $description; - $account->zimbraCOSId = $cosService->get('default')->getId(); + $account->zimbraCOSId = $this->getZimbra()->getOptions()->getBoiteGeneriqueCosId(); $accountService->create( $account, $password ); $accountService->addAlias($account, $name.substr($mail, strpos($mail,'@'))); + return $this; } /** * Destruction de la boite générique * - * @param string $mail + * @param string $mail Adresse mail de la boite générique + * @return self */ public function delete( $mail ) { $accountService = $this->getZimbra()->getAccountService(); $accountService->delete($accountService->get($mail)); + return $this; } /** * Crée une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) * - * @param string $mail - * @param string $adresseFonctionnelle + * @param string $mail Adresse mail de la boite générique + * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle + * @return self */ public function createAdresseFonctionnelle( $mail, $adresseFonctionnelle ) { @@ -95,13 +99,15 @@ class BoiteGenerique extends Processus $filter->addAction($action); $filter->addAction( new FilterActionStop ); $filterService->createInput($filter); + return $this; } /** * Supprime une adresse fonctionnelle par rapport à la boite générique (paramètre $mail) * - * @param string $mail - * @param string $adresseFonctionnelle + * @param string $mail Adresse mail de la boite générique + * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle + * @return self */ public function deleteAdresseFonctionnelle( $mail, $adresseFonctionnelle ) { @@ -125,8 +131,16 @@ class BoiteGenerique extends Processus /* Filtres */ $filterService->deleteInput($afName.' | Réception'); + return $this; } + /** + * Donne accès à une boite fonctionnelle pour un utilisateur + * + * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle + * @param string $userMail Adresse mail de l'utilisateur + * @return self + */ public function grantUserToAdresseFonctionnelle( $adresseFonctionnelle, $userMail ) { $afName = $this->getMailName( $adresseFonctionnelle ); @@ -190,8 +204,16 @@ class BoiteGenerique extends Processus $identity->zimbraPrefWhenSentToAddresses = $adresseFonctionnelle; $identity->zimbraPrefWhenSentToEnabled = true; $identityService->create($identity); + return $this; } + /** + * Retire l'accès à une boite fonctionnelle pour un utilisateur + * + * @param string $adresseFonctionnelle Adresse mail de l'adresse fonctionnelle + * @param string $userMail Adresse mail de l'utilisateur + * @return self + */ public function revokeUserFromAdresseFonctionnelle( $adresseFonctionnelle, $userMail ) { $afName = $this->getMailName( $adresseFonctionnelle ); @@ -225,6 +247,7 @@ class BoiteGenerique extends Processus /* Avatar */ $identityService->delete( $identityService->get($afName) ); + return $this; } /** diff --git a/src/UnicaenZimbra/Zimbra.php b/src/UnicaenZimbra/Zimbra.php index e57b05a02cc84fb451ff660d8b2e1904214c935c..4f0ef4c7cff7d3fdc7d94e1be65a582e098639fe 100644 --- a/src/UnicaenZimbra/Zimbra.php +++ b/src/UnicaenZimbra/Zimbra.php @@ -27,7 +27,6 @@ use Exception; class Zimbra implements ServiceManagerAwareInterface { - public $debug = false; /** * Zimbra ID pour le puvlic (utile pour gérer les droits de partage) @@ -636,11 +635,11 @@ class Zimbra implements ServiceManagerAwareInterface unset($this->message->children('soap', true)->Body); $body = $this->message->addChild('Body'); $this->arrayToNode($body, $name, $attributes, $params, $urn ); - if ($this->debug) $this->printXml ($this->message->asXml());/** @todo DEBUG : à supprimer */ + if ($this->getOptions()->getDebugMode()) $this->debugXml($this->message->asXml()); curl_setopt($this->curlHandle, CURLOPT_POSTFIELDS, $this->message->asXml()); $soapMessage = curl_exec($this->curlHandle); - if ($this->debug) $this->printXml ($soapMessage);/** @todo DEBUG : à supprimer */ + if ($this->getOptions()->getDebugMode()) $this->debugXml($soapMessage); if (!$soapMessage) { throw new Exception(curl_error($this->curlHandle), curl_errno($this->curlHandle)); } @@ -728,13 +727,13 @@ class Zimbra implements ServiceManagerAwareInterface return array( '*a' => $result ); } - public function printXml( $xml ) + public function debugXml( $xml ) { echo '<div style="border:1px red solid;margin:1px;padding:1px">'; - try{ + if ($this->getServiceManager()->has('Test\Xml')){ $xmlHighlighter = $this->getServiceManager()->get('Test\Xml'); $xmlHighlighter->highlight( $xml ); - }catch(Exception $e){ + }else{ echo htmlentities( $xml ); } echo '</div>'; diff --git a/tests/config/autoload/unicaen-zimbra.global.php b/tests/config/autoload/unicaen-zimbra.global.php index 43d9c7ca71f014ff9fa0c7b7f6efdebc8ae7abf3..26fe5786a87bc68ffe8a4eb9fe0001042f781922 100644 --- a/tests/config/autoload/unicaen-zimbra.global.php +++ b/tests/config/autoload/unicaen-zimbra.global.php @@ -11,6 +11,7 @@ $settings = array( 'email' => 'adminsoap@unicaen.fr', 'password' => 'ZsIoMaBpRa', 'domain' => 'unicaen.fr', + 'boite_generique_cos_id' => 'e00428a1-0c00-11d9-836a-000d93afea2a', // COS par défaut (à modifier) ); /** diff --git a/tests/config/autoload/unicaen-zimbra.local.php.dist b/tests/config/autoload/unicaen-zimbra.local.php.dist index 16cbc69d2d511d7fc08b80f553f227458830f29f..74e05959064f56302b1b5b1128e150c224fc2428 100644 --- a/tests/config/autoload/unicaen-zimbra.local.php.dist +++ b/tests/config/autoload/unicaen-zimbra.local.php.dist @@ -11,6 +11,7 @@ $settings = array( 'email' => 'david.surville@pp.unicaen.fr', 'password' => 'Zimbra14', 'domain' => 'pp.unicaen.fr', + 'boite_generique_cos_id' => 'e00428a1-0c00-11d9-836a-000d93afea2a', ); /**