PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.11.2
GiveWP – Donation Plugin and Fundraising Platform v2.11.2
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 5 years ago DeleteOldLogTables.php 5 years ago MigrateExistingLogs.php 5 years ago
MigrateExistingLogs.php
152 lines
1 <?php
2
3 namespace Give\Log\Migrations;
4
5 use Give\Log\LogFactory;
6 use Give\Framework\Database\DB;
7 use Give\Log\Helpers\LogTypeHelper;
8 use Give\Log\Helpers\LegacyLogsTable;
9 use Give\Framework\Migrations\Contracts\Migration;
10 use Give_Updates;
11
12 class MigrateExistingLogs extends Migration {
13
14 /**
15 * @var LogTypeHelper
16 */
17 private $logTypeHelper;
18
19 /**
20 * @var LegacyLogsTable
21 */
22 private $legacyLogsTable;
23
24 /**
25 * MigrateExistingLogs constructor.
26 *
27 * @param LogTypeHelper $logTypeHelper
28 * @param LegacyLogsTable $legacyLogsTable
29 */
30 public function __construct(
31 LogTypeHelper $logTypeHelper,
32 LegacyLogsTable $legacyLogsTable
33 ) {
34 $this->logTypeHelper = $logTypeHelper;
35 $this->legacyLogsTable = $legacyLogsTable;
36 }
37
38 /**
39 * Register background update.
40 *
41 * @since 2.10.0
42 *
43 * @param Give_Updates $give_updates
44 *
45 */
46 public function register( $give_updates ) {
47 $give_updates->register(
48 [
49 'id' => self::id(),
50 'version' => '2.10.0',
51 'callback' => [ $this, 'run' ],
52 ]
53 );
54 }
55
56 /**
57 * @return string
58 */
59 public static function id() {
60 return 'migrate_existing_logs';
61 }
62
63 /**
64 * @return string
65 */
66 public static function title() {
67 return esc_html__( 'Migrate existing logs to give_log table', 'give' );
68 }
69
70 /**
71 * @return int
72 */
73 public static function timestamp() {
74 return strtotime( '2021-01-28 13:00' );
75 }
76
77 /**
78 * @inheritDoc
79 */
80 public function run() {
81 global $wpdb;
82
83 // Check if legacy table exist
84 if ( ! $this->legacyLogsTable->exist() ) {
85 return;
86 }
87
88 $logs_table = "{$wpdb->prefix}give_logs";
89 $logmeta_table = "{$wpdb->prefix}give_logmeta";
90
91 $give_updates = Give_Updates::get_instance();
92
93 $perBatch = 500;
94
95 $offset = ( $give_updates->step - 1 ) * $perBatch;
96
97 $result = DB::get_results(
98 DB::prepare(
99 "SELECT * FROM {$logs_table} LIMIT %d OFFSET %d",
100 $perBatch,
101 $offset
102 )
103 );
104
105 $totalLogs = DB::get_var( "SELECT COUNT(id) FROM {$logs_table}" );
106
107 if ( $result ) {
108 $give_updates->set_percentage(
109 $totalLogs,
110 $give_updates->step * $perBatch
111 );
112
113 foreach ( $result as $log ) {
114 $context = [];
115
116 // Add old data as a context
117 $context['log_date'] = $log->log_date;
118 $context['log_content'] = $log->log_content;
119
120 // Get old log meta
121 $logsMeta = DB::get_results(
122 DB::prepare( "SELECT * FROM {$logmeta_table} WHERE log_id = %d", $log->ID )
123 );
124
125 if ( $logsMeta ) {
126 foreach ( $logsMeta as $logMeta ) {
127 $context[ $logMeta->meta_key ] = $logMeta->meta_value;
128 }
129 }
130
131 // Get new type and category
132 $data = $this->logTypeHelper->getDataFromType( $log->log_type );
133
134 try {
135 LogFactory::make(
136 $data['type'],
137 $log->log_title,
138 $data['category'],
139 'Log Migration',
140 $context
141 )->save();
142 } catch ( \Exception $exception ) {
143 $give_updates->__pause_db_update( true );
144 update_option( 'give_upgrade_error', 1, false );
145 }
146 }
147 } else {
148 give_set_upgrade_complete( self::id() );
149 }
150 }
151 }
152