function weaverx_fwrite_current_css()
{
    // write the current generated CSS to a file - called only from Weaver II Admin
    if (!weaverx_f_file_access_available() || !current_user_can('edit_theme_options')) {
        return '';
    }
    $save_dir = weaverx_f_uploads_base_dir() . 'weaverx-subthemes';
    $save_url = weaverx_f_uploads_base_url() . 'weaverx-subthemes';
    $usename = 'style-weaverxt.css';
    $theme_dir_exists = weaverx_f_mkdir($save_dir);
    if (!$theme_dir_exists) {
        weaverx_f_file_access_fail(__('Unable to create directory. Probably a file system permission problem. Directory', 'weaver-xtreme') . $save_dir);
    }
    $theme_dir_writable = $theme_dir_exists;
    if (!weaverx_f_is_writable($save_dir)) {
        weaverx_f_file_access_fail(__('Directory not writable. Probably a file system permission problem. Directory: ', 'weaver-xtreme') . $save_dir);
        $theme_dir_writable = false;
    }
    $filename = $save_dir . '/' . $usename;
    // we will add txt
    if (!$theme_dir_writable || !$theme_dir_exists || !($handle = weaverx_f_open($filename, 'w'))) {
        weaverx_f_file_access_fail(__('Unable to create file. Probably a file system permission problem. File: ', 'weaver-xtreme') . $filename);
        return '';
    }
    // This string goes in the generated CSS file
    weaverx_f_write($handle, sprintf("/* WARNING: Do not edit this file. It is dynamically generated. Any edits you make will be overwritten. */\n/* This file generated using %s %s subtheme: %s */\n", WEAVERX_THEMENAME, WEAVERX_VERSION, weaverx_getopt('wii_subtheme')));
    weaverx_output_style($handle);
    if (!weaverx_f_close($handle)) {
        weaverx_f_file_access_fail(__('Unable to create file. Probably a file system permission problem. File: ', 'weaver-xtreme') . $filename);
        return '';
    }
    return $save_url . '/' . $usename;
}
 public static function reset_options($contents)
 {
     if (substr($contents, 0, 10) == 'WXT-V01.00') {
         $type = 'theme';
     } else {
         if (substr($contents, 0, 10) == 'WXB-V01.00') {
             $type = 'backup';
         } else {
             $val = substr($contents, 0, 10);
             self::$wvrx_error = __("Wrong theme file format version", 'weaver-xtreme') . ':' . $val;
             return false;
             /* simple check for one of ours */
         }
     }
     $restore = array();
     $restore = unserialize(substr($contents, 10));
     if (!$restore) {
         self::$wvrx_error = __("Unserialize failed", 'weaver-xtreme');
         return false;
     }
     $version = weaverx_getopt('weaverx_version_id');
     // get something to force load
     $new_cache = array();
     global $weaverx_opts_cache;
     if ($type == 'theme') {
         // need to clear some settings
         // first, pickup the per-site settings that aren't theme related...
         foreach ($weaverx_opts_cache as $key => $val) {
             if (isset($key[0]) && $key[0] == '_') {
                 // these are non-theme specific settings
                 $new_cache[$key] = $val;
             }
             // keep
         }
         $opts = $restore['weaverx_base'];
         // fetch base opts
         foreach ($opts as $key => $val) {
             if (isset($key[0]) && $key[0] != '_') {
                 $new_cache[$key] = $val;
             }
             // and add rest from restore
         }
     } else {
         if ($type == 'backup') {
             $opts = $restore['weaverx_base'];
             // fetch base opts
             foreach ($opts as $key => $val) {
                 $new_cache[$key] = $val;
                 // overwrite with saved values
             }
         }
     }
     $new_cache['weaverx_version_id'] = $version;
     $new_cache['wvrx_css_saved'] = '';
     $new_cache['last_option'] = 'Weaver Xtreme';
     $new_cache['style_date'] = date('Y-m-d-H:i:s');
     delete_option('weaverx_settings');
     update_option('weaverx_settings', $new_cache);
     $save_dir = weaverx_f_uploads_base_dir() . 'weaverx-subthemes';
     $usename = 'style-weaverxt.css';
     $filename = $save_dir . '/' . $usename;
     @unlink($filename);
     $weaverx_opts_cache = $new_cache;
     if (weaverx_f_file_access_available()) {
         // and now is the time to update the style file
         require_once get_template_directory() . '/includes/generatecss.php';
         weaverx_fwrite_current_css();
     }
     return true;
 }
