83 lines
1.9 KiB
PHP
83 lines
1.9 KiB
PHP
<?php
|
|
|
|
|
|
class Brizy_Admin_Migrations_ScreenshotMigration implements Brizy_Admin_Migrations_MigrationInterface {
|
|
|
|
/**
|
|
* @return int|mixed
|
|
*/
|
|
public function getPriority() {
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Return the version
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getVersion() {
|
|
return '1.0.123';
|
|
}
|
|
|
|
/**
|
|
* Run this method when upgrading.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function execute() {
|
|
// this is a null migration
|
|
|
|
global $wpdb;
|
|
|
|
if ( ! class_exists( 'Brizy\BlockScreenshotContext' ) || ! class_exists( 'Brizy\BlockScreenshotTransformer' ) ) {
|
|
throw new Exception();
|
|
}
|
|
|
|
$entities = $wpdb->get_results(
|
|
"SELECT
|
|
p.id as ID
|
|
FROM {$wpdb->posts} p
|
|
LEFT JOIN {$wpdb->posts} pp ON pp.id=p.post_parent
|
|
WHERE IF(pp.post_type IS NOT NULL,pp.post_type,p.post_type) in ('brizy-global-block','brizy-saved-block')
|
|
|
|
" );
|
|
|
|
foreach ( $entities as $row ) {
|
|
if ( metadata_exists( 'post', $row->ID, Brizy_Editor_Block::BRIZY_META ) ) {
|
|
continue;
|
|
}
|
|
try {
|
|
$this->migrateEntity( $row->ID );
|
|
} catch ( Brizy_Editor_Exceptions_NotFound $e ) {
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param $postId
|
|
*/
|
|
private function migrateEntity( $postId ) {
|
|
$storage = Brizy_Editor_Storage_Post::instance( $postId );
|
|
$storage_post = $storage->get( Brizy_Editor_Post::BRIZY_POST, true );
|
|
|
|
if ( ! isset( $storage_post['editor_data'] ) ) {
|
|
throw new Exception( 'editor_data not found on block: ' . $postId );
|
|
}
|
|
|
|
if ( ( $dataJson = base64_decode( $storage_post['editor_data'], true ) ) === false ) {
|
|
$dataJson = $storage_post['editor_data'];
|
|
}
|
|
|
|
$dataObject = json_decode( $dataJson );
|
|
|
|
$transformerContext = new \Brizy\BlockScreenshotContext( $dataObject );
|
|
$transformer = new \Brizy\BlockScreenshotTransformer();
|
|
$transformer->execute( $transformerContext );
|
|
|
|
|
|
$metaJson = json_encode( $transformerContext->getMeta() );
|
|
update_metadata( 'post', $postId, Brizy_Editor_Block::BRIZY_META, $metaJson );
|
|
}
|
|
}
|