Current Path : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/migrations/ |
Current File : /var/www/ooareogundevinitiative/wp-content/plugins/brizy/admin/migrations/posts-trait.php |
<?php trait Brizy_Admin_Migrations_PostsTrait { /** * @return |null */ public function getProjectPost() { global $wpdb; $row = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->posts} p WHERE p.post_type = %s and p.post_status='publish' ORDER BY ID DESC LIMIT 1 ", Brizy_Editor_Project::BRIZY_PROJECT ), OBJECT ); $projectPost = null; if ( isset( $row[0] ) ) { return $row[0]; } return null; } /** * Get posts and meta */ public function get_posts_and_meta() { global $wpdb; // query all posts (all post_type, all post_status) that have meta_key = 'brizy' and is not 'revision' return $wpdb->get_results( " SELECT p.ID, pm.meta_value FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE pm.meta_key = 'brizy' AND p.post_type != 'revision' AND p.post_type != 'attachment' " ); } /** * Get Globals posts */ public function get_globals_posts() { global $wpdb; // query all global posts return $wpdb->get_results( " SELECT p.ID, pm.meta_value FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE pm.meta_key = 'brizy-project' AND p.post_type = 'brizy-project' " ); } /** * Parse array of shortcodes recursive */ public function array_walk_recursive_and_delete( array &$array, callable $callback, $userdata = null ) { foreach ( $array as $key => &$value ) { if ( is_array( $value ) ) { $value = $this->array_walk_recursive_and_delete( $value, $callback, $userdata ); // if is shortcode parse recursive if ( isset( $value['type'], $value['value'] ) ) { $this->parse_shortcodes( $value ); } } } return $array; } /** * Migrate post */ public function migrate_post( $json_value ) { $old_arr = json_decode( $json_value, true ); if ( is_null( $old_arr ) ) { return $json_value; } $new_arr = $this->array_walk_recursive_and_delete( $old_arr, function ( $value, $key ) { if ( is_array( $value ) ) { return empty( $value ); } if ( isset( $value['type'], $value['value'] ) ) { // if is shortcode return true return true; } } ); return json_encode( $new_arr ); } /** * Parse shortcodes */ public function parse_shortcodes( array &$array ) { // rewrite this function in your class return $array; } /** * Unset mobile keys */ public function unset_prefixed_keys( array &$array, $atts = array() ) { // merge with default $atts $atts = array_merge( array( "shortcode" => "", "delete_keys" => array(), "dependent_keys" => false, "key_prefix" => "mobile" ), $atts ); if ( empty( $atts['shortcode'] ) && empty( $atts['delete_keys'] ) ) { return $array; } if ( $atts['shortcode'] == $array['type'] ) { $keys_to_remove = array(); foreach ( $atts['delete_keys'] as $key_to_delete ) { // replace "prefix" with empty string then make first letter lowercase $key = lcfirst( str_replace( $atts['key_prefix'], "", $key_to_delete ) ); if ( isset( $array['value'][ $key ], $array['value'][ $key_to_delete ] ) && $array['value'][ $key ] === $array['value'][ $key_to_delete ] ) { $keys_to_remove[] = $key_to_delete; } } // !Atention if the number of keys to delete are not the same to not delete if ( $atts['dependent_keys'] && count( $keys_to_remove ) != count( $atts['delete_keys'] ) ) { $keys_to_remove = array(); } // remove keys if ( ! empty( $keys_to_remove ) ) { foreach ( $keys_to_remove as $key_to_remove ) { unset( $array['value'][ $key_to_remove ] ); } } } return $array; } }