This commit is contained in:
Andreas Österreicher
2008-09-03 15:13:35 +00:00
parent 219bda83a5
commit a69b6ab08c
11 changed files with 1881 additions and 140 deletions
+299
View File
@@ -0,0 +1,299 @@
<?php
/* Copyright (C) 2008 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/moodle_course.class.php');
require_once('../../../include/moodle_user.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/lehreinheitgruppe.class.php');
require_once('../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../include/studiengang.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Connecten zur DB');
//$conn_moodle='';
if(!$conn_moodle = pg_pconnect(CONN_STRING_MOODLE))
die('Fehler beim Connecten zur DB');
$user = get_uid();
if(isset($_GET['lvid']))
$lvid=$_GET['lvid'];
else
die('lvid muss uebergeben werden');
if(isset($_GET['stsem']))
$stsem = $_GET['stsem'];
else
die('Es wurde kein Studiensemester uebergeben');
$art = (isset($_POST['art'])?$_POST['art']:'le');
$berechtigt = false;
//Pruefen ob Rechte fuer diese LV vorhanden sind
$qry = "SELECT distinct vorname, nachname, tbl_benutzer.uid as uid FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person WHERE tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND tbl_person.person_id=tbl_benutzer.person_id AND lehrveranstaltung_id='$lvid' AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND tbl_person.aktiv=true AND studiensemester_kurzbz='$stsem' ORDER BY nachname, vorname";
if($result = pg_query($conn, $qry))
{
while($row_lector = pg_fetch_object($result))
{
if($user==$row_lector->uid)
$berechtigt=true;
}
}
$rechte = new benutzerberechtigung($conn);
$rechte->getBerechtigungen($user);
if($rechte->isBerechtigt('admin'))
$berechtigt=true;
$lv = new lehrveranstaltung($conn);
$lv->load($lvid);
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<script language="Javascript">
<!--
function togglediv()
{
var block = "table-row";
if (navigator.appName.indexOf("Microsoft") > -1)
block = "block";
if(document.getElementById("radiole").checked)
document.getElementById("lehreinheitencheckboxen").style.display = block;
else
document.getElementById("lehreinheitencheckboxen").style.display = "none";
}
-->
</script>
</head>
<body onload="togglediv()">
<table class="tabcontent" height="100%" id="inhalt">
<tr>
<td class="tdwidth10">&nbsp;</td>
<td class="ContentHeader"><font class="ContentHeader">'.$lv->bezeichnung.'&nbsp;('.$stsem.')</font></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td></td>
</tr>
<tr>
<td class="tdvertical">&nbsp;</td>
<td class="tdvertical">
<table width="100%">
<tr>
<td>';
if(isset($_POST['neu']))
{
if($_POST['bezeichnung']=='')
{
echo '<span class="error">Bezeichnung muss angegeben werden</span><br>';
}
else
{
$lehrveranstaltung = new lehrveranstaltung($conn);
$lehrveranstaltung->load($lvid);
$studiengang = new studiengang($conn);
$studiengang->load($lehrveranstaltung->studiengang_kz);
$shortname = $stsem.'-'.$studiengang->kuerzel.'-'.$lehrveranstaltung->semester.'-'.$lehrveranstaltung->kurzbz;
//Gesamte LV zu einem Moodle Kurs zusammenlegen
if($art=='lv')
{
$mdl_course = new moodle_course($conn, $conn_moodle);
$mdl_course->lehrveranstaltung_id = $lvid;
$mdl_course->studiensemester_kurzbz = $stsem;
$mdl_course->mdl_fullname = $_POST['bezeichnung'];
$mdl_course->mdl_shortname = $shortname;
$mdl_course->insertamum = date('Y-m-d H:i:s');
$mdl_course->insertvon = $user;
//Moodlekurs anlegen
if($mdl_course->create_moodle())
{
//Eintrag in der Vilesci DB
$mdl_course->create_vilesci();
$mdl_user = new moodle_user($conn, $conn_moodle);
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user($conn, $conn_moodle);
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
}
}
elseif($art=='le') //Getrennte Kurse fuer die Lehreinheiten
{
$lehreinheiten=array();
foreach ($_POST as $key=>$value)
{
if(strstr($key, 'lehreinheit_'))
{
$lehreinheiten[]=$value;
}
}
if(count($lehreinheiten)>0)
{
$mdl_course = new moodle_course($conn, $conn_moodle);
$mdl_course->mdl_fullname = $_POST['bezeichnung'];
$mdl_course->mdl_shortname = $shortname;
$mdl_course->studiensemester_kurzbz = $stsem;
$mdl_course->insertamum = date('Y-m-d H:i:s');
$mdl_course->insertvon = $user;
$mdl_course->lehreinheit_id=$lehreinheiten[0];
//Kurs im Moodle anlegen
if($mdl_course->create_moodle())
{
//fuer jede Lehreinheit einen Eintrag in VilesciDB anlegen
foreach ($lehreinheiten as $value)
{
$mdl_course->lehreinheit_id = $value;
if(!$mdl_course->create_vilesci())
echo '<br>Fehler beim Anlegen:'.$mdl_course->errormsg;
}
$mdl_user = new moodle_user($conn, $conn_moodle);
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
$mdl_user = new moodle_user($conn, $conn_moodle);
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
echo $mdl_user->errormsg;
}
}
else
{
echo '<span class="error">Es muss mindestens eine Lehreinheit markiert sein</span><br>';
}
}
else
die('art ist unbekannt');
}
}
$mdl_course = new moodle_course($conn, $conn_moodle);
if($mdl_course->course_exists_for_lv($lvid, $stsem) || $mdl_course->course_exists_for_allLE($lvid, $stsem))
{
echo 'Es ist bereits ein Moodle Kurs für die Gesamt LV vorhanden';
}
else
{
//wenn bereits ein Moodle Kurs fuer eine Lehreinheit angelegt wurde, dann dass
//anlegen fuer die Lehrveranstaltung verhindern
$qry = "SELECT 1 FROM lehre.tbl_moodle
WHERE lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id='".addslashes($lvid)."'
AND studiensemester_kurzbz='".addslashes($stsem)."')";
$disable_lv='';
if($result = pg_query($conn, $qry))
if(pg_num_rows($result)>0)
$disable_lv='disabled="true"';
echo 'Moodle Kurs anlegen: <br><br>
<form action="'.$_SERVER['PHP_SELF'].'?lvid='.$lvid.'&stsem='.$stsem.'" method="POST">
<input type="radio" '.$disable_lv.' name="art" value="lv" onclick="togglediv()" '.($art=='lv'?'checked':'').'>einen Moodle Kurs f&uuml;r die gesamte LV anlegen<br>
<input type="radio" id="radiole" name="art" value="le" onclick="togglediv()" '.($art=='le'?'checked':'').'>einen Moodle Kurs für einzelne Lehreinheiten anlegen
';
$le = new lehreinheit($conn);
$le->load_lehreinheiten($lv->lehrveranstaltung_id, $stsem);
echo '<div id="lehreinheitencheckboxen" style="display:none">';
foreach ($le->lehreinheiten as $row)
{
//Gruppen laden
$gruppen = '';
$lehreinheitgruppe = new lehreinheitgruppe($conn);
$lehreinheitgruppe->getLehreinheitgruppe($row->lehreinheit_id);
foreach ($lehreinheitgruppe->lehreinheitgruppe as $grp)
{
if($grp->gruppe_kurzbz=='')
$gruppen.=' '.$grp->semester.$grp->verband.$grp->gruppe;
else
$gruppen.=' '.$grp->gruppe_kurzbz;
}
//Lektoren laden
$lektoren = '';
$lehreinheitmitarbeiter = new lehreinheitmitarbeiter($conn);
$lehreinheitmitarbeiter->getLehreinheitmitarbeiter($row->lehreinheit_id);
foreach ($lehreinheitmitarbeiter->lehreinheitmitarbeiter as $ma)
{
$lektoren.= ' '.$ma->mitarbeiter_uid;
}
if($mdl_course->course_exists_for_le($row->lehreinheit_id))
$disabled='disabled';
else
$disabled='';
echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="lehreinheit_'.$row->lehreinheit_id.'" value="'.$row->lehreinheit_id.'" '.$disabled.'>'.$row->lehrform_kurzbz.' '.$gruppen.' '.$lektoren;
echo '<br>';
}
echo '</div>';
echo '<br>Kursbezeichnung: <input type="text" name="bezeichnung" maxlength="254" size="40" value="'.$lv->bezeichnung.'"><br><br>';
echo '<input type="submit" name="neu" value="Kurs anlegen">
</form>';
}
echo '</td>';
echo '<td valign="top">';
echo '<b>Vorhandene Moodle Kurse für diese LV</b>';
if(!$mdl_course->getAll($lvid, $stsem))
echo $mdl_course->errormsg;
echo '<br>';
foreach ($mdl_course->result as $course)
{
echo '<br><a href="'.MOODLE_PATH.'course/view.php?id='.$course->mdl_course_id.'" class="Item" target="_blank">'.$course->mdl_fullname.'</a>';
}
echo '</td></tr></table>';
echo '</td>
</tr>
</table>
</body>
</html>';
?>
+3 -2
View File
@@ -182,7 +182,8 @@ mehrere Studenten auf einmal m&ouml;glich sein<br>
<tr>
</tr>
<tr class="liste1">
<td><br>
<td>Bei Lehreinheiten in der &Uuml;bersichtsliste eine Spalte mit
der Anzahl teilnehmenden der Studenten anzeigen<br>
</td>
<td align="center"><span style="font-weight: bold;"></span><br>
</td>
@@ -272,7 +273,7 @@ alle Lektoren eines Studienganges </td>
<th>Aufwand [h] </th>
</tr>
<tr class="liste0">
<td><br>
<td>Lehrf&auml;cher im DropDown nach der Bezeichnung sortieren<br>
</td>
<td align="center"><br>
</td>
+21 -8
View File
@@ -807,7 +807,7 @@ if(!$error)
}
else
{
// LE loeschen
// Loeschen verhindern wenn diese Lehreinheit schon verplant ist
$qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id='".$_POST['lehreinheit_id']."'
UNION
SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id='".$_POST['lehreinheit_id']."'";
@@ -820,14 +820,27 @@ if(!$error)
}
else
{
if ($leDAO->delete($_POST['lehreinheit_id']))
//Loeschen verhindern wenn ein MoodleKurs existiert
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE lehreinheit_id='".addslashes($_POST['lehreinheit_id'])."'";
if($result = pg_query($conn, $qry))
{
$return = true;
}
else
{
$return = false;
$errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg;
if(pg_num_rows($result)>0)
{
$return = false;
$errormsg = 'Lehreinheit kann nicht geloescht werden, da dazu bereits ein Moodle-Kurs angelegt wurde';
}
else
{
if ($leDAO->delete($_POST['lehreinheit_id']))
{
$return = true;
}
else
{
$return = false;
$errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg;
}
}
}
}
}
+59 -27
View File
@@ -29,6 +29,7 @@ require_once('../vilesci/config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/xslfo2pdf/xslfo2pdf.php');
require_once('../include/fop.class.php');
require_once('../include/akte.class.php');
// Datenbank Verbindung
@@ -176,7 +177,7 @@ $rechte->getBerechtigungen($user);
// die("Keine Berechtigung");
$xml_url=XML_ROOT.$xml.$params;
//echo $xml_url;
// Load the XML source
$xml_doc = new DOMDocument;
@@ -195,26 +196,9 @@ if(!$result = pg_query($conn, $qry))
if(!$row = pg_fetch_object($result))
die('Vorlage wurde nicht gefunden'.$qry);
// Load the XSL source
$xsl_doc = new DOMDocument;
//if(!$xsl_doc->load('../../../../xsl/collection.xsl'))
if(!$xsl_doc->loadXML($row->text))
die('unable to load xsl');
//echo 'XSL:'.$xsl_doc->saveXML().':';
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
$buffer = $proc->transformToXml($xml_doc);
//in $buffer steht nun das xsl-fo file mit den daten
/*$buffer = '<?xml version="1.0" encoding="ISO-8859-15" ?>'.substr($buffer, strpos($buffer,"\n"),strlen($buffer));*/
//$buffer = html_entity_decode($buffer);
//echo "XSL-FO: $buffer";
$xsl_content = $row->text;
//Pdf erstellen
$fo2pdf = new XslFo2Pdf();
//wenn uid gefunden wird, dann den Nachnamen zum Dateinamen dazuhaengen
$nachname='';
@@ -235,10 +219,35 @@ $filename=$xsl.$nachname;
if (!isset($_REQUEST["archive"]))
{
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
{
echo('Failed to generate PDF');
}
if(PDF_CREATE_FUNCTION=='FOP')
{
$fop = new fop();
$xml = $xml_doc->saveXML();
//$xml = '<personen></personen>';
//$xsl='foobar';
$fop->generatePdf($xml, $xsl_content, $filename, "D");
}
else
{
$fo2pdf = new XslFo2Pdf();
// Load the XSL source
$xsl_doc = new DOMDocument;
if(!$xsl_doc->loadXML($xsl_content))
die('unable to load xsl');
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
$buffer = $proc->transformToXml($xml_doc);
if (!$fo2pdf->generatePdf($buffer, $filename, "D"))
{
echo('Failed to generate PDF');
}
}
}
else
{
@@ -267,12 +276,35 @@ else
if($rechte->isBerechtigt('admin', $studiengang_kz, 'suid') || $rechte->isBerechtigt('assistenz', $studiengang_kz, 'suid'))
{
$filename = $user;
if (!$fo2pdf->generatePdf($buffer, $filename, 'F'))
if(PDF_CREATE_FUNCTION=='FOP')
{
echo('Failed to generate PDF');
$fop = new fop();
$file = $fop->generatePdf($xml_doc->saveXML(), $xsl_content, $filename, "F");
}
else
{
$filename = $user;
$fo2pdf = new XslFo2Pdf();
// Load the XSL source
$xsl_doc = new DOMDocument;
//if(!$xsl_doc->load('../../../../xsl/collection.xsl'))
if(!$xsl_doc->loadXML($xsl_content))
die('unable to load xsl');
//echo 'XSL:'.$xsl_doc->saveXML().':';
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl_doc); // attach the xsl rules
$buffer = $proc->transformToXml($xml_doc);
if (!$fo2pdf->generatePdf($buffer, $filename, 'F'))
{
echo('Failed to generate PDF');
}
$file = "/tmp/".$filename.".pdf";
}
$file = "/tmp/".$filename.".pdf";
$handle = fopen($file, "rb");
$string = fread($handle, filesize($file));
fclose($handle);
+68
View File
@@ -0,0 +1,68 @@
<?php
/*
$xml = file_get_contents('/path/to/your/xmlfile.xml');
$xsl = file_get_contenst('/path/to/your/xslfile.xsl');
$fop = new fop();
$pdf_filename = $fop->create_pdf($xml, $xsl);
*/
class fop
{
var $xml;
var $xsl;
function fop()
{
//Apache FOP
}
function generatePdf($xml, $xsl, $filename, $destination)
{
$tmppdf = tempnam('/tmp', 'FAS_FOP');
$tmpxml = tempnam('/tmp', 'FAS_FOP');
$tmpxsl = tempnam('/tmp', 'FAS_FOP');
file_put_contents($tmpxml, $xml);
file_put_contents($tmpxsl, $xsl);
exec("fop -xml {$tmpxml} -xsl {$tmpxsl} -pdf {$tmppdf} 2>&1", $output);
@unlink($tmpxml);
@unlink($tmpxsl);
switch($destination)
{
case "D": // Download
$buffer = file_get_contents($tmppdf);
if(headers_sent())
{
echo 'Some data has already been output to browser, can\'t send PDF file';
break;
}
if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
header('Content-Type: application/force-download');
else
header('Content-Type: application/octet-stream');
header('Content-Length: '.strlen($buffer));
header('Content-disposition: attachment; filename="'.$filename.'.pdf"');
echo $buffer;
unlink($tmppdf);
break;
case "F": // im Filesystem speichern
break;
case "I": //auf Stdout ausgeben
echo file_get_contents($tmppdf);
break;
}
return($tmppdf);
}
}
?>
+652
View File
@@ -0,0 +1,652 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
*
*/
class moodle_course
{
var $conn;
var $conn_moodle;
var $errormsg;
var $result = array();
//Vilesci Attribute
var $moodle_id;
var $mdl_course_id;
var $lehreinheit_id;
var $lehrveranstaltung_id;
var $studiensemester_kurzbz;
var $insertamum;
var $insertvon;
//Moodle Attribute
var $mdl_fullname;
var $mdl_shortname;
var $mdl_context_id;
var $mdl_context_level;
var $mdl_context_instanceid;
var $mdl_context_path;
var $mdl_context_depth;
// **********************************************
// * moodle_course
// * @param $conn Connection zur Vilesci DB
// * $conn_moodle Connection zur Moodle DB
// **********************************************
function moodle_course($conn, $conn_moodle)
{
$this->conn = $conn;
$this->conn_moodle = $conn_moodle;
$qry = "SET CLIENT_ENCODING TO 'LATIN9';";
pg_query($this->conn_moodle, $qry);
}
// **********************************************
// * Laedt alle MoodleKurse die zu einer LV/Stsem
// * plus die MoodleKurse die auf dessen LE haengen
// * @param lehrveranstaltung_id
// * studiensemester_kurzbz
// * @return true wenn ok, false im Fehlerfall
// **********************************************
function getAll($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT distinct on(mdl_course_id) *
FROM
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_moodle
WHERE
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehrveranstaltung.lehrveranstaltung_id = '".addslashes($lehrveranstaltung_id)."' AND
tbl_lehreinheit.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' AND
((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id AND tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz)
OR
(tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id)
)";
if($result = pg_query($this->conn, $qry))
{
while($row=pg_fetch_object($result))
{
$obj = new moodle_course($this->conn, $this->conn_moodle);
$obj->moodle_id = $row->moodle_id;
$obj->mdl_course_id = $row->mdl_course_id;
$obj->lehreinheit_id = $row->lehreinheit_id;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$qry_mdl = "SELECT * FROM public.mdl_course WHERE id='".addslashes($row->mdl_course_id)."'";
if($result_mdl = pg_query($this->conn_moodle, $qry_mdl))
{
if($row_mdl = pg_fetch_object($result_mdl))
{
$obj->mdl_fullname = $row_mdl->fullname;
$obj->mdl_shortname = $row_mdl->shortname;
}
}
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
// **********************************************
// * Schaut ob fuer diese LV/StSem schon ein
// * Moodle Kurs existiert
// * @param lehrveranstaltung_id
// * studiensemester_kurzbz
// * @return true wenn vorhanden, false wenn nicht
// **********************************************
function course_exists_for_lv($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."' AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
if($result = pg_query($this->conn, $qry))
{
if(pg_num_rows($result)>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei SELECT Abfrage in moodle_course.class.php / course_exists_for_lv';
return false;
}
}
// **********************************************
// * Schaut ob fuer diese LE schon ein Moodle
// * Kurs existiert
// * @param lehreinheit_id
// * @return true wenn vorhanden, false wenn nicht
// **********************************************
function course_exists_for_le($lehreinheit_id)
{
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE lehreinheit_id='".addslashes($lehreinheit_id)."'";
if($result = pg_query($this->conn, $qry))
{
if(pg_num_rows($result)>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei SELECT Abfrage in moodle_course.class.php / course_exists_for_le';
return false;
}
}
// **********************************************
// * Schaut ob fuer diese LV/StSem schon ein
// * Moodle Kurs existiert
// * @param lehrveranstaltung_id
// * studiensemester_kurzbz
// * @return true wenn vorhanden, false wenn nicht
// **********************************************
function course_exists_for_allLE($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT 1 FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."'
AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
AND lehreinheit_id NOT IN (SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
if($result = pg_query($this->conn, $qry))
{
if(pg_num_rows($result)>0)
return false;
else
return true;
}
else
{
$this->errormsg = 'Fehler bei SELECT Abfrage in moodle_course.class.php / course_exists_for_allLE';
return false;
}
}
// ************************************************
// * wenn $var '' ist wird "null" zurueckgegeben
// * wenn $var !='' ist werden datenbankkritische
// * Zeichen mit backslash versehen und das Ergebnis
// * unter Hochkomma gesetzt.
// ************************************************
function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
// ************************************************
// * Legt einen Eintrag in der tbl_moodle an
// * @return true wenn ok, false im Fehlerfall
// ************************************************
function create_vilesci()
{
if($this->mdl_course_id=='')
{
$this->errormsg='mdl_course_id muss angegeben sein';
return false;
}
$qry = 'BEGIN; INSERT INTO lehre.tbl_moodle(mdl_course_id, lehreinheit_id, lehrveranstaltung_id,
studiensemester_kurzbz, insertamum, insertvon)
VALUES('.
$this->addslashes($this->mdl_course_id).','.
$this->addslashes($this->lehreinheit_id).','.
$this->addslashes($this->lehrveranstaltung_id).','.
$this->addslashes($this->studiensemester_kurzbz).','.
$this->addslashes($this->insertamum).','.
$this->addslashes($this->insertvon).');';
if(pg_query($this->conn, $qry))
{
$qry = "SELECT currval('lehre.tbl_moodle_moodle_id_seq') as id;";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$this->moodle_id = $row->id;
pg_query($this->conn, 'COMMIT;');
return true;
}
else
{
pg_query($this->conn, 'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn, 'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Einfuegen des Datensatzes';
return false;
}
}
// ***********************************************
// * Legt einen Kurs im Moodle an
// ***********************************************
function create_moodle()
{
pg_query($this->conn_moodle, 'BEGIN;');
//CourseCategorie ermitteln
//lehrveranstalung ID holen falls die nur die lehreinheit_id angegeben wurde
if($this->lehrveranstaltung_id=='')
{
$qry = "SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
WHERE lehreinheit_id='".addslashes($this->lehreinheit_id)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$lvid = $row->lehrveranstaltung_id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
else
$lvid = $this->lehrveranstaltung_id;
//Studiengang und Semester holen
$qry = "SELECT tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE lehrveranstaltung_id='$lvid'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$semester = $row->semester;
$stg = $row->stg;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
//Studiensemester Categorie holen
if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0'))
{
$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0');
}
//Studiengang Categorie holen
if(!$id_stg = $this->getCategorie($stg, $id_stsem))
{
if(!$id_stg = $this->createCategorie($stg, $id_stsem))
echo "<br>$this->errormsg";
}
//Semester Categorie holen
if(!$id_sem = $this->getCategorie($semester, $id_stg))
{
if(!$id_sem = $this->createCategorie($semester, $id_stg))
echo "<br>$this->errormsg";
}
//CourseCategorie Context holen
$this->getContext(40, $id_sem);
//Eintrag in tbl_mdl_course
$qry = "INSERT INTO public.mdl_course(category, sortorder, fullname, shortname, format, showgrades, newsitems)
VALUES (".$this->addslashes($id_sem).", (SELECT max(sortorder)+1 FROM public.mdl_course), ".$this->addslashes($this->mdl_fullname).", ".
$this->addslashes($this->mdl_shortname).",'weeks', 1, 5);";
if($result = pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_course_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_course_id = $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim INSERT';
return false;
}
//zum vorherigen Pfad die aktuelle id hinzufuegen
$path = "(SELECT '$this->mdl_context_path' || '/' || currval('mdl_context_id_seq'))";
//vorherige tiefe um 1 erhoehen
$depth = $this->mdl_context_depth+1;
//Context eintragen
$qry = "INSERT INTO public.mdl_context(contextlevel, instanceid, path, depth) VALUES('50', ".
$this->addslashes($this->mdl_course_id).",".$path.",".$this->addslashes($depth).");";
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_context_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_context_id = $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim INSERT';
return false;
}
//Bloecke hinzufuegen
$qry =
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(20, $this->mdl_course_id, 'course-view', 'l', 0, 1);". //Teilnehmer
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(1, $this->mdl_course_id, 'course-view', 'l', 1, 1);". //Aktivitäten
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(25, $this->mdl_course_id, 'course-view', 'l', 2, 1);". //Forumssuche
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(2, $this->mdl_course_id, 'course-view', 'l', 3, 1);". //Admin
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(9, $this->mdl_course_id, 'course-view', 'l', 4, 1);". //Kursliste
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(18, $this->mdl_course_id, 'course-view', 'r', 0, 1);". //Neueste Nachrichten
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(8, $this->mdl_course_id, 'course-view', 'r', 1, 1);". //Kalender / Bald aktuell...
"INSERT INTO public.mdl_block_instance(blockid, pageid, pagetype, position, weight, visible) VALUES(22, $this->mdl_course_id, 'course-view', 'r', 2, 1);"; //Neueste Aktivitäten
if(!pg_query($this->conn_moodle, $qry))
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim INSERT der bloecke';
return false;
}
else
{
pg_query($this->conn_moodle, 'COMMIT');
return true;
}
}
// ************************************************************
// * Laedt eine CourseCategorie anhand der Bezeichnung und der
// * ParentID
// ************************************************************
function getCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'getCategorie: parent wurde nicht uebergeben';
return false;
}
$qry = "SELECT id FROM public.mdl_course_categories WHERE name='".addslashes($bezeichnung)."' AND parent='".addslashes($parent)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->id;
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
}
}
// ************************************************************
// * Erzeugt eine CourseCategorie anhand der Bezeichnung und der
// * ParentID
// ************************************************************
function createCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'createCategorie: parent wurde nicht uebergeben';
return false;
}
//Parent laden
$qry = "SELECT * FROM public.mdl_course_categories WHERE id='".addslashes($parent)."'";
echo $qry;
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$depth = $row->depth;
$path = $row->path;
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
}
//KursKategorie anlegen
$qry = "BEGIN; INSERT INTO public.mdl_course_categories(name, parent, sortorder,
coursecount, visible, timemodified, depth, path, theme)
VALUES(".$this->addslashes($bezeichnung).",".$this->addslashes($parent).",".
"'999',0,1,0,".$this->addslashes($depth+1).
", (SELECT ".$this->addslashes($path.'/')." || currval('mdl_course_categories_id_seq')), null);";
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_course_categories_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$coursecatid = $row->id;
//Context anlegen
//wenn Parent 0 ist, dann den SYSTEM Eintrag holen
if($parent!='0')
$qry = "SELECT path, depth FROM public.mdl_context WHERE contextlevel='40' AND instanceid='".addslashes($parent)."'";
else
$qry = "SELECT path, depth FROM public.mdl_context WHERE contextlevel='10' AND instanceid='".addslashes($parent)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$path = $row->path;
$depth = $row->depth;
//zum vorherigen Pfad die aktuelle id hinzufuegen
$path = "(SELECT '$path' || '/' || currval('mdl_context_id_seq'))";
//vorherige tiefe um 1 erhoehen
$depth=$depth+1;
//Context eintragen
$qry = "INSERT INTO public.mdl_context(contextlevel, instanceid, path, depth) VALUES('40', ".
$this->addslashes($coursecatid).",".$path.",".$this->addslashes($depth).");";
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_context_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle,'COMMIT;');
return $coursecatid;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim INSERT';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen des Contextes'.$qry;
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen des Contextes';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK');
$this->errormsg = 'Fehler beim Speichern der KursKategorie';
return false;
}
}
// ************************************************************
// * Laedt einen Context anhand des contextlevels und der instanceid
// ************************************************************
function getContext($contextlevel, $instanceid)
{
$qry ="SELECT * FROM public.mdl_context WHERE contextlevel='".addslashes($contextlevel)."'
AND instanceid='".addslashes($instanceid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_context_id = $row->id;
$this->mdl_context_contextlevelid = $row->id;
$this->mdl_context_instanceid = $row->instanceid;
$this->mdl_context_path = $row->path;
$this->mdl_context_depth = $row->depth;
return true;
}
else
{
$this->errormsg = 'Eintrag wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen des Contexts';
return false;
}
}
}
+463
View File
@@ -0,0 +1,463 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* requires moodle_course.class.php
*/
class moodle_user
{
var $conn;
var $conn_moodle;
var $errormsg;
var $log=''; //log message fuer Syncro
var $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro
var $mdl_user_id;
var $mdl_user_username;
// **********************************************
// * moodle_user
// * @param $conn Connection zur Vilesci DB
// * $conn_moodle Connection zur Moodle DB
// **********************************************
function moodle_user($conn, $conn_moodle)
{
$this->conn = $conn;
$this->conn_moodle = $conn_moodle;
$qry = "SET CLIENT_ENCODING TO 'LATIN9';";
pg_query($this->conn_moodle, $qry);
}
function loaduser($uid)
{
$qry = "SELECT * FROM public.mdl_user WHERE username='".addslashes($uid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_user_id = $row->id;
$this->mdl_user_username = $row->username;
return true;
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
// ************************************************
// * Synchronisiert die Lektoren der Lehreinheiten
// * mit denen des Moodle Kurses
// * @param $mdl_course_id ID des MoodleKurses
// * @return true wenn ok, false wenn Fehler
// ************************************************
function sync_lektoren($mdl_course_id)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$mitarbeiter='';
if($result_ma = pg_query($this->conn, $qry))
{
//Context des Kurses holen
$mdlcourse = new moodle_course($this->conn, $this->conn_moodle);
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
while($row_ma = pg_fetch_object($result_ma))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_ma->mitarbeiter_uid))
{
//User anlegen
if(!$this->createUser($row_ma->mitarbeiter_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_ma->mitarbeiter_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($mitarbeiter!='')
$mitarbeiter.=',';
$mitarbeiter.=$this->mdl_user_id;
//Nachschauen ob dieser Lektor bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Mitarbeiter ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 3))
{
$this->log.="\nerzeuge Lektoren-Zuteilung für User $this->mdl_user_id zum Context $mdlcourse->mdl_context_id";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Lektoren-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
//Lektoren loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($mitarbeiter)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Lektoren die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren';
return false;
}
}
// ************************************************
// * Synchronisiert die Studenten der Lehreinheiten
// * mit denen des Moodle Kurses
// * @param $mdl_course_id ID des MoodleKurses
// * @return true wenn ok, false wenn Fehler
// ************************************************
function sync_studenten($mdl_course_id)
{
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$studenten='';
if($result_std = pg_query($this->conn, $qry))
{
//Context des Kurses holen
$mdlcourse = new moodle_course($this->conn, $this->conn_moodle);
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
while($row_std = pg_fetch_object($result_std))
{
//Studenten dieser Gruppe holen
if($row_std->gruppe_kurzbz=='') //LVB Gruppe
{
$qry = "SELECT
distinct student_uid
FROM
public.tbl_studentlehrverband
WHERE
studiensemester_kurzbz='$row_std->studiensemester_kurzbz' AND
studiengang_kz = '$row_std->studiengang_kz' AND
semester = '$row_std->semester'";
if(trim($row_std->verband)!='')
{
$qry.=" AND verband = '$row_std->verband'";
if(trim($row_std->gruppe)!='')
{
$qry.=" AND gruppe = '$row_std->gruppe'";
}
}
}
else //Spezialgruppe
{
$qry = "SELECT
distinct uid as student_uid
FROM
public.tbl_benutzergruppe
WHERE
gruppe_kurzbz='$row_std->gruppe_kurzbz' AND
studiensemester_kurzbz='$row_std->studiensemester_kurzbz'
";
}
if($result_user = pg_query($this->conn, $qry))
{
while($row_user = pg_fetch_object($result_user))
{
//MoodleID des Users holen bzw ggf neu anlegen
if(!$this->loaduser($row_user->student_uid))
{
//User anlegen
if(!$this->createUser($row_user->student_uid))
{
$this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg";
return false;
}
else
$this->errormsg = '';
}
if($studenten!='')
$studenten.=',';
$studenten.=$this->mdl_user_id;
//Nachschauen ob dieser Student bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Student ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5))
{
$this->log.="\nerzeuge Studenten-Zuteilung für User $this->mdl_user_id zum Context $mdlcourse->mdl_context_id";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Studenten-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
}
}
//Studenten loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($studenten)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Studenten die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten';
return false;
}
}
// ************************************************
// * wenn $var '' ist wird "null" zurueckgegeben
// * wenn $var !='' ist werden datenbankkritische
// * Zeichen mit backslash versehen und das Ergebnis
// * unter Hochkomma gesetzt.
// ************************************************
function addslashes($var)
{
return ($var!=''?"'".addslashes($var)."'":'null');
}
// ********************************************
// * Legt einen User im Moodle an
// * @param $uid UID der Person die angelegt werden soll
// * @return true wenn ok, false wenn Fehler
// ********************************************
function createUser($uid)
{
$qry = "SELECT uid, vorname, nachname FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'";
if($result = pg_query($this->conn, $qry))
{
if($row = pg_fetch_object($result))
{
$username = $row->uid;
$vorname = $row->vorname;
$nachname = $row->nachname;
$qry = "BEGIN; INSERT INTO public.mdl_user(auth, username, idnumber, firstname, lastname, email, mnethostid, confirmed, lang)
VALUES('ldap', ".
$this->addslashes($username).", ".
$this->addslashes($username).",".
$this->addslashes($vorname).",".
$this->addslashes($nachname).",".
$this->addslashes($username.'@'.DOMAIN).", 1, 1, 'de_utf8');";
if(pg_query($this->conn_moodle, $qry))
{
$qry ="SELECT currval('mdl_user_id_seq') as id;";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
$this->mdl_user_id = $row->id;
return true;
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Anlegen des Users';
return false;
}
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
// *********************************************
// * Teilt den User mit der ID $mdl_user_id zum
// * Kurs mit der ContextID $mdl_context_id zu.
// * @param $mdl_user_id Moodle ID des Users
// * $mdl_context_id ContextID des Kurses
// * $role Rolle der Zuteilung (1=Admin/3=Lektor/5=Student)
// * @return true wenn ok, false wenn Fehler
// *********************************************
function createZuteilung($mdl_user_id, $mdl_context_id, $role)
{
$qry = "INSERT INTO public.mdl_role_assignments(roleid, contextid, userid)
VALUES(".
$this->addslashes($role).",".
$this->addslashes($mdl_context_id).",".
$this->addslashes($mdl_user_id).");";
if(pg_query($this->conn_moodle, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Zuteilung';
return false;
}
}
// *************************************************
// * Loescht die Zuteilung eines Users zu einem Kurs
// * @param $mdl_user_id MoodleID des Users
// * $mdl_context_id ContextID des Users
// * @return true wenn ok, false wenn Fehler
// *************************************************
function deleteZuteilung($mdl_user_id, $mdl_context_id)
{
$qry = "DELETE FROM public.mdl_role_assignments
WHERE userid='".addslashes($mdl_user_id)."' AND contextid='".addslashes($mdl_context_id)."'";
if(pg_query($this->conn_moodle, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
return false;
}
}
}
+110 -80
View File
@@ -26,6 +26,46 @@
?>
<table class="tabcontent">
<tr>
<td class="tdvertical" align="center">
<?php
//Lehrveranstaltungsinformation
echo "<img src=\"../../../skin/images/button_i.jpg\" width=\"67\" height=\"45\"><br><strong>Lehrveranstaltungsinformation</strong><br>";
$qry = "SELECT * FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id='$lvid' AND genehmigt=true AND sprache='German' AND aktiv=true";
$need_br=false;
if($result=pg_query($sql_conn,$qry))
{
if(pg_num_rows($result)>0)
{
echo "<a href=\"#\" class='Item' onClick=\"javascript:window.open('ects/preview.php?lv=$lvid&language=de','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">Deutsch&nbsp;</a>";
$need_br=true;
}
}
$qry = "SELECT * FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id='$lvid' AND genehmigt=true AND sprache='English' AND aktiv=true";
if($result=pg_query($sql_conn,$qry))
{
if(pg_num_rows($result)>0)
{
$row1=pg_fetch_object($result);
echo "<a href=\"#\" class='Item' onClick=\"javascript:window.open('ects/preview.php?lv=$lvid&language=en','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">Englisch</a>";
$need_br=true;
}
}
if($user_is_allowed_to_upload || $rechte->isBerechtigt('admin',$course_id) || $rechte->isBerechtigt('lehre',$course_id))
{
if($need_br)
echo "<br>";
echo "<a href='ects/index.php?lvid=$lvid' target='_blank' class='Item'>Bearbeiten</a>";
}
?>
<p>&nbsp;</p>
</td>
<td class="tdvertical" align="center">
<?php
@@ -149,7 +189,7 @@
if(isset($dir_empty) && $dir_empty == false)
{
echo '<a href="'.$dest_dir->path.'/" target="_blank">';
echo '<a href="'.$dest_dir->path.'/" target="_blank" class="Item">';
echo '<img src="../../../skin/images/button_dl.jpg" width="67" height="45"><br>';
echo '<strong>Download</strong>';
echo '</a>';
@@ -249,8 +289,23 @@
<p>&nbsp;</p>
</td>
<td class="tdvertical" align="center">
<td class="tdvertical" align="center">
<?php
//Keine Newsgroups fuer Studiengang '0' (Freifaecher) anzeigen
if($course_id!='0')
{
echo '<a href="news://cis.technikum-wien.at/'.strtolower($stg_obj->kurzbzlang).'.'.$term_id.'sem.'.strtolower($short_short_name).'" class="Item">
<img src="../../../skin/images/button_ng.jpg" width="67" height="45"><br>
<strong>Newsgroups</strong>
</a>';
}
?>
<p>&nbsp;</p>
</td>
<?php
/*
echo '<td class="tdvertical" align="center">'
//Studentenabgabe
$dest_dir = @dir('../../../documents/'.strtolower($kurzbz).'/'.$term_id.'/'.strtolower($short_short_name).'/upload');
@@ -343,95 +398,70 @@
</a>";
}
}
echo '<p>&nbsp;</p>
</td>';
*/
?>
<p>&nbsp;</p>
</td>
</tr>
<tr>
<td class="tdvertical" align="center">
<td class="tdvertical" align="center">
<?php
//FEEDBACK
echo '<a href="feedback.php?lvid='.$lvid.'" target="_blank"><img border="0" src="../../../skin/images/button_fb.jpg" width="67" height="45"><br><strong>Feedback</strong></a>';
echo '<a href="feedback.php?lvid='.$lvid.'" target="_blank" class="Item"><img border="0" src="../../../skin/images/button_fb.jpg" width="67" height="45"><br><strong>Feedback</strong></a>';
?>
<p>&nbsp;</p>
</td>
<td class="tdvertical" align="center">
<?php if($is_lector)
{
if(isset($angezeigtes_stsem))
$studiensem = '&stsem='.$angezeigtes_stsem;
else
$studiensem = '';
?>
<a href="benotungstool/verwaltung.php?<?php echo "lvid=$lvid$studiensem"?>" >
<img src="../../../skin/images/button_kt.jpg" width="67" height="45"><br>
<strong>Benotungstool<br>("Kreuzerl"-Tool)</strong></a><br>
<a href="lesson.php?handbuch=1&<?php echo "lvid=$lvid$studiensem"?>">Handbuch [PDF]</a>
<?php } else { ?>
<a href="benotungstool/studentenansicht.php?<?php echo "lvid=$lvid"?>" >
<img src="../../../skin/images/button_kt.jpg" width="67" height="45"><br>
<strong>"Kreuzerl"-Tool</strong></a>
<?php } ?>
<p>&nbsp;</p>
</td>
</tr>
<tr>
<td class="tdvertical" align="center">
<?php
//Lehrveranstaltungsinformation
echo "<img src=\"../../../skin/images/button_i.jpg\" width=\"67\" height=\"45\"><br><strong>Lehrveranstaltungsinformation</strong><br>";
$qry = "SELECT * FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id='$lvid' AND genehmigt=true AND sprache='German' AND aktiv=true";
$need_br=false;
if($result=pg_query($sql_conn,$qry))
{
if(pg_num_rows($result)>0)
{
echo "<a href=\"#\" class='Item' onClick=\"javascript:window.open('ects/preview.php?lv=$lvid&language=de','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">Deutsch&nbsp;</a>";
$need_br=true;
}
}
$qry = "SELECT * FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id='$lvid' AND genehmigt=true AND sprache='English' AND aktiv=true";
if($result=pg_query($sql_conn,$qry))
{
if(pg_num_rows($result)>0)
{
$row1=pg_fetch_object($result);
echo "<a href=\"#\" class='Item' onClick=\"javascript:window.open('ects/preview.php?lv=$lvid&language=en','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">Englisch</a>";
$need_br=true;
}
}
if($user_is_allowed_to_upload || $rechte->isBerechtigt('admin',$course_id) || $rechte->isBerechtigt('lehre',$course_id))
{
if($need_br)
echo "<br>";
echo "<a href='ects/index.php?lvid=$lvid' target='_blank' class='Item'>Bearbeiten</a>";
}
?>
<td class="tdvertical" align="center">
<?php
//Kreuzerltool
if($is_lector)
{
if(isset($angezeigtes_stsem))
$studiensem = '&stsem='.$angezeigtes_stsem;
else
$studiensem = '';
echo '<a href="benotungstool/verwaltung.php?lvid='.$lvid.$studiensem.'" class="Item">
<img src="../../../skin/images/button_kt.jpg" width="67" height="45"><br>
<strong>Benotungstool<br>("Kreuzerl"-Tool)</strong></a><br>
<a href="lesson.php?handbuch=1&lvid='.$lvid.$studiensem.'" class="Item">Handbuch [PDF]</a>';
}
else
{
echo '<a href="benotungstool/studentenansicht.php?lvid='.$lvid.'" >
<img src="../../../skin/images/button_kt.jpg" width="67" height="45"><br>
<strong>"Kreuzerl"-Tool</strong></a>';
}
?>
<p>&nbsp;</p>
</td>
<td class="tdvertical" align="center">
<?php
//Keine Newsgroups fuer Studiengang '0' (Freifaecher) anzeigen
if($course_id!='0')
{
echo '<a href="news://cis.technikum-wien.at/'.strtolower($stg_obj->kurzbzlang).'.'.$term_id.'sem.'.strtolower($short_short_name).'">
<img src="../../../skin/images/button_ng.jpg" width="67" height="45"><br>
<strong>Newsgroups</strong>
</a>';
}
?>
<p>&nbsp;</p>
</td>
</td>
<td class="tdvertical" align="center">
<?php
//Moodle
echo '<a href="'.MOODLE_PATH.'" target="_blank" class="Item" >
<img src="../../../skin/images/button_moodle.jpg" width="68" height="45"><br>
<strong>Moodle</strong></a><br>';
if($is_lector)
echo '<a href="moodle_wartung.php?lvid='.$lvid.'&stsem='.$angezeigtes_stsem.'" class="Item">Wartung</a>';
?>
<p>&nbsp;</p>
</td>
<td class="tdvertical" align="center">
<?php
//Gesamtnote
if($is_lector)
{
echo '<a href="benotungstool/lvgesamtnoteverwalten.php?lvid='.$lvid.'&stsem='.$angezeigtes_stsem.'" class="Item" >
<img src="../../../skin/images/button_endnote.jpg" width="68" height="45"><br>
<strong>Gesamtnote</strong></a><br>';
}
?>
<p>&nbsp;</p>
</td>
</tr>
</table>
+114
View File
@@ -0,0 +1,114 @@
<?php
/* Copyright (C) 2008 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* Synchronisiert die Lektoren und Studenten der aktuellen MoodleKurse
* wenn kein aktuelles Studiensemester vorhanden ist, wird NICHT Synchronisiert
*/
require_once('../vilesci/config.inc.php');
require_once('../include/moodle_course.class.php');
require_once('../include/moodle_user.class.php');
require_once('../include/studiensemester.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Connecten zur DB');
if(!$conn_moodle = pg_pconnect(CONN_STRING_MOODLE))
die('Fehler beim Connecten zur DB');
$sync_lektoren_gesamt=0;
$sync_studenten_gesamt=0;
$fehler=0;
$message='';
//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine
//Probleme durch die Vorrueckung entstehen
$stsem = new studiensemester($conn);
if($stsem_kurzbz=$stsem->getakt())
{
//nur die Eintraege des aktuellen Studiensemesters syncen
$qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle WHERE studiensemester_kurzbz='$stsem_kurzbz'";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
//Lektoren
$mdluser = new moodle_user($conn, $conn_moodle);
if($mdluser->sync_lektoren($row->mdl_course_id))
{
$sync_lektoren_gesamt+=$mdluser->sync_create;
if($mdluser->sync_create>0)
{
$message.="\nCourse $row->mdl_course_id:\n".$mdluser->log."\n";
}
}
else
{
$message.="\nFehler: $mdluser->errormsg";
$fehler++;
}
//Studenten
$mdluser = new moodle_user($conn, $conn_moodle);
if($mdluser->sync_studenten($row->mdl_course_id))
{
$sync_studenten_gesamt+=$mdluser->sync_create;
if($mdluser->sync_create>0)
{
$message.="\nCourse $row->mdl_course_id:\n".$mdluser->log."\n";
}
}
else
{
$message.="\nFehler: $mdluser->errormsg";
$fehler++;
}
}
if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0)
{
$header = "Dies ist eine automatische Mail!\n";
$header.= "Folgende Syncros mit den MoodleKursen wurde durchgeführt:\n\n";
$header.= "Anzahl der aktualisierten Lektoren: $sync_lektoren_gesamt\n";
$header.= "Anzahl der aktualisierten Studenten: $sync_studenten_gesamt\n";
$header.= "Anzahl der Fehler: $fehler\n";
$to = MAIL_ADMIN;
//$to = 'oesi@technikum-wien.at';
if(mail($to,'Moodle Syncro', $header.$message, 'From: vilesci@'.DOMAIN))
echo "Mail wurde an $to versandt:<br>".nl2br($header.$message);
else
echo "Fehler beim Senden des Mails an $to:<br>".nl2br($header.$message);
}
else
{
echo 'Alle Zuteilungen sind auf dem neuesten Stand';
}
}
else
{
echo 'Fehler bei Select:'.$qry;
}
}
else
echo "Kein aktuelles Studiensemester vorhanden->kein Syncro";
?>
+75 -21
View File
@@ -141,6 +141,7 @@ $nachname = (isset($_POST['nachname'])?$_POST['nachname']:'');
$vorname = (isset($_POST['vorname'])?$_POST['vorname']:'');
$geschlecht = (isset($_POST['geschlecht'])?$_POST['geschlecht']:'');
$geburtsdatum = (isset($_POST['geburtsdatum'])?$_POST['geburtsdatum']:'');
$nation = (isset($_POST['nation'])?$_POST['nation']:'A');
$adresse = (isset($_POST['adresse'])?$_POST['adresse']:'');
$plz = (isset($_POST['plz'])?$_POST['plz']:'');
$ort = (isset($_POST['ort'])?$_POST['ort']:'');
@@ -185,6 +186,7 @@ if(isset($_POST['save']))
$person->titelpost = $titelpost;
$person->geschlecht = $geschlecht;
$person->gebdatum = $geburtsdatum;
$person->staatsbuergerschaft = $nation;
$person->svnr = $svnr;
$person->ersatzkennzeichen = $ersatzkennzeichen;
$person->aktiv = true;
@@ -349,22 +351,25 @@ if(isset($_POST['save']))
$errormsg = "Fehler beim Anlegen des Preinteressenten: $preinteressent->errormsg";
}
foreach ($_POST as $key=>$param)
if(!$error)
{
if(substr($key,0,4)=='stg_')
foreach ($_POST as $key=>$param)
{
$stg_kz = substr($key, 4);
$zuordnung = new preinteressent($conn);
$zuordnung->preinteressent_id = $preinteressent->preinteressent_id;
$zuordnung->studiengang_kz = $stg_kz;
$zuordnung->prioritaet = 1;
$zuordnung->insertamum = date('Y-m-d H:i:s');
$zuordnung->insertvon = $user;
if(!$zuordnung->saveZuordnung(true))
if(substr($key,0,4)=='stg_')
{
$errormsg.="Fehler beim Speichern der Zuordnung zum Studiengang $stg_kz";
$error=true;
$stg_kz = substr($key, 4);
$zuordnung = new preinteressent($conn);
$zuordnung->preinteressent_id = $preinteressent->preinteressent_id;
$zuordnung->studiengang_kz = $stg_kz;
$zuordnung->prioritaet = 1;
$zuordnung->insertamum = date('Y-m-d H:i:s');
$zuordnung->insertvon = $user;
if(!$zuordnung->saveZuordnung(true))
{
$errormsg.="Fehler beim Speichern der Zuordnung zum Studiengang $stg_kz";
$error=true;
}
}
}
}
@@ -427,6 +432,22 @@ echo '<OPTION value="w" '.($geschlecht=='w'?'selected':'').'>weiblich</OPTION>';
echo '<OPTION value="u" '.($geschlecht=='w'?'selected':'').'>unbekannt</OPTION>';
echo '</SELECT>';
echo '</td></tr>';
echo '<tr><td>Staatsbuergerschaft</td><td><SELECT name="nation">';
$qry = "SELECT nation_code, kurztext FROM bis.tbl_nation ORDER BY kurztext";
if($result = pg_query($conn, $qry))
{
while($row = pg_fetch_object($result))
{
if($row->nation_code==$nation)
$selected='selected';
else
$selected='';
echo "<option value='$row->nation_code' $selected>$row->kurztext</option>";
}
}
echo '</SELECT';
echo '</td></tr>';
echo '<tr><td>SVNR</td><td><input type="text" id="svnr" size="10" maxlength="10" name="svnr" value="'.$svnr.'" onblur="GeburtsdatumEintragen()" /></td></tr>';
echo '<tr><td>Ersatzkennzeichen</td><td><input type="text" id="ersatzkennzeichen" size="10" maxlength="10" name="ersatzkennzeichen" value="'.$ersatzkennzeichen.'" /></td></tr>';
echo '<tr><td>Geburtsdatum</td><td><input type="text" id="geburtsdatum" size="10" maxlength="10" name="geburtsdatum" value="'.$geburtsdatum.'" /> (Format dd.mm.JJJJ)</td></tr>';
@@ -491,10 +512,18 @@ if($result = pg_query($conn, $qry))
echo '</SELECT></td></tr>';
echo '</tr><td>Schule ID:</td><td><input type="text" size="3" name="schule_id" value="'.$schule.'" onkeyup="checkschulid(this.value)"></td></tr>';
echo '<tr><td></td><td>';
if(($geburtsdatum=='' && $vorname=='' && $nachname=='') || $geburtsdatum_error)
if(($vorname!='' && $geburtsdatum=='' && $nachname=='')
//|| ($vorname=='' && $geburtsdatum=='' && $nachname!='')
|| ($nachname=='' && $geburtsdatum=='')
|| ($geburtsdatum=='' && $nachname=='' && $vorname=='')
|| $geburtsdatum_error)
echo '<input type="submit" name="showagain" value="Vorschlag laden">';
else
{
echo '<input type="submit" name="showagain" value="Vorschlag laden">';
echo '<input type="submit" name="save" value="Speichern">';
}
echo '</td></tr>';
echo '</table>';
@@ -523,6 +552,13 @@ if($vorname!='' && $nachname!='')
$where.=" (LOWER(vorname)=LOWER('".$vorname."') AND LOWER(nachname)=LOWER('".$nachname."'))";
}
if($vorname=='' && $nachname!='')
{
if($where!='')
$where.=' OR';
$where.=" (LOWER(nachname)=LOWER('".$nachname."'))";
}
if($where!='')
{
$qry = "SELECT * FROM public.tbl_person WHERE $where ORDER BY nachname, vorname, gebdatum";
@@ -567,18 +603,36 @@ if($where!='')
echo '</table>';
echo '<hr>';
//Studiengaenge anzeigen
$studiengang = new studiengang($conn);
$studiengang->getAll('typ, bezeichnung');
echo '<table>';
$qry = "SELECT *, UPPER(typ::varchar(1) || kurzbz) as kuerzel FROM public.tbl_studiengang
WHERE aktiv AND typ in('b','m') ORDER BY typ, bezeichnung";
if($result = pg_query($conn, $qry))
{
echo '<table><tr><td valign="top">';
echo '<table>';
$lasttyp='';
while($row = pg_fetch_object($result))
{
if($lasttyp!=$row->typ)
{
if($lasttyp!='')
echo '</table></td><td><table>';
$lasttyp = $row->typ;
}
echo "<tr><td><input type='checkbox' name='stg_$row->studiengang_kz'></td><td>$row->kuerzel</td><td>$row->bezeichnung</td></tr>";
}
echo '</table></td></tr></table>';
}
/*
foreach ($studiengang->result as $row)
{
echo "<tr><td><input type='checkbox' name='stg_$row->studiengang_kz'></td><td>$row->kuerzel</td><td>$row->bezeichnung</td></tr>";
}
echo '</table>';
}*/
}
}
//else
// echo 'Zum Erstellen des Vorschlags bitte Geburtsdatum oder Vorname und Nachname eingeben';
else
echo '<b>Zum Erstellen des Vorschlags bitte Geburtsdatum oder Vorname und Nachname eingeben</b>';
?>
</td>
+17 -2
View File
@@ -241,11 +241,12 @@ echo '<br>';
echo "<table class='liste table-autosort:0 table-stripeclass:alternate table-autostripe'>
<thead>
<tr>
<th class='table-sortable:default'>PersonID</th>
<th class='table-sortable:default'>Nachname</th>
<th class='table-sortable:default'>Vorname</th>
<th class='table-sortable:default'>Geburtsdatum</th>
<th class='table-sortable:default'>Studiensemester</th>
<th class='table-sortable:default'>Erfassungsdatum</th>
<th class='table-sortable:default'>E-Mail</th>
<th class='table-sortable:default'>Status</th>
<th class='table-sortable:default'>Freigabe</th>
<th class='table-sortable:default'>&Uuml;bernahme</th>
@@ -286,11 +287,25 @@ foreach ($preinteressent->result as $row)
echo '<tr>';
$person = new person($conn);
$person->load($row->person_id);
echo "<td>$person->person_id</td>";
echo "<td>$person->nachname</td>";
echo "<td>$person->vorname</td>";
echo "<td>".$datum_obj->convertISODate($person->gebdatum)."</td>";
//echo "<td>".$datum_obj->convertISODate($person->gebdatum)."</td>";
echo "<td>$row->studiensemester_kurzbz</td>";
echo "<td>".$datum_obj->formatDatum($row->erfassungsdatum,'d.m.Y')."</td>";
//EMail
$qry = "SELECT kontakt FROM public.tbl_kontakt WHERE person_id='$person->person_id' AND kontakttyp='email'
ORDER BY zustellung DESC LIMIT 1";
echo '<td>';
if($result_mail = pg_query($conn, $qry))
{
if($row_mail = pg_fetch_object($result_mail))
{
echo '<a href="mailto:'.$row_mail->kontakt.'" class="Item">'.$row_mail->kontakt.'</a>';
}
}
echo '</td>';
//Status
$status='';
$prestudent = new prestudent($conn);
if($prestudent->getPrestudenten($row->person_id))