function weaver_save_current_css() { // write the current generated CSS to a file - called only from Weaver Admin if (!weaver_f_file_access_available()) { weaver_f_file_access_fail('Limited file access. Probably running with reduced functionality.'); return ''; } $save_dir = weaver_f_uploads_base_dir() . 'weaver-subthemes'; $save_url = weaver_f_uploads_base_url() . 'weaver-subthemes'; $usename = 'style-weaver.css'; $ttw_theme_dir_exists = weaver_f_mkdir($save_dir); if (!$ttw_theme_dir_exists) { weaver_f_file_access_fail('Unable to create directory. Probably a file system permission problem. Directory' . $save_dir); } $ttw_theme_dir_writable = $ttw_theme_dir_exists; if (!weaver_f_is_writable($save_dir)) { weaver_f_file_access_fail('Directory not writable. Probably a file system permission problem. Directory: ' . $save_dir); $ttw_theme_dir_writable = false; } $filename = $save_dir . '/' . $usename; // we will add txt if (!$ttw_theme_dir_writable || !$ttw_theme_dir_exists || !($handle = weaver_f_open($filename, 'w'))) { weaver_f_file_access_fail('Unable to create file. Probably a file system permission problem. File: ' . $filename); return ''; } weaver_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", WEAVER_THEMENAME, WEAVER_VERSION, weaver_getopt('ttw_subtheme'))); weaver_output_style($handle); if (!weaver_f_close($handle)) { weaver_f_file_access_fail('Unable to create file. Probably a file system permission problem. File: ' . $filename); return ''; } require_once 'wvr-editorcss.php'; weaver_save_editor_css($save_dir); return $save_url . '/' . $usename; }
function weaver_f_check_WP_Filesystem() { if (!weaver_f_file_access_available()) { return false; } $save_dir = weaver_f_uploads_base_dir() . 'weaver-subthemes'; if (!weaver_f_mkdir($save_dir)) { return false; } return true; }
function weaver_admin_page_process_options() { /* Process all options - called upon entry to options forms */ // echo("WEAVER-SETTINGS:"); var_dump($weaver_main_settings); // echo "POST-weaver-settings:" ; var_dump($_POST['weaver_main_settings']); // echo "POST-FULL:" ; var_dump($_POST); settings_errors(); // display results from SAPI save settings /* ================ Weaver Upgrade 2020 Weaver buttons ================== */ if (weaver_submitted('hide_import_old_weaver')) { weaver_setopt('wvr_hide_if_are_oldWeaver_opts', true); weaver_save_msg(__('Hide 2010 Weaver Notice', WEAVER_TRANSADMIN)); } if (weaver_submitted('import_old_weaver')) { weaver_import_2010_weaver(); weaver_save_msg(__("Previously existing settngs imported.", WEAVER_TRANSADMIN)); } /* ================ Weaver Themes Tab ================== */ if (weaver_submitted('setsubtheme') || weaver_submitted('setsubtheme2')) { /* seems like Mozilla doesn't like 2 sets of select inputs on same page, so we make up 2 ids/names to use */ if (isset($_POST['setsubtheme'])) { $pID = 'ttw_subtheme'; } else { $pID = 'ttw_subtheme2'; } $cur_subtheme = weaver_filter_textarea($_POST[$pID]); /* must have been set to get here */ if ($cur_subtheme == '') { $cur_subtheme = 'Wheat'; } /* but just in case */ /* now, I set all values for theme */ weaver_activate_subtheme($cur_subtheme); $t = weaver_getopt('ttw_subtheme'); if ($t == '') { $t = 'Wheat'; } /* did we save a theme? */ weaver_save_msg(__("Weaver current sub-theme set to: ", WEAVER_TRANSADMIN) . $t); } /* ================ Weaver FTP File Access ================== */ if (weaver_submitted('ftp_save_form')) { if (isset($_POST['ftp_hostnamex'])) { weaver_setopt('ftp_hostname', trim(weaver_filter_textarea($_POST['ftp_hostnamex']))); } if (isset($_POST['ftp_usernamex'])) { weaver_setopt('ftp_username', trim(weaver_filter_textarea($_POST['ftp_usernamex']))); } if (isset($_POST['ftp_passwordx'])) { weaver_setopt('ftp_password', weaver_encrypt(trim($_POST['ftp_passwordx']))); } if (isset($_POST['ftp_hide_check_messagex'])) { weaver_setopt('ftp_hide_check_message', true); } else { weaver_setopt('ftp_hide_check_message', false); } weaver_save_msg(__('FTP File Access Form Settings Saved.', WEAVER_TRANSADMIN)); } /* ================ Weaver Main Options Tab ================== */ /* Weaver Main and Advanced Options processed in validation callbacks */ /* ================ Weaver Advanced Options Tab ================== */ /* SAPI settings are handled in the Main Options Tab section above */ if (weaver_submitted('reset_weaver')) { // delete everything! weaver_save_msg(__('All Weaver settings have been reset to the defaults.', WEAVER_TRANS)); delete_option('weaver_main_settings'); delete_option('weaver_advanced_settings'); weaver_load_cache(); // be sure cache has something valid in it weaver_init_opts('reset_weaver'); } /* ================ Weaver Save/Restore Themes Tab ================== */ /* this tab has the most individual forms and submit commands */ if (weaver_submitted('changethemename')) { if (isset($_POST['newthemename'])) { $new_name = sanitize_user($_POST['newthemename']); weaver_setopt('ttw_themename', $new_name); echo '<div id="message" class="updated fade"><p><strong>Theme name changed to ' . $new_name . '</strong></p></div>'; } global $weaver_dev; if ($weaver_dev) { // used to save a theme for distribution/inclusion in dynamic theme db if (isset($_POST['newthemeimage'])) { weaver_setopt('ttw_theme_image', $_POST['newthemeimage']); } if (isset($_POST['newthemedesc'])) { weaver_setopt('ttw_theme_description', $_POST['newthemedesc']); } } } if (weaver_submitted('savemytheme')) { if (weaver_savemytheme()) { weaver_save_msg(__('All current main and advanced options backed up in <em>My Saved Theme</em>.', WEAVER_TRANSADMIN)); } else { weaver_save_msg(__('ERROR: Saving <em>My Saved Theme</em> failed.', WEAVER_TRANSADMIN)); } } if (weaver_submitted('backup_settings')) { $name = weaver_savebackup(); if ($name !== false) { weaver_save_msg(__('All current main and advanced options backed up in:', WEAVER_TRANSADMIN) . ' "' . $name . '.wvb"'); } else { weaver_save_msg(__('ERROR: Saving backup failed.', WEAVER_TRANSADMIN)); } } if (weaver_submitted('filesavetheme')) { $base = strtolower(sanitize_file_name($_POST['savethemename'])); $temp_url = weaver_write_current_theme($base); if ($temp_url == '') { weaver_save_msg(__('Invalid name supplied to save theme to file.', WEAVER_TRANSADMIN)); } else { weaver_save_msg(__("All current main and advanced options saved in ", WEAVER_TRANSADMIN) . $temp_url); } } if (weaver_submitted('uploadtheme') && isset($_POST['uploadit']) && $_POST['uploadit'] == 'yes') { weaver_uploadit(); } if (weaver_submitted('restoretheme')) { $base = $_POST['ttw_restorename']; $valid = validate_file($base); // make sure an ok file name $fn = weaver_f_uploads_base_dir() . 'weaver-subthemes/' . $base; if ($valid < 1 && weaver_upload_theme($fn)) { $t = weaver_getopt('ttw_subtheme'); if ($t == '') { $t = 'Wheat'; } /* did we save a theme? */ weaver_save_msg(__("Weaver theme restored from file, saved as: ", WEAVER_TRANSADMIN) . $t); } else { weaver_save_msg('<em style="color:red;">' . __('INVALID FILE NAME PROVIDED - Try Again', WEAVER_TRANSADMIN) . "({$fn})" . '</em>'); } } if (weaver_submitted('deletetheme')) { $myFile = $_POST['selectName']; $valid = validate_file($myFile); if ($valid < 1 && $myFile != "None") { weaver_f_delete(weaver_f_uploads_base_dir() . 'weaver-subthemes/' . $myFile); echo '<div style="background-color: rgb(255, 251, 204);" id="message" class="updated fade"><p>File: <strong>' . $myFile . '</strong> has been deleted.</p></div>'; } else { echo '<div style="background-color: rgb(255, 251, 204);" id="message" class="updated fade"><p>File: <strong>' . $myFile . '</strong> invalid file name, not deleted.</p></div>'; } } /* ====================================================== */ if (weaver_submitted('wvrx_save_extension')) { /* for theme extensions */ do_action('wvrx_save_extension'); } if (weaver_submitted('wvrx_plus_save_plus')) { do_action('wvrx_plus_save_plus'); } // All plus submit buttons... weaver_save_opts('Weaver Admin'); /* FINALLY - SAVE ALL OPTIONS AND UPDATE CURRENT CSS FILE */ }
function weaver_get_css_filename() { return weaver_f_uploads_base_dir() . 'weaver-subthemes/style-weaver.css'; }
function weaver_saverestore_admin() { /* admin tab for saving and restoring theme */ if (!weaver_f_file_access_available()) { echo '<h2>Save/Restore Themes and Backups - DISABLED'; weaver_help_link('help.html#SaveRestore', 'Help on Save/Restore Themes'); echo '</h2>'; echo '<p>Weaver will continue to function with reduced functionality. You will be able to change sub-themes, set your own options, and your theme will be displayed with in-line CSS. You won\'t be able to save backups of your work, or have page/post styling.</p>' . "\n"; echo '<div style="display:none">'; $upload_link = ''; } else { $upload_link = weaver_write_current_theme('current_ttw_subtheme'); // make a temp copy } $ttw_theme_dir = weaver_f_uploads_base_dir() . 'weaver-subthemes/'; ?> <h2>Save/Restore Themes and Backups<?php weaver_help_link('help.html#SaveRestore', 'Help on Save/Restore Themes'); ?> </h2> <h4>You can save either all your settings in a backup file, or just theme related settings in a theme file:</h4> <ol style="font-size: 85%"> <li>Save <em>all</em> your current settings in a backup file on your site's file system (in <?php echo $ttw_theme_dir; ?> ). Automatically names the backup file to include current date and time. Survives Weaver Theme updates. -or-</li> <li>"Save in My Saved Theme" - Saves <em>all</em> settings in a special "My Saved Theme" backup file. Survives Weaver Theme updates. -or-</li> <li>Download current theme related settings to a file on your own computer. -or-</li> <li>Save theme related settings to a file on your Site's file system (in <?php echo $ttw_theme_dir; ?> .</li></ol> <?php if (weaver_allow_multisite()) { ?> <h4>You can restore a saved theme or backup file by:</h4> <ol style="font-size: 85%"> <li>Picking "My Saved Theme" backup from the standard themes list. -or-</li> <li>Restoring a theme/backup that you saved in a file on your site (to current settings). -or-</li> <li>Uploading a theme/backup from a file saved on your own computer (to current settings).</li> </ol> <?php } if (!weaver_allow_multisite()) { ?> <h4>You will be unable to restore your saved file directly</h4> <p>Since this is a WordPress Multi-site installation, you are restricted from uploading a Weaver theme/backup from a saved file. However, the save file capability gives you the ability to save your work so you can transfer it to a WordPress site where you have full admin capabilities (non-Multi-site installation, for example), or to share with others. Please note that you <em>can</em> save your settings in "My Saved Theme" which will allow you to explore other predefined themes without losing your work. </p> <?php } ?> <hr /> <h3><span style="color:blue;">Use "My Saved Theme"</span></h3> <?php weaver_st_show_subtheme_form(); /* add the picker for subthemes */ ?> <hr /> <h3><span style="color:blue;">Save Current Settings in Backup File</span></h3> <small><strong>Save</strong> <u>all</u> current options (both Main and Advanced) in a <strong>file</strong> on your WordPress Site's <em><?php echo $ttw_theme_dir; ?> </em> directory named 'weaver_backup_yyyy-mm-dd-hhmm.wvb' where the last part is a GMT based date and time stamp. <?php if (weaver_allow_multisite()) { ?> You will be able to restore this theme later using the <strong>Restore Saved Theme/Backup</strong> section. <?php } ?> Please be sure you've saved any changes you might have made.</small><br /> <form enctype="multipart/form-data" name='backup-settings' method='post'> <span class='submit'><input name='backup_settings' type='submit' value='Backup All Current Settings'/></span> <?php weaver_nonce_field('backup_settings'); ?> </form><br /> <hr /> <h3><span style="color:blue;">Save Current Theme to File or Download to your computer</span></h3> <small><strong>Save</strong> current <em>theme related</em> settings (non-site specific settings), either by downloading to <strong>your computer</strong> or saving a <strong>file</strong> on your WordPress Site's <em><?php echo $ttw_theme_dir; ?> </em> directory. <?php if (weaver_allow_multisite()) { ?> You will be able to restore this theme later using the <strong>Restore Saved Theme/Backup</strong> section. <?php } ?> Please be sure you've saved any changes you might have made.</small><br /><br /> <strong>Save as file on this website's server</strong> <p>Please provide a name for your file, then click the "Save File" button. <b>Warning:</b> Duplicate names will automatically overwrite existing file without notification.</p> <form enctype="multipart/form-data" name='savetheme' method='post'><table cellspacing='10' cellpadding='5'> <table> <td>Name for saved theme: <input type="text" name="savethemename" size="30" /> <small>(Please use a meaningful name - do not provide file extension. Name might be altered to standard form.)</small></td></tr> <tr> <td><span class='submit'><input name='filesavetheme' type='submit' value='Save Theme in File'/></span> <small><strong>Save Theme in File</strong> - Theme will be saved in <em><?php echo $ttw_theme_dir; ?> </em> directory on your site server.</small></td> </tr> </table> <?php weaver_nonce_field('filesavetheme'); ?> </form><br /> <strong>Download to your computer</strong> <p>Please <em>right</em>-click <a href="<?php echo "{$upload_link}"; ?> "><strong>[* here *]</strong></a> to download the saved theme to your computer. </p> <?php if (weaver_allow_multisite()) { ?> <hr /> <h3><span style="color:blue;">Restore Saved Theme/Backup from file</span></h3> <small>You can restore a previously saved theme (.wvr) or backup (.wvb) file directly from your WordPress Site's <em><?php echo $ttw_theme_dir; ?> </em> directory, or from a file saved on your computer. Note: after you restore a saved theme, it will be loaded into the current settings. A <em>theme</em> restore will replace only settings that are not site-specific. A <em>backup</em> file will replace all current settings. If you've uploaded the theme from your computer, you might then want to also save a local copy on your website server.</small><br /><br /> <form enctype="multipart/form-data" name='localrestoretheme' method='post'><table cellspacing='10' cellpadding='5'> <table> <tr><td><strong>Restore from file saved on this website's server</strong></td></tr> <tr> <td>Select theme/backup file: <?php weaver_subtheme_list('ttw_restorename'); ?> Note: <strong>.wvr</strong> are Theme definitions. <strong>.wvb</strong> are full backups. (Restores to current settings.)</td></tr> <tr> <td><span class='submit'><input name='restoretheme' type='submit' value='Restore Theme/Backup'/></span> <small><strong>Restore</strong> a theme/backup you've previously saved on your site's <em><?php echo $ttw_theme_dir; ?> </em> directory. Will replace current settings.</small></td> </tr> <tr><td> </td></tr> </table> <?php weaver_nonce_field('restoretheme'); ?> </form> <form enctype="multipart/form-data" action="<?php echo $_SERVER["REQUEST_URI"]; ?> " method="POST"> <table> <tr><td><strong>Upload file saved on your computer</strong></td></tr> <tr valign="top"> <td>Select theme/backup file to upload: <input name="uploaded" type="file" /> <input type="hidden" name="uploadit" value="yes" /> (Restores to current settings.) </td> </tr> <tr><td><span class='submit'><input name="uploadtheme" type="submit" value="Upload theme/backup" /></span> <small><strong>Upload and Restore</strong> a theme/backup from file on your computer. Will become current settings.</small></td></tr> <tr><td> </td></tr> </table> <?php weaver_nonce_field('uploadtheme'); ?> </form> <hr /> <form enctype="multipart/form-data" name='maintaintheme' method='post'> <h3><span style="color:green;">Sub-theme and Backup File Maintenance</span></h3> <?php weaver_subtheme_list('selectName'); ?> <span class='submit'><input name='deletetheme' type='submit' value='Delete Sub-Theme/Backup File'/></span> <strong>Warning!</strong>This action can't be undone, so be sure you mean to delete a file! <?php weaver_nonce_field('deletetheme'); ?> </form> <?php } if (!weaver_f_file_access_available()) { echo '</div> <!-- end of hiding save/restore because not file access available -->'; } ?> <hr /> <form name="ttw_resetweaver_form" method="post" onSubmit="return confirm('Are you sure you want to reset all Weaver settings?');"> <h3><span style="color:green;">Clear all Weaver Settings</span></h3> <strong>Click the Clear button to reset all Weaver settings to the default values.</strong><br > <em>Warning: You will lose all current settings.</em> You should use "Backup All Current Settings" to save a copy of your current settings before clearing! <span class="submit"><input type="submit" name="reset_weaver" value="Clear All Weaver Settings"/></span> <?php weaver_nonce_field('reset_weaver'); ?> </form> <!-- ttw_resetweaver_form --> <hr /> <?php }