37 $this->title = $a_title;
43 $this->description = $a_description;
46 return($this->description);
49 $this->anonymous = $a_anonymous;
53 return($this->anonymous);
56 $this->required = $a_required;
60 return($this->required);
63 $this->show_on = $a_show_location;
67 return($this->show_on);
70 $this->votes = $a_votes;
77 $this->starttime = $a_starttime;
81 return($this->starttime);
84 $this->endtime = $a_endtime;
88 return($this->endtime);
91 $this->interval = $a_interval;
95 return($this->interval);
98 $this->interval_unit = $a_interval_unit;
102 return($this->interval_unit);
105 $this->first_vote_best = $a_first_vote_best;
109 return($this->first_vote_best);
112 $this->obj_id = $a_obj_id;
116 return($this->obj_id);
119 $this->ref_id = $a_ref_id;
122 return($this->ref_id);
125 $this->text_answer = $a_text_answer;
129 return($this->text_answer);
135 $this->user_id = $a_user_id;
138 $this->vote = $a_vote;
141 $this->note = $a_note;
148 $this->
setId($a_barometer[
'fb_id']);
149 $this->
setTitle($a_barometer[
'title']);
153 $this->
setShowOn($a_barometer[
'show_on']);
154 $this->
setVotes($a_barometer[
'votes']);
157 $this->
setInterval($a_barometer[
'repeat_interval']);
161 $this->
setObjId($a_barometer[
'obj_id']);
162 $this->
setRefId($a_barometer[
'ref_id']);
172 $this->
id = $ilDB->nextId(
"feedback_items");
191 $ilDB->insert(
"feedback_items", array(
192 "fb_id" => array(
"integer", $this->
id),
193 "title" => array(
"text", $this->title),
194 "description" => array(
"clob", $this->description),
195 "anonymous" => array(
"integer", (
int) $this->anonymous),
196 "required" => array(
"integer", (
int) $this->required),
197 "show_on" => array(
"text", $this->show_on),
198 "text_answer" => array(
"integer", (
int) $this->text_answer),
199 "votes" => array(
"clob", $this->votes),
200 "starttime" => array(
"integer", (
int) $this->starttime),
201 "endtime" => array(
"integer", (
int) $this->endtime),
202 "repeat_interval" => array(
"integer", (
int) $this->interval),
203 "interval_unit" => array(
"integer", (
int) $this->interval_unit),
204 "first_vote_best" => array(
"integer", (
int) $this->first_vote_best),
205 "ref_id" => array(
"integer", (
int) $this->ref_id),
206 "obj_id" => array(
"integer", (
int) $this->obj_id)
236 $ilDB->update(
"feedback_items", array(
237 "title" => array(
"text", $this->title),
238 "description" => array(
"clob", $this->description),
239 "anonymous" => array(
"integer", (
int) $this->anonymous),
240 "required" => array(
"integer", (
int) $this->required),
241 "show_on" => array(
"text", $this->show_on),
242 "text_answer" => array(
"integer", (
int) $this->text_answer),
243 "votes" => array(
"clob", $this->votes),
244 "starttime" => array(
"integer", (
int) $this->starttime),
245 "endtime" => array(
"integer", (
int) $this->endtime),
246 "repeat_interval" => array(
"integer", (
int) $this->interval),
247 "interval_unit" => array(
"integer", (
int) $this->interval_unit),
248 "first_vote_best" => array(
"integer", (
int) $this->first_vote_best)
250 "fb_id" => array(
"integer", $this->
id)
262 $q =
"SELECT * FROM feedback_items WHERE fb_id = ".
263 $ilDB->quote($this->
id,
"integer");
264 $res = $ilDB->query($q);
278 $q =
"SELECT * FROM feedback_items WHERE obj_id = ".
279 $ilDB->quote($this->obj_id,
"integer");
280 $res = $ilDB->query($q);
293 $q =
"SELECT * FROM feedback_items WHERE ref_id = ".
294 $ilDB->quote($this->ref_id,
"integer");
295 $res = $ilDB->query($q);
309 $filter_req = ($required)
310 ?
' required = 1 AND '
312 $q =
"SELECT * FROM feedback_items WHERE ".
314 " ((starttime <= ".$ilDB->quote(time(),
"integer").
" AND".
315 " endtime >= ".$ilDB->quote(time(),
"integer").
316 ") OR (starttime <= 0 AND endtime <= 0))";
318 $res = $ilDB->query($q);
338 $where.=
" ref_id = ".$ilDB->quote($this->ref_id,
"integer");
340 if ($a_only_req == 1)
344 $where .=
' AND required = 1 ';
348 $where =
' required = 1 ';
351 $q =
"SELECT * FROM feedback_items WHERE ".$where;
353 if ($a_show_inactive == 0)
357 $where =
' AND '.$where;
359 $q =
"SELECT * FROM feedback_items WHERE ".
360 " ((starttime <= ".$ilDB->quote(time(),
"integer").
" AND".
361 " endtime >= ".$ilDB->quote(time(),
"integer").
362 ") OR (starttime <= 0 AND endtime <=0 ))".$where;
364 $res = $ilDB->query($q);
367 $barometers = array();
368 while(
$row = $ilDB->fetchAssoc(
$res))
371 $barometers[$i]->setAllData(
$row);
392 $q =
"DELETE FROM feedback_items WHERE ".
393 $ilDB->in(
"fb_id", $this->ids,
false,
"integer");
396 $ilDB->manipulate($q);
397 $q =
"DELETE FROM feedback_results WHERE ".
398 $ilDB->in(
"fb_id", $this->ids,
false,
"integer");
400 $ilDB->manipulate($q);
410 if($this->
canVote($this->user_id,$this->
id)==1 || $this->user_id == 0)
420 $ilDB->insert(
"feedback_results", array(
421 "fb_id" => array(
"integer", $this->
id),
422 "user_id" => array(
"integer", $this->user_id),
423 "vote" => array(
"integer", $this->vote),
424 "note" => array(
"clob", $this->note),
425 "votetime" => array(
"integer", time())
434 global
$ilDB, $ilUser;
436 $q =
"SELECT * FROM feedback_results WHERE ".
437 "fb_id = ".$ilDB->quote($a_fb_id,
"integer").
" AND ".
438 "user_id = ".$ilDB->quote($a_user_id,
"integer").
439 " ORDER BY votetime DESC";;
440 $res = $ilDB->query($q);
442 $row_results = $ilDB->fetchAssoc(
$res);
443 $q =
"SELECT * FROM feedback_items WHERE ".
444 "fb_id = ".$ilDB->quote($a_fb_id,
"integer");
445 $res1 = $ilDB->query($q);
446 $row_items = $ilDB->fetchAssoc($res1);
449 if (!($row_items[
"starttime"]<=time() && $row_items[
"endtime"]>=time()))
454 include_once(
'Modules/Course/classes/class.ilCourseParticipant.php');
458 if((
$res->numRows()==0) && $members_obj->isAssigned())
461 if($members_obj->isAssigned())
463 if($row_items[
'repeat_interval'] > 0){
464 $interval = $this->
interval2seconds($row_items[
'repeat_interval'], $row_items[
'interval_unit']);
465 if((time() - $row_results[
'votetime']) >= $interval){
482 if($this->user_id!=
'')
484 $user_filter =
' feedback_results.user_id = '.$ilDB->quote($this->user_id,
"integer").
' AND ';
486 $q=
'SELECT usr_data.login, feedback_results.user_id,feedback_results.vote, feedback_results.votetime FROM'.
487 ' feedback_results LEFT JOIN usr_data ON usr_data.usr_id = feedback_results.user_id WHERE '.
488 ' '.$user_filter.
' feedback_results.fb_id='.$ilDB->quote($this->
id,
"integer").
489 ' ORDER BY feedback_results.votetime,usr_data.login';
491 $res = $ilDB->query($q);
497 $datapie[0][0] =
'Vote';
498 while(
$row = $ilDB->fetchAssoc(
$res))
500 $row[
"timelabel"] = date(
"d.m.Y H:i",
$row[
"votetime"]);
501 if(!isset($tmp[
$row[
'user_id']]))
503 $tmp[$row[
'user_id']]=$j++;
505 if(!isset($tmpv[$row[
'vote']]))
507 $tmpv[$row[
'vote']] = $k++;
509 $data[$i][0] = $row[
'timelabel'];
510 $data[$i][$tmp[$row[
'user_id']]] = $row[
'vote'];
511 $legend[$row[
'login']] = $row[
'login'];
512 $legendpie[$row[
'vote']] = $row[
'vote'];
515 $datapie[0][$tmpv[$row[
'vote']]]++;
516 if($row[
'votetime']!=$pvt){
520 $pvt=$row[
'votetime'];
522 $table[
$n][
'votetime'] = $row[
'timelabel'];
523 $table[
$n][
'user'] = $row[
'login'];
524 $table[
$n][
'vote'] = $row[
'vote'];
529 foreach(
$data as $k => $v)
533 if(count($v)<=count($tmp)){
534 for($i=1;$i<=count($tmp);$i++)
541 return(array(
'data' =>
$data,
'legend' =>
$legend,
'legendpie' => $legendpie,
'datapie' => $datapie,
'table' => $table));
551 if($this->user_id!=
'')
553 $user_filter =
' AND feedback_results.user_id='.$ilDB->quote($this->user_id,
"integer");
555 $q=
'SELECT usr_data.login, feedback_results.user_id,feedback_results.note,feedback_results.vote, feedback_results.votetime FROM'.
556 ' feedback_results LEFT JOIN usr_data ON usr_data.usr_id = feedback_results.user_id'.
557 ' WHERE feedback_results.note IS NOT NULL '.
558 ' '.$user_filter.
' AND feedback_results.fb_id='.$ilDB->quote($this->
id,
"integer").
559 ' ORDER BY feedback_results.votetime,usr_data.login';
561 $res = $ilDB->query($q);
563 while(
$row = $ilDB->fetchAssoc(
$res))
565 $row[
"timelabel"] = date(
"d.m.Y H:i",
$row[
"votetime"]);
567 $data[$i][
'votetime'] =
$row[
'timelabel'];
580 $q=
'SELECT distinct(usr_data.login), feedback_results.user_id, feedback_results.votetime '.
582 ' feedback_results LEFT JOIN usr_data ON usr_data.usr_id = feedback_results.user_id'.
583 ' WHERE feedback_results.fb_id='.$ilDB->quote($this->
id,
"integer").
584 ' ORDER BY feedback_results.votetime,usr_data.login';
586 $res = $ilDB->query($q);
588 while(
$row = $ilDB->fetchAssoc(
$res))
590 $users[
$row[
'user_id']] = $row[
'login'];
601 switch($a_interval_unit)
605 $multi_by = 24 * 60 * 60;
609 $mult_by = 7 * 24 * 60 * 60;
613 $mult_by = 30 * 24 * 60 *60;
621 $seconds = $a_interval * $mult_by;