summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--email.inc47
-rwxr-xr-xgeneral_deletion.inc7
-rwxr-xr-xlab_migration.module84
-rwxr-xr-xmanage_proposal.inc7
-rwxr-xr-xmanage_solution_proposal.inc222
-rwxr-xr-xproposal.inc1
-rwxr-xr-xsolution_proposal.inc125
7 files changed, 467 insertions, 26 deletions
diff --git a/email.inc b/email.inc
index c87cc9c..cdee979 100644
--- a/email.inc
+++ b/email.inc
@@ -234,6 +234,53 @@ Best Wishes,
!site_name', array('!site_name' => variable_get('site_name', ''), '!user_name' => $user_data->name), $language->language);
break;
+ case 'solution_proposal_received':
+
+ /* initializing data */
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d LIMIT 1", $params['solution_proposal_received']['proposal_id']);
+ $proposal_data = db_fetch_object($proposal_q);
+
+ if ($proposal_data->solution_display == 1) {
+ $solution_display = 'Yes';
+ } else {
+ $solution_display = 'No';
+ }
+
+ $experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE proposal_id = %d ORDER BY number", $params['solution_proposal_received']['proposal_id'], 1);
+ $experiment_list = '
+ ';
+ while ($experiment_data = db_fetch_object($experiment_q)) {
+ $experiment_list .= $experiment_data->number . ' ' . $experiment_data->title . '
+ ';
+ }
+
+ $user_data = user_load($params['solution_proposal_received']['user_id']);
+
+ $message['subject'] = t('[!site_name] Your Lab migration solution proposal has been received', array('!site_name' => variable_get('site_name', '')), $language->language);
+ $message['body'] = t('
+Dear !user_name,
+
+We have received your proposal for solution for following Lab migration :
+
+Full Name : ' . $proposal_data->name_title . ' ' . $proposal_data->name . '
+Email : ' . $user_data->mail . '
+Contact Phone : ' . $proposal_data->contact_ph . '
+Department/Branch : ' . $proposal_data->department . '
+University/Institute : ' . $proposal_data->university . '
+
+Display solution on website : ' . $solution_display . '
+
+Solution Provided By : ' . $solution_provider_user . '
+
+List of experiments : ' . $experiment_list . '
+
+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), $language->language);
+ break;
+
case 'solution_uploaded':
$solution_q = db_query("SELECT * FROM {lab_migration_solution} WHERE id = %d LIMIT 1", $params['solution_uploaded']['solution_id']);
$solution_data = db_fetch_object($solution_q);
diff --git a/general_deletion.inc b/general_deletion.inc
index 3be225f..4cad917 100755
--- a/general_deletion.inc
+++ b/general_deletion.inc
@@ -105,12 +105,19 @@ function delete_experiment($experiment_id)
/* deleting solutions */
$solution_q = db_query("SELECT * FROM {lab_migration_solution} WHERE experiment_id = %d", $experiment_id);
+ $delete_exp_folder = FALSE;
while ($solution_data = db_fetch_object($solution_q))
{
+ $delete_exp_folder = TRUE;
if (!delete_solution($solution_data->id))
$status = FALSE;
}
+ if (!$delete_exp_folder)
+ {
+ return TRUE;
+ }
+
if ($status)
{
$dir_path = $root_path . $experiment_data->proposal_id . '/EXP' . $experiment_data->number;
diff --git a/lab_migration.module b/lab_migration.module
index b239997..4f2d8c0 100755
--- a/lab_migration.module
+++ b/lab_migration.module
@@ -12,6 +12,7 @@ function lab_migration_menu()
{
$items = array();
+ /* PROPOSAL */
$items['lab_migration/proposal'] = array(
'title' => 'Lab Migration Proposal',
'description' => 'Lab Migration Proposal',
@@ -21,8 +22,6 @@ function lab_migration_menu()
'type' => MENU_NORMAL_ITEM,
'file' => 'proposal.inc',
);
-
- /* PROPOSAL */
$items['lab_migration/manage_proposal'] = array(
'title' => 'Manage Lab Migration',
'description' => 'Manage Lab Migration Proposals',
@@ -41,6 +40,16 @@ function lab_migration_menu()
'weight' => 1,
'file' => 'manage_proposal.inc',
);
+ $items['lab_migration/manage_proposal/pending_solution_proposal'] = array(
+ 'title' => 'Pending Solution Proposals',
+ 'description' => 'Pending Lab Migration Solution Proposals Queue',
+ 'page callback' => 'solution_proposal_pending',
+ 'access callback' => 'user_access',
+ 'access arguments' => array('manage proposal'),
+ 'type' => MENU_LOCAL_TASK,
+ 'weight' => 2,
+ 'file' => 'manage_solution_proposal.inc',
+ );
$items['lab_migration/manage_proposal/pending_solution'] = array(
'title' => 'Pending Solution',
'description' => 'Pending Lab Migration Solution',
@@ -48,7 +57,7 @@ function lab_migration_menu()
'access callback' => 'user_access',
'access arguments' => array('manage proposal'),
'type' => MENU_LOCAL_TASK,
- 'weight' => 2,
+ 'weight' => 3,
'file' => 'manage_proposal.inc',
);
$items['lab_migration/manage_proposal/all'] = array(
@@ -58,7 +67,7 @@ function lab_migration_menu()
'access callback' => 'user_access',
'access arguments' => array('manage proposal'),
'type' => MENU_LOCAL_TASK,
- 'weight' => 3,
+ 'weight' => 4,
'file' => 'manage_proposal.inc',
);
$items['lab_migration/manage_proposal/category'] = array(
@@ -68,7 +77,7 @@ function lab_migration_menu()
'access callback' => 'user_access',
'access arguments' => array('manage proposal'),
'type' => MENU_LOCAL_TASK,
- 'weight' => 4,
+ 'weight' => 5,
'file' => 'manage_proposal.inc',
);
$items['lab_migration/manage_proposal/category/edit'] = array(
@@ -89,6 +98,15 @@ function lab_migration_menu()
'type' => MENU_CALLBACK,
'file' => 'manage_proposal.inc',
);
+ $items['lab_migration/manage_proposal/solution_proposal_approve'] = array(
+ 'title' => 'Approve Solution Proposal',
+ 'description' => 'Approve Solution Proposal',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('solution_proposal_approval_form'),
+ 'access arguments' => array('manage proposal'),
+ 'type' => MENU_CALLBACK,
+ 'file' => 'manage_solution_proposal.inc',
+ );
$items['lab_migration/manage_proposal/edit'] = array(
'title' => 'Edit Proposal',
'description' => 'Edit Proposal',
@@ -108,6 +126,24 @@ function lab_migration_menu()
'file' => 'manage_proposal.inc',
);
+ /* SOLUTION PROPOSAL */
+ $items['lab_migration/open_proposal'] = array(
+ 'title' => 'Lab Migration Solve',
+ 'description' => 'Lab Migration Proposal Open For Solution',
+ 'page callback' => 'lab_migration_proposal_open',
+ 'access arguments' => array('propose solution'),
+ 'type' => MENU_NORMAL_ITEM,
+ 'file' => 'solution_proposal.inc',
+ );
+ $items['lab_migration/show_proposal'] = array(
+ 'title' => 'Lab Migration Proposal',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('lab_migration_proposal_display'),
+ 'access arguments' => array('view proposal'),
+ 'type' => MENU_CALLBACK,
+ 'file' => 'solution_proposal.inc',
+ );
+
/* CODE REVIEW */
$items['lab_migration/code_approval'] = array(
'title' => 'Manage Code Approval',
@@ -158,17 +194,6 @@ function lab_migration_menu()
'file' => 'notes.inc',
);
- /* ADMIN SETTINGS */
- $items['admin/settings/lab_migration'] = array(
- 'title' => 'Lab Migration Settings',
- 'description' => 'Lab Migration Settings',
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('lab_migration_settings_form'),
- 'access arguments' => array('administer lab migration'),
- 'type' => MENU_NORMAL_ITEM,
- 'file' => 'settings.inc',
- );
-
/* CODE UPLOAD */
$items['lab_migration/code'] = array(
'title' => 'Code Submission',
@@ -283,7 +308,17 @@ function lab_migration_menu()
'file' => 'full_download.inc',
);
- /* latex script for lab generation */
+ /* DOWNLOAD FOR EVERYONE */
+ $items['lab_migration_run'] = array(
+ 'title' => 'Download Codes',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('lab_migration_run_form'),
+ 'access arguments' => array('access content'),
+ 'type' => MENU_NORMAL_ITEM,
+ 'file' => 'run.inc',
+ );
+
+ /* LATEX SCRIPT */
$items['lab_migration/generate_lab'] = array(
'title' => 'Generate Lab',
'description' => 'Generate Lab From Latex Script',
@@ -301,14 +336,15 @@ function lab_migration_menu()
'file' => 'latex.inc',
);
- /* DOWNLOAD FOR EVERYONE */
- $items['lab_migration_run'] = array(
- 'title' => 'Download Codes',
+ /* ADMIN SETTINGS */
+ $items['admin/settings/lab_migration'] = array(
+ 'title' => 'Lab Migration Settings',
+ 'description' => 'Lab Migration Settings',
'page callback' => 'drupal_get_form',
- 'page arguments' => array('lab_migration_run_form'),
- 'access arguments' => array('access content'),
+ 'page arguments' => array('lab_migration_settings_form'),
+ 'access arguments' => array('administer lab migration'),
'type' => MENU_NORMAL_ITEM,
- 'file' => 'run.inc',
+ 'file' => 'settings.inc',
);
return $items;
@@ -318,7 +354,7 @@ function lab_migration_menu()
* Implementation of hook_perm().
*/
function lab_migration_perm() {
- return array('create proposal', 'approve proposal', 'approve code', 'upload code', 'edit uploaded code', 'download code', 'create feedback', 'bulk manage code', 'bulk delete code', 'edit proposal', 'administer lab migration', 'generate lab');
+ return array('create proposal', 'manage proposal', 'edit proposal', 'approve proposal', 'propose solution', 'view proposal', 'approve code', 'bulk manage code', 'bulk delete code', 'upload code', 'edit uploaded code', 'download code', 'access content', 'administer lab migration', 'generate lab');
}
/* AJAX CALLS */
diff --git a/manage_proposal.inc b/manage_proposal.inc
index cd683f1..5d40fb1 100755
--- a/manage_proposal.inc
+++ b/manage_proposal.inc
@@ -665,9 +665,14 @@ function proposal_edit_form_validate($form, &$form_state)
$proposal_id = (int)arg(3);
if ($form_state['values']['solution_provider_uid'] == 3) {
- if (!user_load(array('name' => check_plain($form_state['values']['solution_provider_user_name'])))) {
+ $solution_provider_data = user_load(array('name' => check_plain($form_state['values']['solution_provider_user_name'])));
+ if (!$solution_provider_data) {
form_set_error('solution_provider_user_name', t('Solution provider user name does not exists'));
}
+ $solution_provider_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_provider_uid = %d AND approval_status IN (0, 1, 2)", $solution_provider_data->uid);
+ if (db_fetch_object($solution_provider_q)) {
+ form_set_error('solution_provider_user_name', t('Solution provider has already one proposal active'));
+ }
}
/* check before delete proposal */
diff --git a/manage_solution_proposal.inc b/manage_solution_proposal.inc
new file mode 100755
index 0000000..d042135
--- /dev/null
+++ b/manage_solution_proposal.inc
@@ -0,0 +1,222 @@
+<?php
+// $Id$
+
+function solution_proposal_pending()
+{
+ /* get list of solution proposal where the solution_provider_uid is set to some userid except 0 and solution_status is also 0 */
+ $pending_rows = array();
+ $pending_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_provider_uid != 0 AND solution_status = 1 ORDER BY id DESC");
+ while ($pending_data = db_fetch_object($pending_q))
+ {
+ $pending_rows[$pending_data->id] = array(l($pending_data->name, 'user/' . $pending_data->uid), $pending_data->lab_title, l('Approve', 'lab_migration/manage_proposal/solution_proposal_approve/' . $pending_data->id));
+ }
+
+ /* check if there are any pending proposals */
+ if (!$pending_rows)
+ {
+ drupal_set_message(t('There are no pending solution proposals.'), 'status');
+ return '';
+ }
+
+ $pending_header = array('Proposer Name', 'Title of the Lab', 'Action');
+ $output = theme_table($pending_header, $pending_rows);
+ return $output;
+}
+
+/******************************************************************************/
+/***************** SOLUTION PROPOSAL APPROVAL FORM ****************************/
+/******************************************************************************/
+
+function solution_proposal_approval_form($form_state)
+{
+ global $user;
+
+ /* get current proposal */
+ $proposal_id = (int)arg(3);
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id);
+ if ($proposal_q)
+ {
+ if ($proposal_data = db_fetch_object($proposal_q))
+ {
+ /* everything ok */
+ } else {
+ drupal_set_message(t('Invalid proposal selected. Please try again.'), 'error');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ }
+ } else {
+ drupal_set_message(t('Invalid proposal selected. Please try again.'), 'error');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ }
+
+ $form['name'] = array(
+ '#type' => 'item',
+ '#value' => l($proposal_data->name_title . ' ' . $proposal_data->name, 'user/' . $proposal_data->uid),
+ '#title' => t('Proposer Name'),
+ );
+ $form['email_id'] = array(
+ '#type' => 'item',
+ '#value' => user_load($proposal_data->uid)->mail,
+ '#title' => t('Email'),
+ );
+ $form['contact_ph'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->contact_ph,
+ '#title' => t('Contact Phone No.'),
+ );
+ $form['department'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->department,
+ '#title' => t('Department/Branch'),
+ );
+ $form['university'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->university,
+ '#title' => t('University/Institute'),
+ );
+ $form['lab_title'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->lab_title,
+ '#title' => t('Title of the Lab'),
+ );
+
+ /* get experiment details */
+ $experiment_list = '<ul>';
+ $experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE proposal_id = %d ORDER BY id ASC", $proposal_id);
+ while ($experiment_data = db_fetch_object($experiment_q))
+ {
+ $experiment_list .= '<li>' . $experiment_data->title . '</li>';
+ }
+ $experiment_list .= '</ul>';
+
+ $form['experiment'] = array(
+ '#type' => 'item',
+ '#value' => $experiment_list,
+ '#title' => t('Experiments'),
+ );
+
+ $form['solution_display'] = array(
+ '#type' => 'item',
+ '#title' => t('Display the solution on the www.scilab.in website'),
+ '#value' => ($proposal_data->solution_display == 1) ? "Yes" : "No",
+ );
+
+ if ($proposal_data->solution_provider_uid == 0) {
+ $solution_provider = "User will not provide solution, we will have to provide solution";
+ } else if ($proposal_data->solution_provider_uid == $proposal_data->uid) {
+ $solution_provider = "Proposer will provide the solution of the lab";
+ } else {
+ $solution_provider_user_data = user_load($proposal_data->solution_provider_uid);
+ if ($solution_provider_user_data)
+ $solution_provider = l($solution_provider_user_data->name, 'user/' . $proposal_data->solution_provider_uid);
+ else
+ $solution_provider = "User does not exists";
+ }
+ $form['solution_provider_uid'] = array(
+ '#type' => 'item',
+ '#title' => t('Solution Provider'),
+ '#value' => $solution_provider,
+ );
+
+ $form['approval'] = array(
+ '#type' => 'radios',
+ '#title' => t('Solution Provider'),
+ '#options' => array('1' => 'Approve', '2' => 'Disapprove'),
+ '#required' => TRUE,
+ );
+
+ $form['message'] = array(
+ '#type' => 'textarea',
+ '#title' => t('Reason for disapproval'),
+ );
+
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Submit')
+ );
+
+ $form['cancel'] = array(
+ '#type' => 'markup',
+ '#value' => l(t('Cancel'), 'lab_migration/manage_proposal/pending_solution_proposal'),
+ );
+
+ return $form;
+}
+
+function solution_proposal_approval_form_validate($form, &$form_state)
+{
+ $proposal_id = (int)arg(3);
+
+ $solution_provider_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id);
+ $solution_provider_data = db_fetch_object($solution_provider_q);
+
+ $solution_provider_present_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_provider_uid = %d AND approval_status IN (0, 1, 2) AND id != %d", $solution_provider_data->uid, $proposal_id);
+ if (db_fetch_object($solution_provider_present_q)) {
+ form_set_error('', t('Solution provider has already one proposal active'));
+ }
+}
+
+function solution_proposal_approval_form_submit($form, &$form_state)
+{
+ global $user;
+
+ /* get current proposal */
+ $proposal_id = (int)arg(3);
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id);
+ if ($proposal_q)
+ {
+ if ($proposal_data = db_fetch_object($proposal_q))
+ {
+ /* everything ok */
+ } else {
+ drupal_set_message(t('Invalid proposal selected. Please try again.'), 'error');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ }
+ } else {
+ drupal_set_message(t('Invalid proposal selected. Please try again.'), 'error');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ }
+
+ $user_data = user_load($proposal_data->solution_provider_uid);
+
+ if ($form_state['values']['approval'] == 1) {
+ db_query("UPDATE {lab_migration_proposal} SET solution_status = 2 WHERE id = %d", $proposal_id);
+
+ /* sending email */
+ $email_to = $user_data->mail;
+ $param['solution_proposal_approved']['proposal_id'] = $proposal_id;
+ $param['solution_proposal_approved']['user_id'] = $proposal_data->uid;
+ if (!drupal_mail('lab_migration', 'solution_proposal_approved', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ $email_to = $user->mail . ', ' . variable_get('lab_migration_emails', '');
+ if (!drupal_mail('lab_migration', 'solution_proposal_approved', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ drupal_set_message('Lab migration solution proposal approved. User has been notified of the approval.', 'status');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ } else if ($form_state['values']['approval'] == 2) {
+ db_query("UPDATE {lab_migration_proposal} SET solution_provider_uid = 0, solution_status = 0 WHERE id = %d", $proposal_id);
+
+ /* sending email */
+ $email_to = $user_data->mail;
+ $param['solution_proposal_disapproved']['proposal_id'] = $proposal_id;
+ $param['solution_proposal_disapproved']['user_id'] = $proposal_data->uid;
+ $param['solution_proposal_disapproved']['message'] = $form_state['values']['message'];
+ if (!drupal_mail('lab_migration', 'solution_proposal_disapproved', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ $email_to = $user->mail . ', ' . variable_get('lab_migration_emails', '');;
+ if (!drupal_mail('lab_migration', 'solution_proposal_disapproved', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ drupal_set_message('Lab migration solution proposal dis-approved. User has been notified of the dis-approval.', 'status');
+ drupal_goto('lab_migration/manage_proposal/pending_solution_proposal');
+ return;
+ }
+}
+
diff --git a/proposal.inc b/proposal.inc
index 6f6f0db..1d69583 100755
--- a/proposal.inc
+++ b/proposal.inc
@@ -11,7 +11,6 @@
0 - Pending
1 - Approved
2 - Dis-Approved
- 3 - Completed
Solution Display :
0 - No
1 - Yes
diff --git a/solution_proposal.inc b/solution_proposal.inc
new file mode 100755
index 0000000..eace686
--- /dev/null
+++ b/solution_proposal.inc
@@ -0,0 +1,125 @@
+<?php
+// $Id$
+
+function lab_migration_proposal_open()
+{
+ global $user;
+
+ /* get open proposal list */
+ $proposal_rows = array();
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE approval_status = 1 AND solution_provider_uid = 0");
+ while ($proposal_data = db_fetch_object($proposal_q))
+ {
+ $proposal_rows[] = array(l($proposal_data->lab_title, 'lab_migration/show_proposal/' . $proposal_data->id), l('Apply', 'lab_migration/show_proposal/' . $proposal_data->id));
+ }
+
+ $proposal_header = array('Title of the Lab', 'Actions');
+ $return_html .= theme_table($proposal_header, $proposal_rows);
+ return $return_html;
+}
+
+function lab_migration_proposal_display($form_state)
+{
+ global $user;
+
+ $proposal_id = (int)arg(2);
+
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id);
+ $proposal_data = db_fetch_object($proposal_q);
+ if (!$proposal_data)
+ {
+ drupal_set_message("Invalid proposal.", 'error');
+ drupal_goto('');
+ }
+
+ $form['name'] = array(
+ '#type' => 'item',
+ '#value' => l($proposal_data->name_title . ' ' . $proposal_data->name, 'user/' . $proposal_data->uid),
+ '#title' => t('Name'),
+ );
+ $form['email_id'] = array(
+ '#type' => 'item',
+ '#value' => user_load($proposal_data->uid)->mail,
+ '#title' => t('Email'),
+ );
+ $form['contact_ph'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->contact_ph,
+ '#title' => t('Contact Phone No.'),
+ );
+ $form['department'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->department,
+ '#title' => t('Department/Branch'),
+ );
+ $form['university'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->university,
+ '#title' => t('University/Institute'),
+ );
+ $form['lab_title'] = array(
+ '#type' => 'item',
+ '#value' => $proposal_data->lab_title,
+ '#title' => t('Title of the Lab'),
+ );
+
+ $experiment_html = '';
+ $experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE proposal_id = %d", $proposal_id);
+ while ($experiment_data = db_fetch_object($experiment_q)) {
+ $experiment_html .= $experiment_data->title . "<br/>";
+ }
+ $form['experiment'] = array(
+ '#type' => 'item',
+ '#value' => $experiment_html,
+ '#title' => t('Experiment List'),
+ );
+
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => t('Apply for Solution')
+ );
+ return $form;
+}
+
+function lab_migration_proposal_display_submit($form_state, &$form_state)
+{
+ global $user;
+
+ $proposal_id = (int)arg(2);
+
+ $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $proposal_id);
+ $proposal_data = db_fetch_object($proposal_q);
+ if (!$proposal_data)
+ {
+ drupal_set_message("Invalid proposal.", 'error');
+ drupal_goto('lab_migration/open_proposal');
+ }
+ if ($proposal_data->solution_provider_uid != 0) {
+ drupal_set_message("Someone has already applied for solving this Lab.", 'error');
+ drupal_goto('lab_migration/open_proposal');
+ }
+
+ $solution_provider_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE solution_provider_uid = %d AND approval_status IN (0, 1, 2) AND solution_status IN (0, 1)", $user->uid);
+ if (db_fetch_object($solution_provider_q)) {
+ drupal_set_message("You have already applied for a solution. Please compelete that before applying for another solution.", 'error');
+ drupal_goto('lab_migration/open_proposal');
+ }
+
+ db_query("UPDATE {lab_migration_proposal} set solution_provider_uid = %d, solution_status = 0 WHERE id = %d", $user->uid, $proposal_id);
+ drupal_set_message("We have received your application. We will get back to you soon.", 'status');
+
+ /* sending email */
+ $email_to = $user->mail;
+ $param['solution_proposal_received']['proposal_id'] = $proposal_id;
+ $param['solution_proposal_received']['user_id'] = $user->uid;
+ if (!drupal_mail('lab_migration', 'solution_proposal_received', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ /* sending email */
+ $email_to = variable_get('lab_migration_emails', '');
+ if (!drupal_mail('lab_migration', 'solution_proposal_received', $email_to , language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
+ drupal_set_message('Error sending email message.', 'error');
+
+ drupal_goto('lab_migration/open_proposal');
+}
+