summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--].gitignore0
-rwxr-xr-x[-rw-r--r--]css/tbc_external_review.css0
-rwxr-xr-x[-rw-r--r--]js/jquery.lightbox_me.js0
-rwxr-xr-x[-rw-r--r--]js/tbc_external_review.js0
-rwxr-xr-x[-rw-r--r--]tbc_external_review.info0
-rwxr-xr-x[-rw-r--r--]tbc_external_review.module195
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;
}