[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 namespace phpbb\db\migration\data\v32x; 15 16 class merge_duplicate_bbcodes extends \phpbb\db\migration\container_aware_migration 17 { 18 public function update_data() 19 { 20 return [ 21 ['custom', [[$this, 'update_bbcodes_table']]], 22 ]; 23 } 24 25 public function update_bbcodes_table() 26 { 27 $sql = 'SELECT bbcode_id, bbcode_tag, bbcode_helpline, bbcode_match, bbcode_tpl FROM ' . BBCODES_TABLE; 28 $result = $this->sql_query($sql); 29 $bbcodes = []; 30 while ($row = $this->db->sql_fetchrow($result)) 31 { 32 $variant = (substr($row['bbcode_tag'], -1) === '=') ? 'with': 'without'; 33 $bbcode_name = strtolower(rtrim($row['bbcode_tag'], '=')); 34 $bbcodes[$bbcode_name][$variant] = $row; 35 } 36 $this->db->sql_freeresult($result); 37 38 foreach ($bbcodes as $bbcode_name => $variants) 39 { 40 if (count($variants) === 2) 41 { 42 $this->merge_bbcodes($variants['without'], $variants['with']); 43 } 44 } 45 } 46 47 protected function merge_bbcodes(array $without, array $with) 48 { 49 try 50 { 51 $merged = $this->container->get('text_formatter.s9e.bbcode_merger')->merge_bbcodes( 52 [ 53 'usage' => $without['bbcode_match'], 54 'template' => $without['bbcode_tpl'] 55 ], 56 [ 57 'usage' => $with['bbcode_match'], 58 'template' => $with['bbcode_tpl'] 59 ] 60 ); 61 } 62 catch (\Exception $e) 63 { 64 // Ignore the pair and move on. The BBCodes would have to be fixed manually 65 return; 66 } 67 68 $bbcode_data = [ 69 'bbcode_tag' => $without['bbcode_tag'], 70 'bbcode_helpline' => $without['bbcode_helpline'] . ' | ' . $with['bbcode_helpline'], 71 'bbcode_match' => $merged['usage'], 72 'bbcode_tpl' => $merged['template'] 73 ]; 74 75 $sql = 'UPDATE ' . BBCODES_TABLE . ' 76 SET ' . $this->db->sql_build_array('UPDATE', $bbcode_data) . ' 77 WHERE bbcode_id = ' . (int) $without['bbcode_id']; 78 $this->sql_query($sql); 79 80 $sql = 'DELETE FROM ' . BBCODES_TABLE . ' 81 WHERE bbcode_id = ' . (int) $with['bbcode_id']; 82 $this->sql_query($sql); 83 } 84 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |