Advertisement
Guest User

after-login/scheduler.php

a guest
Nov 15th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. date_default_timezone_set('Etc/UTC');
  3. include '../config/connection.php';
  4. require_once '../dompdf_config.inc.php';
  5. require 'php-export-data.class.php';
  6. require '../PHPMailerAutoload.php';
  7.  
  8. function genereateQuery($kriteria_jadwal, $interval){
  9. return "
  10. SELECT
  11. id,
  12. id_laporan,
  13. email_tujuan,
  14. durasi,
  15. format,
  16. MAX(last_eksekusi) AS max_last_eksekusi
  17. FROM (
  18. SELECT eo.id,
  19. eo.id_laporan,
  20. eo.email_tujuan,
  21. ls.last_eksekusi,
  22. durasi,
  23. format
  24. FROM eksekusi_otomatis eo
  25. LEFT JOIN log_schedule ls ON eo.id = ls.id_eksekusi_otomatis
  26. WHERE jadwal = '" . $kriteria_jadwal . "'
  27. ) q
  28. GROUP BY id_laporan
  29. HAVING max_last_eksekusi IS NULL OR max_last_eksekusi <= (NOW() - INTERVAL durasi " . $interval . ")
  30. ";
  31. }
  32.  
  33. function sendReport($conn, $sql){
  34. $query = mysqli_query($conn, $sql);
  35. while($data = mysqli_fetch_assoc($query)){
  36. $id_laporan = $data['id_laporan'];
  37. $id = $data['id'];
  38. $email = $data['email_tujuan'];
  39. $format = $data['format'];
  40. $filename = 'report-' . $id_laporan . '-' . date('YmdHis') . '.' . strtolower($format);
  41. $filepath = '../reports/' . $filename;
  42.  
  43. if($format == "XLS"){
  44. $exporter = new ExportDataExcel('file', $filepath);
  45. $exporter->initialize(); // starts streaming data to web browser
  46.  
  47. $select_laporan = "SELECT judul, queri FROM laporan WHERE id=".$id_laporan;
  48. $result_select_laporan = mysqli_query($conn, $select_laporan);
  49.  
  50. $select_data = "SELECT judul_parameter, kode, tipe, nilai_awal FROM parameter_laporan WHERE id_laporan='".$id_laporan."'";
  51. $result_select_data = mysqli_query($conn, $select_data);
  52.  
  53. // pass addRow() an array and it converts it to Excel XML format and sends
  54. // it to the browser
  55. while ($row_data = mysqli_fetch_array($result_select_laporan)){
  56. $exporter->addRow(array($row_data["judul"]));
  57. $result_data = mysqli_query($conn, $row_data['queri']);
  58. $i = 0;
  59. $columns = [];
  60. $rows = [];
  61. while($data = mysqli_fetch_assoc($result_data)){
  62. foreach($data as $key => $value){
  63. if($i == 0){
  64. $columns[] = $key;
  65. }
  66. $rows[$i][] = $value;
  67. }
  68. $i++;
  69. }
  70.  
  71. $exporter->addRow($columns);
  72. foreach($rows as $row){
  73. $exporter->addRow($row);
  74. }
  75.  
  76. while($parameter = mysqli_fetch_assoc($result_select_data)){
  77. $exporter->addRow(array($parameter['judul_parameter'], $parameter['nilai_awal']));
  78. }
  79. }
  80.  
  81. $exporter->finalize();
  82. }else{
  83. $dompdf = new DOMPDF();
  84. $html = file_get_contents('http://localhost/skripsi_v4copy/after-login/tampilan_PDF.php?id=' . $id_laporan);
  85.  
  86. $dompdf->load_html($html);
  87. $dompdf->render();
  88. $output = $dompdf->output();
  89.  
  90. //save pdf
  91. file_put_contents($filepath, $output);
  92. }
  93.  
  94. //sent email with attachment
  95. $mail = new PHPMailer;
  96. $mail->isSMTP();
  97. $mail->SMTPDebug = 2;
  98. $mail->Debugoutput = 'html';
  99. $mail->Host = 'smtp.gmail.com';
  100. $mail->Port = 587;
  101. $mail->SMTPSecure = 'tls';
  102. $mail->SMTPAuth = true;
  103. $mail->Username = "dheafiirda@gmail.com";
  104. $mail->Password = "arZ2b1Dn";
  105. $mail->setFrom('dheafiirda@gmail.com', 'Dea Firda');
  106. $mail->addAddress('indrawan.wilianto@gmail.com');
  107. $mail->Subject = 'PHPMailer GMail SMTP test';
  108. $mail->msgHTML("report dikirim dan berhasil", dirname(__FILE__));
  109. $mail->AltBody = 'This is a plain-text message body';
  110. $mail->AddAttachment($filepath, $filename);
  111.  
  112. if (!$mail->send()) {
  113. echo "Mailer Error: " . $mail->ErrorInfo . "<br>";
  114. } else {
  115. echo "Report ID " . $id_laporan . " sent to " . $email . " in " . $format . " => (" . $filepath . ")<br>";
  116. }
  117.  
  118. //insert last update
  119. $sql_insert = "INSERT INTO log_schedule (last_eksekusi, id_eksekusi_otomatis)
  120. VALUES (NOW(), '$id')";
  121. $query_insert = mysqli_query($conn, $sql_insert);
  122. }
  123. }
  124.  
  125. $query_per_minute = genereateQuery("Menit", "MINUTE");
  126. $query_per_hour = genereateQuery("Jam", "HOUR");
  127. $query_per_day = genereateQuery("Harian", "DAY");
  128. $query_per_week = genereateQuery("Mingguan", "WEEK");
  129. $query_per_month = genereateQuery("Bulanan", "MONTH");
  130.  
  131. sendReport($conn, $query_per_minute);
  132. sendReport($conn, $query_per_hour);
  133. sendReport($conn, $query_per_day);
  134. sendReport($conn, $query_per_week);
  135. sendReport($conn, $query_per_month);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement