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