• 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 
00035 require_once "class.ilObjectGUI.php";
00036 
00037 class ilObjExerciseGUI extends ilObjectGUI
00038 {
00043         function ilObjExerciseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00044         {
00045                 $this->type = "exc";
00046                 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00047         }
00048 
00049         function getFiles()
00050         {
00051                 return $this->files ? $this->files : array();
00052         }
00053         function setFiles($a_files)
00054         {
00055                 $this->files = $a_files;
00056         }
00057 
00058         function createObject()
00059         {
00060                 parent::createObject();
00061 
00062                 // SET ADDITIONAL TEMPLATE VARIABLES
00063                 $this->tpl->setVariable("TXT_INSTRUCTION",$this->lng->txt("exc_instruction"));
00064                 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00065                 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",(int) date("d",time())));
00066                 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",(int) date("m",time())));
00067                 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",1));
00068 
00069                 return true;
00070         }
00071 
00072         function viewObject()
00073         {
00074                 global $rbacsystem;
00075 
00076                 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00077                 {
00078                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00079                 }
00080                 $this->getTemplateFile("view","exc");
00081 
00082                 $this->tpl->setVariable("FORM_DOWNLOAD_ACTION",$this->getFormAction("downloadFile",
00083                                                                                                                                                         "adm_object.php?cmd=downloadFile&ref_id=".$this->ref_id));
00084                 $this->tpl->setVariable("TITLE",$this->object->getTitle());
00085                 $this->tpl->setVariable("DESCRIPTION",$this->object->getDescription());
00086                 $this->tpl->setVariable("INSTRUCTION_TXT",$this->lng->txt("exc_instruction"));
00087                 $this->tpl->setVariable("INSTRUCTION",nl2br($this->object->getInstruction()));
00088                 $this->tpl->setVariable("EDIT_UNTIL_TXT",$this->lng->txt("exc_edit_until"));
00089                 $this->tpl->setVariable("EDIT_UNTIL",date("d.m.Y",$this->object->getTimestamp()));
00090 
00091                 foreach($this->object->getFiles() as $file)
00092                 {
00093                         $this->tpl->setCurrentBlock("FILES_ROW");
00094                         $this->tpl->setVariable("FILE_DATA",$file["name"]);
00095                         $this->tpl->setVariable("FILE_CHECK",ilUtil::formRadioButton(0,"file",urlencode($file["name"])));
00096                         $this->tpl->parseCurrentBlock();
00097                 }
00098 
00099                 $this->tpl->setCurrentBlock("FILES");
00100                 $this->tpl->setVariable("FILES_TXT",$this->lng->txt("exc_files"));
00101                 $this->tpl->setVariable("TXT_DOWNLOAD",$this->lng->txt("download"));
00102                 $this->tpl->setVariable("IMG",ilUtil::getImagePath("arrow_downright.gif"));
00103                 $this->tpl->parseCurrentBlock();
00104 
00105                 return true;
00106         }
00107 
00113         function deliverObject()
00114         {
00115                 global $ilUser;
00116                 require_once "./classes/class.ilUtil.php";
00117                 
00118                 if (mktime() > $this->object->getTimestamp())
00119                 {
00120                         sendInfo($this->lng->txt("exercise_time_over"));
00121                 }
00122                 else
00123                 {
00124                         if ($_POST["cmd"]["delete"])
00125                         {
00126                                 if (count($_POST["delivered"]))
00127                                 {
00128                                         $this->object->deleteDeliveredFiles($_POST["delivered"], $ilUser->id);
00129                                 }
00130                                 else
00131                                 {
00132                                         sendInfo($this->lng->txt("please_select_a_delivered_file_to_delete"));
00133                                 }
00134                         }
00135                         
00136                         if ($_POST["cmd"]["download"])
00137                         {
00138                                 if (count($_POST["delivered"]))
00139                                 {
00140                                         $this->object->members_obj->downloadSelectedFiles($_POST["delivered"]);
00141                                 }
00142                                 else
00143                                 {
00144                                         sendInfo($this->lng->txt("please_select_a_delivered_file_to_download"));
00145                                 }
00146                         }
00147         
00148                         $this->getTemplateFile("deliver_file", "exc");
00149                         $delivered_files = $this->object->getDeliveredFiles($ilUser->id);
00150                         $color_class = array("tblrow1", "tblrow2");
00151                         $counter = 0;
00152                         foreach ($delivered_files as $index => $file)
00153                         {
00154                                 $this->tpl->setCurrentBlock("delivered_row");
00155                                 $this->tpl->setVariable("COLOR_CLASS", $color_class[$counter % 2]);
00156                                 $this->tpl->setVariable("FILE_ID", $file["returned_id"]);
00157                                 $this->tpl->setVariable("DELIVERED_FILE", $file["filetitle"]);
00158                                 preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/", $file["TIMESTAMP14"], $matches);
00159                                 $stamp = strtotime(sprintf("%04d-%02d-%02d %02d:%02d:%02d", $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]));
00160                                 $date = date($this->lng->text["lang_dateformat"] . " " . $this->lng->text["lang_timeformat"], $stamp);
00161                                 $this->tpl->setVariable("DELIVERED_DATE", $date);
00162                                 $this->tpl->parseCurrentBlock();
00163                                 $counter++;
00164                         }
00165                         if (count($delivered_files))
00166                         {
00167                                 $this->tpl->setCurrentBlock("footer_content");
00168                                 $this->tpl->setVariable("ARROW_SIGN", ilUtil::getImagePath("arrow_downright.gif"));
00169                                 $this->tpl->setVariable("BUTTON_DELETE", $this->lng->txt("delete"));
00170                                 $this->tpl->setVariable("BUTTON_DOWNLOAD", $this->lng->txt("download"));
00171                                 $this->tpl->parseCurrentBlock();
00172                         }
00173                         else
00174                         {
00175                                 $this->tpl->setCurrentBlock("footer_empty");
00176                                 $this->tpl->setVariable("TEXT_NO_DELIVERED_FILES", $this->lng->txt("message_no_delivered_files"));
00177                                 $this->tpl->parseCurrentBlock();
00178                         }
00179                         $this->tpl->setCurrentBlock("delivered_files");
00180                         $this->tpl->setVariable("DELIVER_FORMACTION", $this->getFormAction("deliver", "exercise.php?cmd=deliver&ref_id=".$this->ref_id));
00181                         $this->tpl->setVariable("TEXT_DATE", $this->lng->txt("date"));
00182                         $this->tpl->setVariable("TEXT_DELIVERED_FILENAME", $this->lng->txt("filename"));
00183                         $this->tpl->setVariable("TEXT_HEADING_DELIVERED_FILES", $this->lng->txt("already_delivered_files"));
00184                         $this->tpl->parseCurrentBlock();
00185                         $this->tpl->setCurrentBlock("adm_content");
00186                         $this->tpl->setVariable("FORMACTION", $this->getFormAction("deliverFile", "exercise.php?cmd=deliverFile&ref_id=".$this->ref_id));
00187                         $this->tpl->setVariable("BUTTON_DELIVER", $this->lng->txt("upload"));
00188                         $this->tpl->setVariable("TEXT_FILENAME", $this->lng->txt("enter_filename_deliver"));
00189                         $this->tpl->parseCurrentBlock();
00190                 }
00191         }
00192         
00193         function deliverFileObject()
00194         {
00195                 global $ilUser;
00196 
00197                 if(!$this->object->deliverFile($_FILES["deliver"], $ilUser->id))
00198                 {
00199                         sendInfo($this->lng->txt("exc_upload_error"),true);
00200                 }
00201                 $this->deliverObject();
00202         }
00203         
00204         function downloadFileObject()
00205         {
00206                 global $rbacsystem;
00207 
00208                 if (!$rbacsystem->checkAccess("read", $this->ref_id))
00209                 {
00210                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_read"),$this->ilias->error_obj->MESSAGE);
00211                 }
00212                 if(!isset($_POST["file"]))
00213                 {
00214                         sendInfo($this->lng->txt("exc_select_one_file"),true);
00215                         header("location: ".$this->getReturnLocation("view",
00216                                                                                                                  "adm_object.php?cmd=view&ref_id=".$this->ref_id));
00217                         exit;
00218                 }
00219                 $files = $this->object->getFiles();
00220                 $file_exist = false;
00221 
00222                 foreach($this->object->getFiles() as $file)
00223                 {
00224                         if($file["name"] == urldecode($_POST["file"]))
00225                         {
00226                                 $file_exist = true;
00227                                 break;
00228                         }
00229                 }
00230                 if(!$file_exist)
00231                 {
00232                         echo "FILE DOES NOT EXIST";
00233                         exit;
00234                 }
00235                 ilUtil::deliverFile($this->object->file_obj->getAbsolutePath(urldecode($_POST["file"])),
00236                                                         urldecode($_POST["file"]));
00237 
00238                 return true;
00239         }
00240 
00245         function saveObject()
00246         {
00247                 global $rbacadmin;
00248 
00249                 // CHECK INPUT
00250                 include_once("./classes/class.ilObjExercise.php");
00251                 $tmp_obj =& new ilObjExercise();
00252 
00253                 $tmp_obj->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00254                 if(!$tmp_obj->checkDate())
00255                 {
00256                         $this->ilias->raiseError($this->lng->txt("exc_date_not_valid"), $this->ilias->error_obj->MESSAGE);
00257                 }
00258                 unset($tmp_obj);
00259                 // END INPUT CHECK
00260 
00261                 // always call parent method first to create an object_data entry & a reference
00262                 $newObj = parent::saveObject();
00263 
00264                 // setup rolefolder & default local roles if needed (see ilObjForum & ilObjForumGUI for an example)
00265                 //$roles = $newObj->initDefaultRoles();
00266 
00267                 // put here your object specific stuff  
00268                 $newObj->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00269                 $newObj->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00270                 $newObj->saveData();
00271 
00272                 // always send a message
00273                 sendInfo($this->lng->txt("exc_added"),true);
00274 
00275                 header("Location:".$this->getReturnLocation("save","adm_object.php?".$this->link_params));
00276                 exit();
00277         }
00278 
00279         function editObject()
00280         {
00281                 global $rbacsystem;
00282 
00283                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00284                 {
00285                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00286                 }
00287                 // LOAD SAVED DATA IN CASE OF ERROR
00288                 $title = $_SESSION["error_post_vars"]["Fobject"]["title"] ?
00289                         ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true) :
00290                         ilUtil::prepareFormOutput($this->object->getTitle());
00291                 $desc  = $_SESSION["error_post_vars"]["Fobject"]["desc"] ?
00292                         $_SESSION["error_post_vars"]["Fobject"]["desc"] :
00293                         $this->object->getDescription();
00294 
00295                 $instruction  = $_SESSION["error_post_vars"]["Fobject"]["instruction"] ?
00296                         $_SESSION["error_post_vars"]["Fobject"]["instruction"] :
00297                         $this->object->getInstruction();
00298 
00299                 $day  = $_SESSION["error_post_vars"]["Fobject"]["d_day"] ?
00300                         $_SESSION["error_post_vars"]["Fobject"]["d_day"] :
00301                         date("d",$this->object->getTimestamp());
00302 
00303                 $month  = $_SESSION["error_post_vars"]["Fobject"]["d_month"] ?
00304                         $_SESSION["error_post_vars"]["Fobject"]["d_month"] :
00305                         date("m",$this->object->getTimestamp());
00306 
00307                 $year  = $_SESSION["error_post_vars"]["Fobject"]["year"] ?
00308                         $_SESSION["error_post_vars"]["Fobject"]["year"] :
00309                         date("Y",$this->object->getTimestamp());
00310                 
00311                 // SET TPL VARIABLES
00312                 $this->getTemplateFile("edit","exc");
00313 
00314                 // TEXT VAIRABLES
00315                 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00316                 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
00317                 $this->tpl->setVariable("TXT_INSTRUCTION", $this->lng->txt("exc_instruction"));
00318                 $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("exc_edit_exercise"));
00319                 $this->tpl->setVariable("FORMACTION", 
00320                                                                 $this->getFormAction("gateway","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway"));
00321                 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
00322                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00323                 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00324                 $this->tpl->setVariable("TXT_SUBMIT",$this->lng->txt("save"));
00325                 $this->tpl->setVariable("TXT_EDIT_UNTIL",$this->lng->txt("exc_edit_until"));
00326 
00327 
00328                 // SHOW INPUT
00329                 $this->tpl->setVariable("TITLE",$title);
00330                 $this->tpl->setVariable("DESC",$desc);
00331                 $this->tpl->setVariable("INSTRUCTION",$instruction);
00332 
00333 
00334                 // SHOW DATE SELECTS
00335                 $this->tpl->setVariable("SELECT_DAY",$this->__getDateSelect("day",$day));
00336                 $this->tpl->setVariable("SELECT_MONTH",$this->__getDateSelect("month",$month));
00337                 $this->tpl->setVariable("SELECT_YEAR",$this->__getDateSelect("year",$year));
00338                 
00339                 $this->tpl->setVariable("CMD_SUBMIT","update");
00340 
00341                 // SHOW FILES
00342                 if(count($files = $this->object->getFiles()))
00343                 {
00344                         foreach($files as $file)
00345                         {
00346                                 $this->tpl->setCurrentBlock("FILE_ROW");
00347                                 $this->tpl->setVariable("ROW_FILE",$file["name"]);
00348                                 $this->tpl->setVariable("ROW_CHECKBOX",$this->lng->txt("exc_ask_delete")."&nbsp".
00349                                                                                 ilUtil::formCheckbox(0,"delete_file[]",$file["name"]));
00350                                 $this->tpl->parseCurrentBlock();
00351                         }
00352                         $this->tpl->setCurrentBlock("FILE_DATA");
00353                         $this->tpl->setVariable("TXT_FILES",$this->lng->txt("exc_files").":");
00354                         $this->tpl->parseCurrentBlock();
00355                 }
00356 
00357                 $this->tpl->setCurrentBlock("FILES");
00358                 $this->tpl->setVariable("TXT_HEADER_FILE",$this->lng->txt("file_add"));
00359                 $this->tpl->setVariable("TXT_FILE",$this->lng->txt("file"));
00360                 $this->tpl->setVariable("TXT_UPLOAD",$this->lng->txt("upload"));
00361                 $this->tpl->setVariable("FORMACTION_FILE",
00362                                                                 $this->getFormAction("gateway","adm_object.php?ref_id=".$this->ref_id."&cmd=gateway"));
00363                 $this->tpl->setVariable("CMD_FILE_SUBMIT","uploadFile");
00364                 $this->tpl->parseCurrentBlock();
00365 
00366         }
00367 
00368         function updateObject()
00369         {
00370                 global $rbacsystem;
00371 
00372                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00373                 {
00374                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00375                 }
00376           
00377                 $this->object->setInstruction(ilUtil::stripSlashes($_POST["Fobject"]["instruction"]));
00378                 $this->object->setDate($_POST["d_day"],$_POST["d_month"],$_POST["d_year"]);
00379                 if($_POST["delete_file"])
00380                 {
00381                         $this->object->deleteFiles($_POST["delete_file"]);
00382                 }
00383                 parent::updateObject();
00384         }
00385                 
00386         function uploadFileObject()
00387         {
00388                 global $rbacsystem;
00389                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00390                 {
00391                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00392                 }
00393                 if(!$this->object->addUploadedFile($_FILES["file"]))
00394                 {
00395                         sendInfo($this->lng->txt("exc_upload_error"),true);
00396                 }
00397                 header("location: ".$this->getReturnLocation("uploadFile","adm_object.php?ref_id=$_GET[ref_id]"));
00398                 exit;
00399         }
00400         function updateMembersObject()
00401         {
00402                 global $rbacsystem;
00403 
00404                 if (!$rbacsystem->checkAccess("write", $this->ref_id))
00405                 {
00406                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00407                 }
00408 
00409                 if ($_POST["downloadReturned"])
00410                 {
00411                         $this->object->members_obj->deliverReturnedFiles(key($_POST["downloadReturned"]));
00412                         exit;
00413                 }
00414                 else
00415                 {
00416                         switch($_POST["action"])
00417                         {
00418                                 case "save_status":
00419                                         $this->__saveStatus();
00420                                         sendInfo($this->lng->txt("exc_status_saved"),true);
00421                                         break;
00422                                 case "send_member":
00423                                         if(!count($_POST["member"]))
00424                                         {
00425                                                 sendInfo($this->lng->txt("select_one"),true);
00426                                         }
00427                                         else
00428                                         {
00429                                                 $this->object->send($_POST["member"]);
00430                                                 sendInfo($this->lng->txt("exc_sent"),true);
00431                                         }
00432                                         break;
00433                                 case "delete_member":
00434                                         $this->__deassignMembers();
00435                                         break;
00436                         }
00437                 }
00438                 header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]&cmd=members"));
00439                 exit;
00440         }
00441                 
00442         function membersObject()
00443         {
00444                 global $rbacsystem;
00445 
00446                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00447                 {
00448                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00449                 }
00450 
00451                 $this->getTemplateFile("members","exc");
00452 
00453                 if(!count($this->object->members_obj->getMembers()))
00454                 {
00455                         sendInfo($this->lng->txt("exc_no_members_assigned"));
00456                 }
00457                 else
00458                 {
00459                         $counter = 0;
00460                         foreach($this->object->members_obj->getMembers() as $member_id)
00461                         {
00462                                 include_once "./classes/class.ilObjectFactory.php";
00463 
00464                                 if(!($tmp_obj = ilObjectFactory::getInstanceByObjId($member_id,false)))
00465                                 {
00466                                         continue;
00467                                 }
00468                                 $f_result[$counter][]   = ilUtil::formCheckbox(0,"member[$member_id]",1);
00469                                 $f_result[$counter][]   = $tmp_obj->getLogin();
00470                                 $f_result[$counter][]   = $tmp_obj->getFirstname();
00471                                 $f_result[$counter][]   = $tmp_obj->getLastname();
00472                                 $f_result[$counter][]   = array("notice[$member_id]",
00473                                                                                                 ilUtil::prepareFormOutput($this->object->members_obj->getNoticeByMember($member_id)));
00474                                 if ($this->object->members_obj->hasReturned($member_id))
00475                                 {
00476                                         $f_result[$counter][]   = "<input class=\"submit\" type=\"submit\" name=\"downloadReturned[$member_id]\" value=\"" . $this->lng->txt("download") . "\" />";
00477                                 }
00478                                 else
00479                                 {
00480                                         $f_result[$counter][]   = "";
00481                                 }
00482                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusReturnedByMember($member_id),
00483                                                                                                                            "returned[$member_id]",1);
00484                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusSolvedByMember($member_id),
00485                                                                                                                            "solved[$member_id]",1);
00486                                 $f_result[$counter][]   = ilUtil::formCheckbox($this->object->members_obj->getStatusSentByMember($member_id),
00487                                                                                                                            "sent[$member_id]",1);
00488 
00489                                 unset($tmp_obj);
00490                                 ++$counter;
00491                         }
00492                         $this->__showMembersTableContent($this->__showMembersTable($f_result));
00493                         
00494                         $this->tpl->addBlockFile("SPECIAL_BUTTONS", "special_buttons", "tpl.exc_download_all.html");
00495                         $this->tpl->setCurrentBlock("download_all");
00496                         $this->tpl->setVariable("BUTTON_DOWNLOAD_ALL", $this->lng->txt("download_all_returned_files"));
00497                         $this->tpl->setVariable("FORMACTION", $this->getFormAction("downloadAll", "exercise.php?cmd=downloadAll&ref_id=".$this->ref_id));
00498                         $this->tpl->parseCurrentBlock();
00499                 }
00500         }
00501         
00502         function downloadAllObject()
00503         {
00504                 $members = array();
00505                 foreach($this->object->members_obj->getMembers() as $member_id)
00506                 {
00507                         $tmp_obj =& ilObjectFactory::getInstanceByObjId($member_id);
00508                         $members[$member_id] = $tmp_obj->getFirstname() . " " . $tmp_obj->getLastname();
00509                         unset($tmp_obj);
00510                 }
00511                 $this->object->file_obj->downloadAllDeliveredFiles($members);
00512         }
00513         
00514         function newMembersObject()
00515         {
00516                 global $rbacsystem;
00517 
00518                 if (!$rbacsystem->checkAccess("write", $_GET["ref_id"]))
00519                 {
00520                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00521                 }
00522 
00523                 // SEARCH CANCELED
00524                 if(isset($_POST["cancel"]))
00525                 {
00526                         header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]"));
00527                         exit;
00528                 }
00529                 
00530                 if(isset($_POST["select"]))
00531                 {
00532                         if(is_array($_POST["id"]))
00533                         {
00534                                 if(!$this->object->members_obj->assignMembers($_POST["id"]))
00535                                 {
00536                                         sendInfo($this->lng->txt("exc_members_already_assigned"),true);
00537                                 }
00538                                 else
00539                                 {
00540                                         sendInfo($this->lng->txt("exc_members_assigned"),true);
00541                                 }
00542                                 header("location: ".$this->getReturnLocation("members","adm_object.php?ref_id=$_GET[ref_id]"));
00543                                 exit;
00544                         }
00545                 }
00546                 $show_search = true;
00547 
00548                 $this->getTemplateFile("add_member","exc");
00549                 $this->tpl->setVariable("F_ACTION", 
00550                                                                 $this->getFormAction("newMembers","adm_object.php?ref_id=$_GET[ref_id]&cmd=newMembers"));
00551                 
00552                 if($_POST["search_str"])
00553                 {
00554                         $result = $this->__searchMembers(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"]);
00555                         
00556                         switch(count($result))
00557                         {
00558                                 case 0:
00559                                         // SHOW ERROR MESSAGE
00560                                         sendInfo($this->lng->txt("cont_no_object_found"));
00561                                         break;
00562 
00563                                 case 1:
00564                                         $result = $this->__getMembersOfObject($result,$_POST["search_for"]);
00565                                         $this->__showMembersSelect($result);
00566                                         $show_search = false;
00567                                         break;
00568 
00569                                 default:
00570                                         if($_POST["search_for"] == 'usr')
00571                                         {
00572                                                 $this->__showMembersSelect($result);
00573                                         }
00574                                         else
00575                                         {
00576                                                 $this->__showObjectSelect($result,$_POST["search_for"]);
00577                                         }
00578                                         $show_search = false;
00579                                         break;
00580                         }
00581                 }
00582                 if($_POST["obj_select"])
00583                 {
00584                         if(count($_POST["obj"]))
00585                         {
00586                                 $result = $this->__getMembersOfObject($_POST["obj"],"grp");
00587                                 $this->__showMembersSelect($result);
00588                                 $show_search = false;
00589                         }
00590                 }
00591 
00592 
00593                 if($show_search)
00594                 {
00595                         $this->lng->loadLanguageModule("content");
00596                         $this->lng->loadLanguageModule("search");
00597 
00598                         $search_for = array("usr" => $this->lng->txt("exc_users"),
00599                                                                 "grp"   => $this->lng->txt("exc_groups"));
00600 #                                                               "role"  => $this->lng->txt("!!Rollen"));
00601                         
00602                         $counter = 0;
00603                         foreach($search_for as $key => $value)
00604                         {
00605                                 $this->tpl->setCurrentBlock("USR_SEARCH_ROW");
00606                                 $this->tpl->setVariable("SEARCH_ROW_CHECK",ilUtil::formRadioButton(++$counter == 1 ? 1 : 0,"search_for",$key));
00607                                 $this->tpl->setVariable("SEARCH_ROW_TXT",$value);
00608                                 $this->tpl->parseCurrentBlock();
00609                         }
00610                         $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("add_member"));
00611                         $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
00612                         $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
00613                         $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
00614                         $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00615                 }
00616                 
00617                 
00618         }
00619 
00620         // PRIVATE METHODS
00621         function __showMembersTableContent($a_data)
00622         {
00623                 
00624                 $counter = 0;
00625                 foreach($a_data as $row)
00626                 {
00627                         foreach($row as $key => $column)
00628                         {
00629                                 switch($key)
00630                                 {
00631                                         case 4:
00632                                                 $this->tpl->setCurrentBlock("form_input");
00633                                                 $this->tpl->setVariable("ROW_INPUT_NAME",$column[0]);
00634                                                 $this->tpl->setVariable("ROW_INPUT_VALUE",$column[1]);
00635                                                 $this->tpl->parseCurrentBlock();
00636                                                 break;
00637 
00638                                         default:
00639                                                 $this->tpl->setCurrentBlock("text");
00640                                                 $this->tpl->setVariable("ROW_TEXT",$column);
00641                                                 $this->tpl->parseCurrentBlock();
00642 
00643                                                 break;
00644                                 }
00645                                 $this->tpl->setCurrentBlock("table_cell");
00646                                 $this->tpl->parseCurrentBlock();
00647                         }
00648                         $this->tpl->setCurrentBlock("row");
00649                         $this->tpl->setVariable("ROW_CSS",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
00650                         $this->tpl->parseCurrentBlock();
00651                 }
00652                 $this->tpl->setCurrentBlock("tbl_content");
00653                 $this->tpl->parseCurrentBlock();
00654 
00655                 return true;
00656         }
00657 
00658         function __getMembersOfObject($a_result,$a_type)
00659         {
00660 
00661                 switch($a_type)
00662                 {
00663                         case "usr":
00664                                 return $a_result;
00665 
00666                         case "grp":
00667                                 include_once "./classes/class.ilObjGroup.php";
00668 
00669                                 $all_members = array();
00670                                 foreach($a_result as $group)
00671                                 {
00672                                         $tmp_grp_obj = ilObjectFactory::getInstanceByRefId($group["id"]);
00673                                         
00674                                         $members = $tmp_grp_obj->getGroupMemberIds();
00675                                         $all_members = array_merge($all_members,$members);
00676                                 }
00677                                 // FORMAT ARRAY
00678                                 $all_members = array_unique($all_members);
00679                                 foreach($all_members as $member)
00680                                 {
00681                                         $result[] = array("id" => $member);
00682                                 }
00683                                 return $result;
00684                 }
00685                 return true;
00686         }
00687                                         
00688         function __showObjectSelect($a_result,$a_type)
00689         {
00690                 include_once "./classes/class.ilObjectFactory.php";
00691                 
00692                 foreach($a_result as $obj)
00693                 {
00694                         $tmp_obj =& ilObjectFactory::getInstanceByRefId($obj["id"]);
00695 
00696                         $this->tpl->setCurrentBlock("OBJ_SELECT_ROW");
00697                         $this->tpl->setVariable("OBJ_ROW_TITLE",$tmp_obj->getTitle());
00698                         $this->tpl->setVariable("OBJ_ROW_ID",$tmp_obj->getRefId());
00699                         $this->tpl->setVariable("OBJ_ROW_DESCRIPTION",$tmp_obj->getDescription());
00700                         $this->tpl->parseCurrentBlock();
00701                         
00702                         unset($tmp_obj);
00703                 }
00704                 $this->tpl->setCurrentBlock("OBJ_SELECT");
00705                 $this->tpl->setVariable("OBJ_SELECT_TITLE",$this->lng->txt("title"));
00706                 $this->tpl->setVariable("OBJ_SELECT_DESCRIPTION",$this->lng->txt("description"));
00707 
00708                 $this->tpl->setVariable("OBJ_BTN1_VALUE",$this->lng->txt("select"));
00709                 $this->tpl->setVariable("OBJ_BTN2_VALUE",$this->lng->txt("cancel"));
00710 
00711                 $this->tpl->parseCurrentBlock();
00712         }
00713 
00714         function __showMembersSelect($a_result)
00715         {
00716                 include_once "./classes/class.ilObjectFactory.php";
00717                 
00718                 foreach($a_result as $user)
00719                 {
00720                         $tmp_obj =& ilObjectFactory::getInstanceByObjId($user["id"]);
00721 
00722                         $this->tpl->setCurrentBlock("USR_SELECT_ROW");
00723                         $this->tpl->setVariable("ROW_LOGIN",$tmp_obj->getLogin());
00724                         $this->tpl->setVariable("ROW_ID",$tmp_obj->getId());
00725                         $this->tpl->setVariable("ROW_FIRSTNAME",$tmp_obj->getFirstname());
00726                         $this->tpl->setVariable("ROW_LASTNAME",$tmp_obj->getLastname());
00727                         $this->tpl->parseCurrentBlock();
00728                         
00729                         unset($tmp_obj);
00730                 }
00731                 $this->tpl->setCurrentBlock("USR_SELECT");
00732                 $this->tpl->setVariable("SELECT_LOGIN",$this->lng->txt("login"));
00733                 $this->tpl->setVariable("SELECT_FIRSTNAME",$this->lng->txt("firstname"));
00734                 $this->tpl->setVariable("SELECT_LASTNAME",$this->lng->txt("lastname"));
00735 
00736                 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("assign"));
00737                 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
00738 
00739                 $this->tpl->parseCurrentBlock();
00740         }
00741         function __searchMembers($a_search_str,$a_search_for)
00742         {
00743                 include_once("./classes/class.ilSearch.php");
00744 
00745                 $this->lng->loadLanguageModule("content");
00746 
00747                 $search =& new ilSearch($_SESSION["AccountId"]);
00748                 $search->setPerformUpdate(false);
00749                 $search->setSearchString(ilUtil::stripSlashes($_POST["search_str"]));
00750                 $search->setCombination("and");
00751                 $search->setSearchFor(array(0 => $a_search_for));
00752                 $search->setSearchType('new');
00753 
00754                 if($search->validate($message))
00755                 {
00756                         $search->performSearch();
00757                 }
00758                 else
00759                 {
00760                         sendInfo($message,true);
00761                         header("location: ".$this->getReturnLocation("newMembers",
00762                                                                                                                  "adm_object.php?ref_id=".$this->object->getRefId()."&cmd=newMembers"));
00763                         exit;
00764                 }
00765                 return $search->getResultByType($a_search_for);
00766         }               
00767         function __deassignMembers()
00768         {
00769                 if(is_array($_POST["member"]))
00770                 {
00771                         foreach($_POST["member"] as $usr_id => $member)
00772                         {
00773                                 $this->object->members_obj->deassignMember($usr_id);
00774                         }
00775                         return true;
00776                 }
00777                 else
00778                 {
00779                         sendInfo($this->lng->txt("select_one"),true);
00780                         return false;
00781                 }
00782         }
00783 
00784         function __saveStatus()
00785         {
00786                 foreach($this->object->members_obj->getMembers() as $member)
00787                 {
00788                         $this->object->members_obj->setNoticeForMember($member,ilUtil::stripSlashes($_POST["notice"][$member]));
00789                         $this->object->members_obj->setStatusSolvedForMember($member,$_POST["solved"][$member] ? 1 : 0);
00790                         $this->object->members_obj->setStatusSentForMember($member,$_POST["sent"][$member] ? 1 : 0);
00791                         $this->object->members_obj->setStatusReturnedForMember($member,$_POST["returned"][$member] ? 1 : 0);
00792                 }
00793                 return true;
00794         }
00795 
00796         function __showMembersTable($a_data)
00797         {
00798                 $actions = array("save_status"          => $this->lng->txt("exc_save_changes"),
00799                                                  "send_member"          => $this->lng->txt("exc_send_exercise"),
00800                                                  "delete_member"        => $this->lng->txt("exc_deassign_members"));
00801 
00802                 $this->tpl->addBlockFile("MEMBER_TABLE","member_table","tpl.table.html");
00803                 $this->tpl->addBlockfile("TBL_CONTENT", "tbl_content", "tpl.exc_members_row.html");
00804 
00805 
00806                 // SET FORMAACTION
00807                 $this->tpl->setCurrentBlock("tbl_form_header");
00808                 $this->tpl->setVariable("FORMACTION",
00809                                                                 $this->getFormAction("updateMembers","adm_object.php?ref_id=$_GET[ref_id]&cmd=updateMembers"));
00810                 $this->tpl->parseCurrentBlock();
00811 
00812                 // SET FOOTER BUTTONS
00813                 $this->tpl->setCurrentBlock("tbl_action_row");
00814                 $this->tpl->setVariable("COLUMN_COUNTS",6);
00815                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00816 
00817                 $this->tpl->setCurrentBlock("tbl_action_select");
00818                 $this->tpl->setVariable("SELECT_ACTION",ilUtil::formSelect(1,"action",$actions,false,true));
00819                 $this->tpl->setVariable("BTN_NAME","execute");
00820                 $this->tpl->setVariable("BTN_VALUE",$this->lng->txt("execute"));
00821                 $this->tpl->parseCurrentBlock();
00822 
00823                 $this->tpl->setCurrentBlock("tbl_action_row");
00824                 $this->tpl->setVariable("COLUMN_COUNTS",9);
00825                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00826                 $this->tpl->parseCurrentBlock();
00827 
00828                 include_once "./classes/class.ilTableGUI.php";
00829 
00830                 $tbl = new ilTableGUI();
00831 
00832                 $tbl->setTitle($this->lng->txt("exc_header_members"),"icon_usr_b.gif",$this->lng->txt("exc_header_members"));
00833                 $tbl->setHeaderNames(array('',$this->lng->txt("login"),$this->lng->txt("firstname")
00834                                                                    ,$this->lng->txt("lastname"),$this->lng->txt("exc_notices"),$this->lng->txt("exc_files_returned"), $this->lng->txt("exc_status_returned"),
00835                                                                    $this->lng->txt("exc_status_solved"),$this->lng->txt("sent")));
00836                 $tbl->setHeaderVars(array("","login","firstname","lastname","","","","",""),
00837                                                         array("ref_id" => $this->object->getRefId(),
00838                                                                   "cmd" => "members"));
00839                 $tbl->setColumnWidth(array("5%","10%","10%","10%","30%","15%","7%","7%","7%"));
00840                 $tbl->disable('content');
00841 
00842                 $tbl->setOrderColumn($_GET["sort_by"]);
00843                 $tbl->setOrderDirection($_GET["sort_order"]);
00844                 $tbl->setLimit(10);
00845                 $tbl->setMaxCount(count($a_data));
00846                 $tbl->setOffset($_GET["offset"] ? $_GET["offset"] : 0);
00847                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00848                 $tbl->setData($a_data);
00849                 $tbl->sortData();
00850                 $tbl->render();
00851                 
00852                 return $tbl->getData();
00853         }
00854 
00855         function __getDateSelect($a_type,$a_selected)
00856         {
00857                 switch($a_type)
00858                 {
00859                         case "day":
00860                                 for($i=1;$i<32;$i++)
00861                                 {
00862                                         $days[$i] = $i < 10 ? "0".$i : $i;
00863                                 }
00864                                 return ilUtil::formSelect($a_selected,"d_day",$days,false,true);
00865                                 
00866                         case "month":
00867                                 for($i=1;$i<13;$i++)
00868                                 {
00869                                         $month[$i] = $i < 10 ? "0".$i : $i;
00870                                 }
00871                                 return ilUtil::formSelect($a_selected,"d_month",$month,false,true);
00872 
00873                         case "year":
00874                                 for($i = date("Y",time());$i < date("Y",time()) + 3;++$i)
00875                                 {
00876                                         $year[$i] = $i;
00877                                 }
00878                                 return ilUtil::formSelect($a_selected,"d_year",$year,false,true);
00879                 }
00880         }
00881 
00882         function __filterAssignedUsers($a_result)
00883         {
00884                 foreach($a_result as $user)
00885                 {
00886                         if(!$this->object->members_obj->isAssigned($user["id"]))
00887                         {
00888                                 $filtered[] = $user;
00889                         }
00890                 }
00891                 return $filtered ? $filtered : array();
00892         }
00893                         
00894 } // END class.ilObjExerciseGUI
00895 ?>

Generated on Fri Dec 13 2013 09:06:34 for ILIAS Release_3_4_x_branch .rev 46804 by  doxygen 1.7.1