00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00035 class ilFeedbackGUI
00036 {
00040 function ilFeedbackGUI(){
00041 global $ilCtrl;
00042 global $lng;
00043 $this->update = 0;
00044
00045 $this->ctrl =& $ilCtrl;
00046 $this->lng =& $lng;
00047 $this->lng->loadLanguageModule('barometer');
00048
00049 }
00050
00054 function &executeCommand()
00055 {
00056 global $ilAccess,$ilErr;
00057
00058 if(isset($_SESSION["message"])) {
00059 if(isset($_SESSION['error_post_vars']['cmd']['update'])){
00060
00061 $this->ctrl->setCmd('edit');
00062 }else
00063 $this->ctrl->setCmd('addBarometer');
00064 }
00065 $params = $this->ctrl->getParameterArray($this);
00066
00067 $cmd = $this->ctrl->getCmd('fbList');
00068
00069
00070 if((!$ilAccess->checkAccess('write','edit',$params['ref_id']))&&(in_array($cmd,array('fbList','save','delete','update','edit'))))
00071 $cmd = 'showBarometer';
00072
00073 $next_class = $this->ctrl->getNextClass($this);
00074 switch($next_class){
00075 default:
00076 return($this->$cmd());
00077 break;
00078 }
00079 }
00080
00081 function getFeedbackHTML(){
00082 global $lng;
00083
00084 $tpl = new ilTemplate("tpl.feedbacklist.html", true, true, "Services/Feedback");
00085 $tpl->setVariable("TXT_FEEDBACK_TITLE", $lng->txt("stimmungsb"));
00086 $tpl->setVariable("TXT_TITLE", $lng->txt("title"));
00087 $tpl->setVariable("TXT_STATUS", $lng->txt("status"));
00088 $tpl->setVariable("TXT_ACTIVE_TIME", $lng->txt("active_time"));
00089 $tpl->setVariable("TXT_OPTIONS", $lng->txt("options"));
00090
00091 $tpl->setVariable("TXT_NEW_VOTE", $lng->txt("options"));
00092 $tpl->parseCurrentBlock();
00093 return($tpl->get());
00094 }
00095
00099 function fbList(){
00100
00101 include_once('Services/Feedback/classes/class.ilFeedback.php');
00102 $tbl =& $this->__initTableGUI();
00103 $cnt=0;
00104 $ilFeedback = new ilFeedback();
00105 $ilFeedback->setRefId($_GET['ref_id']);
00106 $barometers = $ilFeedback->getAllBarometer();
00107
00108 if(is_Array($barometers)){
00109 foreach($barometers as $barometer){
00110 $rows[$cnt]['checkbox'] = ilUtil::formCheckbox(0,"barometer[]",$barometer->getId());;
00111 $rows[$cnt]['title'] = $barometer->getTitle();
00112 $rows[$cnt]['status'] = 'Aktive';
00113 if(($barometer->getStarttime()>0) && ($barometer->getStarttime()>0)){
00114 $rows[$cnt]['running'] = date('d.m.Y H:i',$barometer->getStarttime()).' - '.date('d.m.Y H:i',$barometer->getEndtime());
00115 if(($barometer->getStarttime()<=time())&&($barometer->getEndtime()>=time()))
00116 $rows[$cnt]['status'] = $this->lng->txt('active');
00117 else
00118 $rows[$cnt]['status'] = $this->lng->txt('inactive');
00119
00120 }else{
00121 $rows[$cnt]['running'] = '';
00122 $rows[$cnt]['status'] = $this->lng->txt('active');
00123 }
00124 $rows[$cnt]['options'] = $this->getButtons($barometer->getId());
00125 $barometer_ids[]=$barometer->getId();
00126 $cnt++;
00127 }
00128 }
00129
00130 $tbl->tpl->setCurrentBlock("tbl_form_header");
00131 $tbl->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00132 $tbl->tpl->parseCurrentBlock();
00133 $tbl->setTitle($this->lng->txt("feedb_feedback_list"),
00134 "icon_feedb.gif", $this->lng->txt("feedb_feedback_list"));
00135 $tbl->setHeaderNames(array("",$this->lng->txt("title"),$this->lng->txt("status"),$this->lng->txt("time"),$this->lng->txt("options")));
00136 $tbl->setHeaderVars(array("checkbox","title","stauts","running","options"));
00137 $tbl->setData($rows);
00138 $tbl->setOffset(0);
00139 $tbl->setLimit(0);
00140 $tbl->disable('sort');
00141 $tbl->setMaxCount(count($rows));
00142 $tbl->tpl->setCurrentBlock("plain_button");
00143 $tbl->tpl->setVariable("PBTN_NAME","addBarometer");
00144 $tbl->tpl->setVariable("PBTN_VALUE",$this->lng->txt("barometer_add"));
00145 $tbl->tpl->parseCurrentBlock();
00146 $tbl->tpl->setCurrentBlock("plain_buttons");
00147 $tbl->tpl->parseCurrentBlock();
00148 if (!empty($rows))
00149 {
00150
00151 $tbl->tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00152 $tbl->tpl->setVariable("JS_VARNAME","barometer");
00153 $tbl->tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($barometer_ids));
00154 $tbl->tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00155 $tbl->tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00156 $tbl->tpl->parseCurrentBlock();
00157 }
00158
00159
00160 $tbl->tpl->setVariable("COLUMN_COUNTS",5);
00161 $tbl->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00162
00163 $tbl->tpl->setCurrentBlock("tbl_action_select");
00164
00165 $tbl->tpl->setVariable("BTN_NAME","delete");
00166 $tbl->tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
00167 $tbl->tpl->parseCurrentBlock();
00168
00169 $tbl->setOrderDirection('asc');
00170 $tbl->setColumnWidth(array("","25%","25%","25%",""));
00171 #$tbl->disable('sort');
00172 $tbl->setFooter("tblfooter");
00173 $tbl->render();
00174
00175 return($tbl->tpl->get());
00176
00177 }
00178 function &__initTableGUI()
00179 {
00180 include_once "./Services/Table/classes/class.ilTableGUI.php";
00181 return new ilTableGUI(0,false);
00182
00183 }
00184 function delete(){
00185 if(is_Array($_POST['barometer'])){
00186 include_once('Services/Feedback/classes/class.ilFeedback.php');
00187 $ilFB = new ilFeedback();
00188 $ilFB->setIds($_POST['barometer']);
00189 $ilFB->delete();
00190 }
00191 ilUtil::redirect($this->ctrl->getLinkTarget($this, 'fbList'));
00192 }
00193 function stats(){
00194
00195 include_once('Services/Feedback/classes/class.ilFeedback.php');
00196
00197
00198 $tpl = new ilTemplate("tpl.feedback_stats.html", true, true, "Services/Feedback");
00199 $feedback = new ilFeedback();
00200 $feedback->setUserId(ilUtil::stripSlashes($_POST['chart_user']));
00201 $feedback->setId($_GET['barometer_id']);
00202 $chartdata = $feedback->getChartData();
00203 $data = $chartdata['data'];
00204 $legend = $chartdata['legend'];
00205 $legendpie = $chartdata['legendpie'];
00206 $datapie = $chartdata['datapie'];
00207 $datatable = $chartdata['table'];
00208
00209 $chartlines = '<img src="Services/Feedback/showchart.php?chart_type=lines&title='.base64_encode($this->lng->txt('chart_users')).'&data='.base64_encode(serialize($data)).'&legend='.base64_encode(serialize($legend)).'">';
00210 $chartpie = '<img src="Services/Feedback/showchart.php?chart_type=pie&title='.base64_encode($this->lng->txt('chart_votes')).'&data='.base64_encode(serialize($datapie)).'&legend='.base64_encode(serialize($legendpie)).'">';
00211
00212 $chart_type['lines'] = $this->lng->txt('lines');
00213 $chart_type['pie'] = $this->lng->txt('pie');
00214 $chart_type['table'] = $this->lng->txt('table');
00215
00216 $chart_user[0] = $this->lng->txt('all_users');
00217 $chart_user = $feedback->getResultUsers();
00218
00219 $tpl->setVariable("TXT_USER",$this->lng->txt('user'));
00220 $tpl->setVariable("TXT_CHART_TYPE",$this->lng->txt('chart_type'));
00221 switch($_POST['chart_type']){
00222 case 'pie':
00223 $tpl->setVariable("CHART_PIE", $chartpie);
00224 break;
00225 case 'table':
00226 if(is_array($datatable)){
00227 $tpl->setCurrentBlock('tablerow');
00228 $tpl->setVariable('TXT_TABLE_USERNAME',$this->lng->txt('username'));
00229 $tpl->setVariable('TXT_TABLE_VOTE',$this->lng->txt('vote'));
00230 $tpl->setVariable('TXT_TABLE_DATE', $this->lng->txt('date'));
00231 $tpl->parseCurrentBlock();
00232 $i=0;
00233 foreach($datatable as $tablerow){
00234 $tpl->setVariable('VALUE_NUM',(($i++ % 2) ? 1 : 2));
00235 $tpl->setVariable('VALUE_VOTETIME', $tablerow['votetime']);
00236 $tpl->setVariable('VALUE_USER', $tablerow['user']);
00237 $tpl->setVariable('VALUE_VOTE', $tablerow['vote']);
00238 $tpl->parseCurrentBlock();
00239 }
00240 }
00241 break;
00242 default:
00243 $tpl->setVariable("CHART_LINES", $chartlines);
00244 break;
00245 }
00246 $tpl->setVariable("SELECTBOX_CHART_TYPE", $this->selectbox(ilUtil::stripSlashes($_POST['chart_type']),'chart_type',$chart_type,'onChange="document.forms[0].submit()"'));
00247 $tpl->setVariable("SELECTBOX_USER", $this->selectbox(ilUtil::stripSlashes($_POST['chart_user']),'chart_user',$chart_user,'onChange="document.forms[0].submit()"',$this->lng->txt('all_users')));
00248
00249
00250
00251
00252 $comments = $feedback->getNotes();
00253 if(is_Array($comments)){
00254 $tpl->setCurrentBlock('comment_row');
00255 $tpl->setVariable('TXT_USERNAME',$this->lng->txt('username'));
00256 $tpl->setVariable('TXT_COMMENT',$this->lng->txt('comment'));
00257 $tpl->setVariable('TXT_DATE', $this->lng->txt('date'));
00258 $tpl->parseCurrentBlock();
00259 $i=0;
00260 foreach ($comments as $comment){
00261 $tpl->setVariable('VALUE_NUM',(($i++ % 2) ? 1 : 2));
00262 $tpl->setVariable('VALUE_LOGIN',$comment['user']);
00263 $tpl->setVariable('VALUE_DATE',$comment['votetime']);
00264 $tpl->setVariable('VALUE_NOTE',$comment['note']);
00265 $tpl->parseCurrentBlock();
00266 }
00267 }
00268 $tpl->parseCurrentBlock();
00269 return($tpl->get());
00270 }
00271
00272
00276 function edit()
00277 {
00278 include_once('Services/Feedback/classes/class.ilFeedback.php');
00279
00280 $ilFB = new ilFeedback($_REQUEST['barometer_id']);
00281 $tpl = new ilTemplate("tpl.feedback_edit.html", true, true, "Services/Feedback");
00282
00283 $data['title'] = $_POST['title'] ? $_POST['title'] : $ilFB->getTitle();
00284 $data['description'] = $_POST['text'] ? $_POST['text'] : $ilFB->getDescription();
00285 $data['anonymous'] = ($_POST['anonymous']!='') ? $_POST['anonymous'] : $ilFB->getAnonymous();
00286 $data['required'] = ($_POST['required']!='') ? $_POST['required'] : $ilFB->getRequired();
00287 $data['show_on'] = $_POST['show_on'] ? $_POST['show_on'] : $ilFB->getShowOn();
00288 $data['vote'] = $_POST['vote'] ? $_POST['vote'] : unserialize($ilFB->getVotes());
00289 if($_POST['extra_votes']=='')
00290 $_POST['extra_votes'] = count($data['votes']);
00291 $data['text_answer'] = ($_POST['text_answer']!='') ? $_POST['text_answer'] : $ilFB->getTextAnswer();
00292 if($ilFB->getStarttime()>=0||isset($_POST['start_day'])){
00293 $data['start_day'] = $_POST['start_day'] ? $_POST['start_day'] : date('d',$ilFB->getStarttime());
00294 $data['start_month'] =$_POST['start_month'] ? $_POST['start_month'] : date('m',$ilFB->getStarttime());
00295 $data['start_year'] = $_POST['start_year'] ? $_POST['start_year'] :date('Y',$ilFB->getStarttime());
00296 $data['start_hour'] = $_POST['start_hour'] ? $_POST['start_hour'] :date('H',$ilFB->getStarttime());
00297 $data['start_minute'] = $_POST['start_minute'] ? $_POST['start_minute'] :date('i',$ilFB->getStarttime());
00298 }
00299 if($ilFB->getEndtime()>=0||isset($_POST['end_day'])){
00300 $data['end_day'] = $_POST['end_day'] ? $_POST['end_day'] :date('d',$ilFB->getEndtime());
00301 $data['end_month'] = $_POST['end_month'] ? $_POST['end_month'] :date('m',$ilFB->getEndtime());
00302 $data['end_year'] = $_POST['end_year'] ? $_POST['end_year'] :date('Y',$ilFB->getEndtime());
00303 $data['end_hour'] = $_POST['end_hour'] ? $_POST['end_hour'] :date('H',$ilFB->getEndtime());
00304 $data['end_minute'] = $_POST['end_minute'] ? $_POST['end_minute'] :date('i',$ilFB->getEndtime());
00305 }
00306
00307 $data['interval'] = $_POST['interval'] ? $_POST['interval'] : $ilFB->getInterval();
00308 $data['interval_unit'] = $_POST['interval_unit'] ? $_POST['interval_unit'] : $ilFB->getIntervalUnit();
00309 $data['first_vote_best'] = ($_POST['first_vote_best']!='') ? $_POST['first_vote_best'] : $ilFB->getFirstVoteBest();
00310
00311 $this->ctrl->setParameter($this,"barometer_id",$_GET['barometer_id']);
00312 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00313 $tpl->setVariable("TXT_HEADER", $this->lng->txt("feedb_edit_feedback"));
00314 $tpl->setVariable("IMG_FEEDB", ilUtil::getImagePath("icon_feedb.gif"));
00315 $tpl->setVariable("ALT_FEEDB", $this->lng->txt("feedb_edit_feedback"));
00316 $tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00317 $tpl->setVariable("VALUE_TITLE",$data['title']);
00318 $tpl->setVariable("TXT_TOP_TEXT", $this->lng->txt("text"));
00319 $tpl->setVariable("TXT_TIME", $this->lng->txt("feedb_time"));
00320 $tpl->setVariable("VALUE_TEXT", $data['description']);
00321 $tpl->setVariable("TXT_ANONYMOUS", $this->lng->txt("anonymous"));
00322
00323 if($data["anonymous"]=="0")
00324 $tpl->setVariable("ANONYMOUS_NO", " checked");
00325 else
00326 $tpl->setVariable("ANONYMOUS_YES", " checked");
00327 $tpl->setVariable("TXT_YES", $this->lng->txt("yes"));
00328 $tpl->setVariable("TXT_NO", $this->lng->txt("no"));
00329 $tpl->setVariable("TXT_TYPE", $this->lng->txt("type"));
00330 $typeSB[0] = $this->lng->txt('optional');
00331 $typeSB[1] = $this->lng->txt('required');
00332
00333 $tpl->setVariable("SELECT_TYPE",
00334 ilUtil::formSelect($data['required'],'type',$typeSB,false,true));
00335
00336 $tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required"));
00337 if($data["show_on"]=="course")
00338 $tpl->setVariable("SHOW_CHANGE_COURSE_SELECTED", "selected");
00339 else
00340 $tpl->setVariable("SHOW_LOGIN_SELECTED", "selected");
00341 $tpl->setVariable("TXT_LOGIN", $this->lng->txt("login"));
00342 $tpl->setVariable("TXT_CHANGE_COURSE", $this->lng->txt("change_course"));
00343 if($data["text_answer"]=="1")
00344 $tpl->setVariable("TEXT_ANSWER_YES", " checked");
00345 else
00346 $tpl->setVariable("TEXT_ANSWER_NO", " checked");
00347 $tpl->setVariable("TXT_TEXT_ANSWER", $this->lng->txt("text_answer"));
00348 $tpl->setVariable("TXT_VOTES", $this->lng->txt("votes"));
00349 $extra_votes = $_POST["extra_votes"] ? $_POST["extra_votes"]+1 : (count($data["vote"])-2);
00350 if ($extra_votes<1) $extra_votes=1;
00351 $tpl->setVariable("VALUE_EXTRA_VOTES", $extra_votes);
00352
00353 for($i=1;$i < 3+$extra_votes ;$i++){
00354 $tpl->setCurrentBlock("vote");
00355 $tpl->setVariable("TXT_TEXT",$this->lng->txt("text"));
00356 $tpl->setVariable("VALUE_VOTE_TEXT",$data["vote"][$i]);
00357 $tpl->setVariable("VOTE_NUM",$i);
00358 $tpl->parseCurrentBlock();
00359 }
00360
00361 $tpl->setVariable("TXT_DAY",$this->lng->txt("day"));
00362 $tpl->setVariable("SELECT_ACTIVATION_START_DAY",$this->getDateSelect('day','start_day',$data['start_day']));
00363 $tpl->setVariable("SELECT_ACTIVATION_START_MONTH",$this->getDateSelect('month','start_month',$data['start_month']));
00364 $tpl->setVariable("SELECT_ACTIVATION_START_YEAR",$this->getDateSelect('year','start_year',$data['start_year']));
00365 $tpl->setVariable("SELECT_ACTIVATION_START_HOUR",$this->getDateSelect('hour','start_hour',$data['start_hour']));
00366 $tpl->setVariable("SELECT_ACTIVATION_START_MINUTE",$this->getDateSelect('minute','start_minute',$data['start_minute']));
00367 $tpl->setVariable("SELECT_ACTIVATION_END_DAY",$this->getDateSelect('day','end_day',$data['end_day']));
00368 $tpl->setVariable("SELECT_ACTIVATION_END_MONTH",$this->getDateSelect('month','end_month',$data['end_month']));
00369 $tpl->setVariable("SELECT_ACTIVATION_END_YEAR",$this->getDateSelect('year','end_year',$data['end_year']));
00370 $tpl->setVariable("SELECT_ACTIVATION_END_HOUR",$this->getDateSelect('hour','end_hour',$data['end_hour']));
00371 $tpl->setVariable("SELECT_ACTIVATION_END_MINUTE",$this->getDateSelect('minute','end_minute',$data['end_minute']));
00372
00373 $tpl->setVariable("TXT_MONTH",$this->lng->txt("month"));
00374 $tpl->setVariable("TXT_YEAR",$this->lng->txt("year"));
00375 $tpl->setVariable("TXT_FROM",$this->lng->txt("from"));
00376 $tpl->setVariable("TXT_UNTIL",$this->lng->txt("until"));
00377
00378 $tpl->setVariable("TXT_DURATION",$this->lng->txt("duration"));
00379 $tpl->setVariable("TXT_HOURS",$this->lng->txt("hours"));
00380 $tpl->setVariable("TXT_DAYS",$this->lng->txt("days"));
00381 $tpl->setVariable("TXT_WEEKS",$this->lng->txt("weeks"));
00382 $tpl->setVariable("TXT_MONTHS",$this->lng->txt("months"));
00383 $tpl->setVariable("TXT_REPEAT",$this->lng->txt("repeat"));
00384 $tpl->setVariable("TXT_FTEXT",$this->lng->txt("text"));
00385
00386 for($i=0;$i < 25;$i++){
00387 $interval[$i]=$i;
00388 }
00389 $tpl->setVariable("SELECT_INTERVAL",ilUtil::formSelect($data['interval'],'interval',$interval,false,true));
00390
00391 $interval_unitSB[0] = $this->lng->txt('hours');
00392 $interval_unitSB[1] = $this->lng->txt('days');
00393 $interval_unitSB[2] = $this->lng->txt('weeks');
00394 $interval_unitSB[3] = $this->lng->txt('months');
00395 $tpl->setVariable("SELECT_INTERVAL_UNIT",ilUtil::formSelect($data['interval_unit'],'interval_unit',$interval_unitSB,false,true));
00396
00397 $tpl->setVariable("TXT_FIRST_VOTE",$this->lng->txt("first_vote"));
00398 $tpl->setVariable("TXT_BEST",$this->lng->txt("best"));
00399 $tpl->setVariable("TXT_WORST",$this->lng->txt("worst"));
00400 if($data["first_vote_best"]==1)
00401 $tpl->setVariable("BEST_CHECKED", "checked");
00402 else
00403 $tpl->setVariable("WORST_CHECKED", "checked");
00404 $tpl->setVariable("TXT_VOTE", $this->lng->txt("vote"));
00405 $tpl->setVariable("TXT_NEW_VOTE", $this->lng->txt("new_vote"));
00406 $tpl->setVariable("CMD_ADDVOTE", 'edit');
00407 $tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00408 $tpl->setVariable("CMD_SUBMIT", "update");
00409 $tpl->parseCurrentBlock();
00410 return $tpl->get();
00411
00412 }
00413 function update(){
00414 $this->update=1;
00415
00416 return $this->save();
00417 }
00418 function save(){
00419
00420 global $ilias;
00421 include_once('Services/Feedback/classes/class.ilFeedback.php');
00422 $params = $this->ctrl->getParameterArray($this);
00423 $tmp_votes=array();
00424 $vote_cnt=1;
00425
00426 if($_POST['anonymous'] and $_POST['type'])
00427 {
00428 ilUtil::sendInfo($this->lng->txt('barometer_conflict_anon_req'));
00429 #$this->ctrl->setParameter($this,'barometer_id',(int) $_GET['barometer_id']);
00430 #$this->ctrl->redirect($this,'edit');
00431 --$_POST['extra_votes'];
00432 return $this->edit();
00433 }
00434 foreach ($_POST['vote'] as $k=>$v)
00435 {
00436 if(trim($v))
00437 {
00438 $tmp_votes[$vote_cnt]=$v;
00439 $vote_cnt++;
00440 }
00441 }
00442 if(($_POST['title']=='')||($_POST['text']=='')|| $vote_cnt<3)
00443 {
00444 ilUtil::sendInfo($this->lng->txt('missing_fields'));
00445 --$_POST['extra_votes'];
00446 return $this->edit();
00447 #$this->ctrl->setParameter($this,'a','32');
00448 #$ilias->raiseError($this->lng->txt('missing_fields'),$ilias->error_obj->MESSAGE);
00449 }
00450 $ilFeedback = new ilFeedback();
00451 $ilFeedback->setTitle(ilUtil::stripSlashes($_POST['title']));
00452 $ilFeedback->setDescription(ilUtil::stripSlashes($_POST['text']));
00453 $ilFeedback->setAnonymous(ilUtil::stripSlashes($_POST['anonymous']));
00454 $ilFeedback->setRequired(ilUtil::stripSlashes($_POST['type']));
00455 $ilFeedback->setShowOn(ilUtil::stripSlashes($_POST['show_on']));
00456 $ilFeedback->setTextAnswer(ilUtil::stripSlashes($_POST['text_answer']));
00457 $ilFeedback->setVotes(serialize($tmp_votes));
00458 $ilFeedback->setStarttime(mktime(ilUtil::stripSlashes($_POST['start_hour']),
00459 ilUtil::stripSlashes($_POST['start_minute']),0,
00460 ilUtil::stripSlashes($_POST['start_month']),
00461 ilUtil::stripSlashes($_POST['start_day']),
00462 ilUtil::stripSlashes($_POST['start_year'])));
00463 $ilFeedback->setEndtime(mktime(
00464 ilUtil::stripSlashes($_POST['end_hour']),
00465 ilUtil::stripSlashes($_POST['end_minute']),0,
00466 ilUtil::stripSlashes($_POST['end_month']),
00467 ilUtil::stripSlashes($_POST['end_day']),
00468 ilUtil::stripSlashes($_POST['end_year'])));
00469 $ilFeedback->setInterval(
00470 ilUtil::stripSlashes($_POST['interval']));
00471 $ilFeedback->setIntervalUnit(
00472 ilUtil::stripSlashes($_POST['interval_unit']));
00473 $ilFeedback->setFirstVoteBest(
00474 ilUtil::stripSlashes($_POST['first_vote_best']));
00475 $ilFeedback->setObjId($params['obj_id']);
00476 $ilFeedback->setRefId($params['ref_id']);
00477 if($this->update == 1 && $_GET['barometer_id'])
00478 {
00479 $ilFeedback->setId($_GET['barometer_id']);
00480 $ilFeedback->update();
00481 }
00482 else
00483 $ilFeedback->create();
00484 ilUtil::redirect($this->ctrl->getLinkTarget($this, 'fbList'));
00485
00486 }
00487
00491 function get_last($a_var, $a_value='',$pForm=true)
00492 {
00493 if (!empty($_POST[$a_var])) $result=$_POST[$a_var];
00494 elseif (!empty($_SESSION["error_post_vars"][$a_var])) $result=$_SESSION["error_post_vars"][$a_var];
00495 else {
00496 $result=$a_value;
00497 $pForm=false;
00498 }
00499
00500 return $pForm?ilUtil::prepareFormOutput($result):$result;
00501 }
00505 function addBarometer(){
00506 $tpl = new ilTemplate("tpl.feedback_edit.html", true, true, "Services/Feedback");
00507 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00508 $tpl->setVariable("TXT_HEADER", $this->lng->txt("bar_create"));
00509 $tpl->setVariable("IMG_FEEDB", ilUtil::getImagePath("icon_feedb.gif"));
00510 $tpl->setVariable("ALT_FEEDB", $this->lng->txt("bar_create"));
00511 $tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00512 $tpl->setVariable("TXT_TIME", $this->lng->txt("feedb_time"));
00513 $tpl->setVariable("VALUE_TITLE",$this->get_last("title"));
00514 $tpl->setVariable("TXT_TOP_TEXT", $this->lng->txt("text"));
00515 $tpl->setVariable("VALUE_TEXT", $this->get_last("text"));
00516 $tpl->setVariable("TXT_ANONYMOUS", $this->lng->txt("anonymous"));
00517 if($this->get_last("anonymous")=="0")
00518 $tpl->setVariable("ANONYMOUS_NO", " checked");
00519 else
00520 $tpl->setVariable("ANONYMOUS_YES", " checked");
00521 $tpl->setVariable("TXT_YES", $this->lng->txt("yes"));
00522 $tpl->setVariable("TXT_NO", $this->lng->txt("no"));
00523 $tpl->setVariable("TXT_TYPE", $this->lng->txt("type"));
00524 $typeSB[0] = $this->lng->txt('optional');
00525 $typeSB[1] = $this->lng->txt('required');
00526 $tpl->setVariable("SELECT_TYPE", ilUtil::formSelect($this->get_last('type'),'type',$typeSB,false,true));
00527
00528 $tpl->setVariable("TXT_REQUIRED", $this->lng->txt("required"));
00529 if($this->get_last("show_on")=="course")
00530 $tpl->setVariable("SHOW_CHANGE_COURSE_SELECTED", "selected");
00531 else
00532 $tpl->setVariable("SHOW_LOGIN_SELECTED", "selected");
00533 $tpl->setVariable("TXT_LOGIN", $this->lng->txt("login"));
00534 $tpl->setVariable("TXT_CHANGE_COURSE", $this->lng->txt("change_course"));
00535 if($this->get_last("text_answer")=="1")
00536 $tpl->setVariable("TEXT_ANSWER_YES", " checked");
00537 else
00538 $tpl->setVariable("TEXT_ANSWER_NO", " checked");
00539 $tpl->setVariable("TXT_TEXT_ANSWER", $this->lng->txt("text_answer"));
00540 $tpl->setVariable("TXT_VOTES", $this->lng->txt("votes"));
00541 $extra_votes = $this->get_last("extra_votes",0);
00542 if ($_POST['cmd']['addBarometer']) $extra_votes+=1;
00543 $tpl->setVariable("VALUE_EXTRA_VOTES", $extra_votes);
00544 $vote_txt=$this->get_last('vote',array(),false);
00545 for($i=1;$i < 3+$extra_votes ;$i++){
00546 $tpl->setCurrentBlock("vote");
00547 $tpl->setVariable("TXT_TEXT",$this->lng->txt("text"));
00548 $tpl->setVariable("VALUE_VOTE_TEXT",ilUtil::prepareFormOutput($vote_txt[$i]));
00549 $tpl->setVariable("VOTE_NUM",$i);
00550 $tpl->parseCurrentBlock();
00551 }
00552 $tpl->setVariable("TXT_DAY",$this->lng->txt("day"));
00553 $tpl->setVariable("SELECT_ACTIVATION_START_DAY",$this->getDateSelect('day','start_day',$this->get_last('start_day')));
00554 $tpl->setVariable("SELECT_ACTIVATION_START_MONTH",$this->getDateSelect('month','start_month',$this->get_last('start_month')));
00555 $tpl->setVariable("SELECT_ACTIVATION_START_YEAR",$this->getDateSelect('year','start_year',$this->get_last('start_year')));
00556 $tpl->setVariable("SELECT_ACTIVATION_START_HOUR",$this->getDateSelect('hour','start_hour',$this->get_last('start_hour')));
00557 $tpl->setVariable("SELECT_ACTIVATION_START_MINUTE",$this->getDateSelect('minute','start_minute',$this->get_last('start_minute')));
00558 $tpl->setVariable("SELECT_ACTIVATION_END_DAY",$this->getDateSelect('day','end_day',$this->get_last('end_day')));
00559 $tpl->setVariable("SELECT_ACTIVATION_END_MONTH",$this->getDateSelect('month','end_month',$this->get_last('end_month')));
00560 $tpl->setVariable("SELECT_ACTIVATION_END_YEAR",$this->getDateSelect('year','end_year',$this->get_last('end_year')));
00561 $tpl->setVariable("SELECT_ACTIVATION_END_HOUR",$this->getDateSelect('hour','end_hour',$this->get_last('end_hour')));
00562 $tpl->setVariable("SELECT_ACTIVATION_END_MINUTE",$this->getDateSelect('minute','end_minute',$this->get_last('end_minute')));
00563
00564 $tpl->setVariable("TXT_MONTH",$this->lng->txt("month"));
00565 $tpl->setVariable("TXT_YEAR",$this->lng->txt("year"));
00566 $tpl->setVariable("TXT_FROM",$this->lng->txt("from"));
00567 $tpl->setVariable("TXT_UNTIL",$this->lng->txt("until"));
00568
00569 $tpl->setVariable("TXT_DURATION",$this->lng->txt("duration"));
00570 $tpl->setVariable("TXT_HOURS",$this->lng->txt("hours"));
00571 $tpl->setVariable("TXT_DAYS",$this->lng->txt("days"));
00572 $tpl->setVariable("TXT_WEEKS",$this->lng->txt("weeks"));
00573 $tpl->setVariable("TXT_MONTHS",$this->lng->txt("months"));
00574 $tpl->setVariable("TXT_REPEAT",$this->lng->txt("repeat"));
00575
00576 for($i=0;$i < 25;$i++){
00577 $interval[$i]=$i;
00578 }
00579 $tpl->setVariable("SELECT_INTERVAL",ilUtil::formSelect($this->get_last('interval'),'interval',$interval,false,true));
00580 $tpl->setVariable("TXT_EVERY",$this->lng->txt("every"));
00581
00582 $interval_unitSB[0] = $this->lng->txt('hours');
00583 $interval_unitSB[1] = $this->lng->txt('days');
00584 $interval_unitSB[2] = $this->lng->txt('weeks');
00585 $interval_unitSB[3] = $this->lng->txt('months');
00586 $tpl->setVariable("SELECT_INTERVAL_UNIT",ilUtil::formSelect($this->get_last('interval_unit'),'interval_unit',$interval_unitSB,false,true));
00587
00588 $tpl->setVariable("TXT_FIRST_VOTE",$this->lng->txt("first_vote"));
00589 $tpl->setVariable("TXT_BEST",$this->lng->txt("best"));
00590 $tpl->setVariable("TXT_WORST",$this->lng->txt("worst"));
00591 if($this->get_last("first_vote_best")==1)
00592 $tpl->setVariable("BEST_CHECKED", "checked");
00593 else
00594 $tpl->setVariable("WORST_CHECKED", "checked");
00595
00596 $tpl->setVariable("TXT_NEW_VOTE", $this->lng->txt("new_vote"));
00597 $tpl->setVariable("CMD_ADDVOTE", 'addBarometer');
00598 $tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00599 $tpl->setVariable("CMD_SUBMIT", "save");
00600 $tpl->parseCurrentBlock();
00601 return($tpl->get());
00602
00603 }
00604 function getButtons($a_barometer_id){
00605
00606 $tpl = new ilTemplate("tpl.buttons.html", true, true,"Services/Feedback");
00607
00608 $tpl->setCurrentBlock("btn_cell");
00609 $this->ctrl->setParameter($this,"barometer_id",$a_barometer_id);
00610 $this->ctrl->setParameter($this,"ref_id",$_GET['ref_id']);
00611 $tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this,'stats'));
00612 $tpl->setVariable("BTN_TXT", $this->lng->txt("statistics"));
00613 $tpl->parseCurrentBlock();
00614 $tpl->setCurrentBlock("btn_cell");
00615 $tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this,'edit'));
00616 $tpl->setVariable("BTN_TXT", $this->lng->txt("edit"));
00617 $tpl->parseCurrentBlock();
00618 return($tpl->get());
00619 }
00620 function getDateSelect($a_type,$a_varname,$a_selected)
00621 {
00622 switch($a_type)
00623 {
00624 case "minute":
00625 for($i=0;$i<60;$i++)
00626 {
00627 $days[$i] = $i < 10 ? "0".$i : $i;
00628 }
00629 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
00630
00631 case "hour":
00632 for($i=0;$i<24;$i++)
00633 {
00634 $days[$i] = $i < 10 ? "0".$i : $i;
00635 }
00636 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
00637
00638 case "day":
00639 for($i=1;$i<32;$i++)
00640 {
00641 $days[$i] = $i < 10 ? "0".$i : $i;
00642 }
00643 $days[0] = '';
00644 return ilUtil::formSelect($a_selected,$a_varname,$days,false,true);
00645
00646 case "month":
00647 for($i=1;$i<13;$i++)
00648 {
00649 $month[$i] = $i < 10 ? "0".$i : $i;
00650 }
00651 $month[0] = '';
00652 return ilUtil::formSelect($a_selected,$a_varname,$month,false,true);
00653
00654 case "year":
00655 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
00656 {
00657 $year[$i] = $i;
00658 }
00659 $year[0] = '';
00660 return ilUtil::formSelect($a_selected,$a_varname,$year,false,true);
00661 }
00662 }
00663
00664 function showBarometerById($a_id=0, $a_header = false){
00665 global $ilAccess,$ilUser;
00666 include_once('Services/Feedback/classes/class.ilFeedback.php');
00667 $feedback = new ilFeedback();
00668 $bid = $a_id ? $a_id :$_GET['barometer_id'];
00669 $feedback->setId($bid);
00670 $feedback->getBarometer();
00671 if($feedback->getId()&& ($feedback->canVote($ilUser->getId(),$feedback->getId())==1)){
00672 $tpl = new ilTemplate("tpl.feedback_vote.html", true,true, "Services/Feedback");
00673
00674 if ($a_header)
00675 {
00676 $tpl->setCurrentBlock("vote_head");
00677 $tpl->setVariable("IMG_VHEAD", ilUtil::getImagePath("icon_crs.gif"));
00678 $tpl->setVariable("TXT_CRS_TITLE", ilObject::_lookupTitle($feedback->getObjId()));
00679 $tpl->parseCurrentBlock();
00680 }
00681
00682 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this).'&fb_id='.$feedback->getId());
00683 $tpl->setVariable("TXT_TITLE", $feedback->getTitle());
00684 $tpl->setVariable("TXT_DESCRIPTION", $feedback->getDescription());
00685 $votes = unserialize($feedback->getVotes());
00686 $checked = 1;
00687 foreach($votes as $vote => $votetext){
00688 $radios.=ilUtil::formRadioButton($checked,'vote',$vote).$votetext.'<br>';
00689 $checked = 0;
00690 }
00691 $tpl->setVariable("TXT_SAVE",$this->lng->txt('save_vote'));
00692
00693 $tpl->setVariable("RADIO_VOTES",$radios);
00694 if($feedback->getTextAnswer()){
00695 $tpl->setCurrentBlock("text_answer");
00696 $tpl->setVariable("TXT_NOTE",$this->lng->txt('note'));
00697
00698 }
00699 $tpl->parseCurrentBlock();
00700
00701 return($tpl->get());
00702 }
00703
00704 }
00705 function _isRequiredFeedbackOnLogin(){
00706 global $ilUser;
00707 include_once('Services/Feedback/classes/class.ilFeedback.php');
00708 include_once('Modules/Course/classes/class.ilCourseParticipants.php');
00709
00710
00711 $feedback = new ilFeedback();
00712 $feedback->getFeedback();
00713
00714 $members_obj = ilCourseParticipants::_getInstanceByObjId($feedback->getObjId());
00715 if(($feedback->getId()) && ($members_obj->isAssigned($ilUser->getId())))
00716
00717 return($feedback->getRefId());
00718 else
00719 return(0);
00720
00721 }
00722
00723 function showBarometer(){
00724 global $ilUser;
00725 include_once('Services/Feedback/classes/class.ilFeedback.php');
00726
00727 $ilfeedback = new ilFeedback();
00728 $ilfeedback->setRefId($_GET['ref_id']);
00729 $feedbacks = $ilfeedback->getAllBarometer();
00730
00731
00732
00733 foreach($feedbacks as $feedback){
00734
00735 if($feedback->getId()&& ($feedback->canVote($ilUser->getId(),$feedback->getId())==1)){
00736 $tpl = new ilTemplate("tpl.feedback_vote.html", true,true, "Services/Feedback");
00737 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this).'&fb_id='.$feedback->getId());
00738 $tpl->setVariable("TXT_TITLE", $feedback->getTitle());
00739 $tpl->setVariable("TXT_DESCRIPTION", $feedback->getDescription());
00740 $votes = unserialize($feedback->getVotes());
00741 $checked = 1;
00742 foreach($votes as $vote => $votetext){
00743 $radios.=ilUtil::formRadioButton($checked,'vote',$vote).$votetext.'<br>';
00744 $checked = 0;
00745 }
00746 $tpl->setVariable("TXT_SAVE",$this->lng->txt('save_vote'));
00747 $tpl->setVariable("RADIO_VOTES",$radios);
00748 if($feedback->getTextAnswer()){
00749 $tpl->setCurrentBlock("text_answer");
00750 $tpl->setVariable("TXT_NOTE",$this->lng->txt('note'));
00751
00752 }
00753 $tpl->parseCurrentBlock();
00754
00755 return($tpl->get());
00756 }
00757 }
00758 }
00759 function saveVote(){
00760 global $ilUser;
00761 include_once('Services/Feedback/classes/class.ilFeedback.php');
00762
00763 $feedback = new ilFeedback();
00764 $feedback->setId($_GET['fb_id']);
00765 $feedback->getBarometer();
00766 $feedback->setVote(ilUtil::stripSlashes($_POST['vote']));
00767 $feedback->setNote(ilUtil::stripSlashes($_POST['text_answer']));
00768 if($feedback->getAnonymous())
00769 $feedback->setUserId(0);
00770 else
00771 $feedback->setUserId($ilUser->getId());
00772 $feedback->saveResult();
00773 $this->ctrl->returnToParent($this);
00774 }
00775 function selectbox($selected_itm, $name, $items, $params='',$first=''){
00776 $selected_ = '';
00777 $options = $first ? '<option value="">'.$first.'</option>'.chr(10) : '';
00778 if(is_Array($items)){
00779 foreach($items as $key => $item){
00780 $selected = ($key == $selected_itm) ? ' selected' : '';
00781 $options.='<option value="'.$key.'"'.$selected.'>'.$item.'</option>'.chr(10);
00782
00783 }
00784 }
00785 $content = '<select name="'.$name.'" '.$params.'>
00786 '.$options.'
00787 </select>';
00788 return($content);
00789 }
00790
00791 function getPDFeedbackListHTML(){
00792 global $ilUser, $ilAccess;
00793
00794 include_once('Services/Feedback/classes/class.ilFeedback.php');
00795 $feedback = new ilFeedback();
00796 $barometers = $feedback->getAllBarometer(0);
00797
00798 $tpl = new ilTemplate("tpl.feedback_pdbox.html", true,true, "Services/Feedback");
00799 $tpl->setVariable('TXT_TITLE',$this->lng->txt('feedback'));
00800 $rownum = 0;
00801 if(count($barometers)){
00802 foreach ($barometers as $barometer)
00803 {
00804
00805 if ($ilAccess->checkAccess("write", "", $barometer->getRefId()))
00806 {
00807 continue;
00808 }
00809 if($barometer->canVote($ilUser->getId(),$barometer->getId())==1)
00810 {
00811 $tpl->setCurrentBlock('tbl_row');
00812 $tpl->setVariable('ROWCOL', 'tblrow'.(($rownum++ % 2)+1));
00813 $this->ctrl->setParameter($this,"barometer_id",$barometer->getId());
00814 $link ='<a href="'.$this->ctrl->getLinkTargetByClass('ilfeedbackgui','voteform').'">'.$barometer->getTitle().'</a>';
00815
00816 $tpl->setVariable('BAROMETER_LINK',$link);
00817 $tpl->parseCurrentBlock();
00818 }
00819 }
00820 }
00821 $output = $rownum ? $tpl->get() : '' ;
00822 return($output);
00823 }
00824
00825 function getCRSFeedbackListHTML(){
00826 global $ilUser;
00827
00828 include_once('Services/Feedback/classes/class.ilFeedback.php');
00829 $feedback = new ilFeedback();
00830 $feedback->setRefId($_GET['ref_id']);
00831 $barometers = $feedback->getAllBarometer(0);
00832
00833 $tpl = new ilTemplate("tpl.feedback_pdbox.html", true,true, "Services/Feedback");
00834 $tpl->setVariable('TXT_TITLE',$this->lng->txt('feedback'));
00835 $rownum = 0;
00836 if(count($barometers)){
00837 foreach ($barometers as $barometer){
00838 if($barometer->canVote($ilUser->getId(),$barometer->getId())==1){
00839 $tpl->setCurrentBlock('tbl_row');
00840 $tpl->setVariable('ROWCOL', 'tblrow'.(($rownum++ % 2)+1));
00841 $this->ctrl->setParameter($this,"barometer_id",$barometer->getId());
00842 $link ='<a href="'.$this->ctrl->getLinkTargetByClass(array('ilinfoscreengui','ilfeedbackgui'),'fbList').'">'.$barometer->getTitle().'</a>';
00843
00844 $tpl->setVariable('BAROMETER_LINK',$link);
00845 $tpl->parseCurrentBlock();
00846 }
00847 }
00848 }
00849 $output = $rownum ? $tpl->get() : '' ;
00850 return($output);
00851 }
00852
00853 function handleRequiredFeedback($a_ref_id = 0)
00854 {
00855 global $ilUser;
00856
00857 include_once('Services/Feedback/classes/class.ilFeedback.php');
00858 $feedback = new ilFeedback();
00859 if ($a_ref_id > 0)
00860 {
00861 $feedback->setRefId($a_ref_id);
00862 }
00863 $barometers = $feedback->getAllBarometer(0,1);
00864
00865 $rownum = 0;
00866 if(count($barometers))
00867 {
00868 foreach ($barometers as $barometer)
00869 {
00870 if($barometer->canVote($ilUser->getId(),$barometer->getId())==1){
00871 $this->ctrl->setParameter($this,"barometer_id",$barometer->getId());
00872 $this->ctrl->redirectByClass(array("ilinfoscreengui", "ilfeedbackgui"), "showBarometerById");
00873 }
00874 }
00875 }
00876 }
00877
00878 function voteform($a_barometer_id=0){
00879 global $tpl;
00880
00881 $barometer_id = $a_barometer_id ? $a_barometer_id :$_GET['barometer_id'];
00882
00883 $tpl->setContent($this->showBarometerById($a_barometer_id, true));
00884
00885 $tpl->show();
00886
00887 }
00888 }
00889 ?>