/**
 * If a file has been uploaded to import options, it parses the file, formats into a nice array
 * via the $mapping, then updates the setting in the DB.
 *
 * @author Gary Jones
 * @since 0.9.6
 * @uses prose_get_mapping
 */
function prose_process_import()
{
    if (isset($_POST['prose'])) {
        if ('import' == $_POST['prose']) {
            check_admin_referer('prose-import', '_wpnonce-prose-import');
            if (strpos($_FILES['file']['name'], prose_get_export_filename_prefix()) === false) {
                wp_redirect(admin_url('admin.php?page=design-settings&prose=wrongfile'));
            } elseif ($_FILES['file']['error'] > 0) {
                wp_redirect(admin_url('admin.php?page=design-settings&prose=file'));
            } else {
                $raw_options = file_get_contents($_FILES['file']['tmp_name']);
                $options = unserialize($raw_options);
                $mapping = prose_get_mapping();
                foreach ($options as $selector => $declaration) {
                    if (!is_array($declaration)) {
                        // custom_css or minify_css
                        if ('custom_css' == $selector) {
                            prose_create_custom_stylesheet($declaration);
                        } else {
                            $opt = $selector;
                            $newvalue = $declaration;
                            $newarray[$opt] = $newvalue;
                        }
                    } else {
                        foreach ($declaration as $property => $value) {
                            if (!is_array($value)) {
                                // color, font-style, text-decoration etc
                                $opt = $mapping[$selector][$property];
                                $newvalue = $value;
                                $newarray[$opt] = $newvalue;
                            } else {
                                // multi-value properties: margin, padding, etc
                                foreach ($value as $index => $composite_value) {
                                    $type = $mapping[$selector][$property][$index][1];
                                    if ('fixed_string' != $type) {
                                        $opt = $mapping[$selector][$property][$index][0];
                                        $newvalue = $composite_value['value'];
                                        $newarray[$opt] = $newvalue;
                                    }
                                }
                            }
                        }
                    }
                }
                update_option(PROSE_SETTINGS_FIELD, $newarray);
                wp_redirect(admin_url('admin.php?page=design-settings&prose=import'));
            }
        }
    }
}
/**
 * Returns the generated export file as a download.
 *
 * @author Gary Jones
 * @since 0.9.6
 */
function prose_create_export()
{
    $output = prose_prepare_export();
    $output = serialize($output);
    check_admin_referer('prose-export');
    header('Content-Description: File Transfer');
    header('Cache-Control: public, must-revalidate');
    header('Pragma: hack');
    header('Content-Type: text/plain');
    header('Content-Disposition: attachment; filename="' . prose_get_export_filename_prefix() . date("Ymd-His") . '.dat"');
    header('Content-Length: ' . strlen($output));
    echo $output;
    exit;
}
function prose_settings_notice()
{
    if (!isset($_REQUEST['page']) || $_REQUEST['page'] != 'design-settings') {
        return;
    }
    if (isset($_REQUEST['reset']) && $_REQUEST['reset'] == 'true') {
        echo '<div id="message" class="updated"><p>' . __('Design Settings Reset', PROSE_DOMAIN) . '</p></div>';
    } elseif (isset($_REQUEST['updated']) && $_REQUEST['updated'] == 'true') {
        echo '<div id="message" class="updated"><p>' . __('Design Settings Saved', PROSE_DOMAIN) . '</p></div>';
    } elseif (isset($_REQUEST['prose']) && 'import' == $_REQUEST['prose']) {
        echo '<div id="message" class="updated"><p>' . __('Design Settings Imported', PROSE_DOMAIN) . '</p></div>';
    } elseif (isset($_REQUEST['prose']) && 'wrongfile' == $_REQUEST['prose']) {
        echo '<div id="message" class="error"><p><strong>' . sprintf(__('You tried to import an incorrect file. The filename should start with "%s".', PROSE_DOMAIN), prose_get_export_filename_prefix()) . '</strong></p></div>';
    } elseif (isset($_REQUEST['prose']) && 'file' == $_REQUEST['prose']) {
        echo '<div id="message" class="error"><p><strong>' . __('There was a problem with the file you uploaded.', PROSE_DOMAIN) . '</strong></p></div>';
    }
    if (prose_make_stylesheet_path_writable()) {
        echo '<div id="message-unwritable" class="error"><p><strong>' . sprintf(__('The %s folder does not exist or is not writeable. Please create it or <a href="http://codex.wordpress.org/Changing_File_Permissions">change file permissions</a> to 777.', PROSE_DOMAIN), _get_template_edit_filename(prose_get_stylesheet_location('path'), dirname(prose_get_stylesheet_location('path')))) . '</strong></p></div>';
    }
}