Current path: home/webdevt/www/cryptoimpot.fr/wp-content/plugins/divi-contact-form-helper/app/Admin/Migration/
?? Go up: /home/webdevt/www/cryptoimpot.fr/wp-content/plugins/divi-contact-form-helper/app/Admin
<?php
namespace KS_PAC_DCFH\Admin\Migration;
class Updater
{
private static $_instance;
public static function instance(): self
{
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
public function init(): void
{
//add_action('init', [$this, 'maybe_migrate_options']);
//add_action('init', [$this, 'migrate_unsanitized_form_ids']);
}
/* public function maybe_migrate_options(): void
{
if (false === get_option('_pwh_dcfh_options_updated')) {
global $wpdb;
$results = $wpdb->get_results($wpdb->prepare("SELECT DISTINCT option_name,option_value FROM $wpdb->options WHERE option_name LIKE %s", "_pwh_dcfh_contact_form_title_%")); //db call ok; no-cache ok
if (!empty($results)) {
foreach ($results as $result) {
$contact_form_id = str_replace('_pwh_dcfh_contact_form_title_', '', $result->option_name);
$contact_form_title = $result->option_value;
$views = get_option('_pwh_dcfh_contact_form_views_'.$contact_form_id);
$unique_views = get_option('_pwh_dcfh_contact_form_unique_views_'.$contact_form_id);
$contact_form_views = false === $views ? 0 : $views;
$contact_form_unique_views = false === $unique_views ? 0 : $unique_views;
$contact_form_entries = ks_pac_dcfh_post_meta()::get_contact_form_total_entries($contact_form_id);
$last_post_id = ks_pac_dcfh_post_meta()::get_contact_form_last_post_id($contact_form_id);
$page_id = ks_pac_dcfh_post_meta()::get_page_id_meta_value($last_post_id);
$option_key = "_pwh_dcfh_contact_form_settings_$contact_form_id";
$option = get_option($option_key);
if (false === $option) {
update_option($option_key, [
'unique_id' => $contact_form_id,
'page_id' => $page_id,
'title' => $contact_form_title,
'entries_threshold' => '-1',
'total_entries' => $contact_form_entries,
'views' => $contact_form_views,
'unique_views' => $contact_form_unique_views,
], 'no');
}
}
}
update_option('_pwh_dcfh_options_updated', 'yes', 'no');
}
}
public static function migrate_unsanitized_form_ids(): void
{
if (false !== get_option('_pwh_dcfh_ids_migration_complete')) {
return;
}
global $wpdb;
// Fetch all options with unsanitized form IDs
$results = $wpdb->get_results(
"SELECT option_name, option_value
FROM $wpdb->options
WHERE option_name LIKE '_pwh_dcfh_contact_form_settings_%'"
);
foreach ($results as $row) {
$old_key = $row->option_name;
$old_id = str_replace('_pwh_dcfh_contact_form_settings_', '', $old_key);
$sanitized_id = sanitize_title($old_id);
// Skip if no sanitization was needed
if ($sanitized_id === $old_id) {
continue;
}
$new_key = "_pwh_dcfh_contact_form_settings_$sanitized_id";
// Deserialize and validate both old and new data
$old_data = maybe_unserialize($row->option_value);
$new_data = maybe_unserialize(get_option($new_key, []));
$old_data = is_array($old_data) ? $old_data : [];
$new_data = is_array($new_data) ? $new_data : [];
// Merge data safely
$merged_data = [
'unique_id' => $sanitized_id,
'title' => $new_data['title'] ?? $old_data['title'] ?? '',
'page_id' => $new_data['page_id'] ?? $old_data['page_id'] ?? 0,
'entries_threshold' => $new_data['entries_threshold'] ?? $old_data['entries_threshold'] ?? -1,
'views' => ($old_data['views'] ?? 0) + ($new_data['views'] ?? 0),
'unique_views' => ($old_data['unique_views'] ?? 0) + ($new_data['unique_views'] ?? 0),
'query_params' => array_unique(array_merge(
(array)($old_data['query_params'] ?? []),
(array)($new_data['query_params'] ?? [])
)),
'total_entries' => max(
$old_data['total_entries'] ?? 0,
$new_data['total_entries'] ?? 0
),
];
// Save merged data to new key
update_option($new_key, $merged_data, 'no');
// Delete the old option
delete_option($old_key);
// Update all matching postmeta entries
$wpdb->query(
$wpdb->prepare(
"UPDATE $wpdb->postmeta
SET meta_value = %s
WHERE meta_key = '_pwh_dcfh_contact_form_id'
AND meta_value = %s",
$sanitized_id,
$old_id
)
);
}
// Mark migration as complete
update_option('_pwh_dcfh_ids_migration_complete', true);
}*/
}