public function admin_page() {
// Обробка примусової міграції
if (isset($_GET['force_migration']) && current_user_can('manage_options')) {
$this->force_table_migration();
}
// Додаємо діагностичну інформацію
if (isset($_GET['debug']) && current_user_can('manage_options')) {
$this->show_debug_info();
}
include_once JCP_PLUGIN_PATH . 'includes/admin-page.php';
}
private function force_table_migration() {
global $wpdb;
echo '
Примусова міграція таблиці
';
// Перевіряємо поточну структуру
$columns = $wpdb->get_col("DESCRIBE {$this->table_name}", 0);
echo '
Поточні стовпці: ' . implode(', ', $columns) . '
';
$has_pr_com_id = in_array('pr_com_id', $columns);
$has_lead_id = in_array('lead_id', $columns);
if (!$has_pr_com_id) {
echo '
Додавання стовпця pr_com_id...
';
$result = $wpdb->query("ALTER TABLE {$this->table_name} ADD COLUMN pr_com_id bigint(20) DEFAULT NULL AFTER zp_id_com");
if ($result !== false) {
echo '
✓ Стовпець pr_com_id додано успішно
';
} else {
echo '
✗ Помилка додавання pr_com_id: ' . $wpdb->last_error . '
';
}
} else {
echo '
✓ Стовпець pr_com_id вже існує
';
}
if (!$has_lead_id) {
echo '
Додавання стовпця lead_id...
';
$result = $wpdb->query("ALTER TABLE {$this->table_name} ADD COLUMN lead_id bigint(20) DEFAULT NULL AFTER pr_com_id");
if ($result !== false) {
echo '
✓ Стовпець lead_id додано успішно
';
} else {
echo '
✗ Помилка додавання lead_id: ' . $wpdb->last_error . '
';
}
} else {
echo '
✓ Стовпець lead_id вже існує
';
}
// Перевіряємо фінальну структуру
$final_columns = $wpdb->get_col("DESCRIBE {$this->table_name}", 0);
echo '
Фінальні стовпці: ' . implode(', ', $final_columns) . '
';
echo '
Повернутися до головної сторінки
';
echo '
';
// Логування міграції
$this->log_action('migration', 'Примусова міграція таблиці виконана', array(
'original_columns' => $columns,
'final_columns' => $final_columns,
'pr_com_id_added' => !$has_pr_com_id,
'lead_id_added' => !$has_lead_id
));
}