]> git.andy128k.dev Git - ipf.git/commitdiff
auth admin: allow to override definition of extra fields
authorAndrey Kutejko <andy128k@gmail.com>
Mon, 6 Apr 2015 17:30:24 +0000 (20:30 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Mon, 6 Apr 2015 17:36:05 +0000 (20:36 +0300)
ipf/auth/admin.php
ipf/auth/models.php

index 9a6df250822f7d2d6153ac55d78118a5a68f9ccc..380dc4660802c28ae9aa5ed66a974a2bc928012a 100644 (file)
@@ -75,19 +75,6 @@ class UserForm extends \IPF_ObjectForm
             'help_text'   => __('Designates that this user has all permissions without explicitly assigning them.'),
         ));
 
-        $r = new \ReflectionClass(\PFF\Container::auth()->userModel);
-        $extra_fields = array();
-        foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC) as $p) {
-            $name = $p->getName();
-            if (in_array($name, array('id', 'username', 'password', 'email', 'is_active', 'is_staff', 'is_superuser', 'last_login')) || $name[0] === '_')
-                continue;
-
-            $this->fields[$name] = new \IPF_Form_Field_Varchar(array(
-                'label' => \IPF_Utils::humanTitle($name),
-            ));
-            $extra_fields[] = $name;
-        }
-
         $permissions = array('is_active', 'is_staff', 'is_superuser');
         if (\PFF\Container::auth()->arePermissionsEnabled()) {
             $permissions[] = 'permissions';
@@ -114,8 +101,10 @@ class UserForm extends \IPF_ObjectForm
             array('fields' => $permissions, 'label' => __('Permissions')),
         );
 
+        $extra_fields = call_user_func(array(\PFF\Container::auth()->userModel, 'adminExtraFields'));
         if ($extra_fields) {
-            $this->field_groups[] = array('fields' => $extra_fields, 'label' => __('Extra'));
+            $this->fields = array_merge($this->fields, $extra_fields);
+            $this->field_groups[] = array('fields' => array_keys($extra_fields), 'label' => __('Extra'));
         }
     }
 
index e0bc15cbc08bff1d6e53ecc7336415fa61b11650..4346e35532e2facd7d2f8ff9f7333347eca0d908 100644 (file)
@@ -141,6 +141,24 @@ class User extends DBObject
             ->where(implode(' OR ', $cond), $params)
             ->fetchColumn() == count($params);
     }
+
+    /* admin */
+
+    public static function adminExtraFields()
+    {
+        $r = new \ReflectionClass(get_called_class());
+        $extra_fields = array();
+        foreach ($r->getProperties(\ReflectionProperty::IS_PUBLIC) as $p) {
+            $name = $p->getName();
+            if (in_array($name, array('id', 'username', 'password', 'email', 'is_active', 'is_staff', 'is_superuser', 'last_login')) || $name[0] === '_')
+                continue;
+
+            $extra_fields[$name] = new \IPF_Form_Field_Varchar(array(
+                'label' => \IPF_Utils::humanTitle($name),
+            ));
+        }
+        return $extra_fields;
+    }
 }
 
 class Role extends DBObject