File: /home/vhosts/harpoeditore.it/httpdocs/wp-content/plugins/wp-file-upload/lib/wfu_admin_settings.php
<?php
/**
* Settings Page in Dashboard Area of Plugin
*
* This file contains functions related to Settings page of plugin's Dashboard
* area.
*
* @link /lib/wfu_admin_settings.php
*
* @package WordPress File Upload Plugin
* @subpackage Core Components
* @since 3.0.0
*/
/**
* Initialize Plugin's Settings.
*
* This function initializes the plugin's settings.
*
* @since 4.1.0
*
* @return array Array containing plugin settings and their default values.
*/
function wfu_settings_definitions() {
$settings = array(
"version" => array("number", "1.0"),
"shortcode" => array("string", ""),
"hashfiles" => array("number", ""),
"basedir" => array("string", ""),
"personaldata" => array("number", ""),
"postmethod" => array("number", ""),
"modsecurity" => array("number", ""),
"userstatehandler" => array("number", "dboption"),
"relaxcss" => array("number", ""),
"admindomain" => array("number", ""),
"mediacustom" => array("number", ""),
"createthumbnails" => array("number", ""),
"includeotherfiles" => array("number", ""),
"altserver" => array("number", ""),
"captcha_sitekey" => array("string", ""),
"captcha_secretkey" => array("string", ""),
"browser_permissions" => array("array", "")
);
/**
* Customize settings definitions.
*
* This filter allows extensions to add their own settings.
*
* @since 4.1.0
*
* @param array $settings Array containing plugin settings and their
* default values.
*/
$settings = apply_filters("_wfu_settings_definitions", $settings);
return $settings;
}
/**
* Encode Plugin Settings.
*
* This function encodes the plugin settings array into a string.
*
* @since 2.1.3
*
* @param array $plugin_options The plugin settings.
*
* @return string The encoded plugin settings.
*/
function wfu_encode_plugin_options($plugin_options) {
$settings = wfu_settings_definitions();
$encoded_options = array();
foreach ( $settings as $setting => $data ) {
$encoded = $setting."=";
if ( !isset($plugin_options[$setting]) ) $encoded .= $data[1];
elseif ( $data[0] == "string" ) $encoded .= wfu_plugin_encode_string($plugin_options[$setting]);
elseif ( $data[0] == "array" ) $encoded .= wfu_encode_array_to_string($plugin_options[$setting]);
else $encoded .= $plugin_options[$setting];
array_push($encoded_options, $encoded);
}
return implode(";", $encoded_options);
}
/**
* Decode Plugin Settings.
*
* This function decodes the plugin settings string into an array.
*
* @since 2.1.3
*
* @param string $encoded_options The encoded plugin settings.
*
* @return array The decoded plugin settings.
*/
function wfu_decode_plugin_options($encoded_options) {
$settings = wfu_settings_definitions();
foreach ( $settings as $setting => $data )
$plugin_options[$setting] = $data[1];
$decoded_array = explode(';', $encoded_options);
foreach ($decoded_array as $decoded_item) {
if ( trim($decoded_item) != "" ) {
list($item_key, $item_value) = explode("=", $decoded_item, 2);
if ( isset($settings[$item_key]) ) {
if ( $settings[$item_key][0] == "string" ) $plugin_options[$item_key] = wfu_plugin_decode_string($item_value);
elseif ( $settings[$item_key][0] == "array" ) $plugin_options[$item_key] = wfu_decode_array_from_string($item_value);
else $plugin_options[$item_key] = $item_value;
}
}
}
return $plugin_options;
}
/**
* Display the Settings Page.
*
* This function displays the Settings page of the plugin's Dashboard area.
*
* @since 2.1.2
*
* @param string $message Optional. A message to display on top of the page.
*
* @return string The HTML output of the plugin's Settings Dashboard page.
*/
function wfu_manage_settings($message = '') {
if ( !current_user_can( 'manage_options' ) ) return;
$siteurl = site_url();
$plugin_options = wfu_decode_plugin_options(get_option( "wordpress_file_upload_options" ));
$echo_str = '<div class="wrap">';
$echo_str .= "\n\t".'<h2>Wordpress File Upload Control Panel</h2>';
$echo_str .= "\n\t".'<div style="margin-top:20px;">';
$echo_str .= wfu_generate_dashboard_menu("\n\t\t", "Settings");
$echo_str .= "\n\t\t".'<form enctype="multipart/form-data" name="editsettings" id="editsettings" method="post" action="'.$siteurl.'/wp-admin/options-general.php?page=wordpress_file_upload&action=edit_settings" class="validate">';
$nonce = wp_nonce_field('wfu_edit_admin_settings', '_wpnonce', false, false);
$nonce_ref = wp_referer_field(false);
$echo_str .= "\n\t\t\t".$nonce;
$echo_str .= "\n\t\t\t".$nonce_ref;
$echo_str .= "\n\t\t\t".'<input type="hidden" name="action" value="edit_settings">';
$echo_str .= "\n\t\t\t".'<table class="form-table">';
$echo_str .= "\n\t\t\t\t".'<tbody>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<h3>General Settings</h3>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_hashfiles">Hash Files</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_hashfiles" id="wfu_hashfiles" type="checkbox"'.($plugin_options['hashfiles'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> Enables better control of uploaded files, but slows down performance when uploaded files are larger than 100MBytes';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['hashfiles'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_basedir">Base Directory</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_basedir" id="wfu_basedir" type="text" value="'.$plugin_options['basedir'].'" />';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.$plugin_options['basedir'].'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_personaldata">Personal Data</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_personaldata" id="wfu_personaldata" type="checkbox"'.($plugin_options['personaldata'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> Enable this option if your website is subject to EU GDPR regulation and you want to define how to handle personal data';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['personaldata'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_postmethod">Post Method</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<select name="wfu_postmethod" id="wfu_postmethod" value="'.$plugin_options['postmethod'].'">';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="fopen"'.( $plugin_options['postmethod'] == 'fopen' || $plugin_options['postmethod'] == '' ? ' selected="selected"' : '' ).'>Using fopen (default)</option>';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="curl"'.( $plugin_options['postmethod'] == 'curl' ? ' selected="selected"' : '' ).'>Using cURL</option>';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="socket"'.( $plugin_options['postmethod'] == 'socket' ? ' selected="selected"' : '' ).'>Using Sockets</option>';
$echo_str .= "\n\t\t\t\t\t\t\t".'</select>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.( $plugin_options['postmethod'] == 'fopen' || $plugin_options['postmethod'] == '' ? 'Using fopen' : ( $plugin_options['postmethod'] == 'curl' ? 'Using cURL' : 'Using Sockets' ) ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_userstatehandler">User State Handler</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<select name="wfu_userstatehandler" id="wfu_userstatehandler" value="'.$plugin_options['userstatehandler'].'">';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="dboption"'.( $plugin_options['userstatehandler'] == 'dboption' ? ' selected="selected"' : '' ).'>Cookies/DB (default)</option>';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="session"'.( $plugin_options['userstatehandler'] == 'session' || $plugin_options['userstatehandler'] == '' ? ' selected="selected"' : '' ).'>Session</option>';
$echo_str .= "\n\t\t\t\t\t\t\t".'</select>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.( $plugin_options['userstatehandler'] == 'session' || $plugin_options['userstatehandler'] == '' ? 'Session' : ( $plugin_options['userstatehandler'] == 'dboption' ? 'Cookies/DB' : 'Session' ) ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_relaxcss">Relax CSS Rules</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_relaxcss" id="wfu_relaxcss" type="checkbox"'.($plugin_options['relaxcss'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> If enabled then the textboxes and the buttons of the plugin will inherit the theme\'s styling';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['relaxcss'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_admindomain">Admin Domain</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<select name="wfu_admindomain" id="wfu_admindomain" value="'.$plugin_options['admindomain'].'">';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="siteurl"'.( $plugin_options['admindomain'] == 'siteurl' || $plugin_options['admindomain'] == '' ? ' selected="selected"' : '' ).'>Using site_url (default)</option>';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="adminurl"'.( $plugin_options['admindomain'] == 'adminurl' ? ' selected="selected"' : '' ).'>Using admin_url</option>';
$echo_str .= "\n\t\t\t\t\t\t\t\t".'<option value="homeurl"'.( $plugin_options['admindomain'] == 'homeurl' ? ' selected="selected"' : '' ).'>Using home_url</option>';
$echo_str .= "\n\t\t\t\t\t\t\t".'</select>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.( $plugin_options['admindomain'] == 'siteurl' || $plugin_options['admindomain'] == '' ? 'Using site_url' : ( $plugin_options['admindomain'] == 'adminurl' ? 'Using admin_url' : 'Using home_url' ) ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_mediacustom">Show Custom Fields in Media Library</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_mediacustom" id="wfu_mediacustom" type="checkbox"'.($plugin_options['mediacustom'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> If enabled and the uploaded files are added to Media Library then any user fields submitted together with the files will be shown in Media Library';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['mediacustom'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_includeotherfiles">Include Other Files in Plugin\'s Database</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_includeotherfiles" id="wfu_includeotherfiles" type="checkbox"'.($plugin_options['includeotherfiles'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> If enabled administrators can include in the plugin\'s database additional files through the File Browser';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['includeotherfiles'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t\t".'<tr>';
$echo_str .= "\n\t\t\t\t\t\t".'<th scope="row">';
$echo_str .= "\n\t\t\t\t\t\t\t".'<label for="wfu_altserver">Use Alternative Iptanus Server</label>';
$echo_str .= "\n\t\t\t\t\t\t".'</th>';
$echo_str .= "\n\t\t\t\t\t\t".'<td>';
$echo_str .= "\n\t\t\t\t\t\t\t".'<input name="wfu_altserver" id="wfu_altserver" type="checkbox"'.($plugin_options['altserver'] == '1' ? ' checked="checked"' : '' ).' style="width:auto;" /> Switches to the alternative Iptanus server, residing on Google Cloud, for getting information such as latest version number.';
$echo_str .= "\n\t\t\t\t\t\t\t".'<p style="cursor: text; font-size:9px; padding: 0px; margin: 0px; width: 95%; color: #AAAAAA;">Current value: <strong>'.($plugin_options['altserver'] == '1' ? 'Yes' : 'No' ).'</strong></p>';
$echo_str .= "\n\t\t\t\t\t\t".'</td>';
$echo_str .= "\n\t\t\t\t\t".'</tr>';
$echo_str .= "\n\t\t\t\t".'</tbody>';
$echo_str .= "\n\t\t\t".'</table>';
$echo_str .= "\n\t\t\t".'<p class="submit">';
$echo_str .= "\n\t\t\t\t".'<input type="submit" class="button-primary" name="submitform" value="Update" />';
$echo_str .= "\n\t\t\t".'</p>';
$echo_str .= "\n\t\t".'</form>';
$echo_str .= "\n\t".'</div>';
$echo_str .= "\n".'</div>';
echo $echo_str;
}
/**
* Update Settings.
*
* This function updates plugin's settings.
*
* @since 2.1.2
*
* @return bool Always true.
*/
function wfu_update_settings() {
if ( !current_user_can( 'manage_options' ) ) return;
if ( !check_admin_referer('wfu_edit_admin_settings') ) return;
$plugin_options = wfu_decode_plugin_options(get_option( "wordpress_file_upload_options" ));
$new_plugin_options = array();
// $enabled = ( isset($_POST['wfu_enabled']) ? ( $_POST['wfu_enabled'] == "on" ? 1 : 0 ) : 0 );
$hashfiles = ( isset($_POST['wfu_hashfiles']) ? ( $_POST['wfu_hashfiles'] == "on" ? 1 : 0 ) : 0 );
$personaldata = ( isset($_POST['wfu_personaldata']) ? ( $_POST['wfu_personaldata'] == "on" ? 1 : 0 ) : 0 );
$relaxcss = ( isset($_POST['wfu_relaxcss']) ? ( $_POST['wfu_relaxcss'] == "on" ? 1 : 0 ) : 0 );
$mediacustom = ( isset($_POST['wfu_mediacustom']) ? ( $_POST['wfu_mediacustom'] == "on" ? 1 : 0 ) : 0 );
$includeotherfiles = ( isset($_POST['wfu_includeotherfiles']) ? ( $_POST['wfu_includeotherfiles'] == "on" ? 1 : 0 ) : 0 );
$altserver = ( isset($_POST['wfu_altserver']) ? ( $_POST['wfu_altserver'] == "on" ? 1 : 0 ) : 0 );
if ( isset($_POST['wfu_basedir']) && isset($_POST['wfu_postmethod']) && isset($_POST['wfu_userstatehandler']) && isset($_POST['wfu_admindomain']) && isset($_POST['submitform']) ) {
if ( $_POST['submitform'] == "Update" ) {
$new_plugin_options['version'] = '1.0';
$new_plugin_options['shortcode'] = $plugin_options['shortcode'];
$new_plugin_options['hashfiles'] = $hashfiles;
$new_plugin_options['basedir'] = sanitize_text_field($_POST['wfu_basedir']);
$new_plugin_options['personaldata'] = $personaldata;
$new_plugin_options['postmethod'] = sanitize_text_field($_POST['wfu_postmethod']);
$new_plugin_options['userstatehandler'] = sanitize_text_field($_POST['wfu_userstatehandler']);
$new_plugin_options['relaxcss'] = $relaxcss;
$new_plugin_options['admindomain'] = sanitize_text_field($_POST['wfu_admindomain']);
$new_plugin_options['mediacustom'] = $mediacustom;
$new_plugin_options['includeotherfiles'] = $includeotherfiles;
$new_plugin_options['altserver'] = $altserver;
$encoded_options = wfu_encode_plugin_options($new_plugin_options);
update_option( "wordpress_file_upload_options", $encoded_options );
if ( $new_plugin_options['hashfiles'] == '1' && $plugin_options['hashfiles'] != '1' )
wfu_reassign_hashes();
}
}
return true;
}
/**
* Update a Plugin Setting.
*
* This function updates an individual plugin setting.
*
* @since 4.12.0
*
* @param string $option The plugin option to change.
* @param mixed $value The new value of the option.
*/
function wfu_update_setting($option, $value) {
$plugin_options = wfu_decode_plugin_options(get_option( "wordpress_file_upload_options" ));
$plugin_options[$option] = $value;
$encoded_options = wfu_encode_plugin_options($plugin_options);
update_option( "wordpress_file_upload_options", $encoded_options );
}