<?php
require('global-php.php');
require('local-criteria.php');
$max_kursanzahl = 4; // maximale Zahl der wählbaren Kurse
$verbindung = database_connection($lang_database_failure[$language]);
$angemeldete_person = $_POST["user"];
$aenderungsschluessel = $_POST["key"];
$javascript='<script type="text/javascript" src="global-javascript.php">
</script>
<script type="text/javascript">';
$course_period = static_option_value($course_period_option);
$javascript .= $debug_mark[72] . course_relations($verbindung, false);
$javascript .= '
var window_initializers = new Array();' . $debug_mark[59];
$javascript .= $personal_data['calls']($personal_data,
'auxiliary_javascript',
array());
$javascript .= $debug_mark[61] . '
function get_kurs(menuname) {';
/* extrahiert den Kurs-Index, der vom
Menü mit dem übergebenen
Namen bearbeitet wird. */
$javascript .= '
return menuname.substr(menuname.search("[0-9]"));
}' . $debug_mark[62] . '
function get_suffix(menuname) {'; /* extrahiert den bei der Erzeugung
verwendeten suffix aus dem
Namen der Menüs */
$javascript .= '
if (menuname.indexOf("_alternative") != -1) {' . $debug_mark[63] . '
return "_alternative";
} else {' . $debug_mark[60] . '
return "";
}
}' . ($internet_explorer_buggy ? ('
function erneuere_kursmenue(paragraph, wahl, name) {' /* erzeugt das
Kursmenue unter
paragraph fuer die Wahl des
Kurses an die Kategorie Wahl
neu, mit Namen name */
. '
var menue = document.createElement("select");'
. set_attribute('menue','name','name','
') . set_attribute('menue','id','name','
') . '
hook_onchange(name,set_kurs_von);'
. js_event_listener('menue', 'change', 'execute_onchange_by_event', '
')) : ('
function fuelle_kursmenue(menue, wahl) {' /* passt das Kursmenü
menue fuer die Wahl des
Kurses an die
Kategorie wahl an */
. '
entferne_kindknoten(menue);')) . '
menue.appendChild(menu_option("","'
. lang_choose($language,$lang_course[$language]) . '"));
var kurse_lokal = kategorien[wahl];
if (kurse_lokal) {
initialize_menu(menue,kurse_lokal,kurse,set_kurs_von);
}' . ($internet_explorer_buggy ? ' else {
menue.selectedIndex = 0;
}
entferne_kindknoten(paragraph);
paragraph.appendChild(menue);' : '') . '
}
function set_kategorie_auf(kurs, wahl) {'; /* passt die
Auswahlmöglichkeiten
für die Wahl des Kurses
kurs an die gewählte
Kategorie wahl an.*/
$javascript .= ($internet_explorer_buggy ? '
erneuere_kursmenue(
document.getElementById("paragraph_kurs_kurs" + kurs),
wahl,
"kurs_kurs" + kurs);
erneuere_kursmenue(
document.getElementById("paragraph_kurs_kurs_alternative" + kurs),
wahl,
"kurs_kurs_alternative" + kurs);' : '
fuelle_kursmenue(document.getElementById("kurs_kurs" + kurs), wahl);
fuelle_kursmenue(document.getElementById("kurs_kurs_alternative" + kurs),
wahl);') . '
}
function set_kategorie(menu) {'; /* passt die
Auswahlmöglichkeiten
für die Wahl des Kurses
an die durch in menu
gewählte Kategorie an.*/
$javascript .= '
var kurs = get_kurs(menu.name);
var wahl = menu.value;
set_kategorie_auf(kurs, wahl);
}
function set_kurs_auf(kurs, wahl, suffix) {'; /* passt die
Auswahlmöglichkeiten
für die Wahl des Termins
des Kurses kurs
an die Veranstaltung
wahl an. Bezieht sich
auf die mit suffix
markierte Alternative.
*/
$javascript .= '
var menue_name = "termin_kurs" + suffix + kurs;'
. ($internet_explorer_buggy ? ('
var paragraph_name = "paragraph_termin_kurs" + suffix + kurs;
var terminparagraph = document.getElementById(paragraph_name);
var terminmenue = document.createElement("select");'
. set_attribute('terminmenue','name','menue_name','
') . set_attribute('terminmenue','id','menue_name','
')) : '
var terminmenue = document.getElementById(menue_name);
entferne_kindknoten(terminmenue);') . '
terminmenue.appendChild(menu_option("","'
. lang_choose($language,$lang_date[$language]) . '"));
var termine_lokal = kurs_termine[wahl];
if (termine_lokal) {' . ($internet_explorer_buggy ? '
initialize_menu(terminmenue,
termine_lokal,
termine,
disable_menu_alternative);' : '
initialize_referencable_menu(terminmenue,
termine_lokal,
termine,
disable_menu_alternative,
menue_name + "_");') . '
}' . ($internet_explorer_buggy ? ' else {
menue.selectedIndex = 0;
}
entferne_kindknoten(terminparagraph);
terminparagraph.appendChild(terminmenue);' : '') . '
}' . $debug_mark[44] . '
function set_kurs_von(menue) {'; /* passt die
Auswahlmöglichkeiten für die Wahl des
Termins an den in Menue menue
gewählten Kurs an.*/
$javascript .= '
var kurs = get_kurs(menue.name);
var wahl = menue.value;
var suffix = get_suffix(menue.name);
set_kurs_auf(kurs, wahl, suffix);
}
function set_counter(event) {'; /* passt den Zaehler fuer die verbleibenden
Zeichen bei der Kommentareingabe an.*/
$javascript .= '
if (window.event) {
event = window.event;
}
var target = event.srcElement;
if (!target) {
target = event.target;
}
var kurs = get_kurs(target.name);
var counter = document.getElementById("kommentarzaehler_kurs" + kurs);
entferne_kindknoten(counter);
var remaining = ' . $max_comment_length . ' - target.value.length;
if (remaining < 0) {
target.value = target.value.substring(0, ' . $max_comment_length . ');
remaining = 0;
}
counter.appendChild(document.createTextNode(remaining));
}
function kursauswahl_anhaengen(kurs, kursauswahl, suffix) {'; /*
hängt das Kursauswahlmenü für
die Wahl des kurs. Kurses an
den Knoten kursauswahl an.
wahl an. suffix wählt
zwischen erster Wahl
und Alternative */
$javascript .= '
var paragraph = document.createElement("p");
var menue;
if (suffix == "") {'; /* erste Wahl => Kategorie wählbar */
$javascript .= '
menue = document.createElement("select");'
. set_attribute('menue','name','"kategorie_kurs" + suffix + kurs','
') . set_attribute('menue','id','"kategorie_kurs" + suffix + kurs','
') . set_attribute('paragraph',
'id',
'"paragraph_kategorie_kurs" + suffix + kurs',
'
') . '
hook_onchange("kategorie_kurs" + suffix + kurs,set_kategorie);'
. js_event_listener('menue', 'change', 'execute_onchange_by_event', '
') . '
menue.appendChild(menu_option("","'
. lang_choose($language,$application_specific_category)
. '"));';
$ergebnis = db_exec($verbindung,
"SELECT DISTINCT category.id,category.name "
. "FROM category,$course_date_readable,"
. "course "
. "WHERE category=category.id "
. "AND course=course.id "
. "AND course_period=$course_period "
. "ORDER BY name");
for ($lt = 0; $lt < pg_numrows($ergebnis); $lt++) {
$id = pg_result($ergebnis, $lt, 0);
$name = pg_result($ergebnis, $lt, 1);
$javascript .= ("
menue.appendChild(menu_option(\"$id\",\"$name\"));");
}
$javascript .= '
paragraph.appendChild(menue);
kursauswahl.appendChild(paragraph);
paragraph = document.createElement("p");
}' . $debug_mark[47] . '
menue = document.createElement("select");'
. set_attribute('menue','id','"kurs_kurs" + suffix + kurs','
') . set_attribute('menue','name','"kurs_kurs" + suffix + kurs','
') . set_attribute('paragraph',
'id',
'"paragraph_kurs_kurs" + suffix + kurs',
'
') . '
hook_onchange("kurs_kurs" + suffix + kurs,set_kurs_von);'
. js_event_listener('menue', 'change', 'execute_onchange_by_event', '
') . '
menue.appendChild(menu_option("","'
. lang_choose($language,$lang_course[$language]) . '"));
paragraph.appendChild(menue);' . ($internet_explorer_buggy ? '
menue.selectedIndex = 0;' : '') . '
kursauswahl.appendChild(paragraph);
paragraph = document.createElement("p");
menue = document.createElement("select");'
. set_attribute('menue','id','"termin_kurs" + suffix + kurs','
') . set_attribute('menue','name','"termin_kurs" + suffix + kurs','
') . set_attribute('paragraph',
'id',
'"paragraph_termin_kurs" + suffix + kurs',
'
') . '
menue.appendChild(menu_option("","'
. lang_choose($language,$lang_date[$language]) . '"));
hook_onchange("termin_kurs" + suffix + kurs,disable_menu_alternative);'
. js_event_listener('menue', 'change', 'execute_onchange_by_event', '
') . '
paragraph.appendChild(menue);' . ($internet_explorer_buggy ? '
menue.selectedIndex = 0;' : '') . '
kursauswahl.appendChild(paragraph);
}
var kursanzahl = 0;
function prep_course_menu(course) {'; /* erzeugt ein Menue zur Auswahl eines
besuchten Vorkurses fuer den gewaehlten
Kurs course */
$javascript .= '
var menu = document.createElement("select");'
. set_attribute('menu','name','"vorkurs_kurs" + course','
') . '
var option = menu_option("", "'
. lang_enter($language,
$lang_attended_prep_course[$language]) . '");
menu.appendChild(option);';
foreach ($prep_course_conditions as $key => $description) {
$javascript .= '
option = menu_option("' . $key . '", "' . $description . '");
menu.appendChild(option);';
}
$javascript .= '
return menu;
}' . $debug_mark[48] . '
function set_kursanzahl(anzahl) {'; /* erzeugt bzw. löscht Menüs für die
Anmeldung von anzahl Kursen*/
$javascript .= '
kursanzahl = anzahl;
for (var kurs = 1; kurs <= ' . $max_kursanzahl . '; kurs++) {
var auswahlknoten = document.getElementById("kurs" + kurs);
if (kurs <= anzahl) {' . $debug_mark[53] . '
if (auswahlknoten.getElementsByTagName("h2").length < 1) {
var kursauswahl = document.createElement("p");' . $debug_mark[54] . '
var ueberschrift = document.createElement("h2");
var text = document.createTextNode(ordinal_number(kurs) + " '
. $lang_course[$language] . '");
ueberschrift.appendChild(text);' . $debug_mark[55] . '
kursauswahl.appendChild(ueberschrift);
var marker = document.createElement("span");'
. ($internet_explorer_buggy
? ''
:set_attribute('marker','class','"hinweis"','
')) . '
marker.appendChild(document.createTextNode("*"));
kursauswahl.appendChild(marker);' . $debug_mark[56] . '
text = document.createTextNode("' . $lang_primary[$language] . ':");
kursauswahl.appendChild(text);
kursauswahl_anhaengen(kurs, kursauswahl, "");' . $debug_mark[57] . '
text = document.createTextNode("'
. lang_alternative($language,$application_specific_category)
. ':");' . $debug_mark[58] . '
kursauswahl.appendChild(text);
kursauswahl_anhaengen(kurs, kursauswahl, "_alternative");
auswahlknoten.appendChild(kursauswahl);' . $debug_mark[49] . '
text = document.createTextNode("'
. $lang_attended[$language] . ' '
. $lang_prep_course[$language] . ':");
auswahlknoten.appendChild(text);
auswahlknoten.appendChild(document.createElement("br"));
auswahlknoten.appendChild(prep_course_menu(kurs));
auswahlknoten.appendChild(document.createElement("br"));
text = document.createTextNode("' . $lang_comments[$language] . ': ");
auswahlknoten.appendChild(text);
kursiv = document.createElement("i");
text = document.createTextNode("(' . $lang_freeform[$language] . ')");
kursiv.appendChild(text);
auswahlknoten.appendChild(kursiv);
auswahlknoten.appendChild(document.createElement("br"));
var kommentarfeld = document.createElement("textarea");'
. set_attribute('kommentarfeld',
'name',
'"kommentar_kurs" + kurs',
'
') . set_attribute('kommentarfeld',
'id',
'"kommentar_kurs" + kurs',
'
') . set_attribute('kommentarfeld',
'rows',
'"6"',
'
') . set_attribute('kommentarfeld',
'cols',
'"50"',
'
') . js_event_listener('kommentarfeld', 'keydown', 'set_counter', '
') . js_event_listener('kommentarfeld', 'keyup', 'set_counter', '
') . '
auswahlknoten.appendChild(kommentarfeld);' . $debug_mark[50] . '
auswahlknoten.appendChild(document.createElement("br"));
auswahlknoten.appendChild(document.createTextNode("'
. lang_characters_left($language,'"));
var counter = document.createElement("span");'
. set_attribute('counter',
'id',
'"kommentarzaehler_kurs" + kurs','
') . '
counter.appendChild(document.createTextNode("'
. $max_comment_length . '"));
auswahlknoten.appendChild(counter);
auswahlknoten.appendChild(document.createTextNode(
"') . '"));
}
} else {
if (auswahlknoten.getElementsByTagName("h2").length > 0) {
entferne_kindknoten(auswahlknoten);
}
}
}
}
function alle_kurse_ausgewaehlt() {
for (var kurs = 1; kurs <= kursanzahl; kurs++) {
var auswahl = document.getElementsByName("termin_kurs" + kurs)[0].value;
if (auswahl == "") {' . $debug_mark[51] . '
alert("' . lang_no_course_chosen($language,'" + kurs + "') . '");
return false;
}
}
return true;
}
function erlaubt() {
' . ($client_side_input_checking ? ('if ('
. $personal_data['calls']($personal_data,'input_check',array())
. '!alle_kurse_ausgewaehlt()) {
return false;' . (($angemeldete_person == "") ? '
} else if (kursanzahl == 0) {
alert("' . $lang_no_courses_chosen[$language] . '");
return false;' : '') . '
} else if (!local_erlaubt()) {
return false;
} else {' . $debug_mark[52] . '
return true;
}') : 'return true;') . '
}';
prepare_personal_information_choices($verbindung);
$javascript .= $local_javascript;
db_exec($verbindung, "START TRANSACTION;");
db_exec($verbindung, "LOCK TABLE registration_person;");
db_exec($verbindung, "LOCK TABLE valid_registration;");
db_exec($verbindung, "LOCK TABLE person_password;");
db_exec($verbindung, "LOCK TABLE person_login;");
$ergebnis = db_exec($verbindung, "SELECT valid_registration.registration "
. "FROM valid_registration,person_login,"
. "registration_person,person_password "
. "WHERE valid_registration.registration="
. "registration_person.registration "
. "AND registration_person.person="
. "person_password.person "
. "AND registration_person.person="
. "person_login.person "
. "AND course_period=$course_period "
. "AND login='"
. pg_escape_string($angemeldete_person)
. "' AND hash=md5('"
. pg_escape_string($aenderungsschluessel)
. "');");
db_exec($verbindung, "COMMIT;");
$javascript .= ("
window.onload = function() {
for (var i = 0; i < window_initializers.length; i++) {
window_initializers[i]();
}");
for ($lt = 0; $lt < pg_numrows($ergebnis); $lt++) {
$registration_id = pg_result($ergebnis, $lt, 0);
$personal_data['calls']($personal_data,
'input_reload',
array($registration_id));
$javascript .= local_saved_personal_data($verbindung, $registration_id);
$anmeldungsdaten = db_exec($verbindung,
"SELECT course,secondary,commentary "
. "FROM registration_course "
. "WHERE registration=$registration_id;");
$kursanzahl = pg_numrows($anmeldungsdaten);
$kurse = array();
for ($kurszeile = 0; $kurszeile < $kursanzahl; $kurszeile++) {
$course = array();
$course['zeile'] = $kurszeile + 1;
$erster = pg_result($anmeldungsdaten, $kurszeile, 0);
$zweiter = pg_result($anmeldungsdaten, $kurszeile, 1);
$kommentar = pg_result($anmeldungsdaten, $kurszeile, 2);
$course['kommentar'] = $kommentar;
$kursdaten = db_exec($verbindung,
"SELECT category,course,"
. "$course_date_readable.id "
. "FROM $course_date_readable,course"
. ($course_date_translated ? ",language" : "")
. " WHERE $course_date_readable.id=$erster "
. "AND course.id=course"
. ($course_date_translated
? (" AND code='$language' "
. "AND language=language.id")
: "")
. ";");
for ($datenzeile = 0;
$datenzeile < pg_numrows($kursdaten);
$datenzeile++) {
$kategorie = pg_result($kursdaten, $datenzeile, 0);
$kurs = pg_result($kursdaten, $datenzeile, 1) - $course_offset;
$termin = pg_result($kursdaten, $datenzeile, 2) - $date_offset;
$course['erster'] = array(
'kategorie' => $kategorie,
'kurs' => $kurs,
'termin' => $termin);
}
if ($zweiter != "") {
if ($debug['retrieval']) {
$javascript .= "
// course $kurszeile: secondary choice found";
}
$kursdaten = db_exec($verbindung,
"SELECT course,$course_date_readable.id "
. "FROM $course_date_readable"
. ($course_date_translated ? ",language" : "")
. " WHERE $course_date_readable.id=$zweiter"
. ($course_date_translated
? (" AND code='$language' "
. "AND language=language.id")
: "")
. ";");
for ($datenzeile = 0;
$datenzeile < pg_numrows($kursdaten);
$datenzeile++) {
$kurs = pg_result($kursdaten, $datenzeile, 0) - $course_offset;
$termin = pg_result($kursdaten, $datenzeile, 1) - $date_offset;
if ($debug['retrieval']) {
$javascript .= "
// course $kurszeile: secondary choice: $kurs - $termin";
}
$course['zweiter'] = array(
'kurs' => $kurs,
'termin' => $termin);
}
}
array_push($kurse,$course);
}
}
if ($kursanzahl == 0) {
$kursanzahl = intval($_REQUEST['kursanzahl']);
$kurse = array();
for ($kurs_id = 1; $kurs_id <= $kursanzahl; $kurs_id++) {
$kurs = array();
$kurs['zeile'] = $kurs_id;
$kurs['kommentar'] = $_REQUEST['kommentar_kurs' . $kurs_id];
$kurs['erster'] = array(
'kategorie' => intval($_REQUEST['kategorie_kurs' . $kurs_id]),
'kurs' => intval($_REQUEST['kurs_kurs' . $kurs_id]),
'termin' => intval($_REQUEST['termin_kurs' . $kurs_id]));
if ($_REQUEST['termin_kurs_alternative' . $kurs_id] != "") {
$kurs['zweiter'] = array(
'kurs' => intval($_REQUEST['kurs_kurs_alternative' . $kurs_id]),
'termin' => intval($_REQUEST['termin_kurs_alternative'
. $kurs_id]));
}
array_push($kurse,$kurs);
}
}
if ($kursanzahl != 0) {
$javascript .= ("
set_kursanzahl($kursanzahl);
if (typeof(document.daten.kursanzahl["
. ($kursanzahl - 1)
. "]) != 'undefined') {
document.daten.kursanzahl[" . ($kursanzahl - 1) . "].checked = true;
}");
}
foreach ($kurse as $course) {
$zeile = $course['zeile'];
$kommentar = $course['kommentar'];
if (array_key_exists('kategorie',$course['erster'])
&& array_key_exists('kurs',$course['erster'])
&& array_key_exists('termin',$course['erster'])) {
$kategorie = $course['erster']['kategorie'];
$kurs = $course['erster']['kurs'];
$termin = $course['erster']['termin'];
$javascript .= ("
document.getElementById('kategorie_kurs" . $zeile . "').value = $kategorie;
set_kategorie_auf(" . $zeile . ", $kategorie);
document.getElementById('kurs_kurs" . $zeile . "').value = $kurs;
set_kurs_auf(" . $zeile . ", $kurs, '');
document.getElementById('termin_kurs" . $zeile . "').value = $termin;
if (document.daten.kommentar_kurs" /* nicht bei internet explorer */
. $zeile
. ".value) {
document.daten.kommentar_kurs"
. $zeile
. ".value = "
. javascript_string($kommentar)
. ";
} else {
var feld = document.getElementById('kommentar_kurs"
. $zeile
. "');
entferne_kindknoten(feld);
feld.appendChild(document.createTextNode("
. javascript_string($kommentar)
. "));
}");
}
if ($course['zweiter']) {
$kurs = $course['zweiter']['kurs'];
$termin = $course['zweiter']['termin'];
if ($debug['retrieval']) {
$javascript .= "
// course $kurszeile: secondary choice retrieved: $kurs - $termin";
}
$javascript .= "
document.daten.kurs_kurs_alternative" . $zeile . ".value = $kurs;
set_kurs_auf(" . $zeile . ", $kurs, '_alternative');
document.daten.termin_kurs_alternative" . $zeile . ".value = $termin;";
}
}
$javascript .= ("
}");
$javascript .= ("
</script>");
if ($aenderung_gewuenscht = ($angemeldete_person != "")) {
$aenderung_gestattet = (pg_numrows(db_exec($verbindung,
"SELECT * "
. "FROM person_password,person_login "
. "WHERE person_password.person="
. "person_login.person "
. "AND login='"
. pg_escape_string($angemeldete_person)
. "' AND hash=md5('"
. pg_escape_string($aenderungsschluessel)
. "');")) > 0);
}
$input_layout = $personal_data['calls']($personal_data,
'annotated_layout',
array());
offer_local_options($verbindung);
db_close($verbindung);
$authentication = value_pass('user') . value_pass('key');
function course_count($count) {
// a number of courses with a corresponding chooser radio button
return "<input
type='RADIO'
name='kursanzahl'
value='$count'
onclick='set_kursanzahl($count)'/>
$count";
}
$course_number_chooser = lang_register_for($language,
lang_count($lang_course[$language],
course_count,
1,
$max_kursanzahl));
require_once('template-anmeldung.php');
?>