| Server IP : 208.122.213.31 / Your IP : 216.73.216.45 Web Server : Apache System : Linux msd6191.mjhst.com 4.18.0-553.137.1.el8_10.x86_64 #1 SMP Wed Jun 24 11:40:24 UTC 2026 x86_64 User : WHMCS_MIA_382 ( 1001) PHP Version : 7.4.33 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /proc/self/cwd/wp-content/plugins/age-gate/src/Update/Migration/ |
Upload File : |
<?php
namespace AgeGate\Update\Migration;
use Asylum\Utility\Arr;
use Asylum\Utility\Storage;
use Asylum\Utility\HtmlToMarkdown;
use League\HTMLToMarkdown\HtmlConverter;
class Migrate
{
private $mapTwo = [
"restrictions.min_age" => "restriction.default_age",
"restrictions.restriction_type" => "restriction.type",
"restrictions.multi_age" => "restriction.multi_age",
"restrictions.stepped" => "restriction.stepped",
"restrictions.input_type" => "restriction.input_type",
"restrictions.remember" => "restriction.remember",
"restrictions.remember_days" => "restriction.remember_length.remember_length",
"restrictions.remember_timescale" => "restriction.remember_length.remember_time",
"restrictions.remember_auto_check" => "restriction.remember_auto_check",
"restrictions.ignore_logged" => "restriction.ignore_logged",
"restrictions.rechallenge" => "restriction.rechallenge",
"restrictions.fail_link_title" => null,
"restrictions.fail_link" => "restriction.redirect",
"restrictions.button_order" => "restriction.button_order",
//
"messages.instruction" => 'message.headline',
"messages.messaging" => 'message.subheadline',
"messages.invalid_input_msg" => 'message.error_invalid',
"messages.under_age_msg" => 'message.error_failed',
"messages.generic_error_msg" => "message.error_generic",
"messages.remember_me_text" => "message.label_remember",
"messages.yes_no_message" => "message.label_buttons",
"messages.yes_text" => "message.label_yes",
"messages.no_text" => "message.label_no",
"messages.button_text" => "message.label_submit",
"messages.cookie_message" => "message.label_no_cookies",
"messages.text_day" => "message.label_day",
"messages.text_month" => "message.label_month",
"messages.text_year" => "message.label_year",
"messages.aria_label" => "message.label_aria",
//
"validation_messages.validate_required" => null,
"validation_messages.validate_numeric" => null,
"validation_messages.validate_max_len" => null,
"validation_messages.validate_min_len" => null,
"validation_messages.validate_min_numeric" => null,
"validation_messages.validate_max_numeric" => null,
"validation_messages.validate_min_age" => null,
"validation_messages.validate_date" => null,
//
"appearance.logo" => "appearance.logo",
"appearance.background_colour" => "appearance.background_color",
"appearance.background_opacity" => "appearance.background_opacity",
"appearance.background_image" => "appearance.background_image",
"appearance.background_image_opacity" => "appearance.background_image_opacity",
"appearance.foreground_colour" => "appearance.foreground_color",
"appearance.foreground_opacity" => "appearance.foreground_opacity",
"appearance.text_colour" => "appearance.text_color",
"appearance.styling" => "appearance.enqueue_css",
"appearance.device_width" => "appearance.viewport",
"appearance.switch_title" => "appearance.switch_title",
"appearance.custom_title" => "appearance.custom_title",
"appearance.auto_tab" => "appearance.input_auto_tab",
"appearance.title_separator" => null,
"appearance.title_format" => null,
"appearance.transition" => "appearance.exit_transition", // check values
"appearance.background_pos_x" => "appearance.background_position.x",
"appearance.background_pos_y" => "appearance.background_position.y",
"appearance.blur_amount" => "appearance.blur",
//
"advanced.save_to_file" => "advanced.css_file", // if this and that are true, move to new location
"advanced.custom_css" => "advanced.css",
"advanced.dev_notify" => "tools.dev_versions",
"advanced.dev_hide_warning" => "tools.dev_warning",
"advanced.anonymous_age_gate" => "advanced.anonymous",
"advanced.endpoint" => null, // only REST
"advanced.use_default_lang" => null, // default
"advanced.use_meta_box" => null, //
"advanced.inherit_taxonomies.category" => null, // need updating
// "advanced.custom_bots" => "advanced.user_agents",
"advanced.enable_quicktags" => null,
"advanced.full_nav" => "advanced.toolbar",
"advanced.enable_import_export" => null,
"advanced.filter_qs" => null,
"advanced.post_to_self" => null,
"advanced.js_hooks" => null,
"advanced.cookie_name" => "advanced.cookie_name",
"advanced.rta_tag" => "advanced.rta",
"advanced.munge_options" => "advanced.munge",
"advanced.trap_focus" => "advanced.focus",
"advanced.disable_right" => "advanced.dev_tools",
"advanced.preload_images" => "advanced.preload",
];
private $mapTwoSpecial = [
"advanced.use_js" => ["key" => "advanced.method", "callback" => "getMethod"], // set, js, not set, standard
// // will need a loop to content.disable.<posttype>
// "access.post",
// "access.page",
// "access.attachment",
// "access.revision",
// "access.nav_menu_item",
// "access.custom_css",
// "access.customize_changeset",
// "access.oembed_cache",
// "access.user_request",
// "access.wp_block",
// "access.wp_template",
// "access.wp_template_part",
// "access.wp_global_styles",
// "access.wp_navigation",
// "access.acf-field-group",
// "access.acf-field",
"restrictions.date_format" => [
'key' => "restriction.date_format",
'callback' => 'getDateFormat',
],
"restrictions.inherit_category" => [
'key' => '',
'callback' => 'getInherited', // Work out what the hell is happening!
],
"messages.additional" => [
'key' => "message.content",
'callback' => 'getMarkdown', // convert to markdown!
],
// // Languages :???
// "restrictions.lang.fr.min_age",
// "restrictions.lang.fr.date_format",
// "restrictions.lang.fr.fail_link_title",
// "restrictions.lang.fr.fail_link",
];
public function mapSimpleSettings($settings)
{
$legacy = [
'restrictions' => get_option('wp_age_gate_restrictions', []),
'messages' => get_option('wp_age_gate_messages', []),
'validation_messages' => get_option('wp_age_gate_validation_messages', []),
'appearance' => get_option('wp_age_gate_appearance', []),
'advanced' => get_option('wp_age_gate_advanced', []),
'access' => get_option('wp_age_gate_access', []),
];
$v3 = Arr::dot($settings);
$v2 = Arr::dot($legacy);
// map all the 1-to-1 settings
foreach ($v2 as $key => $option) {
if (array_key_exists($key, $this->mapTwo)) {
if ($this->mapTwo[$key]) {
$v3[$this->mapTwo[$key]] = $option;
};
}
if (array_key_exists($key, $this->mapTwoSpecial)) {
if ($this->mapTwoSpecial[$key]) {
$mapped = $this->{$this->mapTwoSpecial[$key]['callback']}($option, $v2);
if (!is_array($mapped)) {
$v3[$this->mapTwoSpecial[$key]['key']] = $mapped;
} else {
$v3 = array_merge($v3, $mapped);
}
};
}
}
foreach ($legacy['access'] ?? [] as $type => $value) {
$v3['content.disable.' . $type] = $value;
}
// Move custom CSS to customizer
// languages...
foreach ($legacy as $key => $options) {
foreach($options['lang'] ?? [] as $code => $options) {
foreach ($options as $option => $value) {
if (array_key_exists($key . '.' . $option, $this->mapTwo)) {
if ($this->mapTwo[$key . '.' . $option]) {
$parts = explode('.', $this->mapTwo[$key . '.' . $option] ?? '');
array_splice($parts, 1, 0, [$code]);
$v3Key = implode('.', $parts);
$v3[$v3Key] = $value;
};
}
if (array_key_exists($key . '.' . $option, $this->mapTwoSpecial)) {
if ($this->mapTwoSpecial[$key . '.' . $option]) {
$mapped = $this->{$this->mapTwoSpecial[$key . '.' . $option]['callback']}($option, $v2);
$parts = explode('.', $this->mapTwoSpecial[$key . '.' . $option]['key'] ?? '');
array_splice($parts, 1, 0, [$code]);
$v3Key = implode('.', $parts);
if (!is_array($mapped)) {
$v3[$v3Key] = $mapped;
} else {
$v3 = array_merge($v3, $mapped);
}
};
}
// dump($key . '.' . $option);
// $parts = explode('.', $this->mapTwo[$key . '.' . $option] ?? '');
// array_splice($parts, 1, 0, [$code]);
// dump(implode('.', $parts));
// dump($option, $value);
}
}
}
// default updates to V@ styles?
$v3['advanced.css_type'] = 'v2';
$v3['advanced.user_agents'] = implode("\r\n", $legacy['advanced']['custom_bots'] ?? []);
return Arr::undot($v3);
}
/**
* Determine the method
*
* @param string|int $value
* @return strong
*/
private function getMethod($value)
{
return $value == 1 ? 'js' : 'standard';
}
/**
* Convert old html to markdown
*
* @param string $value
* @return string
*/
private function getMarkdown($value)
{
if (class_exists('DomDocument')) {
$converter = new HtmlConverter();
} else {
$converter = new HtmlToMarkdown;
}
return preg_replace('/(\[.*\])\(\"(.*)\"\)/', '$1($2)', stripslashes(wp_strip_all_tags($converter->convert(html_entity_decode(html_entity_decode($value))))));
}
/**
* Map old bad term inheritance to new, better version
*
* @param mixed $value
* @param array $all
* @return void
*/
private function getInherited($value, $all)
{
if (!$value) {
return false;
}
$data = [
'content.inherit' => 1,
];
$all = Arr::undot($all);
foreach ($all['advanced']['inherit_taxonomies'] as $tax) {
$taxonomy = get_taxonomy($tax);
$terms = get_terms([
'taxonomy' => $tax,
]);
foreach ($terms as $term) {
foreach ($taxonomy->object_type as $type) {
$data['content.terms.' . $term->term_id . '.' . $type] = 1;
}
}
}
return $data;
}
/**
* Determine the new date formate
*
* @param string $value
* @return string
*/
private function getDateFormat($value)
{
switch ($value) {
case 'ddmmyyyy':
return 'DD MM YYYY';
case 'mmddyyyy':
return 'MM DD YYYY';
}
return 'DD MM YYYY';
}
}