'Book Proposal Form', 'description' => 'Book Proposal Form.', 'page callback' => 'textbook_companion_proposal_all', 'access callback' => 'user_access', 'access arguments' => array('create book proposal'), 'type' => MENU_CALLBACK, ); $items["aicte_proposal"] = array( "title" => "AICTE Book Proposal", "description" => "AICTE Book Proposal Form", "page callback" => "textbook_companion_aicte_proposal_all", 'access arguments' => array('create book proposal'), 'type' => MENU_CALLBACK, ); $items["all_proposal"] = array( "title" => "Book Proposal", "description" => "Book Proposal Form", "page callback" => "textbook_companion_aicte_proposal_all", 'access arguments' => array('create book proposal'), 'type' => MENU_CALLBACK, ); /* for reviewers */ $items['manage_proposal'] = array( 'title' => 'Manage Book Proposals', 'description' => 'Manage Book Proposals', 'page callback' => '_proposal_pending', 'access callback' => 'user_access', 'access arguments' => array('approve book proposal'), 'file' => 'manage_proposal.inc', ); $items['manage_proposal/pending'] = array( 'title' => 'Pending Proposals', 'description' => 'Pending Proposals Queue', 'page callback' => '_proposal_pending', 'access callback' => 'user_access', 'access arguments' => array('approve book proposal'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => 1, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/all'] = array( 'title' => 'All Proposals', 'description' => 'All Proposals', 'page callback' => '_proposal_all', 'access callback' => 'user_access', 'access arguments' => array('approve book proposal'), 'type' => MENU_LOCAL_TASK, 'weight' => 2, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/category'] = array( 'title' => 'Categorize', 'description' => 'Categorize Books', 'page callback' => '_category_all', 'access callback' => 'user_access', 'access arguments' => array('approve book proposal'), 'type' => MENU_LOCAL_TASK, 'weight' => 2, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/failed'] = array( 'title' => 'Failed Proposals', 'description' => 'Failed to submit code', 'page callback' => '_failed_all', 'access callback' => 'user_access', 'access arguments' => array('approve book proposal'), 'type' => MENU_LOCAL_TASK, 'weight' => 3, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/approve'] = array( 'title' => 'Proposal Approval', 'description' => 'Proposal Approval', 'page callback' => 'drupal_get_form', 'page arguments' => array('proposal_approval_form'), 'access arguments' => array('approve book proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/status'] = array( 'title' => 'Proposal Status', 'description' => 'Proposal Status', 'page callback' => 'drupal_get_form', 'page arguments' => array('proposal_status_form'), 'access arguments' => array('approve book proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/edit'] = array( 'title' => 'Edit Proposal', 'description' => 'Edit Proposal', 'page callback' => 'drupal_get_form', 'page arguments' => array('proposal_edit_form'), 'access arguments' => array('edit book proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); $items['manage_proposal/category/edit'] = array( 'title' => 'Edit Category', 'description' => 'Edit category', 'page callback' => 'drupal_get_form', 'page arguments' => array('category_edit_form'), 'access arguments' => array('edit book proposal'), 'type' => MENU_CALLBACK, 'file' => 'manage_proposal.inc', ); $items['code_approval'] = array( 'title' => 'Manage Code Approval', 'description' => 'Manage Code Approval', 'page callback' => 'code_approval', 'access arguments' => array('approve code'), 'type' => MENU_NORMAL_ITEM, 'file' => 'code_approval.inc', ); $items['code_approval/approve'] = array( 'title' => 'Code Approval', 'description' => 'Code Approval', 'page callback' => 'drupal_get_form', 'page arguments' => array('code_approval_form'), 'access arguments' => array('approve code'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => 1, 'file' => 'code_approval.inc', ); $items['code_approval/bulk'] = array( 'title' => 'Bulk Manage', 'description' => 'Bulk Mangage', 'page callback' => 'drupal_get_form', 'page arguments' => array('bulk_approval_form'), 'access arguments' => array('bulk manage code'), 'type' => MENU_LOCAL_TASK, 'weight' => 2, 'file' => 'code_approval.inc', ); $items['code_approval/editcode'] = array( 'title' => 'Admin Edit Example', 'description' => 'Admin Edit Example', 'page callback' => 'drupal_get_form', 'page arguments' => array('upload_examples_admin_edit_form'), 'access arguments' => array('approve code'), 'type' => MENU_CALLBACK, 'weight' => 3, 'file' => 'editcodeadmin.inc', ); $items['code_approval/notes'] = array( 'title' => 'Notes for Reviewers', 'description' => 'Notes for Reviewers', 'page callback' => 'drupal_get_form', 'page arguments' => array('book_notes_form'), 'access arguments' => array('bulk manage code'), 'type' => MENU_CALLBACK, 'weight' => 4, 'file' => 'notes.inc', ); $items['code_approval/dependency'] = array( 'title' => 'Dependency', 'description' => 'Dependency', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_dependency_approval_form'), 'access arguments' => array('bulk manage code'), 'type' => MENU_LOCAL_TASK, 'weight' => 3, 'file' => 'dependency_approval.inc', ); $items['textbook_companion/code'] = array( 'title' => 'Code Submission', 'description' => 'Code Submission', 'page callback' => 'list_chapters', 'access callback' => 'user_access', 'access arguments' => array('upload code'), 'file' => 'general.inc', ); $items['textbook_companion/code/list_chapters'] = array( 'title' => 'List Chapters', 'description' => 'List Chapters', 'page callback' => 'list_chapters', 'access arguments' => array('upload code'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'file' => 'general.inc', 'weight' => 1, ); $items['textbook_companion/code/upload'] = array( 'title' => 'Code Submission', 'description' => 'Code Submission', 'page callback' => 'upload_examples', 'access arguments' => array('upload code'), 'type' => MENU_LOCAL_TASK, 'file' => 'code.inc', 'weight' => 2, ); $items['textbook_companion/code/upload_dep'] = array( 'title' => 'Upload Dependency', 'description' => 'Upload Dependency Files', 'page callback' => 'drupal_get_form', 'page arguments' => array('upload_dependency_form'), 'access arguments' => array('upload code'), 'type' => MENU_LOCAL_TASK, 'file' => 'dependency.inc', 'weight' => 3, ); $items['textbook_companion/code/edit_dep'] = array( 'title' => 'Edit Dependency', 'description' => 'Edit Dependency File', 'page callback' => 'edit_dependency', 'access arguments' => array('upload code'), 'type' => MENU_CALLBACK, 'file' => 'dependency.inc', ); $items['textbook_companion/code/delete_dep'] = array( 'title' => 'Delete Dependency', 'description' => 'Delete Dependency File', 'page callback' => 'delete_dependency', 'access arguments' => array('upload code'), 'type' => MENU_CALLBACK, 'file' => 'dependency.inc', ); $items['textbook_companion/code/edit'] = array( 'title' => 'Edit Example', 'description' => 'Edit Example', 'page callback' => 'drupal_get_form', 'page arguments' => array('upload_examples_edit_form'), 'access arguments' => array('edit uploaded code'), 'type' => MENU_CALLBACK, 'file' => 'editcode.inc', ); $items['textbook_companion/code/delete'] = array( 'title' => 'Delete Example', 'description' => 'Delete Example', 'page callback' => '_upload_examples_delete', 'access arguments' => array('upload code'), 'type' => MENU_CALLBACK, 'file' => 'code.inc', ); $items['textbook_companion/code/chapter/edit'] = array( 'title' => 'Edit Chapter Title', 'description' => 'Edit Chapter Title', 'page callback' => 'drupal_get_form', 'page arguments' => array('edit_chapter_title_form'), 'access arguments' => array('upload code'), 'type' => MENU_CALLBACK, 'file' => 'editcode.inc', ); $items['textbook_companion/code/list_examples'] = array( 'title' => 'List Examples', 'description' => 'List Examples', 'page callback' => 'list_examples', 'access arguments' => array('upload code'), 'type' => MENU_CALLBACK, 'file' => 'general.inc', 'weight' => 3, ); $items['textbook_search'] = array( 'title' => 'Book Search', 'description' => '', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_search_form'), 'access arguments' => array('access content'), 'type' => MENU_NORMAL_ITEM, 'file' => 'search.inc', ); $items['textbook_search/search'] = array( 'title' => 'Book Search', 'description' => '', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_search_form'), 'access arguments' => array('access content'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'file' => 'search.inc', 'weight' => 1, ); $items['textbook_run'] = array( 'title' => 'Download Codes', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_run_form'), 'access arguments' => array('access content'), 'type' => MENU_NORMAL_ITEM, 'file' => 'run.inc', ); $items['download_codes'] = array( 'title' => 'Download Codes', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_run_form'), 'access arguments' => array('access content'), 'type' => MENU_NORMAL_ITEM, 'file' => 'run.inc', ); /* download callbacks */ $items['download/file'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_example_file', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); $items['download/samplecode'] = array( 'title' => 'Sample Code Download', 'description' => 'Sample Code Download', 'page callback' => 'textbook_companion_download_sample_code', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); $items['download/dependency'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_dependency_file', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); $items['download/example'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_example', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); $items['download/chapter'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_chapter', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); $items['download/book'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_book', 'access arguments' => array('download code'), 'type' => MENU_CALLBACK, 'file' => 'download.inc', ); /* reviewer download */ $items['full_download/chapter'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_full_chapter', 'access arguments' => array('approve code'), 'type' => MENU_CALLBACK, 'file' => 'full_download.inc', ); $items['full_download/book'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_full_book', 'access arguments' => array('approve code'), 'type' => MENU_CALLBACK, 'file' => 'full_download.inc', ); /* external reviewer download */ $items['full_download_external/chapter'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_full_chapter', 'access arguments' => array('download books to review'), 'type' => MENU_CALLBACK, 'file' => 'full_download.inc', ); $items['full_download_external/book'] = array( 'title' => 'Code Download', 'description' => 'Code Download', 'page callback' => 'textbook_companion_download_full_book', 'access arguments' => array('download books to review'), 'type' => MENU_CALLBACK, 'file' => 'full_download.inc', ); /* latex script for book generation */ $items['textbook_companion/generate_book'] = array( 'title' => 'Generate Book', 'description' => 'Generate Book From Latex Script', 'page callback' => 'textbook_companion_download_book', 'access arguments' => array('generate book'), 'type' => MENU_CALLBACK, 'file' => 'latex.inc', ); $items['textbook_companion/delete_book'] = array( 'title' => 'Delete Book PDF', 'description' => 'Delete Book PDF', 'page callback' => 'textbook_companion_delete_book', 'access arguments' => array('approve code'), 'type' => MENU_CALLBACK, 'file' => 'latex.inc', ); /* general purpose callbacks */ $items['textbook_companion/ajax'] = array( 'title' => 'Ajax', 'description' => 'Ajax', 'page callback' => 'textbook_companion_ajax', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); /* for admin */ $items['admin/settings/book_companion'] = array( 'title' => 'Book Companion Settings', 'description' => 'Book Companion Settings', 'page callback' => 'drupal_get_form', 'page arguments' => array('textbook_companion_settings_form'), 'access arguments' => array('administer book companion'), 'type' => MENU_NORMAL_ITEM, 'file' => 'settings.inc', ); /* for data entry */ $items['dataentry_book'] = array( 'title' => 'Approved books list', 'page callback' => '_data_entry_proposal_all', 'access callback' => 'user_access', 'access arguments' => array('dataentry book proposal'), 'file' => 'manage_proposal.inc', ); $items['dataentry_edit'] = array( 'title' => 'Edit book details', 'page callback' => 'dataentry_edit', 'access callback' => 'user_access', 'access arguments' => array('dataentry book proposal'), 'type' => MENU_NORMAL_ITEM, 'file' => 'manage_proposal.inc', ); /*Cheque Details and Contact Form */ $items['cheque_manage/all'] = array( 'title' => 'Cheque Proposals', 'description' => 'Cheque Proposals', 'page callback' => 'cheque_proposal_all', 'access arguments' => array('cheque proposal'), 'file' => 'cheque_manage.inc', ); $items['mycontact'] = array( 'title' => 'Update Contact Details', 'description' => 'Update Contact Details', 'page callback' => 'drupal_get_form', 'page arguments' => array('contact_details'), 'access arguments' => array('contact_details'), 'file' => 'cheque_contact.inc', ); $items['cheque_contct'] = array( 'title' => 'Report', 'description' => 'Cheque Contact Form', 'page callback' => 'drupal_get_form', 'page arguments' => array('cheque_contct_form'), 'access arguments' => array('cheque contct form'), 'file' => 'cheque_contact.inc', ); $items['cheque_contact/status'] = array( 'title' => 'Cheque Status', 'description' => 'Cheque Status', 'page callback' => 'drupal_get_form', 'page arguments' => array('cheque_status_form'), 'access' => 'user_is_logged_in', 'access arguments' => array('cheque status form'), 'file' => 'cheque_contact.inc', ); $items['cheque_contct/report'] = array( 'title' => 'Report', 'description' => 'Report', 'page callback' => 'drupal_get_form', 'page arguments' => array('cheque_report_form'), 'access' => 'user_is_logged_in', 'access arguments' => array('cheque report form'), 'file' => 'cheque_contact.inc', ); $items['certificate'] = array( 'title' => 'List Of All Certificates', 'description' => 'List Of All Certificates', 'page callback' => '_list_all_certificates', 'access arguments' => array('list all certificates'), 'file' => 'pdf/list_all_certificates.inc', ); $items['certificate/generate_pdf'] = array( 'title' => 'Download Certificate', 'description' => 'Download Certificate', 'page callback' => 'drupal_get_form', 'page arguments' => array('generate_pdf'), 'access arguments' => array('generate pdf'), 'file' => 'pdf/generate_pdf.inc', ); $items['manage_proposal/paper_submission'] = array( 'title' => 'Application Submission', 'description' => 'Application Submission', 'page callback' => 'drupal_get_form', 'page arguments' => array('paper_submission_form'), 'access arguments' => array('paper submission form'), 'type' => MENU_CALLBACK, 'file' => 'cheque_contact.inc', ); $items["nonaicte_proposal"] = array( "title" => "Book Suggestion Form ", "description" => "NON-AICTE Book Proposal Form", 'page callback' => 'textbook_companion_nonaicte_proposal_all', 'access arguments' => array('create book proposal'), 'type' => MENU_CALLBACK, ); return $items; } /** * Implementation of hook_permission(). */ function textbook_companion_permission() { return array( "create book proposal" => array( "title" => t("Book Proposal Form"), "description" => t("Book Proposal Form.") ), "approve book proposal" => array( "title" => t("Approve book proposal"), "description" => t("Allows users to approve book proposal.") ), "approve code" => array( "title" => t("Approve code"), "description" => t("Allows users to approve code.") ), "upload code" => array( "title" => t("Upload code"), "description" => t("Allows users to upload code.") ), "edit uploaded code" => array( "title" => t("Edit uploaded code"), "description" => t("Allows users to edit uploaded code.") ), "download code" => array( "title" => t("Download code"), "description" => t("Allows users to download code.") ), "create feedback" => array( "title" => t("Create feedback"), "description" => t("Allows users to create feedback.") ), "bulk manage code" => array( "title" => t("Bulk manage code"), "description" => t("Allows users to manage Bulk code.") ), "bulk delete code" => array( "title" => t("Bulk delete code"), "description" => t("Allows users to delete bulk code.") ), "edit book proposal" => array( "title" => t("Edit book proposal"), "description" => t("Allows users to edit book proposal.") ), "administer book companion" => array( "title" => t("Administer book companion"), "description" => t("Allows users to administer book companion.") ), "generate book" => array( "title" => t("Generate book"), "description" => t("Allows users to generate book.") ), "cheque contct form" => array( "title" => t("Cheque contact form"), "description" => t("Cheque contct form.") ), "contact_details" => array( "title" => t("Contact_details"), "description" => t("Contact_details.") ), "comment cheque" => array( "title" => t("Comment cheque"), "description" => t("Comment cheque.") ), "list all certificates" => array( "title" => t("list all certificates"), "description" => t("Allows users to list all certificates.") ), "generate pdf" => array( "title" => t("Generate pdf"), "description" => t("Allows users to Generate pdf.") ), "paper submission form" => array( "title" => t("paper submission form"), "description" => t("Paper submission form.") ), "cheque status form" => array( "title" => t("Cheque status form"), "description" => t("Cheque status form.") ), "cheque report form" => array( "title" => t("Cheque report form"), "description" => t("Cheque report form.") ), "cheque proposal" => array( "title" => t("Cheque proposal"), "description" => t("Cheque proposal.") ), "download books to review" => array( "title" => t("download books to review"), "description" => t("Download books to review.") ), ); } /* Aicte books pickup before the proposal form */ function textbook_companion_aicte_proposal_form($form,&$form_state) { /*********** fetch aicte book data ********************/ $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('status', 0); $query->condition('selected', 0); $result = $query->execute(); $form = array(); $form["wrapper"] = array( "#type" => "fieldset", "#prefix" => "
", "#suffix" => "
", ); $num_rows = $result->rowCount(); if ($num_rows > 0) { while($row = $result->fetchObject()) { /* fixing title string */ $title = ""; $edition = ""; $year = ""; $title = "{$row->book} by {$row->author}"; if($row->edition) { $edition = "ed: {$row->edition}"; } if($row->year) { if($row->edition) { $year = ", pub: {$row->year}"; } else { $year = "pub: {$row->year}"; } } if($edition or $year) { $title .= "({$edition} {$year})"; } $form["wrapper"][$row->id] = array( "#type" => "checkbox", "#title" => $title, "#prefix" => "
", "#suffix" => "
", ); } } $form["submit"] = array( "#type" => "submit", "#value" => "Submit Book Selections" ); return $form; } function textbook_companion_aicte_proposal_form_validate($form, &$form_state) { $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('status', 0); $query->condition('selected', 0); $result = $query->execute(); $count = 0; $selections = array(); while($row = $result->fetchObject()) { if($form_state["values"][$row->id] == 1) { $count++; array_push($selections, $row->id); } } /* user can choose only 3 books to propose */ if($count != 3) { form_set_error("", "Please select exactly 3 books. You currently selected {$count}"); } else { $form_state["values"]["selections"] = $selections; } } /* AICTE Book list proposal form submit */ function textbook_companion_aicte_proposal_form_submit($form, &$form_state) { global $user; $selections = $form_state["values"]["selections"]; //var_dump($selections); variable_set("aicte_".$user->uid, $selections); drupal_goto("proposal"); } /************* AICTE book report form **************/ function textbook_companion_aicte_report_form($from, $form_state) { $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('status', 0); $query->orderBy('book', 'ASC'); $result = $query->execute(); $books = array(); $books[0] = "Please select a book"; while($row = $result->fetchObject()) { $books[$row->id] = "{$row->book} ({$row->author})"; } $form = array(); $form["name"] = array( "#type" => "textfield", "#title" => "Name", "#description" => t("Please enter your name."), ); $form["email"] = array( "#type" => "textfield", "#title" => "Email", "#description" => t("Please enter your valid email id."), ); $form["number"] = array( "#type" => "textfield", "#title" => "Number", "#description" => t("Please enter your valid phone number."), ); $form["book"] = array( "#type" => "select", "#title" => "AICTE Book", "#description" => t("Please select a book."), "#options" => $books ); $form["comment"] = array( "#type" => "textarea", "#title" => "Any other comment?", "#description" => t("Please enter your query (if any)") ); $form["submit"] = array( "#type" => "submit", "#value" => "Submit" ); return $form; } /************* AICTE book report form submit **************/ function textbook_companion_aicte_report_form_submit($form, &$form_state) { $v = $form_state["values"]; $query = "INSERT INTO textbook_companion_aicte_report (aicte_id, name, number, email, comment) VALUES (:aicte_id, :name, :number, :email, :comment)"; $args = array( ":aicte_id" => $v["book"], ":name" => $v["name"], ":number" => $v["number"], ":email" =>$v["email"], ":comment" => $v["comment"] ); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); drupal_set_message("Thank you for reporting.", "status"); } /************* AICTE book list selection **************/ function textbook_companion_aicte_proposal_all() { global $user; $page_content = ""; if (!$user->uid) { $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('status', 0); $result = $query->execute(); $page_content .= ""; $page_content .= "Search : "; $page_content .= ""; $page_content .= "
"; $num_rows = $result->rowCount(); if ($num_rows > 0) { $i = 1; while($row = $result->fetchObject()) { /* fixing title string */ $title = ""; $edition = ""; $year = ""; $title = "{$row->book} by {$row->author}"; if($row->edition) { $edition = "ed: {$row->edition}"; } if($row->year) { if($row->edition) { $year = ", pub: {$row->year}"; } else { $year = "pub: {$row->year}"; } } if($edition or $year) { $title .= "({$edition} {$year})"; } $page_content .= "
{$i}) {$title}
"; $i++; } } $page_content .= "
"; /* adding aicte report form */ //$page_content .= drupal_get_form("textbook_companion_aicte_report_form"); return $page_content; } /* check if user has already submitted a proposal */ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('uid', $user->uid); $query->orderBy('id', 'DESC'); $query->range(0, 1); $proposal_q = $query->execute(); if ($proposal_q) { if ($proposal_data = $proposal_q->fetchObject()) { switch ($proposal_data->proposal_status) { case 0: drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status'); drupal_goto(''); return; break; case 1: drupal_set_message(t('Your proposal has been approved. Please go to ' . l('Code Submission', 'textbook_companion/code') . ' to upload your code'), 'status'); drupal_goto(''); return; break; case 2: drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal below.'), 'error'); break; case 3: drupal_set_message(t('Congratulations! You have completed your last book proposal. You can create another proposal below.'), 'status'); break; default: drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error'); drupal_goto(''); return; break; } } } variable_del("aicte_".$user->uid); $page_content .= "
* Please select any 3 books from the below list.

"; //$page_content .= "Unable to propose particular book: Click here

"; //$page_content .= "Do not wish to propose any of the below books: Click here

"; $page_content .= "Search : "; $page_content .= ""; $textbook_companion_aicte_proposal_form = drupal_get_form("textbook_companion_aicte_proposal_form"); $page_content .= drupal_render($textbook_companion_aicte_proposal_form); return $page_content; } /*************** non aicte book proposal *******************/ function textbook_companion_nonaicte_proposal_all() { global $user; $page_content = ""; if (!$user->uid) { $page_content .= ""; return $page_content; } /* check if user has already submitted a proposal */ /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE uid = %d ORDER BY id DESC LIMIT 1", $user->uid);*/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('uid', $user->uid); $query->orderBy('id', 'DESC'); $query->range(0, 1); $proposal_q = $query->execute(); if ($proposal_q) { if ($proposal_data = $proposal_q->fetchObject()) { switch ($proposal_data->proposal_status) { case 0: drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status'); drupal_goto(''); return; break; case 1: drupal_set_message(t('Your proposal has been approved. Please go to ' . l('Code Submission', 'textbook_companion/code') . ' to upload your code'), 'status'); drupal_goto(''); return; break; case 2: drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal below.'), 'error'); break; case 3: drupal_set_message(t('Congratulations! You have completed your last book proposal. You can create another proposal below.'), 'status'); break; default: drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error'); drupal_goto(''); return; break; } } } //variable_del("aicte_".$user->uid); $book_proposal_nonaicte_form = drupal_get_form("book_proposal_nonaicte_form"); $page_content .= drupal_render($book_proposal_nonaicte_form); return $page_content; } /* Textbook Companion Proposal */ function textbook_companion_proposal_all() { global $user; $page_content = ""; // if (!$user->uid) { // drupal_set_message('It is mandatory to login on this website to access the proposal form', 'error'); // return; // } /************* check if user has already submitted a proposal **************/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('uid', $user->uid); $query->orderBy('id', 'DESC'); $query->range(0, 1); $proposal_q = $query->execute(); if ($proposal_q) { if ($proposal_data =$proposal_q->fetchObject()) { switch ($proposal_data->proposal_status) { case 0: drupal_set_message(t('We have already received your proposal. We will get back to you soon.'), 'status'); drupal_goto(''); return; break; case 1: drupal_set_message(t('Your proposal has been approved. Please go to ' . l('Code Submission', 'textbook_companion/code') . ' to upload your code'), 'status'); drupal_goto(''); return; break; case 2: drupal_set_message(t('Your proposal has been dis-approved. Please create another proposal below.'), 'error'); break; case 3: drupal_set_message(t('Congratulations! You have completed your last book proposal. You can create another proposal below.'), 'status'); break; default: drupal_set_message(t('Invalid proposal state. Please contact site administrator for further information.'), 'error'); drupal_goto(''); return; break; } } } $selections = variable_get("aicte_".$user->uid, ""); if($selections) { $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('id',$selections[0]); $result1 = $query->execute(); $row1 = $result1->fetchObject(); $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('id',$selections[1]); $result2 = $query->execute(); $row2 = $result2->fetchObject(); $query = db_select('textbook_companion_aicte'); $query->fields('textbook_companion_aicte'); $query->condition('id',$selections[2]); $result3 = $query->execute(); $row3 = $result3->fetchObject(); $book_proposal_form = drupal_get_form("book_proposal_form", $row1, $row2, $row3); $page_content .= drupal_render($book_proposal_form); } else { // $book_proposal_form = drupal_get_form("book_proposal_form"); // $page_content .= drupal_render($book_proposal_form); drupal_goto("aicte_proposal"); } return $page_content; } function book_proposal_form($form,&$form_state, $row1=NULL, $row2=NULL, $row3=NULL) { global $user; $form = array(); $form['imp_notice'] = array( '#type' => 'item', '#markup' => 'Please fill up this form carefully as the details entered here will be exactly written in the Textbook Companion', ); $form['full_name'] = array( '#type' => 'textfield', '#title' => t('Full Name'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['email_id'] = array( '#type' => 'textfield', '#title' => t('Email'), '#size' => 30, '#value' => $user->mail, '#disabled' => TRUE, ); $form['mobile'] = array( '#type' => 'textfield', '#title' => t('Mobile No.'), '#size' => 30, '#maxlength' => 15, '#required' => TRUE, ); $form['gender'] = array( '#type' => 'radios', '#title' => t('Gender'), '#options' => array('M' => 'Male', 'F' => 'Female'), '#required' => TRUE, ); /*$form['how_project'] = array( '#type' => 'select', '#title' => t('How did you come to know about this project'), '#options' => array('Scilab Website' => 'Scilab Website', 'Friend' => 'Friend', 'Professor/Teacher' => 'Professor/Teacher', 'Mailing List' => 'Mailing List', 'Poster in my/other college' => 'Poster in my/other college', 'Others' => 'Others'), '#required' => TRUE, );*/ $form['course'] = array( '#type' => 'textfield', '#title' => t('Course'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['branch'] = array( '#type' => 'select', '#title' => t('Department/Branch'), '#options' => _tbc_list_of_departments(), '#required' => TRUE, ); $form['university'] = array( '#type' => 'textfield', '#title' => t('University/Institute'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['country'] = array( '#type' => 'select', '#title' => t('Country'), '#options' => array( 'India' => 'India', 'Others' => 'Others', ), '#required' => TRUE, '#tree' => TRUE, '#validated' => TRUE, ); $form['other_country'] = array( '#type' => 'textfield', '#title' => t('Other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your country name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['other_state'] = array( '#type' => 'textfield', '#title' => t('State other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your state/region name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['other_city'] = array( '#type' => 'textfield', '#title' => t('City other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your city name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['all_state'] = array( '#type' => 'select', '#title' => t('State'), '#options' => _tbc_list_of_states(), '#validated' => TRUE, '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'India'), ), ), ); $form['city'] = array( '#type' => 'select', '#title' => t('City'), '#options' => _tbc_list_of_cities(), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'India'), ), ), ); $form['pincode'] = array( '#type' => 'textfield', '#title' => t('Pincode'), '#size' => 30, '#maxlength' => 6, '#required' => False, '#attributes' =>array('placeholder' =>'Enter pincode....'), ); $form['faculty'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('College Teacher/Professor'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['faculty_email'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('Teacher/Professor Email Id'), '#default_value' => '@email.com', '#size' => 30, '#maxlength' => 50, ); $form['reviewer'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('Reviewer'), '#size' => 30, '#maxlength' => 50, ); $form['completion_date'] = array( '#type' => 'textfield', '#title' => t('Expected Date of Completion'), '#description' => t('Input date format should be DD-MM-YYYY. Eg: 23-03-2011'), '#size' => 10, '#maxlength' => 10, ); $form['operating_system'] = array( '#type' => 'textfield', '#title' => t('Operating System'), '#required' => TRUE, '#size' => 30, '#maxlength' => 50, ); $form['version'] = array( '#type' => 'textfield', '#title' => t('Scilab Version'), '#description' => t('Input version format should be like 5.4 or 5.4.1'), '#size' => 10, '#required' => TRUE, '#maxlength' => 20, ); $form['preference1'] = array( '#type' => 'fieldset', '#title' => t('Book Preference 1'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['preference1']['book1'] = array( '#type' => 'textfield', '#title' => t('Title of the book'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row1->book, '#disabled' => ($row1->book?TRUE:FALSE), ); $form['preference1']['author1'] = array( '#type' => 'textfield', '#title' => t('Author Name'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row1->author, '#disabled' => ($row1->author?TRUE:FALSE), ); $form['preference1']['isbn1'] = array( '#type' => 'textfield', '#title' => t('ISBN No'), '#size' => 30, '#maxlength' => 25, '#required' => TRUE, '#default_value' => $row1->isbn, '#disabled' => ($row1->isbn?TRUE:FALSE), ); $form['preference1']['publisher1'] = array( '#type' => 'textfield', '#title' => t('Publisher & Place'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, '#default_value' => $row1->publisher, ); $form['preference1']['edition1'] = array( '#type' => 'textfield', '#title' => t('Edition'), '#size' => 4, '#maxlength' => 2, '#required' => TRUE, '#default_value' => $row1->edition, ); $form['preference1']['year1'] = array( '#type' => 'textfield', '#title' => t('Year of pulication'), '#size' => 4, '#maxlength' => 4, '#required' => TRUE, '#default_value' => $row1->year, ); $form['preference1']['book_category_1'] = array( '#type' => 'select', '#title' => t('Category'), '#options' => _tbc_list_of_category(), '#required' => TRUE, ); $form['preference2'] = array( '#type' => 'fieldset', '#title' => t('Book Preference 2'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['preference2']['book2'] = array( '#type' => 'textfield', '#title' => t('Title of the book'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row2->book, '#disabled' => ($row2->book?TRUE:FALSE), ); $form['preference2']['author2'] = array( '#type' => 'textfield', '#title' => t('Author Name'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row2->author, '#disabled' => ($row2->author?TRUE:FALSE), ); $form['preference2']['isbn2'] = array( '#type' => 'textfield', '#title' => t('ISBN No'), '#size' => 30, '#maxlength' => 25, '#required' => TRUE, '#default_value' => $row2->isbn, '#disabled' => ($row2->isbn?TRUE:FALSE), ); $form['preference2']['publisher2'] = array( '#type' => 'textfield', '#title' => t('Publisher & Place'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, '#default_value' => $row2->publisher, ); $form['preference2']['edition2'] = array( '#type' => 'textfield', '#title' => t('Edition'), '#size' => 4, '#maxlength' => 2, '#required' => TRUE, '#default_value' => $row2->edition, ); $form['preference2']['year2'] = array( '#type' => 'textfield', '#title' => t('Year of pulication'), '#size' => 4, '#maxlength' => 4, '#required' => TRUE, '#default_value' => $row2->year, ); $form['preference2']['book_category_2'] = array( '#type' => 'select', '#title' => t('Category'), '#options' => _tbc_list_of_category(), '#required' => TRUE, ); $form['preference3'] = array( '#type' => 'fieldset', '#title' => t('Book Preference 3'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['preference3']['book3'] = array( '#type' => 'textfield', '#title' => t('Title of the book'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row3->book, '#disabled' => ($row3->book?TRUE:FALSE), ); $form['preference3']['author3'] = array( '#type' => 'textfield', '#title' => t('Author Name'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row3->author, '#disabled' => ($row3->author?TRUE:FALSE), ); $form['preference3']['isbn3'] = array( '#type' => 'textfield', '#title' => t('ISBN No'), '#size' => 30, '#maxlength' => 25, '#required' => TRUE, '#default_value' => $row3->isbn, '#disabled' => ($row3->isbn?TRUE:FALSE), ); $form['preference3']['publisher3'] = array( '#type' => 'textfield', '#title' => t('Publisher & Place'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, '#default_value' => $row3->publisher, ); $form['preference3']['edition3'] = array( '#type' => 'textfield', '#title' => t('Edition'), '#size' => 4, '#maxlength' => 2, '#required' => TRUE, '#default_value' => $row3->edition, ); $form['preference3']['year3'] = array( '#type' => 'textfield', '#title' => t('Year of pulication'), '#size' => 4, '#maxlength' => 4, '#required' => TRUE, '#default_value' => $row3->year, ); $form['preference3']['book_category_3'] = array( '#type' => 'select', '#title' => t('Category'), '#options' => _tbc_list_of_category(), '#required' => TRUE, ); $form['samplefile'] = array( '#type' => 'fieldset', '#title' => t('Sample Source Files *'), '#collapsible' => FALSE, '#collapsed' => FALSE, ); $form['samplefile']['samplefile1'] = array( '#type' => 'file', '#title' => t('Upload sample source file'), '#size' => 48, '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . t('Allowed file extensions : ') . variable_get('textbook_companion_sample_source_file_extensions', '').'', ); $form['termconditions'] = array( '#type' => 'checkboxes', '#title' => t('Terms And Conditions'), '#options' => array( 'status' => t('I agree to the Terms and Conditions'),), '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit') ); return $form; } /******************** AICTE book proposal from validate *****************************/ function book_proposal_form_validate($form,&$form_state) { /* mobile */ if (!preg_match('/^[0-9\ \+]{0,15}$/', $form_state['values']['mobile'])) form_set_error('mobile', t('Invalid mobile number')); /* date of completion */ if (!preg_match('/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$/', $form_state['values']['completion_date'])) form_set_error('completion_date', t('Invalid expected date of completion')); list($d, $m, $y) = explode('-', $form_state['values']['completion_date']); $d = (int)$d; $m = (int)$m; $y = (int)$y; if (!checkdate($m, $d, $y)) form_set_error('completion_date', t('Invalid expected date of completion')); if (mktime(0, 0, 0, $m, $d, $y) <= time()) form_set_error('completion_date', t('Expected date of completion should be in future')); /* edition */ if (!preg_match('/^[1-9][0-9]{0,1}$/', $form_state['values']['edition1'])) form_set_error('edition1', t('Invalid edition for Book Preference 1')); if (!preg_match('/^[1-9][0-9]{0,1}$/', $form_state['values']['edition2'])) form_set_error('edition2', t('Invalid edition for Book Preference 2')); if (!preg_match('/^[1-9][0-9]{0,1}$/', $form_state['values']['edition3'])) form_set_error('edition3', t('Invalid edition for Book Preference 3')); /* year of publication */ if (!preg_match('/^[1-3][0-9][0-9][0-9]$/', $form_state['values']['year1'])) form_set_error('year1', t('Invalid year of pulication for Book Preference 1')); if (!preg_match('/^[1-3][0-9][0-9][0-9]$/', $form_state['values']['year2'])) form_set_error('year2', t('Invalid year of pulication for Book Preference 2')); if (!preg_match('/^[1-3][0-9][0-9][0-9]$/', $form_state['values']['year3'])) form_set_error('year3', t('Invalid year of pulication for Book Preference 3')); /* year of publication */ $cur_year = date('Y'); if ((int)$form_state['values']['year1'] > $cur_year) form_set_error('year1', t('Year of pulication should be not in the future for Book Preference 1')); if ((int)$form_state['values']['year2'] > $cur_year) form_set_error('year2', t('Year of pulication should be not in the future for Book Preference 2')); if ((int)$form_state['values']['year3'] > $cur_year) form_set_error('year3', t('Year of pulication should be not in the future for Book Preference 3')); /* isbn */ if (!preg_match('/^[0-9\-xX]+$/', $form_state['values']['isbn1'])) form_set_error('isbn1', t('Invalid ISBN for Book Preference 1')); if (!preg_match('/^[0-9\-xX]+$/', $form_state['values']['isbn2'])) form_set_error('isbn2', t('Invalid ISBN for Book Preference 2')); if (!preg_match('/^[0-9\-xX]+$/', $form_state['values']['isbn3'])) form_set_error('isbn3', t('Invalid ISBN for Book Preference 3')); /* version */ if (!preg_match('/^\d+(?:\.\d+)+/', $form_state['values']['version'])) form_set_error('version', t('Please enter correct version in given format')); /* country */ if($form_state['values']['country']=='Others'){ if($form_state['values']['other_country']== ''){ form_set_error('other_country', t('Enter country name')); }else{ $form_state['values']['country'] = $form_state['values']['other_country']; } if($form_state['values']['other_state']== ''){ form_set_error('other_state', t('Enter state name')); }else{ $form_state['values']['all_state'] = $form_state['values']['other_state']; } if($form_state['values']['other_city']== ''){ form_set_error('other_city', t('Enter city name')); }else{ $form_state['values']['city'] = $form_state['values']['other_city']; } }else{ if($form_state['values']['country']== ''){ form_set_error('country', t('Select country name')); } if($form_state['values']['all_state']== ''){ form_set_error('all_state', t('Select state name')); } if($form_state['values']['city']== ''){ form_set_error('city', t('Select city name')); } } if (isset($_FILES['files'])) { /* check if atleast one source or result file is uploaded */ if ( ! ($_FILES['files']['name']['samplefile1'])) form_set_error('samplefile1', t('Please upload sample code main or source file.')); /* check for valid filename extensions */ foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { if ($file_name) { /* checking file type */ if (strstr($file_form_name, 'sample')) $file_type = 'S'; else $file_type = 'U'; $allowed_extensions_str = ''; switch ($file_type) { case 'S': $allowed_extensions_str = variable_get('textbook_companion_sample_source_file_extensions', ''); break; } $allowed_extensions = explode(',' , $allowed_extensions_str); $allowd_file = strtolower($_FILES['files']['name'][$file_form_name]); $allowd_files = explode('.', $allowd_file); $temp_extension = end($allowd_files); if (!in_array($temp_extension, $allowed_extensions)) form_set_error($file_form_name, t('Only file with ' . $allowed_extensions_str . ' extensions can be uploaded.')); if ($_FILES['files']['size'][$file_form_name] <= 0) form_set_error($file_form_name, t('File size cannot be zero.')); /* check if valid file name */ if (!textbook_companion_check_valid_filename($_FILES['files']['name'][$file_form_name])) form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.')); } } } return; } function book_proposal_form_submit($form, &$form_state) { global $user; $selections = variable_get("aicte_".$user->uid, ""); $root_path =textbook_companion_samplecode_path(); if (!$user->uid) { drupal_set_message('It is mandatory to login on this website to access the proposal form', 'error'); return; } /* completion date to timestamp */ list($d, $m, $y) = explode('-', $form_state['values']['completion_date']); $completion_date_timestamp = mktime(0, 0, 0, $m, $d, $y); $scilab_version = 'scilab ' . $form_state['values']['version']; $query = "INSERT INTO {textbook_companion_proposal} (uid, approver_uid, full_name, mobile, gender, how_project, course, branch, university, country, city, pincode, state, faculty, reviewer, completion_date, creation_date, approval_date, proposal_status, scilab_version, operating_system, teacher_email, message, samplefilepath) VALUES (:uid, :approver_uid, :full_name, :mobile, :gender, :how_project, :course, :branch, :university, :country, :city, :pincode, :state, :faculty, :reviewer, :completion_date, :creation_date, :approval_date, :proposal_status, :scilab_version, :operating_system, :teacher_email, :message, :samplefilepath)"; $args = array( ":uid" => $user->uid, ":approver_uid" => 0, ":full_name" => ucwords(strtolower($form_state['values']['full_name'])), ":mobile" =>$form_state['values']['mobile'], ":gender" => $form_state['values']['gender'], ":how_project" => 'Not available', ":course" => $form_state['values']['course'], ":branch" => $form_state['values']['branch'], ":university" => $form_state['values']['university'], ":country" => $form_state['values']['country'], ":city"=> $form_state['values']['city'], ":pincode"=> $form_state['values']['pincode'], ":state"=> $form_state['values']['all_state'], ":faculty" => ucwords(strtolower($form_state['values']['faculty'])), ":reviewer" => ucwords(strtolower($form_state['values']['reviewer'])), ":completion_date" => $completion_date_timestamp, ":creation_date" => time(), ":approval_date" => 0, ":proposal_status" => 0, ":scilab_version" => $scilab_version, ":operating_system" => $form_state['values']['operating_system'], ":teacher_email" => $form_state['values']['faculty_email'], ":message" => 'None', ":samplefilepath"=>"" ); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); $dest_path = $result . '/'; if (!is_dir($root_path . $dest_path)) mkdir($root_path . $dest_path); /* uploading files */ foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { if ($file_name) { /* checking file type */ $file_type = 'S'; if (file_exists($root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) { drupal_set_message(t("Error uploading file. File !filename already exists.", array('!filename' => $_FILES['files']['name'][$file_form_name])), 'error'); return; } /* uploading file */ if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) { $query = "UPDATE {textbook_companion_proposal} SET samplefilepath = :samplefilepath WHERE id = :id"; $args = array( ":samplefilepath" => $dest_path . $_FILES['files']['name'][$file_form_name], ":id" =>$result, ); $updateresult = db_query($query, $args); drupal_set_message($file_name . ' uploaded successfully.', 'status'); } else { drupal_set_message('Error uploading file : ' . $dest_path . '/' . $file_name, 'error'); } } } if (!$result) { drupal_set_message(t('Error receiving your proposal. Please try again.'), 'error'); return; } /* proposal id */ // $proposal_id = db_last_insert_id('textbook_companion_proposal', 'id'); $proposal_id = $result; /* inserting first book preference */ if ($form_state['values']['book1']) { $query = "INSERT INTO {textbook_companion_preference} (proposal_id, pref_number, book, author, isbn, publisher, edition, year, category, approval_status) VALUES (:proposal_id, :pref_number, :book, :author, :isbn, :publisher, :edition, :year, :category, :approval_status) "; $args = array( ":proposal_id" => $proposal_id, ":pref_number" => 1, ":book" => ucwords(strtolower($form_state['values']['book1'])), ":author" => ucwords(strtolower($form_state['values']['author1'])), ":isbn" => $form_state['values']['isbn1'], ":publisher" => ucwords(strtolower($form_state['values']['publisher1'])), ":edition" => $form_state['values']['edition1'], ":year" => $form_state['values']['year1'], ":category"=> $form_state['values']['book_category_1'], ":approval_status" => 0, ); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); if (!$result) { drupal_set_message(t('Error receiving your first book preference.'), 'error'); } else { //$preference_id = db_last_insert_id("textbook_companion_preference", "id"); $preference_id = $result; /*$query = " UPDATE textbook_companion_aicte SET preference_id = {$preference_id} WHERE id = {$selections[0]} "; db_query($query);*/ $query = db_update('textbook_companion_aicte'); $query->fields(array( 'preference_id' => $preference_id, )); $query->condition('id', $selections[0]); $num_updated = $query->execute(); } } /* inserting second book preference */ if ($form_state['values']['book2']) { /*$result = db_query("INSERT INTO {textbook_companion_preference} (proposal_id, pref_number, book, author, isbn, publisher, edition, year, category, approval_status) VALUES (%d, %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d)", $proposal_id, 2, ucwords(strtolower($form_state['values']['book2'])), ucwords(strtolower($form_state['values']['author2'])), $form_state['values']['isbn2'], ucwords(strtolower($form_state['values']['publisher2'])), $form_state['values']['edition2'], $form_state['values']['year2'], 0, 0 ); */ $query = "INSERT INTO {textbook_companion_preference} (proposal_id, pref_number, book, author, isbn, publisher, edition, year, category, approval_status) VALUES (:proposal_id, :pref_number, :book, :author, :isbn, :publisher, :edition, :year, :category, :approval_status) "; $args = array( ":proposal_id" => $proposal_id, ":pref_number" => 2, ":book" => ucwords(strtolower($form_state['values']['book2'])), ":author" => ucwords(strtolower($form_state['values']['author2'])), ":isbn" => $form_state['values']['isbn2'], ":publisher" => ucwords(strtolower($form_state['values']['publisher2'])), ":edition" => $form_state['values']['edition2'], ":year" => $form_state['values']['year2'], ":category"=> $form_state['values']['book_category_2'], ":approval_status" => 0 ); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); if (!$result) { drupal_set_message(t('Error receiving your second book preference.'), 'error'); } else { //$preference_id = db_last_insert_id("textbook_companion_preference", "id"); $preference_id = $result; /*$query = " UPDATE textbook_companion_aicte SET preference_id = {$preference_id} WHERE id = {$selections[1]} "; db_query($query);*/ $query = db_update('textbook_companion_aicte'); $query->fields(array( 'preference_id' => $preference_id, )); $query->condition('id', $selections[1]); $num_updated = $query->execute(); } } /* inserting third book preference */ if ($form_state['values']['book3']) { $query = "INSERT INTO {textbook_companion_preference} (proposal_id, pref_number, book, author, isbn, publisher, edition, year, category, approval_status) VALUES (:proposal_id, :pref_number, :book, :author, :isbn, :publisher, :edition, :year, :category, :approval_status) "; $args = array( ":proposal_id" => $proposal_id, ":pref_number" => 3, ":book" => ucwords(strtolower($form_state['values']['book3'])), ":author" => ucwords(strtolower($form_state['values']['author3'])), ":isbn" => $form_state['values']['isbn3'], ":publisher" => ucwords(strtolower($form_state['values']['publisher3'])), ":edition" => $form_state['values']['edition3'], ":year" => $form_state['values']['year3'], ":category"=> $form_state['values']['book_category_3'], ":approval_status" => 0 ); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); if (!$result) { drupal_set_message(t('Error receiving your third book preference.'), 'error'); } else { $preference_id = $result; /*$query = " UPDATE textbook_companion_aicte SET preference_id = {$preference_id} WHERE id = {$selections[2]} "; db_query($query);*/ $query = db_update('textbook_companion_aicte'); $query->fields(array( 'preference_id' => $preference_id, )); $query->condition('id', $selections[2]); $num_updated = $query->execute(); } /* locking the books in the textbook_companion_aicte table */ foreach ($selections as $selection) { /*$query = " UPDATE textbook_companion_aicte SET status = 1, uid = {$user->uid}, proposal_id = {$proposal_id} WHERE id = {$selection} AND status = 0 "; db_query($query);*/ $query = db_update('textbook_companion_aicte'); $query->fields(array( 'status' => 1, 'uid' => $user->uid, 'proposal_id' => $proposal_id, )); $query->condition('id', $selection); $query->condition('status', 0); $num_updated = $query->execute(); } if (!$result) { drupal_set_message(t('Error receiving your third book preference.'), 'error'); } } /* sending email */ $email_to = $user->mail; $from = variable_get('textbook_companion_from_email', ''); $bcc = variable_get('textbook_companion_emails', ''); $cc = variable_get('textbook_companion_cc_emails', ''); $params['proposal_received']['proposal_id'] = $proposal_id; $params['proposal_received']['user_id'] = $user->uid; $params['proposal_received']['headers']=array('From'=>$from,'MIME-Version'=> '1.0', 'Content-Type'=> 'text/plain; charset=UTF-8; format=flowed; delsp=yes', 'Content-Transfer-Encoding' => '8Bit', 'X-Mailer'=> 'Drupal','Cc' => $cc, 'Bcc' => $bcc); if (!drupal_mail('textbook_companion', 'proposal_received', $email_to , language_default(), $params, $from, TRUE)) drupal_set_message('Error sending email message.', 'error'); drupal_set_message(t('We have received you book proposal. We will get back to you soon.'), 'status'); drupal_goto(''); } /** * Implementation of hook_mail(). */ function textbook_companion_mail($key, &$message, $params) { global $user; $language = $message['language']; /*$tbc_bcc_emails = array( 'Bcc' => variable_get('textbook_companion_emails', ''), );*/ switch ($key) { case 'proposal_received': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /* initializing data */ /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE id = %d LIMIT 1", $params['proposal_received']['proposal_id']); $proposal_data = db_fetch_object($proposal_q);*/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['proposal_received']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data =$result->fetchObject(); $samplecodefilename=""; if(strlen($proposal_data->samplefilepath)>=5){ $samplecodefilename=substr($proposal_data->samplefilepath, strrpos($proposal_data->samplefilepath, '/') + 1); }else{ $samplecodefilename="Not provided"; } /*$preference1_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND pref_number = %d LIMIT 1", $params['proposal_received']['proposal_id'], 1); $preference1_data = db_fetch_object($preference1_q);*/ $query = " SELECT * FROM list_of_category loc JOIN textbook_companion_preference tcp ON loc.category_id = tcp.category WHERE proposal_id = :proposal_id AND pref_number = :pref_number LIMIT 1 "; $args = array( ':proposal_id' => $params['proposal_received']['proposal_id'], ':pref_number' => 1, ); $preference1_q = db_query($query,$args); $preference1_data = $preference1_q->fetchObject(); /*$preference2_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND pref_number = %d LIMIT 1", $params['proposal_received']['proposal_id'], 2); $preference2_data = db_fetch_object($preference2_q);*/ $query = " SELECT * FROM list_of_category loc JOIN textbook_companion_preference tcp ON loc.category_id = tcp.category WHERE proposal_id = :proposal_id AND pref_number = :pref_number LIMIT 1 "; $args = array( ':proposal_id' => $params['proposal_received']['proposal_id'], ':pref_number' => 2, ); $preference2_q = db_query($query,$args); $preference2_data = $preference2_q->fetchObject(); $query = " SELECT * FROM list_of_category loc JOIN textbook_companion_preference tcp ON loc.category_id = tcp.category WHERE proposal_id = :proposal_id AND pref_number = :pref_number LIMIT 1 "; $args = array( ':proposal_id' => $params['proposal_received']['proposal_id'], ':pref_number' => 3, ); $preference3_q = db_query($query,$args); $preference3_data = $preference3_q->fetchObject(); /*$query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_received']['proposal_id']); $query->condition('pref_number', 3); $query->range(0, 1); $result = $query->execute(); $preference3_data =$result->fetchObject();*/ $user_data = user_load($params['proposal_received']['user_id']); $message['headers'] = $params['proposal_received']['headers']; $message['subject'] = t('[!site_name] Your book proposal has been received', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, We have received your following book proposal: Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Your Book Preferences : Book Preference 1 :- Title of the book : ' . $preference1_data->book . ' Author name : ' . $preference1_data->author . ' ISBN No. : ' . $preference1_data->isbn . ' Publisher and Place : ' . $preference1_data->publisher . ' Edition : ' . $preference1_data->edition . ' Year of publication : ' . $preference1_data->year . ' Category : ' . $preference1_data->category_name . ' Book Preference 2 :- Title of the book : ' . $preference2_data->book . ' Author name : ' . $preference2_data->author . ' ISBN No. : ' . $preference2_data->isbn . ' Publisher and Place : ' . $preference2_data->publisher . ' Edition : ' . $preference2_data->edition . ' Year of publication : ' . $preference2_data->year . ' Category : ' . $preference2_data->category_name . ' Book Preference 3 :- Title of the book : ' . $preference3_data->book . ' Author name : ' . $preference3_data->author . ' ISBN No. : ' . $preference3_data->isbn . ' Publisher and Place : ' . $preference3_data->publisher . ' Edition : ' . $preference3_data->edition . ' Year of publication : ' . $preference3_data->year . ' Category : ' . $preference3_data->category_name . ' Uploaded Sample Code :'.$samplecodefilename.' Your proposal is under review and you will soon receive an email from us regarding the same. Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'proposal_disapproved': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /* initializing data */ /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE id = %d LIMIT 1", $params['proposal_disapproved']['proposal_id']); $proposal_data = db_fetch_object($proposal_q);*/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['proposal_disapproved']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data =$result->fetchObject(); /*$preference1_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND pref_number = %d LIMIT 1", $params['proposal_disapproved']['proposal_id'], 1); $preference1_data = db_fetch_object($preference1_q);*/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_disapproved']['proposal_id']); $query->condition('pref_number', 1); $query->range(0, 1); $result = $query->execute(); $preference1_data =$result->fetchObject(); /*$preference2_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND pref_number = %d LIMIT 1", $params['proposal_disapproved']['proposal_id'], 2); $preference2_data = db_fetch_object($preference2_q);*/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_disapproved']['proposal_id']); $query->condition('pref_number', 2); $query->range(0, 1); $result = $query->execute(); $preference2_data =$result->fetchObject(); /*$preference3_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND pref_number = %d LIMIT 1", $params['proposal_disapproved']['proposal_id'], 3); $preference3_data = db_fetch_object($preference3_q);*/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_disapproved']['proposal_id']); $query->condition('pref_number', 3); $query->range(0, 1); $result = $query->execute(); $preference3_data =$result->fetchObject(); $user_data = user_load($params['proposal_disapproved']['user_id']); $message['headers'] = $params['proposal_disapproved']['headers']; $message['subject'] = t('[!site_name] Your book proposal has been disapproved', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); if($proposal_data->proposal_type != 1){ $message['body'] =array('body' => t(' Dear !user_name, Your following book proposal has been disapproved: Reason for disapproval: ' . $proposal_data->message . ' Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Your Book Preferences : Book Preference 1 :- Title of the book : ' . $preference1_data->book . ' Author name : ' . $preference1_data->author . ' ISBN No. : ' . $preference1_data->isbn . ' Publisher and Place : ' . $preference1_data->publisher . ' Edition : ' . $preference1_data->edition . ' Year of publication : ' . $preference1_data->year . ' Book Preference 2 :- Title of the book : ' . $preference2_data->book . ' Author name : ' . $preference2_data->author . ' ISBN No. : ' . $preference2_data->isbn . ' Publisher and Place : ' . $preference2_data->publisher . ' Edition : ' . $preference2_data->edition . ' Year of publication : ' . $preference2_data->year . ' Book Preference 3 :- Title of the book : ' . $preference3_data->book . ' Author name : ' . $preference3_data->author . ' ISBN No. : ' . $preference3_data->isbn . ' Publisher and Place : ' . $preference3_data->publisher . ' Edition : ' . $preference3_data->edition . ' Year of publication : ' . $preference3_data->year . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); } else{ //Non AICTE book proposal dissaprove// $message['body'] = array('body' => t(' Dear !user_name, Your following book proposal has been disapproved: Reason for disapproval: ' . $proposal_data->message . ' Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Your Book Preferences : Book Preference :- Title of the book : ' . $preference1_data->book . ' Author name : ' . $preference1_data->author . ' ISBN No. : ' . $preference1_data->isbn . ' Publisher and Place : ' . $preference1_data->publisher . ' Edition : ' . $preference1_data->edition . ' Year of publication : ' . $preference1_data->year . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); } break; /* Non AICTE Book Proposal */ case 'nonaicte_proposal_received': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /* initializing data */ /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE id = %d LIMIT 1", $params['proposal_received']['proposal_id']); $proposal_data = db_fetch_object($proposal_q);*/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['nonaicte_proposal_received']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data =$result->fetchObject(); $samplecodefilename=""; if(strlen($proposal_data->samplefilepath)>=5){ $samplecodefilename=substr($proposal_data->samplefilepath, strrpos($proposal_data->samplefilepath, '/') + 1); }else{ $samplecodefilename="Not provided"; } $query = " SELECT * FROM list_of_category loc JOIN textbook_companion_preference tcp ON loc.category_id = tcp.category WHERE proposal_id = :proposal_id AND pref_number = :pref_number LIMIT 1 "; $args = array( ':proposal_id' => $params['nonaicte_proposal_received']['proposal_id'], ':pref_number' => 1, ); $preference1_q = db_query($query,$args); $preference1_data = $preference1_q->fetchObject(); $user_data = user_load($params['nonaicte_proposal_received']['user_id']); $message['headers'] = $params['nonaicte_proposal_received']['headers']; $message['subject'] = t('[!site_name] Your book proposal has been received', array('!site_name' => variable_get('site_name', '')),array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, We have received your following book proposal: Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Your Non AICTE Book Preferences: Book Preference :- Title of the book : ' . $preference1_data->book . ' Author name : ' . $preference1_data->author . ' ISBN No. : ' . $preference1_data->isbn . ' Publisher and Place : ' . $preference1_data->publisher . ' Edition : ' . $preference1_data->edition . ' Year of publication : ' . $preference1_data->year . ' Category : ' . $preference1_data->category_name . ' Uploaded Sample Code : '.$samplecodefilename.' Your proposal is under review and you will soon receive an email from us regarding the same. Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'nonaicte_proposal_to_pi': /************ fetch proposal data ****************/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['nonaicte_proposal_received']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data=$result->fetchObject(); /************ fetch book preference data ****************/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['nonaicte_proposal_received']['proposal_id']); $query->condition('pref_number', 1); $query->range(0, 1); $result = $query->execute(); $preference1_data=$result->fetchObject(); $user_data = user_load($params['nonaicte_proposal_received']['user_id']); $message['headers'] = $params['nonaicte_proposal_received']['headers']; $message['subject'] = t('[!site_name] New Non AICTE book suggestion has been received', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); /******************* Email Template for not aicte book suggestion **************************/ $message['body'] = array('body' => t(' Dear all, We have received following Non AICTE book suggestion: Full Name : ' . $proposal_data->full_name . ' University/Institute :' . $proposal_data->university . ' Reason(s): '. $proposal_data->reason . ' Your Non AICTE Book Preference : Title of the book : ' . $preference1_data->book . ' Author name : ' . $preference1_data->author . ' ISBN No. : ' . $preference1_data->isbn . ' Publisher and Place : ' . $preference1_data->publisher . ' Edition : ' . $preference1_data->edition . ' Year of publication : ' . $preference1_data->year . ' Reference :- '.$proposal_data->reference //Please click here to provide your feedback: http://scilab.in/comments .' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'proposal_approved': $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['proposal_approved']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data=$result->fetchObject(); $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_approved']['proposal_id']); $query->condition('approval_status', 1); $query->range(0, 1); $result = $query->execute(); $approved_preference_data=$result->fetchObject(); $user_data = user_load($params['proposal_approved']['user_id']); $message['headers'] = $params['proposal_approved']['headers']; $message['subject'] = t('[!site_name] Your book proposal has been approved', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, Your following book proposal has been approved: Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Title of the book : ' . $approved_preference_data->book . ' Author name : ' . $approved_preference_data->author . ' ISBN No. : ' . $approved_preference_data->isbn . ' Publisher and Place : ' . $approved_preference_data->publisher . ' Edition : ' . $approved_preference_data->edition . ' Year of publication : ' . $approved_preference_data->year . ' According the new Textbook Companion procedure, a student doing a textbook companion is not required to have a mentor. For more details check the links given below. http://scilab.in/tbc_honorarium http://scilab.in/Textbook_Companion_Internship Please contact us by sending an e-mail to textbook@scilab.in in case you wish to cancel this book proposal. Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'proposal_completed': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /*$proposal_q = db_query("SELECT * FROM {textbook_companion_proposal} WHERE id = %d LIMIT 1", $params['proposal_completed']['proposal_id']); $proposal_data = db_fetch_object($proposal_q);*/ $query = db_select('textbook_companion_proposal'); $query->fields('textbook_companion_proposal'); $query->condition('id', $params['proposal_completed']['proposal_id']); $query->range(0, 1); $result = $query->execute(); $proposal_data=$result->fetchObject(); /*$approved_preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE proposal_id = %d AND approval_status = 1 LIMIT 1", $params['proposal_completed']['proposal_id']); $approved_preference_data = db_fetch_object($approved_preference_q);*/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('proposal_id', $params['proposal_completed']['proposal_id']); $query->condition('approval_status', 1); $query->range(0, 1); $result = $query->execute(); $approved_preference_data=$result->fetchObject(); $user_data = user_load($params['proposal_completed']['user_id']); $message['headers'] = $params['proposal_completed']['headers']; $message['subject'] = t('[!site_name] Congratulations for completion of the book.', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, Following book has been completed sucessfully by you: Full Name : ' . $proposal_data->full_name . ' Email : ' . $user_data->mail . ' Mobile : ' . $proposal_data->mobile . ' Course : ' . $proposal_data->course . ' Department/Branch : ' . $proposal_data->branch . ' University/Institute : ' . $proposal_data->university . ' College Teacher / Professor : ' . $proposal_data->faculty . ' Reviewer : ' . $proposal_data->reviewer . ' Expected date of completion : ' . date('d-m-Y', $proposal_data->completion_date) . ' Title of the book : ' . $approved_preference_data->book . ' Author name : ' . $approved_preference_data->author . ' ISBN No. : ' . $approved_preference_data->isbn . ' Publisher and Place : ' . $approved_preference_data->publisher . ' Edition : ' . $approved_preference_data->edition . ' Year of publication : ' . $approved_preference_data->year . ' Your book is now available at following link to download. http://scilab.in/textbook_run/' . $approved_preference_data->id . ' Now you should be able to propose a new book... Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'example_uploaded': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d LIMIT 1", $params['example_uploaded']['example_id']); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $params['example_uploaded']['example_id']); $query->range(0, 1); $result = $query->execute(); $example_data=$result->fetchObject(); $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $example_data->chapter_id); $query->range(0, 1); $result = $query->execute(); $chapter_data=$result->fetchObject(); $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('id', $chapter_data->preference_id); $query->range(0, 1); $result = $query->execute(); $preference_data=$result->fetchObject(); $user_data = user_load($params['example_uploaded']['user_id']); $message['headers'] = $params['example_uploaded']['headers']; $message['subject'] = t('[!site_name] You have uploaded example for Textbook Companion', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, You have uploaded the following solution : Title of the book : ' . $preference_data->book . ' Title of the chapter : '. $chapter_data->name . ' Example number : ' . $example_data->number . ' Caption : ' . $example_data->caption . ' You shall be notified after the solution is reviewed Best Wishes, !site_name Team, FOSSEE,IIT Bombay', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'example_updated': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d LIMIT 1", $params['example_updated']['example_id']); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $params['example_updated']['example_id']); $query->range(0, 1); $result = $query->execute(); $example_data=$result->fetchObject(); $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $example_data->chapter_id); $query->range(0, 1); $result = $query->execute(); $chapter_data=$result->fetchObject(); $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('id', $chapter_data->preference_id); $query->range(0, 1); $result = $query->execute(); $preference_data=$result->fetchObject(); $user_data = user_load($params['example_updated']['user_id']); $message['headers'] = $params['example_updated']['headers']; $message['subject'] = t('[!site_name] You have updated example for Textbook Companion', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, You have updated the following example: Title of the book : ' . $preference_data->book . ' Title of the chapter : '. $chapter_data->name . ' Example number : ' . $example_data->number . ' Caption : ' . $example_data->caption . ' The example is still under review. You will be notified when it has been approved. Best Wishes, !site_name Team, FOSSEE,IIT Bombay', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'example_updated_admin': // bcc to textbook_companion_emails $message['headers'] += $tbc_bcc_emails; /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d LIMIT 1", $params['example_updated_admin']['example_id']); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $params['example_updated_admin']['example_id']); $query->range(0, 1); $result = $query->execute(); $example_data=$result->fetchObject(); $user_data = user_load($params['example_updated_admin']['user_id']); $message['subject'] = t('[!site_name] Reviewer have updated example', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] = array('body' =>t(' Dear !user_name, Reviewer have updated the following example: Example number : ' . $example_data->number . ' Caption : ' . $example_data->caption . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'example_approved': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d LIMIT 1", $params['example_approved']['example_id']); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $params['example_approved']['example_id']); $query->range(0, 1); $result = $query->execute(); $example_data=$result->fetchObject(); $user_data = user_load($params['example_approved']['user_id']); $message['headers'] = $params['example_approved']['headers']; $message['subject'] = t('[!site_name] Your uploaded example has been approved', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, Your following example has been approved: Example number : ' . $example_data->number . ' Caption : ' . $example_data->caption . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'example_disapproved': // bcc to textbook_companion_emails $message['headers'] += $tbc_bcc_emails; $user_data = user_load($params['example_disapproved']['user_id']); $message['subject'] = t('[!site_name] Your uploaded example has been disapproved', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] = array('body' =>t(' Dear !user_name, Your following example has been disapproved: Example number : ' . $params['example_disapproved']['example_number'] . ' Caption : ' . $params['example_disapproved']['example_caption'] . ' Reason for dis-approval : ' . $params['example_disapproved']['message'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'example_deleted_user': // bcc to textbook_companion_emails // $message['headers'] += $tbc_bcc_emails; $user_data = user_load($params['example_deleted_user']['user_id']); $message['headers'] = $params['example_deleted_user']['headers']; $message['subject'] = t('[!site_name] User has deleted pending example', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, Your following pending example has been deleted : Title of the Book : ' . $params['example_deleted_user']['book_title'] . ' Title of the Chapter : ' . $params['example_deleted_user']['chapter_title'] . ' Example number : ' . $params['example_deleted_user']['example_number'] . ' Caption : ' . $params['example_deleted_user']['example_caption'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'dependency_uploaded': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $user_data = user_load($params['dependency_uploaded']['user_id']); $message['headers'] = $params['example_deleted_user']['headers']; $dependency_files = implode(',', $params['dependency_uploaded']['dependency_names']); $message['subject'] = t('[!site_name] You have uploaded dependency file', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] = array('body' =>t(' Dear !user_name, You have uploaded following dependency files : ' . $dependency_files . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'feedback_received': // bcc to textbook_companion_emails // $message['headers'] += $tbc_bcc_emails; $message['headers'] = $params['feedback_received']['headers']; $user_data = user_load($params['feedback_received']['user_id']); $message['subject'] = t('[!site_name] We have received your feedback', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] = array('body' =>t(' Dear !user_name, We have received your following feedback Title of the Book: ' . $params['feedback_received']['book_title'] . ' Title of the Chapter: ' . $params['feedback_received']['chapter_number'] . ' ' . $params['feedback_received']['chapter_title'] . ' Example No.: ' . $params['feedback_received']['example_no'] . ' Your feedback : ' . $params['feedback_received']['feedback'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'internshipform': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $message['headers'] = $params['internshipform']['headers']; $user_data = user_load($params['internshipform']['user_id']); $message['subject'] = t('[!site_name] We have received your feedback', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] = array('body' =>t(' Dear !user_name, We have received your Internship Form Application for the book Title of the Book: ' . $params['internshipform']['book_title'] . ' Title of the Chapter: ' . $params['internshipform']['chapter_number'] . ' ' . $params['internshipform']['chapter_title'] . ' Example No.: ' . $params['internshipform']['example_no'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'copyrighttransferform': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $message['headers'] = $params['copyrighttransferform']['headers']; $user_data = user_load($params['copyrighttransferform']['user_id']); $message['subject'] = t('[!site_name] We have received your feedback', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, We have received your Copyright Form Application for the book Title of the Book: ' . $params['copyrighttransferform']['book_title'] . ' Title of the Chapter: ' . $params['copyrighttransferform']['chapter_number'] . ' ' . $params['copyrighttransferform']['chapter_title'] . ' Example No.: ' . $params['copyrighttransferform']['example_no'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name),array('language' => $language->language))); break; case 'undertakingform': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $message['headers'] = $params['undertakingform']['headers']; $user_data = user_load($params['undertakingform']['user_id']); $message['subject'] = t('[!site_name] We have received your feedback', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, We have received your Undertaking Form Application for the book Title of the Book: ' . $params['undertakingform']['book_title'] . ' Title of the Chapter: ' . $params['undertakingform']['chapter_number'] . ' ' . $params['undertakingform']['chapter_title'] . ' Example No.: ' . $params['undertakingform']['example_no'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'remark': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $user_data = user_load($params['remark']['user_id']); $message['headers'] = $params['remark']['headers']; $message['subject'] = t('[!site_name] A remark has been given.Please check your contact detail form', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, A Remark has been given.Please check your Contact Detail Form Title of the Book: ' . $params['internshipform']['book_title'] . ' Title of the Chapter: ' . $params['internshipform']['chapter_number'] . ' ' . $params['internshipform']['chapter_title'] . ' Example No.: ' . $params['internshipform']['example_no'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'cheque_sent': // bcc to textbook_companion_emails // $message['headers'] += $tbc_bcc_emails; $user_data = user_load($params['cheque_sent']['user_id']); $message['headers'] = $params['cheque_sent']['headers']; $message['subject'] = t('[!site_name] We have received your feedback', array('!site_name' => variable_get('site_name', '')), array('language' => $language->language)); $message['body'] =array('body' => t(' Dear !user_name, We have Sent Cheque for the following book proposed Title of the Book: ' . $params['cheque_sent']['book_title'] . ' Title of the Chapter: ' . $params['cheque_sent']['chapter_number'] . ' ' . $params['cheque_sent']['chapter_title'] . ' Example No.: ' . $params['cheque_sent']['example_no'] . ' Best Wishes, !site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), array('language' => $language->language))); break; case 'standard': // bcc to textbook_companion_emails //$message['headers'] += $tbc_bcc_emails; $message['headers'] = $params['standard']['headers']; $message['subject'] = $params['standard']['subject']; $message['body'] = $params['standard']['body']; break; } } /* AJAX CALLS */ function textbook_companion_ajax() { $query_type = arg(2); if ($query_type == 'chapter_title') { $chapter_number = arg(3); $preference_id = arg(4); /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE number = %d AND preference_id = %d LIMIT 1", $chapter_number, $preference_id);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('number', $chapter_number); $query->condition('preference_id', $preference_id); $query->range(0, 1); $chapter_q = $query->execute(); if ($chapter_data = $chapter_q->fetchObject()) { echo $chapter_data->name; return; } } else if ($query_type == 'example_exists') { $chapter_number = arg(3); $preference_id = arg(4); $example_number = arg(5); $chapter_id = 0; /* $chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE number = %d AND preference_id = %d LIMIT 1", $chapter_number, $preference_id);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('number',$chapter_number); $query->condition('preference_id', $preference_id); $query->range(0, 1); $chapter_q = $query->execute(); if (!$chapter_data = $chapter_q->fetchObject()) { echo ''; return; } else { $chapter_id = $chapter_data->id; } /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE chapter_id = %d AND number = '%s' LIMIT 1", $chapter_id, $example_number);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('chapter_id', $chapter_id); $query->condition('number', $example_number); $query->range(0, 1); $example_q = $query->execute(); if ($example_data =$example_q->fetchObject()) { if ($example_data->approval_status == 1) echo 'Warning! Example already approved. You cannot upload the same example again.'; else echo 'Warning! Example already uploaded. Delete the example and reupload it.'; return; } } echo ''; } /*************************** VALIDATION FUNCTIONS *****************************/ function textbook_companion_check_valid_filename($file_name) { if (!preg_match('/^[0-9a-zA-Z\_\.]+$/', $file_name)) return FALSE; else if (substr_count($file_name, ".") > 1) return FALSE; else return TRUE; } function check_name($name = '') { if (!preg_match('/^[0-9a-zA-Z\ ]+$/', $name)) return FALSE; else return TRUE; } function check_chapter_number($name = '') { if (!preg_match('/^([0-9])+(\.([0-9a-zA-Z])+)+$/', $name)) return FALSE; else return TRUE; } function textbook_companion_path() { return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'uploads/'; } function textbook_companion_samplecode_path() { return $_SERVER['DOCUMENT_ROOT'] . base_path() . 'tbc_sample_code/'; } /****************************** DELETION FUNCTIONS ****************************/ function delete_example($example_id) { global $user; $root_path = textbook_companion_path(); $status = TRUE; /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE id = %d", $example_id); $example_data = db_fetch_object($example_q);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('id', $example_id); $example_q = $query->execute(); $example_data =$example_q->fetchObject(); if (!$example_data) { drupal_set_message(t('Invalid example.'), 'error'); return FALSE; } /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE id = %d", $example_data->chapter_id); $chapter_data = db_fetch_object($chapter_q);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $example_data->chapter_id); $chapter_q = $query->execute(); $chapter_data=$chapter_q->fetchObject(); if (!$chapter_data) { drupal_set_message(t('Invalid example chapter.'), 'error'); return FALSE; } /* deleting example files */ /*$examples_files_q = db_query("SELECT * FROM {textbook_companion_example_files} WHERE example_id = %d", $example_id);*/ $query = db_select('textbook_companion_example_files'); $query->fields('textbook_companion_example_files'); $query->condition('example_id', $example_id); $examples_files_q = $query->execute(); while ($examples_files_data =$examples_files_q->fetchObject()) { if (!file_exists($root_path . $examples_files_data->filepath)) { $status = FALSE; drupal_set_message(t('Error deleting !file. File does not exists.', array('!file' => $examples_files_data->filepath)), 'error'); continue; } /* removing example file */ if (!drupal_unlink($root_path . $examples_files_data->filepath)) { $status = FALSE; drupal_set_message(t('Error deleting !file', array('!file' => $examples_files_data->filepath)), 'error'); /* sending email to admins */ $email_to = variable_get('textbook_companion_emails', ''); $params['standard']['subject'] = "[ERROR] Error deleting example file"; $params['standard']['body'] = array(0 =>"Error deleting example files by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . " : example id : " . $example_id . " file id : " . $examples_files_data->id . " file path : " . $examples_files_data->filepath); if (!drupal_mail('textbook_companion', 'standard', $email_to, language_default(), $params, variable_get('textbook_companion_from_email', NULL), TRUE)) drupal_set_message('Error sending email message.', 'error'); } else { /* deleting example files database entries */ /*db_query("DELETE FROM {textbook_companion_example_files} WHERE id = %d", $examples_files_data->id);*/ $query = db_delete('textbook_companion_example_files'); $query->condition('id', $examples_files_data->id); $num_deleted = $query->execute(); } } if (!$status) return FALSE; /* removing example folder */ $ex_path = $chapter_data->preference_id . '/' . 'CH' . $chapter_data->number . '/' . 'EX' . $example_data->number; $dir_path = $root_path . $ex_path; if (is_dir($dir_path)) { if (!drupal_rmdir($dir_path)) { drupal_set_message(t('Error deleting folder !folder', array('!folder' => $dir_path)), 'error'); /* sending email to admins */ $email_to = variable_get('textbook_companion_emails', ''); $params['standard']['subject'] = "[ERROR] Error deleting folder"; $params['standard']['body'] = array(0 => "Error deleting folder " . $dir_path . " by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); if (!drupal_mail('textbook_companion', 'standard', $email_to, language_default(), $params, variable_get('textbook_companion_from_email', NULL), TRUE)) drupal_set_message('Error sending email message.', 'error'); return FALSE; } } else { drupal_set_message(t('Cannot delete example folder. !folder does not exists.', array('!folder' => $dir_path)), 'error'); return FALSE; } /* deleting example dependency and exmaple database entries */ /*db_query("DELETE FROM {textbook_companion_example_dependency} WHERE example_id = %d", $example_id);*/ $query = db_delete('textbook_companion_example_dependency'); $query->condition('example_id', $example_id); $num_deleted = $query->execute(); /*db_query("DELETE FROM {textbook_companion_example} WHERE id = %d", $example_id);*/ $query = db_delete('textbook_companion_example'); $query->condition('id', $example_id); $num_deleted = $query->execute(); return $status; } function delete_chapter($chapter_id) { $status = TRUE; $root_path = textbook_companion_path(); /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE id = %d", $chapter_id); $chapter_data = db_fetch_object($chapter_q);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('id', $chapter_id); $chapter_q = $query->execute(); $chapter_data =$chapter_q->fetchObject(); if (!$chapter_data) { drupal_set_message('Invalid chapter.', 'error'); return FALSE; } /* deleting examples */ /*$example_q = db_query("SELECT * FROM {textbook_companion_example} WHERE chapter_id = %d", $chapter_id);*/ $query = db_select('textbook_companion_example'); $query->fields('textbook_companion_example'); $query->condition('chapter_id', $chapter_id); $example_q = $query->execute(); while ($example_data = $example_q->fetchObject()) { if (!delete_example($example_data->id)) $status = FALSE; } if ($status) { $dir_path = $root_path . $chapter_data->preference_id . '/CH' . $chapter_data->number; if (is_dir($dir_path)) { $res = rmdir($dir_path); if (!$res) { drupal_set_message(t('Error deleting chapter folder !folder', array('!folder' => $dir_path)), 'error'); /* sending email to admins */ $email_to = variable_get('textbook_companion_emails', ''); $params['standard']['subject'] = "[ERROR] Error deleting folder"; $params['standard']['body'] = "Error deleting folder " . $dir_path; if (!drupal_mail('textbook_companion', 'standard', $email_to, language_default(), $params, variable_get('textbook_companion_from_email', NULL), TRUE)) drupal_set_message('Error sending email message.', 'error'); return FALSE; } else { /* deleting chapter details from database */ /*db_query("DELETE FROM {textbook_companion_chapter} WHERE id = %d", $chapter_id);*/ $query = db_delete('textbook_companion_chapter'); $query->condition('id', $chapter_id); $num_deleted = $query->execute(); return TRUE; } } else { drupal_set_message(t('Cannot delete chapter folder. !folder does not exists.', array('!folder' => $dir_path)), 'error'); return FALSE; } } return FALSE; } function delete_book($book_id) { $status = TRUE; $root_path = textbook_companion_path(); /*$preference_q = db_query("SELECT * FROM {textbook_companion_preference} WHERE id = %d", $book_id); $preference_data = db_fetch_object($preference_q);*/ $query = db_select('textbook_companion_preference'); $query->fields('textbook_companion_preference'); $query->condition('id', $book_id); $preference_q = $query->execute(); $preference_data =$preference_q->fetchObject(); if (!$preference_data) { drupal_set_message('Invalid book.', 'error'); return FALSE; } /* delete chapters */ /*$chapter_q = db_query("SELECT * FROM {textbook_companion_chapter} WHERE preference_id = %d", $preference_data->id);*/ $query = db_select('textbook_companion_chapter'); $query->fields('textbook_companion_chapter'); $query->condition('preference_id', $preference_data->id); $chapter_q = $query->execute(); while ($chapter_data = $chapter_q->fetchObject()) { if (!delete_chapter($chapter_data->id)) { $status = FALSE; } } return $status; } function delete_file($file_id) { $root_path = textbook_companion_path(); /*$file_q = db_query("SELECT * FROM {textbook_companion_example_files} WHERE id = %d LIMIT 1", $file_id);*/ $query = db_select('textbook_companion_example_files'); $query->fields('textbook_companion_example_files'); $query->condition('id', $file_id); $query->range(0, 1); $file_q = $query->execute(); $file_data = $file_q->fetchObject(); if (!$file_data) { drupal_set_message('Invalid file specified.', 'error'); return FALSE; } if (!file_exists($root_path . $file_data->filepath)) { drupal_set_message(t('Error deleting !file. File does not exists.', array('!file' => $file_data->filepath)), 'error'); return FALSE; } /* removing example file */ if (!unlink($root_path . $file_data->filepath)) { drupal_set_message(t('Error deleting !file', array('!file' => $file_data->filepath)), 'error'); /* sending email to admins */ $email_to = variable_get('textbook_companion_emails', ''); $params['standard']['subject'] = "[ERROR] Error deleting file"; $params['standard']['body'] = "Error deleting file by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . " : file id : " . $file_id . " file path : " . $file_data->filepath; if (!drupal_mail('textbook_companion', 'standard', $email_to, language_default(), $params, variable_get('textbook_companion_from_email', NULL), TRUE)) drupal_set_message('Error sending email message.', 'error'); return FALSE; } else { /* deleting example files database entries */ /*db_query("DELETE FROM {textbook_companion_example_files} WHERE id = %d", $file_id);*/ $query = db_delete('textbook_companion_example_files'); $query->condition('id', $file_id); $num_deleted = $query->execute(); return TRUE; } } //Non aicte book proposal form function book_proposal_nonaicte_form($form,&$form_state) { global $user; $form = array(); $form['imp_notice'] = array( '#type' => 'item', '#markup' => 'Please fill up this form carefully as the details entered here will be exactly written in the Textbook Companion and also follow the additional guidelines.', ); $form['guidelines'] = array( '#type' => 'fieldset', '#title' => t('Guidelines'), '#attributes' => array('style'=>'font-weight: bold'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['guidelines']['book'] = array( '#type' => 'item', '#required' => TRUE, '#markup' => ' ', ); $form['full_name'] = array( '#type' => 'textfield', '#title' => t('Full Name'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['email_id'] = array( '#type' => 'textfield', '#title' => t('Email'), '#size' => 30, '#value' => $user->mail, '#disabled' => TRUE, ); $form['mobile'] = array( '#type' => 'textfield', '#title' => t('Mobile No.'), '#size' => 30, '#maxlength' => 15, '#required' => TRUE, ); $form['gender'] = array( '#type' => 'radios', '#title' => t('Gender'), '#options' => array('M' => 'Male', 'F' => 'Female'), '#required' => TRUE, ); /*$form['how_project'] = array( '#type' => 'select', '#title' => t('How did you come to know about this project'), '#options' => array('Scilab Website' => 'Scilab Website', 'Friend' => 'Friend', 'Professor/Teacher' => 'Professor/Teacher', 'Mailing List' => 'Mailing List', 'Poster in my/other college' => 'Poster in my/other college', 'Others' => 'Others'), '#required' => TRUE, );*/ $form['course'] = array( '#type' => 'textfield', '#title' => t('Course'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['branch'] = array( '#type' => 'select', '#title' => t('Department/Branch'), '#options' => _tbc_list_of_departments(), '#required' => TRUE, ); $form['university'] = array( '#type' => 'textfield', '#title' => t('University/Institute'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['country'] = array( '#type' => 'select', '#title' => t('Country'), '#options' => array( 'India' => 'India', 'Others' => 'Others', ), '#required' => TRUE, '#tree' => TRUE, '#validated' => TRUE, ); $form['other_country'] = array( '#type' => 'textfield', '#title' => t('Other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your country name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['other_state'] = array( '#type' => 'textfield', '#title' => t('State other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your state/region name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['other_city'] = array( '#type' => 'textfield', '#title' => t('City other than India'), '#size' => 100, '#attributes' =>array('placeholder' => t('Enter your city name')), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'Others'), ), ), ); $form['all_state'] = array( '#type' => 'select', '#title' => t('State'), '#options' => _tbc_list_of_states(), '#validated' => TRUE, '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'India'), ), ), ); $form['city'] = array( '#type' => 'select', '#title' => t('City'), '#options' => _tbc_list_of_cities(), '#states' => array( 'visible' => array( ':input[name="country"]' => array('value' => 'India'), ), ), ); $form['pincode'] = array( '#type' => 'textfield', '#title' => t('Pincode'), '#size' => 30, '#maxlength' => 6, '#required' => False, '#attributes' =>array('placeholder' =>'Enter pincode....'), ); $form['faculty'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('College Teacher/Professor'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, ); $form['faculty_email'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('Teacher/Professor Email Id'), '#default_value' => '@email.com', '#size' => 30, '#maxlength' => 50, ); $form['reviewer'] = array( '#type' => 'hidden', '#value' => 'None', '#title' => t('Reviewer'), '#size' => 30, '#maxlength' => 50, ); $form['version'] = array( '#type' => 'textfield', '#title' => t('Scilab Version'), '#description' => t('Input version format should be like 5.4 or 5.4.1'), '#size' => 10, '#required' => TRUE, '#maxlength' => 20, ); $form['completion_date'] = array( '#type' => 'textfield', '#title' => t('Expected Date of Completion'), '#description' => t('Input date format should be DD-MM-YYYY. Eg: 23-03-2011'), '#size' => 10, '#maxlength' => 10, '#required' => TRUE, ); $form['operating_system'] = array( '#type' => 'textfield', '#title' => t('Operating System'), '#required' => TRUE, '#size' => 30, '#maxlength' => 50, ); $reason=array( 'Used in more than one University' =>t('Used in more than one University'), 'The book has multiple editions' => t('The book has multiple editions'), 'Extremely useful' => t('Extremely useful'), 'Other reason' => t('Any other reason state below') ); $form['reason'] = array( '#type' => 'checkboxes', '#title' => t('Reasons'), '#options' => $reason, '#required' => TRUE, ); $form['other_reason'] = array( '#type' => 'textarea', '#size' => 300, '#maxlength' => 300, '#states' => array('visible' => array(':input[name="reason[Other reason]"]' => array('checked' => TRUE),),), //'#required' => FALSE, ); $form['proposal_type'] = array( '#type' => 'hidden', '#default_value' => '1', '#required' => FALSE, ); $form['reference'] = array( '#type' => 'textarea', '#title' => t('Reference'), '#required' => TRUE, '#size' => 1000, '#attributes' =>array('placeholder' =>'Links of the syllabus must be provided....'), ); $form['preference1'] = array( '#type' => 'fieldset', '#title' => t('Book Preference'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['preference1']['book1'] = array( '#type' => 'textfield', '#title' => t('Title of the book'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row1->book, '#disabled' => ($row1->book?TRUE:FALSE), ); $form['preference1']['author1'] = array( '#type' => 'textfield', '#title' => t('Author Name'), '#size' => 30, '#maxlength' => 100, '#required' => TRUE, '#default_value' => $row1->author, '#disabled' => ($row1->author?TRUE:FALSE), ); $form['preference1']['isbn1'] = array( '#type' => 'textfield', '#title' => t('ISBN No'), '#size' => 30, '#maxlength' => 25, '#required' => TRUE, '#default_value' => $row1->isbn, '#disabled' => ($row1->isbn?TRUE:FALSE), ); $form['preference1']['publisher1'] = array( '#type' => 'textfield', '#title' => t('Publisher & Place'), '#size' => 30, '#maxlength' => 50, '#required' => TRUE, '#default_value' => $row1->publisher, ); $form['preference1']['edition1'] = array( '#type' => 'textfield', '#title' => t('Edition'), '#size' => 4, '#maxlength' => 2, '#required' => TRUE, '#default_value' => $row1->edition, ); $form['preference1']['year1'] = array( '#type' => 'textfield', '#title' => t('Year of pulication'), '#size' => 4, '#maxlength' => 4, '#required' => TRUE, '#default_value' => $row1->year, ); $form['preference1']['book_category_1'] = array( '#type' => 'select', '#title' => t('Category'), '#options' => _tbc_list_of_category(), '#required' => TRUE, ); $form['samplefile'] = array( '#type' => 'fieldset', '#title' => t('Sample Source Files *'), '#collapsible' => FALSE, '#collapsed' => FALSE, ); $form['samplefile']['samplefile1'] = array( '#type' => 'file', '#title' => t('Upload sample source file'), '#size' => 48, '#description' => t('Separate filenames with underscore. No spaces or any special characters allowed in filename.') . '
' . t('Allowed file extensions : ') . variable_get('textbook_companion_sample_source_file_extensions', '').'', ); $form['termconditions'] = array( '#type' => 'checkboxes', '#title' => t('Terms And Conditions'), '#options' => array( 'status' => t('I agree to the Terms and Conditions'),), '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit') ); return $form; } function book_proposal_nonaicte_form_validate($form, &$form_state) { /* mobile */ if (!preg_match('/^[0-9\ \+]{0,15}$/', $form_state['values']['mobile'])) form_set_error('mobile', t('Invalid mobile number')); /* date of completion */ if (!preg_match('/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$/', $form_state['values']['completion_date'])) form_set_error('completion_date', t('Invalid expected date of completion')); list($d, $m, $y) = explode('-', $form_state['values']['completion_date']); $d = (int)$d; $m = (int)$m; $y = (int)$y; if (!checkdate($m, $d, $y)) form_set_error('completion_date', t('Invalid expected date of completion')); if (mktime(0, 0, 0, $m, $d, $y) <= time()) form_set_error('completion_date', t('Expected date of completion should be in future')); /* edition */ if (!preg_match('/^[1-9][0-9]{0,1}$/', $form_state['values']['edition1'])) form_set_error('edition1', t('Invalid edition for Book Preference 1')); /* year of publication */ if (!preg_match('/^[1-3][0-9][0-9][0-9]$/', $form_state['values']['year1'])) form_set_error('year1', t('Invalid year of pulication for Book Preference 1')); /* year of publication */ $cur_year = date('Y'); if ((int)$form_state['values']['year1'] > $cur_year) form_set_error('year1', t('Year of pulication should be not in the future for Book Preference 1')); /* isbn */ if (!preg_match('/^[0-9\-xX]+$/', $form_state['values']['isbn1'])) form_set_error('isbn1', t('Invalid ISBN for Book Preference 1')); if (!preg_match('/^\d+(?:\.\d+)+/', $form_state['values']['version'])) form_set_error('version', t('Please enter correct version in speacifed format')); if($form_state['values']['country']=='Others'){ if($form_state['values']['other_country']== ''){ form_set_error('other_country', t('Enter country name')); // $form_state['values']['country'] = $form_state['values']['other_country']; }else{ $form_state['values']['country'] = $form_state['values']['other_country']; } if($form_state['values']['other_state']== ''){ form_set_error('other_state', t('Enter state name')); // $form_state['values']['country'] = $form_state['values']['other_country']; }else{ $form_state['values']['all_state'] = $form_state['values']['other_state']; } if($form_state['values']['other_city']== ''){ form_set_error('other_city', t('Enter city name')); // $form_state['values']['country'] = $form_state['values']['other_country']; }else{ $form_state['values']['city'] = $form_state['values']['other_city']; } }else{ if($form_state['values']['country']== ''){ form_set_error('country', t('Select country name')); // $form_state['values']['country'] = $form_state['values']['other_country']; } if($form_state['values']['all_state']== ''){ form_set_error('all_state', t('Select state name')); // $form_state['values']['country'] = $form_state['values']['other_country']; } if($form_state['values']['city']== ''){ form_set_error('city', t('Select city name')); // $form_state['values']['country'] = $form_state['values']['other_country']; } } if (isset($_FILES['files'])) { /* check if atleast one source or result file is uploaded */ if ( ! ($_FILES['files']['name']['samplefile1'])) form_set_error('samplefile1', t('Please upload sample code main or source file.')); /* check for valid filename extensions */ foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { if ($file_name) { /* checking file type */ if (strstr($file_form_name, 'sample')) $file_type = 'S'; else $file_type = 'U'; $allowed_extensions_str = ''; switch ($file_type) { case 'S': $allowed_extensions_str = variable_get('textbook_companion_sample_source_file_extensions', ''); break; } $allowed_extensions = explode(',' , $allowed_extensions_str); $allowd_file = strtolower($_FILES['files']['name'][$file_form_name]); $temp_extension = end(explode('.', $allowd_file)); if (!in_array($temp_extension, $allowed_extensions)) form_set_error($file_form_name, t('Only file with ' . $allowed_extensions_str . ' extensions can be uploaded.')); if ($_FILES['files']['size'][$file_form_name] <= 0) form_set_error($file_form_name, t('File size cannot be zero.')); /* check if valid file name */ if (!textbook_companion_check_valid_filename($_FILES['files']['name'][$file_form_name])) form_set_error($file_form_name, t('Invalid file name specified. Only alphabets and numbers are allowed as a valid filename.')); } } } return; } function book_proposal_nonaicte_form_submit($form, &$form_state) { global $user; $root_path = textbook_companion_samplecode_path(); $selections = variable_get("aicte_".$user->uid, ""); $tbc_to_emails = variable_get("textbook_companion_emails_all"); if (!$user->uid) { drupal_set_message('It is mandatory to login on this website to access the proposal form', 'error'); return; } /* completion date to timestamp */ list($d, $m, $y) = explode('-', $form_state['values']['completion_date']); $completion_date_timestamp = mktime(0, 0, 0, $m, $d, $y); /* Reasons for suggesting a book*/ if (isset($_POST['reason'])) { if(!($form_state['values']['other_reason'])){ $my_reason = implode(", ", $_POST['reason']); } else{ $my_reason = implode(", ", $_POST['reason']); $my_reason = $my_reason."-"." ".$form_state['values']['other_reason']; } } /************************************/ $scilab_version = 'scilab ' . $form_state['values']['version']; $query = " INSERT INTO {textbook_companion_proposal} (uid, approver_uid, full_name, mobile, gender, how_project, course, branch, university, country, city, pincode, state, faculty, reviewer, reference, completion_date, creation_date, approval_date, proposal_status, message, scilab_version, operating_system, teacher_email, proposal_type, reason, samplefilepath) VALUES (:uid, :approver_uid, :full_name, :mobile, :gender, :how_project, :course, :branch, :university, :country, :city, :pincode, :state, :faculty, :reviewer, :reference, :completion_date, :creation_date, :approval_date, :proposal_status, :message, :scilab_version, :operating_system, :teacher_email, :proposal_type, :reason, :samplefilepath) "; // $result = db_query($query); $args = array( ":uid"=> $user->uid, ":approver_uid"=> 0, ":full_name"=> ucwords(strtolower($form_state['values']['full_name'])), ":mobile"=> $form_state['values']['mobile'], ":gender"=> $form_state['values']['gender'], ":how_project"=> 'Not available', ":course"=> $form_state['values']['course'], ":branch"=> $form_state['values']['branch'], ":university"=> $form_state['values']['university'], ":country" => $form_state['values']['country'], ":city"=> $form_state['values']['city'], ":pincode"=> $form_state['values']['pincode'], ":state"=> $form_state['values']['all_state'], ":faculty"=> ucwords(strtolower($form_state['values']['faculty'])), ":reviewer"=> ucwords(strtolower($form_state['values']['reviewer'])), ":reference"=> strtolower($form_state['values']['reference']), ":completion_date"=> $completion_date_timestamp, ":creation_date"=> time(), ":approval_date"=> time(), ":proposal_status"=> 0, ":message"=> 'None', ":scilab_version"=>$scilab_version, ":operating_system"=>$form_state['values']['operating_system'], ":teacher_email"=>$form_state['values']['faculty_email'], ":proposal_type"=>$form_state['values']['proposal_type'], ":reason"=> $my_reason, ":samplefilepath"=>"" ); //var_dump($args); $result = db_query($query, $args, array('return' => Database::RETURN_INSERT_ID)); $dest_path = $result . '/'; if (!is_dir($root_path . $dest_path)){ mkdir($root_path . $dest_path); } /* uploading files */ foreach ($_FILES['files']['name'] as $file_form_name => $file_name) { if ($file_name) { /* checking file type */ $file_type = 'S'; if (file_exists($root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) { drupal_set_message(t("Error uploading file. File !filename already exists.", array('!filename' => $_FILES['files']['name'][$file_form_name])), 'error'); return; } /* uploading file */ if (move_uploaded_file($_FILES['files']['tmp_name'][$file_form_name], $root_path . $dest_path . $_FILES['files']['name'][$file_form_name])) { $query = "UPDATE {textbook_companion_proposal} SET samplefilepath = :samplefilepath WHERE id = :id"; $args = array( ":samplefilepath" => $dest_path . $_FILES['files']['name'][$file_form_name], ":id" =>$result, ); $updateresult = db_query($query, $args); drupal_set_message($file_name . ' uploaded successfully.', 'status'); } else { drupal_set_message('Error uploading file : ' . $dest_path . $file_name, 'error'); } } } if (!$result) { drupal_set_message(t('Error receiving your proposal. Please try again.'), 'error'); return; } /* proposal id */ $proposal_id = $result; /* inserting first book preference */ if ($form_state['values']['book1']) { $query = "INSERT INTO {textbook_companion_preference} (proposal_id, pref_number, book, author, isbn, publisher, edition, year, category, approval_status, nonaicte_book) VALUES (:proposal_id, :pref_number, :book, :author, :isbn, :publisher, :edition, :year, :category, :approval_status, :nonaicte_book)"; $args = array( ":proposal_id"=> $proposal_id, ":pref_number"=> 1, ":book"=> ucwords(strtolower($form_state['values']['book1'])), ":author"=> ucwords(strtolower($form_state['values']['author1'])), ":isbn"=> $form_state['values']['isbn1'], ":publisher"=> ucwords(strtolower($form_state['values']['publisher1'])), ":edition"=> $form_state['values']['edition1'], ":year"=> $form_state['values']['year1'], ":category"=> $form_state['values']['book_category_1'], ":approval_status"=> 0, ":nonaicte_book"=> 1, ); $result = db_query($query, $args); if (!$result) { drupal_set_message(t('Error receiving your first book preference.'), 'error'); } } /* sending email */ $email_to = $user->mail; $from = variable_get('textbook_companion_from_email', ''); $bcc = variable_get('textbook_companion_emails', ''); $cc = variable_get('textbook_companion_cc_emails', ''); $params['nonaicte_proposal_received']['proposal_id'] = $proposal_id; $params['nonaicte_proposal_received']['user_id'] = $user->uid; $params['nonaicte_proposal_received']['headers']=array('From'=>$from,'MIME-Version'=> '1.0', 'Content-Type'=> 'text/plain; charset=UTF-8; format=flowed; delsp=yes', 'Content-Transfer-Encoding' => '8Bit', 'X-Mailer'=> 'Drupal','Cc' => $cc, 'Bcc' => $bcc); if (!drupal_mail('textbook_companion', 'nonaicte_proposal_received', $email_to , language_default(), $params, $from, TRUE)) drupal_set_message('Error sending email message.', 'error'); drupal_set_message(t('We have received your book proposal. We will get back to you soon.'), 'status'); drupal_goto(''); } function del_book_pdf($book_id) { $root_path = textbook_companion_path(); $dir_path = $root_path . "latex/"; $pdf_filename = "book_" . $book_id . ".pdf"; if (file_exists($dir_path . $pdf_filename)) unlink($dir_path . $pdf_filename); } function _tbc_list_of_states(){ $states = array(0 => '-Select-'); $query = db_select('list_states_of_india'); $query->fields('list_states_of_india'); //$query->orderBy('', ''); $states_list = $query->execute(); while ($states_list_data = $states_list->fetchObject()) { $states[$states_list_data->state] = $states_list_data->state; } return $states; } function _tbc_list_of_cities(){ $city = array(0 => '-Select-'); $query = db_select('list_cities_of_india'); $query->fields('list_cities_of_india'); $query->orderBy('city', 'ASC'); $city_list = $query->execute(); while ($city_list_data = $city_list->fetchObject()) { $city[$city_list_data->city] = $city_list_data->city; } return $city; } function _tbc_list_of_departments(){ $query = db_select('list_of_departments'); $query->fields('list_of_departments'); $query->orderBy('id', 'DESC'); $department_list = $query->execute(); while ($department_list_data = $department_list->fetchObject()) { $department[$department_list_data->department] = $department_list_data->department; } return $department; } function _tbc_list_of_category($category_id=NULL){ if($category_id==NULL){ $query = db_select('list_of_category'); $query->fields('list_of_category'); $query->orderBy('id', 'ASC'); $category_list = $query->execute(); }else{ $query = db_select('list_of_category'); $query->fields('list_of_category'); $query->condition('category_id', $category_id); $query->orderBy('id', 'ASC'); $category_list = $query->execute(); } while ($category_list_data = $category_list->fetchObject()) { $category[$category_list_data->category_id] = $category_list_data->category_name; } return $category; } function textbook_companion_init(){ $path = drupal_get_path('module', 'textbook_companion'); drupal_add_css($path . '/css/textbook_companion.css'); drupal_add_js($path . '/js/textbook_companion.js'); drupal_add_js($path . '/js/jquery-1.7.1.js'); }