Adds search on AX mail addresses.
authorStéphane Jacob <sj@m4x.org>
Mon, 30 Apr 2012 17:33:44 +0000 (19:33 +0200)
committerStéphane Jacob <sj@m4x.org>
Mon, 30 Apr 2012 17:34:38 +0000 (19:34 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
ChangeLog
classes/userfilter/conditions.inc.php
include/ufbuilder.inc.php
templates/search/adv.form.tpl

index 4e9d106..ce7d37a 100644 (file)
--- 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
index a3faa35..0d639ee 100644 (file)
@@ -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);
index 5785ea7..d5123a9 100644 (file)
@@ -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);
     }
 }
 // }}}
index 57c4d1f..6610336 100644 (file)
         </label>
       </td>
     </tr>
+    {if hasPerm('admin,edit_directory')}
+    <tr>
+      <td colspan="2">
+        <label for="only_ax_mail">
+          <input name="only_ax_mail" id="only_ax_mail" type="checkbox"{if $smarty.request.only_ax_mail} checked="checked"{/if}/>
+          Chercher uniquement parmi les adresses postales de l'AX.
+        </label>
+      </td>
+    </tr>
+    {/if}
     <tr>
       <th colspan="2">Activité</th>
     </tr>