00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00032 class ilRegisterGUI
00033 {
00034 var $lng;
00035 var $ilias;
00036 var $tpl;
00037 var $tree;
00038 var $objDefinition;
00039 var $ctrl;
00040 var $cmd;
00041 var $ilErr;
00042 var $object;
00043
00048 function ilRegisterGUI()
00049 {
00050 global $lng, $ilias, $tpl, $tree, $objDefinition, $ilCtrl, $ilErr;
00051
00052 $this->lng =& $lng;
00053 $this->lng->loadLanguageModule('crs');
00054
00055 $this->ilias =& $ilias;
00056 $this->tpl =& $tpl;
00057 $this->tree =& $tree;
00058 $this->objDefinition =& $objDefinition;
00059 $this->ilErr =& $ilErr;
00060
00061 $this->ctrl =& $ilCtrl;
00062 $this->ctrl->saveParameter($this,array("ref_id"));
00063 $this->ctrl->setParameter($this,"user_id",$this->ilias->account->getId());
00064
00065
00066 $this->object =& $this->ilias->obj_factory->getInstanceByRefId($_GET["ref_id"]);
00067 }
00068
00072 function &executeCommand()
00073 {
00074 if ($this->isUserAlreadyRegistered())
00075 {
00076 $this->ilErr->raiseError($this->lng->txt("grp_already_applied"),$this->ilErr->MESSAGE);
00077 }
00078
00079 $cmd = $this->ctrl->getCmd();
00080
00081 if (empty($cmd))
00082 {
00083 $cmd = "cancel";
00084 }
00085
00086 $this->cmd = $cmd;
00087 $this->$cmd();
00088 }
00089
00090 function showRegistrationForm()
00091 {
00092 include_once 'course/classes/class.ilObjCourseGrouping.php';
00093
00094 global $rbacsystem, $ilias, $lng;
00095
00096 switch ($this->object->getRegistrationFlag())
00097 {
00098 case 0:
00099 $stat = $this->lng->txt("group_no_registration");
00100 $msg = $this->lng->txt("group_no_registration_msg");
00101 $readonly ="readonly";
00102 $subject ="";
00103 $cmd_submit = "subscribe";
00104 $txt_submit = $this->lng->txt("grp_register");
00105 break;
00106
00107 case 1:
00108 if ($this->object->registrationPossible() == true)
00109 {
00110 $stat = $this->lng->txt("group_req_registration");
00111 $msg = $this->lng->txt("group_req_registration_msg");
00112 $cmd_submit = "apply";
00113 $txt_submit = $this->lng->txt("request_membership");
00114 $txt_subject =$this->lng->txt("subject").":";
00115 $textfield = "<textarea name=\"subject\" value=\"{SUBJECT}\" cols=\"50\" rows=\"5\" size=\"255\"></textarea>";
00116 }
00117 else
00118 {
00119 $no_cancel = true;
00120 $msg = $this->lng->txt("group_registration_expired_msg");
00121 $msg_send = "mail_new.php?mobj_id=3&type=new&rcp_to=root";
00122 $cmd_submit = "cancel";
00123 $txt_submit = $this->lng->txt("grp_back");
00124 $readonly = "readonly";
00125 $stat = $this->lng->txt("group_registration_expired");
00126 sendInfo($this->lng->txt("registration_expired"));
00127 }
00128 break;
00129
00130 case 2:
00131 if ($this->object->registrationPossible() == true)
00132 {
00133 $stat = $this->lng->txt("group_req_password");
00134 $msg = $this->lng->txt("group_password_registration_msg");
00135 $txt_subject =$this->lng->txt("password").":";
00136 $txt_submit = $this->lng->txt("grp_register");
00137 $textfield = "<input name=\"subject\" value=\"{SUBJECT}\" type=\"password\" size=\"40\" maxlength=\"70\" style=\"width:300px;\"/>";
00138 $cmd_submit = "apply";
00139 }
00140 else
00141 {
00142 $no_cancel = true;
00143 $msg = $this->lng->txt("group_registration_expired_msg");
00144 $msg_send = "mail_new.php?mobj_id=3&type=new&rcp_to=root";
00145 $cmd_submit = "cancel";
00146 $txt_submit = $this->lng->txt("grp_back");
00147 $readonly = "readonly";
00148 $stat = $this->lng->txt("group_registration_expired");
00149 sendInfo($this->lng->txt("registration_expired"));
00150 }
00151 break;
00152 }
00153
00154 if ($no_cancel !== true)
00155 {
00156 $this->tpl->setCurrentBlock("btn_cancel");
00157 $this->tpl->setVariable("CMD_CANCEL","cancel");
00158 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00159 $this->tpl->parseCurrentBlock();
00160 }
00161
00162 if(!$rbacsystem->checkAccess("join", $_GET["ref_id"]))
00163 {
00164 $ilias->raiseError($lng->txt("permission_denied"), $ilias->error_obj->MESSAGE);
00165 return;
00166 }
00167
00168 $submit_btn = true;
00169 if(!ilObjCourseGrouping::_checkGroupingDependencies($this->object))
00170 {
00171 sendInfo($this->object->getMessage());
00172 $submit_btn = false;
00173 }
00174
00175 $this->tpl->addBlockFile("ADM_CONTENT", "tbldesc", "tpl.grp_accessdenied.html");
00176 $this->tpl->setVariable("TYPE_IMG",ilUtil::getImagePath("icon_grp.gif"));
00177 $this->tpl->setVariable("ALT_IMG",$this->lng->txt("obj_grp"));
00178 $this->tpl->setVariable("TITLE",$this->lng->txt("grp_registration"));
00179 $this->tpl->setVariable("TXT_MESSAGE",$msg);
00180 $this->tpl->setVariable("TXT_GRP_NAME", $this->lng->txt("group_name"));
00181 $this->tpl->setVariable("GRP_NAME",$this->object->getTitle());
00182 $this->tpl->setVariable("TXT_GRP_DESC",$this->lng->txt("group_desc"));
00183 $this->tpl->setVariable("GRP_DESC",$this->object->getDescription());
00184
00185
00186
00187
00188 $this->tpl->setVariable("TXT_INFO_REG",$this->lng->txt("group_info_reg"));
00189 $this->tpl->setVariable("INFO_REG", $msg);
00190
00191 if(strlen($txt_subject))
00192 {
00193 $this->tpl->setVariable("TXT_SUBJECT",$txt_subject);
00194 $this->tpl->setVariable("SUBJECT",$textfield);
00195 }
00196 if(strlen($message = ilObjCourseGrouping::_getGroupingItemsAsString($this->object)))
00197 {
00198 $this->tpl->setVariable("TXT_MEMBER_LIMIT",$this->lng->txt('groupings'));
00199 $this->tpl->setVariable("MEMBER_LIMIT",$this->lng->txt('crs_grp_info_reg').$message);
00200 }
00201
00202 if($submit_btn)
00203 {
00204 $this->tpl->setVariable("TXT_SUBMIT",$txt_submit);
00205 $this->tpl->setVariable("CMD_SUBMIT",$cmd_submit);
00206 }
00207 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this,'subscribe'));
00208 $this->tpl->parseCurrentBlock();
00209 }
00210
00211 function cancel()
00212 {
00213 sendInfo($this->lng->txt("action_aborted"),true);
00214
00215
00216 ilUtil::redirect("repository.php?ref_id=".$this->getReturnRefId());
00217 }
00218
00219 function subscribe()
00220 {
00221 if (!$this->object->addMember($this->ilias->account->getId(), $this->object->getDefaultMemberRole()))
00222 {
00223 $this->ilErr->raiseError($this->lng->txt("err_unknown_error"),$this->ilErr->MESSAGE);
00224 }
00225
00226 $this->ilias->account->addDesktopItem($this->object->getRefId(),"grp");
00227
00228 sendInfo($this->lng->txt("grp_registration_completed"),true);
00229 $this->ctrl->returnToParent($this);
00230 }
00231
00232 function apply()
00233 {
00234 switch ($this->object->getRegistrationFlag())
00235 {
00236
00237 case 1:
00238 $q = "INSERT INTO grp_registration VALUES (".$this->object->getId().",".
00239 $this->ilias->account->getId().",'".$_POST["subject"]."','".date("Y-m-d H:i:s")."')";
00240 $this->ilias->db->query($q);
00241
00242 sendInfo($this->lng->txt("application_completed"),true);
00243 ilUtil::redirect("repository.php?ref_id=".$this->getReturnRefId());
00244 break;
00245
00246
00247 case 2:
00248 if (strcmp($this->object->getPassword(),$_POST["subject"]) == 0 && $this->object->registrationPossible() == true)
00249 {
00250 $this->object->addMember($this->ilias->account->getId(),$this->object->getDefaultMemberRole());
00251
00252 $this->ilias->account->addDesktopItem($this->object->getRefId(),"grp");
00253
00254 sendInfo($this->lng->txt("grp_registration_completed"),true);
00255 $this->ctrl->returnToParent($this);
00256 }
00257
00258
00259 sendInfo($this->lng->txt("err_wrong_password"),true);
00260 $this->ctrl->returnToParent($this);
00261
00262
00263 break;
00264
00265 default:
00266 $this->ilErr->raiseError($this->lng->txt("err_unknown_error"),$this->ilErr->MESSAGE);
00267 break;
00268 }
00269 }
00270
00271 function getReturnRefId()
00272 {
00273 if ($_SESSION["il_rep_ref_id"] == $this->object->getRefId())
00274 {
00275 return $this->tree->getParentId($this->object->getRefId());
00276 }
00277 else
00278 {
00279 return $_SESSION["il_rep_ref_id"];
00280 }
00281 }
00282
00283 function isUserAlreadyRegistered ()
00284 {
00285 $q = "SELECT * FROM grp_registration WHERE grp_id=".$this->object->getId()." AND user_id=".$this->ilias->account->getId();
00286 $res = $this->ilias->db->query($q);
00287
00288 if ($res->numRows() > 0)
00289 {
00290 return true;
00291 }
00292
00293 return false;
00294 }
00295 }
00296 ?>