diff options
-rwxr-xr-x[-rw-r--r--] | .gitignore | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | css/tbc_external_review.css | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | js/jquery.lightbox_me.js | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | js/tbc_external_review.js | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | tbc_external_review.info | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | tbc_external_review.module | 195 |
6 files changed, 167 insertions, 28 deletions
diff --git a/.gitignore b/.gitignore index b6788e8..b6788e8 100644..100755 --- a/.gitignore +++ b/.gitignore diff --git a/css/tbc_external_review.css b/css/tbc_external_review.css index e5dfa99..e5dfa99 100644..100755 --- a/css/tbc_external_review.css +++ b/css/tbc_external_review.css diff --git a/js/jquery.lightbox_me.js b/js/jquery.lightbox_me.js index 548e8eb..548e8eb 100644..100755 --- a/js/jquery.lightbox_me.js +++ b/js/jquery.lightbox_me.js diff --git a/js/tbc_external_review.js b/js/tbc_external_review.js index 8ec72a3..8ec72a3 100644..100755 --- a/js/tbc_external_review.js +++ b/js/tbc_external_review.js diff --git a/tbc_external_review.info b/tbc_external_review.info index 85d9d44..85d9d44 100644..100755 --- a/tbc_external_review.info +++ b/tbc_external_review.info diff --git a/tbc_external_review.module b/tbc_external_review.module index 8f89ac9..33aa738 100644..100755 --- a/tbc_external_review.module +++ b/tbc_external_review.module @@ -65,6 +65,12 @@ "access arguments" => array("administer tbc_external_review"), "type" => MENU_NORMAL_ITEM ); + $items["tbc_external_review/mail_comments"] = array( + "title" => "ER Mail Comments", + "page callback" => "tbc_external_review_mail_comments_all", + "access arguments" => array("administer tbc_external_review"), + "type" => MENU_CALLBACK + ); $items["tbc_external_review/view_status"] = array( "title" => "ER View Status", "page callback" => "tbc_external_review_view_status_all", @@ -226,6 +232,32 @@ return $output; } + function send_mail_attachment($from, $to, $cc, $bcc, $subject, $message, $file) { + // $file should include path and filename + $filename = basename($file); + $file_size = filesize($file); + $content = chunk_split(base64_encode(file_get_contents($file))); + $uid = md5(uniqid(time())); + $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection + $header = "From: ".$from."\r\n" + ."Cc: ".$cc."\r\n" + ."Bcc: ".$bcc."\r\n" + ."MIME-Version: 1.0\r\n" + ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n" + ."This is a multi-part message in MIME format.\r\n" + ."--".$uid."\r\n" + ."Content-type: text/html; charset=UTF-8; format=flowed\r\n" + ."Content-Transfer-Encoding: 7bit\r\n\r\n" + .$message."\r\n\r\n" + ."--".$uid."\r\n" + ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n" + ."Content-Transfer-Encoding: base64\r\n" + ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n" + .$content."\r\n\r\n" + ."--".$uid."--"; + return mail($to, $subject, "", $header); + } + /* external reviewer profile form, save the data in {external_review_profile} @@ -692,13 +724,14 @@ $row = db_fetch_object($result); /* fetching example file data */ - $uploads_dir = $_SERVER['DOCUMENT_ROOT'] . base_path() . 'uploads/'; + $uploads_dir = $_SERVER['DOCUMENT_ROOT'] . base_path() . "uploads/"; $example_path = $uploads_dir . $row->filepath; $example = file_get_contents($example_path); $data .= "<table><th>Type of Error</th><th>Status</th>"; $data .= "<tr><td>Naming convention followed?</td><td>" . _bool($row->ncf) . "</td></tr>"; - $data .= "<tr><td>Problem statement included in code?</td><td>" . _bool($row->eit) . "</td></tr>"; + $data .= "<tr><td>Error in textbook mentioned as comment?</td><td>" . _bool($row->eit) . "</td></tr>"; + $data .= "<tr><td>Problem statement included in code?</td><td>" . _bool($row->psi) . "</td></tr>"; $data .= "<tr><td>Axes labeled ?</td><td>" . _bool($row->axl) . "</td></tr>"; $data .= "<tr><td>Symbols used are appropiate?</td><td>" . _bool($row->sua) . "</td></tr>"; $data .= "<tr><td>Scilab functions used?</td><td>" . _bool($row->sfu) . "</td></tr>"; @@ -900,29 +933,35 @@ } else { /* displaying the list of books */ $query = " - SELECT DISTINCT erc.preference_id, pre.book, pre.author, usr_con.name AS contributor, usr_ext.name AS reviewer + SELECT DISTINCT erc.preference_id, pre.book, pre.author, usr_con.name AS contributor, usr_ext.name AS reviewer, erd.mail FROM external_review_comments erc LEFT JOIN textbook_companion_preference pre ON erc.preference_id = pre.id LEFT JOIN textbook_companion_proposal pro ON pre.proposal_id = pro.id LEFT JOIN users usr_con ON usr_con.uid = pro.uid LEFT JOIN users usr_ext ON usr_ext.uid = erc.uid + LEFT JOIN external_review_details erd ON erd.preference_id = erc.preference_id ORDER BY pre.book "; $result = db_query($query); $headers = array( - "Book", "Author", - "Contributor", "Reviewer", - "Action", + "Book", "Contributor", + "Reviewer", "Action" ); $rows = array(); while($row = db_fetch_object($result)) { $item = array( - "{$row->book}", - "{$row->author}", + "{$row->book}<br><em>by {$row->author}</em>", "{$row->contributor}", "{$row->reviewer}", - l("View", "tbc_external_review/manage_comments/" . $row->preference_id), + l("View", "tbc_external_review/manage_comments/" . $row->preference_id) ); + end($item); + $key = key($item); + if(!$row->sent) { + $item[$key] .= " | " . l("Mail", "tbc_external_review/mail_comments/" . $row->preference_id); + } else { + $item[$key] .= " | " . "Sent"; + } array_push($rows, $item); } $page_content .= theme("table", $headers, $rows); @@ -930,6 +969,125 @@ return $page_content; } + function tbc_external_review_mail_comments_all($preference_id=0, $confirm="") { + function _bool($var) { + if($var == 1) { + return "No"; + } + return "Yes"; + } + $page_content = ""; + if($confirm == "confirm") { + $query = " + SELECT * FROM external_review_details + WHERE preference_id = %d + "; + $result = db_query($query, $preference_id); + $row = db_fetch_object($result); + + $review_dir = $_SERVER['DOCUMENT_ROOT'] . base_path() . "reviews/{$row->preference_id}/"; + if(!file_exists($review_dir)) { + mkdir($review_dir, 0755, TRUE); + } + $review_file = $review_dir . "{$row->preference_id}-review-{$row->review}" . ".csv"; + $fp = fopen($review_file, "w"); + /* making the first row */ + $item = array( + "Chapter No.", "Example No.", + "Naming convention followed?", "Error in textbook mentioned as comment?", + "Problem statement included in code?", "Axes labeled?", "Symbols used are appropiate?", + "Scilab functions used?", "Solved using Matlab in textbook?", + "Appropriate comments included?", "Appropriate units used as given in the textbook?", + "Typographical errors in output and/or comments?", "Answers matching with the textbook?", "Other Comments" + ); + fputcsv($fp, $item); + $query = " + SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc + LEFT JOIN textbook_companion_chapter cha ON erc.chapter_id = cha.id + LEFT JOIN textbook_companion_example exa ON erc.example_id = exa.id + WHERE (erc.hidden = 0 AND erc.preference_id = %d) + ORDER BY chapter, example + "; + $result = db_query($query, $preference_id); + while($row = db_fetch_object($result)) { + $item = array( + $row->chapter, $row->example, + _bool($row->ncf), _bool($row->eit), + _bool($row->psi), _bool($row->axl), + _bool($row->sua), _bool($row->sfu), + _bool($row->sum), _bool($row->aci), + _bool($row->auu), _bool($row->teo), + _bool($row->amt), "{$row->comment}" + ); + fputcsv($fp, $item); + } + fclose($fp); + + /* preparing and sending mail */ + $query = " + SELECT * FROM external_review_details erd + LEFT JOIN textbook_companion_preference pre ON erd.preference_id = pre.id + LEFT JOIN textbook_companion_proposal pro ON pre.proposal_id = pro.id + LEFT JOIN users usr ON pro.uid = usr.uid + WHERE erd.preference_id = %d + "; + $result = db_query($query, $preference_id); + $row = db_fetch_object($result); + $review_no = suffix($row->review); + $from = "textbook@scilab.in"; + $to = "{$row->mail}"; + $cc = "textbook@scilab.in"; + $bcc = "mukulrkulkarni@gmail.com, lavitha89@gmail.com, rush2jrp@gmail.com"; + $subject = "Scilab Textbook Companion - {$review_no} Review"; + $message = " + Dear {$row->name}<br><br> + Please find the attached file containing the list of errors found in your uploaded book: <br> + Book: <b>{$row->book}</b> <br> + Author: <b>{$row->author}</b> <br> + Review Number: <b>{$review_no}</b> <br><br> + Kindly rectify the errors and re-upload the codes on the website.<br> + <b>Reply to this mail once the corrections are done.</b> <br><br> + <i>Note: The attachment is a comma separated file, which can be viewed using any office software.</i> <br><br> + Regards,<br> + Scilab.in + "; + $file = $review_file; + $mail_status = send_mail_attachment($from, $to, $cc, $bcc, $subject, $message, $file); + if(!mail_status) { + drupal_set_message("An error occurred while sending mail.", "error"); + drupal_goto("tbc_external_review/manage_comments"); + } else { + /* toggling sent column in database */ + $query = " + UPDATE external_review_details + SET sent = 1 + WHERE preference_id = %d + "; + $result = db_query($query, $preference_id); + drupal_set_message("Mail sent successfully.", "status"); + drupal_goto("tbc_external_review/manage_comments"); + } + } else if($preference_id) { + $query = " + SELECT * FROM external_review_details erd + LEFT JOIN textbook_companion_preference pre ON erd.preference_id = pre.id + LEFT JOIN textbook_companion_proposal pro ON pre.proposal_id = pro.id + LEFT JOIN users usr ON pro.uid = usr.uid + WHERE erd.preference_id = %d + "; + $result = db_query($query, $preference_id); + $row = db_fetch_object($result); + $page_content .= "<h4>Are you sure you want to send mail?</h4><br>"; + $page_content .= "Book: <b>{$row->book}</b><br>"; + $page_content .= "Author: <b>{$row->author}</b><br>"; + $page_content .= "Contributor: <b>{$row->name}</b><br>"; + $page_content .= "Email: <b>{$row->mail}</b><br><br>"; + $page_content .= l("Yes", "tbc_external_review/mail_comments/{$preference_id}/confirm") . " | "; + $page_content .= l("Cancel", "tbc_external_review/manage_comments"); + } + return $page_content; + } + function tbc_external_review_add_book_all($preference_id=0, $action = "") { if($action == "confirm") { $query = " @@ -1073,26 +1231,7 @@ } function tbc_external_review_test_all() { - global $user; $page_content = ""; - - /* sending mail */ - $to = "rush2jrp@gmail.com"; - $from = "jayaram@iitb.ac.in"; - $subject = "Test Subject"; - $body = "<b>Test body</b>"; - $message = array( - "to" => $to, - "from" => $from, - "subject" => $subject, - "body" => $body, - "headers" => array( - "Cc" => "jayaram@iitb.ac.in", - "Bcc" => "jayaram@iitb.ac.in", - "Content-Type" => "text/html; charset=UTF-8; format=flowed" - ) - ); - drupal_mail_send($message); return $page_content; } |