00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00036 require_once "class.ilObjectGUI.php";
00037
00038 class ilObjExternalToolsSettingsGUI extends ilObjectGUI
00039 {
00044 function ilObjExternalToolsSettingsGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output = true)
00045 {
00046 $this->type = "extt";
00047 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference,false);
00048
00049 define ("ILINC_DEFAULT_HTTP_PORT",80);
00050 define ("ILINC_DEFAULT_SSL_PORT",443);
00051 define ("ILINC_DEFAULT_TIMEOUT",30);
00052 }
00053
00059 function viewObject()
00060 {
00061 global $rbacsystem;
00062
00063 if (!$rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00064 {
00065 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00066 }
00067
00068 $this->__initSubTabs("view");
00069
00070 $this->getTemplateFile("general");
00071
00072 $this->tpl->setVariable("FORMACTION",
00073 $this->ctrl->getFormAction($this));
00074 $this->tpl->setVariable("TXT_EXTT_TITLE", $this->lng->txt("extt_title_configure"));
00075
00076 $this->tpl->setVariable("TXT_EXTT_NAME", $this->lng->txt("extt_name"));
00077 $this->tpl->setVariable("TXT_EXTT_ACTIVE", $this->lng->txt("active")."?");
00078 $this->tpl->setVariable("TXT_EXTT_DESC", $this->lng->txt("description"));
00079
00080 $this->tpl->setVariable("TXT_CONFIGURE", $this->lng->txt("extt_configure"));
00081 $this->tpl->setVariable("TXT_EXTT_REMARK", $this->lng->txt("extt_remark"));
00082
00083
00084 $this->tpl->setVariable("TXT_EXTT_ILINC_NAME", $this->lng->txt("extt_ilinc"));
00085 $this->tpl->setVariable("TXT_EXTT_ILINC_DESC", $this->lng->txt("extt_ilinc_desc"));
00086
00087
00088
00089 $icon_ok = "<img src=\"".ilUtil::getImagePath("icon_ok.gif")."\" alt=\"".$this->lng->txt("enabled")."\" title=\"".$this->lng->txt("enabled")."\" border=\"0\" vspace=\"0\"/>";
00090 $icon_not_ok = "<img src=\"".ilUtil::getImagePath("icon_not_ok.gif")."\" alt=\"".$this->lng->txt("disabled")."\" title=\"".$this->lng->txt("disabled")."\" border=\"0\" vspace=\"0\"/>";
00091
00092 $this->tpl->setVariable("EXTT_ILINC_ACTIVE", $this->ilias->getSetting('ilinc_active') ? $icon_ok : $icon_not_ok);
00093 }
00094
00095 function cancelObject()
00096 {
00097 sendInfo($this->lng->txt("msg_cancel"),true);
00098 $this->ctrl->redirect($this, "view");
00099 }
00100
00101 function getAdminTabs(&$tabs_gui)
00102 {
00103 $this->getTabs($tabs_gui);
00104 }
00105
00111 function getTabs(&$tabs_gui)
00112 {
00113 global $rbacsystem;
00114
00115 $this->ctrl->setParameter($this,"ref_id",$this->object->getRefId());
00116
00117 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00118 {
00119 $tabs_gui->addTarget("settings",
00120 $this->ctrl->getLinkTarget($this, "view"), array("view","editiLinc",""), "", "");
00121 }
00122
00123 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
00124 {
00125 $tabs_gui->addTarget("perm_settings",
00126 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
00127 }
00128 }
00129
00135 function editiLincObject()
00136 {
00137 global $rbacsystem, $rbacreview;
00138
00139 if (!$rbacsystem->checkAccess("write",$this->object->getRefId()))
00140 {
00141 $this->ilias->raiseError($this->lng->txt("permission_denied"),$this->ilias->error_obj->MESSAGE);
00142 }
00143
00144 $this->__initSubTabs("editiLinc");
00145
00146 if ($_SESSION["error_post_vars"])
00147 {
00148 if ($_SESSION["error_post_vars"]["ilinc"]["active"] == "1")
00149 {
00150 $this->tpl->setVariable("CHK_ILINC_ACTIVE", "checked=\"checked\"");
00151 }
00152
00153 if ($_SESSION["error_post_vars"]["ilinc"]["akclassvalues_active"] == "1")
00154 {
00155 $this->tpl->setVariable("CHK_ILINC_AKCLASSVALUES_ACTIVE", "checked=\"checked\"");
00156 }
00157
00158 if ($_SESSION["error_post_vars"]["ilinc"]["akclassvalues_required"] == "1")
00159 {
00160 $this->tpl->setVariable("CHK_ILINC_AKCLASSVALUES_REQUIRED", "checked=\"checked\"");
00161 }
00162
00163 $this->tpl->setVariable("ILINC_SERVER", $_SESSION["error_post_vars"]["ilinc"]["server"]);
00164 $this->tpl->setVariable("ILINC_REGISTRAR_LOGIN", $_SESSION["error_post_vars"]["ilinc"]["registrar_login"]);
00165 $this->tpl->setVariable("ILINC_REGISTRAR_PASSWD", $_SESSION["error_post_vars"]["ilinc"]["registrar_passwd"]);
00166 $this->tpl->setVariable("ILINC_CUSTOMER_ID", $_SESSION["error_post_vars"]["ilinc"]["customer_id"]);
00167 }
00168 else
00169 {
00170
00171 $settings = $this->ilias->getAllSettings();
00172
00173 if ($settings["ilinc_active"] == "1")
00174 {
00175 $this->tpl->setVariable("CHK_ILINC_ACTIVE", "checked=\"checked\"");
00176 }
00177
00178 $this->tpl->setVariable("ILINC_SERVER", $settings["ilinc_server"].$settings["ilinc_path"]);
00179 $this->tpl->setVariable("ILINC_REGISTRAR_LOGIN", $settings["ilinc_registrar_login"]);
00180 $this->tpl->setVariable("ILINC_REGISTRAR_PASSWD", $settings["ilinc_registrar_passwd"]);
00181 $this->tpl->setVariable("ILINC_CUSTOMER_ID", $settings["ilinc_customer_id"]);
00182
00183 if (empty($settings["ilinc_port"]))
00184 {
00185 $this->tpl->setVariable("ILINC_PORT", ILINC_DEFAULT_HTTP_PORT);
00186 }
00187 else
00188 {
00189 $this->tpl->setVariable("ILINC_PORT", $settings["ilinc_port"]);
00190 }
00191
00192 if ($settings["ilinc_protocol"] == "https")
00193 {
00194 $this->tpl->setVariable("ILINC_PROTOCOL_SSL_SEL", "selected=\"selected\"");
00195 }
00196 else
00197 {
00198 $this->tpl->setVariable("ILINC_PROTOCOL_HTTP_SEL", "selected=\"selected\"");
00199 }
00200
00201 if (empty($settings["ilinc_timeout"]))
00202 {
00203 $this->tpl->setVariable("ILINC_TIMEOUT", ILINC_DEFAULT_TIMEOUT);
00204 }
00205 else
00206 {
00207 $this->tpl->setVariable("ILINC_TIMEOUT", $settings["ilinc_timeout"]);
00208 }
00209
00210 if ($settings["ilinc_akclassvalues_active"] == "1")
00211 {
00212 $this->tpl->setVariable("CHK_ILINC_AKCLASSVALUES_ACTIVE", "checked=\"checked\"");
00213 }
00214
00215 if ($settings["ilinc_akclassvalues_required"] == "1")
00216 {
00217 $this->tpl->setVariable("CHK_ILINC_AKCLASSVALUES_REQUIRED", "checked=\"checked\"");
00218 }
00219 }
00220
00221 $this->getTemplateFile("ilinc");
00222
00223 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
00224 $this->tpl->setVariable("TXT_ILINC_TITLE", $this->lng->txt("extt_ilinc_configure"));
00225 $this->tpl->setVariable("TXT_ILINC_ACTIVE", $this->lng->txt("extt_ilinc_enable"));
00226 $this->tpl->setVariable("TXT_ILINC_CONNECTION_DATA", $this->lng->txt("extt_ilinc_connection_data"));
00227 $this->tpl->setVariable("TXT_ILINC_ADDITIONAL_OPTIONS", $this->lng->txt("extt_ilinc_additional_options"));
00228 $this->tpl->setVariable("TXT_ILINC_SERVER", $this->lng->txt("extt_ilinc_server"));
00229 $this->tpl->setVariable("TXT_ILINC_PROTOCOL_PORT", $this->lng->txt("extt_ilinc_protocol_port"));
00230 $this->tpl->setVariable("TXT_ILINC_TIMEOUT", $this->lng->txt("extt_ilinc_timeout"));
00231 $this->tpl->setVariable("ILINC_DEFAULT_HTTP_PORT", ILINC_DEFAULT_HTTP_PORT);
00232 $this->tpl->setVariable("ILINC_DEFAULT_SSL_PORT", ILINC_DEFAULT_SSL_PORT);
00233 $this->tpl->setVariable("TXT_HTTP", $this->lng->txt('http'));
00234 $this->tpl->setVariable("TXT_SSL", $this->lng->txt('ssl'));
00235
00236 $this->tpl->setVariable("TXT_SECONDS", $this->lng->txt("seconds"));
00237 $this->tpl->setVariable("TXT_ILINC_REGISTRAR_LOGIN", $this->lng->txt("extt_ilinc_registrar_login"));
00238 $this->tpl->setVariable("TXT_ILINC_REGISTRAR_PASSWD", $this->lng->txt("extt_ilinc_registrar_passwd"));
00239 $this->tpl->setVariable("TXT_ILINC_CUSTOMER_ID", $this->lng->txt("extt_ilinc_customer_id"));
00240
00241 $this->tpl->setVariable("TXT_ILINC_AKCLASSVALUES_ACTIVE", $this->lng->txt("extt_ilinc_akclassvalues_active"));
00242 $this->tpl->setVariable("TXT_ILINC_AKCLASSVALUES_ACTIVE_INFO", $this->lng->txt("extt_ilinc_akclassvalues_active_info"));
00243 $this->tpl->setVariable("TXT_ILINC_AKCLASSVALUES_REQUIRED", $this->lng->txt("extt_ilinc_akclassvalues_required"));
00244 $this->tpl->setVariable("TXT_ILINC_AKCLASSVALUES_REQUIRED_INFO", $this->lng->txt("extt_ilinc_akclassvalues_required_info"));
00245
00246 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
00247 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
00248 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
00249 $this->tpl->setVariable("CMD_SUBMIT", "saveiLinc");
00250 }
00251
00257 function saveiLincObject()
00258 {
00259 global $ilUser;
00260
00261
00262 if (!$_POST["ilinc"]["server"] or !$_POST["ilinc"]["port"] or !$_POST["ilinc"]["registrar_login"] or !$_POST["ilinc"]["registrar_passwd"] or !$_POST["ilinc"]["customer_id"])
00263 {
00264 $this->ilias->raiseError($this->lng->txt("fill_out_all_required_fields"),$this->ilias->error_obj->MESSAGE);
00265 }
00266
00267
00268 if ((preg_match("/^[0-9]{0,5}$/",$_POST["ilinc"]["port"])) == false)
00269 {
00270 $this->ilias->raiseError($this->lng->txt("err_invalid_port"),$this->ilias->error_obj->MESSAGE);
00271 }
00272
00273 if (substr($_POST["ilinc"]["server"],0,8) != "https://" and substr($_POST["ilinc"]["server"],0,7) != "http://")
00274 {
00275 $_POST["ilinc"]["server"] = $_POST["ilinc"]["protocol"]."://".$_POST["ilinc"]["server"];
00276 }
00277
00278 $url = parse_url($_POST["ilinc"]["server"]);
00279
00280 if (!ilUtil::isIPv4($url["host"]) and !ilUtil::isDN($url["host"]))
00281 {
00282 $this->ilias->raiseError($this->lng->txt("err_invalid_server"),$this->ilias->error_obj->MESSAGE);
00283 }
00284
00285 if (is_numeric($_POST["ilinc"]["timeout"]))
00286 {
00287 $this->ilias->setSetting("ilinc_timeout", $_POST["ilinc"]["timeout"]);
00288 }
00289
00290
00291 $this->ilias->setSetting("ilinc_server", $url["host"]);
00292 $this->ilias->setSetting("ilinc_path", $url["path"]);
00293 $this->ilias->setSetting("ilinc_protocol", $_POST["ilinc"]["protocol"]);
00294 $this->ilias->setSetting("ilinc_port", $_POST["ilinc"]["port"]);
00295 $this->ilias->setSetting("ilinc_active", $_POST["ilinc"]["active"]);
00296 $this->ilias->setSetting("ilinc_registrar_login", $_POST["ilinc"]["registrar_login"]);
00297 $this->ilias->setSetting("ilinc_registrar_passwd", $_POST["ilinc"]["registrar_passwd"]);
00298 $this->ilias->setSetting("ilinc_customer_id", $_POST["ilinc"]["customer_id"]);
00299
00300 $this->ilias->setSetting("ilinc_akclassvalues_active", $_POST["ilinc"]["akclassvalues_active"]);
00301 $this->ilias->setSetting("ilinc_akclassvalues_required", $_POST["ilinc"]["akclassvalues_required"]);
00302
00303 sendInfo($this->lng->txt("extt_ilinc_settings_saved"),true);
00304 $this->ctrl->redirect($this,'editiLinc');
00305 }
00306
00307
00308 function __initSubTabs($a_cmd)
00309 {
00310 $ilinc = ($a_cmd == 'editiLinc') ? true : false;
00311 $overview = ($a_cmd == 'view' or $a_cmd == '') ? true : false;
00312
00313 $this->tabs_gui->addSubTabTarget("overview", $this->ctrl->getLinkTarget($this, "view"),
00314 "", "", "", $overview);
00315 $this->tabs_gui->addSubTabTarget("extt_ilinc", $this->ctrl->getLinkTarget($this, "editiLinc"),
00316 "", "", "", $ilinc);
00317 }
00318
00319 function &executeCommand()
00320 {
00321 $next_class = $this->ctrl->getNextClass($this);
00322 $cmd = $this->ctrl->getCmd();
00323 $this->prepareOutput();
00324
00325 switch($next_class)
00326 {
00327 case 'ilpermissiongui':
00328 include_once("./classes/class.ilPermissionGUI.php");
00329 $perm_gui =& new ilPermissionGUI($this);
00330 $ret =& $this->ctrl->forwardCommand($perm_gui);
00331 break;
00332
00333 default:
00334 if(!$cmd)
00335 {
00336 $cmd = "view";
00337 }
00338 $cmd .= "Object";
00339 $this->$cmd();
00340
00341 break;
00342 }
00343 return true;
00344 }
00345
00346 }
00347 ?>