]> git.agnieray.net Git - galette.git/blobdiff - galette/lib/Galette/Filters/MembersList.php
Do not override members list filters on member display or edit; closes #1803
[galette.git] / galette / lib / Galette / Filters / MembersList.php
index 3b02ee453733bf00ea6cdfa9fef23d707a324ae4..b95759dfd2ba1e09cc1639b610434dde18809dd0 100644 (file)
@@ -7,7 +7,7 @@
  *
  * PHP version 5
  *
- * Copyright © 2009-2014 The Galette Team
+ * Copyright © 2009-2023 The Galette Team
  *
  * This file is part of Galette (http://galette.tuxfamily.org).
  *
@@ -28,9 +28,8 @@
  * @package   Galette
  *
  * @author    Johan Cwiklinski <johan@x-tnd.be>
- * @copyright 2009-2014 The Galette Team
+ * @copyright 2009-2023 The Galette Team
  * @license   http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
- * @version   SVN: $Id$
  * @link      http://galette.tuxfamily.org
  * @since     march, 3rd 2009
  */
@@ -39,6 +38,7 @@ namespace Galette\Filters;
 
 use Analog\Analog;
 use Galette\Core\Pagination;
+use Galette\Core\Preferences;
 use Galette\Entity\Group;
 use Galette\Repository\Members;
 
@@ -50,9 +50,19 @@ use Galette\Repository\Members;
  * @package   Galette
  *
  * @author    Johan Cwiklinski <johan@x-tnd.be>
- * @copyright 2009-2014 The Galette Team
+ * @copyright 2009-2023 The Galette Team
  * @license   http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
  * @link      http://galette.tuxfamily.org
+ *
+ * @property string $filter_str
+ * @property integer $field_filter
+ * @property integer $membership_filter
+ * @property integer $filter_account
+ * @property integer $email_filter
+ * @property integer $group_filter
+ * @property array $selected
+ * @property array $unreachable
+ * @property string $query
  */
 
 class MembersList extends Pagination
@@ -61,7 +71,7 @@ class MembersList extends Pagination
     private $_filter_str;
     private $_field_filter;
     private $_membership_filter;
-    private $_account_status_filter;
+    private $_filter_account;
     private $_email_filter;
     private $_group_filter;
 
@@ -74,7 +84,7 @@ class MembersList extends Pagination
         'filter_str',
         'field_filter',
         'membership_filter',
-        'account_status_filter',
+        'filter_account',
         'email_filter',
         'group_filter',
         'selected',
@@ -93,7 +103,7 @@ class MembersList extends Pagination
     /**
      * Returns the field we want to default set order to
      *
-     * @return string field name
+     * @return int|string
      */
     protected function getDefaultOrder()
     {
@@ -107,11 +117,13 @@ class MembersList extends Pagination
      */
     public function reinit()
     {
+        global $preferences;
+
         parent::reinit();
         $this->_filter_str = null;
         $this->_field_filter = null;
         $this->_membership_filter = null;
-        $this->_account_status_filter = null;
+        $this->_filter_account = $preferences->pref_filter_account;
         $this->_email_filter = Members::FILTER_DC_EMAIL;
         $this->_group_filter = null;
         $this->_selected = array();
@@ -120,18 +132,12 @@ class MembersList extends Pagination
     /**
      * Global getter method
      *
-     * @param string $name name of the property we want to retrive
+     * @param string $name name of the property we want to retrieve
      *
-     * @return object the called property
+     * @return mixed the called property
      */
     public function __get($name)
     {
-
-        Analog::log(
-            '[MembersList] Getting property `' . $name . '`',
-            Analog::DEBUG
-        );
-
         if (in_array($name, $this->pagination_fields)) {
             return parent::__get($name);
         } else {
@@ -144,18 +150,37 @@ class MembersList extends Pagination
                 }
             } else {
                 Analog::log(
-                    '[MembersList] Unable to get proprety `' .$name . '`',
+                    '[MembersList] Unable to get property `' . $name . '`',
                     Analog::WARNING
                 );
             }
         }
     }
 
+    /**
+     * Global isset method
+     * Required for twig to access properties via __get
+     *
+     * @param string $name name of the property we want to retrieve
+     *
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        if (in_array($name, $this->pagination_fields)) {
+            return true;
+        } elseif (in_array($name, $this->memberslist_fields)) {
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * Global setter method
      *
      * @param string $name  name of the property we want to assign a value to
-     * @param object $value a relevant value for the property
+     * @param mixed  $value a relevant value for the property
      *
      * @return void
      */
@@ -189,7 +214,7 @@ class MembersList extends Pagination
                     break;
                 case 'field_filter':
                 case 'membership_filter':
-                case 'account_status_filter':
+                case 'filter_account':
                     if (is_numeric($value)) {
                         $name = '_' . $name;
                         $this->$name = $value;
@@ -235,7 +260,7 @@ class MembersList extends Pagination
                     } elseif ($value !== null && $value !== '0') {
                         Analog::log(
                             '[MembersList] Value for group filter should be an '
-                            .'integer (' . gettype($value) . ' given)',
+                            . 'integer (' . gettype($value) . ' given)',
                             Analog::WARNING
                         );
                     }
@@ -245,7 +270,7 @@ class MembersList extends Pagination
                     break;
                 default:
                     Analog::log(
-                        '[MembersList] Unable to set proprety `' . $name . '`',
+                        '[MembersList] Unable to set property `' . $name . '`',
                         Analog::WARNING
                     );
                     break;
@@ -257,14 +282,15 @@ class MembersList extends Pagination
      * Set commons filters for templates
      *
      * @param Preferences $prefs Preferences instance
-     * @param Smarty      $view  Smarty template reference
+     * @param mixed       $view  Template reference
      *
      * @return void
      */
-    public function setViewCommonsFilters($prefs, \Smarty $view)
+    public function setViewCommonsFilters(Preferences $prefs, $view)
     {
         $filter_options = array(
             Members::FILTER_NAME            => _T("Name"),
+            Members::FILTER_NUMBER          => _T("Member number"),
             Members::FILTER_COMPANY_NAME    => _T("Company name"),
             Members::FILTER_ADDRESS         => _T("Address"),
             Members::FILTER_MAIL            => _T("Email,URL,IM"),
@@ -273,16 +299,16 @@ class MembersList extends Pagination
         );
 
         if ($prefs->pref_show_id) {
-            $filter_options[Members::FILTER_NUMBER] = _T("Member number");
+            $filter_options[Members::FILTER_ID] = _T("Member ID");
         }
 
-        $view->assign(
-            'filter_field_options',
+        $view->getEnvironment()->addGlobal(
+            'field_filter_options',
             $filter_options
         );
 
-        $view->assign(
-            'filter_membership_options',
+        $view->getEnvironment()->addGlobal(
+            'membership_filter_options',
             array(
                 Members::MEMBERSHIP_ALL     => _T("All members"),
                 Members::MEMBERSHIP_UP2DATE => _T("Up to date members"),
@@ -295,7 +321,7 @@ class MembersList extends Pagination
             )
         );
 
-        $view->assign(
+        $view->getEnvironment()->addGlobal(
             'filter_accounts_options',
             array(
                 Members::ALL_ACCOUNTS       => _T("All accounts"),