<?php

defined('ABSPATH') or exit;

$global_options = (array) get_option('mc4wp_form', array());

// find all form posts
$posts = get_posts(
    array(
        'post_type'   => 'mc4wp-form',
        'post_status' => 'publish',
        'numberposts' => -1,
    )
);

$css_map = array(
    'default'      => 'basic',
    'custom'       => 'styles-builder',
    'light'        => 'theme-light',
    'dark'         => 'theme-dark',
    'red'          => 'theme-red',
    'green'        => 'theme-green',
    'blue'         => 'theme-blue',
    'custom-color' => 'theme-custom-color',
);

$stylesheets = array();

foreach ($posts as $post) {
    // get form options from post meta directly
    $options = (array) get_post_meta($post->ID, '_mc4wp_settings', true);

    // store all global options in scoped form settings
    // do this BEFORE changing css key, so we take that as well.
    foreach ($global_options as $key => $value) {
        if (strlen($value) > 0 && ( ! isset($options[ $key ]) || strlen($options[ $key ]) == 0 )) {
            $options[ $key ] = $value;
        }
    }

    // update "css" option value
    if (isset($options['css']) && isset($css_map[ $options['css'] ])) {
        $options['css'] = $css_map[ $options['css'] ];
    }

    // create stylesheets option
    if (! empty($options['css'])) {
        $stylesheet = $options['css'];
        if (strpos($stylesheet, 'theme-') === 0) {
            $stylesheet = 'themes';
        }

        if (! in_array($stylesheet, $stylesheets)) {
            $stylesheets[] = $stylesheet;
        }
    }

    update_post_meta($post->ID, '_mc4wp_settings', $options);
}

// update stylesheets option
update_option('mc4wp_form_stylesheets', $stylesheets);

// delete old options
delete_option('mc4wp_form');
