Skip to content
Snippets Groups Projects
Commit 38198658 authored by David Surville's avatar David Surville
Browse files

Copie de la branche tags/1.0.4 dans trunk

parents a193a2d9 c881be34
Branches
Tags
No related merge requests found
Showing
with 1107 additions and 29 deletions
......@@ -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);
}
}
}
}
<?php
namespace UnicaenZimbra\Entity\Filter\Action;
use SimpleXMLElement;
/**
* @version $Id$
*
* Action discard pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Discard extends Action
{
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
/* Aucune propriété particulière n'est requise */
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
return array();
}
}
<?php
namespace UnicaenZimbra\Entity\Filter\Action;
use SimpleXMLElement;
/**
* @version $Id$
*
* Action flag pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Flag extends Action
{
/**
* Nom du flag
*
* @var string
*/
protected $flagName;
/**
* Retourne le nom du flag
*
* @return string
*/
public function getFlagName()
{
return $this->flagName;
}
/**
* Définie le nom du flag
*
* @param string $flagName
* @return self
*/
public function setFlagName( $flagName )
{
$this->flagName = $flagName;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setFlagName((string)$node['flagName']);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
return array(
'flagName' => $this->getFlagName(),
);
}
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ use SimpleXMLElement;
/**
* @version $Id$
*
* Action de keep pour filtre Zimbra
* Action keep pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
......
<?php
namespace UnicaenZimbra\Entity\Filter\Action;
use SimpleXMLElement;
/**
* @version $Id$
*
* Action redirect pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Redirect extends Action
{
/**
* Adresse mail du destinataire
*
* @var string
*/
protected $a;
/**
* Retourne le nom du destinataire
*
* @return string
*/
public function getA()
{
return $this->a;
}
/**
* Définie le nom du destinataire
*
* @param string $a
* @return self
*/
public function setA( $a )
{
$this->a = $a;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setA((string)$node['a']);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
return array(
'a' => $this->getA(),
);
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Action;
use SimpleXMLElement;
/**
* @version $Id$
*
* Action tag pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Tag extends Action
{
/**
* Nom du tag
*
* @var string
*/
protected $tagName;
/**
* Retourne le nom du tag
*
* @return string
*/
public function getTagName()
{
return $this->tagName;
}
/**
* Définie le nom du tag
*
* @param string $tagName
* @return self
*/
public function setTagName( $tagName )
{
$this->tagName = $tagName;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setTagName((string)$node['tagName']);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
return array(
'tagName' => $this->getTagName(),
);
}
}
\ No newline at end of file
......@@ -12,7 +12,6 @@ use SimpleXMLElement;
class Address extends Test
{
/**
* Adresse mail
*
......@@ -35,7 +34,7 @@ class Address extends Test
protected $stringComparison;
/**
*
* Nom du champ à tester
*
* @var string
*/
......
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test addressbook pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class AddressBook extends Test
{
/**
* Nom du champ à tester
*
* @var string
*/
protected $header;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le nom du champ à tester
*
* @return string
*/
public function getHeader()
{
return $this->header;
}
/**
* Modifie le nom du champ à tester
*
* @param string $value
* @return self
*/
public function setHeader( $header )
{
$this->header = $header;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setHeader((string)$node['header']);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'header' => $this->header,
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test pièce jointe pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Attachment extends Test
{
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array();
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test body pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Body extends Test
{
/**
* Valeur du test
*
* @var string
*/
protected $value;
/**
* Si le test est sensible à la casse ou non
*
* @var boolean
*/
protected $caseSensitive;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne la valeur à tester
*
* @return string
*/
public function getValue()
{
return $this->value;
}
/**
* Modifie la valeur à tester
*
* @param string $value
* @return self
*/
public function setValue( $value )
{
$this->value = $value;
return $this;
}
/**
* Retourne le nom du champ à tester
*
* @return boolean
*/
public function getCaseSensitive()
{
return $this->caseSensitive;
}
/**
* Modifie la sensibilité à la casse du test
*
* @param string $caseSensitive
* @return self
*/
public function setCaseSensitive( $caseSensitive )
{
$this->caseSensitive = $caseSensitive;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setValue((string)$node['value']);
if (isset($node['caseSensitive'])) $this->setCaseSensitive((integer)$node['caseSensitive'] == 1);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'value' => $this->value,
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
if (! empty($this->caseSensitive)) $result['caseSensitive'] = $this->caseSensitive;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
if (isset($result['caseSensitive'])) $result['caseSensitive'] = $result['caseSensitive'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test contact ranking pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class ContactRanking extends Test
{
/**
* Nom du champ à tester
*
* @var string
*/
protected $header;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le nom du champ à tester
*
* @return string
*/
public function getHeader()
{
return $this->header;
}
/**
* Modifie le nom du champ à tester
*
* @param string $value
* @return self
*/
public function setHeader( $header )
{
$this->header = $header;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setHeader((string)$node['header']);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'header' => $this->header,
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test flag pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Flagged extends Test
{
/**
* Nom du flag
*
* @var string
*/
protected $flagName;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le nom du flag
*
* @return string
*/
public function getFlagName()
{
return $this->flagName;
}
/**
* Définie le nom du flag
*
* @param string $flagName
* @return self
*/
public function setFlagName( $flagName )
{
$this->flagName = $flagName;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setFlagName((string)$node['flagName']);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'flagName' => $this->getFlagName(),
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
/**
* Test d'adresse pour filtre Zimbra
* Test header pour filtre Zimbra
*
* @author Laurent LECLUSE <laurent.lecluse at unicaen.fr>
*/
......
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test si le header existe pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class HeaderExists extends Test
{
/**
* Nom du champ à tester
*
* @var string
*/
protected $header;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le nom du champ à tester
*
* @return string
*/
public function getHeader()
{
return $this->header;
}
/**
* Modifie le nom du champ à tester
*
* @param string $value
* @return self
*/
public function setHeader( $header )
{
$this->header = $header;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setHeader((string)$node['header']);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'header' => $this->header,
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
<?php
namespace UnicaenZimbra\Entity\Filter\Test;
use SimpleXMLElement;
/**
* @version $Id$
*
* Test mon adresse mail pour filtre Zimbra
*
* @author David Surville <david.surville at unicaen.fr>
*/
class Me extends Test
{
/**
* Nom du champ à tester
*
* @var string
*/
protected $header;
/**
* Si le test doit être négatif ou non
*
* @var boolean
*/
protected $negative;
/**
* Retourne le nom du champ à tester
*
* @return string
*/
public function getHeader()
{
return $this->header;
}
/**
* Modifie le nom du champ à tester
*
* @param string $value
* @return self
*/
public function setHeader( $header )
{
$this->header = $header;
return $this;
}
/**
* Retourne le sens du test
*
* @return boolean
*/
public function getNegative()
{
return $this->negative;
}
/**
* Modifie le sens du test
*
* @param string $negative
* @return self
*/
public function setNegative( $negative )
{
$this->negative = $negative;
return $this;
}
/**
*
* @param SimpleXMLElement $node
* @return self
*/
protected function populate( SimpleXMLElement $node )
{
$this->setHeader((string)$node['header']);
if (isset($node['negative'])) $this->setNegative((integer)$node['negative'] == 1);
return $this;
}
/**
* Retourne la liste des propriétés de l'objet sous forme de tableau associatif
*
* @return array
*/
public function getArrayCopy()
{
$result = array(
'header' => $this->header,
);
if (! empty($this->negative)) $result['negative'] = $this->negative;
return $result;
}
/**
* Retourne la liste des changements intervenus
*
* Les changements n'étant pas logués, toutes les données sont retournées
*
* @return array
*/
public function getConvertedChanges(){
$result = parent::getConvertedChanges();
if (isset($result['negative'])) $result['negative'] = $result['negative'] ? 1 : 0;
return $result;
}
}
\ No newline at end of file
......@@ -154,12 +154,14 @@ class BoiteGenerique extends Processus
$distribListService->addMembers($distribList, $mail);
// Répertoires
$folderService->rename($folderService->get($afName.' | Réception'), $afNewName.' | Réception');
$folderService->rename($folderService->get($afName.' | Envoi'), $afNewName.' | Envoi');
$inputFolder = $folderService->rename($folderService->get($afName.' | Réception'), $afNewName.' | Réception');
$sentFolder = $folderService->rename($folderService->get($afName.' | Envoi'), $afNewName.' | Envoi');
// Filtre entrant
$filter = $filterService->getInput()[$afName.' | Réception'];
$filter->setName($afNewName.' | Réception');
$filter = new Filter;
// $filter = $filterService->getInput()[$afName.' | Réception'];
$filter->setName($afNewName.' | Réception')
->setCondition($filter::CONDITION_ANYOF);
$test1 = new FilterTestAddress();
$test1->setHeader('to,cc')->setStringComparison('contains')->setPart('all')
->setValue($newName);
......@@ -168,6 +170,11 @@ class BoiteGenerique extends Processus
->setValue($newName);
$filter->setTests(array($test1, $test2));
$action = new FilterActionFileInto;
$action->setFolderPath( $afNewName.' | Réception' );
$filter->addAction($action);
$filter->addAction( new FilterActionKeep );
$filterService->deleteInput($afName.' | Réception');
$filterService->createInput($filter);
......@@ -245,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);
......@@ -269,20 +277,24 @@ class BoiteGenerique extends Processus
// Filtre d'envoi
$filter = new Filter;
$filter->setName($afName.' | Envoi');
$test = new FilterTestAddress;
$test->setHeader('from')->setStringComparison('contains')->setPart('all')
$filter->setName($afName.' | Envoi')
->setCondition($filter::CONDITION_ANYOF);
$test1 = new FilterTestAddress;
$test1->setHeader('from')->setStringComparison('contains')->setPart('all')
->setValue($adresseFonctionnelle);
$test2 = new FilterTestHeader();
$test2->setHeader('Reply-To')->setStringComparison('contains')
->setValue($adresseFonctionnelle);
$filter->addTest($test);
$filter->setTests(array($test1, $test2));
$action = new FilterActionFileInto;
$action->setFolderPath( $afName.' | Envoi' );
$action->setFolderPath( $sentFolder->absFolderPath );
$filter->addAction($action);
$filterService->createOutput($filter);
// ACE
$ace = new Right;
$ace->setTarget($distribListService->get($adresseFonctionnelle))
$ace->setTarget($dlAccount)
->setGrantee($userAccount)
->setRightByRightName('sendAsDistList');
$rightService->grantRight($ace);
......@@ -323,7 +335,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);
......@@ -343,7 +356,7 @@ class BoiteGenerique extends Processus
// ACE
$ace = new Right;
$ace->setTarget($distribListService->get($adresseFonctionnelle))
$ace->setTarget($dlAccount)
->setGrantee($userAccount)
->setRightByRightName('sendAsDistList');
$rightService->revokeRight($ace);
......@@ -380,17 +393,22 @@ class BoiteGenerique extends Processus
$identityService->setAccount($userAccount);
// Répertoires
$folderService->rename($folderService->get($afName.' | Réception'), $afNewName.' | Réception');
$folderService->rename($folderService->get($afName.' | Envoi'), $afNewName.' | Envoi');
$inputFolder = $folderService->rename($inputFolder = $folderService->get($afName.' | Réception'), $afNewName.' | Réception');
$sentFolder = $folderService->rename($sentFolder = $folderService->get($afName.' | Envoi'), $afNewName.' | Envoi');
// Filtre sortant
$filter = $filterService->getOutput()[$afName.' | Envoi'];
$filter = new Filter;
// $filter = $filterService->getOutput()[$afName.' | Envoi'];
$filter->setName($afNewName.' | Envoi');
$test = new FilterTestAddress();
$test->setHeader('from')->setStringComparison('contains')->setPart('all')
->setValue($newName);
$filter->setTests(array($test));
$action = new FilterActionFileInto;
$action->setFolderPath( $afNewName.' | Envoi' );
$filter->addAction($action);
$filterService->deleteOutput($afName.' | Envoi');
$filterService->createOutput($filter);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment