From f540a6269e724cdf318934da13c2d8abd90c276e Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Jacob?= Date: Mon, 30 Apr 2012 19:33:44 +0200 Subject: [PATCH] Adds search on AX mail addresses. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Jacob --- ChangeLog | 1 + classes/userfilter/conditions.inc.php | 6 +++++- include/ufbuilder.inc.php | 30 ++++++++++++++++++++++-------- templates/search/adv.form.tpl | 10 ++++++++++ 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4e9d106..ce7d37a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23,6 +23,7 @@ Bug/Wish: * Search: - #1572: Removes remaining results count from queries -JAC - #1574: Correctly displays State corps -GLN + - Adds search on AX mail addresses -JAC * Validations: - #1571: Fixes the opening of the comments panel -GLN diff --git a/classes/userfilter/conditions.inc.php b/classes/userfilter/conditions.inc.php index a3faa35..0d639ee 100644 --- a/classes/userfilter/conditions.inc.php +++ b/classes/userfilter/conditions.inc.php @@ -1028,14 +1028,16 @@ abstract class UFC_Address extends UserFilterCondition /** Flags for addresses */ + const FLAG_NONE = 0x0000; const FLAG_CURRENT = 0x0001; const FLAG_TEMP = 0x0002; const FLAG_SECOND = 0x0004; const FLAG_MAIL = 0x0008; const FLAG_CEDEX = 0x0010; + const FLAG_AX_MAIL = 0x0020; // Binary OR of those flags - const FLAG_ANY = 0x001F; + const FLAG_ANY = 0x003F; /** Text of these flags */ @@ -1045,6 +1047,7 @@ abstract class UFC_Address extends UserFilterCondition self::FLAG_SECOND => 'secondary', self::FLAG_MAIL => 'mail', self::FLAG_CEDEX => 'cedex', + self::FLAG_AX_MAIL => 'ax_mail', ); protected $flags; @@ -1104,6 +1107,7 @@ class UFC_AddressComponent extends UFC_Address Platal::page()->killError('Invalid address field type: ' . $this->fieldtype); } + $flags = 0x20; parent::__construct($type, $flags); if (!is_array($val)) { $val = array($val); diff --git a/include/ufbuilder.inc.php b/include/ufbuilder.inc.php index 5785ea7..d5123a9 100644 --- a/include/ufbuilder.inc.php +++ b/include/ufbuilder.inc.php @@ -1071,19 +1071,26 @@ class UFBF_Dead extends UFBF_Enum class UFBF_AddressMixed extends UFBF_Mixed { protected $onlycurrentfield; + protected $onlyaxmailfield; - public function __construct($envfieldtext, $envfieldindex, $formtext = '', $addressfield, $onlycurrentfield = 'only_current') + public function __construct($envfieldtext, $envfieldindex, $formtext = '', $addressfield, $onlycurrentfield = 'only_current', $onlyaxmailfield = 'only_ax_mail') { parent::__construct($envfieldtext, $envfieldindex, $formtext); $this->onlycurrentfield = $onlycurrentfield; + $this->onlyaxmailfield = $onlyaxmailfield; $this->direnum = constant('DirEnum::' . $addressfield); } protected function buildUFC(UserFilterBuilder $ufb) { + $flags = UFC_Address::FLAG_NONE; if ($ufb->isOn($this->onlycurrentfield)) { - $flags = UFC_Address::FLAG_CURRENT; - } else { + $flags |= UFC_Address::FLAG_CURRENT; + } + if ($ufb->isOn($this->onlyaxmailfield)) { + $flags |= UFC_Address::FLAG_AX_MAIL; + } + if ($flags == UFC_Address::FLAG_NONE) { $flags = UFC_Address::FLAG_ANY; } @@ -1092,7 +1099,7 @@ class UFBF_AddressMixed extends UFBF_Mixed public function getEnvFieldNames() { - return array($this->envfield, $this->envfieldindex, $this->onlycurrentfield); + return array($this->envfield, $this->envfieldindex, $this->onlycurrentfield, $this->onlyaxmailfield); } } // }}} @@ -1102,20 +1109,27 @@ class UFBF_AddressIndex extends UFBF_Index { protected $direnum; protected $onlycurrentfield; + protected $onlyaxmailfield; - public function __construct($envfield, $formtext = '', $addressfield, $onlycurrentfield = 'only_current') + public function __construct($envfield, $formtext = '', $addressfield, $onlycurrentfield = 'only_current', $onlyaxmailfield = 'only_ax_mail') { parent::__construct($envfield, $formtext); $this->onlycurrentfield = $onlycurrentfield; + $this->onlyaxmailfield = $onlyaxmailfield; $this->direnum = constant('DirEnum::' . $addressfield); } protected function buildUFC(UserFilterBuilder $ufb) { + $flags = UFC_Address::FLAG_NONE; if ($ufb->isOn($this->onlycurrentfield)) { - $flags = UFC_Address::FLAG_CURRENT; - } else { + $flags |= UFC_Address::FLAG_CURRENT; + } + if ($ufb->isOn($this->onlyaxmailfield)) { + $flags |= UFC_Address::FLAG_AX_MAIL; + } + if ($flags == UFC_Address::FLAG_NONE) { $flags = UFC_Address::FLAG_ANY; } @@ -1124,7 +1138,7 @@ class UFBF_AddressIndex extends UFBF_Index public function getEnvFieldNames() { - return array($this->envfield, $this->onlycurrentfield); + return array($this->envfield, $this->onlycurrentfield, $this->onlyaxmailfield); } } // }}} diff --git a/templates/search/adv.form.tpl b/templates/search/adv.form.tpl index 57c4d1f..6610336 100644 --- a/templates/search/adv.form.tpl +++ b/templates/search/adv.form.tpl @@ -165,6 +165,16 @@ + {if hasPerm('admin,edit_directory')} + + + + + + {/if} Activité -- 2.1.4