Je laisse ce message pour ne pas perdre mes observations.
Il y a plus de page parce que le module utilise le nombre de groupe user pour calculer le nombre de page plutôt que le nombre de membres, et comme j'ai supprimé un certan nombre de membre dans la base de donné il y a des entré orphelines dans la table
fsb2_groups_users.
Toutefois, quand je classe les membres par date d'inscription décroissant les première pge sont, et en remettant un partie du code il était avant je n'au plus ce problème (les pages vides reste les dernières).
Remplacer ça :
$sql = 'SELECT gu.u_id
FROM ' . SQL_PREFIX . 'groups_users gu
LEFT JOIN ' . SQL_PREFIX . 'users u
ON gu.u_id = u.u_id
WHERE gu.g_id = ' . $this->id
. ((!$this->is_group_moderator) ? ' AND (gu.gu_status <> ' . GROUP_WAIT . ' OR gu.u_id = ' . Fsb::$session->id() . ')' : '')
. $sql_search_user
. ' ORDER BY ' . Fsb::$db->escape($this->order) . ' ' . Fsb::$db->escape($this->direction) . ', gu.gu_status DESC
LIMIT ' . ($this->page - 1) * $this->limit . ', ' . $this->limit;
$result = Fsb::$db->query($sql);
$idx = array();
while ($row = Fsb::$db->row($result))
{
$idx[] = $row['u_id'];
}
Fsb::$db->free($result);
if (!$idx)
{
return ;
}
$sql = 'SELECT gu.gu_status, g.g_id, g.g_name, g.g_color, g.g_type, u.u_id, u.u_nickname, u.u_color, u.u_avatar, u.u_avatar_method, u.u_can_use_avatar, u.u_sexe, u.u_birthday, u.u_activate_hidden, u.u_last_visit, u.' . implode(', u.', array_keys($this->columns)) . '
FROM ' . SQL_PREFIX . 'groups_users gu
INNER JOIN ' . SQL_PREFIX . 'users u
ON gu.u_id = u.u_id
LEFT JOIN ' . SQL_PREFIX . 'groups g
ON g.g_id = u.u_default_group_id
WHERE gu.g_id = ' . $this->id . '
AND gu.u_id IN (' . implode(', ', $idx) . ')
ORDER BY ' . Fsb::$db->escape($this->order) . ' ' . Fsb::$db->escape($this->direction) . ', gu.gu_status DESC';
$i = 1;
Par ça :
$sql = 'SELECT gu.gu_status, g.g_id, g.g_name, g.g_color, g.g_type, u.u_id, u.u_nickname, u.u_color, u.u_avatar, u.u_avatar_method, u.u_can_use_avatar, u.u_sexe, u.u_birthday, u.u_activate_hidden, u.u_last_visit, u.' . implode(', u.', array_keys($this->columns)) . '
FROM ' . SQL_PREFIX . 'groups_users gu
INNER JOIN ' . SQL_PREFIX . 'users u
ON gu.u_id = u.u_id
LEFT JOIN ' . SQL_PREFIX . 'groups g
ON g.g_id = u.u_default_group_id
WHERE gu.g_id = ' . $this->id
. ((!$this->is_group_moderator) ? ' AND (gu.gu_status <> ' . GROUP_WAIT . ' OR gu.u_id = ' . Fsb::$session->id() . ')' : '')
. $sql_search_user
. ' ORDER BY gu.gu_status, ' . Fsb::$db->escape($this->order) . ' ' . Fsb::$db->escape($this->direction) . ', gu.gu_status DESC
LIMIT ' . ($this->page - 1) * $this->limit . ', ' . $this->limit;
$i = 1;