"ER Books Available", "page callback" => "tbc_external_review_all", "access arguments" => array("access tbc_external_review"), "type" => MENU_CALLBACK ); $items["tbc_external_review/reviewer_profile"] = array( "title" => "TBC External Reviewer Profile", "page callback" => "tbc_external_review_profile_all", "access arguments" => array("access tbc_external_review"), "type" => MENU_CALLBACK ); $items["tbc_external_review/view_reviewers"] = array( "title" => "ER List Reviewers", "page callback" => "tbc_external_review_view_all", "access arguments" => array("administer tbc_external_review"), "type" => MENU_NORMAL_ITEM ); $items["tbc_external_review/reviewer_selections"] = array( "title" => "TBC External Reviewer Selections", "page callback" => "tbc_external_review_reviewer_selections_all", "access arguments" => array("administer tbc_external_review"), "type" => MENU_CALLBACK ); $items["tbc_external_review/selected_books"] = array( "title" => "Books for External Review", "page callback" => "tbc_external_review_selected_books_all", "access arguments" => array("download tbc_external_review"), "type" => MENU_NORMAL_ITEM ); $items["tbc_external_review/comments"] = array( "title" => "External Review Comments", "page callback" => "tbc_external_review_comments_all", "access arguments" => array("download tbc_external_review"), "type" => MENU_NORMAL_ITEM ); $items["tbc_external_review/view_comments"] = array( "title" => "External Review Comments", "page callback" => "tbc_external_review_view_comments_all", "access arguments" => array("download tbc_external_review"), "type" => MENU_NORMAL_ITEM ); $items["tbc_external_review/status"] = array( "title" => "External Review Status", "page callback" => "tbc_external_review_status_all", "access arguments" => array("administer tbc_external_review"), "type" => MENU_NORMAL_ITEM ); $items["tbc_external_review/ajax"] = array( "page callback" => "tbc_external_review_ajax", "access arguments" => array("download tbc_external_review"), "type" => MENU_CALLBACK ); return $items; } function tbc_external_review_perm() { return array( "access tbc_external_review", "administer tbc_external_review", "download tbc_external_review" ); } /* book selection form {external_review_details} database required. fields: preference_id, uid, status status = 1 for selected. */ function tbc_external_review_form($form_state) { global $user; $form = array(); /* create multiple checkboxes from database */ $result = remaining_books(); $num_rows = mysql_num_rows($result); if($num_rows > 0) { while($row = db_fetch_object($result)) { $form[$row->id] = array( "#type" => "checkbox", "#title" => t("{$row->book} by {$row->author} ( ed: {$row->edition}, pub: {$row->year})"), ); } $form["submit"] = array( "#type" => "submit", "#value" => "Submit", ); } else { drupal_set_message("All the available books have been selected. Please wait for more updates.", "status"); } return $form; } function tbc_external_review_form_validate($form, &$form_state) { $result = remaining_books(); $count = 0; $selections = array(); while($row = db_fetch_object($result)) { if($form_state["values"][$row->id] == 1) { $count++; array_push($selections, $row->id); } } $remaining = remaining_books_count(); if($count > $remaining) { form_set_error("", "You can select a maximum of {$remaining} books."); } else { $form_state["values"]["selections"] = $selections; } } function tbc_external_review_form_submit($form, &$form_state) { global $user; $selections = $form_state["values"]["selections"]; foreach($selections as $selection) { $query = "update {external_review_details} set uid = {$user->uid}, status = 1 where preference_id = {$selection}"; db_query($query); } drupal_set_message("Your selections have been updated sucessfully.", "status"); } function tbc_external_review_all() { global $user; $page_content = ""; $remaining = remaining_books_count(); if($remaining > 0) { $page_content = "You have {$remaining} selections remaining:"; $page_content .= drupal_get_form("tbc_external_review_form"); } else { $page_content = "Thanks for your selections."; } return $page_content; } /* helper functions */ function remaining_books_count() { global $user; /*finding how many books the user can select */ $query = "select count(*) from {external_review_details} where uid = {$user->uid}"; $result = db_query($query); $row = db_fetch_array($result); $remaining = 6 - $row["count(*)"]; return $remaining; } function remaining_books() { $query = "select * from {textbook_companion_preference} where id in (select preference_id from {external_review_details} where status = 0)"; $result = db_query($query); return $result; } /* external reviewer profile form, save the data in {external_review_profile} */ function tbc_external_review_profile_form() { global $user; $form = array(); /* populating the form with previous entry details if exists */ $query = "select * from {external_review_profile} where uid = %d"; $result = db_query($query, $user->uid); $row = db_fetch_array($result); $form["first_name"] = array( "#type" => "textfield", "#title" => t("First Name"), "#required" => True, "#default_value" => $row["first_name"], ); $form["last_name"] = array( "#type" => "textfield", "#title" => t("Last Name"), "#required" => True, "#default_value" => $row["last_name"], ); $form["designation"] = array( "#type" => "textfield", "#title" => t("Designation"), "#required" => True, "#default_value" => $row["designation"], ); $form["university"] = array( "#type" => "textfield", "#title" => t("University/Institute"), "#required" => True, "#default_value" => $row["university"], ); $form["phone"] = array( "#type" => "textfield", "#title" => t("Phone Number"), "#required" => True, "#default_value" => $row["phone"], ); $form["email"] = array( "#type" => "textfield", "#title" => t("Email"), "#required" => True, "#default_value" => $row["email"], ); $form["alt_email"] = array( "#type" => "textfield", "#title" => t("Alternate Email"), "#default_value" => $row["alt_email"], ); $form["address"] = array( "#type" => "textarea", "#title" => t("Postal Address"), "#required" => True, "#default_value" => $row["address"], ); $form["description"] = array( "#type" => "textarea", "#title" => t("Description: (Research interest / Level of expertise in Scilab / Teaching Expertise ) "), "#required" => True, "#default_value" => $row["description"], ); $form["submit"] =array( "#type" => "submit", "#value" => "Update Profile", ); return $form; } function tbc_external_review_profile_form_validate($form, &$form_state) { /* validating phone */ if(!preg_match("/^[0-9]+$/", $form_state["values"]["phone"])) { form_set_error("phone", "Please enter a valid Phone Number, only (0-9) allowed."); } /*validating email */ if(!valid_email_address($form_state["values"]["email"])) { form_set_error("email", "Please enter a valid Email address"); } if($form_state["values"]["alt_email"] && !valid_email_address($form_state["values"]["alt_email"])) { form_set_error("alt_email", "Please enter a valid Alternate Email address" ); } /* validating address */ if(strlen($form_state["values"]["address"]) < 20) { form_set_error("address", "Please enter a proper Postal Address."); } /* validating description */ if(strlen($form_state["values"]["description"]) < 25) { form_set_error("description", "Please enter a longer description."); } } function tbc_external_review_profile_form_submit($form, &$form_state) { global $user; /* setting $val as the new values array */ $val = array(); $val = $form_state["values"]; /* checking whether the user already has an entry */ $query = "select uid from {external_review_profile} where uid = %d"; $result = db_query($query, $user->uid); $has_entry = mysql_num_rows($result); if($has_entry) { /* update the existing entry */ $query = "update {external_review_profile} set first_name = '%s', last_name = '%s', designation = '%s', university = '%s', phone = '%s', email = '%s', alt_email = '%s', address = '%s', description = '%s' where uid = %d "; $result = db_query( $query, $val["first_name"], $val["last_name"], $val["designation"], $val["university"], $val["phone"], $val["email"], $val["alt_email"], $val["address"], $val["description"], $user->uid ); } else { /* create a new entry */ $query = "insert into {external_review_profile} (uid, first_name, last_name, designation, university, phone, email, alt_email, address, description) values (%d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') "; $result = db_query( $query, $user->uid, $val["first_name"], $val["last_name"], $val["designation"], $val["university"], $val["phone"], $val["email"], $val["alt_email"], $val["address"], $val["description"] ); } if($result) { drupal_set_message("Profile updated successfully. Thank you.", "status"); } else { drupal_set_message("Database updation failed. Please contact support.", "error"); } drupal_goto('tbc_external_review'); } function tbc_external_review_profile_all() { $page_content = ""; $page_content .= drupal_get_form("tbc_external_review_profile_form"); return $page_content; } function tbc_external_review_view_all() { $page_content = ""; $query = "select * from {external_review_profile}"; $result = db_query($query); $page_content .= "