SupportRequest.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. class Laybuy_SupportRequest
  3. {
  4. const API_ENDPOINT = 'https://laybuy-support.staging.overdose.digital/api/support-request';
  5. const API_KEY = 'ThnaJEEWp7zqJkEhYrGbdBJQLjLkUxgu';
  6. public function send()
  7. {
  8. $body = [
  9. 'platform' => 'woocommerce',
  10. 'meta' => [
  11. 'website' => get_site_url(),
  12. 'date' => date('Y-m-d H:i:s', time())
  13. ],
  14. 'env' => [
  15. 'wp_version' => get_bloginfo( 'version' ),
  16. 'wc_version' => WC_VERSION,
  17. 'laybuy_version' => WC_LAYBUY_VERSION
  18. ],
  19. 'settings' => get_option( 'woocommerce_laybuy_settings', true),
  20. 'log' => null
  21. ];
  22. $logfile = WC_LOG_DIR . WC_Log_Handler_File::get_log_file_name('laybuy');
  23. if (file_exists($logfile)) {
  24. $body['log'] = base64_encode(file_get_contents($logfile));
  25. } else {
  26. $logFiles = WC_Log_Handler_File::get_log_files();
  27. // try to find relevant logs for the last 14 days
  28. $relevantLogFiles = [];
  29. for ($i = 1; $i <= 14; $i++) {
  30. $relevantLogFiles[] = 'laybuy-' . date('Y-m-d', strtotime("-{$i} days"));
  31. }
  32. $logFiles = array_filter($logFiles, function ($logFile) use ($relevantLogFiles) {
  33. $result = (bool) strstr($logFile, 'laybuy');
  34. if (!$result) {
  35. return false;
  36. }
  37. foreach ($relevantLogFiles as $relevantLogFile) {
  38. if (false !== strpos($logFile, $relevantLogFile)) {
  39. return true;
  40. }
  41. }
  42. });
  43. if (count($logFiles) > 0) {
  44. $logFiles = array_reverse($logFiles);
  45. $logFiles = array_values(array_slice($logFiles, 0, 2));
  46. $body['log'] = base64_encode(
  47. file_get_contents(WC_LOG_DIR . DIRECTORY_SEPARATOR . $logFiles[0]) . "\n\n\n" .
  48. file_get_contents(WC_LOG_DIR . DIRECTORY_SEPARATOR . $logFiles[1])
  49. );
  50. }
  51. }
  52. $laybuySupportResponse = wp_remote_post(self::API_ENDPOINT, [
  53. 'headers' => [
  54. 'x-access-token' => self::API_KEY
  55. ],
  56. 'body' => $body
  57. ]);
  58. if ( is_wp_error( $laybuySupportResponse ) ) {
  59. wp_send_json_error();
  60. }
  61. $laybuySupportResponse = json_decode($laybuySupportResponse['body'], true);
  62. if (!isset($laybuySupportResponse['success']) || !$laybuySupportResponse['success']) {
  63. wp_send_json_error();
  64. }
  65. $to = 'overdose@laybuy.com';
  66. $subject = 'Woo Support Request from ' . get_site_url();
  67. $body = $laybuySupportResponse['link'];
  68. $headers = ['Content-Type: text/html; charset=UTF-8'];
  69. $result = wp_mail( $to, $subject, $body, $headers );
  70. if (!$result) {
  71. wp_send_json_error();
  72. }
  73. wp_send_json_success();
  74. }
  75. }