diff options
author | rxu <rxu@mail.ru> | 2015-01-12 00:11:45 +0700 |
---|---|---|
committer | rxu <rxu@mail.ru> | 2015-01-20 08:47:56 +0700 |
commit | 8002af752683cf055e792a45394cb4ffc627daeb (patch) | |
tree | 627cb4dcac3cdd7d08b768bc1568edbc4443c64d /phpBB/phpbb/db | |
parent | 17f4dce0fc2bb1105a3181ccd7a4119f40191c2b (diff) | |
download | forums-8002af752683cf055e792a45394cb4ffc627daeb.tar forums-8002af752683cf055e792a45394cb4ffc627daeb.tar.gz forums-8002af752683cf055e792a45394cb4ffc627daeb.tar.bz2 forums-8002af752683cf055e792a45394cb4ffc627daeb.tar.xz forums-8002af752683cf055e792a45394cb4ffc627daeb.zip |
[ticket/13492] Add the migration to update custom bbcodes with IDN regexps
Also fix the $utf8 checking regexp removing the curly braces.
PHPBB3-13492
Diffstat (limited to 'phpBB/phpbb/db')
-rw-r--r-- | phpBB/phpbb/db/migration/data/v31x/update_custom_bbcodes_with_idn.php | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/phpBB/phpbb/db/migration/data/v31x/update_custom_bbcodes_with_idn.php b/phpBB/phpbb/db/migration/data/v31x/update_custom_bbcodes_with_idn.php new file mode 100644 index 0000000000..854ed1f568 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v31x/update_custom_bbcodes_with_idn.php @@ -0,0 +1,70 @@ +<?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\db\migration\data\v31x; + +class update_custom_bbcodes_with_idn extends \phpbb\db\migration\migration +{ + static public function depends_on() + { + return array( + '\phpbb\db\migration\data\v31x\v312', + ); + } + + public function update_data() + { + return array( + array('custom', array(array($this, 'update_bbcodes_table'))), + ); + } + + public function update_bbcodes_table() + { + if (!class_exists('acp_bbcodes')) + { + include($this->phpbb_root_path . 'includes/acp/acp_bbcodes.' . $this->php_ext); + } + + $bbcodes = new \acp_bbcodes(); + + $sql = 'SELECT bbcode_id, bbcode_match, bbcode_tpl + FROM ' . BBCODES_TABLE; + $result = $this->sql_query($sql); + + $sql_ary = array(); + while ($row = $this->db->sql_fetchrow($result)) + { + $data = array(); + if (preg_match('/(URL|LOCAL_URL|RELATIVE_URL)/', $row['bbcode_match'])) + { + $data = $bbcodes->build_regexp($row['bbcode_match'], $row['bbcode_tpl']); + $sql_ary[$row['bbcode_id']] = array( + 'first_pass_match' => $data['first_pass_match'], + 'first_pass_replace' => $data['first_pass_replace'], + 'second_pass_match' => $data['second_pass_match'], + 'second_pass_replace' => $data['second_pass_replace'] + ); + } + } + $this->db->sql_freeresult($result); + + foreach ($sql_ary as $bbcode_id => $bbcode_data) + { + $sql = 'UPDATE ' . BBCODES_TABLE . ' + SET ' . $this->db->sql_build_array('UPDATE', $bbcode_data) . ' + WHERE bbcode_id = ' . (int) $bbcode_id; + $this->sql_query($sql); + } + } +} |