1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-06 16:56:44 +02:00

Merge pull request #2526 from Nicofuma/ticket/12639

[ticket/12639] Delete entry in admin-log leads to mysql-error

* Nicofuma/ticket/12639:
  [ticket/12639] Add a space in the code generated by generate_sql_keyword()
  [ticket/12639] Handle $conditions['keywords'] outside of the loop
  [ticket/12639] Don't make a copy of $marked when deleting logs in acp_logs
  [ticket/12639] Send a correct IN entry when deleting marked logs
  [ticket/12639] Use assertSame
  [ticket/12639] Remove old commented tests
  [ticket/12639] Order the results correctly in the test
  [ticket/12639] Fix tests on postgres
  [ticket/12639] Update tests to use a dataProvider
  [ticket/12639] Add a test case with an empty keywords list
  [ticket/12639] Delete entry in admin-log leads to mysql-error
This commit is contained in:
Andreas Fischer
2014-06-04 23:59:20 +02:00
4 changed files with 143 additions and 55 deletions

View File

@@ -58,13 +58,7 @@ class acp_logs
if ($deletemark && sizeof($marked))
{
$sql_in = array();
foreach ($marked as $mark)
{
$sql_in[] = $mark;
}
$conditions['log_id'] = $sql_in;
unset($sql_in);
$conditions['log_id'] = array('IN' => $marked);
}
if ($deleteall)
@@ -78,8 +72,6 @@ class acp_logs
$conditions['keywords'] = $keywords;
}
$conditions['log_type'] = $this->log_type;
$phpbb_log = $phpbb_container->get('log');
$phpbb_log->delete($mode, $conditions);
}

View File

@@ -115,9 +115,8 @@ class mcp_logs
if ($deletemark && sizeof($marked))
{
$conditions = array(
'log_type' => LOG_MOD,
'forum_id' => $forum_list,
'log_id' => $marked,
'log_id' => array('IN' => $marked),
);
$phpbb_log->delete('mod', $conditions);
@@ -127,7 +126,6 @@ class mcp_logs
$keywords = utf8_normalize_nfc(request_var('keywords', '', true));
$conditions = array(
'log_type' => LOG_MOD,
'forum_id' => $forum_list,
'keywords' => $keywords,
);

View File

@@ -391,28 +391,29 @@ class log implements \phpbb\log\log_interface
}
$sql_where = 'WHERE log_type = ' . $log_type;
if (isset($conditions['keywords']))
{
$sql_where .= $this->generate_sql_keyword($conditions['keywords'], '');
unset($conditions['keywords']);
}
foreach ($conditions as $field => $field_value)
{
$sql_where .= ' AND ';
if ($field == 'keywords')
if (is_array($field_value) && sizeof($field_value) == 2 && !is_array($field_value[1]))
{
$sql_where .= $this->generate_sql_keyword($field_value, '', '');
$sql_where .= $field . ' ' . $field_value[0] . ' ' . $field_value[1];
}
else if (is_array($field_value) && isset($field_value['IN']) && is_array($field_value['IN']))
{
$sql_where .= $this->db->sql_in_set($field, $field_value['IN']);
}
else
{
if (is_array($field_value) && sizeof($field_value) == 2 && !is_array($field_value[1]))
{
$sql_where .= $field . ' ' . $field_value[0] . ' ' . $field_value[1];
}
else if (is_array($field_value) && isset($field_value['IN']) && is_array($field_value['IN']))
{
$sql_where .= $this->db->sql_in_set($field, $field_value['IN']);
}
else
{
$sql_where .= $field . ' = ' . $field_value;
}
$sql_where .= $field . ' = ' . $field_value;
}
}
@@ -781,7 +782,7 @@ class log implements \phpbb\log\log_interface
}
}
$sql_keywords = $statement_operator . ' (';
$sql_keywords = ' ' . $statement_operator . ' (';
if (!empty($operations))
{
$sql_keywords .= $this->db->sql_in_set($table_alias . 'log_operation', $operations) . ' OR ';