ajax_import_test.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. // AJAX-based WordPress import test to bypass form submission issues
  3. header('Content-Type: application/json');
  4. error_reporting(E_ALL);
  5. ini_set('display_errors', 1);
  6. ini_set('max_execution_time', 60);
  7. ini_set('memory_limit', '512M');
  8. require_once '../includes/config.php';
  9. require_once '../includes/database.php';
  10. require_once '../includes/wordpress_import.php';
  11. $response = ['success' => false, 'message' => '', 'step' => ''];
  12. try {
  13. $action = $_GET['action'] ?? '';
  14. $response['step'] = $action;
  15. switch ($action) {
  16. case 'test_connection':
  17. // Test connection only
  18. $wpConfig = [
  19. 'host' => trim($_GET['wp_host'] ?? ''),
  20. 'database' => trim($_GET['wp_database'] ?? ''),
  21. 'username' => trim($_GET['wp_username'] ?? ''),
  22. 'password' => $_GET['wp_password'] ?? ''
  23. ];
  24. $response['message'] = 'Testing connection...';
  25. $importer = new WordPressImport($wpConfig);
  26. $connectionTest = $importer->testConnection();
  27. if ($connectionTest['success']) {
  28. $response['success'] = true;
  29. $response['message'] = 'Connection successful';
  30. $response['stats'] = $connectionTest['stats'];
  31. } else {
  32. $response['message'] = $connectionTest['error'];
  33. }
  34. break;
  35. case 'import_categories':
  36. // Import categories only
  37. $wpConfig = [
  38. 'host' => trim($_GET['wp_host'] ?? ''),
  39. 'database' => trim($_GET['wp_database'] ?? ''),
  40. 'username' => trim($_GET['wp_username'] ?? ''),
  41. 'password' => $_GET['wp_password'] ?? ''
  42. ];
  43. $response['message'] = 'Importing categories...';
  44. $importer = new WordPressImport($wpConfig);
  45. $result = $importer->importCategories();
  46. $response['success'] = true;
  47. $response['message'] = 'Categories imported';
  48. $response['result'] = $result;
  49. break;
  50. case 'import_users':
  51. // Import users only
  52. $wpConfig = [
  53. 'host' => trim($_GET['wp_host'] ?? ''),
  54. 'database' => trim($_GET['wp_database'] ?? ''),
  55. 'username' => trim($_GET['wp_username'] ?? ''),
  56. 'password' => $_GET['wp_password'] ?? ''
  57. ];
  58. $response['message'] = 'Importing users...';
  59. $importer = new WordPressImport($wpConfig);
  60. $result = $importer->importUsers();
  61. $response['success'] = true;
  62. $response['message'] = 'Users imported';
  63. $response['result'] = $result;
  64. break;
  65. case 'import_posts':
  66. // Import posts only (small batch)
  67. $wpConfig = [
  68. 'host' => trim($_GET['wp_host'] ?? ''),
  69. 'database' => trim($_GET['wp_database'] ?? ''),
  70. 'username' => trim($_GET['wp_username'] ?? ''),
  71. 'password' => $_GET['wp_password'] ?? ''
  72. ];
  73. $response['message'] = 'Importing posts (batch)...';
  74. $importer = new WordPressImport($wpConfig);
  75. $result = $importer->importPosts();
  76. $response['success'] = true;
  77. $response['message'] = 'Posts imported';
  78. $response['result'] = $result;
  79. break;
  80. default:
  81. $response['message'] = 'Unknown action';
  82. }
  83. } catch (Exception $e) {
  84. $response['message'] = 'Error: ' . $e->getMessage();
  85. $response['error'] = [
  86. 'file' => $e->getFile(),
  87. 'line' => $e->getLine(),
  88. 'trace' => $e->getTraceAsString()
  89. ];
  90. }
  91. echo json_encode($response);
  92. ?>