/** * 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>'; } }