mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 14:00:31 +02:00
- acm_file uses an index pointer to the current row instead of shifting the result array now [Bug #2451]
- all dbals adjusted to use the cache in sql_fetchfield, sql_rowseek, sql_numrows and sql_freeresult [Bug #2451] - use include_once for dbal.php to at least theoretically allow connections to multiple databases at once - added a space to an SQL query [Bug #3506] - detailed information on adding friends/foes [Bugs #2509, #2499] - e modifier stands for evil, so I removed it ;-) - corrected progress_bar image filename in imageset.cfg [Bug #3374] git-svn-id: file:///svn/phpbb/trunk@6225 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
@@ -23,9 +23,12 @@ class ucp_zebra
|
||||
$submit = (isset($_POST['submit']) || isset($_GET['add'])) ? true : false;
|
||||
$s_hidden_fields = '';
|
||||
|
||||
$l_mode = strtoupper($mode);
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
$data = $error = array();
|
||||
$updated = false;
|
||||
|
||||
$var_ary = array(
|
||||
'usernames' => array(0),
|
||||
@@ -37,15 +40,9 @@ class ucp_zebra
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'add' => array('string', false)
|
||||
);
|
||||
|
||||
$error = validate_data($data, $var_ary);
|
||||
|
||||
if ($data['add'] && !sizeof($error))
|
||||
if ($data['add'])
|
||||
{
|
||||
$data['add'] = array_map('strtolower', explode("\n", $data['add']));
|
||||
$data['add'] = array_map('trim', array_map('strtolower', explode("\n", $data['add'])));
|
||||
|
||||
// Do these name/s exist on a list already? If so, ignore ... we could be
|
||||
// 'nice' and automatically handle names added to one list present on
|
||||
@@ -71,26 +68,56 @@ class ucp_zebra
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$data['add'] = array_diff($data['add'], $friends, $foes, array(strtolower($user->data['username'])));
|
||||
unset($friends, $foes);
|
||||
// remove friends from the username array
|
||||
$n = sizeof($data['add']);
|
||||
$data['add'] = array_diff($data['add'], $friends);
|
||||
|
||||
$data['add'] = implode(', ', preg_replace('#^[\s]*?(.*?)[\s]*?$#e', "\"'\" . \$db->sql_escape('\\1') . \"'\"", $data['add']));
|
||||
if (sizeof($data['add']) < $n && $mode == 'foes')
|
||||
{
|
||||
$error[] = $user->lang['NOT_ADDED_FOES_FRIENDS'];
|
||||
}
|
||||
|
||||
// remove foes from the username array
|
||||
$n = sizeof($data['add']);
|
||||
$data['add'] = array_diff($data['add'], $foes);
|
||||
|
||||
if (sizeof($data['add']) < $n && $mode == 'friends')
|
||||
{
|
||||
$error[] = $user->lang['NOT_ADDED_FRIENDS_FOES'];
|
||||
}
|
||||
|
||||
// remove the user himself from the username array
|
||||
$n = sizeof($data['add']);
|
||||
$data['add'] = array_diff($data['add'], array(strtolower($user->data['username'])));
|
||||
|
||||
if (sizeof($data['add']) < $n)
|
||||
{
|
||||
$error[] = $user->lang['NOT_ADDED_' . $l_mode . '_SELF'];
|
||||
}
|
||||
|
||||
unset($friends, $foes, $n);
|
||||
|
||||
$data['add'] = implode(', ', preg_replace('#^(.*?)$#', "'$1'", array_map(array(&$db, 'sql_escape'), $data['add'])));
|
||||
|
||||
if ($data['add'])
|
||||
{
|
||||
$sql = 'SELECT user_id, user_type
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE LOWER(username) IN (' . $data['add'] . ')
|
||||
AND user_type NOT IN (' . USER_IGNORE . ', ' . USER_INACTIVE . ')';
|
||||
AND user_type <> ' . USER_INACTIVE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$user_id_ary = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['user_id'] != ANONYMOUS)
|
||||
if ($row['user_id'] != ANONYMOUS && $row['user_type'] != USER_IGNORE)
|
||||
{
|
||||
$user_id_ary[] = $row['user_id'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$error[] = $user->lang['NOT_ADDED_' . $l_mode . '_ANONYMOUS'];
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
@@ -110,6 +137,11 @@ class ucp_zebra
|
||||
|
||||
$perms = array_unique($perms);
|
||||
|
||||
if (sizeof($perms))
|
||||
{
|
||||
$error[] = $user->lang['NOT_ADDED_FOES_MOD_ADMIN'];
|
||||
}
|
||||
|
||||
// This may not be right ... it may yield true when perms equate to deny
|
||||
$user_id_ary = array_diff($user_id_ary, $perms);
|
||||
unset($perms);
|
||||
@@ -147,20 +179,18 @@ class ucp_zebra
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error[] = 'NOT_ADDED_' . strtoupper($mode);
|
||||
|
||||
$updated = true;
|
||||
}
|
||||
unset($user_id_ary);
|
||||
}
|
||||
else
|
||||
else if (!sizeof($error))
|
||||
{
|
||||
$error[] = 'USER_NOT_FOUND_OR_INACTIVE';
|
||||
$error[] = $user->lang['USER_NOT_FOUND_OR_INACTIVE'];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sizeof($data['usernames']) && !sizeof($error))
|
||||
else if (sizeof($data['usernames']))
|
||||
{
|
||||
// Force integer values
|
||||
$data['usernames'] = array_map('intval', $data['usernames']);
|
||||
@@ -171,15 +201,15 @@ class ucp_zebra
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
if ($updated)
|
||||
{
|
||||
meta_refresh(3, $this->u_action);
|
||||
$message = $user->lang[strtoupper($mode) . '_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
||||
$message = $user->lang[$l_mode . '_UPDATED'] . '<br />' . implode('<br />', $error) . ((sizeof($error)) ? '<br />' : '') . '<br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
else
|
||||
{
|
||||
$template->assign_var('ERROR', implode('<br />', preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error)));
|
||||
$template->assign_var('ERROR', implode('<br />', $error));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,7 +230,7 @@ class ucp_zebra
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'L_TITLE' => $user->lang['UCP_ZEBRA_' . strtoupper($mode)],
|
||||
'L_TITLE' => $user->lang['UCP_ZEBRA_' . $l_mode],
|
||||
|
||||
'U_SEARCH_USER' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=ucp&field=add'),
|
||||
|
||||
@@ -210,7 +240,7 @@ class ucp_zebra
|
||||
);
|
||||
|
||||
$this->tpl_name = 'ucp_zebra_' . $mode;
|
||||
$this->page_title = 'UCP_ZEBRA_' . strtoupper($mode);
|
||||
$this->page_title = 'UCP_ZEBRA_' . $l_mode;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user