1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<?php
/******************************************************************************/
/****************************** DELETION FUNCTIONS ****************************/
/******************************************************************************/
function delete_solution($solution_id)
{
global $user;
$root_path = lab_migration_path();
$status = TRUE;
$solution_q = db_query("SELECT * FROM {lab_migration_solution} WHERE id = %d", $solution_id);
$solution_data = db_fetch_object($solution_q);
if (!$solution_data)
{
drupal_set_message(t('Invalid solution.'), 'error');
return FALSE;
}
$experiment_q = db_query("SELECT * FROM {lab_migration_experiment} WHERE id = %d", $solution_data->experiment_id);
$experiment_data = db_fetch_object($experiment_q);
if (!$experiment_data)
{
drupal_set_message(t('Invalid experiment.'), 'error');
return FALSE;
}
/* deleting solution files */
$solution_files_q = db_query("SELECT * FROM {lab_migration_solution_files} WHERE solution_id = %d", $solution_id);
while ($solution_files_data = db_fetch_object($solution_files_q))
{
if (!file_exists($root_path . $solution_files_data->filepath))
{
$status = FALSE;
drupal_set_message(t('Error deleting !file. File does not exists.', array('!file' => $solution_files_data->filepath)), 'error');
continue;
}
/* removing solution file */
if (!unlink($root_path . $solution_files_data->filepath))
{
$status = FALSE;
drupal_set_message(t('Error deleting !file', array('!file' => $solution_files_data->filepath)), 'error');
/* sending email to admins */
$email_to = variable_get('lab_migration_emails', '');
$param['standard']['subject'] = "[ERROR] Error deleting example file";
$param['standard']['body'] = "Error deleting solution files by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . " :
solution id : " . $solution_id . "
file id : " . $solution_files_data->id . "
file path : " . $solution_files_data->filepath;
if (!drupal_mail('lab_migration', 'standard', $email_to, language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
drupal_set_message('Error sending email message.', 'error');
} else {
/* deleting example files database entries */
db_query("DELETE FROM {lab_migration_solution_files} WHERE id = %d", $solution_files_data->id);
}
}
if (!$status)
return FALSE;
/* removing code folder */
$ex_path = $experiment_data->proposal_id . '/EXP' . $experiment_data->number . '/CODE' . $solution_data->code_number;
$dir_path = $root_path . $ex_path;
if (is_dir($dir_path))
{
if (!rmdir($dir_path))
{
drupal_set_message(t('Error deleting folder !folder', array('!folder' => $dir_path)), 'error');
/* sending email to admins */
$email_to = variable_get('lab_migration_emails', '');
$param['standard']['subject'] = "[ERROR] Error deleting folder";
$param['standard']['body'] = "Error deleting folder " . $dir_path . " by " . $user->uid . " at " . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if (!drupal_mail('lab_migration', 'standard', $email_to, language_default(), $param, variable_get('lab_migration_from_email', NULL), TRUE))
drupal_set_message('Error sending email message.', 'error');
return FALSE;
}
} else {
drupal_set_message(t('Cannot delete solution folder. !folder does not exists.', array('!folder' => $dir_path)), 'error');
return FALSE;
}
/* deleting solution dependency and solution database entries */
db_query("DELETE FROM {lab_migration_solution_dependency} WHERE solution_id = %d", $solution_id);
db_query("DELETE FROM {lab_migration_solution} WHERE id = %d", $solution_id);
return $status;
}
|