function weaverx_saverestore()
{
    /* admin tab for saving and restoring theme */
    $weaverx_theme_dir = esc_url(weaverx_f_uploads_base_dir() . 'weaverx-theme/');
    $download_path = esc_url(weaverx_relative_url('includes/download.php'));
    $download_img_path = esc_url(weaverx_relative_url('assets/images/download.png'));
    $nonce = wp_create_nonce('weaverx_download');
    $a_pro = function_exists('weaverxplus_plugin_installed') ? '-plus' : '';
    ?>
<h3 class="atw-option-subheader" style="color:blue;">
	<?php 
    _e('Save/Restore Current Theme Settings using Your Computer', 'weaver-xtreme');
    ?>
</h3>
<p>
	<?php 
    _e('This option allows you to save and restore all current theme settings by uploading and downloading to your own computer.', 'weaver-xtreme');
    ?>
</p>

<h3><?php 
    _e('Download Current Settings To Your Computer', 'weaver-xtreme');
    ?>
</h3>

<a href="<?php 
    echo $download_path . '?_wpnonce=' . $nonce;
    ?>
"><img src="<?php 
    echo esc_url($download_img_path);
    ?>
" />
&nbsp; <strong><?php 
    _e('Download', 'weaver-xtreme');
    ?>
</strong>&nbsp;</a> -
<?php 
    _e('<strong>Save all</strong> current settings to file on your computer.
(Full settings backup, including those marked with &diams;.) <em>File:</em>', 'weaver-xtreme');
    ?>
<strong>weaverx-backup-settings<?php 
    echo $a_pro;
    ?>
.wxb</strong>
<br />
<br />
<a href="<?php 
    echo $download_path . '?_wpnoncet=' . $nonce;
    ?>
"><img src="<?php 
    echo esc_url($download_img_path);
    ?>
" />
&nbsp;<strong><?php 
    _e('Download', 'weaver-xtreme');
    ?>
</strong></a>&nbsp; -
<?php 
    _e('<strong><em>Save only theme related</em></strong> current settings to file on your computer. <em>File:</em>
<strong>weaverx-theme-settings<?php echo $a_pro;?>.wxt</strong>', 'weaver-xtreme');
    if (function_exists('weaverxplus_plugin_installed')) {
        echo '<p>' . __('Note: Downloaded settings include <em>Weaver Xtreme Plus</em> settings.
Setting files from Weaver Xtreme Plus can be uploaded to the Free Weaver Xtreme version, but will not be used or saved by the free version.', 'weaver-xtreme') . '</p>';
    }
    ?>

<form enctype="multipart/form-data" action="<?php 
    echo $_SERVER["REQUEST_URI"];
    ?>
" method="POST">
	<table>
		<tr><td><h3><?php 
    _e('Upload settings from file saved on your computer', 'weaver-xtreme');
    ?>
</h3></td></tr>

		<tr valign="top">
		<td><?php 
    _e('Select theme/backup file to upload:', 'weaver-xtreme');
    ?>
		<span style="border:1px solid black;padding:2px;"><input name="uploaded" type="file" /></span>
			<input type="hidden" name="uploadit" value="yes" />&nbsp;<?php 
    _e('(Restores settings in file to current settings.)', 'weaver-xtreme');
    ?>
		</td>
		</tr>

		<tr><td><span class='submit'>
		<input name="uploadtheme" type="submit" value="<?php 
    _e('Upload theme/backup', 'weaver-xtreme');
    ?>
" /></span>
		&nbsp;<small><?php 
    _e('<strong>Upload and Restore</strong> a theme/backup from file on your computer. Will become current settings.', 'weaver-xtreme');
    ?>
		</small></td></tr>

		<tr><td>
		<?php 
    if (!function_exists('weaverxplus_plugin_installed')) {
        echo '<small>' . __('Note: Any Weaver Xtreme Plus settings will <em>not</em> be restored for Weaver Xtreme Free version.', 'weaver-xtreme') . '</small>';
    }
    ?>
&nbsp;</td></tr>

	</table>
	<?php 
    weaverx_nonce_field('uploadtheme');
    ?>
	</form>
<?php 
}