Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/cloud/ |
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/cloud/sync-aware.php |
<?php trait Brizy_Admin_Cloud_SyncAware { /** * @var Brizy_Admin_Cloud_Client */ protected $client; /** * @return Brizy_Admin_Cloud_Client */ public function getClient() { return $this->client; } /** * @param Brizy_Admin_Cloud_Client $client * * @return Brizy_Admin_Cloud_SyncAware */ public function setClient( $client ) { $this->client = $client; return $this; } protected function syncLayouts( $limit = 0, $throwException = false ) { $layoutIds = $this->getLayoutsForSync( $limit ); $synchronized = []; foreach ( $layoutIds as $lId ) { try { if ( $this->syncLayout( $lId->ID ) ) { $synchronized[] = $lId->ID; } } catch ( Exception $e ) { Brizy_Logger::instance()->critical( 'Failed to sync layout', [ 'blockId' => $lId->ID, $e ] ); if ( $throwException ) { throw $e; } } } return $synchronized; } protected function syncBlocks( $limit = 0, $throwException = false ) { $postIds = $this->getBlocksForSync( $limit ); $synchronized = []; foreach ( $postIds as $block ) { try { if ( $this->syncBlock( $block->ID ) ) { $synchronized[] = $block->ID; } } catch ( Exception $e ) { Brizy_Logger::instance()->critical( 'Failed to sync block', [ 'blockId' => $block->ID ] ); if ( $throwException ) { throw $e; } } } return $synchronized; } protected function syncBlock( $blockId ) { $brizyBlock = Brizy_Editor_Block::get( $blockId ); $cloud_account_id = $this->getClient()->getBrizyProject()->getCloudAccountId(); if ( $brizyBlock && $brizyBlock->isSynchronizable( $cloud_account_id ) && !$brizyBlock->isSynchronized( $cloud_account_id ) ) { $updater = new Brizy_Admin_Cloud_BlockBridge( $this->client ); $updater->export( $brizyBlock ); return true; } } protected function syncLayout( $layoutId ) { $brizyLayout = Brizy_Editor_Layout::get( $layoutId ); $cloud_account_id = $this->getClient()->getBrizyProject()->getCloudAccountId(); if ( $brizyLayout && $brizyLayout->isSynchronizable( $cloud_account_id ) && !$brizyLayout->isSynchronized( $cloud_account_id ) ) { $updater = new Brizy_Admin_Cloud_LayoutBridge( $this->client ); $updater->export( $brizyLayout ); return true; } } protected function getLayoutsForSync( $limit = 0 ) { global $wpdb; $savedBlockType = Brizy_Admin_Layouts_Main::CP_LAYOUT; $limitQuery = ""; if ( $limit !== 0 ) { $limitQuery = " LIMIT " . ( (int) $limit ); } $postIds = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} p WHERE p.post_type='{$savedBlockType}' {$limitQuery}" ); return $postIds; } protected function getBlocksForSync( $limit = 0 ) { global $wpdb; $savedBlockType = Brizy_Admin_Blocks_Main::CP_SAVED; $limitQuery = ""; if ( $limit !== 0 ) { $limitQuery = " LIMIT " . ( (int) $limit ); } $postIds = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} p WHERE p.post_type='{$savedBlockType}' {$limitQuery} " ); return $postIds; } }