ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
assClozeGapCombination Class Reference
+ Collaboration diagram for assClozeGapCombination:

Public Member Functions

 loadFromDb ($question_id)
 
 getCleanCombinationArray ($question_id)
 
 saveGapCombinationToDb ($question_id, $gap_combinations, $gap_values)
 
 combinationExistsForQid ($question_id)
 
 getGapsWhichAreUsedInCombination ($question_id)
 
 getMaxPointsForCombination ($question_id, $combination_id=-1)
 
 getBestSolutionCombination ($question_id)
 

Static Public Member Functions

static importGapCombinationToDb ($question_id, $gap_combinations)
 
static clearGapCombinationsFromDb ($question_id)
 

Detailed Description

Definition at line 3 of file class.assClozeGapCombination.php.

Member Function Documentation

◆ clearGapCombinationsFromDb()

static assClozeGapCombination::clearGapCombinationsFromDb (   $question_id)
static

Definition at line 147 of file class.assClozeGapCombination.php.

References $DIC, and $ilDB.

Referenced by assClozeTestImport\fromXML().

148  {
149  global $DIC;
150  $ilDB = $DIC['ilDB'];
151 
152  $ilDB->manipulateF(
153  'DELETE FROM qpl_a_cloze_combi_res WHERE question_fi = %s',
154  array( 'integer' ),
155  array( $question_id )
156  );
157  }
global $DIC
Definition: saml.php:7
global $ilDB
+ Here is the caller graph for this function:

◆ combinationExistsForQid()

assClozeGapCombination::combinationExistsForQid (   $question_id)

Definition at line 159 of file class.assClozeGapCombination.php.

References $DIC, $ilDB, and $result.

160  {
161  global $DIC;
162  $ilDB = $DIC['ilDB'];
163 
164  $result = $ilDB->queryF(
165  'SELECT * FROM qpl_a_cloze_combi_res WHERE question_fi = %s ORDER BY gap_fi ASC',
166  array('integer'),
167  array($question_id)
168  );
169  if ($result->numRows() > 0) {
170  return true;
171  } else {
172  return false;
173  }
174  }
$result
global $DIC
Definition: saml.php:7
global $ilDB

◆ getBestSolutionCombination()

assClozeGapCombination::getBestSolutionCombination (   $question_id)

Definition at line 230 of file class.assClozeGapCombination.php.

References $data, $DIC, $ilDB, $lng, and $result.

231  {
232  global $DIC;
233  $ilDB = $DIC['ilDB'];
234  $lng = $DIC['lng'];
235 
236  $result = $ilDB->queryF(
237  'SELECT * FROM qpl_a_cloze_combi_res WHERE question_fi = %s AND best_solution=1 ORDER BY gap_fi',
238  array('integer'),
239  array($question_id)
240  );
241  if ($result->numRows() > 0) {
242  $return_string = '<br>';
243  $combination_id = 0;
244  $points = 0;
245  while ($data = $ilDB->fetchAssoc($result)) {
246  if ($combination_id != $data['combination_id']) {
247  $combination_id = $data['combination_id'];
248  $return_string .= $points;
249  $return_string .= '<br>';
250  $return_string .= $data['answer'] . '|';
251  } else {
252  $return_string .= $data['answer'] . '|';
253  }
254 
255  $points = ' (' . $data['points'] . ' ' . $lng->txt('points') . ')';
256  }
257  return rtrim($return_string, '|') . $points;
258  } else {
259  return 0;
260  }
261  }
$result
global $DIC
Definition: saml.php:7
$lng
global $ilDB
$data
Definition: bench.php:6

◆ getCleanCombinationArray()

assClozeGapCombination::getCleanCombinationArray (   $question_id)

Definition at line 50 of file class.assClozeGapCombination.php.

References $key.

51  {
52  $assClozeGapCombinationObj = new assClozeGapCombination();
53  $combination_from_db = $assClozeGapCombinationObj->loadFromDb($question_id);
54  $clean_array = array();
55  foreach ($combination_from_db as $key => $value) {
56  $clean_array[$value['cid']][$value['row_id']][$value['gap_fi']]['answer'] = $value['answer'];
57  $clean_array[$value['cid']][$value['row_id']]['points'] = $value['points'];
58  $clean_array[$value['cid']][$value['row_id']][$value['gap_fi']]['type'] = $value['type'];
59  }
60  return $clean_array;
61  }
$key
Definition: croninfo.php:18

◆ getGapsWhichAreUsedInCombination()

assClozeGapCombination::getGapsWhichAreUsedInCombination (   $question_id)

Definition at line 176 of file class.assClozeGapCombination.php.

References $data, $DIC, $ilDB, and $result.

177  {
178  global $DIC;
179  $ilDB = $DIC['ilDB'];
180 
181  $result = $ilDB->queryF(
182  'SELECT gap_fi, combination_id FROM ' . $ilDB->quoteIdentifier('qpl_a_cloze_combi_res') . ' WHERE question_fi = %s GROUP BY gap_fi, combination_id',
183  array('integer'),
184  array($question_id)
185  );
186  $gaps = array();
187  if ($result->numRows() > 0) {
188  while ($data = $ilDB->fetchAssoc($result)) {
189  $gaps[$data['gap_fi']] = $data['combination_id'];
190  }
191  }
192  return $gaps;
193  }
$result
global $DIC
Definition: saml.php:7
global $ilDB
$data
Definition: bench.php:6

◆ getMaxPointsForCombination()

assClozeGapCombination::getMaxPointsForCombination (   $question_id,
  $combination_id = -1 
)

Definition at line 195 of file class.assClozeGapCombination.php.

References $data, $DIC, $ilDB, and $result.

196  {
197  global $DIC;
198  $ilDB = $DIC['ilDB'];
199 
200  if ($combination_id == -1) {
201  $result = $ilDB->queryF(
202  'SELECT combination_id, points FROM qpl_a_cloze_combi_res WHERE question_fi = %s AND best_solution=1 GROUP BY combination_id, points',
203  array('integer'),
204  array($question_id)
205  );
206  if ($result->numRows() > 0) {
207  $points = 0;
208  while ($data = $ilDB->fetchAssoc($result)) {
209  $points += $data['points'];
210  }
211  return $points;
212  }
213  } else {
214  $result = $ilDB->queryF(
215  'SELECT combination_id, points FROM qpl_a_cloze_combi_res WHERE question_fi = %s AND combination_id = %s AND best_solution=1 GROUP BY combination_id, points',
216  array('integer', 'integer'),
217  array($question_id, $combination_id)
218  );
219  if ($result->numRows() > 0) {
220  $points = 0;
221  while ($data = $ilDB->fetchAssoc($result)) {
222  $points += $data['points'];
223  }
224  return $points;
225  }
226  }
227  return 0;
228  }
$result
global $DIC
Definition: saml.php:7
global $ilDB
$data
Definition: bench.php:6

◆ importGapCombinationToDb()

static assClozeGapCombination::importGapCombinationToDb (   $question_id,
  $gap_combinations 
)
static

Definition at line 111 of file class.assClozeGapCombination.php.

References $DIC, $ilDB, $key, and $row.

Referenced by assClozeTestImport\fromXML().

112  {
113  global $DIC;
114  $ilDB = $DIC['ilDB'];
115 
116  foreach ($gap_combinations as $key => $row) {
117  if (is_object($row)) {
118  $row = get_object_vars($row);
119  }
120  if ($question_id != -1) {
121  $ilDB->manipulateF(
122  'INSERT INTO qpl_a_cloze_combi_res
123  (combination_id, question_fi, gap_fi, row_id, answer, points, best_solution) VALUES (%s, %s, %s, %s, %s, %s, %s)',
124  array(
125  'integer',
126  'integer',
127  'integer',
128  'integer',
129  'text',
130  'float',
131  'integer'
132  ),
133  array(
134  $row['cid'],
135  $question_id,
136  $row['gap_fi'],
137  $row['row_id'],
138  $row['answer'],
139  $row['points'],
140  $row['best_solution']
141  )
142  );
143  }
144  }
145  }
global $DIC
Definition: saml.php:7
$row
global $ilDB
$key
Definition: croninfo.php:18
+ Here is the caller graph for this function:

◆ loadFromDb()

assClozeGapCombination::loadFromDb (   $question_id)

Definition at line 5 of file class.assClozeGapCombination.php.

References $data, $DIC, $ilDB, and $result.

6  {
7  global $DIC;
8  $ilDB = $DIC['ilDB'];
9  $result = $ilDB->queryF(
10  '
11  SELECT combinations.combination_id,
12  combinations.gap_fi,
13  combinations.answer,
14  combinations.row_id,
15  combinations.points,
16  combinations.best_solution,
17  combinations.question_fi,
18  cloze.cloze_type
19  FROM qpl_a_cloze_combi_res AS combinations
20  INNER JOIN qpl_a_cloze AS cloze
21  WHERE combinations.question_fi = cloze.question_fi
22  AND combinations.gap_fi = cloze.gap_id
23  AND combinations.question_fi = %s
24  ORDER BY combination_id, row_id, gap_fi ASC
25  ',
26  array('integer'),
27  array($question_id)
28  );
29 
30  $return_array = array();
31  while ($data = $ilDB->fetchAssoc($result)) {
32  if (isset($return_array[$data['combination_id'] . '::' . $data['gap_fi']])) {
33  continue;
34  }
35 
36  $return_array[$data['combination_id'] . '::' . $data['row_id'] . '::' . $data['gap_fi']] = array(
37  'cid' => $data['combination_id'],
38  'gap_fi' => $data['gap_fi'],
39  'answer' => $data['answer'],
40  'points' => $data['points'],
41  'row_id' => $data['row_id'],
42  'type' => $data['cloze_type'],
43  'best_solution' => $data['best_solution']
44  );
45  }
46 
47  return array_values($return_array);
48  }
$result
global $DIC
Definition: saml.php:7
global $ilDB
$data
Definition: bench.php:6

◆ saveGapCombinationToDb()

assClozeGapCombination::saveGapCombinationToDb (   $question_id,
  $gap_combinations,
  $gap_values 
)

Definition at line 63 of file class.assClozeGapCombination.php.

References $DIC, $i, and $ilDB.

64  {
65  global $DIC;
66  $ilDB = $DIC['ilDB'];
67  $best_solutions = array();
68  for ($i = 0; $i < count($gap_combinations['points']); $i++) {
69  $highest_points = 0;
70  for ($j = 0; $j < count($gap_combinations['points'][$i]); $j++) {
71  if ($highest_points < $gap_combinations['points'][$i][$j]) {
72  $highest_points = $gap_combinations['points'][$i][$j];
73  $best_solutions[$i] = $j;
74  }
75  }
76  }
77  for ($i = 0; $i < count($gap_values); $i++) {
78  for ($j = 0; $j < count($gap_values[$i]); $j++) {
79  for ($k = 0; $k < count($gap_values[$i][$j]); $k++) {
80  if ($best_solutions[$i] == $j) {
81  $best_solution = 1;
82  } else {
83  $best_solution = 0;
84  }
85  $ilDB->manipulateF(
86  'INSERT INTO qpl_a_cloze_combi_res
87  (combination_id, question_fi, gap_fi, row_id, answer, points, best_solution) VALUES (%s, %s, %s, %s, %s, %s, %s)',
88  array(
89  'integer',
90  'integer',
91  'integer',
92  'integer',
93  'text',
94  'float',
95  'integer'
96  ),
97  array(
98  $i,
99  $question_id,
100  $gap_combinations['select'][$i][$k],
101  $j,
102  $gap_values[$i][$j][$k],
103  $gap_combinations['points'][$i][$j],
104  $best_solution
105  )
106  );
107  }
108  }
109  }
110  }
global $DIC
Definition: saml.php:7
global $ilDB
$i
Definition: disco.tpl.php:19

The documentation for this class was generated from the following file: