PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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
CompleteRemovedLegacyLogMigration.php 3 years ago CreateNewLogTable.php 4 years ago DeleteOldLogTables.php 4 years ago MigrateExistingLogs.php 9 months ago RemoveSensitiveLogs.php 4 years ago
MigrateExistingLogs.php
161 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 * @since 2.21.2 Migration should complete when log table does not exist.
86 */
87 public function run()
88 {
89 global $wpdb;
90
91 // Check if legacy table exist
92 if ( ! $this->legacyLogsTable->exist()) {
93 give_set_upgrade_complete(self::id());
94 return;
95 }
96
97 $logs_table = "{$wpdb->prefix}give_logs";
98 $logmeta_table = "{$wpdb->prefix}give_logmeta";
99
100 $give_updates = Give_Updates::get_instance();
101
102 $perBatch = 500;
103
104 $offset = ($give_updates->step - 1) * $perBatch;
105
106 $result = DB::get_results(
107 DB::prepare(
108 "SELECT * FROM {$logs_table} LIMIT %d OFFSET %d",
109 $perBatch,
110 $offset
111 )
112 );
113
114 $totalLogs = DB::get_var("SELECT COUNT(id) FROM {$logs_table}");
115
116 if ($result) {
117 $give_updates->set_percentage(
118 $totalLogs,
119 $give_updates->step * $perBatch
120 );
121
122 foreach ($result as $log) {
123 $context = [];
124
125 // Add old data as a context
126 $context['log_date'] = $log->log_date;
127 $context['log_content'] = $log->log_content;
128
129 // Get old log meta
130 $logsMeta = DB::get_results(
131 DB::prepare("SELECT * FROM {$logmeta_table} WHERE log_id = %d", $log->ID)
132 );
133
134 if ($logsMeta) {
135 foreach ($logsMeta as $logMeta) {
136 $context[$logMeta->meta_key] = $logMeta->meta_value;
137 }
138 }
139
140 // Get new type and category
141 $data = $this->logTypeHelper->getDataFromType($log->log_type);
142
143 try {
144 LogFactory::make(
145 $data['type'],
146 $log->log_title,
147 $data['category'],
148 'Log Migration',
149 $context
150 )->save();
151 } catch (\Exception $exception) {
152 $give_updates->pause_db_update(true);
153 update_option('give_upgrade_error', 1, false);
154 }
155 }
156 } else {
157 give_set_upgrade_complete(self::id());
158 }
159 }
160 }
161