Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 45 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 1 |
release_3_0_11_rc1 | |
0.00% |
0 / 45 |
|
0.00% |
0 / 5 |
90 | |
0.00% |
0 / 1 |
effectively_installed | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
depends_on | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
update_data | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
cleanup_deactivated_styles | |
0.00% |
0 / 13 |
|
0.00% |
0 / 1 |
12 | |||
delete_orphan_private_messages | |
0.00% |
0 / 25 |
|
0.00% |
0 / 1 |
12 |
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\v30x; |
15 | |
16 | class release_3_0_11_rc1 extends \phpbb\db\migration\migration |
17 | { |
18 | public function effectively_installed() |
19 | { |
20 | return phpbb_version_compare($this->config['version'], '3.0.11-RC1', '>='); |
21 | } |
22 | |
23 | public static function depends_on() |
24 | { |
25 | return array('\phpbb\db\migration\data\v30x\release_3_0_10'); |
26 | } |
27 | |
28 | public function update_data() |
29 | { |
30 | return array( |
31 | array('custom', array(array(&$this, 'cleanup_deactivated_styles'))), |
32 | array('custom', array(array(&$this, 'delete_orphan_private_messages'))), |
33 | |
34 | array('config.update', array('version', '3.0.11-RC1')), |
35 | ); |
36 | } |
37 | |
38 | public function cleanup_deactivated_styles() |
39 | { |
40 | // Updates users having current style a deactivated one |
41 | $sql = 'SELECT style_id |
42 | FROM ' . STYLES_TABLE . ' |
43 | WHERE style_active = 0'; |
44 | $result = $this->sql_query($sql); |
45 | |
46 | $deactivated_style_ids = array(); |
47 | while ($style_id = $this->db->sql_fetchfield('style_id', false, $result)) |
48 | { |
49 | $deactivated_style_ids[] = (int) $style_id; |
50 | } |
51 | $this->db->sql_freeresult($result); |
52 | |
53 | if (!empty($deactivated_style_ids)) |
54 | { |
55 | $sql = 'UPDATE ' . USERS_TABLE . ' |
56 | SET user_style = ' . (int) $this->config['default_style'] .' |
57 | WHERE ' . $this->db->sql_in_set('user_style', $deactivated_style_ids); |
58 | $this->sql_query($sql); |
59 | } |
60 | } |
61 | |
62 | public function delete_orphan_private_messages() |
63 | { |
64 | // Delete orphan private messages |
65 | $batch_size = 500; |
66 | |
67 | $sql_array = array( |
68 | 'SELECT' => 'p.msg_id', |
69 | 'FROM' => array( |
70 | PRIVMSGS_TABLE => 'p', |
71 | ), |
72 | 'LEFT_JOIN' => array( |
73 | array( |
74 | 'FROM' => array(PRIVMSGS_TO_TABLE => 't'), |
75 | 'ON' => 'p.msg_id = t.msg_id', |
76 | ), |
77 | ), |
78 | 'WHERE' => 't.user_id IS NULL', |
79 | ); |
80 | $sql = $this->db->sql_build_query('SELECT', $sql_array); |
81 | |
82 | $result = $this->db->sql_query_limit($sql, $batch_size); |
83 | |
84 | $delete_pms = array(); |
85 | while ($row = $this->db->sql_fetchrow($result)) |
86 | { |
87 | $delete_pms[] = (int) $row['msg_id']; |
88 | } |
89 | $this->db->sql_freeresult($result); |
90 | |
91 | if (!empty($delete_pms)) |
92 | { |
93 | $sql = 'DELETE FROM ' . PRIVMSGS_TABLE . ' |
94 | WHERE ' . $this->db->sql_in_set('msg_id', $delete_pms); |
95 | $this->sql_query($sql); |
96 | |
97 | // Return false to have the Migrator call this function again |
98 | return false; |
99 | } |
100 | } |
101 | } |