Snippets

MVF Export data from legacy Builders Library

Created by Fernando Paredes Murillo
<?php
add_action( 'wp_loaded', 'bulli_export_json', 99 );
function bulli_export_json() {
    global $bulli;

    if ( is_admin() && isset( $_GET['bulli_export_json'] ) && $_GET['bulli_export_json'] == 'true' ) {

        $builder_ids =  bulli_get_post_ids( 'bulli-builder' );
        $industry_ids =  bulli_get_post_ids( 'bulli-industries' );
        array_unshift( $industry_ids, 0 );
        $feature_ids =  bulli_get_post_ids( 'bulli-feature' );

        $wpml_languages = ['es', 'de', 'fr'];

        $export = [];

        foreach( $builder_ids as $builder_id ){
            set_time_limit( 50 );

            foreach ( $industry_ids as $industry_id ){
                foreach ( $feature_ids as $feature_id ){
                    $value = bulli_get_feature_value_from_acf( $builder_id, $industry_id, $feature_id );
                    $comment = bulli_get_feature_comment_from_acf( $builder_id, $industry_id, $feature_id );
                    if ( ! bulli_is_empty_recursively( $value ) ){
                        $export[$builder_id][$industry_id][$feature_id]['value']['--'] = $value;
                    }
                    if ( $comment ){
                        $export[$builder_id][$industry_id][$feature_id]['comment']['--'] = $comment;
                    }

                    foreach ( $wpml_languages as $language ){
                        $value = bulli_get_feature_value_from_acf( $builder_id, $industry_id, $feature_id, $language );
                        $comment = bulli_get_feature_comment_from_acf( $builder_id, $industry_id, $feature_id, $language );
                        if ( ! bulli_is_empty_recursively( $value ) ){
                            $export[$builder_id][$industry_id][$feature_id]['value'][$language] = $value;
                        }
                        if ( $comment ){
                            $export[$builder_id][$industry_id][$feature_id]['comment'][$language] = $comment;
                        }
                    }
                }
            }
        }

        echo serialize( $export );
        die();
    }
}


function bulli_get_post_ids( $post_type ){
    $query = new WP_Query( array(
        'post_type' => $post_type,
        'post_status' => 'publish',
        'posts_per_page' => 200,
        'fields' => 'ids',
    ) );
    return $query->get_posts();
}

function bulli_get_feature_value_from_acf( int $builder_id, int $industry_id, int $feature_id, string $language_key = '' ){
    $industry_prefix = $industry_id ? get_post( $industry_id )->post_name : 'default';
    $field_name = $industry_prefix . '_group_field_' . $industry_prefix . '_feat_' . $feature_id;
    $field_name .= $language_key ? '_' . $language_key : '';
    $value = get_field( $field_name, $builder_id );
    if ( is_array( $value ) ){
        foreach ( $value as $key => $row ){
            if ( isset( $value[$key]['monthly_price']['dollars'] ) ){
                $value[$key]['monthly_price']['USD'] = $value[$key]['monthly_price']['dollars'];
                unset( $value[$key]['monthly_price']['dollars'] );
            }
            if ( isset( $value[$key]['annual_price']['dollars'] ) ){
                $value[$key]['annual_price']['USD'] = $value[$key]['annual_price']['dollars'];
                unset( $value[$key]['annual_price']['dollars'] );
            }
        }
    }

    return $value;
}

function bulli_get_feature_comment_from_acf( int $builder_id, int $industry_id, int $feature_id, string $language_key = '' ){
    $industry_prefix = $industry_id ? get_post( $industry_id )->post_name : 'default';
    $field_suffix = $language_key ? '_' .  $language_key . '_comment' : '_comment';
    $comment = get_field( $industry_prefix . '_group_field_' . $industry_prefix . '_feat_' . $feature_id . $field_suffix, $builder_id );;
    $comment = nl2br( $comment ) ;
    return $comment;
}

function bulli_is_empty_recursively ( $var ) {
        if ( is_array( $var ) ) {
                foreach ( $var as $value ) {
                        if ( is_array( $value ) ) {
                                if ( ! bulli_is_empty_recursively( $value ) ) {
                                        return false;
                }
            }elseif ( ! empty( $value ) ) {
                                return false;
            }
        }
    } elseif ( ! empty( $var ) ) {
                return false;
    }
    return true;
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.