Example #1
0
     $formslib = new FormsLib();
     $returnStr = $formslib->archiveInstance($_REQUEST['id']);
     break;
 case 'unarchivesession':
     include 'lib/FormsLib.php';
     include 'lib/EnumLib.php';
     $formslib = new FormsLib();
     $returnStr = $formslib->unarchiveInstance($_REQUEST['id']);
     break;
     // Email stem
 // Email stem
 case 'getemailstemdetails':
     include 'lib/FormsLib.php';
     include 'lib/EnumLib.php';
     $enumlib = new EnumLib();
     $returnStr = $enumlib->getExamEmailStemByID($_REQUEST['id']);
     break;
 case 'updateemailstemdetails':
     include 'lib/FormsLib.php';
     include 'lib/EnumLib.php';
     $formslib = new FormsLib();
     $returnStr = $formslib->setEmailStemText($_REQUEST['id'], $_REQUEST['text'], $_REQUEST['userid']);
     break;
 case 'exportexamasxmlfile':
     include 'lib/FormsLib.php';
     include 'lib/EnumLib.php';
     $enumLib = new EnumLib();
     $output = $enumLib->exportAssessment($_REQUEST['id']);
     $overview = simplexml_load_string($enumLib->getExamInstanceOverviewByID($_REQUEST['id']));
     header('Content-Disposition: attachment;filename="' . $overview->instance->name . ' export.xml"');
     header('Content-Type: text/plain');
Example #2
0
 /**
  * Sends an email to all students assessed in a session, containing a PDF of their assessment results (but not global comments or overall assessment)
  * @global type $CFG
  * @param type $sessionID
  * @param type $includeComments
  * @return string an XML-formatted string containing the success and failure count of the operation
  */
 public function sendMail($sessionID, $showOverallResult = false)
 {
     //  getExamEmailStemByID
     global $CFG;
     $reportsLib = new ReportsLib();
     $stringlib = new StringLib();
     $enumlib = new EnumLib();
     $failcount = 0;
     $successcount = 0;
     $i = 0;
     $length = 0;
     //$conn = mysqli_connect($CFG->db, $CFG->dbuser, $CFG->dbuserpass, $CFG->schema) or die('<data><error>failed connecting to database</error><detail>' . mysqli_error($conn) . '</detail></data>');
     try {
         $conn = new PDO("mysql:host={$CFG->db};dbname={$CFG->schema}", $CFG->dbuser, $CFG->dbuserpass);
     } catch (PDOException $e) {
         die('<data><error>failed connecting to database</error><detail>' . $e->getMessage() . '</detail></data>');
     }
     // get count
     $countquery = "SELECT count(*) as count FROM student_exam_sessions a WHERE a.form_ID = :sessionID";
     $stmt = $conn->prepare($countquery);
     $stmt->bindValue(':sessionID', $sessionID, PDO::PARAM_INT);
     $stmt->execute() or die('<data><error>sendMail count query failed</error><detail>' . $stmt->errorInfo() . '</detail></data>');
     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $linecount = $row['count'];
     }
     $stmt->closeCursor();
     $query = "SELECT a.ID,  a.student_id, (SELECT email from students WHERE ID = a.student_id) as email, (SELECT CONCAT(fname, ' ', lname) as studentname from students WHERE ID = a.student_id) as studentname  FROM student_exam_sessions a WHERE a.form_ID = :sessionID";
     $stmt = $conn->prepare($query);
     $stmt->bindValue(':sessionID', $sessionID, PDO::PARAM_INT);
     //$result = mysqli_query($conn, $query) or die('<data><error>select query failed</error><detail>' . mysqli_error($conn) . $query . '</detail></data>');
     $stmt->execute() or die('<data><error>sendMail query failed</error><detail>' . $stmt->errorCode() . '</detail></data>');
     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
         $stemXML = simplexml_load_string($enumlib->getExamEmailStemByID($sessionID));
         $mail = new PHPMailer();
         $mail->SetFrom("*****@*****.**", "eOSCE System");
         $mail->Body = "Dear {$row['studentname']}<br/>" . $stemXML->text;
         $mail->IsHTML(true);
         $mail->Subject = 'OSCE Feedback';
         if ($CFG->sendemailtoonlyoneperson) {
             $to = $CFG->sendemailtoonlyonepersonrecipient;
         } else {
             $to = $row['email'];
         }
         ////$row['email'];
         $mail->AddAddress($to);
         //ob_start();
         $pdf = $reportsLib->getReportForStudentSessionAsPDFForEmail($row['ID'], $showOverallResult);
         //$body = ob_get_contents(); // the pdf data.
         //ob_end_clean();
         $mail->AddStringAttachment($pdf, "report.pdf");
         if (!$mail->Send()) {
             $this->doLog($sessionID, $row['student_id'], $mail->ErrorInfo);
             $failcount++;
             //echo "Mailer Error: " . $mail->ErrorInfo;
         } else {
             $this->doLog($sessionID, $row['student_id'], 'true');
             $successcount++;
         }
         // set a progress variable as event
         //  ob_start();
         $i++;
         echo round($i / $linecount * 100) . "%,";
         ob_flush();
         flush();
         //ob_end_clean();
     }
     $enumlib = new EnumLib();
     $logresults = $enumlib->getFeedbackSummary($sessionID);
     return "<data><status>done</status><logresults><successcount>{$successcount}</successcount><failcount>{$failcount}</failcount><totalcount>" . ($failcount + $successcount) . "</totalcount></logresults></data>";
 }