Change sorting order on ML display to use sort_name.
[platal.git] / classes / user.php
index 10e131c..eb91985 100644 (file)
@@ -24,6 +24,7 @@ class User extends PlUser
     const PERM_API_USER_READONLY = 'api_user_readonly';
     const PERM_DIRECTORY_AX      = 'directory_ax';
     const PERM_DIRECTORY_PRIVATE = 'directory_private';
+    const PERM_DIRECTORY_HIDDEN  = 'directory_hidden';
     const PERM_EDIT_DIRECTORY    = 'edit_directory';
     const PERM_FORUMS            = 'forums';
     const PERM_GROUPS            = 'groups';
@@ -164,7 +165,7 @@ class User extends PlUser
                                       IF(ef.email IS NULL, NULL, CONCAT(ef.email, \'@\', df.name)) AS forlife_alternate,
                                       IF(eb.email IS NULL, NULL, CONCAT(eb.email, \'@\', mb.name)) AS bestalias,
                                       (er.redirect IS NULL AND a.state = \'active\' AND FIND_IN_SET(\'mail\', at.perms)) AS lost,
-                                      a.email, a.full_name, a.directory_name, a.display_name, a.sex = \'female\' AS gender,
+                                      a.email, a.full_name, a.directory_name, a.display_name, a.sort_name, a.sex = \'female\' AS gender,
                                       IF(a.state = \'active\', CONCAT(at.perms, \',\', IF(a.user_perms IS NULL, \'\', a.user_perms)), \'\') AS perms,
                                       a.user_perms, a.email_format, a.is_admin, a.state, a.type, at.description AS type_description, a.skin,
                                       FIND_IN_SET(\'watch\', a.flags) AS watch, a.comment,
@@ -230,14 +231,14 @@ class User extends PlUser
      *
      * Rules are:
      *  - Everyone can view 'public'
-     *  - directory_ax gives access to 'AX' level
+     *  - directory_ax gives access to 'AX' level, ie. the printed directory
      *  - directory_private gives access to 'private' level
-     *  - admin gives access to 'hidden' level
+     *  - admin and directory_hidden gives access to 'hidden' level
      */
     public function readVisibility()
     {
         $level = Visibility::VIEW_NONE;
-        if ($this->is_admin) {
+        if ($this->is_admin || $this->checkPerms('directory_hidden')) {
             $level = Visibility::VIEW_ADMIN;
         } elseif ($this->checkPerms('directory_private')) {
             $level = Visibility::VIEW_PRIVATE;
@@ -351,6 +352,14 @@ class User extends PlUser
         return $this->profile()->directory_name;
     }
 
+    public function sortName()
+    {
+        if (!$this->hasProfile()) {
+            return $this->sort_name;
+        }
+        return $this->profile()->sort_name;
+    }
+
     static public function compareDirectoryName($a, $b)
     {
         return strcasecmp(replace_accent($a->directoryName()), replace_accent($b->directoryName()));