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 $stat = $this->lng->txt("group_req_registration");
00107 $msg = $this->lng->txt("group_req_registration_msg");
00108 $cmd_submit = "apply";
00109 $txt_submit = $this->lng->txt("grp_register");
00110 $txt_subject =$this->lng->txt("subject").":";
00111 $textfield = "<textarea name=\"subject\" value=\"{SUBJECT}\" cols=\"50\" rows=\"5\" size=\"255\"></textarea>";
00112 break;
00113
00114 case 2:
00115 if ($this->object->registrationPossible() == true)
00116 {
00117 $stat = $this->lng->txt("group_req_password");
00118 $msg = $this->lng->txt("group_password_registration_msg");
00119 $txt_subject =$this->lng->txt("password").":";
00120 $txt_submit = $this->lng->txt("grp_register");
00121 $textfield = "<input name=\"subject\" value=\"{SUBJECT}\" type=\"password\" size=\"40\" maxlength=\"70\" style=\"width:300px;\"/>";
00122 $cmd_submit = "apply";
00123 }
00124 else
00125 {
00126 $no_cancel = true;
00127 $msg = $this->lng->txt("group_password_registration_expired_msg");
00128 $msg_send = "mail_new.php?mobj_id=3&type=new&rcp_to=root";
00129 $cmd_submit = "cancel";
00130 $txt_submit = $this->lng->txt("grp_back");
00131 $readonly = "readonly";
00132 $stat = $this->lng->txt("group_registration_expired");
00133 sendInfo($this->lng->txt("registration_expired"));
00134 }
00135 break;
00136 }
00137
00138 if ($no_cancel !== true)
00139 {
00140 $this->tpl->setCurrentBlock("btn_cancel");
00141 $this->tpl->setVariable("CMD_CANCEL","cancel");
00142 $this->tpl->setVariable("TXT_CANCEL",$this->lng->txt("cancel"));
00143 $this->tpl->parseCurrentBlock();
00144 }
00145
00146 if (!$rbacsystem->checkAccess("join", $_GET["ref_id"]))
00147 {
00148 $ilias->raiseError($lng->txt("permission_denied"), $ilias->error_obj->MESSAGE);
00149 return;
00150 }
00151
00152 $this->tpl->addBlockFile("ADM_CONTENT", "tbldesc", "tpl.grp_accessdenied.html");
00153 $this->tpl->setVariable("TXT_HEADER",$this->lng->txt("group_access_denied"));
00154 $this->tpl->setVariable("TXT_MESSAGE",$msg);
00155 $this->tpl->setVariable("TXT_GRP_NAME", $this->lng->txt("group_name").":");
00156 $this->tpl->setVariable("GRP_NAME",$this->object->getTitle());
00157 $this->tpl->setVariable("TXT_GRP_DESC",$this->lng->txt("group_desc").":");
00158 $this->tpl->setVariable("GRP_DESC",$this->object->getDescription());
00159 $this->tpl->setVariable("TXT_GRP_OWNER",$this->lng->txt("owner").":");
00160 $this->tpl->setVariable("GRP_OWNER",$owner->getLogin());
00161 $this->tpl->setVariable("TXT_GRP_STATUS",$this->lng->txt("group_status").":");
00162 $this->tpl->setVariable("GRP_STATUS", $stat);
00163 $this->tpl->setVariable("TXT_SUBJECT",$txt_subject);
00164 $this->tpl->setVariable("SUBJECT",$textfield);
00165 $this->tpl->setVariable("TXT_SUBMIT",$txt_submit);
00166 $this->tpl->setVariable("CMD_SUBMIT",$cmd_submit);
00167 $this->tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
00168 $this->tpl->parseCurrentBlock();
00169 }
00170
00171 function cancel()
00172 {
00173 sendInfo($this->lng->txt("action_aborted"),true);
00174
00175
00176 ilUtil::redirect("repository.php?ref_id=".$this->getReturnRefId());
00177 }
00178
00179 function subscribe()
00180 {
00181 if (!$this->object->addMember($this->ilias->account->getId(), $this->object->getDefaultMemberRole()))
00182 {
00183 $this->ilErr->raiseError($this->lng->txt("err_unknown_error"),$this->ilErr->MESSAGE);
00184 }
00185
00186 $this->ilias->account->addDesktopItem($this->object->getRefId(),"grp");
00187
00188 sendInfo($this->lng->txt("grp_registration_completed"),true);
00189 $this->ctrl->returnToParent($this);
00190 }
00191
00192 function apply()
00193 {
00194 switch ($this->object->getRegistrationFlag())
00195 {
00196
00197 case 1:
00198 $q = "INSERT INTO grp_registration VALUES (".$this->object->getId().",".$this->ilias->account->getId().",'".$_POST["subject"]."','".date("Y-m-d H:i:s")."')";
00199 $this->ilias->db->query($q);
00200
00201 sendInfo($this->lng->txt("application_completed"),true);
00202 ilUtil::redirect("repository.php?ref_id=".$this->getReturnRefId());
00203 break;
00204
00205
00206 case 2:
00207 if (strcmp($this->object->getPassword(),$_POST["subject"]) == 0 && $this->object->registrationPossible() == true)
00208 {
00209 $this->object->addMember($this->ilias->account->getId(),$this->object->getDefaultMemberRole());
00210
00211 $this->ilias->account->addDesktopItem($this->object->getRefId(),"grp");
00212
00213 sendInfo($this->lng->txt("grp_registration_completed"),true);
00214 $this->ctrl->returnToParent($this);
00215 }
00216
00217
00218 sendInfo($this->lng->txt("err_wrong_password"),true);
00219 $this->ctrl->returnToParent($this);
00220
00221
00222 break;
00223
00224 default:
00225 $this->ilErr->raiseError($this->lng->txt("err_unknown_error"),$this->ilErr->MESSAGE);
00226 break;
00227 }
00228 }
00229
00230 function getReturnRefId()
00231 {
00232 if ($_SESSION["il_rep_ref_id"] == $this->object->getRefId())
00233 {
00234 return $this->tree->getParentId($this->object->getRefId());
00235 }
00236 else
00237 {
00238 return $_SESSION["il_rep_ref_id"];
00239 }
00240 }
00241
00242 function isUserAlreadyRegistered ()
00243 {
00244 $q = "SELECT * FROM grp_registration WHERE grp_id=".$this->object->getId()." AND user_id=".$this->ilias->account->getId();
00245 $res = $this->ilias->db->query($q);
00246
00247 if ($res->numRows() > 0)
00248 {
00249 return true;
00250 }
00251
00252 return false;
00253 }
00254 }
00255 ?>