mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 22:28:51 +00:00
Merge remote-tracking branch 'remotes/nickv/ticket/9492' into develop
# By Joas Schilling # Via Joas Schilling * remotes/nickv/ticket/9492: [ticket/9492] Fix missing phpbb_container in unit tests [ticket/9492] Fix typo in SQL query [ticket/9492] Ensure to delete the avatar/rank data when we change it [ticket/9492] Ensure to update all avatar values when the avatar is changed [ticket/9492] Fix undefined user_avatar_* values when updating the group avatar [ticket/9492] Add unit tests for custom ranks and avatars [ticket/9492] Retain custom ranks and avatars when setting users default group
This commit is contained in:
commit
9314784f50
5 changed files with 341 additions and 35 deletions
|
@ -439,7 +439,7 @@ class acp_groups
|
||||||
|
|
||||||
foreach ($test_variables as $test => $type)
|
foreach ($test_variables as $test => $type)
|
||||||
{
|
{
|
||||||
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || in_array($test, $set_attributes)))
|
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || isset($group_attributes['group_avatar']) && strpos($test, 'avatar') === 0 || in_array($test, $set_attributes)))
|
||||||
{
|
{
|
||||||
settype($submit_ary[$test], $type);
|
settype($submit_ary[$test], $type);
|
||||||
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
||||||
|
|
|
@ -2698,12 +2698,12 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow
|
||||||
}
|
}
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
|
|
||||||
if (isset($sql_ary['group_avatar']) && !$sql_ary['group_avatar'])
|
if (isset($sql_ary['group_avatar']))
|
||||||
{
|
{
|
||||||
remove_default_avatar($group_id, $user_ary);
|
remove_default_avatar($group_id, $user_ary);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($sql_ary['group_rank']) && !$sql_ary['group_rank'])
|
if (isset($sql_ary['group_rank']))
|
||||||
{
|
{
|
||||||
remove_default_rank($group_id, $user_ary);
|
remove_default_rank($group_id, $user_ary);
|
||||||
}
|
}
|
||||||
|
@ -3208,8 +3208,8 @@ function remove_default_avatar($group_id, $user_ids)
|
||||||
user_avatar_width = 0,
|
user_avatar_width = 0,
|
||||||
user_avatar_height = 0
|
user_avatar_height = 0
|
||||||
WHERE group_id = " . (int) $group_id . "
|
WHERE group_id = " . (int) $group_id . "
|
||||||
AND user_avatar = '" . $db->sql_escape($row['group_avatar']) . "'
|
AND user_avatar = '" . $db->sql_escape($row['group_avatar']) . "'
|
||||||
AND " . $db->sql_in_set('user_id', $user_ids);
|
AND " . $db->sql_in_set('user_id', $user_ids);
|
||||||
|
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
|
@ -3246,9 +3246,9 @@ function remove_default_rank($group_id, $user_ids)
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
SET user_rank = 0
|
SET user_rank = 0
|
||||||
WHERE group_id = ' . (int)$group_id . '
|
WHERE group_id = ' . (int)$group_id . '
|
||||||
AND user_rank <> 0
|
AND user_rank <> 0
|
||||||
AND user_rank = ' . (int)$row['group_rank'] . '
|
AND user_rank = ' . (int)$row['group_rank'] . '
|
||||||
AND ' . $db->sql_in_set('user_id', $user_ids);
|
AND ' . $db->sql_in_set('user_id', $user_ids);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3277,7 +3277,8 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||||
case 'demote':
|
case 'demote':
|
||||||
case 'promote':
|
case 'promote':
|
||||||
|
|
||||||
$sql = 'SELECT user_id FROM ' . USER_GROUP_TABLE . "
|
$sql = 'SELECT user_id
|
||||||
|
FROM ' . USER_GROUP_TABLE . "
|
||||||
WHERE group_id = $group_id
|
WHERE group_id = $group_id
|
||||||
AND user_pending = 1
|
AND user_pending = 1
|
||||||
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
@ -3375,7 +3376,8 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
|
||||||
return 'NO_USERS';
|
return 'NO_USERS';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT user_id, group_id FROM ' . USERS_TABLE . '
|
$sql = 'SELECT user_id, group_id
|
||||||
|
FROM ' . USERS_TABLE . '
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary, false, true);
|
WHERE ' . $db->sql_in_set('user_id', $user_id_ary, false, true);
|
||||||
$result = $db->sql_query($sql);
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -3509,45 +3511,69 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Before we update the user attributes, we will make a list of those having now the group avatar assigned
|
$updated_sql_ary = $sql_ary;
|
||||||
|
|
||||||
|
// Before we update the user attributes, we will update the rank for users that don't have a custom rank
|
||||||
|
if (isset($sql_ary['user_rank']))
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', array('user_rank' => $sql_ary['user_rank'])) . '
|
||||||
|
WHERE user_rank = 0
|
||||||
|
AND ' . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
$db->sql_query($sql);
|
||||||
|
unset($sql_ary['user_rank']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Before we update the user attributes, we will update the avatar for users that don't have a custom avatar
|
||||||
|
$avatar_options = array('user_avatar', 'user_avatar_type', 'user_avatar_height', 'user_avatar_width');
|
||||||
|
|
||||||
if (isset($sql_ary['user_avatar']))
|
if (isset($sql_ary['user_avatar']))
|
||||||
{
|
{
|
||||||
// Ok, get the original avatar data from users having an uploaded one (we need to remove these from the filesystem)
|
$avatar_sql_ary = array();
|
||||||
$sql = 'SELECT user_id, group_id, user_avatar
|
foreach ($avatar_options as $avatar_option)
|
||||||
FROM ' . USERS_TABLE . '
|
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary) . '
|
|
||||||
AND user_avatar_type = ' . AVATAR_UPLOAD;
|
|
||||||
$result = $db->sql_query($sql);
|
|
||||||
|
|
||||||
while ($row = $db->sql_fetchrow($result))
|
|
||||||
{
|
{
|
||||||
avatar_delete('user', $row);
|
if (isset($sql_ary[$avatar_option]))
|
||||||
}
|
{
|
||||||
$db->sql_freeresult($result);
|
$avatar_sql_ary[$avatar_option] = $sql_ary[$avatar_option];
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
unset($sql_ary['user_avatar_type']);
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
unset($sql_ary['user_avatar_height']);
|
SET ' . $db->sql_build_array('UPDATE', $avatar_sql_ary) . "
|
||||||
unset($sql_ary['user_avatar_width']);
|
WHERE user_avatar = ''
|
||||||
|
AND " . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
$db->sql_query($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
// Remove the avatar options, as we already updated them
|
||||||
WHERE ' . $db->sql_in_set('user_id', $user_id_ary);
|
foreach ($avatar_options as $avatar_option)
|
||||||
$db->sql_query($sql);
|
{
|
||||||
|
unset($sql_ary[$avatar_option]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($sql_ary))
|
||||||
|
{
|
||||||
|
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
|
||||||
|
WHERE ' . $db->sql_in_set('user_id', $user_id_ary);
|
||||||
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($sql_ary['user_colour']))
|
if (isset($sql_ary['user_colour']))
|
||||||
{
|
{
|
||||||
// Update any cached colour information for these users
|
// Update any cached colour information for these users
|
||||||
$sql = 'UPDATE ' . FORUMS_TABLE . " SET forum_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||||
|
SET forum_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('forum_last_poster_id', $user_id_ary);
|
WHERE " . $db->sql_in_set('forum_last_poster_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_first_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . TOPICS_TABLE . "
|
||||||
|
SET topic_first_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('topic_poster', $user_id_ary);
|
WHERE " . $db->sql_in_set('topic_poster', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$sql = 'UPDATE ' . TOPICS_TABLE . " SET topic_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
$sql = 'UPDATE ' . TOPICS_TABLE . "
|
||||||
|
SET topic_last_poster_colour = '" . $db->sql_escape($sql_ary['user_colour']) . "'
|
||||||
WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary);
|
WHERE " . $db->sql_in_set('topic_last_poster_id', $user_id_ary);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
@ -3559,6 +3585,9 @@ function group_set_user_default($group_id, $user_id_ary, $group_attributes = fal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make all values available for the event
|
||||||
|
$sql_ary = $updated_sql_ary;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event when the default group is set for an array of users
|
* Event when the default group is set for an array of users
|
||||||
*
|
*
|
||||||
|
|
|
@ -618,7 +618,7 @@ class ucp_groups
|
||||||
|
|
||||||
foreach ($test_variables as $test => $type)
|
foreach ($test_variables as $test => $type)
|
||||||
{
|
{
|
||||||
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test]))
|
if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || isset($group_attributes['group_avatar']) && strpos($test, 'avatar') === 0))
|
||||||
{
|
{
|
||||||
settype($submit_ary[$test], $type);
|
settype($submit_ary[$test], $type);
|
||||||
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test];
|
||||||
|
|
121
tests/functions_user/fixtures/group_user_attributes.xml
Normal file
121
tests/functions_user/fixtures/group_user_attributes.xml
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<dataset>
|
||||||
|
<table name="phpbb_groups">
|
||||||
|
<column>group_id</column>
|
||||||
|
<column>group_avatar</column>
|
||||||
|
<column>group_rank</column>
|
||||||
|
<column>group_desc</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>default</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value></value>
|
||||||
|
<value>0</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>default2</value>
|
||||||
|
<value>3</value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
<table name="phpbb_users">
|
||||||
|
<column>user_id</column>
|
||||||
|
<column>group_id</column>
|
||||||
|
<column>user_avatar</column>
|
||||||
|
<column>user_rank</column>
|
||||||
|
<column>username_clean</column>
|
||||||
|
<column>user_permissions</column>
|
||||||
|
<column>user_sig</column>
|
||||||
|
<column>user_occ</column>
|
||||||
|
<column>user_interests</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value></value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>barfoo</value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>default</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>foobar</value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>custom</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>bertie</value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
<value></value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
<table name="phpbb_user_group">
|
||||||
|
<column>user_id</column>
|
||||||
|
<column>group_id</column>
|
||||||
|
<column>user_pending</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>3</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>3</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>3</value>
|
||||||
|
<value>3</value>
|
||||||
|
<value>0</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
</dataset>
|
156
tests/functions_user/group_user_attributes_test.php
Normal file
156
tests/functions_user/group_user_attributes_test.php
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @package testing
|
||||||
|
* @copyright (c) 2008 phpBB Group
|
||||||
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
|
||||||
|
require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
|
||||||
|
|
||||||
|
class phpbb_functions_user_group_user_attributes_test extends phpbb_database_test_case
|
||||||
|
{
|
||||||
|
public function getDataSet()
|
||||||
|
{
|
||||||
|
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/group_user_attributes.xml');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function group_user_attributes_data()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'Setting new default group without settings for user with no settings - no change',
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
array(
|
||||||
|
'group_avatar' => '',
|
||||||
|
'group_avatar_type' => 0,
|
||||||
|
'group_avatar_height' => 0,
|
||||||
|
'group_avatar_width' => 0,
|
||||||
|
'group_rank' => 0,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => '',
|
||||||
|
'user_rank' => 0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'Setting new default group without settings for user with default settings - user settings overwritten',
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
array(
|
||||||
|
'group_avatar' => '',
|
||||||
|
'group_avatar_type' => 0,
|
||||||
|
'group_avatar_height' => 0,
|
||||||
|
'group_avatar_width' => 0,
|
||||||
|
'group_rank' => 0,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => '',
|
||||||
|
'user_rank' => 0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'Setting new default group without settings for user with custom settings - no change',
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
array(
|
||||||
|
'group_avatar' => '',
|
||||||
|
'group_avatar_type' => 0,
|
||||||
|
'group_avatar_height' => 0,
|
||||||
|
'group_avatar_width' => 0,
|
||||||
|
'group_rank' => 0,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => 'custom',
|
||||||
|
'user_rank' => 2,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'Setting new default group with settings for user with no settings - user settings overwritten',
|
||||||
|
1,
|
||||||
|
3,
|
||||||
|
array(
|
||||||
|
'group_avatar' => 'default2',
|
||||||
|
'group_avatar_type' => 1,
|
||||||
|
'group_avatar_height' => 1,
|
||||||
|
'group_avatar_width' => 1,
|
||||||
|
'group_rank' => 3,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => 'default2',
|
||||||
|
'user_rank' => 3,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'Setting new default group with settings for user with default settings - user settings overwritten',
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
array(
|
||||||
|
'group_avatar' => 'default2',
|
||||||
|
'group_avatar_type' => 1,
|
||||||
|
'group_avatar_height' => 1,
|
||||||
|
'group_avatar_width' => 1,
|
||||||
|
'group_rank' => 3,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => 'default2',
|
||||||
|
'user_rank' => 3,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'Setting new default group with settings for user with custom settings - no change',
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
array(
|
||||||
|
'group_avatar' => 'default2',
|
||||||
|
'group_avatar_type' => 1,
|
||||||
|
'group_avatar_height' => 1,
|
||||||
|
'group_avatar_width' => 1,
|
||||||
|
'group_rank' => 3,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'user_avatar' => 'custom',
|
||||||
|
'user_rank' => 2,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider group_user_attributes_data
|
||||||
|
*/
|
||||||
|
public function test_group_user_attributes($description, $user_id, $group_id, $group_row, $expected)
|
||||||
|
{
|
||||||
|
global $auth, $cache, $db, $phpbb_dispatcher, $user, $phpbb_container;
|
||||||
|
|
||||||
|
$user->ip = '';
|
||||||
|
$cache = new phpbb_mock_cache;
|
||||||
|
$db = $this->new_dbal();
|
||||||
|
$phpbb_dispatcher = new phpbb_mock_event_dispatcher();
|
||||||
|
$auth = $this->getMock('phpbb_auth');
|
||||||
|
$auth->expects($this->any())
|
||||||
|
->method('acl_clear_prefetch');
|
||||||
|
$cache_driver = new phpbb_cache_driver_null();
|
||||||
|
$phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
|
||||||
|
$phpbb_container
|
||||||
|
->expects($this->any())
|
||||||
|
->method('get')
|
||||||
|
->with('cache.driver')
|
||||||
|
->will($this->returnValue($cache_driver));
|
||||||
|
|
||||||
|
group_user_attributes('default', $group_id, array($user_id), false, 'group_name', $group_row);
|
||||||
|
|
||||||
|
$sql = 'SELECT user_avatar, user_rank
|
||||||
|
FROM ' . USERS_TABLE . '
|
||||||
|
WHERE user_id = ' . $user_id;
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
$this->assertEquals(array($expected), $db->sql_fetchrowset($result));
|
||||||
|
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue