login/list: hide unvisited if ordered by seen
[minimedit.git] / login / list.php
index cae89f078dab62f64013ec89738428004e46629e..edf9ee63273a2f76a174e2c1140aaa7e35bafc69 100644 (file)
@@ -8,14 +8,28 @@ foreach ($users as $col => $userdir) {
        $users[$col] = new User($userdir);
 }
 
+if (@$Place['order'] == 'seen') {
+       $order = array_map(function ($col) { return $col->seen; }, $users);
+#      $order = array_column($users, 'seen');  #TODO php7 simplification
+       array_multisort($order, SORT_DESC, SORT_NUMERIC, $users);
+       $users = array_intersect_key($users, array_filter($order));
+}
+
+if (isset($Place['n'])) {
+       array_splice($users, $Place['n']);  # limit number of results
+}
+
 print '<ul';
 if (@$Place['view'] == 'avatar') {
        print ' class="gallery cat"';
 }
+elseif (count($users) > 5) {
+       print ' class="cols"';
+}
 print ">\n";
 
 foreach ($users as $user) {
-       $name = $user->name ?: ucfirst($user->login);
+       $name = $user->name ?: $user->login;
        if (!empty($GLOBALS['User']['admin'])) {
                $link = '/login/edit/'.$user->login;
                $name = sprintf('<a href="%s">%s</a>', $link, $name);
@@ -36,13 +50,18 @@ foreach ($users as $user) {
                        $avatar, $name
                );
                break;
+       case 'visit':
+               if ($user->seen) {
+                       $name .= sprintf(' <small class="date">%s</small>', strftime('%F %H:%M', $user->seen));
+               }
+               # continue to default
        default:
                if ($user->admin) {
                        $name .= ' <em>(beheerder)</em>';
                }
        }
 
-       print '<li>'.$name;
+       print "<li>$name</li>\n";
 }
 
-print '</ul>';
+print "</ul>\n\n";