ajax_import_test.php 4.2 KB

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