-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidations.php
113 lines (100 loc) · 4.8 KB
/
validations.php
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
/**
*
* Validations operations.
*
*
* @package mod-project
* @category mod
* @author Yann Ducruy (yann[dot]ducruy[at]gmail[dot]com). Contact me if needed
* @date 12/06/2015
* @version 3.2
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
*
*/
/// Preconditions
if (empty($project->projectusesrequs) && empty($project->projectusesspecs)){
echo $OUTPUT->notification('Validation needs either requirements or specifications to be used', $CFG->wwwroot.'/mod/project/view.php?id='.$cm->id);
}
/// Controller
if ($work == 'new') {
// close all unclosed
if ($unclosedrecords = $DB->get_records_select('project_valid_session', " projectid = '$project->id' AND groupid = $currentGroupId AND dateclosed = 0 ")){
foreach($unclosedrecords as $unclosed){
$unclosed->dateclosed = time();
$DB->update_record('project_valid_session', $unclosed);
}
}
$validation = new StdClass;
$validation->groupid = $currentGroupId;
$validation->projectid = $project->id;
$validation->createdby = $USER->id;
$validation->datecreated = time();
$validation->dateclosed = 0;
// pre add validation session record
$validation->id = $DB->insert_record('project_valid_session', $validation);
//add_to_log($course->id, 'project', 'validationsession', "view.php?id={$cm->id}&view=validations&group={$currentGroupId}", 'create', $cm->id);
$validation->untracked = 0;
$validation->refused = 0;
$validation->missing = 0;
$validation->buggy = 0;
$validation->toenhance = 0;
$validation->accepted = 0;
$validation->regressions = 0;
// check if follow up so we need to copy previous test results as start
if (optional_param('followup', false, PARAM_BOOL)){
$lastsessiondate = $DB->get_field_select('project_valid_session', 'MAX(datecreated)', " projectid = ? AND groupid = ? ", array($project->id, $currentGroupId));
$lastsession = $DB->get_record_select('project_valid_session', " datecreated = $lastsessiondate AND projectid = ? AND groupid = ? ", array($project->id, $currentGroupId));
// copy all states
if ($states = $DB->get_records('project_valid_state', array('validationsessionid' => $lastsession->id))){
foreach($states as $state){
$state->validationsessionid = $validation->id;
$DB->insert_record('project_valid_state', $state);
$validation->untracked += ($state->status == 'UNTRACKED') ? 1 : 0 ;
$validation->refused += ($state->status == 'REFUSED') ? 1 : 0 ;
$validation->missing += ($state->status == 'MISSING') ? 1 : 0 ;
$validation->buggy += ($state->status == 'BUGGY') ? 1 : 0 ;
$validation->toenhance += ($state->status == 'TOENHANCE') ? 1 : 0 ;
$validation->accepted += ($state->status == 'ACCEPTED') ? 1 : 0 ;
$validation->regressions += ($state->status == 'REGRESSION') ? 1 : 0 ;
}
}
} else {
if (@$project->projectusesrequs){
$items = $DB->count_records_select('project_requirement', " projectid = ? AND groupid = ? ", array($project->id, $currentGroupId));
} elseif (@$project->projectusesspecs) {
$items = $DB->count_records_select('project_specification', " projectid = ? AND groupid = ? ", array($project->id, $currentGroupId));
} else {
print_error('errornotpossible', 'project');
}
$validation->untracked = $items;
}
// second stage
$DB->update_record('project_valid_session', $validation);
}
elseif ($work == 'close') {
$validation = new StdClass;
$validation->id = required_param('validid', PARAM_INT);
$validation->dateclosed = time();
$res = $DB->update_record('project_valid_session', $validation);
//add_to_log($course->id, 'project', 'validationsession', "view.php?id={$cm->id}&view=validations&group={$currentGroupId}", 'close', $cm->id);
}
elseif ($work == 'dodelete') {
$validid = required_param('validid', PARAM_INT);
// delete all related records
$DB->delete_records('project_valid_state', array('validationsessionid' => $validid));
$DB->delete_records('project_valid_session', array('id' => $validid));
//add_to_log($course->id, 'project', 'validationsession', "view.php?id={$cm->id}&view=requirements&group={$currentGroupId}", 'delete', $cm->id);
}
/// view
echo $pagebuffer;
project_print_validations($project, $currentGroupId, 0, $cm->id);
$createvalidationstr = get_string('createvalidationsession', 'project');
$copyvalidationstr = get_string('copyvalidationsession', 'project');
//if (has_capability('mod/project:managevalidations', context_module::instance($cm->id))){
echo '<p><center>';
echo "<a href=\"{$CFG->wwwroot}/mod/project/view.php?id={$cm->id}&view=validations&work=new\">$createvalidationstr</a>";
echo "- <a href=\"{$CFG->wwwroot}/mod/project/view.php?id={$cm->id}&view=validations&work=new&followup=1\">$copyvalidationstr</a>";
echo '</center></p>';
//}
?>