• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

classes/class.ilObjExerciseGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 
00024 
00037 require_once "class.ilObjectGUI.php";
00038 
00039 class ilObjExerciseGUI extends ilObjectGUI
00040 {
00045         function ilObjExerciseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00046         {
00047                 $this->type = "exc";
00048                 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,false);
00049         }
00050 
00051         function getFiles()
00052         {
00053                 return $this->files ? $this->files : array();
00054         }
00055         function setFiles($a_files)
00056         {
00057                 $this->files = $a_files;
00058         }
00059 
00060         function createObject()
00061         {
00062                 parent::createObject();
00063 
00064                 // SET ADDITIONAL TEMPLATE VARIABLES
00065                 $this->tpl->setVariable("TXT_INSTRUCTION",$this->lng->txt("exc_instruction"));
00066                 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00067                 $this->tpl->setVariable("TXT_HOUR",$this->lng->txt("time_h"));
00068                 $this->tpl->setVariable("TXT_DAY",$this->lng->txt("time_d"));
00069                 $this->tpl->setVariable("SELECT_HOUR",$this->__getDateSelect("hour",(int) date("H",time())));
00070                 $this->tpl->setVariable("SELECT_MINUTES",$this->__getDateSelect("minutes",(int) date("i",time())));
00071                 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",(int) date("d",time())));
00072                 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",(int) date("m",time())));
00073                 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",1));
00074                 $this->tpl->setVariable("CMD_CANCEL", "cancel");
00075 
00076                 return true;
00077         }
00078 
00079         function viewObject()
00080         {
00081                 global $rbacsystem;
00082                 
00083                 if (strtolower($_GET["baseClass"]) == "iladministrationgui")
00084                 {
00085                         parent::viewObject();
00086                         return;
00087                 }
00088 
00089                 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00090                 {
00091                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00092                 }
00093                 $this->getTemplateFile("view", "exc");
00094 
00095                 $this->tpl->setVariable("FORM_DOWNLOAD_ACTION", $this->ctrl->getFormAction($this, "downloadFile"));
00096                 $this->tpl->setVariable("TITLE",$this->object->getTitle());
00097                 $this->tpl->setVariable("DESCRIPTION",$this->object->getDescription());
00098                 $this->tpl->setVariable("INSTRUCTION_TXT",$this->lng->txt("exc_instruction"));
00099                 $this->tpl->setVariable("INSTRUCTION",nl2br($this->object->getInstruction()));
00100                 $this->tpl->setVariable("EDIT_UNTIL_TXT",$this->lng->txt("exc_edit_until"));
00101                 $this->tpl->setVariable("EDIT_UNTIL",date("H:i, d.m.Y",$this->object->getTimestamp()));
00102 
00103                 $anyfiles = false;
00104                 foreach($this->object->getFiles() as $file)
00105                 {
00106                         $this->tpl->setCurrentBlock("FILES_ROW");
00107                         $this->tpl->setVariable("FILE_DATA",$file["name"]);
00108                         $this->tpl->setVariable("FILE_CHECK",ilUtil::formRadioButton(0,"file",urlencode($file["name"])));
00109                         $this->tpl->parseCurrentBlock();
00110                         $anyfiles = true;
00111                 }
00112 
00113                 if ($anyfiles)
00114                 {
00115                         $this->tpl->setCurrentBlock("FILES");
00116                         $this->tpl->setVariable("FILES_TXT",$this->lng->txt("exc_files"));
00117                         $this->tpl->setVariable("TXT_DOWNLOAD",$this->lng->txt("download"));
00118                         $this->tpl->setVariable("IMG",ilUtil::getImagePath("arrow_downright.gif"));
00119                         $this->tpl->parseCurrentBlock();
00120                 }
00121 
00122                 return true;
00123         }
00124 
00130         function deliverObject()
00131         {
00132                 global $ilUser;
00133                 require_once "./classes/class.ilUtil.php";
00134                 
00135                 if (mktime() > $this->object->getTimestamp())
00136                 {
00137                         sendInfo($this->lng->txt("exercise_time_over"));
00138                 }
00139                 else
00140                 {
00141                         if ($_POST["cmd"]["delete"])
00142                         {
00143                                 if (count($_POST["delivered"]))
00144                                 {
00145                                         $this->object->deleteDeliveredFiles($_POST["delivered"], $ilUser->id);
00146                                 }
00147                                 else
00148                                 {
00149                                         sendInfo($this->lng->txt("please_select_a_delivered_file_to_delete"));
00150                                 }
00151                         }
00152                         
00153                         if ($_POST["cmd"]["download"])
00154                         {
00155                                 if (count($_POST["delivered"]))
00156                                 {
00157                                         $this->object->members_obj->downloadSelectedFiles($_POST["delivered"]);
00158                                 }
00159                                 else
00160                                 {
00161                                         sendInfo($this->lng->txt("please_select_a_delivered_file_to_download"));
00162                                 }
00163                         }
00164         
00165                         $this->getTemplateFile("deliver_file", "exc");
00166                         $delivered_files = $this->object->getDeliveredFiles($ilUser->id);
00167                         $color_class = array("tblrow1", "tblrow2");
00168                         $counter = 0;
00169                         foreach ($delivered_files as $index => $file)
00170                         {
00171                                 $this->tpl->setCurrentBlock("delivered_row");
00172                                 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00173                                 $this->tpl->setVariable("FILE_ID", $file["returned_id"]);
00174                                 $this->tpl->setVariable("DELIVERED_FILE", $file["filetitle"]);
00175                                 preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $file["TIMESTAMP14"], $matches);
00176                                 $stamp = strtotime(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]));
00177                                 $date = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $stamp);
00178                                 $this->tpl->setVariable("DELIVERED_DATE", $date);
00179                                 $this->tpl->parseCurrentBlock();
00180                                 $counter++;
00181                         }
00182                         if (count($delivered_files))
00183                         {
00184                                 $this->tpl->setCurrentBlock("footer_content");
00185                                 $this->tpl->setVariable("ARROW_SIGN", ilUtil::getImagePath("arrow_downright.gif"));
00186                                 $this->tpl->setVariable("BUTTON_DELETE", $this->lng->txt("delete"));
00187                                 $this->tpl->setVariable("BUTTON_DOWNLOAD", $this->lng->txt("download"));
00188                                 $this->tpl->parseCurrentBlock();
00189                         }
00190                         else
00191                         {
00192                                 $this->tpl->setCurrentBlock("footer_empty");
00193                                 $this->tpl->setVariable("TEXT_NO_DELIVERED_FILES", $this->lng->txt("message_no_delivered_files"));
00194                                 $this->tpl->parseCurrentBlock();
00195                         }
00196                         $this->tpl->setCurrentBlock("delivered_files");
00197                         $this->tpl->setVariable("DELIVER_FORMACTION", $this->getFormAction("deliver", "exercise.php?cmd=deliver&ref_id=".$this->ref_id));
00198                         $this->tpl->setVariable("TEXT_DATE", $this->lng->txt("date"));
00199                         $this->tpl->setVariable("TEXT_DELIVERED_FILENAME", $this->lng->txt("filename"));
00200                         $this->tpl->setVariable("TEXT_HEADING_DELIVERED_FILES", $this->lng->txt("already_delivered_files"));
00201                         $this->tpl->parseCurrentBlock();
00202                         $this->tpl->setCurrentBlock("adm_content");
00203                         $this->tpl->setVariable("FORMACTION", $this->getFormAction("deliverFile", "exercise.php?cmd=deliverFile&ref_id=".$this->ref_id));
00204                         $this->tpl->setVariable("BUTTON_DELIVER", $this->lng->txt("upload"));
00205                         $this->tpl->setVariable("TEXT_FILENAME", $this->lng->txt("enter_filename_deliver"));
00206                         $this->tpl->parseCurrentBlock();
00207                 }
00208         }
00209         
00210         function deliverFileObject()
00211         {
00212                 global $ilUser;
00213 
00214                 if(!$this->object->deliverFile($_FILES["deliver"], $ilUser->id))
00215                 {
00216                         sendInfo($this->lng->txt("exc_upload_error"),true);
00217                 }
00218                 $this->deliverObject();
00219         }
00220         
00221         function downloadFileObject()
00222         {
00223                 global $rbacsystem;
00224 
00225                 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00226                 {
00227                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00228                 }
00229                 if(!isset($_POST["file"]))
00230                 {
00231                         sendInfo($this->lng->txt("exc_select_one_file"),true);
00232                         $this->ctrl->redirect($this, "view");
00233                 }
00234                 $files = $this->object->getFiles();
00235                 $file_exist = false;
00236 
00237                 foreach($this->object->getFiles() as $file)
00238                 {
00239                         if($file["name"] == urldecode($_POST["file"]))
00240                         {
00241                                 $file_exist = true;
00242                                 break;
00243                         }
00244                 }
00245                 if(!$file_exist)
00246                 {
00247                         echo "FILE DOES NOT EXIST";
00248                         exit;
00249                 }
00250                 ilUtil::deliverFile($this->object->file_obj->getAbsolutePath(urldecode($_POST["file"])),
00251                                                         urldecode($_POST["file"]));
00252 
00253                 return true;
00254         }
00255 
00260         function saveObject()
00261         {
00262                 global $rbacadmin;
00263 
00264                 // CHECK INPUT
00265                 include_once("./classes/class.ilObjExercise.php");
00266                 $tmp_obj =& new ilObjExercise();
00267 
00268                 $tmp_obj->setDate($_POST["d_hour"],$_POST["d_minutes"],$_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00269                 if(!$tmp_obj->checkDate())
00270                 {
00271                         $this->ilias->raiseError($this->lng->txt("exc_date_not_valid"), $this->ilias->error_obj->MESSAGE);
00272                 }
00273                 unset($tmp_obj);
00274                 // END INPUT CHECK
00275 
00276                 // always call parent method first to create an object_data entry & a reference
00277                 $newObj = parent::saveObject();
00278 
00279                 // setup rolefolder & default local roles if needed (see ilObjForum & ilObjForumGUI for an example)
00280                 //$roles = $newObj->initDefaultRoles();
00281 
00282                 // put here your object specific stuff  
00283                 
00284                 $newObj->setDate($_POST["d_hour"],$_POST["d_minutes"],$_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00285         
00286                 $newObj->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00287                 $newObj->saveData();
00288 
00289                 // always send a message
00290                 sendInfo($this->lng->txt("exc_added"),true);
00291                 ilUtil::redirect("exercise.php?ref_id=".$newObj->getRefId()."&cmd=edit");
00292         }
00293 
00294         function editObject()
00295         {
00296                 global $rbacsystem;
00297 
00298                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00299                 {
00300                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00301                 }
00302                 // LOAD SAVED DATA IN CASE OF ERROR
00303                 $title = $_SESSION["error_post_vars"]["Fobject"]["title"] ?
00304                         ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true) :
00305                         ilUtil::prepareFormOutput($this->object->getTitle());
00306                 $desc  = $_SESSION["error_post_vars"]["Fobject"]["desc"] ?
00307                         $_SESSION["error_post_vars"]["Fobject"]["desc"] :
00308                         $this->object->getDescription();
00309 
00310                 $instruction  = $_SESSION["error_post_vars"]["Fobject"]["instruction"] ?
00311                         $_SESSION["error_post_vars"]["Fobject"]["instruction"] :
00312                         $this->object->getInstruction();
00313 
00314                 $hour  = $_SESSION["error_post_vars"]["Fobject"]["d_hour"] ?
00315                         $_SESSION["error_post_vars"]["Fobject"]["d_hour"] :
00316                         date("H",$this->object->getTimestamp());
00317 
00318                 $minutes  = $_SESSION["error_post_vars"]["Fobject"]["d_minutes"] ?
00319                         $_SESSION["error_post_vars"]["Fobject"]["d_minutes"] :
00320                         date("i",$this->object->getTimestamp());
00321 
00322                 $day  = $_SESSION["error_post_vars"]["Fobject"]["d_day"] ?
00323                         $_SESSION["error_post_vars"]["Fobject"]["d_day"] :
00324                         date("d",$this->object->getTimestamp());
00325 
00326                 $month  = $_SESSION["error_post_vars"]["Fobject"]["d_month"] ?
00327                         $_SESSION["error_post_vars"]["Fobject"]["d_month"] :
00328                         date("m",$this->object->getTimestamp());
00329 
00330                 $year  = $_SESSION["error_post_vars"]["Fobject"]["year"] ?
00331                         $_SESSION["error_post_vars"]["Fobject"]["year"] :
00332                         date("Y",$this->object->getTimestamp());
00333                 
00334                 // SET TPL VARIABLES
00335                 $this->getTemplateFile("edit","exc");
00336 
00337                 // TEXT VAIRABLES
00338                 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00339                 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
00340                 $this->tpl->setVariable("TXT_INSTRUCTION", $this->lng->txt("exc_instruction"));
00341                 $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("exc_edit_exercise"));
00342                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00343                 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
00344                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00345                 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00346                 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("save"));
00347                 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00348 
00349 
00350                 // SHOW INPUT
00351                 $this->tpl->setVariable("TITLE",$title);
00352                 $this->tpl->setVariable("DESC",$desc);
00353                 $this->tpl->setVariable("INSTRUCTION",$instruction);
00354                 
00355 
00356 
00357                 // SHOW DATE SELECTS
00358                 $this->tpl->setVariable("TXT_HOUR",$this->lng->txt("time_h"));
00359                 $this->tpl->setVariable("TXT_DAY",$this->lng->txt("time_d"));
00360                 $this->tpl->setVariable("SELECT_HOUR",$this->__getDateSelect("hour",$hour));    
00361                 $this->tpl->setVariable("SELECT_MINUTES",$this->__getDateSelect("minutes",$minutes));
00362                 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",$day));
00363                 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",$month));
00364                 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",$year));
00365                 
00366                 $this->tpl->setVariable("CMD_SUBMIT","update");
00367                 $this->tpl->setVariable("CMD_CANCEL","cancelEdit");
00368 
00369                 // SHOW FILES
00370                 if(count($files = $this->object->getFiles()))
00371                 {
00372                         foreach($files as $file)
00373                         {
00374                                 $this->tpl->setCurrentBlock("FILE_ROW");
00375                                 $this->tpl->setVariable("ROW_FILE",$file["name"]);
00376                                 $this->tpl->setVariable("ROW_CHECKBOX",$this->lng->txt("exc_ask_delete")."&nbsp".
00377                                                                                 ilUtil::formCheckbox(0,"delete_file[]",$file["name"]));
00378                                 $this->tpl->parseCurrentBlock();
00379                         }
00380                         $this->tpl->setCurrentBlock("FILE_DATA");
00381                         $this->tpl->setVariable("TXT_FILES",$this->lng->txt("exc_files").":");
00382                         $this->tpl->parseCurrentBlock();
00383                 }
00384 
00385                 $this->tpl->setCurrentBlock("FILES");
00386                 $this->tpl->setVariable("TXT_HEADER_FILE",$this->lng->txt("file_add"));
00387                 $this->tpl->setVariable("TXT_FILE",$this->lng->txt("file"));
00388                 $this->tpl->setVariable("TXT_UPLOAD",$this->lng->txt("upload"));
00389                 $this->tpl->setVariable("FORMACTION_FILE", $this->ctrl->getFormAction($this));
00390                 $this->tpl->setVariable("CMD_FILE_SUBMIT","uploadFile");
00391                 $this->tpl->parseCurrentBlock();
00392 
00393         }
00394 
00395         function updateObject()
00396         {
00397                 global $rbacsystem;
00398 
00399                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00400                 {
00401                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00402                 }
00403           
00404                 $this->object->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00405                 $this->object->setDate($_POST["d_hour"],$_POST["d_minutes"],$_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00406                 if($_POST["delete_file"])
00407                 {
00408                         $this->object->deleteFiles($_POST["delete_file"]);
00409                 }
00410                 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00411                 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00412                 $this->update = $this->object->update();
00413 
00414                 sendInfo($this->lng->txt("msg_obj_modified"),true);
00415 
00416                 $this->ctrl->redirect($this, "edit");
00417 
00418         }
00419         
00420         function cancelEditObject()
00421         {
00422                 sendInfo($this->lng->txt("msg_cancel"),true);
00423                 $this->ctrl->redirect($this, "view");
00424         }
00425                 
00426         function uploadFileObject()
00427         {
00428                 global $rbacsystem;
00429                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00430                 {
00431                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00432                 }
00433                 if(!$this->object->addUploadedFile($_FILES["file"]))
00434                 {
00435                         sendInfo($this->lng->txt("exc_upload_error"),true);
00436                 }
00437                 $this->ctrl->redirect($this, "edit");
00438         }
00439         
00440         function updateMembersObject()
00441         {
00442                 global $rbacsystem;
00443 
00444                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00445                 {
00446                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00447                 }
00448 
00449                 if ($_POST["downloadReturned"])
00450                 {
00451                         $this->object->members_obj->deliverReturnedFiles(key($_POST["downloadReturned"]));
00452                         exit;
00453                 }
00454                 else
00455                 {
00456                         switch($_POST["action"])
00457                         {
00458                                 case "save_status":
00459                                         $this->__saveStatus();
00460                                         sendInfo($this->lng->txt("exc_status_saved"),true);
00461                                         break;
00462                                 case "send_member":
00463                                         if(!count($_POST["member"]))
00464                                         {
00465                                                 sendInfo($this->lng->txt("select_one"),true);
00466                                         }
00467                                         else
00468                                         {
00469                                                 $this->object->send($_POST["member"]);
00470                                                 sendInfo($this->lng->txt("exc_sent"),true);
00471                                         }
00472                                         break;
00473                                 case "delete_member":
00474                                         $this->__deassignMembers();
00475                                         break;
00476                         }
00477                 }
00478                 $this->ctrl->redirect($this, "members");
00479         }
00480                 
00481         function membersObject()
00482         {
00483                 global $rbacsystem;
00484 
00485                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00486                 {
00487                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00488                 }
00489                 
00490                 //add template for buttons
00491                 $this->tpl->addBlockfile("BUTTONS", "buttons", "tpl.buttons.html");
00492 
00493                 // add member button
00494                 $this->tpl->setCurrentBlock("btn_cell");
00495                 $this->tpl->setVariable("BTN_LINK", $this->ctrl->getLinkTarget($this, 'newmembers'));
00496                 $this->tpl->setVariable("BTN_TXT",$this->lng->txt("add_member"));
00497                 $this->tpl->parseCurrentBlock();
00498 
00499                 $this->getTemplateFile("members","exc");
00500 
00501                 if(!count($this->object->members_obj->getMembers()))
00502                 {
00503                         sendInfo($this->lng->txt("exc_no_members_assigned"));
00504                 }
00505                 else
00506                 {
00507                         $counter = 0;
00508                         foreach($this->object->members_obj->getMembers() as $member_id)
00509                         {
00510                                 include_once "./classes/class.ilObjectFactory.php";
00511 
00512                                 if(!($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false)))
00513                                 {
00514                                         continue;
00515                                 }
00516                                 $f_result[$counter][]   = ilUtil::formCheckbox(0,"member[$member_id]",1);
00517                                 $f_result[$counter][]   = $tmp_obj->getLogin();
00518                                 $f_result[$counter][]   = $tmp_obj->getFirstname();
00519                                 $f_result[$counter][]   = $tmp_obj->getLastname();
00520                                 $f_result[$counter][]   = array("notice[$member_id]",
00521                                                                                                 ilUtil::prepareFormOutput($this->object->members_obj->getNoticeByMember($member_id)));
00522                                 if ($this->object->members_obj->hasReturned($member_id))
00523                                 {
00524                                         $f_result[$counter][]   = "<input class=\"submit\" type=\"submit\" name=\"downloadReturned[$member_id]\" value=\"" . 
00525                                                 $this->lng->txt("download") . "\" />";
00526                                 }
00527                                 else
00528                                 {
00529                                         $f_result[$counter][]   = "";
00530                                 }
00531                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusReturnedByMember($member_id),
00532                                                                                                                            "returned[$member_id]",1);
00533                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusSolvedByMember($member_id),
00534                                                                                                                            "solved[$member_id]",1);
00535                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusSentByMember($member_id),
00536                                                                                                                            "sent[$member_id]",1);
00537 
00538                                 $member_ids[] = $member_id;
00539 
00540                                 unset($tmp_obj);
00541                                 ++$counter;
00542                         }
00543                         $this->__showMembersTableContent($this->__showMembersTable($f_result,$member_ids));
00544                         
00545                         
00546                         if(count($this->object->members_obj->getAllDeliveredFiles()))
00547                         {
00548                                 $this->tpl->addBlockFile("SPECIAL_BUTTONS", "special_buttons", "tpl.exc_download_all.html");
00549                                 $this->tpl->setCurrentBlock("download_all");
00550                                 $this->tpl->setVariable("BUTTON_DOWNLOAD_ALL", $this->lng->txt("download_all_returned_files"));
00551                                 $this->tpl->setVariable("FORMACTION", 
00552                                                                                 $this->getFormAction("downloadAll", "exercise.php?cmd=downloadAll&ref_id=".$this->ref_id));
00553                                 $this->tpl->parseCurrentBlock();
00554                         }
00555                 }
00556         }
00557         
00558         function downloadAllObject()
00559         {
00560                 $members = array();
00561 
00562                 foreach($this->object->members_obj->getMembers() as $member_id)
00563                 {
00564                         $tmp_obj =& ilObjectFactory::getInstanceByObjId($member_id);
00565                         $members[$member_id] = $tmp_obj->getFirstname() . " " . $tmp_obj->getLastname();
00566                         unset($tmp_obj);
00567                 }
00568 
00569                 $this->object->file_obj->downloadAllDeliveredFiles($members);
00570         }
00571         
00572         function newMembersObject()
00573         {
00574                 global $rbacsystem;
00575 
00576                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00577                 {
00578                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00579                 }
00580 
00581                 // SEARCH CANCELED
00582                 if(isset($_POST["cancel"]))
00583                 {
00584                         $this->ctrl->redirect($this, "members");
00585                 }
00586                 
00587                 if(isset($_POST["select"]))
00588                 {
00589                         if(is_array($_POST["id"]))
00590                         {
00591                                 if(!$this->object->members_obj->assignMembers($_POST["id"]))
00592                                 {
00593                                         sendInfo($this->lng->txt("exc_members_already_assigned"),true);
00594                                 }
00595                                 else
00596                                 {
00597                                         sendInfo($this->lng->txt("exc_members_assigned"),true);
00598                                 }
00599                                 $this->ctrl->redirect($this, "members");
00600                         }
00601                 }
00602                 $show_search = true;
00603 
00604                 $this->getTemplateFile("add_member","exc");
00605                 $this->tpl->setVariable("F_ACTION",$this->ctrl->getLinkTarget($this, "newMembers"));
00606                 
00607                 if($_POST["search_str"])
00608                 {
00609                         $result = $this->__searchMembers(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"]);
00610                         
00611                         switch(count($result))
00612                         {
00613                                 case 0:
00614                                         // SHOW ERROR MESSAGE
00615                                         sendInfo($this->lng->txt("cont_no_object_found"));
00616                                         break;
00617 
00618                                 case 1:
00619                                         $result = $this->__getMembersOfObject($result,$_POST["search_for"]);
00620                                         $this->__showMembersSelect($result);
00621                                         $show_search = false;
00622                                         break;
00623 
00624                                 default:
00625                                         if($_POST["search_for"] == 'usr')
00626                                         {
00627                                                 $this->__showMembersSelect($result);
00628                                         }
00629                                         else
00630                                         {
00631                                                 $this->__showObjectSelect($result,$_POST["search_for"]);
00632                                         }
00633                                         $show_search = false;
00634                                         break;
00635                         }
00636                 }
00637                 if($_POST["obj_select"])
00638                 {
00639                         if(count($_POST["obj"]))
00640                         {
00641                                 $result = $this->__getMembersOfObject($_POST["obj"],"grp");
00642                                 $this->__showMembersSelect($result);
00643                                 $show_search = false;
00644                         }
00645                 }
00646 
00647 
00648                 if($show_search)
00649                 {
00650                         $this->lng->loadLanguageModule("content");
00651                         $this->lng->loadLanguageModule("search");
00652 
00653                         $search_for = array("usr" => $this->lng->txt("exc_users"),
00654                                                                 "grp"   => $this->lng->txt("exc_groups"));
00655 #                                                               "role"  => $this->lng->txt("!!Rollen"));
00656                         
00657                         $counter = 0;
00658                         foreach($search_for as $key => $value)
00659                         {
00660                                 $this->tpl->setCurrentBlock("USR_SEARCH_ROW");
00661                                 $this->tpl->setVariable("SEARCH_ROW_CHECK",ilUtil::formRadioButton(++$counter == 1 ? 1 : 0,"search_for",$key));
00662                                 $this->tpl->setVariable("SEARCH_ROW_TXT",$value);
00663                                 $this->tpl->parseCurrentBlock();
00664                         }
00665                         $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("add_member"));
00666                         $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
00667                         $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
00668                         $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
00669                         $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00670                 }
00671         }
00672 
00673         // PRIVATE METHODS
00674         function __showMembersTableContent($a_data)
00675         {
00676                 
00677                 $counter = 0;
00678                 foreach($a_data as $row)
00679                 {
00680                         foreach($row as $key => $column)
00681                         {
00682                                 switch($key)
00683                                 {
00684                                         case 4:
00685                                                 $this->tpl->setCurrentBlock("form_input");
00686                                                 $this->tpl->setVariable("ROW_INPUT_NAME",$column[0]);
00687                                                 $this->tpl->setVariable("ROW_INPUT_VALUE",$column[1]);
00688                                                 $this->tpl->parseCurrentBlock();
00689                                                 break;
00690 
00691                                         default:
00692                                                 $this->tpl->setCurrentBlock("text");
00693                                                 $this->tpl->setVariable("ROW_TEXT",$column);
00694                                                 $this->tpl->parseCurrentBlock();
00695 
00696                                                 break;
00697                                 }
00698                                 $this->tpl->setCurrentBlock("table_cell");
00699                                 $this->tpl->parseCurrentBlock();
00700                         }
00701                         $this->tpl->setCurrentBlock("row");
00702                         $this->tpl->setVariable("ROW_CSS",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00703                         $this->tpl->parseCurrentBlock();
00704                 }
00705                 $this->tpl->setCurrentBlock("tbl_content");
00706                 $this->tpl->parseCurrentBlock();
00707 
00708                 return true;
00709         }
00710 
00711         function __getMembersOfObject($a_result,$a_type)
00712         {
00713 
00714                 switch($a_type)
00715                 {
00716                         case "usr":
00717                                 return $a_result;
00718 
00719                         case "grp":
00720                                 include_once "./classes/class.ilObjGroup.php";
00721 
00722                                 $all_members = array();
00723                                 foreach($a_result as $group)
00724                                 {
00725                                         $tmp_grp_obj = ilObjectFactory::getInstanceByRefId($group["id"]);
00726                                         
00727                                         $members = $tmp_grp_obj->getGroupMemberIds();
00728                                         $all_members = array_merge($all_members,$members);
00729                                 }
00730                                 // FORMAT ARRAY
00731                                 $all_members = array_unique($all_members);
00732                                 foreach($all_members as $member)
00733                                 {
00734                                         $result[] = array("id" => $member);
00735                                 }
00736                                 return $result;
00737                 }
00738                 return true;
00739         }
00740                                         
00741         function __showObjectSelect($a_result,$a_type)
00742         {
00743                 include_once "./classes/class.ilObjectFactory.php";
00744                 
00745                 foreach($a_result as $obj)
00746                 {
00747                         $tmp_obj =& ilObjectFactory::getInstanceByRefId($obj["id"]);
00748 
00749                         $this->tpl->setCurrentBlock("OBJ_SELECT_ROW");
00750                         $this->tpl->setVariable("OBJ_ROW_TITLE",$tmp_obj->getTitle());
00751                         $this->tpl->setVariable("OBJ_ROW_ID",$tmp_obj->getRefId());
00752                         $this->tpl->setVariable("OBJ_ROW_DESCRIPTION",$tmp_obj->getDescription());
00753                         $this->tpl->parseCurrentBlock();
00754                         
00755                         unset($tmp_obj);
00756                 }
00757                 $this->tpl->setCurrentBlock("OBJ_SELECT");
00758                 $this->tpl->setVariable("OBJ_SELECT_TITLE",$this->lng->txt("title"));
00759                 $this->tpl->setVariable("OBJ_SELECT_DESCRIPTION",$this->lng->txt("description"));
00760 
00761                 $this->tpl->setVariable("OBJ_BTN1_VALUE",$this->lng->txt("select"));
00762                 $this->tpl->setVariable("OBJ_BTN2_VALUE",$this->lng->txt("cancel"));
00763 
00764                 $this->tpl->parseCurrentBlock();
00765         }
00766 
00767         function __showMembersSelect($a_result)
00768         {
00769                 include_once "./classes/class.ilObjectFactory.php";
00770                 include_once "./classes/class.ilUtil.php";
00771                 
00772                 $ids = array();
00773 
00774                 foreach($a_result as $user)
00775                 {
00776                   array_push($ids, $user["id"]);
00777 
00778                         $tmp_obj =& ilObjectFactory::getInstanceByObjId($user["id"]);
00779 
00780                         $this->tpl->setCurrentBlock("USR_SELECT_ROW");
00781                         $this->tpl->setVariable("ROW_LOGIN",$tmp_obj->getLogin());
00782                         $this->tpl->setVariable("NAME_ID","id_".$tmp_obj->getId());
00783                         $this->tpl->setVariable("ROW_ID",$tmp_obj->getId());
00784                         $this->tpl->setVariable("ROW_FIRSTNAME",$tmp_obj->getFirstname());
00785                         $this->tpl->setVariable("ROW_LASTNAME",$tmp_obj->getLastname());
00786                         $this->tpl->parseCurrentBlock();
00787                         
00788                         unset($tmp_obj);
00789                 }
00790 
00791                 $this->tpl->setCurrentBlock("USR_SELECT");
00792                 $this->tpl->setVariable("SELECT_LOGIN",$this->lng->txt("login"));
00793                 $this->tpl->setVariable("SELECT_FIRSTNAME",$this->lng->txt("firstname"));
00794                 $this->tpl->setVariable("SELECT_LASTNAME",$this->lng->txt("lastname"));
00795 
00796                 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("assign"));
00797                 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00798                 $this->tpl->setVariable("JS_VARNAME","id");
00799                 $this->tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($ids));
00800                 $this->tpl->setVariable("TXT_CHECKALL",$this->lng->txt("check_all"));
00801                 $this->tpl->setVariable("TXT_UNCHECKALL",$this->lng->txt("uncheck_all"));
00802 
00803                 $this->tpl->parseCurrentBlock();
00804         }
00805         function __searchMembers($a_search_str,$a_search_for)
00806         {
00807                 include_once("./classes/class.ilSearch.php");
00808 
00809                 $this->lng->loadLanguageModule("content");
00810 
00811                 $search =& new ilSearch($_SESSION["AccountId"]);
00812                 $search->setPerformUpdate(false);
00813                 $search->setSearchString(ilUtil::stripSlashes($_POST["search_str"]));
00814                 $search->setCombination("and");
00815                 $search->setSearchFor(array(0 => $a_search_for));
00816                 $search->setSearchType('new');
00817 
00818                 if($search->validate($message))
00819                 {
00820                         $search->performSearch();
00821                 }
00822                 else
00823                 {
00824                         sendInfo($message,true);
00825                         $this->ctrl->redirect($this, "newMembers");
00826                 }
00827                 return $search->getResultByType($a_search_for);
00828         }               
00829         function __deassignMembers()
00830         {
00831                 if(is_array($_POST["member"]))
00832                 {
00833                         foreach($_POST["member"] as $usr_id => $member)
00834                         {
00835                                 $this->object->members_obj->deassignMember($usr_id);
00836                         }
00837                         return true;
00838                 }
00839                 else
00840                 {
00841                         sendInfo($this->lng->txt("select_one"),true);
00842                         return false;
00843                 }
00844         }
00845 
00846         function __saveStatus()
00847         {
00848                 foreach($this->object->members_obj->getMembers() as $member)
00849                 {
00850                         if(!isset($_POST['notice'][$member]))
00851                         {
00852                                 continue;
00853                         }
00854                         $this->object->members_obj->setNoticeForMember($member,ilUtil::stripSlashes($_POST["notice"][$member]));
00855                         $this->object->members_obj->setStatusSolvedForMember($member,$_POST["solved"][$member] ? 1 : 0);
00856                         $this->object->members_obj->setStatusSentForMember($member,$_POST["sent"][$member] ? 1 : 0);
00857                         $this->object->members_obj->setStatusReturnedForMember($member,$_POST["returned"][$member] ? 1 : 0);
00858                 }
00859                 return true;
00860         }
00861 
00862         function __showMembersTable($a_data,$a_member_ids)
00863         {
00864                 global $ilUser;
00865 
00866                 $actions = array("save_status"          => $this->lng->txt("exc_save_changes"),
00867                                                  "send_member"          => $this->lng->txt("exc_send_exercise"),
00868                                                  "delete_member"        => $this->lng->txt("exc_deassign_members"));
00869 
00870                 $this->tpl->addBlockFile("MEMBER_TABLE","member_table","tpl.table.html");
00871                 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.exc_members_row.html");
00872 
00873 
00874                 // SET FORMAACTION
00875                 $this->tpl->setCurrentBlock("tbl_form_header");
00876                 
00877                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getLinkTarget($this, "updateMembers"));
00878                 
00879                 $this->tpl->parseCurrentBlock();
00880 
00881                 // SET FOOTER BUTTONS
00882                 $this->tpl->setCurrentBlock("tbl_action_row");
00883 
00884 
00885                 // show select all
00886                 if (count($a_member_ids))
00887                 {
00888                         // set checkbox toggles
00889                         $this->tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00890                         $this->tpl->setVariable("JS_VARNAME","member");                 
00891                         $this->tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_member_ids));
00892                         $this->tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00893                         $this->tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00894                         $this->tpl->parseCurrentBlock();
00895                 }
00896 
00897 
00898 
00899                 $this->tpl->setVariable("COLUMN_COUNTS",6);
00900                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00901 
00902                 $this->tpl->setCurrentBlock("tbl_action_select");
00903                 $this->tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
00904                 $this->tpl->setVariable("BTN_NAME","execute");
00905                 $this->tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
00906                 $this->tpl->parseCurrentBlock();
00907 
00908                 $this->tpl->setCurrentBlock("tbl_action_row");
00909                 $this->tpl->setVariable("COLUMN_COUNTS",9);
00910                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00911                 $this->tpl->parseCurrentBlock();
00912 
00913                 include_once "./classes/class.ilTableGUI.php";
00914 
00915                 $tbl = new ilTableGUI();
00916 
00917                 $tbl->setTitle($this->lng->txt("exc_header_members"),"icon_usr.gif",$this->lng->txt("exc_header_members"));
00918                 $tbl->setHeaderNames(array('',$this->lng->txt("login"),
00919                                                                    $this->lng->txt("firstname"),
00920                                                                    $this->lng->txt("lastname"),
00921                                                                    $this->lng->txt("exc_notices"),
00922                                                                    $this->lng->txt("exc_files_returned"),
00923                                                                    $this->lng->txt("exc_status_returned"),
00924                                                                    $this->lng->txt("exc_status_solved"),
00925                                                                    $this->lng->txt("sent")));
00926                 $tbl->setHeaderVars(array("","login","firstname","lastname","","","","",""),
00927                                                         array("ref_id" => $this->object->getRefId(),
00928                                                                   "cmd" => "members"));
00929                 $tbl->setColumnWidth(array("5%","10%","10%","10%","30%","15%","7%","7%","7%"));
00930                 $tbl->disable('content');
00931 
00932                 $tbl->setOrderColumn($_GET["sort_by"]);
00933                 $tbl->setOrderDirection($_GET["sort_order"]);
00934                 $tbl->setLimit($ilUser->getPref('hits_per_page'));
00935                 $tbl->setMaxCount(count($a_data));
00936                 $tbl->setOffset($_GET["offset"] ? $_GET["offset"] : 0);
00937                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00938                 $tbl->setData($a_data);
00939                 $tbl->sortData();
00940                 $tbl->render();
00941                 
00942                 return $tbl->getData();
00943         }
00944 
00945         function __getDateSelect($a_type,$a_selected)
00946         {
00947                 switch($a_type)
00948                 {
00949                         case "hour":
00950                                 for($i=0;$i<24;$i++)
00951                                 {
00952                                         $hours[$i] = $i < 10 ? "0".$i : $i;
00953                                 }
00954                                 return ilUtil::formSelect($a_selected,"d_hour",$hours,false,true);
00955 
00956                         case "minutes":
00957                                 for($i=0;$i<60;$i++)
00958                                 {
00959                                         $minutes[$i] = $i < 10 ? "0".$i : $i;
00960                                 }
00961                                 return ilUtil::formSelect($a_selected,"d_minutes",$minutes,false,true);
00962 
00963                         case "day":
00964                                 for($i=1;$i<32;$i++)
00965                                 {
00966                                         $days[$i] = $i < 10 ? "0".$i : $i;
00967                                 }
00968                                 return ilUtil::formSelect($a_selected,"d_day",$days,false,true);
00969                                 
00970                         case "month":
00971                                 for($i=1;$i<13;$i++)
00972                                 {
00973                                         $month[$i] = $i < 10 ? "0".$i : $i;
00974                                 }
00975                                 return ilUtil::formSelect($a_selected,"d_month",$month,false,true);
00976 
00977                         case "year":
00978                                 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
00979                                 {
00980                                         $year[$i] = $i;
00981                                 }
00982                                 return ilUtil::formSelect($a_selected,"d_year",$year,false,true);
00983                 }
00984         }
00985 
00986         function __filterAssignedUsers($a_result)
00987         {
00988                 foreach($a_result as $user)
00989                 {
00990                         if(!$this->object->members_obj->isAssigned($user["id"]))
00991                         {
00992                                 $filtered[] = $user;
00993                         }
00994                 }
00995                 return $filtered ? $filtered : array();
00996         }
00997         
01003         function getTabs(&$tabs_gui)
01004         {
01005                 global $rbacsystem;
01006 
01007 //if ($this->ctrl->getCmd() != "gateway")
01008 //echo "-".$this->ctrl->getCmd()."-";
01009 
01010                 // view
01011                 $tabs_gui->addTarget("view",
01012                         $this->ctrl->getLinkTarget($this, 'view'),
01013                         array("view",""), "");
01014 
01015                 // edit properties
01016                 if ($rbacsystem->checkAccess("write", $this->ref_id))
01017                 {
01018                         $tabs_gui->addTarget("edit_properties",
01019                                 $this->ctrl->getLinkTarget($this, 'edit'),
01020                                 "edit", "");
01021                 }
01022 
01023                 // deliver exercise
01024                 $tabs_gui->addTarget("deliver",
01025                         $this->ctrl->getLinkTarget($this, 'deliver'),
01026                         array("deliver", "deliverFile"), "");
01027 
01028                 // members
01029                 if ($rbacsystem->checkAccess("write", $this->ref_id))
01030                 {
01031                         $tabs_gui->addTarget("show_members",
01032                                 $this->ctrl->getLinkTarget($this, 'members'),
01033                                 array("members", "newMembers", "newmembers"), "");
01034 
01035                         // add member
01036                         /*
01037                         $tabs_gui->addTarget("add_member",
01038                                 $this->ctrl->getLinkTarget($this, 'newmembers'),
01039                                 "newmembers", get_class($this));
01040                         */
01041                 }
01042 
01043                 // permissions
01044                 if ($rbacsystem->checkAccess("edit_permission", $this->ref_id))
01045                 {
01046                         $tabs_gui->addTarget("perm_settings",
01047                                 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
01048                 }
01049         }
01050         
01051         function &executeCommand()
01052         {
01053                 $next_class = $this->ctrl->getNextClass($this);
01054                 $cmd = $this->ctrl->getCmd();
01055                 $this->prepareOutput();
01056 
01057 //echo "-".$next_class."-".$cmd."-"; exit;
01058                 switch($next_class)
01059                 {
01060                         case 'ilpermissiongui':
01061                                         include_once("./classes/class.ilPermissionGUI.php");
01062                                         $perm_gui =& new ilPermissionGUI($this);
01063                                         $ret =& $this->ctrl->forwardCommand($perm_gui);
01064                                 break;
01065 
01066                         default:
01067                         
01068                                 if(!$cmd)
01069                                 {
01070                                         $cmd = "view";
01071                                 }
01072 
01073                                 $cmd .= "Object";
01074 
01075                                 $this->$cmd();
01076                                         
01077                                 break;
01078                 }
01079 
01080                 return true;
01081         }       
01082 } // END class.ilObjExerciseGUI
01083 ?>

Generated on Fri Dec 13 2013 11:57:54 for ILIAS Release_3_6_x_branch .rev 46809 by  doxygen 1.7.1