a46840b832afbc0dbbeb7fed9b86bd49d794c79b
[atutor.git] / mods / certify / certify_functions.php
1 <?php
2
3 function getCertificateProgress($member_id, $certify_id) {
4
5         global $db;
6         
7         $certificate = array();
8         $progress = 0;
9
10 // Fetch associated tests
11
12         $sql =  'SELECT '.TABLE_PREFIX.'certify_tests.*, '.TABLE_PREFIX.'tests.* FROM '.TABLE_PREFIX.'certify_tests ';
13         $sql .= 'INNER JOIN '.TABLE_PREFIX.'tests ON '.TABLE_PREFIX.'certify_tests.test_id = '.TABLE_PREFIX.'tests.test_id ';
14         $sql .= "WHERE ".TABLE_PREFIX."certify_tests.certify_id=".$certify_id;
15         $result = mysql_query($sql, $db) or die(mysql_error() . " - " . $sql);
16         
17         $certificate['tests'] = array();
18         while( $row = mysql_fetch_assoc($result) ) {
19                 $certificate['tests'][$row['test_id']] = array();
20                 $certificate['tests'][$row['test_id']]['passscore'] = $row['passscore'];
21                 $certificate['tests'][$row['test_id']]['passpercent'] = $row['passpercent'];
22                 $certificate['tests'][$row['test_id']]['out_of'] = $row['out_of'];
23                 $certificate['tests'][$row['test_id']]['final_score'] = 0;
24
25                 // Convert percent scored tests to scores
26                 if ($certificate['tests'][$row['test_id']]['passpercent'] > 0) {
27                         $certificate['tests'][$row['test_id']]['passscore'] = $certificate['tests'][$row['test_id']]['out_of'] * $certificate['tests'][$row['test_id']]['passpercent'] / 100;
28                         $certificate['tests'][$row['test_id']]['passpercent'] = 0;
29                 }
30         }
31
32
33 // Calculate new scores for each test
34
35         $sql =  '
36                 SELECT '.TABLE_PREFIX.'certify_tests.test_id, '.TABLE_PREFIX.'tests_results.* 
37                 FROM '.TABLE_PREFIX.'certify_tests
38                 RIGHT JOIN '.TABLE_PREFIX.'tests_results ON '.TABLE_PREFIX.'tests_results.test_id = '.TABLE_PREFIX.'certify_tests.test_id
39                 WHERE '.TABLE_PREFIX.'tests_results.member_id = '.$member_id.'
40                 AND '.TABLE_PREFIX.'certify_tests.certify_id = '.$certify_id.'
41         ';
42
43         $result = mysql_query($sql, $db) or die(mysql_error() . "<br>" . $sql);
44         //echo '<code style="background-color:white;"><pre>'.$sql.'</pre></code>';
45         while( $row = mysql_fetch_assoc($result) ) {
46                 if (!isset($certificate['tests'][$row['test_id']]['final_score']) || $certificate['tests'][$row['test_id']]['final_score'] < $row['final_score'])
47                         $certificate['tests'][$row['test_id']]['final_score'] = $row['final_score'];
48
49         }
50
51 // Calculate new percentages for certificate.
52
53
54         $certificate['available_score'] = 0;
55         $certificate['achieved_score'] = 0;
56
57         if (isset($certificate['tests'])) {
58                 foreach ($certificate['tests'] as $certify_testid => &$test) {
59                         if ($test['final_score'] >= $test['passscore']) {
60                                 $certificate['achieved_score'] += $test['passscore'];
61                         } else {
62                                 $certificate['achieved_score'] += $test['final_score'];
63                         }
64                         $certificate['available_score'] += $test['passscore'];
65                         
66                         if (!isset($test['final_score'])) {
67                                 
68                         }
69
70                 }
71         }
72         
73
74         if ($certificate['available_score'] != 0) {
75                 $certificate['progress'] = $certificate['achieved_score'] * 100 / $certificate['available_score'];
76         } else {
77                 $certificate['progress'] = 0;
78         }
79
80         return $certificate['progress'];
81 }
82
83
84
85
86
87
88 ?>