PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 1.9.0
GiveWP – Donation Plugin and Fundraising Platform v1.9.0
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Log / Migrations / MigrateExistingLogs.php
give / src / Log / Migrations Last commit date
CreateNewLogTable.php 4 years ago DeleteOldLogTables.php 4 years ago MigrateExistingLogs.php 4 years ago
MigrateExistingLogs.php
158 lines
1 <?php
2
3 namespace Give\Log\Migrations;
4
5 use Give\Framework\Database\DB;
6 use Give\Framework\Migrations\Contracts\Migration;
7 use Give\Log\Helpers\LegacyLogsTable;
8 use Give\Log\Helpers\LogTypeHelper;
9 use Give\Log\LogFactory;
10 use Give_Updates;
11
12 class MigrateExistingLogs extends Migration
13 {
14
15 /**
16 * @var LogTypeHelper
17 */
18 private $logTypeHelper;
19
20 /**
21 * @var LegacyLogsTable
22 */
23 private $legacyLogsTable;
24
25 /**
26 * MigrateExistingLogs constructor.
27 *
28 * @param LogTypeHelper $logTypeHelper
29 * @param LegacyLogsTable $legacyLogsTable
30 */
31 public function __construct(
32 LogTypeHelper $logTypeHelper,
33 LegacyLogsTable $legacyLogsTable
34 ) {
35 $this->logTypeHelper = $logTypeHelper;
36 $this->legacyLogsTable = $legacyLogsTable;
37 }
38
39 /**
40 * Register background update.
41 *
42 * @since 2.10.0
43 *
44 * @param Give_Updates $give_updates
45 *
46 */
47 public function register($give_updates)
48 {
49 $give_updates->register(
50 [
51 'id' => self::id(),
52 'version' => '2.10.0',
53 'callback' => [$this, 'run'],
54 ]
55 );
56 }
57
58 /**
59 * @return string
60 */
61 public static function id()
62 {
63 return 'migrate_existing_logs';
64 }
65
66 /**
67 * @return string
68 */
69 public static function title()
70 {
71 return esc_html__('Migrate existing logs to give_log table', 'give');
72 }
73
74 /**
75 * @return int
76 */
77 public static function timestamp()
78 {
79 return strtotime('2021-01-28 13:00');
80 }
81
82 /**
83 * @inheritDoc
84 */
85 public function run()
86 {
87 global $wpdb;
88
89 // Check if legacy table exist
90 if ( ! $this->legacyLogsTable->exist()) {
91 return;
92 }
93
94 $logs_table = "{$wpdb->prefix}give_logs";
95 $logmeta_table = "{$wpdb->prefix}give_logmeta";
96
97 $give_updates = Give_Updates::get_instance();
98
99 $perBatch = 500;
100
101 $offset = ($give_updates->step - 1) * $perBatch;
102
103 $result = DB::get_results(
104 DB::prepare(
105 "SELECT * FROM {$logs_table} LIMIT %d OFFSET %d",
106 $perBatch,
107 $offset
108 )
109 );
110
111 $totalLogs = DB::get_var("SELECT COUNT(id) FROM {$logs_table}");
112
113 if ($result) {
114 $give_updates->set_percentage(
115 $totalLogs,
116 $give_updates->step * $perBatch
117 );
118
119 foreach ($result as $log) {
120 $context = [];
121
122 // Add old data as a context
123 $context['log_date'] = $log->log_date;
124 $context['log_content'] = $log->log_content;
125
126 // Get old log meta
127 $logsMeta = DB::get_results(
128 DB::prepare("SELECT * FROM {$logmeta_table} WHERE log_id = %d", $log->ID)
129 );
130
131 if ($logsMeta) {
132 foreach ($logsMeta as $logMeta) {
133 $context[$logMeta->meta_key] = $logMeta->meta_value;
134 }
135 }
136
137 // Get new type and category
138 $data = $this->logTypeHelper->getDataFromType($log->log_type);
139
140 try {
141 LogFactory::make(
142 $data['type'],
143 $log->log_title,
144 $data['category'],
145 'Log Migration',
146 $context
147 )->save();
148 } catch (\Exception $exception) {
149 $give_updates->__pause_db_update(true);
150 update_option('give_upgrade_error', 1, false);
151 }
152 }
153 } else {
154 give_set_upgrade_complete(self::id());
155 }
156 }
157 }
158