29 require_once(
"db.class.php");
44 if( !
$db instanceof
db ){
45 throw new exception(
"No database object");
57 foreach( array_keys($this->data) as $name ){
58 if( strtoupper($name) === $name ){
60 if( $name ==
"GROUPS_WHITELIST" ){
61 $GLOBALS[
"groups_whitelist"] = $this->data[
"GROUPS_WHITELIST"];
62 }
else if( $name ==
"EMAIL_GROUPS" ){
63 $GLOBALS[
"email_groups"] = $this->data[
"EMAIL_GROUPS"];
65 }
else if( (!defined($name)) AND ((is_string($this->data[$name])) OR (is_numeric($this->data[$name])) ) ){
66 define( $name , $this->data[$name] );
68 }
else if( (!defined($name)) AND (is_array($this->data[$name])) ){
69 define( $name , implode(
",",$this->data[$name]) );
71 }
else if( (!defined($name)) AND (is_bool($this->data[$name])) ){
72 if($this->data[$name] ===
true ){
73 define( $name ,
"true" );
75 define( $name ,
"false" );
87 if( !isset($this->data[
"APP_ROOT_URL"]) ){
88 $this->data[
"APP_ROOT_URL"] =
"";
98 foreach(
$data as $row ){
99 if( (isset($row[
"name"])) AND (isset($row[
"value"])) ){
100 $this->data[$row[
"name"]] = unserialize($row[
"value"]);
115 if( isset($this->data[$name]) ){
116 $data = serialize($this->data[$name]);
126 foreach( array_keys($this->data) as $name ){
138 public function set($name,$value){
139 if( $name ==
"APP_ROOT_URL"){
140 $f = filter_var($value,FILTER_VALIDATE_URL);
142 if( (substr($f,0,7) ===
"http://") OR (substr($f,0,8) ===
"https://") ){
143 $this->data[
"APP_ROOT_URL"] = trim($f,
"/");
145 return "Bitte http:// oder https:// in dr URL des Feldes APP_ROOT_URL angeben.";
148 return "http-Adresse für APP_ROOT_URL ist ungültig!";
151 }
else if( $name ==
"ANALYTICS_HTML_INCLUDE_FILE"){
152 if( ($value ==
"") OR (is_readable($value)) ){
153 $this->data[
"ANALYTICS_HTML_INCLUDE_FILE"] = $value;
155 return "Datei aus ANALYTICS_HTML_INCLUDE_FILE nicht lesbar (oder existiert nicht)";
158 }
else if( $name ==
"TEACHER_GROUP"){
160 if( is_array($value) ){
161 foreach( $value as $gr ){
162 if( is_numeric($gr) ){
163 $new_gr[] = intval($gr);
166 $this->data[
"TEACHER_GROUP"] = $new_gr;
172 else if( $name ==
"GROUPS_WHITELIST"){
174 if( is_array($value) ){
175 foreach( $value as $gr ){
176 if( is_string($gr) ){
180 $this->data[
"GROUPS_WHITELIST"] = $new_gr;
189 else if( $name ==
"EMAIL_ENABLE"){
190 if( $value ===
true ){
191 $this->data[
"EMAIL_ENABLE"] = $value;
193 $this->data[
"EMAIL_ENABLE"] =
false;
196 }
else if( $name ==
"EMAIL_METHOD"){
197 if( in_array($value,array(
"group",
"LDAP")) ){
198 $this->data[$name] = $value;
200 return "Wert für EMAIL_METHOD ist ungültig.";
203 }
else if( $name ==
"EMAIL_SEND_METHOD"){
204 if( in_array($value,array(
"smtp",
"mail",
"sendmail")) ){
205 $this->data[$name] = $value;
207 return "Wert für EMAIL_SEND_METHOD ist ungültig.";
210 }
else if( $name ==
"EMAIL_AUTH_ENCRYPTION"){
211 if( in_array($value,array(
"ssl")) ){
212 $this->data[$name] = $value;
214 return "Wert für EMAIL_AUTH_ENCRYPTION ist ungültig.";
217 }
else if( $name ==
"EMAIL_SMTP_SERVER"){
218 $this->data[$name] = $value;
221 else if( $name ==
"EMAIL_SMTP_PORT"){
222 if( is_numeric($value) ){
223 $this->data[$name] = intval( $value );
225 return "EMAIL_SMTP_PORT muss eine Ganzzahl sein.";
229 else if( $name ==
"EMAIL_SMTP_USERNAME"){
230 $this->data[$name] = $value;
232 }
else if( $name ==
"EMAIL_SMTP_PASSWORD"){
233 $this->data[$name] = $value;
235 }
else if( $name ==
"EMAIL_ADDRESS"){
236 $f = filter_var($value,FILTER_VALIDATE_EMAIL);
238 $this->data[$name] = $f;
240 return "E-mail Adresse aus EMAIL_ADDRESS ist keine gültige E-mail Adresse.";
243 }
else if( $name ==
"EMAIL_NAME"){
244 $this->data[$name] = $value;
247 else if( $name ==
"EMAIL_GROUPS"){
248 if( is_array($value) ){
250 foreach( array_keys($value) as $gr ){
251 if( (is_numeric($gr)) AND (filter_var($value[$gr],FILTER_VALIDATE_EMAIL)) ){
252 $ok[
"$gr"] =
"{$value[$gr]}";
255 foreach( $this->
get(
"TEACHER_GROUP") as
$t ){
256 if( !isset($ok[
"{$t}"]) ){
260 $this->data[$name] = $ok;
273 public function get($name){
274 if( $name ==
"APP_ROOT_URL"){
275 if( isset($this->data[
"APP_ROOT_URL"]) ){
276 return $this->data[
"APP_ROOT_URL"];
281 }
else if( $name ==
"ANALYTICS_HTML_INCLUDE_FILE"){
282 if( isset($this->data[$name]) ){
283 return $this->data[$name];
288 }
else if( $name ==
"TEACHER_GROUP"){
289 if( isset($this->data[$name]) ){
290 return $this->data[$name];
296 else if( $name ==
"GROUPS_WHITELIST"){
297 if( isset($this->data[$name]) ){
298 return $this->data[$name];
304 else if( $name ==
"EMAIL_ENABLE"){
305 if( isset($this->data[$name]) ){
306 return $this->data[$name];
311 }
else if( $name ==
"EMAIL_METHOD"){
312 if( isset($this->data[$name]) ){
313 return $this->data[$name];
318 }
else if( $name ==
"EMAIL_SEND_METHOD"){
319 if( isset($this->data[$name]) ){
320 return $this->data[$name];
325 }
else if( $name ==
"EMAIL_AUTH_ENCRYPTION"){
326 if( isset($this->data[$name]) ){
327 return $this->data[$name];
332 }
else if( $name ==
"EMAIL_SMTP_SERVER"){
333 if( isset($this->data[$name]) ){
334 return $this->data[$name];
339 }
else if( $name ==
"EMAIL_SMTP_PORT"){
340 if( isset($this->data[$name]) ){
341 return $this->data[$name];
346 }
else if( $name ==
"EMAIL_SMTP_USERNAME"){
347 if( isset($this->data[$name]) ){
348 return $this->data[$name];
353 }
else if( $name ==
"EMAIL_SMTP_PASSWORD"){
354 if( isset($this->data[$name]) ){
355 return $this->data[$name];
360 }
else if( $name ==
"EMAIL_ADDRESS"){
361 if( isset($this->data[$name]) ){
362 return $this->data[$name];
367 }
else if( $name ==
"EMAIL_NAME"){
368 if( isset($this->data[$name]) ){
369 return $this->data[$name];
374 }
else if( $name ==
"EMAIL_GROUPS"){
375 if( isset($this->data[$name]) ){
376 return $this->data[$name];
389 $value = htmlspecialchars($this->
get(
"APP_ROOT_URL") , ENT_QUOTES ,
"UTF-8",
true);
390 echo
"<input type='text' name='config_app_root_url' value='$value' />";
394 if( isset($_POST[
"config_app_root_url"]) ){
395 return $this->
set(
"APP_ROOT_URL",$_POST[
"config_app_root_url"]);
403 $value = htmlspecialchars($this->
get(
"ANALYTICS_HTML_INCLUDE_FILE") , ENT_QUOTES ,
"UTF-8",
true);
404 echo
"<input type='text' name='config_analytics_file' value='$value' />";
409 if( isset($_POST[
"config_analytics_file"]) ){
410 return $this->
set(
"ANALYTICS_HTML_INCLUDE_FILE",$_POST[
"config_analytics_file"]);
419 $grps = $this->
get(
"TEACHER_GROUP");
420 echo
"<select name='config_teacher_group[]' size='5' multiple='multiple'>";
421 foreach( $list as $gr){
423 if( substr($gr[0],0,2) !=
"p_" ){
424 if( in_array($gr[1],$grps) ){
425 echo
"<option value='{$gr[1]}' selected='selected'>{$gr[0]}</option>";
427 echo
"<option value='{$gr[1]}'>{$gr[0]}</option>";
437 if( (isset($_POST[
"config_teacher_group"])) AND (is_array($_POST[
"config_teacher_group"])) ){
438 foreach( $list as $gr ){
439 if( in_array($gr[1],$_POST[
"config_teacher_group"]) ){
440 $new_grps[] = $gr[1];
443 return $this->
set(
"TEACHER_GROUP",$new_grps);
452 $grps = $this->
get(
"GROUPS_WHITELIST");
453 echo
"<select name='config_groups_whitelist[]' size='5' multiple='multiple'>";
454 foreach( $list as $gr){
456 if( substr($gr[0],0,2) !=
"p_" ){
457 if( in_array($gr[0],$grps) ){
458 echo
"<option value='{$gr[0]}' selected='selected'>{$gr[0]}</option>";
460 echo
"<option value='{$gr[0]}'>{$gr[0]}</option>";
470 if( (isset($_POST[
"config_groups_whitelist"])) AND (is_array($_POST[
"config_groups_whitelist"])) ){
471 foreach( $list as $gr ){
472 if( in_array($gr[0],$_POST[
"config_groups_whitelist"]) ){
473 $new_grps[] = $gr[0];
476 return $this->
set(
"GROUPS_WHITELIST",$new_grps);
484 $val = $this->
get(
"EMAIL_ENABLE");
485 echo
"<select name='config_email_enable'>";
487 echo
"<option value='false'>Aus</option>";
488 echo
"<option value='true' selected='selected'>An</option>";
490 echo
"<option value='false' selected='selected'>Aus</option>";
491 echo
"<option value='true'>An</option>";
497 if( (isset($_POST[
"config_email_enable"])) AND ( in_array($_POST[
"config_email_enable"],array(
"true",
"false")) ) ){
498 if( $_POST[
"config_email_enable"] ==
"true"){
499 return $this->
set(
"EMAIL_ENABLE", true );
501 return $this->
set(
"EMAIL_ENABLE", false );
510 $val = $this->
get(
"EMAIL_METHOD");
511 $methods = array(
"group",
"LDAP");
512 echo
"<select name='config_email_method'>";
513 foreach( $methods as $m)
515 echo
"<option value='$m' selected='selected'>$m</option>";
517 echo
"<option value='$m'>$m</option>";
523 $methods = array(
"group",
"LDAP");
524 if( (isset($_POST[
"config_email_method"])) ){
525 if( $_POST[
"config_email_method"] ==
"LDAP" ){
526 return "Das Auslesen von Email Adressen aus dem LDAP verzeichnis wird noch nicht unterstützt. (EMAIL_METHOD)";
528 return $this->
set(
"EMAIL_METHOD", $_POST[
"config_email_method"] );
536 $val = $this->
get(
"EMAIL_SEND_METHOD");
537 $methods = array(
"smtp",
"mail",
"sendmail");
538 echo
"<select name='config_email_send_method'>";
539 foreach( $methods as $m)
541 echo
"<option value='$m' selected='selected'>$m</option>";
543 echo
"<option value='$m'>$m</option>";
549 $methods = array(
"smtp",
"mail",
"sendmail");
550 if( (isset($_POST[
"config_email_send_method"])) ){
551 if( $_POST[
"config_email_send_method"] !=
"smtp" ){
552 return "Momentan wird noch keine andere Methode als 'smtp' unterstützt (EMAIL_SEND_METHOD)";
554 return $this->
set(
"EMAIL_SEND_METHOD", $_POST[
"config_email_send_method"] );
562 $val = $this->
get(
"EMAIL_AUTH_ENCRYPTION");
563 $methods = array(
"ssl");
564 echo
"<select name='config_email_auth_encryption'>";
565 foreach( $methods as $m)
567 echo
"<option value='$m' selected='selected'>$m</option>";
569 echo
"<option value='$m'>$m</option>";
575 $methods = array(
"ssl");
576 if( (isset($_POST[
"config_email_auth_encryption"])) ){
577 if( $_POST[
"config_email_auth_encryption"] !=
"ssl" ){
578 return "Momentan wird noch keine andere Methode als 'ssl' unterstützt (EMAIL_AUTH_ENCRYPTION)";
580 return $this->
set(
"EMAIL_AUTH_ENCRYPTION", $_POST[
"config_email_auth_encryption"] );
588 $value = htmlspecialchars($this->
get(
"EMAIL_SMTP_SERVER") , ENT_QUOTES ,
"UTF-8",
true);
589 echo
"<input type='text' name='config_email_smtp_server' value='$value' />";
594 if( isset($_POST[
"config_email_smtp_server"]) ){
595 return $this->
set(
"EMAIL_SMTP_SERVER",$_POST[
"config_email_smtp_server"]);
603 $value = htmlspecialchars($this->
get(
"EMAIL_SMTP_PORT") , ENT_QUOTES ,
"UTF-8",
true);
604 echo
"<input type='text' name='config_email_smtp_port' value='$value' />";
609 if( isset($_POST[
"config_email_smtp_port"]) ){
610 return $this->
set(
"EMAIL_SMTP_PORT",$_POST[
"config_email_smtp_port"]);
618 $value = htmlspecialchars($this->
get(
"EMAIL_SMTP_USERNAME") , ENT_QUOTES ,
"UTF-8",
true);
619 echo
"<input type='text' name='config_email_smtp_username' value='$value' />";
624 if( isset($_POST[
"config_email_smtp_username"]) ){
625 return $this->
set(
"EMAIL_SMTP_USERNAME",$_POST[
"config_email_smtp_username"]);
633 $value = htmlspecialchars($this->
get(
"EMAIL_SMTP_PASSWORD") , ENT_QUOTES ,
"UTF-8",
true);
635 $h =
"<span style='font-size:80%'>(vorhanden)</span>";
639 echo
"<input type='password' name='config_email_smtp_password' /> $h";
644 if( isset($_POST[
"config_email_smtp_password"]) ){
645 if( $_POST[
"config_email_smtp_password"] !=
"" ){
646 return $this->
set(
"EMAIL_SMTP_PASSWORD",$_POST[
"config_email_smtp_password"]);
657 $value = htmlspecialchars($this->
get(
"EMAIL_ADDRESS") , ENT_QUOTES ,
"UTF-8",
true);
658 echo
"<input type='text' name='config_email_address' value='$value' />";
663 if( isset($_POST[
"config_email_address"]) ){
664 return $this->
set(
"EMAIL_ADDRESS",$_POST[
"config_email_address"]);
672 $value = htmlspecialchars($this->
get(
"EMAIL_NAME") , ENT_QUOTES ,
"UTF-8",
true);
673 echo
"<input type='text' name='config_email_name' value='$value' />";
678 if( isset($_POST[
"config_email_name"]) ){
679 return $this->
set(
"EMAIL_NAME",$_POST[
"config_email_name"]);
689 $vals = $this->
get(
"EMAIL_GROUPS");
691 foreach($grouplist as $g ){
692 $map[ $g[1] ] = $g[0];
695 if( isset($vals[$t]) ){
700 echo
"<label for='config_email_group_{$t}'>{$map[$t]}:</label><br/>";
701 echo
"<input type='text' name='config_email_group_{$t}' id='config_email_group_{$t}' value='{$val}' style='margin-left:.8em'/><br/>";
708 foreach($grouplist as $g ){
709 $map[ $g[1] ] = $g[0];
713 if( isset($_POST[
"config_email_group_{$t}"]) AND ($_POST[
"config_email_group_{$t}"] !=
"") ){
714 $val[
"$t" ] = $_POST[
"config_email_group_{$t}"];
718 return $this->
set(
"EMAIL_GROUPS", $val);