mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-07 20:08:53 +00:00
[ticket/13803] Added plugins
PHPBB3-13803
This commit is contained in:
parent
e11ae7e9cd
commit
986af43f37
18 changed files with 536 additions and 327 deletions
|
@ -1,62 +1,62 @@
|
|||
services:
|
||||
text_reparser.admin_contact_info:
|
||||
class: phpbb\textreparser\admin_contact_info
|
||||
class: phpbb\textreparser\plugins\admin_contact_info
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
- @config_text
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.forum_description:
|
||||
class: phpbb\textreparser\forum_description
|
||||
class: phpbb\textreparser\plugins\forum_description
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.forum_rules:
|
||||
class: phpbb\textreparser\forum_rules
|
||||
class: phpbb\textreparser\plugins\forum_rules
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.group_description:
|
||||
class: phpbb\textreparser\group_description
|
||||
class: phpbb\textreparser\plugins\group_description
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.pm_text:
|
||||
class: phpbb\textreparser\pm_text
|
||||
class: phpbb\textreparser\plugins\pm_text
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.poll_option:
|
||||
class: phpbb\textreparser\poll_option
|
||||
class: phpbb\textreparser\plugins\poll_option
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.poll_title:
|
||||
class: phpbb\textreparser\poll_title
|
||||
class: phpbb\textreparser\plugins\poll_title
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.post_text:
|
||||
class: phpbb\textreparser\post_text
|
||||
class: phpbb\textreparser\plugins\post_text
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
- { name: text_reparser.plugin }
|
||||
|
||||
text_reparser.user_signature:
|
||||
class: phpbb\textreparser\user_signature
|
||||
class: phpbb\textreparser\plugins\user_signature
|
||||
arguments:
|
||||
- @dbal.conn
|
||||
tags:
|
||||
|
|
|
@ -15,21 +15,6 @@ namespace phpbb\textreparser;
|
|||
|
||||
abstract class base implements reparser_interface
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\db\driver\driver_interface
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\db\driver\driver_interface $db Database connection
|
||||
*/
|
||||
public function __construct(\phpbb\db\driver\driver_interface $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
class forum_description extends base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$sql = 'SELECT MAX(forum_id) AS max_id FROM ' . FORUMS_TABLE;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT forum_id AS id, forum_desc AS text, forum_desc_uid AS bbcode_uid
|
||||
FROM ' . FORUMS_TABLE . '
|
||||
WHERE forum_id BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
$result = $this->db->sql_query($sql);
|
||||
while ($row = $this->db->sql_fetchrow($result))
|
||||
{
|
||||
// Those fields are not saved to the database, we need to guess their original value
|
||||
$row['enable_bbcode'] = !empty($row['bbcode_uid']);
|
||||
$row['enable_smilies'] = (strpos($row['text'], '<!-- s') !== false);
|
||||
$row['enable_magic_url'] = (strpos($row['text'], '<!-- m -->') !== false);
|
||||
}
|
||||
$records = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||
SET forum_desc = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE forum_id = " . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
class forum_rules extends base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$sql = 'SELECT MAX(forum_id) AS max_id FROM ' . FORUMS_TABLE;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT forum_id AS id, forum_rules AS text, forum_rules_uid AS bbcode_uid
|
||||
FROM ' . FORUMS_TABLE . '
|
||||
WHERE forum_id BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
$result = $this->db->sql_query($sql);
|
||||
while ($row = $this->db->sql_fetchrow($result))
|
||||
{
|
||||
// Those fields are not saved to the database, we need to guess their original value
|
||||
$row['enable_bbcode'] = !empty($row['bbcode_uid']);
|
||||
$row['enable_smilies'] = (strpos($row['text'], '<!-- s') !== false);
|
||||
$row['enable_magic_url'] = (strpos($row['text'], '<!-- m -->') !== false);
|
||||
}
|
||||
$records = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$sql = 'UPDATE ' . FORUMS_TABLE . "
|
||||
SET forum_rules = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE forum_id = " . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
class group_description extends base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$sql = 'SELECT MAX(group_id) AS max_id FROM ' . GROUPS_TABLE;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT group_id AS id, group_desc AS text, group_desc_uid AS bbcode_uid
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
WHERE group_id BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
$result = $this->db->sql_query($sql);
|
||||
while ($row = $this->db->sql_fetchrow($result))
|
||||
{
|
||||
// Those fields are not saved to the database, we need to guess their original value
|
||||
$row['enable_bbcode'] = !empty($row['bbcode_uid']);
|
||||
$row['enable_smilies'] = (strpos($row['text'], '<!-- s') !== false);
|
||||
$row['enable_magic_url'] = (strpos($row['text'], '<!-- m -->') !== false);
|
||||
}
|
||||
$records = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$sql = 'UPDATE ' . GROUPS_TABLE . "
|
||||
SET group_desc = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE group_id = " . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
69
phpBB/phpbb/textreparser/plugins/admin_contact_info.php
Normal file
69
phpBB/phpbb/textreparser/plugins/admin_contact_info.php
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class admin_contact_info extends \phpbb\textreparser\base
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\config\db_text
|
||||
*/
|
||||
protected $config_text;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\config\db_text $config_text
|
||||
*/
|
||||
public function __construct(\phpbb\config\db_text $config_text)
|
||||
{
|
||||
$this->config_text = $config_text;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$values = $this->config_text->get_array(array(
|
||||
'contact_admin_info',
|
||||
'contact_admin_info_uid',
|
||||
'contact_admin_info_flags',
|
||||
));
|
||||
|
||||
return array(array(
|
||||
'id' => 1,
|
||||
'text' => $values['contact_admin_info'],
|
||||
'bbcode_uid' => $values['contact_admin_info_uid'],
|
||||
'enable_bbcode' => $values['contact_admin_info_flags'] & OPTION_FLAG_BBCODE,
|
||||
'enable_magic_url' => $values['contact_admin_info_flags'] & OPTION_FLAG_LINKS,
|
||||
'enable_smilies' => $values['contact_admin_info_flags'] & OPTION_FLAG_SMILIES,
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$this->config_text->set('admin_contact_info', $record['text']);
|
||||
}
|
||||
}
|
37
phpBB/phpbb/textreparser/plugins/forum_description.php
Normal file
37
phpBB/phpbb/textreparser/plugins/forum_description.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class forum_description extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'forum_id',
|
||||
'text' => 'forum_desc',
|
||||
'bbcode_uid' => 'forum_desc_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return FORUMS_TABLE;
|
||||
}
|
||||
}
|
37
phpBB/phpbb/textreparser/plugins/forum_rules.php
Normal file
37
phpBB/phpbb/textreparser/plugins/forum_rules.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class forum_rules extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'forum_id',
|
||||
'text' => 'forum_rules',
|
||||
'bbcode_uid' => 'forum_rules_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return FORUMS_TABLE;
|
||||
}
|
||||
}
|
37
phpBB/phpbb/textreparser/plugins/group_description.php
Normal file
37
phpBB/phpbb/textreparser/plugins/group_description.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class group_description extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'group_id',
|
||||
'text' => 'group_desc',
|
||||
'bbcode_uid' => 'group_desc_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return GROUPS_TABLE;
|
||||
}
|
||||
}
|
40
phpBB/phpbb/textreparser/plugins/pm_text.php
Normal file
40
phpBB/phpbb/textreparser/plugins/pm_text.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class pm_text extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'msg_id',
|
||||
'enable_bbcode' => 'enable_bbcode',
|
||||
'enable_smilies' => 'enable_smilies',
|
||||
'enable_magic_url' => 'enable_magic_url',
|
||||
'text' => 'message_text',
|
||||
'bbcode_uid' => 'bbcode_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return PRIVMSGS_TABLE;
|
||||
}
|
||||
}
|
50
phpBB/phpbb/textreparser/plugins/poll_option.php
Normal file
50
phpBB/phpbb/textreparser/plugins/poll_option.php
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class poll_option extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'poll_option_id',
|
||||
'text' => 'poll_option_text',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records_query($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT o.poll_option_id AS id, o.poll_option_text AS text, p.bbcode_uid
|
||||
FROM ' . POLL_OPTIONS_TABLE . ' o, ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
|
||||
WHERE o.poll_option_id BETWEEN ' . $min_id . ' AND ' . $max_id .'
|
||||
AND t.topic_id = o.topic_id
|
||||
AND p.post_id = t.topic_first_post_id';
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return POLL_OPTIONS_TABLE;
|
||||
}
|
||||
}
|
50
phpBB/phpbb/textreparser/plugins/poll_title.php
Normal file
50
phpBB/phpbb/textreparser/plugins/poll_title.php
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class poll_title extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'topic_id',
|
||||
'text' => 'poll_title',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records_query($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT t.topic_id AS id, t.poll_title AS text, p.bbcode_uid
|
||||
FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
|
||||
WHERE t.topic_id BETWEEN ' . $min_id . ' AND ' . $max_id .'
|
||||
AND t.poll_max_options > 0
|
||||
AND p.post_id = t.topic_first_post_id';
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return TOPICS_TABLE;
|
||||
}
|
||||
}
|
40
phpBB/phpbb/textreparser/plugins/post_text.php
Normal file
40
phpBB/phpbb/textreparser/plugins/post_text.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class post_text extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'post_id',
|
||||
'enable_bbcode' => 'enable_bbcode',
|
||||
'enable_smilies' => 'enable_smilies',
|
||||
'enable_magic_url' => 'enable_magic_url',
|
||||
'text' => 'post_text',
|
||||
'bbcode_uid' => 'bbcode_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return POSTS_TABLE;
|
||||
}
|
||||
}
|
37
phpBB/phpbb/textreparser/plugins/user_signature.php
Normal file
37
phpBB/phpbb/textreparser/plugins/user_signature.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser\plugins;
|
||||
|
||||
class user_signature extends \phpbb\textreparser\row_based_plugin
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_columns()
|
||||
{
|
||||
return array(
|
||||
'id' => 'user_id',
|
||||
'text' => 'user_sig',
|
||||
'bbcode_uid' => 'user_sig_bbcode_uid',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_table_name()
|
||||
{
|
||||
return USERS_TABLE;
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
class pm_text extends base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$sql = 'SELECT MAX(msg_id) AS max_id FROM ' . PRIVMSGS_TABLE;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT msg_id AS id, enable_bbcode, enable_smilies, enable_magic_url, message_text AS text, bbcode_uid
|
||||
FROM ' . PRIVMSGS_TABLE . '
|
||||
WHERE msg_id BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$records = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$sql = 'UPDATE ' . PRIVMSGS_TABLE . "
|
||||
SET message_text = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE msg_id = " . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
class post_text extends base
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$sql = 'SELECT MAX(post_id) AS max_id FROM ' . POSTS_TABLE;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$sql = 'SELECT post_id AS id, enable_bbcode, enable_smilies, enable_magic_url, post_text AS text, bbcode_uid
|
||||
FROM ' . POSTS_TABLE . '
|
||||
WHERE post_id BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
$result = $this->db->sql_query($sql);
|
||||
$records = $this->db->sql_fetchrowset($result);
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . "
|
||||
SET post_text = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE post_id = " . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
128
phpBB/phpbb/textreparser/row_based_plugin.php
Normal file
128
phpBB/phpbb/textreparser/row_based_plugin.php
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\textreparser;
|
||||
|
||||
abstract class row_based_plugin extends base
|
||||
{
|
||||
/**
|
||||
* @var \phpbb\db\driver\driver_interface
|
||||
*/
|
||||
protected $db;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param \phpbb\db\driver\driver_interface $db Database connection
|
||||
*/
|
||||
public function __construct(\phpbb\db\driver\driver_interface $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name of the column that correspond to each field
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
abstract protected function get_columns();
|
||||
|
||||
/**
|
||||
* Return the name of the table used by this plugin
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
abstract protected function get_table_name();
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get_max_id()
|
||||
{
|
||||
$columns = $this->get_columns();
|
||||
|
||||
$sql = 'SELECT MAX(' . $columns['id'] . ' AS max_id FROM ' . $this->get_table_name();
|
||||
$result = $this->db->sql_query($sql);
|
||||
$max_id = (int) $this->db->sql_fetchfield('max_id');
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $max_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function get_records($min_id, $max_id)
|
||||
{
|
||||
$result = $this->db->sql_query($this->get_records_query($min_id, $max_id));
|
||||
while ($row = $this->db->sql_fetchrow($result))
|
||||
{
|
||||
if (!isset($row['enable_bbcode'], $row['enable_smilies'], $row['enable_magic_url']))
|
||||
{
|
||||
// Those fields are not saved to the database, we need to guess their original value
|
||||
$row += array(
|
||||
'enable_bbcode' => !empty($row['bbcode_uid']),
|
||||
'enable_smilies' => (strpos($row['text'], '<!-- s') !== false),
|
||||
'enable_magic_url' => (strpos($row['text'], '<!-- m -->') !== false)
|
||||
);
|
||||
}
|
||||
$records[] = $row;
|
||||
}
|
||||
$this->db->sql_freeresult($result);
|
||||
|
||||
return $records;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the query that retrieves all records for given range
|
||||
*
|
||||
* @param integer $min_id Lower bound
|
||||
* @param integer $max_id Upper bound
|
||||
* @return string SQL query
|
||||
*/
|
||||
protected function get_records_query($min_id, $max_id)
|
||||
{
|
||||
$columns = $this->get_columns();
|
||||
$fields = array();
|
||||
foreach ($columns as $field_name => $column_name)
|
||||
{
|
||||
if ($column_name === $field_name)
|
||||
{
|
||||
$fields[] = $column_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
$fields[] = $column_name . ' AS ' . $field_name;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = 'SELECT ' . implode(', ', $fields) . '
|
||||
FROM ' . $this->get_table_name() . '
|
||||
WHERE ' . $columns['id'] . ' BETWEEN ' . $min_id . ' AND ' . $max_id;
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function save_record(array $record)
|
||||
{
|
||||
$columns = $this->get_columns();
|
||||
|
||||
$sql = 'UPDATE ' . $this->get_table_name() . '
|
||||
SET ' . $columns['text'] . " = '" . $this->db->sql_escape($record['text']) . "'
|
||||
WHERE " . $columns['id'] . ' = ' . $record['id'];
|
||||
$this->db->sql_query($sql);
|
||||
}
|
||||
}
|
|
@ -38,7 +38,7 @@ class phpbb_textreparser_post_text_test extends phpbb_database_test_case
|
|||
public function testReparse($min_id, $max_id, $expected)
|
||||
{
|
||||
$db = $this->new_dbal();
|
||||
$reparser = new \phpbb\textreparser\post_text($db);
|
||||
$reparser = new \phpbb\textreparser\plugins\post_text($db);
|
||||
$reparser->reparse_range($min_id, $max_id);
|
||||
$sql = 'SELECT post_id, post_text
|
||||
FROM ' . POSTS_TABLE . "
|
||||
|
|
Loading…
Add table
Reference in a new issue