mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/14985] Decode HTML special chars in plain text columns
PHPBB3-14985
This commit is contained in:
parent
26c6cb819e
commit
ef215f573e
2 changed files with 38 additions and 15 deletions
|
@ -81,11 +81,8 @@ class data_access
|
|||
public function get_bbcodes()
|
||||
{
|
||||
$sql = 'SELECT bbcode_match, bbcode_tpl FROM ' . $this->bbcodes_table;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$rows = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $rows;
|
||||
return $this->fetch_decoded_rowset($sql, ['bbcode_match']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -101,11 +98,8 @@ class data_access
|
|||
$sql = 'SELECT code, emotion, smiley_url, smiley_width, smiley_height
|
||||
FROM ' . $this->smilies_table . '
|
||||
ORDER BY display_on_posting DESC';
|
||||
$result = $this->db->sql_query($sql);
|
||||
$rows = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $rows;
|
||||
return $this->fetch_decoded_rowset($sql, ['code', 'emotion', 'smiley_url']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -116,11 +110,8 @@ class data_access
|
|||
protected function get_styles()
|
||||
{
|
||||
$sql = 'SELECT style_id, style_path, style_parent_id, bbcode_bitfield FROM ' . $this->styles_table;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$rows = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $rows;
|
||||
return $this->fetch_decoded_rowset($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -219,10 +210,43 @@ class data_access
|
|||
public function get_censored_words()
|
||||
{
|
||||
$sql = 'SELECT word, replacement FROM ' . $this->words_table;
|
||||
|
||||
return $this->fetch_decoded_rowset($sql, ['word', 'replacement']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode HTML special chars in given rowset
|
||||
*
|
||||
* @param array $rows Original rowset
|
||||
* @param array $columns List of columns to decode
|
||||
* @return array Decoded rowset
|
||||
*/
|
||||
protected function decode_rowset(array $rows, array $columns)
|
||||
{
|
||||
foreach ($rows as &$row)
|
||||
{
|
||||
foreach ($columns as $column)
|
||||
{
|
||||
$row[$column] = htmlspecialchars_decode($row[$column]);
|
||||
}
|
||||
}
|
||||
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch all rows for given query and decode plain text columns
|
||||
*
|
||||
* @param string $sql SELECT query
|
||||
* @param array $columns List of columns to decode
|
||||
* @return array
|
||||
*/
|
||||
protected function fetch_decoded_rowset($sql, array $columns = [])
|
||||
{
|
||||
$result = $this->db->sql_query($sql);
|
||||
$rows = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $rows;
|
||||
return $this->decode_rowset($rows, $columns);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -333,8 +333,7 @@ class factory implements \phpbb\textformatter\cache_interface
|
|||
$configurator->plugins->load('Censor', array('tagName' => 'censor:tag'));
|
||||
foreach ($censor as $row)
|
||||
{
|
||||
// NOTE: words are stored as HTML, we need to decode them to plain text
|
||||
$configurator->Censor->add(htmlspecialchars_decode($row['word']), htmlspecialchars_decode($row['replacement']));
|
||||
$configurator->Censor->add($row['word'], $row['replacement']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue