S2B hat geschrieben:Edit: So wie es aussieht, müsstest du bei $users === false auch noch den aktuellen Benutzer überprüfen.
O.K. ich hab jetzt den Code unter "else" auch unter "if" verwendet. Also dies hier habe ich ersetzt
Code: Alles auswählen
if ($users === false)
{
$users = array($user->data['user_id']);
$user_row[$user->data['user_id']] = $user->data;
$check['posts'][$user->data['user_id']] = (int) $user->data['user_posts'];
$check['days'][$user->data['user_id']] = (int) max(1, round((time() - $user->data['user_regdate']) / 86400));
$check['warnings'][$user->data['user_id']] = (int) $user->data['user_warnings'];
}
else
{
// we need some info from the DB...to avoid possible SQL injection, we select *
$sql = 'SELECT * FROM ' . USERS_TABLE .
" WHERE " . $db->sql_in_set('user_id', $users) . " AND user_email LIKE '%@bestimmtedomain.de' ";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$user_row[$row['user_id']] = $row;
$check['posts'][$row['user_id']] = (int) $row['user_posts'];
$check['days'][$row['user_id']] = (int) max(1, round((time() - $row['user_regdate']) / 86400));
$check['warnings'][$row['user_id']] = (int) $row['user_warnings'];
}
}
mit dem hier:
Code: Alles auswählen
if ($users === false)
{
$sql = 'SELECT * FROM ' . USERS_TABLE .
" WHERE " . $db->sql_in_set('user_id', $users) . " AND user_email LIKE '%@bestimmtedomain.de' ";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$user_row[$row['user_id']] = $row;
$check['posts'][$row['user_id']] = (int) $row['user_posts'];
$check['days'][$row['user_id']] = (int) max(1, round((time() - $row['user_regdate']) / 86400));
$check['warnings'][$row['user_id']] = (int) $row['user_warnings'];
}
}
else
{
// we need some info from the DB...to avoid possible SQL injection, we select *
$sql = 'SELECT * FROM ' . USERS_TABLE .
" WHERE " . $db->sql_in_set('user_id', $users) . " AND user_email LIKE '%@bestimmtedomain.de' ";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$user_row[$row['user_id']] = $row;
$check['posts'][$row['user_id']] = (int) $row['user_posts'];
$check['days'][$row['user_id']] = (int) max(1, round((time() - $row['user_regdate']) / 86400));
$check['warnings'][$row['user_id']] = (int) $row['user_warnings'];
}
}
Jetzt habe ich einen SQL-Error:
Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM phpbb_groups WHERE group_type <> 3 AND ()' at line
Und die phpBB Debug Note sagt:
[phpBB Debug] PHP Notice: in file /includes/functions_autogroup.php on line 68: Invalid argument supplied for foreach()
Die foreach-Zeile kommt direkt nach dem geänderten Code, hier:
Code: Alles auswählen
// build SQL query...now using AND logic
$sql_select = $sql_or = '';
foreach ($check as $column => $value)
{
$sql_select .= "group_min_$column, group_max_$column, ";
$sql_or .= " group_min_$column <> 0 OR group_max_$column <> 0 OR ";
}