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

Generated on Fri Dec 13 2013 10:18:27 for ILIAS Release_3_5_x_branch .rev 46805 by  doxygen 1.7.1