db-process.php
42 lines
| 1 | <?php |
| 2 | namespace ShopEngine\Compatibility\Migrations; |
| 3 | defined('ABSPATH') || exit; |
| 4 | class Db_Process{ |
| 5 | private $widget_names; |
| 6 | private $new_widget_names; |
| 7 | private $metadata; |
| 8 | |
| 9 | public function __construct(){ |
| 10 | $this->set_widget_names(); |
| 11 | $this->process_post_meta_data(); |
| 12 | |
| 13 | foreach($this->metadata as $data){ |
| 14 | $this->migrate_metadata($data); |
| 15 | } |
| 16 | } |
| 17 | |
| 18 | private function migrate_metadata($data){ |
| 19 | $new_meta_value = str_replace($this->widget_names, $this->new_widget_names, $data->meta_value); |
| 20 | |
| 21 | global $wpdb; |
| 22 | $update = ['meta_value' => $new_meta_value]; |
| 23 | $where = ['meta_id' => $data->meta_id]; |
| 24 | $wpdb->update($wpdb->postmeta , $update, $where); |
| 25 | } |
| 26 | |
| 27 | private function process_post_meta_data(){ |
| 28 | global $wpdb; |
| 29 | $this->metadata = $wpdb->get_results ( " |
| 30 | SELECT * |
| 31 | FROM $wpdb->postmeta |
| 32 | WHERE meta_key = '_elementor_data' |
| 33 | " ); |
| 34 | } |
| 35 | |
| 36 | private function set_widget_names(){ |
| 37 | $names = array_keys(\ShopEngine\Core\Register\Widget_List::instance()->get_list()); |
| 38 | |
| 39 | $this->widget_names = preg_filter('/^.*$/', '"widgetType":"$0"', $names); |
| 40 | $this->new_widget_names = preg_filter('/^.*$/', '"widgetType":"shopengine-$0"', $names); |
| 41 | } |
| 42 | } |