00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00036 require_once "classes/class.ilObjectGUI.php";
00037
00038 class ilObjChatServerGUI extends ilObjectGUI
00039 {
00044 function ilObjChatServerGUI($a_data,$a_id,$a_call_by_reference = true, $a_prepare_output = true)
00045 {
00046
00047 #define("ILIAS_MODULE","chat");
00048 $this->type = "chac";
00049 $this->ilObjectGUI($a_data,$a_id,$a_call_by_reference, $a_prepare_output);
00050
00051 $this->lng->loadLanguageModule("chat");
00052 }
00053
00054 function &executeCommand()
00055 {
00056 $next_class = $this->ctrl->getNextClass($this);
00057 $cmd = $this->ctrl->getCmd();
00058 $this->prepareOutput();
00059
00060 switch($next_class)
00061 {
00062 case 'ilpermissiongui':
00063 include_once("./classes/class.ilPermissionGUI.php");
00064 $perm_gui =& new ilPermissionGUI($this);
00065 $ret =& $this->ctrl->forwardCommand($perm_gui);
00066 break;
00067
00068 default:
00069 if(!$cmd)
00070 {
00071 $cmd = "view";
00072 }
00073 $cmd .= "Object";
00074 $this->$cmd();
00075
00076 break;
00077 }
00078 return true;
00079 }
00080
00081 function editObject()
00082 {
00083 global $rbacsystem;
00084
00085 $this->tabs_gui->setTabActive('edit_properties');
00086
00087 if(!$rbacsystem->checkAccess('read', $this->ref_id))
00088 {
00089 $this->ilias->raiseError($this->lng->txt('msg_no_perm_read'),$this->ilias->error_obj->MESSAGE);
00090 }
00091
00092 $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.chac_edit.html','Modules/Chat');
00093
00094 $internal_ip = $this->object->server_conf->getInternalIp();
00095 $external_ip = $this->object->server_conf->getExternalIp();
00096 $port = $this->object->server_conf->getPort();
00097 $ssl_status = $this->object->server_conf->getSSLStatus();
00098 $ssl_port = $this->object->server_conf->getSSLPort();
00099 $moderator = $this->object->server_conf->getModeratorPassword();
00100 $logfile = $this->object->server_conf->getLogfile();
00101 $loglevel = $this->object->server_conf->getLogLevel();
00102 $allowed = $this->object->server_conf->getAllowedHosts();
00103 $active = $this->object->server_conf->getActiveStatus();
00104
00105 if($this->object->server_conf->isAlive() or $this->object->server_conf->getActiveStatus())
00106 {
00107 $this->tpl->setCurrentBlock('chat_active');
00108 $this->tpl->setVariable('TXT_ACT_CHAT', $this->lng->txt('chat_ilias'));
00109 $this->tpl->setVariable('TXT_ACT_STATUS', $this->lng->txt('chat_status'));
00110 $this->tpl->setVariable('TXT_ACT_SUBMIT', $this->lng->txt('change'));
00111 $this->tpl->setVariable('SELECT_ACT_STATUS', $this->__getStatusSelect($active));
00112 $this->tpl->parseCurrentBlock();
00113 }
00114 else if(!$this->object->server_conf->isAlive() && $this->ctrl->getCmd() != 'update')
00115 {
00116 ilUtil::sendInfo($this->lng->txt('chat_cannot_connect_to_server'));
00117 }
00118
00119
00120 $this->tpl->setVariable('FORMACTION', $this->ctrl->getFormAction($this, 'update'));
00121 $this->tpl->setVariable('TXT_CHAT_SERVER_SETTINGS', $this->lng->txt('chat_server_settings'));
00122 $this->tpl->setVariable('TXT_CHAT_SERVER_INTERNAL_IP', $this->lng->txt('chat_server_internal_ip'));
00123 $this->tpl->setVariable('TXT_CHAT_SERVER_EXTERNAL_IP', $this->lng->txt('chat_server_external_ip'));
00124 $this->tpl->setVariable('TXT_CHAT_SERVER_MODERATOR', $this->lng->txt('chat_moderator_password'));
00125 $this->tpl->setVariable('TXT_CHAT_SERVER_PORT', $this->lng->txt('chat_server_port'));
00126 $this->tpl->setVariable('TXT_CHAT_SERVER_SSL_SETTINGS', $this->lng->txt('chat_server_ssl_settings'));
00127 $this->tpl->setVariable('TXT_CHAT_SERVER_SSL_ACTIVE', $this->lng->txt('chat_server_ssl_active'));
00128 $this->tpl->setVariable('TXT_CHAT_SERVER_SSL_PORT', $this->lng->txt('chat_server_ssl_port'));
00129 $this->tpl->setVariable('TXT_CHAT_SERVER_LOGFILE', $this->lng->txt('chat_server_logfile'));
00130 $this->tpl->setVariable('TXT_CHAT_SERVER_LEVEL', $this->lng->txt('chat_server_loglevel'));
00131 $this->tpl->setVariable('TXT_CHAT_SERVER_ALLOWED', $this->lng->txt('chat_server_allowed'));
00132 $this->tpl->setVariable('TXT_CHAT_SERVER_ALLOWED_B', $this->lng->txt('chat_server_allowed_b'));
00133 $this->tpl->setVariable('TXT_REQUIRED_FLD', $this->lng->txt('required_field'));
00134 $this->tpl->setVariable('TXT_CANCEL', $this->lng->txt('cancel'));
00135 $this->tpl->setVariable('TXT_SUBMIT', $this->lng->txt('save'));
00136
00137
00138 $this->tpl->setVariable('CHAT_SERVER_INTERNAL', ilUtil::prepareFormOutput($internal_ip));
00139 $this->tpl->setVariable('CHAT_SERVER_EXTERNAL', ilUtil::prepareFormOutput($external_ip));
00140 $this->tpl->setVariable('CHAT_PORT', ilUtil::prepareFormOutput($port));
00141 if ($ssl_status) $this->tpl->setVariable('CHAT_SSL_STATUS_CHECKED', 'checked="checked"');
00142 $this->tpl->setVariable('CHAT_SSL_PORT', ilUtil::prepareFormOutput($ssl_port));
00143 $this->tpl->setVariable('CHAT_MODERATOR', ilUtil::prepareFormOutput($moderator));
00144 $this->tpl->setVariable('CHAT_LOGFILE', ilUtil::prepareFormOutput($logfile));
00145 $this->tpl->setVariable('CHAT_ALLOWED', ilUtil::prepareFormOutput($allowed));
00146 $this->tpl->setVariable('SELECT_LEVEL', $this->__getLogLevelSelect($loglevel));
00147
00148 return true;
00149 }
00150
00151 function updateObject()
00152 {
00153 global $rbacsystem;
00154
00155 if(!$rbacsystem->checkAccess("write", $this->ref_id))
00156 {
00157 $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"),$this->ilias->error_obj->MESSAGE);
00158 }
00159
00160 $this->object->server_conf->setInternalIp(ilUtil::stripSlashes($_POST['chat_internal_ip']));
00161 $this->object->server_conf->setExternalIp(ilUtil::stripSlashes($_POST['chat_external_ip']));
00162 $this->object->server_conf->setPort(ilUtil::stripSlashes($_POST['chat_port']));
00163 $this->object->server_conf->setSSLStatus((int)$_POST['chat_ssl_status'] ? 1 : 0);
00164 $this->object->server_conf->setSSLPort(ilUtil::stripSlashes($_POST['chat_ssl_port']));
00165 $this->object->server_conf->setModeratorPassword(ilUtil::stripSlashes($_POST['chat_moderator']));
00166 $this->object->server_conf->setLogfile(ilUtil::stripSlashes($_POST['chat_logfile']));
00167 $this->object->server_conf->setLogLevel(ilUtil::stripSlashes($_POST['chat_loglevel']));
00168 $this->object->server_conf->setAllowedHosts(ilUtil::stripSlashes($_POST['chat_allowed']));
00169
00170 if(!$this->object->server_conf->validate())
00171 {
00172 ilUtil::sendInfo($this->object->server_conf->getErrorMessage());
00173 return $this->editObject();
00174 }
00175 else
00176 {
00177 if(!$this->object->server_conf->update())
00178 {
00179 ilUtil::sendInfo($this->object->server_conf->getErrorMessage());
00180 return $this->editObject();
00181 }
00182 }
00183
00184 ilUtil::sendInfo($this->lng->txt("chat_settings_saved"),true);
00185 return $this->editObject();
00186 }
00187
00188 function activateObject()
00189 {
00190 $this->object->server_conf->setActiveStatus((bool) $_POST["chat_active"]);
00191 $this->object->server_conf->updateStatus();
00192
00193 ilUtil::sendInfo($this->lng->txt("chat_status_saved"));
00194 $this->editObject();
00195 }
00196
00197
00198 function __getLogLevelSelect($a_level)
00199 {
00200 $levels = array(1 => $this->lng->txt("chat_level_fatal"),
00201 2 => $this->lng->txt("chat_level_error"),
00202 3 => $this->lng->txt("chat_level_info"),
00203 5 => $this->lng->txt("chat_level_debug"),
00204 6 => $this->lng->txt("chat_level_all"));
00205
00206 return ilUtil::formSelect($a_level,"chat_loglevel",$levels,false,true);
00207 }
00208 function __getStatusSelect($a_status)
00209 {
00210 $stati = array(1 => $this->lng->txt("chat_active"),
00211 0 => $this->lng->txt("chat_inactive"));
00212
00213 return ilUtil::formSelect($a_status,"chat_active",$stati,false,true);
00214 }
00215
00221 function getAdminTabs(&$tabs_gui)
00222 {
00223 global $rbacsystem,$rbacreview;
00224
00225 $this->ctrl->setParameter($this,"ref_id",$this->object->getRefId());
00226
00227 if($rbacsystem->checkAccess('read',$this->object->getRefId()))
00228 {
00229 $force_active = ($_GET["cmd"] == "" || $_GET["cmd"] == "view")
00230 ? true
00231 : false;
00232 $tabs_gui->addTarget("chat_rooms",
00233 $this->ctrl->getLinkTarget($this, "view"), array("view", ""), get_class($this),
00234 "", $force_active);
00235 }
00236 if($rbacsystem->checkAccess('write',$this->object->getRefId()))
00237 {
00238 $force_active = ($_GET["cmd"] == "edit")
00239 ? true
00240 : false;
00241 $tabs_gui->addTarget("edit_properties",
00242 $this->ctrl->getLinkTarget($this, "edit"), "edit", get_class($this),
00243 "", $force_active);
00244 }
00245 if($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
00246 {
00247 $tabs_gui->addTarget("perm_settings",
00248 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"), array("perm","info","owner"), 'ilpermissiongui');
00249 }
00250 }
00251
00252
00253
00254
00255
00256 }
00257
00258 ?>