/wp-content/plugins/quiz-maker/includes/class-quiz-maker-pdfapi.php

https://github.com/livinglab/openlab · PHP · 223 lines · 208 code · 11 blank · 4 comment · 16 complexity · 3b39b7f3a0c634b5bc49810a6c9e79a9 MD5 · raw file

  1. <?php
  2. class Quiz_PDF_API {
  3. public function generate_PDF($data){
  4. $curl = curl_init();
  5. $url = "https://ays-pro.com/pdfapi/";
  6. // $url = "https://tt-soft.com/pdfapi/";
  7. //$url = "http://localhost/pdfapi/";
  8. $api_url = apply_filters( 'ays_quiz_pdfapi_api_url', $url );
  9. curl_setopt_array($curl, array(
  10. CURLOPT_URL => $api_url,
  11. CURLOPT_RETURNTRANSFER => true,
  12. CURLOPT_ENCODING => "",
  13. CURLOPT_MAXREDIRS => 10,
  14. CURLOPT_TIMEOUT => 300,
  15. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  16. CURLOPT_SSL_VERIFYPEER => false,
  17. CURLOPT_CUSTOMREQUEST => "POST",
  18. CURLOPT_POSTFIELDS => json_encode($data),
  19. CURLOPT_HTTPHEADER => array(
  20. "Content-Type: application/json",
  21. "cache-control: no-cache"
  22. ),
  23. ));
  24. $response = curl_exec($curl);
  25. $err = curl_error($curl);
  26. curl_close($curl);
  27. if ($err) {
  28. echo "cURL Error #:" . $err;
  29. } else {
  30. $response = json_decode($response,true);
  31. if($response["code"] == 1 && $response['msg'] == "Success"){
  32. $fileContent = base64_decode($response["data"]);
  33. $fileName = AYS_QUIZ_DIR . 'public/certificate.pdf';
  34. $date = current_time('Y-m-d-H-i-s');
  35. $fileContent = base64_decode($response["data"]);
  36. $fileName = AYS_QUIZ_DIR . 'public/certificate-'.$date.'.pdf';
  37. $fileUrl = AYS_QUIZ_PUBLIC_URL . '/certificate-'.$date.'.pdf';
  38. $cert_path = AYS_QUIZ_PUBLIC_PATH . '/certificate-'.$date.'.pdf';
  39. $files = preg_grep( '~^certificate.*\.pdf$~', scandir( AYS_QUIZ_DIR . "public/" ) );
  40. foreach( $files as $file ){
  41. unlink( AYS_QUIZ_DIR . "public/" . $file );
  42. //if ( !in_array( $file, array( ".", ".." ) ) ){
  43. //}
  44. }
  45. file_put_contents($fileName, $fileContent);
  46. $result = array(
  47. 'status' => true,
  48. 'cert_url' => $fileUrl,
  49. 'cert_path' => $cert_path,
  50. );
  51. if(is_dir(AYS_QUIZ_CERTIFICATES_SAVE_PATH)){
  52. $quiz_id = (isset($data['cert_quiz_id']) && $data['cert_quiz_id'] != null) ? intval($data['cert_quiz_id']) : 0;
  53. $user_name = (isset($data['cert_data']['user_name']) && $data['cert_data']['user_name'] != '') ? $data['cert_data']['user_name'] : __('Guest', AYS_QUIZ_NAME);
  54. $unique_code = (isset($data['cert_data']['unique_code']) && $data['cert_data']['unique_code'] != '') ? $data['cert_data']['unique_code'] : uniqid();
  55. $current_date = (isset($data['current_date']) && Quiz_Maker_Admin::validateDate($data['current_date'])) ? date('Y-m-d-H-i-s', strtotime($data['current_date'])) : current_time('Y-m-d-H-i-s');
  56. $cert_filename = '';
  57. if($user_name != ''){
  58. $user_name = str_replace(' ', '-', $user_name);
  59. $cert_filename .= str_replace('"', "'", $user_name);
  60. }
  61. if($quiz_id !== 0){
  62. if($cert_filename != ''){
  63. $cert_filename .= '-';
  64. }
  65. $cert_filename .= $quiz_id;
  66. }
  67. if($cert_filename != ''){
  68. $cert_filename .= '-';
  69. }
  70. $cert_filename .= $unique_code;
  71. if($cert_filename != ''){
  72. $cert_filename .= '-'. $current_date . '.pdf';
  73. }else{
  74. $cert_filename .= $current_date . '.pdf';
  75. }
  76. $cert_file_path = AYS_QUIZ_CERTIFICATES_SAVE_PATH .'/'.$cert_filename;
  77. $cert_file_url = AYS_QUIZ_CERTIFICATES_SAVE_URL .'/'.$cert_filename;
  78. $result['cert_file_name'] = $cert_filename;
  79. $result['cert_file_path'] = $cert_file_path;
  80. $result['cert_file_url'] = $cert_file_url;
  81. file_put_contents($cert_file_path, $fileContent);
  82. }
  83. return $result;
  84. }else{
  85. $result = array(
  86. 'status' => false,
  87. );
  88. return $result;
  89. }
  90. }
  91. }
  92. public function generate_report_PDF($data){
  93. $curl = curl_init();
  94. $url = "https://ays-pro.com/pdfapi/export-report/";
  95. // $url = "https://tt-soft.com/pdfapi/export-report/";
  96. // $url = "http://localhost/pdfapi/export-report/";
  97. $api_url = apply_filters( 'ays_quiz_pdfapi_api_report_url', $url );
  98. curl_setopt_array($curl, array(
  99. CURLOPT_URL => $api_url,
  100. CURLOPT_RETURNTRANSFER => true,
  101. CURLOPT_ENCODING => "",
  102. CURLOPT_MAXREDIRS => 10,
  103. CURLOPT_TIMEOUT => 300,
  104. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  105. CURLOPT_SSL_VERIFYPEER => false,
  106. CURLOPT_CUSTOMREQUEST => "POST",
  107. CURLOPT_POSTFIELDS => json_encode($data),
  108. CURLOPT_HTTPHEADER => array(
  109. "Content-Type: application/json",
  110. "cache-control: no-cache"
  111. ),
  112. ));
  113. $response = curl_exec($curl);
  114. $err = curl_error($curl);
  115. curl_close($curl);
  116. if ($err) {
  117. echo "cURL Error #:" . $err;
  118. } else {
  119. $response = json_decode($response,true);
  120. if($response["code"] == 1 && $response['msg'] == "Success"){
  121. $fileContent = base64_decode($response["data"]);
  122. $fileName = AYS_QUIZ_ADMIN_PATH . '/partials/results/export_file/single-report.pdf';
  123. $fileUrl = AYS_QUIZ_ADMIN_URL . '/partials/results/export_file/single-report.pdf';
  124. file_put_contents($fileName, $fileContent);
  125. $result = array(
  126. 'status' => true,
  127. 'fileUrl' => $fileUrl,
  128. 'fileName' => 'single-report.pdf',
  129. );
  130. return $result;
  131. }else{
  132. $result = array(
  133. 'status' => false,
  134. );
  135. return $result;
  136. }
  137. }
  138. }
  139. public function generate_report_PDF_public($data){
  140. $curl = curl_init();
  141. $url = "https://ays-pro.com/pdfapi/export-report-public/";
  142. // $url = "https://tt-soft.com/pdfapi/export-report-public/"; // open
  143. // $url = "http://localhost/pdfapi/quiz-maker-pdfapi/pdfapi/export-report-public/"; // for localhost
  144. // $url = "http://localhost/pdfapi/export-report-public/";
  145. $api_url = apply_filters( 'ays_quiz_pdfapi_api_report_public_url', $url );
  146. curl_setopt_array($curl, array(
  147. CURLOPT_URL => $api_url,
  148. CURLOPT_RETURNTRANSFER => true,
  149. CURLOPT_ENCODING => "",
  150. CURLOPT_MAXREDIRS => 10,
  151. CURLOPT_TIMEOUT => 300,
  152. CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  153. CURLOPT_SSL_VERIFYPEER => false,
  154. CURLOPT_CUSTOMREQUEST => "POST",
  155. CURLOPT_POSTFIELDS => json_encode($data),
  156. CURLOPT_HTTPHEADER => array(
  157. "Content-Type: application/json",
  158. "cache-control: no-cache"
  159. ),
  160. ));
  161. $response = curl_exec($curl);
  162. $err = curl_error($curl);
  163. curl_close($curl);
  164. if ($err) {
  165. echo "cURL Error #:" . $err;
  166. } else {
  167. $response = json_decode($response, true);
  168. if($response["code"] == 1 && $response['msg'] == "Success"){
  169. $date = current_time('Y-m-d-H-i-s');
  170. $fileContent = base64_decode($response["data"]);
  171. $fileName = AYS_QUIZ_ADMIN_PATH . '/partials/results/export_file/public-single-report-'.$date.'.pdf';
  172. $fileUrl = AYS_QUIZ_ADMIN_URL . '/partials/results/export_file/public-single-report-'.$date.'.pdf';
  173. $files = preg_grep( '~^public-single-.*\.pdf$~', scandir( AYS_QUIZ_ADMIN_PATH . "/partials/results/export_file/" ) );
  174. foreach( $files as $file ){
  175. unlink( AYS_QUIZ_ADMIN_PATH . "/partials/results/export_file/" . $file );
  176. //if ( !in_array( $file, array( ".", ".." ) ) ){
  177. //}
  178. }
  179. file_put_contents($fileName, $fileContent);
  180. $result = array(
  181. 'status' => true,
  182. 'fileUrl' => $fileUrl,
  183. 'fileName' => 'public-single-report-'.$date.'.pdf',
  184. );
  185. return $result;
  186. }else{
  187. $result = array(
  188. 'status' => false,
  189. );
  190. return $result;
  191. }
  192. }
  193. }
  194. }