ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilSurveyEvaluationResults.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
12 {
16  protected $lng;
17 
18  protected $question; // [SurveyQuestion]
19  protected $users_answered; // [int]
20  protected $users_skipped; // [int]
21  protected $mode_value; // [int]
22  protected $mode_nr_of_selections; // [int]
23  protected $arithmetic_mean; // [float]
24  protected $median; // [string|float]
25  protected $variables = array(); // [array]
26  protected $answers = array(); // [array]
27 
28  public function __construct(SurveyQuestion $a_question)
29  {
30  global $DIC;
31 
32  $this->lng = $DIC->language();
33  $this->question = $a_question;
34  }
35 
36  public function getQuestion()
37  {
38  return $this->question;
39  }
40 
41  public function setUsersAnswered($a_value)
42  {
43  $this->users_answered = (int) $a_value;
44  }
45 
46  public function getUsersAnswered()
47  {
48  return $this->users_answered;
49  }
50 
51  public function setUsersSkipped($a_value)
52  {
53  $this->users_skipped = (int) $a_value;
54  }
55 
56  public function getUsersSkipped()
57  {
58  return $this->users_skipped;
59  }
60 
61  public function setMode($a_value, $a_nr_of_selections)
62  {
63  $this->mode_value = is_array($a_value)
64  ? $a_value
65  : trim($a_value);
66  $this->mode_nr_of_selections = (int) $a_nr_of_selections;
67  }
68 
69  public function getModeValue()
70  {
71  return $this->mode_value;
72  }
73 
74  public function getModeValueAsText()
75  {
76  if ($this->mode_value === null) {
77  return;
78  }
79 
80  $res = array();
81 
82  $mvalues = $this->mode_value;
83  if (!is_array($mvalues)) {
84  $mvalues = array($mvalues);
85  }
86  sort($mvalues, SORT_NUMERIC);
87  foreach ($mvalues as $value) {
88  $res[] = $this->getScaleText($value);
89  }
90 
91  return implode(", ", $res);
92  }
93 
94  public function getModeNrOfSelections()
95  {
97  }
98 
99  public function setMean($a_mean)
100  {
101  $this->arithmetic_mean = (float) $a_mean;
102  }
103 
104  public function getMean()
105  {
106  return $this->arithmetic_mean;
107  }
108 
109  public function setMedian($a_value)
110  {
111  $this->median = is_array($a_value)
112  ? $a_value
113  : trim($a_value);
114  }
115 
116  public function getMedian()
117  {
118  return $this->median;
119  }
120 
121  public function getMedianAsText()
122  {
123  $lng = $this->lng;
124 
125  if ($this->median === null) {
126  return;
127  }
128 
129  if (!is_array($this->median)) {
130  return $this->getScaleText($this->median);
131  } else {
132  return $lng->txt("median_between") . " " .
133  $this->getScaleText($this->median[0]) . " " .
134  $lng->txt("and") . " " .
135  $this->getScaleText($this->median[1]);
136  }
137  }
138 
139  public function addVariable(ilSurveyEvaluationResultsVariable $a_variable)
140  {
141  $this->variables[] = $a_variable;
142  }
143 
144  public function getVariables()
145  {
146  if (sizeof($this->variables)) {
147  return $this->variables;
148  }
149  }
150 
151  public function addAnswer(ilSurveyEvaluationResultsAnswer $a_answer)
152  {
153  $this->answers[] = $a_answer;
154  }
155 
156  public function getAnswers()
157  {
158  if (sizeof($this->answers)) {
159  return $this->answers;
160  }
161  return [];
162  }
163 
164  protected function getScaleText($a_value)
165  {
166  if (!sizeof($this->variables)) {
167  return $a_value;
168  } else {
169  foreach ($this->variables as $var) {
170  if ($var->cat->scale == $a_value) {
171  return $var->cat->title . " [" . $a_value . "]";
172  }
173  }
174  }
175  }
176 
177  protected function getCatTitle($a_value)
178  {
179  if (!sizeof($this->variables)) {
180  return $a_value;
181  } else {
182  foreach ($this->variables as $var) {
183  if ($var->cat->scale == $a_value) {
184  return $var->cat->title;
185  }
186  }
187  }
188  }
189 
190  public function getMappedTextAnswers()
191  {
192  $res = array();
193 
194  foreach ($this->answers as $answer) {
195  if ($answer->text) {
196  $res[$this->getScaleText($answer->value)][] = $answer->text;
197  }
198  }
199 
200  return $res;
201  }
202 
203  public function getUserResults($a_active_id)
204  {
205  $res = array();
206 
207  $answers = $this->getAnswers();
208  if ($answers) {
209  foreach ($answers as $answer) {
210  if ($answer->active_id == $a_active_id) {
211  $res[] = array(
212  $this->getScaleText($answer->value),
213  $answer->text,
214  $answer->value,
215  $this->getCatTitle($answer->value)
216  );
217  }
218  }
219  }
220 
221  return $res;
222  }
223 }
224 
226 {
227  public $cat; // [SurveyCategory]
228  public $abs; // [int]
229  public $perc; // [float]
230 
231  public function __construct(ilSurveyCategory $a_cat, $a_abs, $a_perc)
232  {
233  $this->cat = $a_cat;
234  $this->abs = (int) $a_abs;
235  $this->perc = (float) $a_perc;
236  }
237 }
238 
240 {
241  public $active_id; // [int]
242  public $value; // [int|float]
243  public $text; // [string]
244 
245  public function __construct($a_active_id, $a_value, $a_text)
246  {
247  $this->active_id = (int) $a_active_id;
248  $this->value = $a_value;
249  $this->text = trim($a_text);
250  }
251 }
__construct(ilSurveyCategory $a_cat, $a_abs, $a_perc)
foreach($_POST as $key=> $value) $res
Basic class for all survey question types.
global $DIC
Definition: goto.php:24
addVariable(ilSurveyEvaluationResultsVariable $a_variable)
setMode($a_value, $a_nr_of_selections)
__construct($a_active_id, $a_value, $a_text)
__construct(SurveyQuestion $a_question)
addAnswer(ilSurveyEvaluationResultsAnswer $a_answer)
Survey category class.