fields('lab_migration_solution');
$query->condition('approval_status', 0);
$pending_solution_q = $query->execute();
if (!$pending_solution_q) {
drupal_set_message(t('There are no pending code approvals.'), 'status');
return '';
}
$pending_solution_rows = array();
while ($pending_solution_data = $pending_solution_q->fetchObject()) {
/* get experiment data */
//$experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE id = %d", $pending_solution_data->experiment_id);
$query = db_select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $pending_solution_data->experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
/* get proposal data */
// $proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $experiment_data->proposal_id);
$query = db_select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
/* get solution provider details */
$solution_provider_user_name = '';
$user_data = user_load($proposal_data->solution_provider_uid);
if ($user_data) {
$solution_provider_user_name = $user_data->name;
} else {
$solution_provider_user_name = '';
}
/* setting table row information */
$pending_solution_rows[] = array(
$proposal_data->lab_title,
$experiment_data->title,
$proposal_data->name,
$solution_provider_user_name,
l('Edit', 'lab-migration/code-approval/approve/' . $pending_solution_data->id)
);
}
/* check if there are any pending solutions */
if (!$pending_solution_rows) {
drupal_set_message(t('There are no pending solutions'), 'status');
return '';
}
$header = array(
'Title of the Lab',
'Experiment',
'Proposer',
'Solution Provider',
'Actions'
);
//$output = theme_table($header, $pending_solution_rows);
$output = theme('table', array(
'header' => $header,
'rows' => $pending_solution_rows
));
return $output;
}
function lab_migration_code_approval_form($form, $form_state)
{
$solution_id = (int) arg(3);
/* get solution details */
//$solution_q = db_query("SELECT * FROM {lab_migration_solution} WHERE id = %d", $solution_id);
$query = db_select('lab_migration_solution');
$query->fields('lab_migration_solution');
$query->condition('id', $solution_id);
$solution_q = $query->execute();
$solution_data = $solution_q->fetchObject();
if (!$solution_data) {
drupal_set_message(t('Invalid solution selected.'), 'status');
drupal_goto('lab-migration/code-approval');
}
if ($solution_data->approval_status == 1) {
drupal_set_message(t('This solution has already been approved. Are you sure you want to change the approval status?'), 'error');
}
if ($solution_data->approval_status == 2) {
drupal_set_message(t('This solution has already been dis-approved. Are you sure you want to change the approval status?'), 'error');
}
/* get experiment data */
//xperiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE id = %d", $solution_data->experiment_id);
$query = db_select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $solution_data->experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
/* get proposal data */
//$proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $experiment_data->proposal_id);
$query = db_select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
/* get solution provider details */
$solution_provider_user_name = '';
$user_data = user_load($proposal_data->solution_provider_uid);
if ($user_data) {
$solution_provider_user_name = $user_data->name;
} else {
$solution_provider_user_name = '';
}
$form['#tree'] = TRUE;
$form['lab_title'] = array(
'#type' => 'item',
'#markup' => $proposal_data->lab_title,
'#title' => t('Title of the Lab')
);
$form['name'] = array(
'#type' => 'item',
'#markup' => $proposal_data->name,
'#title' => t('Contributor Name')
);
$form['experiment']['number'] = array(
'#type' => 'item',
'#markup' => $experiment_data->number,
'#title' => t('Experiment Number')
);
$form['experiment']['title'] = array(
'#type' => 'item',
'#markup' => $experiment_data->title,
'#title' => t('Title of the Experiment')
);
$form['back_to_list'] = array(
'#type' => 'item',
'#markup' => l('Back to Code Approval List', 'lab-migration/code-approval')
);
$form['code_number'] = array(
'#type' => 'item',
'#markup' => $solution_data->code_number,
'#title' => t('Code No')
);
$form['code_caption'] = array(
'#type' => 'item',
'#markup' => $solution_data->caption,
'#title' => t('Caption')
);
/* get solution files */
$solution_files_html = '';
//$solution_files_q = db_query("SELECT * FROM {lab_migration_solution_files} WHERE solution_id = %d ORDER BY id ASC", $solution_id);
$query = db_select('lab_migration_solution_files');
$query->fields('lab_migration_solution_files');
$query->condition('solution_id', $solution_id);
$query->orderBy('id', 'ASC');
$solution_files_q = $query->execute();
if ($solution_files_q) {
while ($solution_files_data = $solution_files_q->fetchObject()) {
$code_file_type = '';
switch ($solution_files_data->filetype) {
case 'S':
$code_file_type = 'Source';
break;
case 'R':
$code_file_type = 'Result';
break;
case 'X':
$code_file_type = 'Xcox';
break;
case 'U':
$code_file_type = 'Unknown';
break;
default:
$code_file_type = 'Unknown';
break;
}
$solution_files_html .= l($solution_files_data->filename, 'lab-migration/download/file/' . $solution_files_data->id) . ' (' . $code_file_type . ')' . '
';
}
}
/* get dependencies files */
//$dependency_q = db_query("SELECT * FROM {lab_migration_solution_dependency} WHERE solution_id = %d ORDER BY id ASC", $solution_id);
$query = db_select('lab_migration_solution_dependency');
$query->fields('lab_migration_solution_dependency');
$query->condition('solution_id', $solution_id);
$query->orderBy('id', 'ASC');
$dependency_q = $query->execute();
while ($dependency_data = $dependency_q->fetchObject()) {
//$dependency_files_q = db_query("SELECT * FROM {lab_migration_dependency_files} WHERE id = %d", $dependency_data->dependency_id);
$query = db_select('lab_migration_dependency_files');
$query->fields('lab_migration_dependency_files');
$query->condition('id', $dependency_data->dependency_id);
$dependency_files_q = $query->execute();
$dependency_files_data = $dependency_files_q->fetchObject();
$solution_file_type = 'Dependency file';
$solution_files_html .= l($dependency_files_data->filename, 'lab-migration/download/dependency/' . $dependency_files_data->id) . ' (' . 'Dependency' . ')' . '
';
}
$form['solution_files'] = array(
'#type' => 'item',
'#markup' => $solution_files_html,
'#title' => t('Solution')
);
$form['approved'] = array(
'#type' => 'radios',
'#options' => array(
'0' => 'Pending',
'1' => 'Approved',
'2' => 'Dis-approved (Solution will be deleted)'
),
'#title' => t('Approval'),
'#default_value' => $solution_data->approval_status
);
$form['message'] = array(
'#type' => 'textarea',
'#title' => t('Reason for dis-approval'),
'#attributes' => array(
'placeholder' => t('Enter reason for dis-approval'),
'cols' => 50,
'rows' => 4
),
'#states' => array(
'visible' => array(
':input[name="approved"]' => array(
'value' => "2"
)
)
)
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit')
);
$form['cancel'] = array(
'#type' => 'markup',
'#markup' => l(t('Cancel'), 'lab-migration/code-approval')
);
return $form;
}
function lab_migration_code_approval_form_validate($form, &$form_state)
{
if ($form_state['values']['approved'] == 2) {
if ($form_state['values']['message'] == "") {
form_set_error('message', t('Reason for dis-approval could not be empty'));
}
}
}
function lab_migration_code_approval_form_submit($form, &$form_state)
{
global $user;
$solution_id = (int) arg(3);
/* get solution details */
//$solution_q = db_query("SELECT * FROM {lab_migration_solution} WHERE id = %d", $solution_id);
$query = db_select('lab_migration_solution');
$query->fields('lab_migration_solution');
$query->condition('id', $solution_id);
$solution_q = $query->execute();
$solution_data = $solution_q->fetchObject();
if (!$solution_data) {
drupal_set_message(t('Invalid solution selected.'), 'status');
drupal_goto('lab-migration/code-approval');
}
/* get experiment data */
//$experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE id = %d", $solution_data->experiment_id);
$query = db_select('lab_migration_experiment');
$query->fields('lab_migration_experiment');
$query->condition('id', $solution_data->experiment_id);
$experiment_q = $query->execute();
$experiment_data = $experiment_q->fetchObject();
/* get proposal data */
//$proposal_q = db_query("SELECT * FROM {lab_migration_proposal} WHERE id = %d", $experiment_data->proposal_id);
$query = db_select('lab_migration_proposal');
$query->fields('lab_migration_proposal');
$query->condition('id', $experiment_data->proposal_id);
$proposal_q = $query->execute();
$proposal_data = $proposal_q->fetchObject();
$user_data = user_load($proposal_data->uid);
$solution_prove_user_data = user_load($proposal_data->solution_provider_uid);
// **** TODO **** : del_lab_pdf($proposal_data->id);
if ($form_state['values']['approved'] == "0") {
$query = "UPDATE {lab_migration_solution} SET approval_status = 0, approver_uid = :approver_uid, approval_date = :approval_date WHERE id = :solution_id";
$args = array(
":approver_uid" => $user->uid,
":approval_date" => time(),
":solution_id" => $solution_id
);
db_query($query, $args);
/* sending email */
$email_to = $user_data->mail . ', ' . variable_get('lab_migration_emails', '');
$param['solution_pending']['solution_id'] = $solution_id;
$param['solution_pending']['user_id'] = $user_data->uid;
if (!drupal_mail('lab_migration', 'solution_pending', $email_to, language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
drupal_set_message('Error sending email message.', 'error');
} else if ($form_state['values']['approved'] == "1") {
$query = "UPDATE {lab_migration_solution} SET approval_status = 1, approver_uid = :approver_uid, approval_date = :approval_date WHERE id = :solution_id";
$args = array(
":approver_uid" => $user->uid,
":approval_date" => time(),
":solution_id" => $solution_id
);
db_query($query, $args);
/* sending email */
$email_to = $user_data->mail . ', ' . variable_get('lab_migration_emails', '');
$param['solution_approved']['solution_id'] = $solution_id;
$param['solution_approved']['user_id'] = $user_data->uid;
if (!drupal_mail('lab_migration', 'solution_approved', $email_to, language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
drupal_set_message('Error sending email message.', 'error');
} else if ($form_state['values']['approved'] == "2") {
if (lab_migration_delete_solution($solution_id)) {
/* sending email */
$email_to = $user_data->mail . ', ' . variable_get('lab_migration_emails', '');
$param['solution_disapproved']['experiment_number'] = $experiment_data->number;
$param['solution_disapproved']['experiment_title'] = $experiment_data->title;
$param['solution_disapproved']['solution_number'] = $solution_data->code_number;
$param['solution_disapproved']['solution_caption'] = $solution_data->caption;
$param['solution_disapproved']['user_id'] = $user_data->uid;
$param['solution_disapproved']['message'] = $form_state['values']['message'];
if (!drupal_mail('lab_migration', 'solution_disapproved', $email_to, language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
drupal_set_message('Error sending email message.', 'error');
} else {
drupal_set_message('Error disapproving and deleting solution. Please contact administrator.', 'error');
}
}
drupal_set_message('Updated successfully.', 'status');
drupal_goto('lab-migration/code-approval');
}