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

ilinc/classes/class.ilObjiLincCourseGUI.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 
00037 include_once "./classes/class.ilContainerGUI.php";
00038 
00039 class ilObjiLincCourseGUI extends ilContainerGUI
00040 {
00045         function ilObjiLincCourseGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00046         {
00047                 $this->type = "icrs";
00048                 $this->ilContainerGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
00049                 
00050                 $this->ctrl->saveParameter($this,'ref_id');
00051 
00052         }
00053         
00059         function createObject()
00060         {
00061                 global $rbacsystem;
00062 
00063                 $new_type = $_POST["new_type"] ? $_POST["new_type"] : $_GET["new_type"];
00064 
00065                 if (!$rbacsystem->checkAccess("create", $_GET["ref_id"], $new_type))
00066                 {
00067                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00068                 }
00069 
00070                 // fill in saved values in case of error
00071                 $data = array();
00072                 $data["fields"] = array();
00073                 $data["fields"]["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
00074                 $data["fields"]["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
00075                 $data["fields"]["homepage"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["homepage"],true);
00076                 $data["fields"]["download"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["download"],true);
00077                 $data["fields"]["activated"] = ilUtil::formCheckbox($_SESSION["error_post_vars"]["Fobject"]["activated"],"Fobject[activated]",1);
00078                 $checkbox_access = ilUtil::formCheckbox($this->object->activated,"Fobject[activated]",1);
00079                 
00080                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.icrs_edit.html","ilinc");
00081                 
00082                 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
00083                 $this->tpl->setVariable("TITLE", $data["fields"]["title"]);
00084                 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
00085                 $this->tpl->setVariable("DESC", $data["fields"]["desc"]);
00086                 $this->tpl->setVariable("TXT_ACCESS", $this->lng->txt("online"));
00087                 $this->tpl->setVariable("CHKBOX_ACCESS", $data["fields"]["activated"]);
00088                 $this->tpl->setVariable("TXT_HOMEPAGE_URL", $this->lng->txt("homepage_url"));
00089                 $this->tpl->setVariable("HOMEPAGE_URL", $data["fields"]["homepage"]);
00090                 $this->tpl->setVariable("TXT_DOWNLOAD_RESOURCES_URL", $this->lng->txt("download_resources_url"));
00091                 $this->tpl->setVariable("DOWNLOAD_RESOURCES_URL", $data["fields"]["download"]);
00092                 $this->tpl->setVariable("TXT_NOT_YET", $this->lng->txt("not_implemented_yet"));
00093 
00094 
00095                 $this->ctrl->setParameter($this, "mode", "create");
00096                 $this->ctrl->setParameter($this, "new_type", $new_type);
00097                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("save",$this->ctrl->getFormAction($this)));
00098                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($new_type."_new"));
00099                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00100                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt($new_type."_add"));
00101                 $this->tpl->setVariable("CMD_SUBMIT", "save");
00102                 $this->tpl->setVariable("TARGET", $this->getTargetFrame("save"));
00103                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00104         }
00105         
00106         function updateObject()
00107         {
00108                 global $rbacsystem;
00109                 
00110                 if (!$rbacsystem->checkAccess("write",$_GET["ref_id"]) )
00111                 {
00112                         $this->ilErr->raiseError($this->lng->txt("permission_denied"),$this->ilErr->MESSAGE);
00113                 }
00114 
00115                 // check required fields
00116                 if (empty($_POST["Fobject"]["title"]))
00117                 {
00118                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00119                 }
00120 
00121                 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00122                 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00123                 $this->object->activated = ilUtil::tf2yn($_POST["Fobject"]["activated"]);
00124 
00125                 // save changes to ilinc serverand ilias database
00126                 $success = $this->object->update();
00127                 
00128                 if ($success == false)
00129                 {
00130                         $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
00131                 }
00132 //var_dump($this->ctrl->getLinkTarget($this,"edit"));exit;
00133                 sendInfo($this->lng->txt("msg_obj_modified"),true);
00134                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"edit"));
00135         }
00136         
00141         function saveObject()
00142         {
00143                 global $rbacadmin,$rbacsystem;
00144                 
00145                 // check required fields
00146                 if (empty($_POST["Fobject"]["title"]))
00147                 {
00148                         $this->ilErr->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilErr->MESSAGE);
00149                 }
00150 
00151                 $this->object->setTitle(ilUtil::stripSlashes($_POST["Fobject"]["title"]));
00152                 $this->object->setDescription(ilUtil::stripSlashes($_POST["Fobject"]["desc"]));
00153                 $this->object->activated = ilUtil::tf2yn($_POST["Fobject"]["activated"]);
00154                 
00155                 // when creating new ilinc course we first create it on ilinc server
00156                 include_once ('class.ilnetucateXMLAPI.php');
00157                 $ilinc = new ilnetucateXMLAPI();
00158                 $ilinc->addCourse($_POST["Fobject"]);
00159                 $response = $ilinc->sendRequest();
00160                 
00161                 if ($response->isError())
00162                 {
00163                         $this->ilErr->raiseError($response->getErrorMsg(),$this->ilErr->MESSAGE);
00164                 }
00165                 
00166                 // if everything ok, create and insert ilinc course in ILIAS
00167                 $icrsObj = parent::saveObject();
00168 
00169                 // save ilinc_id in ILIAS and save data (temp. TODO: build save function)
00170                 $icrsObj->storeiLincId($response->getFirstID());
00171                 $icrsObj->saveActivationStatus(ilUtil::tf2yn($_POST["Fobject"]["activated"]));
00172                 
00173                 // setup rolefolder & default local roles (admin & member)
00174                 $roles = $icrsObj->initDefaultRoles();
00175 
00176                 // ...finally assign icrsadmin role to creator of icrs object
00177                 $success = $icrsObj->addMember($this->ilias->account,$icrsObj->getDefaultAdminRole(),true);
00178 
00179                 if (!$success)
00180                 {
00181                         $this->ilErr->raiseError($icrsObj->getErrorMsg(),$this->ilErr->MESSAGE);
00182                 }
00183 
00184 //              $icrsObj->setRegistrationFlag($_POST["enable_registration"]); //0=no registration, 1=registration enabled 2=passwordregistration
00185 //              $icrsObj->setPassword($_POST["password"]);
00186 //              $icrsObj->setExpirationDateTime($_POST["expirationdate"]." ".$_POST["expirationtime"].":00");
00187 
00188                 $this->ilias->account->addDesktopItem($icrsObj->getRefId(),"icrs");     
00189                 //var_dump($this->ctrl->getParentReturn($this));exit;
00190                 // always send a message
00191                 sendInfo($this->lng->txt("icrs_added"),true);
00192                 ilUtil::redirect($this->getReturnLocation("save",$this->ctrl->getLinkTarget($this,"")));
00193         }
00194         
00200         function getTabs(&$tabs_gui)
00201         {
00202                 global $rbacsystem;
00203 
00204                 $this->ctrl->setParameter($this,"ref_id",$this->ref_id);
00205 
00206                 if ($rbacsystem->checkAccess('read',$this->ref_id))
00207                 {
00208                         $tabs_gui->addTarget("ilinc_classrooms",
00209                                 $this->ctrl->getLinkTarget($this, ""), "", get_class($this));
00210                 }
00211                 
00212                 if ($this->ilias->getSetting("ilinc_active"))
00213                 {
00214                         if ($rbacsystem->checkAccess('write',$this->ref_id))
00215                         {
00216                                 $tabs_gui->addTarget("edit_properties",
00217                                         $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this));
00218                         }
00219         
00220                         if ($rbacsystem->checkAccess('read',$this->ref_id))
00221                         {
00222                                 $tabs_gui->addTarget("ilinc_involved_users",
00223                                         $this->ctrl->getLinkTarget($this, "members"), "members", get_class($this));
00224                         }
00225                         
00226                         if ($rbacsystem->checkAccess('write',$this->ref_id) and $this->object->isDocent($this->ilias->account))
00227                         {
00228                                 // testing: display link to ilinc server directly
00229                                 $tabs_gui->addTarget("ilinc_manage_course_documents",
00230                                         $url = $this->object->userLogin($this->ilias->account), "agenda","","_blank");
00231         //                      $tabs_gui->addTarget("ilinc_manage_course_documents",
00232         //                              $this->ctrl->getLinkTarget($this, "agenda"), "agenda", get_class($this),"_blank");
00233         
00234                         }
00235                 }
00236                 
00237                 /*$applications = $this->object->getNewRegistrations();
00238 
00239                 if (is_array($applications) and $this->object->isAdmin($this->ilias->account->getId()))
00240                 {
00241                         $tabs_gui->addTarget("ilinc_new_registrations",
00242                                 $this->ctrl->getLinkTarget($this, "ShownewRegistrations"), "ShownewRegistrations", get_class($this));
00243                 }*/
00244 
00245                 if ($rbacsystem->checkAccess('edit_permission',$this->ref_id))
00246                 {
00247                         $tabs_gui->addTarget("perm_settings",
00248                                 $this->ctrl->getLinkTarget($this, "perm"), "perm", get_class($this));
00249                 }
00250                 
00251                 // show clipboard in repository
00252                 if ($this->ctrl->getTargetScript() == "repository.php" and !empty($_SESSION['il_rep_clipboard']))
00253                 {
00254                         $tabs_gui->addTarget("clipboard",
00255                                  $this->ctrl->getLinkTarget($this, "clipboard"), "clipboard", get_class($this));
00256                 }
00257 
00258                 if ($this->ctrl->getTargetScript() == "adm_object.php")
00259                 {
00260                         if ($this->tree->getSavedNodeData($this->ref_id))
00261                         {
00262                                 $tabs_gui->addTarget("trash",
00263                                         $this->ctrl->getLinkTarget($this, "trash"), "trash", get_class($this));
00264                         }
00265                 }
00266         }
00267         
00268         function __unsetSessionVariables()
00269         {
00270                 unset($_SESSION["grp_delete_member_ids"]);
00271                 unset($_SESSION["grp_delete_subscriber_ids"]);
00272                 unset($_SESSION["grp_search_str"]);
00273                 unset($_SESSION["grp_search_for"]);
00274                 unset($_SESSION["grp_role"]);
00275                 unset($_SESSION["grp_group"]);
00276                 unset($_SESSION["grp_archives"]);
00277         }
00278         
00279         function __search($a_search_string,$a_search_for)
00280         {
00281                 include_once("classes/class.ilSearch.php");
00282 
00283                 $this->lng->loadLanguageModule("content");
00284                 $search =& new ilSearch($_SESSION["AccountId"]);
00285                 $search->setPerformUpdate(false);
00286                 $search->setSearchString(ilUtil::stripSlashes($a_search_string));
00287                 $search->setCombination("and");
00288                 $search->setSearchFor(array(0 => $a_search_for));
00289                 $search->setSearchType('new');
00290 
00291                 if($search->validate($message))
00292                 {
00293                         $search->performSearch();
00294                 }
00295                 else
00296                 {
00297                         sendInfo($message,true);
00298                         $this->ctrl->redirect($this,"searchUserForm");
00299                 }
00300 
00301                 return $search->getResultByType($a_search_for);
00302         }
00303 
00304         function __showSearchUserTable($a_result_set,$a_user_ids = NULL, $a_cmd = "search")
00305         {
00306         $return_to  = "searchUserForm";
00307         
00308         if ($a_cmd == "listUsersRole" or $a_cmd == "listUsersGroup")
00309         {
00310             $return_to = "search";
00311         }
00312 
00313                 $tbl =& $this->__initTableGUI();
00314                 $tpl =& $tbl->getTemplateObject();
00315 
00316                 // SET FORMACTION
00317                 $tpl->setCurrentBlock("tbl_form_header");
00318                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00319                 $tpl->parseCurrentBlock();
00320 
00321                 $tpl->setCurrentBlock("tbl_action_btn");
00322                 $tpl->setVariable("BTN_NAME",$return_to);
00323                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00324                 $tpl->parseCurrentBlock();
00325 
00326                 $tpl->setCurrentBlock("tbl_action_btn");
00327                 $tpl->setVariable("BTN_NAME","addUser");
00328                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("add"));
00329                 $tpl->parseCurrentBlock();
00330                 
00331                 if (!empty($a_user_ids))
00332                 {
00333                         // set checkbox toggles
00334                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00335                         $tpl->setVariable("JS_VARNAME","user");                 
00336                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
00337                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00338                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00339                         $tpl->parseCurrentBlock();
00340                 }
00341 
00342                 $tpl->setCurrentBlock("tbl_action_row");
00343                 $tpl->setVariable("COLUMN_COUNTS",5);
00344                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00345                 $tpl->parseCurrentBlock();
00346 
00347                 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00348                 $tbl->setHeaderNames(array("",
00349                                                                    $this->lng->txt("username"),
00350                                                                    $this->lng->txt("firstname"),
00351                                                                    $this->lng->txt("lastname"),
00352                                                                    $this->lng->txt("last_visit")));
00353                 $tbl->setHeaderVars(array("",
00354                                                                   "login",
00355                                                                   "firstname",
00356                                                                   "lastname",
00357                                                                   "last_visit"),
00358                                                         array("ref_id" => $this->object->getRefId(),
00359                                                                   "cmd" => $a_cmd,
00360                                                                   "cmdClass" => "ilobjilinccoursegui",
00361                                                                   "cmdNode" => $_GET["cmdNode"]));
00362 
00363                 $tbl->setColumnWidth(array("","33%","33%","33%"));
00364 
00365                 $this->__setTableGUIBasicData($tbl,$a_result_set);
00366                 $tbl->render();
00367                 
00368                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00369 
00370                 return true;
00371         }
00372 
00373         function __showSearchRoleTable($a_result_set,$a_role_ids = NULL)
00374         {
00375                 $tbl =& $this->__initTableGUI();
00376                 $tpl =& $tbl->getTemplateObject();
00377 
00378                 $tpl->setCurrentBlock("tbl_form_header");
00379                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00380                 $tpl->parseCurrentBlock();
00381 
00382                 $tpl->setCurrentBlock("tbl_action_btn");
00383                 $tpl->setVariable("BTN_NAME","searchUserForm");
00384                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00385                 $tpl->parseCurrentBlock();
00386 
00387                 $tpl->setCurrentBlock("tbl_action_btn");
00388                 $tpl->setVariable("BTN_NAME","listUsersRole");
00389                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
00390                 $tpl->parseCurrentBlock();
00391                 
00392                 if (!empty($a_role_ids))
00393                 {
00394                         // set checkbox toggles
00395                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00396                         $tpl->setVariable("JS_VARNAME","role");                 
00397                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_role_ids));
00398                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00399                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00400                         $tpl->parseCurrentBlock();
00401                 }
00402 
00403                 $tpl->setCurrentBlock("tbl_action_row");
00404                 $tpl->setVariable("COLUMN_COUNTS",5);
00405                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00406                 $tpl->parseCurrentBlock();
00407 
00408                 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00409                 $tbl->setHeaderNames(array("",
00410                                                                    $this->lng->txt("obj_role"),
00411                                                                    $this->lng->txt("grp_count_members")));
00412                 $tbl->setHeaderVars(array("",
00413                                                                   "title",
00414                                                                   "nr_members"),
00415                                                         array("ref_id" => $this->object->getRefId(),
00416                                                                   "cmd" => "search",
00417                                                                   "cmdClass" => "ilobjilincoursegui",
00418                                                                   "cmdNode" => $_GET["cmdNode"]));
00419 
00420                 $tbl->setColumnWidth(array("","80%","19%"));
00421 
00422 
00423                 $this->__setTableGUIBasicData($tbl,$a_result_set,"role");
00424                 $tbl->render();
00425                 
00426                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00427 
00428                 return true;
00429         }
00430 
00431         function __showSearchGroupTable($a_result_set,$a_grp_ids = NULL)
00432         {
00433         $tbl =& $this->__initTableGUI();
00434                 $tpl =& $tbl->getTemplateObject();
00435 
00436                 $tpl->setCurrentBlock("tbl_form_header");
00437                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00438                 $tpl->parseCurrentBlock();
00439 
00440                 $tpl->setCurrentBlock("tbl_action_btn");
00441                 $tpl->setVariable("BTN_NAME","searchUserForm");
00442                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("back"));
00443                 $tpl->parseCurrentBlock();
00444 
00445                 $tpl->setCurrentBlock("tbl_action_btn");
00446                 $tpl->setVariable("BTN_NAME","listUsersGroup");
00447                 $tpl->setVariable("BTN_VALUE",$this->lng->txt("grp_list_users"));
00448                 $tpl->parseCurrentBlock();
00449                 
00450                 if (!empty($a_grp_ids))
00451                 {
00452                         // set checkbox toggles
00453                         $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00454                         $tpl->setVariable("JS_VARNAME","group");                        
00455                         $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_grp_ids));
00456                         $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00457                         $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00458                         $tpl->parseCurrentBlock();
00459                 }
00460 
00461                 $tpl->setCurrentBlock("tbl_action_row");
00462                 $tpl->setVariable("COLUMN_COUNTS",5);
00463                 $tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("arrow_downright.gif"));
00464                 $tpl->parseCurrentBlock();
00465 
00466                 $tbl->setTitle($this->lng->txt("ilinc_header_edit_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_header_edit_users"));
00467                 $tbl->setHeaderNames(array("",
00468                                                                    $this->lng->txt("obj_grp"),
00469                                                                    $this->lng->txt("grp_count_members")));
00470                 $tbl->setHeaderVars(array("",
00471                                                                   "title",
00472                                                                   "nr_members"),
00473                                                         array("ref_id" => $this->object->getRefId(),
00474                                                                   "cmd" => "search",
00475                                                                   "cmdClass" => "ilobjilinccoursegui",
00476                                                                   "cmdNode" => $_GET["cmdNode"]));
00477 
00478                 $tbl->setColumnWidth(array("","80%","19%"));
00479 
00480 
00481                 $this->__setTableGUIBasicData($tbl,$a_result_set,"group");
00482                 $tbl->render();
00483                 
00484                 $this->tpl->setVariable("SEARCH_RESULT_TABLE",$tbl->tpl->get());
00485 
00486                 return true;
00487         }
00488         
00489         function __showMembersTable($a_result_set,$a_user_ids = NULL)
00490         {
00491         global $rbacsystem,$ilBench;
00492         
00493                 $actions = array("RemoveMember"  => $this->lng->txt("remove"),"changeMember"  => $this->lng->txt("change"));
00494 
00495         $tbl =& $this->__initTableGUI();
00496                 $tpl =& $tbl->getTemplateObject();
00497 
00498                 $tpl->setCurrentBlock("tbl_form_header");
00499                 $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00500                 $tpl->parseCurrentBlock();
00501 
00502                 $tpl->setCurrentBlock("tbl_action_row");
00503                 
00504                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
00505                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
00506                 {                       //user is administrator
00507             $tpl->setCurrentBlock("plain_button");
00508                     $tpl->setVariable("PBTN_NAME","searchUserForm");
00509                     $tpl->setVariable("PBTN_VALUE",$this->lng->txt("ilinc_add_user"));
00510                     $tpl->parseCurrentBlock();
00511                     $tpl->setCurrentBlock("plain_buttons");
00512                     $tpl->parseCurrentBlock();
00513                 
00514                         $tpl->setVariable("COLUMN_COUNTS",7);
00515                         $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
00516 
00517             foreach ($actions as $name => $value)
00518                         {
00519                                 $tpl->setCurrentBlock("tbl_action_btn");
00520                                 $tpl->setVariable("BTN_NAME",$name);
00521                                 $tpl->setVariable("BTN_VALUE",$value);
00522                                 $tpl->parseCurrentBlock();
00523                         }
00524                         
00525                         if (!empty($a_user_ids))
00526                         {
00527                                 // set checkbox toggles
00528                                 $tpl->setCurrentBlock("tbl_action_toggle_checkboxes");
00529                                 $tpl->setVariable("JS_VARNAME","user_id");                      
00530                                 $tpl->setVariable("JS_ONCLICK",ilUtil::array_php2js($a_user_ids));
00531                                 $tpl->setVariable("TXT_CHECKALL", $this->lng->txt("check_all"));
00532                                 $tpl->setVariable("TXT_UNCHECKALL", $this->lng->txt("uncheck_all"));
00533                                 $tpl->parseCurrentBlock();
00534                         }
00535                         
00536             $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
00537                 }
00538 
00539                 $this->ctrl->setParameter($this,"cmd","members");
00540 
00541 
00542                 // title & header columns
00543                 $tbl->setTitle($this->lng->txt("ilinc_involved_users"),"icon_usr_b.gif",$this->lng->txt("ilinc_involved_users"));
00544 
00545                 //INTERIMS:quite a circumstantial way to show the list on rolebased accessrights
00546                 if ($rbacsystem->checkAccess("write",$this->object->getRefId()))
00547                 {
00548                         //user must be administrator
00549                         $tbl->setHeaderNames(array("",$this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
00550                         $tbl->setHeaderVars(array("","login","firstname","lastname","ilinc_coursemember_status","role","functions"),$this->ctrl->getParameterArray($this,"",false));
00551                         $tbl->setColumnWidth(array("","20%","15%","15%","20%","20%","10%"));
00552                 }
00553                 else
00554                 {
00555                         //user must be member
00556                         $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role"),$this->lng->txt("grp_options")));
00557                         $tbl->setHeaderVars(array("login","firstname","lastname","ilinc_coursemember_status","role","functions"),$this->ctrl->getParameterArray($this,"",false));
00558                         $tbl->setColumnWidth(array("20%","15%","15%","20%","20%","10%"));
00559                 }
00560 
00561                 $this->__setTableGUIBasicData($tbl,$a_result_set,"members");
00562                 $tbl->render();
00563                 $this->tpl->setVariable("ADM_CONTENT",$tbl->tpl->get());
00564                 
00565                 return true;
00566         }
00567         
00568 
00569         function &__initTableGUI()
00570         {
00571                 include_once "classes/class.ilTableGUI.php";
00572 
00573                 return new ilTableGUI(0,false);
00574         }
00575 
00576         function __setTableGUIBasicData(&$tbl,&$result_set,$from = "")
00577         {
00578         switch($from)
00579                 {
00580                         case "subscribers":
00581                                 $offset = $_GET["update_subscribers"] ? $_GET["offset"] : 0;
00582                                 $order = $_GET["update_subscribers"] ? $_GET["sort_by"] : 'login';
00583                                 $direction = $_GET["update_subscribers"] ? $_GET["sort_order"] : '';
00584                                 break;
00585 
00586                         case "group":
00587                                 $offset = $_GET["offset"];
00588                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00589                                 $direction = $_GET["sort_order"];
00590                                 break;
00591                                 
00592                         case "role":
00593                                 $offset = $_GET["offset"];
00594                         $order = $_GET["sort_by"] ? $_GET["sort_by"] : "title";
00595                                 $direction = $_GET["sort_order"];
00596                                 break;
00597 
00598                         default:
00599                                 $offset = $_GET["offset"];
00600                                 // init sort_by (unfortunatly sort_by is preset with 'title'
00601                         if ($_GET["sort_by"] == "title" or empty($_GET["sort_by"]))
00602                 {
00603                     $_GET["sort_by"] = "login";
00604                 }
00605                 $order = $_GET["sort_by"];
00606                                 $direction = $_GET["sort_order"];
00607                                 break;
00608                 }
00609 
00610                 $tbl->setOrderColumn($order);
00611                 $tbl->setOrderDirection($direction);
00612                 $tbl->setOffset($offset);
00613                 $tbl->setLimit($_GET["limit"]);
00614                 //$tbl->setMaxCount(count($result_set));
00615                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
00616                 $tbl->setData($result_set);
00617         }
00618         
00619         function listUsersRoleObject()
00620         {
00621                 global $rbacsystem,$rbacreview;
00622 
00623                 $_SESSION["grp_role"] = $_POST["role"] = $_POST["role"] ? $_POST["role"] : $_SESSION["grp_role"];
00624 
00625                 // MINIMUM ACCESS LEVEL = 'administrate'
00626                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
00627                 {
00628                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00629                 }
00630 
00631                 if(!is_array($_POST["role"]))
00632                 {
00633                         sendInfo($this->lng->txt("grp_no_roles_selected"));
00634                         $this->searchObject();
00635 
00636                         return false;
00637                 }
00638 
00639                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00640                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
00641 
00642                 // GET ALL MEMBERS
00643                 $members = array();
00644                 foreach($_POST["role"] as $role_id)
00645                 {
00646                         $members = array_merge($rbacreview->assignedUsers($role_id),$members);
00647                 }
00648 
00649                 $members = array_unique($members);
00650 
00651                 // FORMAT USER DATA
00652                 $counter = 0;
00653                 $f_result = array();
00654                 foreach($members as $user)
00655                 {
00656                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
00657                         {
00658                                 continue;
00659                         }
00660                         
00661                         $user_ids[$counter] = $user;
00662 
00663                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
00664                         $f_result[$counter][] = $tmp_obj->getLogin();
00665                         $f_result[$counter][] = $tmp_obj->getLastname();
00666                         $f_result[$counter][] = $tmp_obj->getFirstname();
00667                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
00668 
00669                         unset($tmp_obj);
00670                         ++$counter;
00671                 }
00672                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersRole");
00673 
00674                 return true;
00675         }
00676         
00677         function listUsersGroupObject()
00678         {
00679                 global $rbacsystem,$rbacreview,$tree;
00680 
00681                 $_SESSION["grp_group"] = $_POST["group"] = $_POST["group"] ? $_POST["group"] : $_SESSION["grp_group"];
00682 
00683                 // MINIMUM ACCESS LEVEL = 'administrate'
00684                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
00685                 {
00686                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00687                 }
00688 
00689                 if(!is_array($_POST["group"]))
00690                 {
00691                         sendInfo($this->lng->txt("grp_no_groups_selected"));
00692                         $this->searchObject();
00693 
00694                         return false;
00695                 }
00696 
00697                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
00698                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
00699 
00700                 // GET ALL MEMBERS
00701                 $members = array();
00702                 foreach($_POST["group"] as $group_id)
00703                 {
00704                         if (!$tree->isInTree($group_id))
00705                         {
00706                                 continue;
00707                         }
00708                         if (!$tmp_obj = ilObjectFactory::getInstanceByRefId($group_id))
00709                         {
00710                                 continue;
00711                         }
00712 
00713                         $members = array_merge($tmp_obj->getGroupMemberIds(),$members);
00714 
00715                         unset($tmp_obj);
00716                 }
00717 
00718                 $members = array_unique($members);
00719 
00720                 // FORMAT USER DATA
00721                 $counter = 0;
00722                 $f_result = array();
00723                 foreach($members as $user)
00724                 {
00725                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user,false))
00726                         {
00727                                 continue;
00728                         }
00729                         
00730                         $user_ids[$counter] = $user;
00731                         
00732                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user);
00733                         $f_result[$counter][] = $tmp_obj->getLogin();
00734                         $f_result[$counter][] = $tmp_obj->getLastname();
00735                         $f_result[$counter][] = $tmp_obj->getFirstname();
00736                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
00737 
00738                         unset($tmp_obj);
00739                         ++$counter;
00740                 }
00741                 $this->__showSearchUserTable($f_result,$user_ids,"listUsersGroup");
00742 
00743                 return true;
00744         }
00745         
00750         function canceledObject()
00751         {
00752                 $return_location = $_GET["cmd_return_location"];
00753                 if (strcmp($return_location, "") == 0)
00754                 {
00755                         $return_location = "members";
00756                 }
00757                                 
00758                 sendInfo($this->lng->txt("action_aborted"),true);
00759                 $this->ctrl->redirect($this, $return_location);
00760         }
00761 
00766         function cancelMemberObject()
00767         {
00768                 $return_location = "members";
00769                                 
00770                 sendInfo($this->lng->txt("action_aborted"),true);
00771                 ilUtil::redirect($this->ctrl->getLinkTarget($this,$return_location));
00772         }
00773         
00777         function membersObject()
00778         {
00779                 global $rbacsystem,$ilBench,$ilDB,$lng;
00780                 
00781                 if (!$this->ilias->getSetting("ilinc_active"))
00782                 {
00783                         $this->ilias->raiseError($lng->txt("ilinc_server_not_active"),$this->ilias->error_obj->MESSAGE);
00784                 }
00785                 
00786                 //if current user is admin he is able to add new members to group
00787                 $val_contact = "<img src=\"".ilUtil::getImagePath("icon_pencil_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_send_mail")."\" title=\"".$this->lng->txt("ilinc_mem_send_mail")."\" border=\"0\" vspace=\"0\"/>";
00788                 $val_change = "<img src=\"".ilUtil::getImagePath("icon_change_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_change_status")."\" title=\"".$this->lng->txt("ilinc_mem_change_status")."\" border=\"0\" vspace=\"0\"/>";
00789                 $val_leave = "<img src=\"".ilUtil::getImagePath("icon_group_out_b.gif")."\" alt=\"".$this->lng->txt("ilinc_mem_leave")."\" title=\"".$this->lng->txt("ilinc_mem_leave")."\" border=\"0\" vspace=\"0\"/>";
00790 
00791                 // store access checks to improve performance
00792                 $access_delete = $rbacsystem->checkAccess("delete",$this->object->getRefId());
00793                 $access_leave = $rbacsystem->checkAccess("leave",$this->object->getRefId());
00794                 $access_write = $rbacsystem->checkAccess("write",$this->object->getRefId());
00795 
00796                 $member_ids = $this->object->getMemberIds();
00797                 
00798                 // fetch all user data in one shot to improve performance (from ILIAS db)
00799                 $members = $this->object->getMemberData($member_ids);
00800                 
00801                 // fetch docent or student assignment form all coursemembers from iLinc server
00802                 $docent_ids = $this->object->getiLincMemberIds(true);
00803                 $student_ids = $this->object->getiLincMemberIds(false);
00804         
00805                 $account_id = $this->ilias->account->getId();
00806                 $counter = 0;
00807 
00808                 foreach ($members as $mem)
00809                 {
00810                         $link_contact = "mail_new.php?type=new&rcp_to=".$mem["login"];
00811                         $link_change = $this->ctrl->getLinkTarget($this,"changeMember")."&mem_id=".$mem["id"];
00812                 
00813                         if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00814                         {
00815                                 $link_leave = $this->ctrl->getLinkTarget($this,"RemoveMember")."&mem_id=".$mem["id"];
00816                         }
00817 
00818                         //build function
00819                         if ($access_delete && $access_write)
00820                         {
00821                                 $member_functions = "<a href=\"$link_change\">$val_change</a>";
00822                         }
00823 
00824                         if (($mem["id"] == $account_id && $access_leave) || $access_delete)
00825                         {
00826                                 $member_functions .="<a href=\"$link_leave\">$val_leave</a>";
00827                         }
00828                         
00829                         // this is twice as fast than the code above
00830                         $str_member_roles = $this->object->getMemberRolesTitle($mem["id"]);
00831 
00832                         if ($access_delete && $access_write)
00833                         {
00834                                 $result_set[$counter][] = ilUtil::formCheckBox(0,"user_id[]",$mem["id"]);
00835                         }
00836                         
00837                         $user_ids[$counter] = $mem["id"];
00838                         
00839                         $status = $this->object->checkiLincMemberStatus($mem['ilinc_id'],$docent_ids,$student_ids);
00840                         
00841                         if ($status == ILINC_MEMBER_NOTSET)
00842                         {
00843                                 $status = "<span class='warning'>".$this->lng->txt($status)."</span>";
00844                         }
00845                         else
00846                         {
00847                                 $status = $this->lng->txt($status);
00848                         }
00849                         
00850             
00851             //discarding the checkboxes
00852                         $result_set[$counter][] = $mem["login"];
00853                         $result_set[$counter][] = $mem["firstname"];
00854                         $result_set[$counter][] = $mem["lastname"];
00855                         $result_set[$counter][] = $status;
00856                         $result_set[$counter][] = $str_member_roles;
00857                         $result_set[$counter][] = "<a href=\"$link_contact\">".$val_contact."</a>".$member_functions;
00858 
00859                         ++$counter;
00860 
00861                         unset($member_functions);
00862                 }
00863 
00864                 return $this->__showMembersTable($result_set,$user_ids);
00865     }
00866     
00867         function &executeCommand()
00868         {
00869                 $next_class = $this->ctrl->getNextClass($this);
00870                 $cmd = $this->ctrl->getCmd();
00871                 //var_dump($next_class,$cmd);
00872 
00873                 switch($next_class)
00874                 {
00875                         case "ilconditionhandlerinterface":
00876                                 include_once './classes/class.ilConditionHandlerInterface.php';
00877 
00878                                 if($_GET['item_id'])
00879                                 {
00880                                         $new_gui =& new ilConditionHandlerInterface($this,(int) $_GET['item_id']);
00881                                         $this->ctrl->saveParameter($this,'item_id',$_GET['item_id']);
00882                                         $this->ctrl->forwardCommand($new_gui);
00883                                 }
00884                                 else
00885                                 {
00886                                         $new_gui =& new ilConditionHandlerInterface($this);
00887                                         $this->ctrl->forwardCommand($new_gui);
00888                                 }
00889                                 break;
00890 
00891                         case "ilregistergui":
00892                                 $this->ctrl->setReturn($this, "");   // ###
00893                                 $reg_gui = new ilRegisterGUI();
00894                                 //$reg_gui->executeCommand();
00895                                 $ret =& $this->ctrl->forwardCommand($reg_gui);
00896                                 break;
00897 
00898                         case "ililincclassroomgui":
00899                         echo "hier";exit;
00900                                 $this->ctrl->setReturn($this, "");   // ###
00901                                 $reg_gui = new ilRegisterGUI();
00902                                 //$reg_gui->executeCommand();
00903                                 $ret =& $this->ctrl->forwardCommand($reg_gui);
00904                                 break;
00905                                 
00906                         default:
00907                                 if ($this->object->requireRegistration() and !$this->object->isUserRegistered())
00908                                 {
00909                                         $this->ctrl->redirectByClass("ilRegisterGUI", "showRegistrationForm");
00910                                 }
00911 
00912                                 if (empty($cmd))
00913                                 {
00914                                         #$this->ctrl->returnToParent($this);
00915                                         // NOT ACCESSIBLE SINCE returnToParent() starts a redirect
00916                                         $cmd = "view";
00917                                 }
00918 
00919                                 // NOT ACCESSIBLE SINCE returnToParent() starts a redirect
00920                                 $cmd .= "Object";
00921                                 $this->$cmd();
00922                                 break;
00923                 }
00924         }
00925         
00926         function viewObject()
00927         {
00928                 global $tree;
00929 
00930                 if($this->ctrl->getTargetScript() == "adm_object.php")
00931                 {
00932                         parent::viewObject();
00933                         return true;
00934                 }
00935                 else
00936                 {
00937                         $this->renderObject();
00938                         //$this->listClassrooms();
00939                         return true;
00940                 }
00941 
00942                 return true;
00943         }
00944         
00949         function getSubItems()
00950         {
00951                 $objects = array();
00952 
00953                 if (!($objects = $this->object->getClassrooms()))
00954                 {
00955                         sendinfo($this->lng->txt($this->object->getErrorMsg()));
00956                         return;
00957                 }
00958 
00959                 foreach ($objects as $key => $object)
00960                 {
00961                         $this->items['icla'][$key] = $object;
00962                 }
00963         }
00964 
00968         function renderItemList($a_type = "all")
00969         {
00970                 global $objDefinition;
00971                 
00972                 $html = "";
00973                 $this->adminCommands = false;
00974                 
00975                 $class = $objDefinition->getClassName("icla");
00976                 $location = $objDefinition->getLocation("icla");
00977                 $full_class = "ilObj".$class."ListGUI";
00978                 include_once($location."/class.".$full_class.".php");
00979                 
00980                 $item_list_gui = new $full_class();
00981                 $item_list_gui->setContainerObject($this);
00982                 
00983                 $tpl =& $this->newBlockTemplate();
00984                 $first = true;
00985 
00986                 $item_html = array();
00987 
00988                 if (is_array($this->items['icla']))
00989                 {
00990                         foreach($this->items['icla'] as $key => $item)
00991                         {
00992         
00993                                 $html = $item_list_gui->getListItemHTML($this->object->getRefId(),
00994                                                         $key, $item["name"], $item["description"],$item);
00995                                                                 
00996                                 if ($html != "")
00997                                 {
00998                                         $item_html[] = array("html" => $html, "item_id" => $item["ref_id"]);
00999                                 }
01000                         }
01001 
01002                         // output block for resource type
01003                         if (count($item_html) > 0)
01004                         {
01005                                 // separator row
01006                                 if (!$first)
01007                                 {
01008                                         $this->addSeparatorRow($tpl);
01009                                 }
01010                         
01011                                 $first = false;
01012 
01013                                 // add a header for each resource type
01014                                 $this->addHeaderRow($tpl, 'icla');
01015                                 $this->resetRowType();
01016         
01017                                 // content row
01018                                 foreach($item_html as $item)
01019                                 {
01020                                         $this->addStandardRow($tpl, $item["html"], $item["item_id"]);
01021                                 }
01022                         }
01023                 }
01024 
01025                 $html = $tpl->get();
01026                 return $html;
01027         }
01028         
01029         function removeClassroomObject()
01030         {
01031                 include_once ('class.ilObjiLincClassroomGUI.php');
01032                 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01033                 $ret =& $this->ctrl->forwardCommand($icla_gui);
01034         }
01035         
01036         function editClassroomObject()
01037         {
01038                 include_once ('class.ilObjiLincClassroomGUI.php');
01039                 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01040                 $ret =& $this->ctrl->forwardCommand($icla_gui);
01041         }
01042         
01043         function updateClassroomObject()
01044         {
01045                 include_once ('class.ilObjiLincClassroomGUI.php');
01046                 $icla_gui = new ilObjiLincClassroomGUI($_GET['class_id'],$this->ref_id);
01047                 $ret =& $this->ctrl->forwardCommand($icla_gui);
01048         }
01049         
01055         function cancelDeleteClassroomObject()
01056         {
01057                 session_unregister("saved_post");
01058                 
01059                 $this->setReturnLocation("cancelDeleteClassroom", "repository.php?ref_id=".$this->ref_id);
01060 
01061                 sendInfo($this->lng->txt("msg_cancel"),true);
01062 
01063                 ilUtil::redirect($this->getReturnLocation("cancelDeleteClassroom","adm_object.php?ref_id=".$_GET["ref_id"]));
01064 
01065         }
01066         
01070         function confirmedDeleteClassroomObject()
01071         {
01072                 include_once ('class.ilObjiLincClassroom.php');
01073                 $icla_obj = new ilObjiLincClassroom($_GET['class_id'],$this->ref_id);
01074                 
01075                 if (!$icla_obj->delete())
01076                 {
01077                         $msg = $ilca_obj->getErrorMsg();
01078                 }
01079                 else
01080                 {
01081                         $msg = $this->lng->txt('icla_deleted');
01082                 }
01083                 
01084                 // Feedback
01085                 sendInfo($msg,true);
01086                 
01087                 $this->setReturnLocation("confirmedDeleteClassroom", "repository.php?ref_id=".$this->ref_id);
01088 
01089                 ilUtil::redirect($this->getReturnLocation("confirmedDeleteClassroom","adm_object.php?ref_id=".$_GET["ref_id"]));
01090 
01091         }
01092         
01093         function joinClassroomObject()
01094         {
01095                 // check if user is registered at iLinc server
01096                 /*if (!$this->object->userExists($this->ilias->account))
01097                 {
01098                                 $ilinc_user_id = $this->object->addUser($this->ilias->account);
01099                 }
01100 
01101                 // check if user is already member of icourse
01102                 if (!$this->object->isMember($this->ilias->account,$this->object_ilinc_id))
01103                 {
01104                         // then assign membership to icourse
01105                         $ilinc_data = $this->ilias->account->getiLincData();
01106                         $this->object->registerUser($ilinc_data['id'],$this->object->ilinc_id,"False");
01107                 }*/
01108 
01109                 // join class
01110                 $url = $this->object->joinClass($this->ilias->account,$_GET['class_id']);
01111                 //var_dump($url);exit;
01112                 if (!$url)
01113                 {
01114                         $this->ilias->raiseError($this->object->getErrorMsg(),$this->ilias->error_obj->FATAL);
01115                 }
01116 
01117                 ilUtil::redirect(trim($url));
01118         }
01119         
01120         function agendaObject()
01121         {
01122                 // user login
01123                 $url = $this->object->userLogin($this->ilias->account);
01124                 
01125                 if (!$url)
01126                 {
01127                         $this->ilias->raiseError($this->object->getErrorMsg(),$this->ilias->error_obj->FATAL);
01128                 }
01129 
01130                 ilUtil::redirect(trim($url));
01131         }
01132         
01133         function searchUserFormObject()
01134         {
01135                 global $rbacsystem;
01136 
01137                 $this->lng->loadLanguageModule('search');
01138 
01139                 // MINIMUM ACCESS LEVEL = 'administrate'
01140                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01141                 {
01142                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01143                 }
01144 
01145                 $this->tpl->addBlockFile("ADM_CONTENT","adm_content","tpl.grp_members_search.html");
01146                 
01147                 $this->tpl->setVariable("F_ACTION",$this->ctrl->getFormAction($this));
01148                 $this->tpl->setVariable("SEARCH_ASSIGN_USR",$this->lng->txt("grp_search_members"));
01149                 $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
01150                 $this->tpl->setVariable("SEARCH_VALUE",$_SESSION["grp_search_str"] ? $_SESSION["grp_search_str"] : "");
01151                 $this->tpl->setVariable("SEARCH_FOR",$this->lng->txt("exc_search_for"));
01152                 $this->tpl->setVariable("SEARCH_ROW_TXT_USER",$this->lng->txt("exc_users"));
01153                 $this->tpl->setVariable("SEARCH_ROW_TXT_ROLE",$this->lng->txt("exc_roles"));
01154                 $this->tpl->setVariable("SEARCH_ROW_TXT_GROUP",$this->lng->txt("exc_groups"));
01155                 $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
01156                 $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
01157                 
01158         $usr = ($_POST["search_for"] == "usr" || $_POST["search_for"] == "") ? 1 : 0;
01159                 $grp = ($_POST["search_for"] == "grp") ? 1 : 0;
01160                 $role = ($_POST["search_for"] == "role") ? 1 : 0;
01161 
01162                 $this->tpl->setVariable("SEARCH_ROW_CHECK_USER",ilUtil::formRadioButton($usr,"search_for","usr"));
01163                 $this->tpl->setVariable("SEARCH_ROW_CHECK_ROLE",ilUtil::formRadioButton($role,"search_for","role"));
01164         $this->tpl->setVariable("SEARCH_ROW_CHECK_GROUP",ilUtil::formRadioButton($grp,"search_for","grp"));
01165 
01166                 $this->__unsetSessionVariables();
01167         }
01168         
01169         function searchObject()
01170         {
01171                 global $rbacsystem,$tree;
01172 
01173                 $_SESSION["grp_search_str"] = $_POST["search_str"] = $_POST["search_str"] ? $_POST["search_str"] : $_SESSION["grp_search_str"];
01174                 $_SESSION["grp_search_for"] = $_POST["search_for"] = $_POST["search_for"] ? $_POST["search_for"] : $_SESSION["grp_search_for"];
01175                 
01176                 // MINIMUM ACCESS LEVEL = 'administrate'
01177                 if(!$rbacsystem->checkAccess("write", $this->object->getRefId()))
01178                 {
01179                         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
01180                 }
01181 
01182                 if(!isset($_POST["search_for"]) or !isset($_POST["search_str"]))
01183                 {
01184                         sendInfo($this->lng->txt("grp_search_enter_search_string"));
01185                         $this->searchUserFormObject();
01186                         
01187                         return false;
01188                 }
01189 
01190                 if(!count($result = $this->__search(ilUtil::stripSlashes($_POST["search_str"]),$_POST["search_for"])))
01191                 {
01192                         sendInfo($this->lng->txt("grp_no_results_found"));
01193                         $this->searchUserFormObject();
01194 
01195                         return false;
01196                 }
01197 
01198                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.grp_usr_selection.html");
01199                 $this->__showButton("searchUserForm",$this->lng->txt("grp_new_search"));
01200                 
01201                 $counter = 0;
01202                 $f_result = array();
01203 
01204                 switch($_POST["search_for"])
01205                 {
01206                 case "usr":
01207                                 foreach($result as $user)
01208                                 {
01209                                         if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($user["id"],false))
01210                                         {
01211                                                 continue;
01212                                         }
01213                                         
01214                                         $user_ids[$counter] = $user["id"];
01215                                         
01216                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"user[]",$user["id"]);
01217                                         $f_result[$counter][] = $tmp_obj->getLogin();
01218                                         $f_result[$counter][] = $tmp_obj->getFirstname();
01219                                         $f_result[$counter][] = $tmp_obj->getLastname();
01220                                         $f_result[$counter][] = ilFormat::formatDate($tmp_obj->getLastLogin());
01221 
01222                                         unset($tmp_obj);
01223                                         ++$counter;
01224                                 }
01225                                 $this->__showSearchUserTable($f_result,$user_ids);
01226 
01227                                 return true;
01228 
01229                         case "role":
01230                                 foreach($result as $role)
01231                                 {
01232                     // exclude anonymous role
01233                     if ($role["id"] == ANONYMOUS_ROLE_ID)
01234                     {
01235                         continue;
01236                     }
01237 
01238                     if(!$tmp_obj = ilObjectFactory::getInstanceByObjId($role["id"],false))
01239                                         {
01240                                                 continue;
01241                                         }
01242                                         
01243                                     // exclude roles with no users assigned to
01244                     if ($tmp_obj->getCountMembers() == 0)
01245                     {
01246                         continue;
01247                     }
01248                     
01249                     $role_ids[$counter] = $role["id"];
01250                     
01251                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"role[]",$role["id"]);
01252                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01253                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01254                                         
01255                                         unset($tmp_obj);
01256                                         ++$counter;
01257                                 }
01258                                 
01259                                 $this->__showSearchRoleTable($f_result,$role_ids);
01260 
01261                                 return true;
01262                                 
01263                         case "grp":
01264                                 foreach($result as $group)
01265                                 {
01266                                         if(!$tree->isInTree($group["id"]))
01267                                         {
01268                                                 continue;
01269                                         }
01270                                         
01271                                         if(!$tmp_obj = ilObjectFactory::getInstanceByRefId($group["id"],false))
01272                                         {
01273                                                 continue;
01274                                         }
01275                                         
01276                     // exclude myself :-)
01277                     if ($tmp_obj->getId() == $this->object->getId())
01278                     {
01279                         continue;
01280                     }
01281                     
01282                     $grp_ids[$counter] = $group["id"];
01283                     
01284                                         $f_result[$counter][] = ilUtil::formCheckbox(0,"group[]",$group["id"]);
01285                                         $f_result[$counter][] = array($tmp_obj->getTitle(),$tmp_obj->getDescription());
01286                                         $f_result[$counter][] = $tmp_obj->getCountMembers();
01287                                         
01288                                         unset($tmp_obj);
01289                                         ++$counter;
01290                                 }
01291                                 
01292                                 if(!count($f_result))
01293                                 {
01294                                         sendInfo($this->lng->txt("grp_no_results_found"));
01295                                         $this->searchUserFormObject();
01296 
01297                                         return false;
01298                                 }
01299                                 
01300                                 $this->__showSearchGroupTable($f_result,$grp_ids);
01301 
01302                                 return true;
01303                 }
01304         }
01305         
01310         function addUserObject()
01311         {
01312                 $user_ids = $_POST["user"];
01313                 
01314                 $mail = new ilMail($_SESSION["AccountId"]);
01315 
01316                 if (empty($user_ids[0]))
01317                 {
01318                         // TODO: jumps back to grp content. go back to last search result
01319                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01320                 }
01321 
01322                 foreach ($user_ids as $new_member)
01323                 {
01324                         $user_obj = $this->ilias->obj_factory->getInstanceByObjId($new_member);
01325 
01326                         if (!$this->object->addMember($user_obj,$this->object->getDefaultMemberRole(),false))
01327                         {
01328                                 //var_dump($this->object->getErrorMsg());exit;
01329                                 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01330                         }
01331                         
01332                         $user_obj->addDesktopItem($this->object->getRefId(),"icrs");
01333                         $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","ilinc_mail_subj_new_subscription",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","ilinc_mail_body_new_subscription",$user_obj->getLanguage()),array(),array('normal'));  
01334 
01335                         unset($user_obj);
01336                 }
01337                 
01338                 //echo "end";exit;
01339 
01340                 unset($_SESSION["saved_post"]);
01341 
01342                 sendInfo($this->lng->txt("ilinc_msg_member_assigned"),true);
01343                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01344         }
01345         
01350         function removeMemberObject()
01351         {
01352                 $user_ids = array();
01353 
01354                 if (isset($_POST["user_id"]))
01355                 {
01356                         $user_ids = $_POST["user_id"];
01357                 }
01358                 else if (isset($_GET["mem_id"]))
01359                 {
01360                         $user_ids[] = $_GET["mem_id"];
01361                 }
01362 
01363                 if (empty($user_ids[0]))
01364                 {
01365                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01366                 }
01367                 
01368                 if (count($user_ids) == 1 and $this->ilias->account->getId() != $user_ids[0])
01369                 {
01370                         if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
01371                                 and !in_array($this->ilias->account->getId(),$this->object->getAdminIds()))
01372                         {
01373                                 $this->ilErr->raiseError($this->lng->txt("ilinc_err_no_permission"),$this->ilErr->MESSAGE);
01374                         }
01375                 }
01376                 //bool value: says if $users_ids contains current user id
01377                 $is_dismiss_me = array_search($this->ilias->account->getId(),$user_ids);
01378                 
01379                 $confirm = "confirmedRemoveMember";
01380                 $cancel  = "canceled";
01381                 $info    = ($is_dismiss_me !== false) ? "ilinc_dismiss_myself" : "ilinc_dismiss_member";
01382                 $status  = "";
01383                 $return  = "members";
01384                 $this->confirmationObject($user_ids, $confirm, $cancel, $info, $status, $return);
01385         }
01386 
01391         function confirmationObject($user_id="", $confirm, $cancel, $info="", $status="",$a_cmd_return_location = "")
01392         {
01393                 $this->data["cols"] = array("type", "title", "description", "last_change");
01394 
01395                 if (is_array($user_id))
01396                 {
01397                         foreach ($user_id as $id)
01398                         {
01399                                 $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($id);
01400 
01401                                 $this->data["data"]["$id"] = array(
01402                                         "type"        => $obj_data->getType(),
01403                                         "title"       => $obj_data->getTitle(),
01404                                         "desc"        => $obj_data->getDescription(),
01405                                         "last_update" => $obj_data->getLastUpdateDate(),
01406 
01407                                         );
01408                         }
01409                 }
01410                 else
01411                 {
01412                         $obj_data =& $this->ilias->obj_factory->getInstanceByObjId($user_id);
01413 
01414                         $this->data["data"]["$id"] = array(
01415                                 "type"        => $obj_data->getType(),
01416                                 "title"       => $obj_data->getTitle(),
01417                                 "desc"        => $obj_data->getDescription(),
01418                                 "last_update" => $obj_data->getLastUpdateDate(),
01419                                 );
01420                 }
01421 
01422                 //write  in sessionvariables
01423                 if(is_array($user_id))
01424                 {
01425                         $_SESSION["saved_post"]["user_id"] = $user_id;
01426                 }
01427                 else
01428                 {
01429                         $_SESSION["saved_post"]["user_id"][0] = $user_id;
01430                 }
01431 
01432                 if (isset($status))
01433                 {
01434                         $_SESSION["saved_post"]["status"] = $status;
01435                 }
01436 
01437                 $this->data["buttons"] = array( $cancel  => $this->lng->txt("cancel"),
01438                                                 $confirm  => $this->lng->txt("confirm"));
01439 
01440                 $this->getTemplateFile("confirm");
01441 
01442                 $this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01443 
01444                 infoPanel();
01445 
01446                 sendInfo($this->lng->txt($info));
01447 
01448                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this)."&cmd_return_location=".$a_cmd_return_location);
01449 
01450                 // BEGIN TABLE HEADER
01451                 foreach ($this->data["cols"] as $key)
01452                 {
01453                         $this->tpl->setCurrentBlock("table_header");
01454                         $this->tpl->setVariable("TEXT",$this->lng->txt($key));
01455                         $this->tpl->parseCurrentBlock();
01456                 }
01457                 // END TABLE HEADER
01458 
01459                 // BEGIN TABLE DATA
01460                 $counter = 0;
01461 
01462                 foreach ($this->data["data"] as $key => $value)
01463                 {
01464                         // BEGIN TABLE CELL
01465                         foreach ($value as $key => $cell_data)
01466                         {
01467                                 $this->tpl->setCurrentBlock("table_cell");
01468 
01469                                 // CREATE TEXT STRING
01470                                 if ($key == "type")
01471                                 {
01472                                         $this->tpl->setVariable("TEXT_CONTENT",ilUtil::getImageTagByType($cell_data,$this->tpl->tplPath));
01473                                 }
01474                                 else
01475                                 {
01476                                         $this->tpl->setVariable("TEXT_CONTENT",$cell_data);
01477                                 }
01478                                 $this->tpl->parseCurrentBlock();
01479                         }
01480 
01481                         $this->tpl->setCurrentBlock("table_row");
01482                         $this->tpl->setVariable("CSS_ROW",ilUtil::switchColor(++$counter,"tblrow1","tblrow2"));
01483                         $this->tpl->parseCurrentBlock();
01484                         // END TABLE CELL
01485                 }
01486                 // END TABLE DATA
01487 
01488                 // BEGIN OPERATION_BTN
01489                 foreach ($this->data["buttons"] as $name => $value)
01490                 {
01491                         $this->tpl->setCurrentBlock("operation_btn");
01492                         $this->tpl->setVariable("IMG_ARROW",ilUtil::getImagePath("spacer.gif"));
01493                         $this->tpl->setVariable("BTN_NAME",$name);
01494                         $this->tpl->setVariable("BTN_VALUE",$value);
01495                         $this->tpl->parseCurrentBlock();
01496                 }
01497         }
01498 
01505         function confirmedRemoveMemberObject()
01506         {
01507                 $removed_self = false;
01508                 
01509                 $mail = new ilMail($_SESSION["AccountId"]);
01510                 
01511                 //User needs to have administrative rights to remove members...
01512                 foreach($_SESSION["saved_post"]["user_id"] as $member_id)
01513                 {
01514                         $user_obj = new ilObjUser($member_id);
01515 
01516                         if (!$this->object->removeMember($user_obj))
01517                         {
01518                                 sendInfo($this->lng->txt($this->object->getErrorMsg()),true);
01519                                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01520                         }
01521                         
01522                         $user_obj->dropDesktopItem($this->object->getRefId(), "icrs");
01523                         
01524                         if (!$removed_self and $user_obj->getId() == $this->ilias->account->getId())
01525                         {
01526                                 $removed_self = true;
01527                         }
01528                         else
01529                         {
01530                                 $mail->sendMail($user_obj->getLogin(),"","",$this->lng->txtlng("common","ilinc_mail_subj_subscription_cancelled",$user_obj->getLanguage()).": ".$this->object->getTitle(),$this->lng->txtlng("common","ilinc_mail_body_subscription_cancelled",$user_obj->getLanguage()),array(),array('normal'));
01531                         }
01532                 }
01533                 
01534                 unset($_SESSION["saved_post"]);
01535 
01536                 sendInfo($this->lng->txt("ilinc_msg_membership_annulled"),true);
01537                 
01538                 if ($removed_self)
01539                 {
01540                         ilUtil::redirect("repository.php?ref_id=".$this->tree->getParentId($this->ref_id));
01541                 }
01542                 
01543                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01544         }
01545         
01550         function changeMemberObject()
01551         {
01552                 if ($_GET["sort_by"] == "title" or $_GET["sort_by"] == "")
01553                 {
01554                         $_GET["sort_by"] = "login";
01555                 }
01556 
01557                 $member_ids = array();
01558 
01559                 if (isset($_POST["user_id"]))
01560                 {
01561                         $member_ids = $_POST["user_id"];
01562                 }
01563                 else if (isset($_GET["mem_id"]))
01564                 {
01565                         $member_ids[0] = $_GET["mem_id"];
01566                 }
01567 
01568                 if (empty($member_ids[0]))
01569                 {
01570                         $this->ilErr->raiseError($this->lng->txt("no_checkbox"),$this->ilErr->MESSAGE);
01571                 }
01572 
01573                 if (!in_array(SYSTEM_ROLE_ID,$_SESSION["RoleId"]) 
01574                         and !in_array($this->ilias->account->getId(),$this->object->getAdminIds()))
01575                 {
01576                         $this->ilErr->raiseError($this->lng->txt("grp_err_no_permission"),$this->ilErr->MESSAGE);
01577                 }
01578 
01579                 $stati = array_flip($this->object->getLocalRoles(true));
01580                 
01581                 // fetch docent or student assignment form all coursemembers from iLinc server
01582                 $docent_ids = $this->object->getiLincMemberIds(true);
01583                 $student_ids = $this->object->getiLincMemberIds(false);
01584 
01585                 //build data structure
01586                 foreach ($member_ids as $member_id)
01587                 {
01588                         $member =& $this->ilias->obj_factory->getInstanceByObjId($member_id);
01589                         $mem_status = $this->object->getMemberRoles($member_id);
01590                         $ilinc_data = $member->getiLincData();
01591                                                 
01592                         $ilinc_status = $this->object->checkiLincMemberStatus($ilinc_data['id'],$docent_ids,$student_ids);
01593 
01594                         $docent = 0; $student = 0;
01595 
01596                         if ($ilinc_status == ILINC_MEMBER_DOCENT)
01597                         {
01598                                 $docent = 1;
01599                         }
01600                         elseif ($ilinc_status == ILINC_MEMBER_STUDENT)
01601                         {
01602                                 $student = 1;
01603                         }
01604                         
01605                         $radio1 = ilUtil::formRadioButton($docent,"ilinc_member_status_select[".$member->getId()."][".$ilinc_data['id']."]",ILINC_MEMBER_DOCENT);
01606                         $radio2 = ilUtil::formRadioButton($student,"ilinc_member_status_select[".$member->getId()."][".$ilinc_data['id']."]",ILINC_MEMBER_STUDENT);
01607 
01608 
01609                         $this->data["data"][$member->getId()]= array(
01610                                         "login"         => $member->getLogin(),
01611                                         "firstname"     => $member->getFirstname(),
01612                                         "lastname"      => $member->getLastname(),
01613                                         "ilinc_coursemember_status" => $radio1." ".$this->lng->txt("ilinc_docent")."<br/>".$radio2." ".$this->lng->txt("ilinc_student"),
01614                                         "grp_role"      => ilUtil::formSelect($mem_status,"member_status_select[".$member->getId()."][]",$stati,true,true,3)
01615                                 );
01616                 }
01617                 
01618                 unset($member);
01619                 
01620                 infoPanel();
01621 
01622                 $this->tpl->addBlockfile("ADM_CONTENT", "member_table", "tpl.table.html");
01623 
01624                 // load template for table content data
01625                 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
01626 
01627                 $this->data["buttons"] = array( "members"  => $this->lng->txt("back"),
01628                                                                                 "updateMemberStatus"  => $this->lng->txt("confirm"));
01629 
01630                 $this->tpl->setCurrentBlock("tbl_action_row");
01631                 $this->tpl->setVariable("COLUMN_COUNTS",5);
01632                 //$this->tpl->setVariable("TPLPATH",$this->tpl->tplPath);
01633                 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));
01634 
01635                 foreach ($this->data["buttons"] as $name => $value)
01636                 {
01637                         $this->tpl->setCurrentBlock("tbl_action_btn");
01638                         $this->tpl->setVariable("BTN_NAME",$name);
01639                         $this->tpl->setVariable("BTN_VALUE",$value);
01640                         $this->tpl->parseCurrentBlock();
01641                 }
01642 
01643                 //sort data array
01644                 $this->data["data"] = ilUtil::sortArray($this->data["data"], $_GET["sort_by"], $_GET["sort_order"]);
01645                 $output = array_slice($this->data["data"],$_GET["offset"],$_GET["limit"]);
01646                 
01647                 // create table
01648                 include_once "./classes/class.ilTableGUI.php";
01649 
01650                 $tbl = new ilTableGUI($output);
01651 
01652                 // title & header columns
01653                 $tbl->setTitle($this->lng->txt("grp_mem_change_status"),"icon_usr_b.gif",$this->lng->txt("grp_mem_change_status"));
01654                 //$tbl->setHelp("tbl_help.php","icon_help.gif",$this->lng->txt("help"));
01655                 $tbl->setHeaderNames(array($this->lng->txt("username"),$this->lng->txt("firstname"),$this->lng->txt("lastname"),$this->lng->txt("ilinc_coursemember_status"),$this->lng->txt("role")));
01656                 $tbl->setHeaderVars(array("login","firstname","lastname","ilinc_coursemember_status","role"),$this->ctrl->getParameterArray($this,"",false));
01657 
01658                 $tbl->setColumnWidth(array("20%","15%","15%","15%","30%"));
01659 
01660                 $this->tpl->setCurrentBlock("tbl_action_row");
01661                 $this->tpl->parseCurrentBlock();
01662 
01663                 // control
01664                 $tbl->setOrderColumn($_GET["sort_by"]);
01665                 $tbl->setOrderDirection($_GET["sort_order"]);
01666                 $tbl->setLimit($_GET["limit"]);
01667                 $tbl->setOffset($_GET["offset"]);
01668                 $tbl->setMaxCount(count($this->data["data"]));
01669 
01670                 $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
01671 
01672                 // render table
01673                 $tbl->render();
01674         }
01675         
01680         function updateMemberStatusObject()
01681         {
01682                 global $rbacsystem;
01683 
01684                 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()) )
01685                 {
01686                         $this->ilErr->raiseError("permission_denied",$this->ilErr->MESSAGE);
01687                 }
01688 
01689                 if (isset($_POST["member_status_select"]))
01690                 {
01691                         foreach ($_POST["member_status_select"] as $key=>$value)
01692                         {
01693                                 $this->object->leave($key);
01694                                 $this->object->join($key,$value);
01695                         }
01696                 }
01697 
01698                 if (isset($_POST["ilinc_member_status_select"]))
01699                 {
01700                         $users_to_add = array();
01701                         $users_to_register = array();
01702                         $users_to_unregister = array();
01703 
01704                         foreach ($_POST["ilinc_member_status_select"] as $user_id => $ilinc_arr)
01705                         {
01706                                 $ilinc_user_id = key($ilinc_arr);
01707                                 $ilinc_user_status = current($ilinc_arr);
01708                                 //var_dump($user_id,$ilinc_arr,$ilinc_user_id,$ilinc_user_status);
01709                                 
01710                                 // if no ilinc user id was passed, there are 3 options:
01711                                 // 1. user was added by roleassignment and is registered on iLinc server
01712                                 // 2. user was added by roleassignment and is registered NOT YET on iLinc server
01713                                 // 3. iLinc server returns an empty response which happens sometimes :-(
01714                                 if ($ilinc_user_id == 0)
01715                                 {
01716                                         //echo "0";
01717                                         
01718                                         // check if user is already registered on iLinc server
01719                                         $user_obj = new ilObjUser($user_id);
01720                                         $ilinc_data = $user_obj->getiLincData();
01721                                         
01722                                         if ($ilinc_data['id'] == '0')
01723                                         {
01724                                                 // not registered. put user on 'add list'
01725                                                 $users_to_add[] =& $user_obj;
01726                                         }
01727                                         else
01728                                         {
01729                                                 $users_to_register[$ilinc_data['id']] = ILINC_MEMBER_STUDENT;
01730                                         }
01731                                         
01732                                         continue;
01733                                 }
01734                                 
01735                                 //echo "1";
01736                                 $users_to_unregister[] = $ilinc_user_id;
01737                                 $users_to_register[$ilinc_user_id] = $ilinc_user_status;
01738                                 //var_dump($users_to_unregister,$users_to_register);
01739                         }
01740                         
01741                         if (!$this->object->unregisterUsers($users_to_unregister))
01742                         {                               
01743                                 //echo "2";
01744                                 //var_dump($this->object->getErrorMsg());exit;
01745                                 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01746                         }
01747                         
01748                         if (count($users_to_add) > 0)
01749                         {
01750                                 //echo "3";
01751                                 foreach ($users_to_add as $user)
01752                                 {
01753                                         if (!$this->object->addUser($user))
01754                                         {
01755                                                 //echo "4";
01756                                                 //var_dump($this->object->getErrorMsg());exit;
01757                                                 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01758                                         }
01759                                         else
01760                                         {
01761                                                 //echo "5";
01762                                                 $ilinc_data = $user->getiLincData();
01763                                                 $users_to_register[$ilinc_data['id']] = ILINC_MEMBER_STUDENT;
01764                                         }
01765                                 }
01766                         }
01767 
01768                         if (!$this->object->registerUsers($users_to_register))
01769                         {
01770                                 //echo "6";
01771                                 //var_dump($this->object->getErrorMsg());exit;
01772                                 $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01773                         }
01774                 }
01775                 
01776                 //echo "ende";exit;
01777 
01778                 sendInfo($this->lng->txt("msg_obj_modified"),true);
01779                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01780         }
01781         
01782         function editObject()
01783         {
01784                 if (!$this->ilias->getSetting("ilinc_active"))
01785                 {
01786                         $this->ilias->raiseError($this->lng->txt("ilinc_server_not_active"),$this->ilias->error_obj->MESSAGE);
01787                 }
01788                 
01789                 $fields = array();
01790 
01791                 if ($_SESSION["error_post_vars"])
01792                 {
01793                         // fill in saved values in case of error
01794                         $fields["title"] = ilUtil::prepareFormOutput($_SESSION["error_post_vars"]["Fobject"]["title"],true);
01795                         $fields["desc"] = ilUtil::stripSlashes($_SESSION["error_post_vars"]["Fobject"]["desc"]);
01796                 }
01797                 else
01798                 {
01799                         $fields["title"] = ilUtil::prepareFormOutput($this->object->getTitle());
01800                         $fields["desc"] = ilUtil::stripSlashes($this->object->getDescription());
01801                 }
01802 
01803                 $this->displayEditForm($fields);
01804         }
01805         
01812         function displayEditForm($fields)
01813         {
01814                 $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.icrs_edit.html","ilinc");
01815 
01816                 foreach ($fields as $key => $val)
01817                 {
01818                         $this->tpl->setVariable("TXT_".strtoupper($key), $this->lng->txt($key));
01819                         $this->tpl->setVariable(strtoupper($key), $val);
01820                         $this->tpl->parseCurrentBlock();
01821                 }
01822                 
01823                 $checkbox_access = ilUtil::formCheckbox($this->object->activated,"Fobject[activated]",1);
01824                 
01825                 $this->tpl->setVariable("TXT_ACCESS", $this->lng->txt("online"));
01826                 $this->tpl->setVariable("CHKBOX_ACCESS", $checkbox_access);
01827                 
01828                 $obj_str = ($this->call_by_reference) ? "" : "&obj_id=".$this->obj_id;
01829 
01830                 $this->tpl->setVariable("FORMACTION", $this->getFormAction("update",$this->ctrl->getFormAction($this).$obj_str));
01831                 //$this->tpl->setVariable("FORMACTION", $this->getFormAction("update","adm_object.php?cmd=gateway&ref_id=".$this->ref_id.$obj_str));
01832                 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt($this->object->getType()."_edit"));
01833                 $this->tpl->setVariable("TARGET", $this->getTargetFrame("update"));
01834                 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
01835                 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
01836                 $this->tpl->setVariable("CMD_SUBMIT", "update");
01837                 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
01838 
01839         }
01840         
01841         function joinObject()
01842         {
01843                 global $rbacsystem;
01844 
01845                 if (!$rbacsystem->checkAccess("join", $_GET["ref_id"]))
01846                 {
01847                         $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
01848                 }
01849 
01850                 if (!$this->object->addMember($this->ilias->account,$this->object->getDefaultMemberRole(),false))
01851                 {
01852                         //var_dump($this->object->getErrorMsg());exit;
01853                         $this->ilErr->raiseError($this->object->getErrorMsg(),$this->ilErr->MESSAGE);
01854                 }
01855                 
01856                 $this->ilias->account->addDesktopItem($this->object->getRefId(),"icrs");        
01857                 
01858                 sendInfo($this->lng->txt("ilinc_msg_joined"),true);
01859                 ilUtil::redirect($this->ctrl->getLinkTarget($this,"members"));
01860         }
01861         
01862         function isActiveAdministrationPanel()
01863         {
01864                 return false;
01865         }
01866 } // END class.ilObjiLincCourseGUI
01867 ?>

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