File "class-field.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/really-simple-ssl/lets-encrypt/wizard/class-field.php
File
size: 47.42 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') or die;
if (!class_exists("rsssl_field")) {
class rsssl_field
{
private static $_this;
public $position;
public $fields;
public $default_args;
public $form_errors = array();
function __construct()
{
if (isset(self::$_this)) {
wp_die(sprintf('%s is a singleton class and you cannot create a second instance.', get_class($this)));
}
self::$_this = $this;
add_action('plugins_loaded', array($this, 'process_save'), 14);
add_action('rsssl_before_label', array($this, 'before_label'), 10, 1);
add_action('rsssl_label_html', array($this, 'label_html'), 10, 1);
add_action('rsssl_after_label', array($this, 'after_label'), 10, 1);
add_action('rsssl_after_field', array($this, 'after_field'), 10, 1);
$this->load();
}
static function this()
{
return self::$_this;
}
public function label_html($args)
{
?>
<label class="<?php
if ($args['disabled']) {
echo 'rsssl-disabled';
}
?>" for="<?php
echo $args['fieldname'];
?>">
<div class="rsssl-label-wrap"><?php
echo $args['label'];
?>
<?php
if (isset($args['tooltip']) && $args['tooltip-position'] === 'title') {
echo rsssl_icon('help', 'normal', $args['tooltip']);
}
?>
</div>
<div class="rsssl-subtitle-wrap"><?php
echo $args['sublabel'];
?></div>
</label>
<?php
}
public function load()
{
$this->default_args = array("fieldname" => '', "type" => 'text', "required" => false, 'default' => '', 'label' => '', 'sublabel' => '', 'option_text' => false, 'table' => false, 'callback_condition' => false, 'condition' => false, 'callback' => false, 'placeholder' => '', 'optional' => false, 'disabled' => false, 'hidden' => false, 'region' => false, 'media' => true, 'first' => false, 'warn' => false, 'cols' => false, 'minimum' => 0, 'title' => '', 'tooltip-position' => '');
}
public function process_save()
{
if (!current_user_can('manage_options')) {
return;
}
if (isset($_POST['rsssl_le_nonce'])) {
if (!isset($_POST['rsssl_le_nonce']) || !wp_verify_nonce($_POST['rsssl_le_nonce'], 'rsssl_save')) {
return;
}
$posted_fields = array_filter($_POST, array($this, 'filter_rsssl_fields'), ARRAY_FILTER_USE_KEY);
foreach ($posted_fields as $fieldname => $fieldvalue) {
$this->save_field($fieldname, $fieldvalue);
}
do_action('rsssl_after_saved_all_fields', $posted_fields);
}
}
public function sanitize_array($array)
{
foreach ($array as &$value) {
if (!is_array($value)) {
$value = sanitize_text_field($value);
} else {
$this->sanitize_array($value);
}
}
return $array;
}
public function is_conditional($fieldname)
{
$fields = RSSSL_LE()->config->fields();
if (isset($fields[$fieldname]['condition']) && $fields[$fieldname]['condition']) {
return true;
}
return false;
}
public function is_multiple_field($fieldname)
{
$fields = RSSSL_LE()->config->fields();
if (isset($fields[$fieldname]['type']) && $fields[$fieldname]['type'] == 'thirdparties') {
return true;
}
if (isset($fields[$fieldname]['type']) && $fields[$fieldname]['type'] == 'processors') {
return true;
}
return false;
}
public function save_multiple($fieldnames)
{
if (!current_user_can('manage_options')) {
return;
}
$fields = RSSSL_LE()->config->fields();
foreach ($fieldnames as $fieldname => $saved_fields) {
if (!isset($fields[$fieldname])) {
return;
}
$page = $fields[$fieldname]['source'];
$options = get_option('rsssl_options_' . $page);
$multiple_field = $this->get_value($fieldname, array());
foreach ($saved_fields as $key => $value) {
$value = is_array($value) ? array_map('sanitize_text_field', $value) : sanitize_text_field($value);
$value['saved_by_user'] = true;
$multiple_field[$key] = $value;
}
$options[$fieldname] = $multiple_field;
if (!empty($options)) {
update_option('rsssl_options_' . $page, $options);
}
}
}
public function save_field($fieldname, $fieldvalue)
{
if (!current_user_can('manage_options')) {
return;
}
$fieldvalue = apply_filters("rsssl_fieldvalue", $fieldvalue, $fieldname);
$fields = RSSSL_LE()->config->fields();
$fieldname = str_replace("rsssl_", '', $fieldname);
if (isset($fields[$fieldname]['callback'])) {
return;
}
$type = $fields[$fieldname]['type'];
$page = $fields[$fieldname]['source'];
$required = isset($fields[$fieldname]['required']) ? $fields[$fieldname]['required'] : false;
$fieldvalue = $this->sanitize($fieldvalue, $type);
if (!$this->is_conditional($fieldname) && $required && empty($fieldvalue)) {
$this->form_errors[] = $fieldname;
}
if ($type === 'password') {
$fieldvalue = RSSSL_LE()->letsencrypt_handler->encode($fieldvalue);
}
$options = get_option('rsssl_options_' . $page);
if (!is_array($options)) {
$options = array();
}
$prev_value = isset($options[$fieldname]) ? $options[$fieldname] : false;
do_action("rsssl_before_save_" . $page . "_option", $fieldname, $fieldvalue, $prev_value, $type);
$options[$fieldname] = $fieldvalue;
if (!empty($options)) {
update_option('rsssl_options_' . $page, $options);
}
do_action("rsssl_after_save_" . $page . "_option", $fieldname, $fieldvalue, $prev_value, $type);
}
public function add_multiple_field($fieldname, $cookie_type = false)
{
if (!current_user_can('manage_options')) {
return;
}
$fields = RSSSL_LE()->config->fields();
$page = $fields[$fieldname]['source'];
$options = get_option('rsssl_options_' . $page);
$multiple_field = $this->get_value($fieldname, array());
if ($fieldname === 'used_cookies' && !$cookie_type) {
$cookie_type = 'custom_' . time();
}
if (!is_array($multiple_field)) {
$multiple_field = array($multiple_field);
}
if ($cookie_type) {
foreach ($multiple_field as $index => $cookie) {
if ($cookie['key'] === $cookie_type) {
return;
}
}
$deleted_cookies = get_option('rsssl_deleted_cookies');
if ($deleted_cookies && in_array($cookie_type, $deleted_cookies)) {
return;
}
if (strpos($cookie_type, 'wordpress_') !== false) {
return;
}
$multiple_field[] = array('key' => $cookie_type);
} else {
$multiple_field[] = array();
}
$options[$fieldname] = $multiple_field;
if (!empty($options)) {
update_option('rsssl_options_' . $page, $options);
}
}
public function sanitize($value, $type)
{
if (!current_user_can('manage_options')) {
return false;
}
switch ($type) {
case 'colorpicker':
return sanitize_hex_color($value);
case 'text':
return sanitize_text_field($value);
case 'multicheckbox':
if (!is_array($value)) {
$value = array($value);
}
return array_map('sanitize_text_field', $value);
case 'phone':
$value = sanitize_text_field($value);
return $value;
case 'email':
return sanitize_email($value);
case 'url':
return esc_url_raw($value);
case 'number':
return intval($value);
case 'css':
case 'javascript':
return $value;
case 'editor':
case 'textarea':
case 'password':
return wp_kses_post($value);
}
return sanitize_text_field($value);
}
private function filter_rsssl_fields($fieldname)
{
if (strpos($fieldname, 'rsssl_') !== false && isset(RSSSL_LE()->config->fields[str_replace('rsssl_', '', $fieldname)])) {
return true;
}
return false;
}
public function before_label($args)
{
$condition_class = '';
$condition_question = '';
$condition_answer = '';
if (!empty($args['condition'])) {
$condition_count = 1;
foreach ($args['condition'] as $question => $answer) {
$question = esc_attr($question);
$answer = esc_attr($answer);
$condition_class .= "condition-check-{$condition_count} ";
$condition_question .= "data-condition-answer-{$condition_count}='{$answer}' ";
$condition_answer .= "data-condition-question-{$condition_count}='{$question}' ";
$condition_count++;
}
}
$hidden_class = $args['hidden'] ? 'hidden' : '';
$rsssl_hidden = $this->condition_applies($args) ? '' : 'rsssl-hidden';
$first_class = $args['first'] ? 'first' : '';
$type = $args['type'] === 'notice' ? '' : $args['type'];
$cols_class = isset($args['cols']) && $args['cols'] ? "rsssl-cols-{$args['cols']}" : '';
$col_class = isset($args['col']) ? "rsssl-col-{$args['col']}" : '';
$colspan_class = isset($args['colspan']) ? "rsssl-colspan-{$args['colspan']}" : '';
$this->get_master_label($args);
echo '<div class="field-group ' . esc_attr($args['fieldname'] . ' ' . esc_attr($cols_class) . ' ' . esc_attr($col_class) . ' ' . esc_attr($colspan_class) . ' ' . 'rsssl-' . $type . ' ' . $hidden_class . ' ' . $first_class . ' ' . $condition_class . ' ' . $rsssl_hidden) . '" ';
echo $condition_question;
echo $condition_answer;
echo '>';
if ($args['title']) {
$title = $args['title'];
echo "<div class='rsssl-title-wrap rsssl-field'>{$title}</div>";
}
echo '<div class="rsssl-field">';
if ($args['label']) {
echo '<div class="rsssl-label">';
}
}
public function get_master_label($args)
{
if (!isset($args['master_label'])) {
return;
}
?>
<div class="rsssl-master-label"><h2><?php
echo esc_html($args['master_label']);
?></h2></div>
<?php
}
public function in_label($args)
{
if (isset($args['tooltip'])) {
echo rsssl_icon('help', 'normal', $args['tooltip']);
}
}
public function after_label($args)
{
if ($args['label']) {
echo '</div>';
}
}
public function after_field($args)
{
$this->get_comment($args);
echo '</div><!--close in after field-->';
echo '<div class="rsssl-help-warning-wrap">';
if (isset($args['help'])) {
rsssl_sidebar_notice(wp_kses_post($args['help']));
}
do_action('rsssl_notice_' . $args['fieldname'], $args);
echo '</div>';
echo '</div>';
}
public function text($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$required = $args['required'] ? 'required' : '';
$is_required = $args['required'] ? 'is-required' : '';
$check_icon = rsssl_icon('check', 'success');
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input <?php
echo $required;
?>
class="validation <?php
echo $is_required;
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="text"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
<?php
if ($args['disabled']) {
echo 'disabled';
}
?>
>
<?php
echo $check_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function password($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$required = $args['required'] ? 'required' : '';
$is_required = $args['required'] ? 'is-required' : '';
$check_icon = rsssl_icon('check', 'success');
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input <?php
echo $required;
?>
class="validation <?php
echo $is_required;
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="password"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
<?php
if ($args['disabled']) {
echo 'disabled';
}
?>
>
<?php
echo $check_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function url($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$required = $args['required'] ? 'required' : '';
$is_required = $args['required'] ? 'is-required' : '';
$check_icon = rsssl_icon('check', 'success');
$times_icon = rsssl_icon('check', 'failed');
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input <?php
echo $required;
?>
class="validation <?php
echo $is_required;
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="text"
pattern="(http(s)?(:\/\/))?(www.)?[#a-zA-Z0-9-_\.\/:].*"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
>
<?php
echo $check_icon;
?>
<?php
echo $times_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function email($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$required = $args['required'] ? 'required' : '';
$is_required = $args['required'] ? 'is-required' : '';
$check_icon = rsssl_icon('check', 'success');
$times_icon = rsssl_icon('check', 'failed');
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input <?php
echo $required;
?>
class="validation <?php
echo $is_required;
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="email"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
>
<?php
echo $check_icon;
?>
<?php
echo $times_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function phone($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$required = $args['required'] ? 'required' : '';
$is_required = $args['required'] ? 'is-required' : '';
$check_icon = rsssl_icon('check', 'success');
$times_icon = rsssl_icon('check', 'failed');
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input autocomplete="tel" <?php
echo $required;
?>
class="validation <?php
echo $is_required;
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="text"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
>
<?php
echo $check_icon;
?>
<?php
echo $times_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function number($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input <?php
if ($args['required']) {
echo 'required';
}
?>
class="validation <?php
if ($args['required']) {
echo 'is-required';
}
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"
type="number"
value="<?php
echo esc_html($value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
min="<?php
echo $args['minimum'];
?>" step="<?php
echo isset($args["validation_step"]) ? intval($args["validation_step"]) : 1;
?>"
>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function checkbox($args, $force_value = false)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $force_value ? $force_value : $this->get_value($args['fieldname'], $args['default']);
$placeholder_value = $args['disabled'] && $value ? $value : 0;
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<label class="rsssl-switch">
<input name="<?php
echo esc_html($fieldname);
?>" type="hidden"
value="<?php
echo $placeholder_value;
?>"/>
<input name="<?php
echo esc_html($fieldname);
?>" size="40"
type="checkbox"
<?php
if ($args['disabled']) {
echo 'disabled';
}
?>
class="<?php
if ($args['required']) {
echo 'is-required';
}
?>"
value="1" <?php
checked(1, $value, true);
?> />
<span class="rsssl-slider rsssl-round"></span>
</label>
<?php
if ($args['option_text']) {
?> <div class="rsssl-wizard-settings-text"><?php
echo $args['option_text'];
?></div> <?php
if (isset($args['tooltip']) && $args['tooltip-position'] === 'after') {
echo rsssl_icon('help', 'normal', $args['tooltip']);
}
}
do_action('rsssl_after_field', $args);
?>
<?php
}
public function radio($args)
{
if (!$this->show_field($args)) {
return;
}
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
$options = $args['options'];
$required = $args['required'] ? 'required' : '';
$check_icon = rsssl_icon('bullet', 'success');
$disabled_index = array();
$default_index = array();
if (!empty($options)) {
foreach ($options as $option_value => $option_label) {
if (is_array($args['disabled']) && in_array($option_value, $args['disabled']) || $args['disabled'] === true) {
$disabled_index[$option_value] = 'rsssl-disabled';
} else {
$disabled_index[$option_value] = '';
}
}
foreach ($options as $option_value => $option_label) {
if (is_array($args['default']) && in_array($option_value, $args['default'])) {
$default_index[$option_value] = 'rsssl-default';
} else {
$default_index[$option_value] = '';
}
}
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<?php
if (!empty($options)) {
foreach ($options as $option_value => $option_label) {
if ($disabled_index[$option_value] === 'rsssl-disabled') {
echo '<div class="rsssl-not-allowed">';
}
?>
<label class="rsssl-radio-container <?php
echo $disabled_index[$option_value];
?>"><?php
echo esc_html($option_label);
?>
<input
<?php
echo $required;
?>
type="radio"
id="<?php
echo esc_html($option_value);
?>"
name="<?php
echo esc_html($fieldname);
?>"
class="<?php
echo esc_html($fieldname);
?>"
value="<?php
echo esc_html($option_value);
?>"
<?php
if ($value == $option_value) {
echo "checked";
}
?>
>
<div class="radiobtn <?php
echo $default_index[$option_value];
?>"
<?php
echo $required;
?>
><?php
echo $check_icon;
?></div>
</label>
<?php
if ($disabled_index[$option_value] === 'rsssl-disabled') {
echo '</div>';
}
}
}
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function show_field($args)
{
$show = $this->condition_applies($args, 'callback_condition');
return $show;
}
public function function_callback_applies($func)
{
$invert = false;
if (strpos($func, 'NOT ') !== false) {
$invert = true;
$func = str_replace('NOT ', '', $func);
}
$show_field = $func();
if ($invert) {
$show_field = !$show_field;
}
if ($show_field) {
return true;
} else {
return false;
}
}
public function condition_applies($args, $type = false)
{
$default_args = $this->default_args;
$args = wp_parse_args($args, $default_args);
if (!$type) {
if ($args['condition']) {
$type = 'condition';
} elseif ($args['callback_condition']) {
$type = 'callback_condition';
}
}
if (!$type || !$args[$type]) {
return true;
}
$maybe_is_function = is_string($args[$type]) ? str_replace('NOT ', '', $args[$type]) : '';
if (!is_array($args[$type]) && !empty($args[$type]) && function_exists($maybe_is_function)) {
return $this->function_callback_applies($args[$type]);
}
$condition = $args[$type];
if ($type === 'condition' && isset($args['callback_condition']) && is_array($args['callback_condition'])) {
$condition += $args['callback_condition'];
}
foreach ($condition as $c_fieldname => $c_value_content) {
$c_values = $c_value_content;
if (!is_array($c_value_content) && strpos($c_value_content, ',') !== false) {
$c_values = explode(',', $c_value_content);
}
$c_values = is_array($c_values) ? $c_values : array($c_values);
foreach ($c_values as $c_value) {
$maybe_is_function = str_replace('NOT ', '', $c_value);
if (function_exists($maybe_is_function)) {
$match = $this->function_callback_applies($c_value);
if (!$match) {
return false;
}
} else {
$actual_value = rsssl_get_value($c_fieldname);
if (strpos($c_value, 'NOT ') === false) {
$invert = false;
} else {
$invert = true;
$c_value = str_replace("NOT ", "", $c_value);
}
$match = $c_value === $actual_value || in_array($actual_value, $c_values);
if ($invert) {
$match = !$match;
}
if (!$match) {
return false;
}
}
}
}
return true;
}
public function get_field_type($fieldname)
{
if (!isset(RSSSL_LE()->config->fields[$fieldname])) {
return false;
}
return RSSSL_LE()->config->fields[$fieldname]['type'];
}
public function textarea($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$check_icon = rsssl_icon('check', 'success');
$times_icon = rsssl_icon('check', 'failed');
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<textarea name="<?php
echo esc_html($fieldname);
?>"
<?php
if ($args['required']) {
echo 'required';
}
?>
class="validation <?php
if ($args['required']) {
echo 'is-required';
}
?>"
placeholder="<?php
echo esc_html($args['placeholder']);
?>"><?php
echo esc_html($value);
?></textarea>
<?php
echo $check_icon;
?>
<?php
echo $times_icon;
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function editor($args, $step = '')
{
$fieldname = 'rsssl_' . $args['fieldname'];
$args['first'] = true;
$media = $args['media'] ? true : false;
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<?php
$settings = array('media_buttons' => $media, 'editor_height' => 300, 'textarea_rows' => 15);
wp_editor($value, $fieldname, $settings);
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function javascript($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<div id="<?php
echo esc_html($fieldname);
?>editor"
style="height: 200px; width: 100%"><?php
echo $value;
?></div>
<?php
do_action('rsssl_after_field', $args);
?>
<script>
var <?php
echo esc_html($fieldname);
?> =
ace.edit("<?php
echo esc_html($fieldname);
?>editor");
<?php
echo esc_html($fieldname);
?>.setTheme("ace/theme/monokai");
<?php
echo esc_html($fieldname);
?>.session.setMode("ace/mode/javascript");
jQuery(document).ready(function ($) {
var textarea = $('textarea[name="<?php
echo esc_html($fieldname);
?>"]');
<?php
echo esc_html($fieldname);
?>.
getSession().on("change", function () {
textarea.val(<?php
echo esc_html($fieldname);
?>.getSession().getValue()
)
});
});
</script>
<textarea style="display:none"
name="<?php
echo esc_html($fieldname);
?>"><?php
echo $value;
?></textarea>
<?php
}
public function css($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<div id="<?php
echo esc_html($fieldname);
?>editor"
style="height: 290px; width: 100%"><?php
echo $value;
?></div>
<?php
do_action('rsssl_after_field', $args);
?>
<script>
var <?php
echo esc_html($fieldname);
?> =
ace.edit("<?php
echo esc_html($fieldname);
?>editor");
<?php
echo esc_html($fieldname);
?>.setTheme("ace/theme/monokai");
<?php
echo esc_html($fieldname);
?>.session.setMode("ace/mode/css");
jQuery(document).ready(function ($) {
var textarea = $('textarea[name="<?php
echo esc_html($fieldname);
?>"]');
<?php
echo esc_html($fieldname);
?>.
getSession().on("change", function () {
textarea.val(<?php
echo esc_html($fieldname);
?>.getSession().getValue()
)
});
});
</script>
<textarea style="display:none"
name="<?php
echo esc_html($fieldname);
?>"><?php
echo $value;
?></textarea>
<?php
}
public function step_has_fields($page, $step = false, $section = false)
{
$fields = RSSSL_LE()->config->fields($page, $step, $section);
foreach ($fields as $fieldname => $args) {
$default_args = $this->default_args;
$args = wp_parse_args($args, $default_args);
$args['fieldname'] = $fieldname;
if ($this->show_field($args)) {
return true;
}
}
return false;
}
public function get_fields($source, $step = false, $section = false, $get_by_fieldname = false)
{
$fields = RSSSL_LE()->config->fields($source, $step, $section, $get_by_fieldname);
$i = 0;
foreach ($fields as $fieldname => $args) {
if ($i === 0) {
$args['first'] = true;
}
$i++;
$default_args = $this->default_args;
$args = wp_parse_args($args, $default_args);
$type = $args['callback'] ? 'callback' : $args['type'];
$args['fieldname'] = $fieldname;
switch ($type) {
case 'callback':
$this->callback($args);
break;
case 'text':
$this->text($args);
break;
case 'password':
$this->password($args);
break;
case 'button':
$this->button($args);
break;
case 'upload':
$this->upload($args);
break;
case 'url':
$this->url($args);
break;
case 'select':
$this->select($args);
break;
case 'checkbox':
$this->checkbox($args);
break;
case 'textarea':
$this->textarea($args);
break;
case 'radio':
$this->radio($args);
break;
case 'javascript':
$this->javascript($args);
break;
case 'css':
$this->css($args);
break;
case 'email':
$this->email($args);
break;
case 'phone':
$this->phone($args);
break;
case 'number':
$this->number($args);
break;
case 'notice':
$this->notice($args);
break;
case 'editor':
$this->editor($args, $step);
break;
case 'label':
$this->label($args);
break;
}
}
}
public function callback($args)
{
$callback = $args['callback'];
do_action('rsssl_before_label', $args);
do_action('rsssl_label_html', $args);
do_action('rsssl_after_label', $args);
$file = trailingslashit(rsssl_le_wizard_path) . 'templates/' . $callback;
if (file_exists($file)) {
echo RSSSL()->really_simple_ssl->get_template($callback, $path = rsssl_le_wizard_path);
} else {
do_action("rsssl_{$callback}", $args);
}
do_action('rsssl_after_field', $args);
}
public function notice($args)
{
if (!$this->show_field($args)) {
return;
}
do_action('rsssl_before_label', $args);
rsssl_notice($args['label'], 'warning');
do_action('rsssl_after_label', $args);
do_action('rsssl_after_field', $args);
}
public function select($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
$value = $this->get_value($args['fieldname'], $args['default']);
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<select class="rsssl-select2" <?php
if ($args['required']) {
echo 'required';
}
?> name="<?php
echo esc_html($fieldname);
?>">
<?php
foreach ($args['options'] as $option_key => $option_label) {
?>
<option
value="<?php
echo esc_html($option_key);
?>" <?php
echo $option_key == $value ? "selected" : "";
?>><?php
echo esc_html($option_label);
?></option>
<?php
}
?>
</select>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function label($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function button($args)
{
$fieldname = 'rsssl_' . $args['fieldname'];
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<?php
if ($args['post_get'] === 'get') {
?>
<a <?php
if ($args['disabled']) {
echo "disabled";
}
?>href="<?php
echo $args['disabled'] ? "#" : rsssl_letsencrypt_wizard_url() . '&action=' . $args['action'];
?>"
class="button"><?php
echo esc_html($args['label']);
?></a>
<?php
} else {
?>
<input <?php
if ($args['warn']) {
echo 'onclick="return confirm(\'' . $args['warn'] . '\');"';
}
?> <?php
if ($args['disabled']) {
echo "disabled";
}
?> class="button" type="submit"
name="<?php
echo $args['action'];
?>"
value="<?php
echo esc_html($args['label']);
?>">
<?php
}
?>
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function upload($args)
{
if (!$this->show_field($args)) {
return;
}
?>
<?php
do_action('rsssl_before_label', $args);
?>
<?php
do_action('rsssl_label_html', $args);
?>
<?php
do_action('rsssl_after_label', $args);
?>
<input type="file" type="submit" name="rsssl-upload-file"
value="<?php
echo esc_html($args['label']);
?>">
<input <?php
if ($args['disabled']) {
echo "disabled";
}
?> class="button" type="submit"
name="<?php
echo $args['action'];
?>"
value="<?php
_e('Start', 'really-simple-ssl');
?>">
<?php
do_action('rsssl_after_field', $args);
?>
<?php
}
public function save_button()
{
$button_text = __("Save", 'really-simple-ssl');
$button_name = 'rsssl-save';
$step = RSSSL_LE()->wizard->calculate_next('step');
$section = RSSSL_LE()->wizard->calculate_next('section');
$fields = RSSSL_LE()->config->fields('lets-encrypt', $step, $section);
reset($fields);
foreach ($fields as $key => $field) {
if (isset($field['callback']) && strpos($field['callback'], '.php') !== false) {
$button_text = __("Refresh", 'really-simple-ssl');
$button_name = 'rsssl-refresh';
}
}
return '<input class="button button-secondary" type="submit" name="' . $button_name . '" value="' . $button_text . '">';
}
public function get_value($fieldname, $default = '')
{
$fields = RSSSL_LE()->config->fields();
if (!isset($fields[$fieldname])) {
return false;
}
$source = $fields[$fieldname]['source'];
$options = get_option('rsssl_options_' . $source);
$value = isset($options[$fieldname]) ? $options[$fieldname] : false;
$value = $value !== false ? $value : apply_filters('rsssl_default_value', $default, $fieldname);
return $value;
}
public function sanitize_fieldname($fieldname)
{
$fields = RSSSL_LE()->config->fields();
if (array_key_exists($fieldname, $fields)) {
return sanitize_text_field($fieldname);
}
return false;
}
public function get_comment($args)
{
if (!isset($args['comment'])) {
return;
}
?>
<div class="rsssl-comment"><?php
echo $args['comment'];
?></div>
<?php
}
public function has_errors()
{
if (count($this->form_errors) > 0) {
return true;
}
return false;
}
}
}