diff options
Diffstat (limited to 'general_deletion.inc')
-rwxr-xr-x | general_deletion.inc | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/general_deletion.inc b/general_deletion.inc new file mode 100755 index 0000000..ca584cb --- /dev/null +++ b/general_deletion.inc @@ -0,0 +1,190 @@ +<?php +/******************************************************************************/ +/****************************** DELETION FUNCTIONS ****************************/ +/******************************************************************************/ +function circuit_simulation_delete_abstract_file($abstract_id) +{ + $status = TRUE; + $root_path = circuit_simulation_path(); + $abstract_q = db_query("SELECT * from esim_circuit_simulation_proposal dfp +LEFT JOIN esim_circuit_simulation_submitted_abstracts dfsa ON dfp.id = dfsa.proposal_id +WHERE dfsa.id = :abstract_id", array( + ":abstract_id" => $abstract_id + )); + $abstract_data = $abstract_q->fetchObject(); + if (!$abstract_data) + { + drupal_set_message('Invalid circuit simulation project abstract.', 'error'); + return FALSE; + } //!$abstract_data + /* deleting solutions */ + $query = db_select('esim_circuit_simulation_submitted_abstracts_file'); + $query->fields('esim_circuit_simulation_submitted_abstracts_file'); + $query->condition('submitted_abstract_id', $abstract_id); + $abstract_f_q = $query->execute(); + $delete_project_folder = FALSE; + while ($abstract_f_data = $abstract_f_q->fetchObject()) + { + $delete_project_folder = TRUE; + if (!_circuit_simulation_delete_abstract_file($abstract_f_data->id)) + $status = FALSE; + } //$abstract_f_data = $abstract_f_q->fetchObject() + if (!$delete_project_folder) + { + return TRUE; + } //!$delete_project_folder + if ($status) + { + $dir_path_udc = $root_path . $abstract_f_data->directory_name . '/user_defined_compound'; + if (is_dir($dir_path_udc)) + { + unlink($root_path . $abstract_f_data->directory_name . '/' . $abstract_f_data->user_defined_compound_filepath); + $res = rmdir($dir_path_udc); + if (!$res) + { + drupal_set_message(t('Error in deleting user defiend folder !folder', array( + '!folder' => $abstract_f_data->directory_name + )), 'error'); + /* sending email to admins */ + $email_to = variable_get('esim_circuit_simulation_emails', ''); + $from = variable_get('esim_circuit_simulation_from_email', ''); + $bcc = ""; + $cc = variable_get('esim_circuit_simulation_cc_emails', ''); + $params['standard']['subject'] = "[ERROR] Error deleting experiment folder"; + $params['standard']['body'] = "Error deleting folder " . $dir_path; + $params['standard']['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('circuit_simulation', 'standard', $email_to, language_default(), $params, $from, TRUE)) + drupal_set_message('Error sending email message.', 'error'); + return FALSE; + } //!$res + else + { + return TRUE; + } + } //is_dir($dir_path_udc) + } //$status + return FALSE; +} +function circuit_simulation_abstract_delete_project($proposal_id) +{ + $status = TRUE; + $root_path = circuit_simulation_path(); + //$proposal_q = db_query("SELECT * FROM {circuit_simulation_proposal} WHERE id = %d", $lab_id); + $query = db_select('esim_circuit_simulation_proposal'); + $query->fields('esim_circuit_simulation_proposal'); + $query->condition('id', $proposal_id); + $proposal_q = $query->execute(); + $proposal_data = $proposal_q->fetchObject(); + if (!$proposal_data) + { + drupal_set_message('Invalid Flowsheeting Project.', 'error'); + return FALSE; + } //!$proposal_data + $query = db_select('esim_circuit_simulation_submitted_abstracts'); + $query->fields('esim_circuit_simulation_submitted_abstracts'); + $query->condition('proposal_id', $proposal_data->id); + $abstract_q = $query->execute(); + while ($abstract_data = $abstract_q->fetchObject()) + { + if (!circuit_simulation_delete_abstract_file($abstract_data->id)) + { + $status = FALSE; + } //!circuit_simulation_delete_abstract_file($abstract_data->id) + } //$abstract_data = $abstract_q->fetchObject() + db_delete('esim_circuit_simulation_submitted_abstracts')->condition('proposal_id', $proposal_data->id)->execute(); + $dir_path_udc = $root_path . $proposal_data->directory_name . '/user_defined_compound'; + if (is_dir($dir_path_udc)) + { + unlink($root_path . $proposal_data->directory_name . '/' . $proposal_data->user_defined_compound_filepath); + $res = rmdir($dir_path_udc); + } //is_dir($dir_path_udc) + $dir_main_path = $root_path . $proposal_data->directory_name; + if (is_dir($dir_main_path)) + { + $res_main = rmdir($dir_main_path); + } //is_dir($dir_main_path) + db_delete('esim_circuit_simulation_proposal')->condition('id', $proposal_data->id)->execute(); + return $status; +} +function _circuit_simulation_delete_abstract_file($abstract_id) +{ + global $user; + $root_path = circuit_simulation_path(); + $query = db_select('esim_circuit_simulation_proposal'); + $query->fields('esim_circuit_simulation_proposal'); + $query->condition('id', $abstract_id); + $abstract_q = $query->execute(); + $abstract_data = $abstract_q->fetchObject(); + $abstract_q = db_query("SELECT * from esim_circuit_simulation_proposal dfp +LEFT JOIN esim_circuit_simulation_submitted_abstracts dfsa ON dfp.id = dfsa.proposal_id +WHERE dfsa.id = :abstract_id", array( + ":abstract_id" => $abstract_id + )); + $abstract_data = $abstract_q->fetchObject(); + if (!$abstract_data) + { + drupal_set_message('Invalid circuit simulation project abstract.', 'error'); + return FALSE; + } //!$abstract_data + /* deleting abstract files */ + $query = db_select('esim_circuit_simulation_submitted_abstracts_file'); + $query->fields('esim_circuit_simulation_submitted_abstracts_file'); + $query->condition('submitted_abstract_id', $abstract_id); + $abstract_f_q = $query->execute(); + while ($abstract_f_data = $abstract_f_q->fetchObject()) + { + if (!file_exists($root_path . $abstract_data->directory_name . '/' . $abstract_f_data->filepath)) + { + $status = FALSE; + drupal_set_message(t('Error deleting !file. File does not exists.', array( + '!file' => $abstract_data->directory_name . '/' . $abstract_f_data->filepath + )), 'error'); + continue; + } //!file_exists($root_path . $abstract_data->directory_name . '/' . $abstract_f_data->filepath) + /* removing solution file */ + if (!unlink($root_path . $abstract_data->directory_name . '/' . $abstract_f_data->filepath)) + { + $status = FALSE; + drupal_set_message(t('Error deleting !file', array( + '!file' => $abstract_data->directory_name . '/' . $abstract_f_data->filepath + )), 'error'); + /* sending email to admins */ + $from = variable_get('esim_circuit_simulation_from_email', ''); + $bcc = variable_get('esim_circuit_simulation_emails', ''); + $cc = variable_get('esim_circuit_simulation_cc_emails', ''); + $params['standard']['subject'] = "[ERROR] Error deleting example file"; + $params['standard']['body'] = "Error deleting solution files by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . " : + file id : " . $abstract_data->id . " + file path : " . $abstract_data->directory_name . '/' . $abstract_f_data->filepath; + $params['standard']['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('circuit_simulation', 'standard', $email_to, language_default(), $params, $from, TRUE)) + drupal_set_message('Error sending email message.', 'error'); + } //!unlink($root_path . $abstract_data->directory_name . '/' . $abstract_f_data->filepath) + else + { + /* deleting example files database entries */ + db_delete('esim_circuit_simulation_submitted_abstracts_file')->condition('id', $abstract_f_data->id)->execute(); + } + } //$abstract_f_data = $abstract_f_q->fetchObject() + if (!$status) + { + return FALSE; + } //!$status + return $status; +} |