Location: PHPKode > projects > Course-manager > courseman-0.1.1/rechteverwaltung.php
<?php
  require('global-php.php');
  $verbindung = database_connection($lang_database_failure[$language]);
  $PHP_AUTH_USER = $_SERVER["PHP_AUTH_USER"];
  $PHP_AUTH_PW = $_SERVER["PHP_AUTH_PW"];
  $ergebnis = db_exec($verbindung,
			"SELECT * FROM staff_authorization,superuser "
  				. "WHERE superuser.account"
				. "=staff_authorization.id "
				. "AND "
				. login_query_clauses(
					$PHP_AUTH_USER,
					$PHP_AUTH_PW)
				. ";");
  if (pg_numrows($ergebnis) < 1) {
    header('WWW-Authenticate: Basic realm="Kursverwaltung"');
    header("HTTP/1.0 401 Unauthorized");
    echo $lang_authentication_failure[$language];
    exit;
  }
  require('local-criteria.php');
  function asynchronous_action($name) {
    return "function $name() {
    aktualisiere_rechte('$name.php');
  }
  ";
  }
  function powerful_asynchronous_action($name, $effect) {
    global $language;
    return "function $name() {
    if (confirm('" . lang_confirm($language, $effect) . "')) {
      aktualisiere_rechte('$name.php');
    }
  }
  ";
  }
  function asynchronous_variable($name) {
    return "request = request + '&$name='
			+ document.getElementById('$name').value;
      ";
  }
  function asynchronous_integer_variable($name) {
    return "request = request + '&$name='
			+ parseInt(document.getElementById('$name').value);
      ";
  }
  function asynchronous_displaced_integer_variable($name, $offset) {
    return "value = parseInt(document.getElementById('$name').value);
      if (value > 0) {" . /* values <= 0 are reserved for meta-options */"
        value = value + $offset;
      }
      request = request + '&$name=' + value;
      ";
  }
  $javascript = '<script type="text/javascript" src="global-javascript.php">
</script>
<script type="text/javascript">';
  $ergebnis = db_exec($verbindung,
			"SELECT max(staff_authorization.id) "
				. "FROM staff_authorization;");
  $javascript .= '
  var accounts = new Array(' . (1 + pg_result($ergebnis, 0, 0)) . ');';
  $ergebnis = db_exec($verbindung,
  			"SELECT DISTINCT staff_authorization.id,"
				. "staff_authorization.name "
  				. "FROM staff_authorization "
  				. "ORDER BY name");
  for ($lt = 0; $lt < pg_numrows($ergebnis); $lt++) {
    $id = pg_result($ergebnis, $lt, 0);
    $name = pg_result($ergebnis, $lt, 1);
    $javascript .= "
  accounts[$id] = '$name';";
    $optionen_accounts .= ("<option value=\"$id\">$name</option>
");
  }
  $course_period = option_value($course_period_option);
  $javascript .= '
  var aktueller_account;
  ' . course_relations($verbindung, true) . '
  function fuelle_kursmenue(menue, wahl) {'; /* passt das Kursmenü
  							menue fuer die Wahl des
							Kurses an die
							Kategorie wahl an */
  $javascript .= '
    entferne_kindknoten(menue);
    menue.appendChild(menu_option("0","'
		. lang_choose($language,$lang_course[$language]) . '"));
    menue.appendChild(menu_option("-1","' . $lang_all[$language]
		. ' ' . $plural[$lang_course[$language]] . '"));
    var kurse_lokal = kategorien[wahl];
    if (kurse_lokal) {
      for (var kurs = 0; kurs < kurse_lokal.length; kurs++) {
        menue.appendChild(
        	menu_option(kurse_lokal[kurs],kurse[kurse_lokal[kurs]]));
      }
    }
  }
  function set_kategorie(menue) {'; /* passt die
  							Auswahlmöglichkeiten
							für die Wahl des Kurses
							an die durch event
							gewählte Kategorie an.*/
  $javascript .= '
    var target = menue;
    var wahl = target.value;
    fuelle_kursmenue(document.getElementById("kurs"), wahl);
  }
  function teilnehmerattribut(teilnehmer, attribut) {';
  		/* extrahiert das Attribut attribut aus dem Teilnehmer-
				Knoten teilnehmer */
  $javascript .= '
    var tag = teilnehmer.getElementsByTagName(attribut)[0];
    var kind = tag && tag.firstChild;
    return kind ? kind.nodeValue : "";
  }
  function teilnehmerflag(teilnehmer, flag) {';
  		/* prüft die Existenz des Flags flag im Teilnehmer-
				Knoten teilnehmer */
  $javascript .= '
    return teilnehmer.getElementsByTagName(flag).length > 0;
  }
  function teilnehmerattributknoten(teilnehmer, attribut) {';
	    	/* extrahiert das Attribut attribut aus dem Teilnehmer-
				Knoten teilnehmer als Textknoten für das
				Einfügen in die Arbeitsmaske */
  $javascript .= '
    return document.createTextNode(teilnehmerattribut(teilnehmer, attribut));
  }
  function teilnehmerflagknoten(teilnehmer, flag) {';
	    	/* extrahiert das Flag flag aus dem Teilnehmer-
				Knoten teilnehmer als Textknoten für das
				Einfügen in die Arbeitsmaske */
  $javascript .= '
    return document.createTextNode(teilnehmerflag(teilnehmer, flag) ? "X" : "");
  }
  function spalte(inhalt) {';
  		/* erzeugt einen Spaltenknoten mit dem Inhalt inhalt
				für eine Tabelle */
  $javascript .= '
    var spalte = document.createElement("td");
    spalte.appendChild(inhalt);
    return spalte;
  }
  function attributspalte(teilnehmer, attribut) {';
	    	/* extrahiert das Attribut attribut aus dem Teilnehmer-
				Knoten teilnehmer als Spaltenknoten für das
				Einfügen in die Arbeitsmaske */
  $javascript .= '
    return spalte(teilnehmerattributknoten(teilnehmer, attribut));
  }
  function flagspalte(teilnehmer, flag) {';
	    	/* extrahiert das Flag flag aus dem Teilnehmer-
				Knoten teilnehmer als Spaltenknoten für das
				Einfügen in die Arbeitsmaske */
  $javascript .= '
    return spalte(teilnehmerflagknoten(teilnehmer, flag));
  }
  function ueberschriftenspalte(titel) {';
  		/* erzeugt einen Überschriftenspaltenknoten mit der
				Überschrift titel */
  $javascript .= '
    var spalte = document.createElement("th");
    spalte.appendChild(document.createTextNode(titel));
    return spalte;
  }
  function aktualisiere_rechte(button) {
    var xmlHTTP = get_xmlHTTP();
    if (xmlHTTP) {
      xmlHTTP.onreadystatechange = function () {
        if (xmlHTTP.readyState == 4) {
	  var status = xmlHTTP.responseXML.getElementsByTagName("status")[0];
	  status = status && status.firstChild;
	  status = status && status.nodeValue;
	  var ort = document.getElementById("statuszeile");
	  entferne_kindknoten(ort);
	  if (status) {
	    ort.appendChild(document.createTextNode(status));
	  }
	  lade_kurse_fuer(aktueller_account);
        }
      };
      var request = button;
      var termin = parseInt(document.getElementById("termin").value);
      var value;
      if (termin > 0) {' . /* values <= 0 are reserved for meta-options */'
        termin = termin + ' . $date_offset . ';
      }
      request = request + "?termin=" + termin;
      '
. asynchronous_integer_variable('account')
. asynchronous_integer_variable('kategorie')
. asynchronous_displaced_integer_variable('kurs', $course_offset)
. asynchronous_integer_variable('capability')
. asynchronous_variable('name')
. asynchronous_variable('passwort')
. asynchronous_variable('passwort_gleich')
. 'xmlHTTP.open("GET", request, true);' . ($debug["ajax"] ? '
      trace("GET data: " + request);' : '') . '
      xmlHTTP.send(null);
    }
  }
  '
. asynchronous_action('grant')
. asynchronous_action('revoke')
. asynchronous_action('new_account')
. powerful_asynchronous_action('delete_account',
                               ling_verb($language,
                                         $lang_delete[$language],
                                         $lang_account[$language]))
. powerful_asynchronous_action('superuser_change_password',
                               $lang_change_password[$language])
. powerful_asynchronous_action('grant_superuser',
                               $lang_grant_capability[$language])
. powerful_asynchronous_action('revoke_superuser',
                               $lang_revoke_capability[$language])
. 'function setze_account(menue) {
    var target = menue;
    var wahl = target.value;
    var account_name = accounts[target.value];
    if (account_name) {
      document.getElementById("name").value = account_name;
    }
    aktueller_account = wahl;
    lade_kurse_fuer(wahl);
  }
  function lade_kurse_fuer(wahl) {
    var xmlHTTP = get_xmlHTTP();
    if ((wahl != "") && xmlHTTP) {
      xmlHTTP.onreadystatechange = function () {
        if (xmlHTTP.readyState == 4) {
	  var ort = document.getElementById("kursliste");
	  entferne_kindknoten(ort);
	  var tabelle = document.createElement("table");
	  tabelle.border = 1;
	  var kopf = document.createElement("thead");
	  var zeile = document.createElement("tr");
	  zeile.appendChild(ueberschriftenspalte("'
	  	. $application_specific_category
		. '"));
	  zeile.appendChild(ueberschriftenspalte("Kurs"));
	  zeile.appendChild(ueberschriftenspalte("Termin"));
	  kopf.appendChild(zeile);
	  tabelle.appendChild(kopf);
	  var daten = document.createElement("tbody");'
		. set_attribute('daten','id','"teilnehmerzeilen"','
          ') . '
	  var kurse = xmlHTTP.responseXML.getElementsByTagName("course");
	  for (var i = 0; i < kurse.length; i++) {
	    var zeile = document.createElement("tr");
	    zeile.appendChild(attributspalte(kurse[i], "category"));
	    zeile.appendChild(attributspalte(kurse[i], "topic"));
	    zeile.appendChild(attributspalte(kurse[i], "date"));
	    daten.appendChild(zeile);
	  }
	  tabelle.appendChild(daten);
	  ort.appendChild(tabelle);
        }
      };
      xmlHTTP.open("GET", "verwaltete-kurse.php?account=" + wahl, true);
      xmlHTTP.send(null);
    }
  }
  function set_kurs(menue) {'; /* passt die
					Auswahlmöglichkeiten
					für die Wahl des Termins
					an den durch event
					gewählten Kurs an.*/
  $javascript .= '
    var target = menue;
    var wahl = target.value;
    var terminmenue = document.getElementById("termin");
    entferne_kindknoten(terminmenue);
    terminmenue.appendChild(menu_option("0","'
		. lang_choose($language,$lang_date[$language]) . '"));
    terminmenue.appendChild(menu_option("-1","' . $lang_all[$language]
		. ' ' . $plural[$lang_date[$language]] . '"));
    var termine_lokal = kurs_termine[wahl];
    if (termine_lokal) {
      initialize_menu(terminmenue,termine_lokal,termine,do_nothing);
    }
  }
  window.onload = function() {
    setze_account(document.getElementById("account"));
  }
  hook_onchange("account",setze_account);
  hook_onchange("kategorie",set_kategorie);
  hook_onchange("kurs",set_kurs);
</script>';
  $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");
  $optionen_kategorien .= ("<option value=\"-1\">"
				. $lang_all[$language] . " "
				. $plural[$application_specific_category]
				. "</option>");
  for ($lt = 0; $lt < pg_numrows($ergebnis); $lt++) {
    $id = pg_result($ergebnis, $lt, 0);
    $name = pg_result($ergebnis, $lt, 1);
    $optionen_kategorien .= ("<option value=\"$id\">$name</option>
");
  }
  $ergebnis = db_exec($verbindung, "SELECT id,name FROM capability;");
  for ($lt = 0; $lt < pg_numrows($ergebnis); $lt++) {
    $id = pg_result($ergebnis, $lt, 0);
    $name = pg_result($ergebnis, $lt, 1);
    $grantable_capabilities .= "<option value=\"$id\">$name</option>
";
  }
  db_close($verbindung);
  require('template-rechteverwaltung.php');
?>
Return current item: Course-manager