mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-26 00:54:27 +00:00
Removed the directories cis/private/lehre/ects and include/safehtml
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,78 +0,0 @@
|
|||||||
<?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 <[email protected]>,
|
|
||||||
* Andreas Oesterreicher <[email protected]> and
|
|
||||||
* Rudolf Hangl <[email protected]>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('../../../../config/cis.config.inc.php');
|
|
||||||
require_once('../../../../include/functions.inc.php');
|
|
||||||
require_once('../../../../include/phrasen.class.php');
|
|
||||||
|
|
||||||
$sprache = getSprache();
|
|
||||||
$p= new phrasen($sprache);
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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=UTF-8">
|
|
||||||
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
|
||||||
<title><?php echo $p->t('courseInformation/ectsLvInfo');?></title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body style="padding: 10px">
|
|
||||||
<h1><?php echo $p->t('courseInformation/lvInfoBeispiele');?></h1>
|
|
||||||
<table class="tabcontent">
|
|
||||||
<tr>
|
|
||||||
<td width="85%">
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li> <a class="Item" href='index.php'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
|
|
||||||
<li> <a class="Item" href='freigabe.php'><font size='3'><?php echo $p->t('courseInformation/freigabe')?></font></a></li>
|
|
||||||
<li> <a class="Item" href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
|
|
||||||
<li> <a class="Item" href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie')?></font></a></li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<table class="tabcontent">
|
|
||||||
<tr>
|
|
||||||
<td class="tdwidth10">
|
|
||||||
<ul>
|
|
||||||
<!--
|
|
||||||
<li><a href='../../../../documents/lva_info/Beispiel__IT_Projektarbeit_6.pdf' target="_blank">Beispiel IT Projektarbeit (kommentiert und ausgefüllt)</a></li>
|
|
||||||
<li><a href='../../../../documents/lva_info/Beispiel_Balog.pdf' target="_blank"">Beispiel Computerarchitektur (ausgefüllt)</a></li>
|
|
||||||
<li><a href='../../../../documents/lva_info/Beispiel_Woletz.pdf' target="_blank">Beispiel Projektmanagement (ausgefüllt)</a></li>
|
|
||||||
-->
|
|
||||||
<li><a href='Beispiel_Projektmarketing.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielProjektmarketing');?></a></li>
|
|
||||||
<li><a href='Beispiel_ITProjektarbeit_at.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielItProjektarbeitDeutsch');?></a></li>
|
|
||||||
<li><a href='Beispiel_ITProjektarbeit_en.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielItProjektarbeitEnglisch');?></a></li>
|
|
||||||
<li><a href='Beispiel_Computerarchitektur.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielComputerarchitektur');?></a></li>
|
|
||||||
<li><a href='Beispiel_Change_Management.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielMSEChangeManagement');?></a></li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,363 +0,0 @@
|
|||||||
<?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 <[email protected]>,
|
|
||||||
* Andreas Oesterreicher <[email protected]>
|
|
||||||
* Rudolf Hangl < [email protected] >
|
|
||||||
* Gerald Simane-Sequens < [email protected] >
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
@author Andres Oesterreicher
|
|
||||||
@date 20.10.2005
|
|
||||||
@brief Formular zum Freigeben der LV Informationen aus der tabelle tbl_lvinfo
|
|
||||||
|
|
||||||
@edit 08-11-2006 Versionierung entfernt. Studiensemester = WS2007
|
|
||||||
03-01-2006 Anpassung an neue DB
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('../../../../config/cis.config.inc.php');
|
|
||||||
require_once('../../../../include/basis_db.class.php');
|
|
||||||
require_once('../../../../include/functions.inc.php');
|
|
||||||
require_once('../../../../include/studiensemester.class.php');
|
|
||||||
require_once('../../../../include/lvinfo.class.php');
|
|
||||||
require_once('../../../../include/phrasen.class.php');
|
|
||||||
require_once('../../../../include/benutzerberechtigung.class.php');
|
|
||||||
|
|
||||||
$sprache = getSprache();
|
|
||||||
$p = new phrasen($sprache);
|
|
||||||
|
|
||||||
if (!$db = new basis_db())
|
|
||||||
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
|
|
||||||
$user = get_uid();
|
|
||||||
|
|
||||||
$rechte = new benutzerberechtigung();
|
|
||||||
$rechte->getBerechtigungen($user);
|
|
||||||
|
|
||||||
//if(!check_lektor($user))
|
|
||||||
// die('<center>'.$p->t('global/keineBerechtigungFuerDieseSeite').'</center>');
|
|
||||||
|
|
||||||
/* WriteLog($qry,$uid)
|
|
||||||
* @brief Schreib die Querys im format: uid - datum - qry ins LogFile
|
|
||||||
* @param $qry Query anweisung
|
|
||||||
* $uid Username
|
|
||||||
* @return true wenn ok false wenn fehler beim oeffnen
|
|
||||||
*/
|
|
||||||
function WriteLog($qry,$uid)
|
|
||||||
{
|
|
||||||
if($fp=fopen(LOG_PATH.'lvinfo.log',"a"))
|
|
||||||
{
|
|
||||||
fwrite($fp,"\n");
|
|
||||||
fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry);
|
|
||||||
fclose($fp);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$lv=trim((isset($_REQUEST['lv']) ? $_REQUEST['lv']:''));
|
|
||||||
|
|
||||||
//Studiengang der Angezeigt werden soll
|
|
||||||
$stg=trim((isset($_REQUEST['stg']) ? $_REQUEST['stg']:''));
|
|
||||||
//Semester das angezeigt werden soll
|
|
||||||
$sem=trim((isset($_REQUEST['sem']) ? $_REQUEST['sem']:''));
|
|
||||||
|
|
||||||
if (!$rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
|
|
||||||
die ($rechte->errormsg);
|
|
||||||
|
|
||||||
if(isset($_GET["lv"])) //Id des DS der freigegeben/nicht freigegeben werden soll
|
|
||||||
$id=$_GET["lv"];
|
|
||||||
|
|
||||||
if(isset($_GET["del"])) //Wenn diese Variable gesetzt ist dann wird DS mit $idde und $iden geloescht
|
|
||||||
$del=$_GET["del"];
|
|
||||||
|
|
||||||
if(isset($_GET["changestat"])) //Wenn diese Variable gesetzt ist dann wird DS mit $id freigegeben/nicht freigegeben
|
|
||||||
$changestat=$_GET["changestat"];
|
|
||||||
|
|
||||||
if(isset($_POST["status"]) && $_POST["status"] =='changestg')
|
|
||||||
unset($sem);
|
|
||||||
|
|
||||||
if(isset($del) && isset($lv))
|
|
||||||
{
|
|
||||||
//Loeschen der beiden Datensaetze
|
|
||||||
|
|
||||||
$lvinfo_obj = new lvinfo();
|
|
||||||
$db->db_query('BEGIN');
|
|
||||||
if($lvinfo_obj->delete($lv))
|
|
||||||
{
|
|
||||||
if(!WriteLog($lvinfo_obj->lastqry,$user))
|
|
||||||
{
|
|
||||||
echo "<br>".$p->t('courseInformation/fehlerBeimSchreibenDesLog')."<br>";
|
|
||||||
}
|
|
||||||
$db->db_query('COMMIT');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$db->db_query('ROLLBACK');
|
|
||||||
echo "<br>".$p->t('global/fehleraufgetreten')."<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($changestat) && isset($lv) && isset($_GET['lang']))
|
|
||||||
{
|
|
||||||
//Setzt die Spalte genehmigt auf den entsprechenden Wert
|
|
||||||
//=Wenn Hackerl angeklickt wird
|
|
||||||
|
|
||||||
$qry="SELECT genehmigt FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache=";
|
|
||||||
if($_GET['lang']=='de')
|
|
||||||
$qry.= $db->db_add_param(ATTR_SPRACHE_DE);
|
|
||||||
else
|
|
||||||
$qry.= $db->db_add_param(ATTR_SPRACHE_EN);
|
|
||||||
|
|
||||||
if($result=$db->db_query($qry))
|
|
||||||
{
|
|
||||||
if($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
$wert = $row->genehmigt=='t'?'false':'true';
|
|
||||||
$qry="UPDATE campus.tbl_lvinfo SET genehmigt=$wert
|
|
||||||
WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache=";
|
|
||||||
if($_GET['lang']=='de')
|
|
||||||
$qry .= $db->db_add_param(ATTR_SPRACHE_DE);
|
|
||||||
else
|
|
||||||
$qry .= $db->db_add_param(ATTR_SPRACHE_EN);
|
|
||||||
|
|
||||||
if($db->db_query($qry))
|
|
||||||
WriteLog($qry,$user);
|
|
||||||
else
|
|
||||||
echo $p->t('global/fehlerBeimLesenAusDatenbank');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo $p->t('global/fehlerBeimLesenAusDatenbank');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo $p->t('global/fehlerBeimLesenAusDatenbank');
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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=UTF-8">
|
|
||||||
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
|
||||||
<link rel="stylesheet" href="../../../../skin/jquery.css" type="text/css"/>
|
|
||||||
<link rel="stylesheet" href="../../../../skin/tablesort.css" type="text/css"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
|
|
||||||
<script type="text/javascript" src="../../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
|
||||||
<script type="text/javascript" src="../../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
|
||||||
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
|
||||||
<script type="text/javascript" src="../../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
|
||||||
<script type="text/javascript" src="../../../../vendor/jquery/sizzle/sizzle.js"></script>
|
|
||||||
<title><?php echo $p->t('courseInformation/ectsLvInfo');?></title>
|
|
||||||
<script language="JavaScript" type="text/javascript">
|
|
||||||
function ask() {
|
|
||||||
return confirm("<?php echo $p->t('global/warnungWirklichLoeschen');?>");
|
|
||||||
}
|
|
||||||
$(document).ready(function()
|
|
||||||
{
|
|
||||||
$("#myTable").tablesorter(
|
|
||||||
{
|
|
||||||
sortList: [[1,0]],
|
|
||||||
widgets: ["zebra"],
|
|
||||||
headers : {0:{sorter: false}}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="padding:10px">
|
|
||||||
<h1><?php echo $p->t('courseInformation/lvInfoFreigabe');?></h1>
|
|
||||||
|
|
||||||
<table class="tabcontent">
|
|
||||||
<tr>
|
|
||||||
<td width="85%">
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li> <a href='index.php?<?php echo "stg=$stg&sem=".(isset($sem)?$sem:'')."&lvid=$lv"?>'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
|
|
||||||
<li> <a href='freigabe.php?<?php echo "stg=$stg&sem=".(isset($sem)?$sem:'')."&lv=$lv"?>'><font size='3'><?php echo $p->t('courseInformation/freigabe');?></font></a></li>
|
|
||||||
<li> <a href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
|
|
||||||
<!--<li> <a href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie');?></font></a></li>-->
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
<?php
|
|
||||||
//DropDown Menues zur Auswahl von Studiengang und Semester anzeigen
|
|
||||||
|
|
||||||
echo "<form name='auswFrm' action='".$_SERVER['PHP_SELF']."' method='POST'>";
|
|
||||||
echo "<input type='hidden' name='status' value='a'>";
|
|
||||||
echo "<input type='hidden' name='lv' value='$lv'>";
|
|
||||||
//stg Drop Down
|
|
||||||
$qry = "SELECT distinct tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kurzbzlang FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung, public.tbl_studiengang
|
|
||||||
WHERE tbl_lvinfo.aktiv=true
|
|
||||||
AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
|
|
||||||
AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz
|
|
||||||
ORDER by kurzbzlang";
|
|
||||||
if(!$result=$db->db_query($qry))
|
|
||||||
die ('<center>'.$p->t('global/fehlerBeimLesenAusDatenbank').'</center>');
|
|
||||||
|
|
||||||
echo $p->t('global/studiengang')." <SELECT name='stg' onChange='javascript:window.document.auswFrm.status.value=\"changestg\";window.document.auswFrm.submit();'>";
|
|
||||||
//$firststg;
|
|
||||||
$vorhanden=false;
|
|
||||||
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$row->studiengang_kz))
|
|
||||||
{
|
|
||||||
if(!isset($firststg))
|
|
||||||
$firststg=$row->studiengang_kz;
|
|
||||||
if(!isset($stg))
|
|
||||||
$stg=$row->studiengang_kz;
|
|
||||||
if($stg==$row->studiengang_kz)
|
|
||||||
{
|
|
||||||
echo "<option value='$row->studiengang_kz' selected>$row->kurzbzlang</option>";
|
|
||||||
$vorhanden=true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo "<option value='$row->studiengang_kz'>$row->kurzbzlang</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo "</SELECT>";
|
|
||||||
|
|
||||||
if(!$vorhanden) //Wenn $stg einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt
|
|
||||||
$stg=$firststg;
|
|
||||||
|
|
||||||
//Semester Drop Down
|
|
||||||
$qry = "SELECT distinct semester FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung
|
|
||||||
WHERE tbl_lvinfo.aktiv=true
|
|
||||||
AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
|
|
||||||
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($stg)."
|
|
||||||
ORDER by semester";
|
|
||||||
if(!$result=$db->db_query($qry))
|
|
||||||
die ("<center>".$p->t('global/fehleraufgetreten')."</center>");
|
|
||||||
|
|
||||||
echo " ".$p->t('global/semester')." <SELECT name='sem' onChange='javascript:window.document.auswFrm.submit();'>";
|
|
||||||
|
|
||||||
//$firstsem;
|
|
||||||
$vorhanden=false;
|
|
||||||
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
if(!isset($firstsem))
|
|
||||||
$firstsem = $row->semester;
|
|
||||||
|
|
||||||
if(!isset($sem))
|
|
||||||
$sem=$row->semester;
|
|
||||||
|
|
||||||
if($sem==$row->semester)
|
|
||||||
{
|
|
||||||
echo "<option value='$row->semester' selected>$row->semester</option>";
|
|
||||||
$vorhanden=true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
echo "<option value='$row->semester'>$row->semester</option>";
|
|
||||||
}
|
|
||||||
echo "</SELECT>";
|
|
||||||
if(!$vorhanden) //Wenn $sem einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt
|
|
||||||
$sem=$firstsem;
|
|
||||||
|
|
||||||
//Anzeigen der Liste mit den LV - Informationen
|
|
||||||
?>
|
|
||||||
<br><br>
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table id="myTable" class="tablesorter">
|
|
||||||
<thead>
|
|
||||||
<tr class='liste'>
|
|
||||||
<th></th>
|
|
||||||
<th><?php echo $p->t('global/lehrveranstaltung');?></th>
|
|
||||||
<th><?php echo $p->t('courseInformation/bearbeitetVon');?></th>
|
|
||||||
<th><?php echo $p->t('courseInformation/updateAm');?></th>
|
|
||||||
<th><?php echo $p->t('global/anzeigen');?></th>
|
|
||||||
<th><?php echo $p->t('courseInformation/freigeben');?></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
$qry="SELECT *, tbl_lehrveranstaltung.bezeichnung as bezeichnung,
|
|
||||||
to_char(tbl_lvinfo.updateamum,'DD.MM.YYYY HH24:MI') as amum,
|
|
||||||
tbl_lvinfo.updateamum as updateamum, tbl_lvinfo.updatevon as updatevon
|
|
||||||
FROM
|
|
||||||
campus.tbl_lvinfo
|
|
||||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
|
||||||
WHERE
|
|
||||||
studiengang_kz=".$db->db_add_param($stg)."
|
|
||||||
AND semester=".$db->db_add_param($sem)." AND tbl_lvinfo.aktiv=true
|
|
||||||
AND tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_DE)."
|
|
||||||
ORDER BY tbl_lehrveranstaltung.bezeichnung ASC";
|
|
||||||
|
|
||||||
if(!$result=$db->db_query($qry))
|
|
||||||
die("<center>Fehler bei einer Datenbankabfrage</center>");
|
|
||||||
|
|
||||||
$i=-1;
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
$i++;
|
|
||||||
$qry1="SELECT *,
|
|
||||||
tbl_lehrveranstaltung.bezeichnung as bezeichnung,
|
|
||||||
tbl_lvinfo.updatevon as updatevon
|
|
||||||
FROM
|
|
||||||
campus.tbl_lvinfo
|
|
||||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
|
||||||
WHERE
|
|
||||||
tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_EN)."
|
|
||||||
AND lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id);
|
|
||||||
|
|
||||||
if(!$result1=$db->db_query($qry1))
|
|
||||||
die("<center>Fehler bei einer Datenbankabfrage</center>");
|
|
||||||
|
|
||||||
if(!$row1=$db->db_fetch_object($result1))
|
|
||||||
die("<center>Fehler bei einer Datenbankabfrage</center>");
|
|
||||||
|
|
||||||
$qry2="SELECT vorname, nachname FROM campus.vw_mitarbeiter WHERE uid=".$db->db_add_param($row->updatevon);
|
|
||||||
|
|
||||||
$style='';
|
|
||||||
if ($lv==$row->lehrveranstaltung_id)
|
|
||||||
$style='style="background-color: #AAA; border-top: 1px solid black; border-bottom: 1px solid black"';
|
|
||||||
|
|
||||||
$bearbeitet=$row->updatevon;
|
|
||||||
if($result2=$db->db_query($qry2))
|
|
||||||
if($row2=$db->db_fetch_object($result2))
|
|
||||||
$bearbeitet=$row2->vorname.' '.$row2->nachname;
|
|
||||||
echo "\n";
|
|
||||||
echo "<tr class='liste".($i%2)."'>"."\n";
|
|
||||||
echo "<td $style align='center'><a href='".$_SERVER['PHP_SELF']."?del=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id' onClick='return ask();'>Delete</a></td>"."\n";
|
|
||||||
echo "<td $style>$row->bezeichnung</td>"."\n";
|
|
||||||
//echo "<td align='center'>$row->studiensemester_kurzbz</td>"."\n";
|
|
||||||
echo "<td $style>$bearbeitet</td>"."\n";
|
|
||||||
echo "<td $style>".$row->amum."</td>"."\n";
|
|
||||||
echo "<td $style align='center'><a href='#' onClick='javascript:window.open(\"preview.php?lv=$row->lehrveranstaltung_id&language=de\",\"Preview\",\"width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes\");'>German</a> ";
|
|
||||||
echo "<a href='#' onClick='javascript:window.open(\"preview.php?lv=$row1->lehrveranstaltung_id&language=en\",\"Preview\",\"width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes\");'>English</a></td>"."\n";
|
|
||||||
echo "<td $style align='center'>DE <input type='checkbox' onClick='javascript:window.location.href=\"".$_SERVER['PHP_SELF']."?changestat=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id&lang=de\";' ".($row->genehmigt=='t'?'checked':'').">"."\n";
|
|
||||||
echo "<input type='checkbox' onClick='javascript:window.location.href=\"".$_SERVER['PHP_SELF']."?changestat=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id&lang=en\";' ".($row1->genehmigt=='t'?'checked':'')."> EN</td>"."\n";
|
|
||||||
echo "</tr>";
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,914 +0,0 @@
|
|||||||
<?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 <[email protected]>,
|
|
||||||
* Andreas Oesterreicher <[email protected]>
|
|
||||||
* Rudolf Hangl < [email protected] >
|
|
||||||
* Gerald Simane-Sequens < [email protected] >
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* @author Andres Oesterreicher
|
|
||||||
@date 20.10.2005
|
|
||||||
@brief Formular zum eintragen der ECTS Information auf Deutsch und Englisch
|
|
||||||
Die Informationen werden in der Tabelle tbl_lvinfo gespeichert.
|
|
||||||
|
|
||||||
@edit 08-11-2006 Versionierung entfernt: Studiensemester=WS2007
|
|
||||||
02-01-2007 Umstellung auf die neue DB
|
|
||||||
*/
|
|
||||||
require_once('../../../../config/cis.config.inc.php');
|
|
||||||
require_once('../../../../config/global.config.inc.php');
|
|
||||||
require_once('../../../../include/basis_db.class.php');
|
|
||||||
require_once('../../../../include/functions.inc.php');
|
|
||||||
require_once('../../../../include/studiengang.class.php');
|
|
||||||
require_once('../../../../include/lehrveranstaltung.class.php');
|
|
||||||
require_once('../../../../include/lvinfo.class.php');
|
|
||||||
require_once('../../../../include/studiensemester.class.php');
|
|
||||||
require_once('../../../../include/phrasen.class.php');
|
|
||||||
require_once('../../../../include/safehtml/safehtml.class.php');
|
|
||||||
require_once('../../../../include/benutzerberechtigung.class.php');
|
|
||||||
require_once('../../../../include/lehreinheitmitarbeiter.class.php');
|
|
||||||
require_once('../../../../include/mail.class.php');
|
|
||||||
require_once('../../../../include/benutzer.class.php');
|
|
||||||
|
|
||||||
$user = get_uid();
|
|
||||||
|
|
||||||
$rechte = new benutzerberechtigung();
|
|
||||||
$rechte->getBerechtigungen($user);
|
|
||||||
|
|
||||||
$sprache1 = getSprache();
|
|
||||||
$p=new phrasen($sprache1);
|
|
||||||
|
|
||||||
if (!$db = new basis_db())
|
|
||||||
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
|
|
||||||
|
|
||||||
$output = '';
|
|
||||||
$errormsg = '';
|
|
||||||
$okmsg='';
|
|
||||||
|
|
||||||
$lv = '';
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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=UTF-8">
|
|
||||||
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
|
||||||
<title><?php echo $p->t('courseInformation/ectsInformation')?></title>
|
|
||||||
<style type="text/css">
|
|
||||||
textarea
|
|
||||||
{
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script language="JavaScript" type="text/javascript">
|
|
||||||
function save()
|
|
||||||
{
|
|
||||||
window.document.editFrm.status.value="save";
|
|
||||||
window.document.editFrm.action="<?php echo $_SERVER['PHP_SELF']; ?>";
|
|
||||||
window.document.editFrm.target="_self";
|
|
||||||
window.document.editFrm.submit();
|
|
||||||
}
|
|
||||||
function freigeben()
|
|
||||||
{
|
|
||||||
window.document.editFrm.status.value="freigeben";
|
|
||||||
window.document.editFrm.action="<?php echo $_SERVER['PHP_SELF']; ?>";
|
|
||||||
window.document.editFrm.target="_self";
|
|
||||||
window.document.editFrm.submit();
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body style="padding: 10px">
|
|
||||||
<?php
|
|
||||||
$oe_kurzbz='';
|
|
||||||
function Cut($string)
|
|
||||||
{
|
|
||||||
if(strlen($string)>50)
|
|
||||||
return substr($string,0,47)."...";
|
|
||||||
else
|
|
||||||
return $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($_GET['lvid']))
|
|
||||||
$lv=$_GET['lvid'];
|
|
||||||
|
|
||||||
//Variablenuebernahme
|
|
||||||
if(isset($_POST['lv'])) //LehrveranstaltungsID
|
|
||||||
{
|
|
||||||
$lv = $_POST['lv'];
|
|
||||||
$lv_obj = new lehrveranstaltung();
|
|
||||||
$lv_obj->load($lv);
|
|
||||||
$oe_kurzbz = $lv_obj->oe_kurzbz;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($_GET['lvid']))
|
|
||||||
{
|
|
||||||
$lv_obj = new lehrveranstaltung();
|
|
||||||
$lv_obj->load($lv);
|
|
||||||
|
|
||||||
if(!isset($stg))
|
|
||||||
{
|
|
||||||
$stg = $lv_obj->studiengang_kz;
|
|
||||||
$oe_kurzbz = $lv_obj->oe_kurzbz;
|
|
||||||
}
|
|
||||||
if(!isset($sem))
|
|
||||||
$sem = $lv_obj->semester;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$stg = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($_POST['stg']))
|
|
||||||
{
|
|
||||||
$stg = $_POST['stg'];
|
|
||||||
if(!isset($oe_kurzbz))
|
|
||||||
{
|
|
||||||
$oe = new studiengang();
|
|
||||||
$oe->load($stg);
|
|
||||||
$oe_kurzbz = $oe->oe_kurzbz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!isset($sem) && isset($_POST['sem']))
|
|
||||||
$sem = $_POST['sem'];
|
|
||||||
|
|
||||||
|
|
||||||
if(isset($_POST['changed'])) //Gibt an welches der Auswahlfelder geaendert wurde
|
|
||||||
$changed = $_POST['changed'];
|
|
||||||
|
|
||||||
if(isset($_POST['status']))
|
|
||||||
$status = $_POST['status'];
|
|
||||||
|
|
||||||
// if(isset($_POST["freigeben"])) //Wird auf 'ja' gesetzt wenn gleich freigegebenwerden soll nach dem Speichern
|
|
||||||
// $freigeben = $_POST["freigeben"];
|
|
||||||
|
|
||||||
if(isset($_POST['sprache'])) //Sprache fuer dieses Lehrfach
|
|
||||||
$sprache = $_POST['sprache'];
|
|
||||||
|
|
||||||
// Berechtigungen ueberpruefen
|
|
||||||
$lektor_der_lv = false;
|
|
||||||
$lektor = new lehreinheitmitarbeiter();
|
|
||||||
$lektor_der_lv = $lektor->existsLV($lv, null, $user);
|
|
||||||
|
|
||||||
// Bearbeiten nur moeglich, wenn Lektor der LV und bearbeiten fuer Lektoren aktiviert ist
|
|
||||||
// Oder Berechtigung zum Bearbeiten eingetragen ist
|
|
||||||
$berechtigt = true;
|
|
||||||
if(!(
|
|
||||||
(!defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && $lektor_der_lv)
|
|
||||||
|| (defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT==true && $lektor_der_lv)
|
|
||||||
|| $rechte->isBerechtigt('lehre/lvinfo',$oe_kurzbz)
|
|
||||||
|| $rechte->isBerechtigt('lehre/lvinfo',$stg)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
$berechtigt = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Variablen fuer das Formular
|
|
||||||
$lehrziele_de = (isset($_POST['lehrziele_de'])?$_POST['lehrziele_de']:'');
|
|
||||||
$lehrinhalte_de = (isset($_POST['lehrinhalte_de'])?$_POST['lehrinhalte_de']:'');
|
|
||||||
$voraussetzungen_de = (isset($_POST['voraussetzungen_de'])?$_POST['voraussetzungen_de']:'');
|
|
||||||
$unterlagen_de = (isset($_POST['unterlagen_de'])?$_POST['unterlagen_de']:'');
|
|
||||||
$pruefungsordnung_de = (isset($_POST['pruefungsordnung_de'])?$_POST['pruefungsordnung_de']:'');
|
|
||||||
$anmerkungen_de = (isset($_POST['anmerkungen_de'])?$_POST['anmerkungen_de']:'');
|
|
||||||
$kurzbeschreibung_de = (isset($_POST['kurzbeschreibung_de'])?$_POST['kurzbeschreibung_de']:'');
|
|
||||||
$anwesenheit_de = (isset($_POST['anwesenheit_de'])?$_POST['anwesenheit_de']:'');
|
|
||||||
$freig_de = (isset($_POST['freig_de'])?($_POST['freig_de']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):'');
|
|
||||||
$methodik_de = (isset($_POST['methodik_de'])?$_POST['methodik_de']:'');
|
|
||||||
//$titel_de = (isset($_POST['titel_de'])?$_POST['titel_de']:'');
|
|
||||||
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrziele_de = $parser->parse($lehrziele_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrinhalte_de = $parser->parse($lehrinhalte_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$voraussetzungen_de = $parser->parse($voraussetzungen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$unterlagen_de = $parser->parse($unterlagen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$pruefungsordnung_de = $parser->parse($pruefungsordnung_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anmerkungen_de = $parser->parse($anmerkungen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anwesenheit_de = $parser->parse($anwesenheit_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$freig_de = $parser->parse($freig_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$methodik_de = $parser->parse($methodik_de);
|
|
||||||
|
|
||||||
$lehrziele_en = (isset($_POST['lehrziele_en'])?$_POST['lehrziele_en']:'');
|
|
||||||
$lehrinhalte_en = (isset($_POST['lehrinhalte_en'])?$_POST['lehrinhalte_en']:'');
|
|
||||||
$voraussetzungen_en = (isset($_POST['voraussetzungen_en'])?$_POST['voraussetzungen_en']:'');
|
|
||||||
$unterlagen_en = (isset($_POST['unterlagen_en'])?$_POST['unterlagen_en']:'');
|
|
||||||
$pruefungsordnung_en = (isset($_POST['pruefungsordnung_en'])?$_POST['pruefungsordnung_en']:'');
|
|
||||||
$anmerkungen_en = (isset($_POST['anmerkungen_en'])?$_POST['anmerkungen_en']:'');
|
|
||||||
$kurzbeschreibung_en = (isset($_POST['kurzbeschreibung_en'])?$_POST['kurzbeschreibung_en']:'');
|
|
||||||
$anwesenheit_en = (isset($_POST['anwesenheit_en'])?$_POST['anwesenheit_en']:'');
|
|
||||||
$freig_en = (isset($_POST['freig_en'])?($_POST['freig_en']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):'');
|
|
||||||
$methodik_en = (isset($_POST['methodik_en'])?$_POST['methodik_en']:'');
|
|
||||||
//$titel_en = (isset($_POST['titel_en'])?$_POST['titel_en']:'');
|
|
||||||
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrziele_en = $parser->parse($lehrziele_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrinhalte_en = $parser->parse($lehrinhalte_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$voraussetzungen_en = $parser->parse($voraussetzungen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$unterlagen_en = $parser->parse($unterlagen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$pruefungsordnung_en = $parser->parse($pruefungsordnung_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anmerkungen_en = $parser->parse($anmerkungen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anwesenheit_en = $parser->parse($anwesenheit_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$freig_en = $parser->parse($freig_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$methodik_en = $parser->parse($methodik_en);
|
|
||||||
|
|
||||||
/* WriteLog($qry,$uid)
|
|
||||||
* @brief Schreib die Querys im format: uid - datum - qry ins LogFile
|
|
||||||
* @param $qry Query anweisung
|
|
||||||
* $uid Username
|
|
||||||
* @return true wenn ok false wenn fehler beim oeffnen
|
|
||||||
*/
|
|
||||||
function WriteLog($qry,$uid)
|
|
||||||
{
|
|
||||||
|
|
||||||
if($fp=fopen(LOG_PATH.'lvinfo.log',"a"))
|
|
||||||
{
|
|
||||||
fwrite($fp,"\n");
|
|
||||||
fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry);
|
|
||||||
fclose($fp);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($status))
|
|
||||||
{
|
|
||||||
|
|
||||||
if($status=='save') // Beim druecken auf "Speichern"
|
|
||||||
{
|
|
||||||
if ($berechtigt==false)
|
|
||||||
die($p->t('global/keineBerechtigungFuerDieseSeite'));
|
|
||||||
//Speichert die aenderungen in der Datenbank (de und en)
|
|
||||||
$lv_obj_sav= new lvinfo();
|
|
||||||
$save_error=false;
|
|
||||||
$save_log_error=false;
|
|
||||||
//Deutsch
|
|
||||||
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_de);
|
|
||||||
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_de);
|
|
||||||
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_de);
|
|
||||||
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_de);
|
|
||||||
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_de);
|
|
||||||
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_de);
|
|
||||||
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_de);
|
|
||||||
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_de);
|
|
||||||
|
|
||||||
$lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
|
|
||||||
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
|
|
||||||
$lv_obj_sav->updatevon=$user;
|
|
||||||
$lv_obj_sav->aktiv=true;
|
|
||||||
$lv_obj_sav->sprache=ATTR_SPRACHE_DE;
|
|
||||||
$lv_obj_sav->lehrveranstaltung_id=$lv;
|
|
||||||
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_de);
|
|
||||||
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_de);
|
|
||||||
|
|
||||||
$lv_obj1 = new lvinfo();
|
|
||||||
$vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE);
|
|
||||||
|
|
||||||
if(!$vorhanden)
|
|
||||||
$lv_obj_sav->new=true;
|
|
||||||
else
|
|
||||||
$lv_obj_sav->new=false;
|
|
||||||
|
|
||||||
if(!$lv_obj_sav->save())
|
|
||||||
$save_error=true;
|
|
||||||
else
|
|
||||||
if(!WriteLog($lv_obj_sav->lastqry,$user))
|
|
||||||
$save_log_error=true;
|
|
||||||
|
|
||||||
//Englisch
|
|
||||||
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_en);
|
|
||||||
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_en);
|
|
||||||
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_en);
|
|
||||||
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_en);
|
|
||||||
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_en);
|
|
||||||
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_en);
|
|
||||||
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_en);
|
|
||||||
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_en);
|
|
||||||
$lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
|
|
||||||
$lv_obj_sav->aktiv=true;
|
|
||||||
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
|
|
||||||
$lv_obj_sav->updatevon=$user;
|
|
||||||
$lv_obj_sav->sprache=ATTR_SPRACHE_EN;
|
|
||||||
$lv_obj_sav->lehrveranstaltung_id=$lv;
|
|
||||||
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_en);
|
|
||||||
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_en);
|
|
||||||
|
|
||||||
$lv_obj1 = new lvinfo();
|
|
||||||
$vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN);
|
|
||||||
|
|
||||||
if(!$vorhanden)
|
|
||||||
$lv_obj_sav->new=true;
|
|
||||||
else
|
|
||||||
$lv_obj_sav->new=false;
|
|
||||||
|
|
||||||
if(!$lv_obj_sav->save())
|
|
||||||
$save_error=true;
|
|
||||||
else
|
|
||||||
if(!WriteLog($lv_obj_sav->lastqry,$user))
|
|
||||||
$save_log_error=true;
|
|
||||||
|
|
||||||
if($save_error)
|
|
||||||
$errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern');
|
|
||||||
else
|
|
||||||
$okmsg.= $p->t('global/erfolgreichgespeichert');
|
|
||||||
|
|
||||||
if($save_log_error)
|
|
||||||
$errormsg.= $p->t('courseInformation/fehlerLogFile');
|
|
||||||
}
|
|
||||||
if($status=='freigeben') // Beim druecken auf "Zur Freigabe abschicken"
|
|
||||||
{
|
|
||||||
if ($berechtigt==false)
|
|
||||||
die($p->t('global/keineBerechtigungFuerDieseSeite'));
|
|
||||||
|
|
||||||
//Speichert die aenderungen in der Datenbank (de und en)
|
|
||||||
$lv_obj_sav= new lvinfo();
|
|
||||||
$save_error=false;
|
|
||||||
$save_log_error=false;
|
|
||||||
//Deutsch
|
|
||||||
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_de);
|
|
||||||
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_de);
|
|
||||||
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_de);
|
|
||||||
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_de);
|
|
||||||
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_de);
|
|
||||||
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_de);
|
|
||||||
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_de);
|
|
||||||
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_de);
|
|
||||||
|
|
||||||
$lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
|
|
||||||
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
|
|
||||||
$lv_obj_sav->updatevon=$user;
|
|
||||||
$lv_obj_sav->aktiv=true;
|
|
||||||
$lv_obj_sav->sprache=ATTR_SPRACHE_DE;
|
|
||||||
$lv_obj_sav->lehrveranstaltung_id=$lv;
|
|
||||||
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_de);
|
|
||||||
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_de);
|
|
||||||
|
|
||||||
$lv_obj1 = new lvinfo();
|
|
||||||
$vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE);
|
|
||||||
|
|
||||||
if(!$vorhanden)
|
|
||||||
$lv_obj_sav->new=true;
|
|
||||||
else
|
|
||||||
$lv_obj_sav->new=false;
|
|
||||||
|
|
||||||
if(!$lv_obj_sav->save())
|
|
||||||
$save_error=true;
|
|
||||||
else
|
|
||||||
if(!WriteLog($lv_obj_sav->lastqry,$user))
|
|
||||||
$save_log_error=true;
|
|
||||||
|
|
||||||
//Englisch
|
|
||||||
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_en);
|
|
||||||
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_en);
|
|
||||||
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_en);
|
|
||||||
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_en);
|
|
||||||
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_en);
|
|
||||||
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_en);
|
|
||||||
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_en);
|
|
||||||
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_en);
|
|
||||||
$lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
|
|
||||||
$lv_obj_sav->aktiv=true;
|
|
||||||
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
|
|
||||||
$lv_obj_sav->updatevon=$user;
|
|
||||||
$lv_obj_sav->sprache=ATTR_SPRACHE_EN;
|
|
||||||
$lv_obj_sav->lehrveranstaltung_id=$lv;
|
|
||||||
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_en);
|
|
||||||
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_en);
|
|
||||||
|
|
||||||
$lv_obj1 = new lvinfo();
|
|
||||||
$vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN);
|
|
||||||
|
|
||||||
if(!$vorhanden)
|
|
||||||
$lv_obj_sav->new=true;
|
|
||||||
else
|
|
||||||
$lv_obj_sav->new=false;
|
|
||||||
|
|
||||||
if(!$lv_obj_sav->save())
|
|
||||||
$save_error=true;
|
|
||||||
else
|
|
||||||
if(!WriteLog($lv_obj_sav->lastqry,$user))
|
|
||||||
$save_log_error=true;
|
|
||||||
|
|
||||||
if($save_error)
|
|
||||||
$errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern');
|
|
||||||
else
|
|
||||||
$okmsg.= $p->t('global/erfolgreichgespeichert');
|
|
||||||
|
|
||||||
if($save_log_error)
|
|
||||||
$errormsg.= $p->t('courseInformation/fehlerLogFile');
|
|
||||||
|
|
||||||
//Mail an Studiengangsleiter
|
|
||||||
$studiengangsleiter = new studiengang();
|
|
||||||
$stgleiter = $studiengangsleiter->getLeitung($stg);
|
|
||||||
|
|
||||||
if($stgleiter)
|
|
||||||
{
|
|
||||||
$to='';
|
|
||||||
foreach($stgleiter as $leiter)
|
|
||||||
{
|
|
||||||
if($to!='')
|
|
||||||
{
|
|
||||||
$to.=', '.$leiter.'@'.DOMAIN;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$to.=$leiter.'@'.DOMAIN;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$benutzer = new benutzer();
|
|
||||||
$benutzer->load($user);
|
|
||||||
|
|
||||||
$bezeichnung = new lehrveranstaltung();
|
|
||||||
$bezeichnung->load($lv);
|
|
||||||
|
|
||||||
$message = $p->t('courseInformation/diesIstEineAutomatischeMail').".\n".
|
|
||||||
$p->t('courseInformation/lvinfoWurdeUeberarbeitet',array($benutzer->nachname.' '.$benutzer->vorname,$bezeichnung->bezeichnung)).":\n";
|
|
||||||
|
|
||||||
$message.="\n".$p->t('courseInformation/sieKoennenDieseUnterFolgenderAdresseFreigeben').":\n".
|
|
||||||
APP_ROOT."cis/private/lehre/ects/freigabe.php?stg=".$stg."&sem=".$sem."&lv=".$lv;
|
|
||||||
|
|
||||||
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('courseInformation/freigabeLvinfo'), $message);
|
|
||||||
if($mail->send())
|
|
||||||
{
|
|
||||||
$okmsg.="<br><span style='color:green;'>".$p->t('courseInformation/freigabemailWurdeVersandt',array($to))."</span>";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$okmsg.="<br><span class='error'>".$p->t('courseInformation/fehlerBeimSendenAufgetreten',array($to))."!</span>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$okmsg.="<br><span class='error'>".$p->t('courseInformation/konnteKeinFreigabemailVersendetWerden')."</span>";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$output .= "\n";
|
|
||||||
$output .= "<table class='tabcontent'><tr>";
|
|
||||||
$output .= "<td width='85%'>";
|
|
||||||
$output .= "<form action='".$_SERVER['PHP_SELF']."' name='auswahlFrm' method='POST'>";
|
|
||||||
$stg_obj = new studiengang();
|
|
||||||
|
|
||||||
//Anzeigen des DropDown Menues mit Stg
|
|
||||||
if($stg_obj->getAll('typ, kurzbz'))
|
|
||||||
{
|
|
||||||
$output .= $p->t('global/studiengang')." <SELECT name='stg' onChange='javascript:window.document.auswahlFrm.changed.value=\"stg\";window.document.auswahlFrm.submit();'>";
|
|
||||||
|
|
||||||
$stgselected=false;
|
|
||||||
unset($firststg);
|
|
||||||
//DropDown Menue mit den Stg fuellen
|
|
||||||
foreach($stg_obj->result as $elem)
|
|
||||||
{
|
|
||||||
$lv_help_obj = new lehrveranstaltung();
|
|
||||||
$lv_help_obj->load_lva($elem->studiengang_kz, null,null,true);
|
|
||||||
|
|
||||||
if(count($lv_help_obj->lehrveranstaltungen)>0)
|
|
||||||
{
|
|
||||||
if(!isset($firststg))
|
|
||||||
$firststg = $elem->studiengang_kz;
|
|
||||||
|
|
||||||
if(!isset($stg))
|
|
||||||
$stg=$elem->studiengang_kz;
|
|
||||||
|
|
||||||
if($elem->studiengang_kz == $stg)
|
|
||||||
{
|
|
||||||
$output .= "<option value='$elem->studiengang_kz' selected>$elem->kuerzel</option>";
|
|
||||||
$stgselected=true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$output .= "<option value='$elem->studiengang_kz'>$elem->kuerzel</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$output .= "</SELECT>";
|
|
||||||
if(!$stgselected)
|
|
||||||
$stg=$firststg;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$errormsg .= "$stg_obj->errormsg";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Anzeigen des DropDown Menues mit Semester
|
|
||||||
if(isset($changed) && $changed=='stg')
|
|
||||||
{
|
|
||||||
unset($sem);
|
|
||||||
unset($lvid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($stg_obj->load($stg))
|
|
||||||
{
|
|
||||||
$output .= $p->t('global/semester')." <SELECT name='sem' onChange='javascript:window.document.auswahlFrm.changed.value=\"sem\";window.document.auswahlFrm.submit();'>";
|
|
||||||
|
|
||||||
unset($firstsem);
|
|
||||||
$semselected=false;
|
|
||||||
|
|
||||||
for($i=1;$i<=$stg_obj->max_semester;$i++)
|
|
||||||
{
|
|
||||||
$lv_help_obj = new lehrveranstaltung();
|
|
||||||
$lv_help_obj->load_lva($stg, $i, null,true);
|
|
||||||
|
|
||||||
if(count($lv_help_obj->lehrveranstaltungen)>0)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(!isset($firstsem))
|
|
||||||
$firstsem=$i;
|
|
||||||
|
|
||||||
if(!isset($sem) || (isset($sem) && $sem>$stg_obj->max_semester))
|
|
||||||
{
|
|
||||||
$sem = $i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($i == $sem)
|
|
||||||
{
|
|
||||||
$output .= "<option value='$i' selected>$i</option>";
|
|
||||||
$semselected=true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$output .= "<option value='$i'>$i</option>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$output .= "</SELECT>";
|
|
||||||
|
|
||||||
if(!$semselected)
|
|
||||||
$sem=$firstsem;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$errormsg .= "$stg_obj->errormsg";
|
|
||||||
|
|
||||||
//Anzeigen des DropDown Menues mit Lehrveranstaltungen
|
|
||||||
$lv_obj = new lehrveranstaltung();
|
|
||||||
if($lv_obj->load_lva($stg,$sem,null,true,null,'orgform_kurzbz,semester, bezeichnung'))
|
|
||||||
{
|
|
||||||
$output .= $p->t('global/lehrveranstaltung')." <SELECT name='lv' onChange='javascript:window.document.auswahlFrm.changed.value=\"lv\";window.document.auswahlFrm.submit();'>";
|
|
||||||
$vorhanden=false;
|
|
||||||
unset($firstlv);
|
|
||||||
|
|
||||||
foreach($lv_obj->lehrveranstaltungen as $erg)
|
|
||||||
{
|
|
||||||
if(!isset($lv) || (isset($changed) && $changed=='sem') || (isset($changed) && $changed=='stg'))
|
|
||||||
{
|
|
||||||
$lv = $erg->lehrveranstaltung_id;
|
|
||||||
$changed='';
|
|
||||||
}
|
|
||||||
if(!isset($firstlv))
|
|
||||||
$firstlv=$erg->lehrveranstaltung_id;
|
|
||||||
|
|
||||||
if($lv == $erg->lehrveranstaltung_id)
|
|
||||||
{
|
|
||||||
$output .= "<option value='$erg->lehrveranstaltung_id' selected>".($erg->orgform_kurzbz!=''?$erg->orgform_kurzbz." - ":"").Cut($erg->bezeichnung)."</option>";
|
|
||||||
$vorhanden=true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$output .= "<option value='$erg->lehrveranstaltung_id'>".($erg->orgform_kurzbz!=''?$erg->orgform_kurzbz." - ":"").Cut($erg->bezeichnung)."</option>";
|
|
||||||
}
|
|
||||||
$output .= "</SELECT>";
|
|
||||||
if(!$vorhanden)
|
|
||||||
$lv=$firstlv;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$errormsg .= "$lv_obj->errormsg";
|
|
||||||
}
|
|
||||||
|
|
||||||
$output .= "<input type='hidden' name='changed' value=''>";
|
|
||||||
$output .= "<input type='Submit' value='".$p->t('global/anzeigen')."'>";
|
|
||||||
$output .= "</form>";
|
|
||||||
$output .= "</td>";
|
|
||||||
|
|
||||||
$output .= "<td>";
|
|
||||||
//Menue ausgeben
|
|
||||||
$output .= "\n";
|
|
||||||
$output .= "<ul>";
|
|
||||||
$output .= "<li> <a class='Item' href='index.php?stg=$stg&sem=$sem&lvid=$lv'><font size='3'>".$p->t('global/bearbeiten')."</font></a></li>";
|
|
||||||
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
|
|
||||||
$output .= "<li> <a class='Item' href='freigabe.php?stg=$stg&sem=$sem&lv=$lv'><font size='3'>".$p->t('courseInformation/freigabe')."</font></a></li>";
|
|
||||||
$output .= "<li> <a class='Item' href='beispiele.php'><font size='3'>".$p->t('global/beispiele')."</font></a></li>";
|
|
||||||
//$output .= "<li> <a class='Item' href='terminologie.php'><font size='3'>".$p->t('courseInformation/terminologie')."</font></a></li>";
|
|
||||||
$output .= "</ul>";
|
|
||||||
$output .= "</td></tr></table>";
|
|
||||||
|
|
||||||
$stg_obj->load($stg);
|
|
||||||
|
|
||||||
//Kopfzeile hinausschreiben und $output ausgeben
|
|
||||||
echo "<h1> ".$p->t('courseInformation/lvInfoSemester',array($stg_obj->kuerzel, $sem))."</h1>";
|
|
||||||
echo $output;
|
|
||||||
|
|
||||||
if ($berechtigt==false)
|
|
||||||
die($p->t('global/keineBerechtigungFuerDieseSeite'));
|
|
||||||
|
|
||||||
if(isset($lv) && isset($stg) && isset($sem)) // Wenn oben alles Ausgewaehlt wurde
|
|
||||||
{
|
|
||||||
//Anzeige des Formulares
|
|
||||||
$stg_obj1 = new studiengang();
|
|
||||||
$stg_obj1->load($stg);
|
|
||||||
|
|
||||||
if(isset($errormsg) && $okmsg!='')
|
|
||||||
echo '<span class="error">'.$errormsg.'</span><br>';
|
|
||||||
if(isset($okmsg) && $okmsg!='')
|
|
||||||
echo '<span class="ok">'.$okmsg.'</span><br>';
|
|
||||||
|
|
||||||
$lv_obj_en = new lvinfo();
|
|
||||||
$lv_obj_de = new lvinfo();
|
|
||||||
|
|
||||||
if($lv_obj_en->load($lv, ATTR_SPRACHE_EN))
|
|
||||||
$lv_en=$lv_obj_en;
|
|
||||||
|
|
||||||
if($lv_obj_de->load($lv, ATTR_SPRACHE_DE))
|
|
||||||
$lv_de=$lv_obj_de;
|
|
||||||
|
|
||||||
if(!isset($_POST['lehrziele_de']) && isset($lv_de))
|
|
||||||
{
|
|
||||||
$lehrziele_de = $lv_de->lehrziele;
|
|
||||||
$lehrinhalte_de = $lv_de->lehrinhalte;
|
|
||||||
$voraussetzungen_de = $lv_de->voraussetzungen;
|
|
||||||
$unterlagen_de = $lv_de->unterlagen;
|
|
||||||
$pruefungsordnung_de = $lv_de->pruefungsordnung;
|
|
||||||
$anmerkungen_de = $lv_de->anmerkungen;
|
|
||||||
$kurzbeschreibung_de = $lv_de->kurzbeschreibung;
|
|
||||||
$anwesenheit_de = $lv_de->anwesenheit;
|
|
||||||
$freig_de = $lv_de->genehmigt;
|
|
||||||
$titel_de = $lv_de->titel;
|
|
||||||
$methodik_de = $lv_de->methodik;
|
|
||||||
|
|
||||||
//Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden
|
|
||||||
if (substr_count($lehrziele_de, 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage')==0)
|
|
||||||
$lehrziele_de = 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage, '.$lehrziele_de;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!isset($_POST['lehrziele_en']) && isset($lv_en))
|
|
||||||
{
|
|
||||||
$lehrziele_en = $lv_en->lehrziele;
|
|
||||||
$lehrinhalte_en = $lv_en->lehrinhalte;
|
|
||||||
$voraussetzungen_en = $lv_en->voraussetzungen;
|
|
||||||
$unterlagen_en = $lv_en->unterlagen;
|
|
||||||
$pruefungsordnung_en = $lv_en->pruefungsordnung;
|
|
||||||
$anmerkungen_en = $lv_en->anmerkungen;
|
|
||||||
$kurzbeschreibung_en = $lv_en->kurzbeschreibung;
|
|
||||||
$anwesenheit_en = $lv_en->anwesenheit;
|
|
||||||
$freig_en = $lv_en->genehmigt;
|
|
||||||
$titel_en = $lv_en->titel;
|
|
||||||
$methodik_en = $lv_en->methodik;
|
|
||||||
|
|
||||||
//Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden
|
|
||||||
if (substr_count($lehrziele_en, 'After passing this course successfully students are able to')==0)
|
|
||||||
$lehrziele_en = 'After passing this course successfully students are able to '.$lehrziele_en;
|
|
||||||
}
|
|
||||||
|
|
||||||
$lv_obj = new lehrveranstaltung();
|
|
||||||
$lv_obj->load($lv);
|
|
||||||
echo "<Form name='editFrm' action='".$_SERVER['PHP_SELF']."' method='POST'>";
|
|
||||||
|
|
||||||
echo "<table>";
|
|
||||||
echo "<tr><td><b>".$p->t('courseInformation/ectsCredits')."</b></td><td width='100%'>".($lv_obj->ects!=''?number_format($lv_obj->ects,1,'.',''):'')."</td></tr>";
|
|
||||||
|
|
||||||
$stsem_obj = new studiensemester();
|
|
||||||
$stsem = $stsem_obj->getaktorNext();
|
|
||||||
//Namen der Lehrenden Auslesen
|
|
||||||
$qry = "SELECT
|
|
||||||
*
|
|
||||||
FROM
|
|
||||||
campus.vw_mitarbeiter, lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit
|
|
||||||
WHERE
|
|
||||||
lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)."
|
|
||||||
AND tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
|
|
||||||
AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." ORDER BY ende DESC LIMIT 1)
|
|
||||||
AND mitarbeiter_uid=uid";
|
|
||||||
|
|
||||||
echo "<tr><td class='tdvertical' nowrap><b>".$p->t('courseInformation/lehrendeLautLehrauftrag')."</b></td><td nowrap>";
|
|
||||||
$helparray = array();
|
|
||||||
if($result=$db->db_query($qry))
|
|
||||||
{
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
if(!in_array("$row->titelpre $row->vorname $row->nachname $row->titelpost",$helparray))//damit ein Name nicht doppelt vorkommt
|
|
||||||
$helparray[] = "$row->titelpre $row->vorname $row->nachname $row->titelpost";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($helparray as $elem)
|
|
||||||
echo $elem."<br>";
|
|
||||||
echo "</td></tr>";
|
|
||||||
|
|
||||||
//FB Leiter auslesen
|
|
||||||
$qry = " SELECT
|
|
||||||
distinct titelpre, titelpost, vorname, nachname
|
|
||||||
FROM
|
|
||||||
public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid)
|
|
||||||
WHERE
|
|
||||||
funktion_kurzbz='Leitung' AND
|
|
||||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
|
|
||||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
|
|
||||||
oe_kurzbz in (SELECT distinct lehrfach.oe_kurzbz
|
|
||||||
FROM
|
|
||||||
lehre.tbl_lehreinheit
|
|
||||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
|
||||||
WHERE
|
|
||||||
tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
|
|
||||||
studiensemester_kurzbz=(SELECT studiensemester_kurzbz
|
|
||||||
FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
|
||||||
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)."
|
|
||||||
ORDER BY ende DESC LIMIT 1
|
|
||||||
)
|
|
||||||
)";
|
|
||||||
|
|
||||||
echo "<tr><td class='tdvertical'><b>".$p->t('courseInformation/institutsleiter')."</b></td><td>";
|
|
||||||
if($result=$db->db_query($qry))
|
|
||||||
{
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
echo "$row->titelpre $row->vorname $row->nachname $row->titelpost<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</td></tr>";
|
|
||||||
|
|
||||||
//FB Koordinator auslesen
|
|
||||||
//$qry = "SELECT distinct vorname, nachname FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in (SELECT fachbereich_kurzbz FROM lehre.tbl_lehrfach, lehre.tbl_lehreinheit WHERE lehrveranstaltung_id='$lv' AND tbl_lehrfach.lehrfach_id=tbl_lehreinheit.lehrfach_id AND tbl_lehreinheit.studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id='$lv' ORDER BY ende DESC LIMIT 1))";
|
|
||||||
$qry = "SELECT
|
|
||||||
distinct titelpre, titelpost, vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
|
|
||||||
FROM
|
|
||||||
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich
|
|
||||||
WHERE
|
|
||||||
tbl_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
|
|
||||||
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
|
|
||||||
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
|
|
||||||
tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND
|
|
||||||
tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND
|
|
||||||
tbl_benutzerfunktion.funktion_kurzbz='fbk' AND
|
|
||||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
|
|
||||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
|
|
||||||
vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND
|
|
||||||
tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)";
|
|
||||||
|
|
||||||
echo "<tr><td class='tdvertical'><b>".$p->t('courseInformation/institutskoordinator')."</b></td><td>";
|
|
||||||
if($result=$db->db_query($qry))
|
|
||||||
{
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
echo "$row->titelpre $row->vorname $row->nachname $row->titelpost<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</td></tr>";
|
|
||||||
|
|
||||||
//echo "</table>";
|
|
||||||
echo "<tr><td>";
|
|
||||||
|
|
||||||
|
|
||||||
echo "<input type='hidden' name='stg' value='$stg'>";
|
|
||||||
echo "<input type='hidden' name='sem' value='$sem'>";
|
|
||||||
echo "<input type='hidden' name='lv' value='$lv'>";
|
|
||||||
echo "<input type='hidden' name='status' value=''>";
|
|
||||||
|
|
||||||
echo "</td></tr>";
|
|
||||||
//Sprache ausgeben
|
|
||||||
echo "<tr><td><b>".$p->t('courseInformation/unterrichtssprache')."</b></td><td>$lv_obj->sprache";
|
|
||||||
echo "</td></tr>";
|
|
||||||
|
|
||||||
//Anz. Incoming ausgeben
|
|
||||||
|
|
||||||
if ($lv_obj->incoming > -1)
|
|
||||||
{
|
|
||||||
echo "<tr><td valign='top'><b>".$p->t('courseInformation/incomingplaetze')."</b></td><td valign='top'>$lv_obj->incoming";
|
|
||||||
}
|
|
||||||
else echo "<tr><td valign='top'><b>".$p->t('courseInformation/incomingplaetze')."</b></td><td>0";
|
|
||||||
echo "</td></tr><tr><td colspan='2'><font style='font-size:smaller'>".$p->t('courseInformation/beiFehlernInDenFixfeldern',array($stg_obj1->email))."</font></td></tr>";
|
|
||||||
echo "<tr><td align='left' colspan='2'><br/><br/><font style='color:black'>".$p->t('courseInformation/pflichtfelderWerdenAufDerExternenSeiteAngezeigt',array($stg_obj1->email))."</font>.</td></tr>";
|
|
||||||
//echo "<tr><td align='left' colspan='4'><font style='color:black'>".$p->t('courseInformation/fallsSieAufzaehlungslistenVerwenden',array($stg_obj1->email))."</font></td></tr>"; --> Es sollten keine HTML-Tags gespeichert werden koennen. Hier muss eine andere Loesung gefunde werden.
|
|
||||||
echo "</table><br><br>";
|
|
||||||
|
|
||||||
//Eingabefelder anzeigen
|
|
||||||
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
|
|
||||||
|
|
||||||
|
|
||||||
echo '<tr>
|
|
||||||
<td colspan="2" align="center"><h2>DEUTSCH</h2></td>
|
|
||||||
<td rowspan="14" width="20"> </td>
|
|
||||||
<td colspan="2" align="center"><h2>ENGLISH</h2></td>
|
|
||||||
</tr>';
|
|
||||||
echo '<tr>
|
|
||||||
<td colspan="2" align="center">'.($lv_de->genehmigt==false?'<span style="color:red">'.$p->t('courseInformation/nochNichtFreigegeben').'</span>':$p->t('courseInformation/freigegeben')).'</td>
|
|
||||||
<td colspan="2" align="center">'.($lv_en->genehmigt==false?'<span style="color:red">'.$p->t('courseInformation/nochNichtFreigegeben').'</span>':$p->t('courseInformation/freigegeben')).'</td>
|
|
||||||
</tr>';
|
|
||||||
echo '<tr>
|
|
||||||
<td colspan="5"> </td>
|
|
||||||
</tr>';
|
|
||||||
|
|
||||||
echo '
|
|
||||||
<tr class="liste0">
|
|
||||||
<td><i>'.$p->t('lvinfo/kurzbeschreibung').' <font style="color:black">(Pflichtfeld)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="kurzbeschreibung_de">'. (isset($kurzbeschreibung_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$kurzbeschreibung_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/kurzbeschreibungEN').' <font style="color:black">(Required)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="kurzbeschreibung_en">'. (isset($kurzbeschreibung_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$kurzbeschreibung_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td><i>'.$p->t('lvinfo/methodik').' <font style="color:black">(Pflichtfeld)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="methodik_de">'. (isset($methodik_de)?stripslashes(mb_eregi_replace("<br>","\r\n", $methodik_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/methodikEN').' <font style="color:black">(Required)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="methodik_en">'. (isset($methodik_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$methodik_en)):'').'</textarea></td>
|
|
||||||
</tr>';
|
|
||||||
echo '<tr class="liste0">
|
|
||||||
<td><i>'.$p->t('lvinfo/lernergebnisse').' <font style="color:black">(Pflichtfeld)</font></i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="lehrziele_de">'. (isset($lehrziele_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrziele_de)):'Nach erfolgreichem Abschluss sind die Studierenden in der Lage, ').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/lernergebnisseEN').' <font style="color:black">(Required)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="lehrziele_en">'. (isset($lehrziele_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrziele_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td><i>'.$p->t('lvinfo/lehrinhalte').' <font style="color:black">(Pflichtfeld)</font></i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="lehrinhalte_de">'. (isset($lehrinhalte_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrinhalte_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/lehrinhalteEN').' <font style="color:black">(Required)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="lehrinhalte_en">'. (isset($lehrinhalte_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrinhalte_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td><i>'.$p->t('lvinfo/vorkenntnisse').' <font style="color:black">(Pflichtfeld)</font></i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="voraussetzungen_de">'. (isset($voraussetzungen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$voraussetzungen_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/vorkenntnisseEN').' <font style="color:black">(Required)</font></i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="voraussetzungen_en">'. (isset($voraussetzungen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$voraussetzungen_en)):'').'</textarea></td>
|
|
||||||
</tr>';
|
|
||||||
echo '<tr class="liste1">
|
|
||||||
<td><i>'.$p->t('lvinfo/literatur').'</i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="unterlagen_de">'. (isset($unterlagen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$unterlagen_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/literaturEN').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="unterlagen_en">'. (isset($unterlagen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$unterlagen_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td><i>'.$p->t('lvinfo/leistungsbeurteilung').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="pruefungsordnung_de">'. (isset($pruefungsordnung_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$pruefungsordnung_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/leistungsbeurteilungEN').'</i> </td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="pruefungsordnung_en">'. (isset($pruefungsordnung_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$pruefungsordnung_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td><i>'.$p->t('lvinfo/anwesenheit').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="anwesenheit_de">'. (isset($anwesenheit_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$anwesenheit_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/anwesenheitEN').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="anwesenheit_en">'. (isset($anwesenheit_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$anwesenheit_en)):'').'</textarea></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td><i>'.$p->t('lvinfo/anmerkungen').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="anmerkungen_de">'. (isset($anmerkungen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$anmerkungen_de)):'').'</textarea></td>
|
|
||||||
<td><i>'.$p->t('lvinfo/anmerkungenEN').'</i></td>
|
|
||||||
<td align="right"><textarea rows="5" cols="50" name="anmerkungen_en">'. (isset($anmerkungen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$anmerkungen_en)):'').'</textarea></td>
|
|
||||||
</tr>';
|
|
||||||
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
|
|
||||||
echo ' <tr class="liste0">
|
|
||||||
<td align=center colspan=2><br><input type="checkbox" name="freig_de" '. (isset($freig_de) && ($freig_de==true || $freig_de=='1')?'checked':'').'/><i>'.$p->t('courseInformation/deutschFreigeben').'</i><br><br></td>
|
|
||||||
<td align=center colspan=2><input type="checkbox" name="freig_en" '. (isset($freig_en) && ($freig_en==true || $freig_en=='1')?'checked':'').'/><i>'.$p->t('courseInformation/englischFreigeben').'</i> </td>
|
|
||||||
<td ></td>
|
|
||||||
</tr>';
|
|
||||||
|
|
||||||
echo "</table><br>";
|
|
||||||
echo "<div align='left'>";
|
|
||||||
echo "<input type='button' value='".$p->t('global/speichern')."' onClick='save();'>";
|
|
||||||
echo "<input type='button' value='".$p->t('courseInformation/voransicht')."' onClick='javascript:window.document.editFrm.action=\"preview.php\";window.document.editFrm.target=\"_blank\";window.document.editFrm.submit();'>";
|
|
||||||
echo "<br><br>";
|
|
||||||
if (!$berechtigt)
|
|
||||||
echo "<input type='button' value='".$p->t('courseInformation/zurFreigabeAbschicken')."' onClick='freigeben();'>";
|
|
||||||
echo "</div>";
|
|
||||||
echo "</form>";
|
|
||||||
echo "<br><br><br><br><br><br><br><br><br><br><br><br>";
|
|
||||||
if(isset($error) && $error!='')
|
|
||||||
echo $error;
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<td></tr></table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,746 +0,0 @@
|
|||||||
<?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 <[email protected]>,
|
|
||||||
* Andreas Oesterreicher <[email protected]>
|
|
||||||
* Rudolf Hangl < [email protected] >
|
|
||||||
* Gerald Simane-Sequens < [email protected] >
|
|
||||||
*/
|
|
||||||
/* @date 27.10.2005
|
|
||||||
@brief Zeigt die Daten aus der tbl_lvinfo an
|
|
||||||
|
|
||||||
@edit 08-11-2006 Versionierung wurde entfernt. Alle eintraege werden jetzt im WS2007
|
|
||||||
abgespeichert
|
|
||||||
03-02-2006 Anpassung an die neue Datenbank
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('../../../../config/cis.config.inc.php');
|
|
||||||
require_once('../../../../config/global.config.inc.php');
|
|
||||||
require_once('../../../../include/studiensemester.class.php');
|
|
||||||
require_once('../../../../include/lehrveranstaltung.class.php');
|
|
||||||
require_once('../../../../include/lvinfo.class.php');
|
|
||||||
require_once('../../../../include/studiengang.class.php');
|
|
||||||
require_once('../../../../include/safehtml/safehtml.class.php');
|
|
||||||
require_once '../../../../include/phrasen.class.php';
|
|
||||||
require_once '../../../../include/lehreinheit.class.php';
|
|
||||||
require_once '../../../../include/lehrstunde.class.php';
|
|
||||||
require_once '../../../../include/datum.class.php';
|
|
||||||
require_once '../../../../include/stunde.class.php';
|
|
||||||
|
|
||||||
if (!$db = new basis_db())
|
|
||||||
die('Fehler beim Herstellen der Datenbankverbindung');
|
|
||||||
|
|
||||||
$phrasen = new phrasen();
|
|
||||||
|
|
||||||
function cmp($a, $b)
|
|
||||||
{
|
|
||||||
if($a->datum == $b->datum && $a->stunde == $b->stunde)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if($a->datum == $b->datum && $a->stunde < $b->stunde)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
else if($a->datum == $b->datum && $a->stunde >= $b->stunde)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return ($a->datum < $b->datum) ? -1 : 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLastStundeByDatum(Array $array, $filterDatum)
|
|
||||||
{
|
|
||||||
$callback = function($item) use ($filterDatum)
|
|
||||||
{
|
|
||||||
return ($filterDatum == $item->datum);
|
|
||||||
};
|
|
||||||
return array_filter($array,$callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
$titel_de = '';
|
|
||||||
$methodik_de = '';
|
|
||||||
$kurzbeschreibung_de = '';
|
|
||||||
$anwesenheit_de = '';
|
|
||||||
$lehrziele_de = '';
|
|
||||||
$lehrinhalte_de = '';
|
|
||||||
$voraussetzungen_de = '';
|
|
||||||
$unterlagen_de = '';
|
|
||||||
$pruefungsordnung_de = '';
|
|
||||||
$anmerkungen_de = '';
|
|
||||||
|
|
||||||
$titel_en = '';
|
|
||||||
$methodik_en = '';
|
|
||||||
$kurzbeschreibung_en = '';
|
|
||||||
$anwesenheit_en = '';
|
|
||||||
$lehrziele_en = '';
|
|
||||||
$lehrinhalte_en = '';
|
|
||||||
$voraussetzungen_en = '';
|
|
||||||
$unterlagen_en = '';
|
|
||||||
$pruefungsordnung_en = '';
|
|
||||||
$anmerkungen_en = '';
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>ECTS - European Course Credit Transfer Systems (ECTS)</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
||||||
<link href="../../../../skin/style.css.php" type="text/css" rel="stylesheet" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<table align="right">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<div class="home_logo"></div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br><br><br><br><br><br>
|
|
||||||
<table class="tabcontent" id="inhalt">
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><div align="center">
|
|
||||||
|
|
||||||
<?php
|
|
||||||
if(isset($_REQUEST['lv']))
|
|
||||||
$lv = $_REQUEST['lv'];
|
|
||||||
$language='';
|
|
||||||
|
|
||||||
if(isset($_GET['language']))
|
|
||||||
$language=$_GET['language'];
|
|
||||||
|
|
||||||
if(isset($_POST['language']))
|
|
||||||
$language=$_POST['language'];
|
|
||||||
|
|
||||||
if(!isset($language) || ($language!='de' && $language!='en'))
|
|
||||||
{
|
|
||||||
echo "<li><a class='Item' href=\"#de\">Deutsche Version</a></li><br>";
|
|
||||||
echo "<li><a class='Item' href=\"#en\">Englische Version</a></li><br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($_POST['methodik_de'])) //Alle Variablen werden per POST Methode uebergeben (zB bei Voransicht)
|
|
||||||
{
|
|
||||||
//$sprache = stripslashes($_POST['sprache']);
|
|
||||||
//$semstunden = stripslashes($_POST["semstunden"]);
|
|
||||||
$lehrveranstaltung_id = $_POST['lv'];
|
|
||||||
|
|
||||||
// german content variables
|
|
||||||
//$titel_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['titel_de']));
|
|
||||||
$methodik_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['methodik_de']));
|
|
||||||
$kurzbeschreibung_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['kurzbeschreibung_de']));
|
|
||||||
$anwesenheit_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anwesenheit_de']));
|
|
||||||
$lehrziele_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrziele_de']));
|
|
||||||
$lehrinhalte_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrinhalte_de']));
|
|
||||||
$voraussetzungen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['voraussetzungen_de']));
|
|
||||||
$unterlagen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['unterlagen_de']));
|
|
||||||
$pruefungsordnung_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['pruefungsordnung_de']));
|
|
||||||
$anmerkungen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anmerkungen_de']));
|
|
||||||
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrziele_de = $parser->parse($lehrziele_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrinhalte_de = $parser->parse($lehrinhalte_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$voraussetzungen_de = $parser->parse($voraussetzungen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$unterlagen_de = $parser->parse($unterlagen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$pruefungsordnung_de = $parser->parse($pruefungsordnung_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anmerkungen_de = $parser->parse($anmerkungen_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anwesenheit_de = $parser->parse($anwesenheit_de);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$methodik_de = $parser->parse($methodik_de);
|
|
||||||
|
|
||||||
// Englisch content variables
|
|
||||||
//$titel_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['titel_en']));
|
|
||||||
$methodik_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['methodik_en']));
|
|
||||||
$kurzbeschreibung_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['kurzbeschreibung_en']));
|
|
||||||
$anwesenheit_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anwesenheit_en']));
|
|
||||||
$lehrziele_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrziele_en']));
|
|
||||||
$lehrinhalte_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrinhalte_en']));
|
|
||||||
$voraussetzungen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['voraussetzungen_en']));
|
|
||||||
$unterlagen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['unterlagen_en']));
|
|
||||||
$pruefungsordnung_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['pruefungsordnung_en']));
|
|
||||||
$anmerkungen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anmerkungen_en']));
|
|
||||||
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrziele_en = $parser->parse($lehrziele_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$lehrinhalte_en = $parser->parse($lehrinhalte_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$voraussetzungen_en = $parser->parse($voraussetzungen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$unterlagen_en = $parser->parse($unterlagen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$pruefungsordnung_en = $parser->parse($pruefungsordnung_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anmerkungen_en = $parser->parse($anmerkungen_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$anwesenheit_en = $parser->parse($anwesenheit_en);
|
|
||||||
$parser = new SafeHTML();
|
|
||||||
$methodik_en = $parser->parse($methodik_en);
|
|
||||||
}
|
|
||||||
elseif(isset($_GET['lv'])) //LV Id wird uebergeben (zB bei Ansicht fuer alle von lesson.php)
|
|
||||||
{
|
|
||||||
$lehrveranstaltung_id=$_GET['lv'];
|
|
||||||
|
|
||||||
$stsemobj = new studiensemester();
|
|
||||||
$stsem = $stsemobj->getaktorNext();
|
|
||||||
|
|
||||||
$lvinfo_obj = new lvinfo();
|
|
||||||
if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_DE))
|
|
||||||
{
|
|
||||||
// german content variables
|
|
||||||
//$titel_de = $lvinfo_obj->titel;
|
|
||||||
$methodik_de = $lvinfo_obj->methodik;
|
|
||||||
$kurzbeschreibung_de = $lvinfo_obj->kurzbeschreibung;
|
|
||||||
$anwesenheit_de = $lvinfo_obj->anwesenheit;
|
|
||||||
$lehrziele_de = $lvinfo_obj->lehrziele;
|
|
||||||
$lehrinhalte_de = $lvinfo_obj->lehrinhalte;
|
|
||||||
$voraussetzungen_de = $lvinfo_obj->voraussetzungen;
|
|
||||||
$unterlagen_de = $lvinfo_obj->unterlagen;
|
|
||||||
$pruefungsordnung_de = $lvinfo_obj->pruefungsordnung;
|
|
||||||
$anmerkungen_de = $lvinfo_obj->anmerkungen;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_EN))
|
|
||||||
{
|
|
||||||
// Englisch content variables
|
|
||||||
//$titel_en = $lvinfo_obj->titel;
|
|
||||||
$methodik_en = $lvinfo_obj->methodik;
|
|
||||||
$kurzbeschreibung_en = $lvinfo_obj->kurzbeschreibung;
|
|
||||||
$anwesenheit_en = $lvinfo_obj->anwesenheit;
|
|
||||||
$lehrziele_en = $lvinfo_obj->lehrziele;
|
|
||||||
$lehrinhalte_en = $lvinfo_obj->lehrinhalte;
|
|
||||||
$voraussetzungen_en = $lvinfo_obj->voraussetzungen;
|
|
||||||
$unterlagen_en = $lvinfo_obj->unterlagen;
|
|
||||||
$pruefungsordnung_en = $lvinfo_obj->pruefungsordnung;
|
|
||||||
$anmerkungen_en = $lvinfo_obj->anmerkungen;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
die('Fehler bei der Parameteruebergabe');
|
|
||||||
|
|
||||||
$stsemobj = new studiensemester();
|
|
||||||
$stsem = $stsemobj->getaktorNext();
|
|
||||||
|
|
||||||
$lv_obj = new lehrveranstaltung();
|
|
||||||
if(!$lv_obj->load($lehrveranstaltung_id))
|
|
||||||
die($lv_obj->errormsg);
|
|
||||||
|
|
||||||
$ects_points = $lv_obj->ects;
|
|
||||||
$stg = $lv_obj->studiengang_kz;
|
|
||||||
$sem = $lv_obj->semester;
|
|
||||||
$lang = $lv_obj->sprache;
|
|
||||||
$titel_de = $lv_obj->bezeichnung;
|
|
||||||
$titel_en = $lv_obj->bezeichnung_english;
|
|
||||||
$anz_incoming = $lv_obj->incoming;
|
|
||||||
|
|
||||||
if (!isset($lv))
|
|
||||||
$lv=0;
|
|
||||||
|
|
||||||
|
|
||||||
//Zugeteilte Fachbereiche auslesen
|
|
||||||
$qry = "SELECT distinct tbl_fachbereich.bezeichnung as bezeichnung, tbl_fachbereich.fachbereich_kurzbz as fachbereich_kurzbz
|
|
||||||
FROM public.tbl_fachbereich, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach
|
|
||||||
WHERE tbl_lehreinheit.studiensemester_kurzbz=(
|
|
||||||
SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
|
||||||
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1)
|
|
||||||
AND tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
|
|
||||||
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
|
|
||||||
tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz";
|
|
||||||
|
|
||||||
if(!$result=$db->db_query($qry))
|
|
||||||
die('Fehler beim Lesen aus der Datenbank');
|
|
||||||
|
|
||||||
$fachbereiche="'1'";
|
|
||||||
$fachbereich['kurzbz']=array();
|
|
||||||
$fachbereich['bezeichnung']=array();
|
|
||||||
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
{
|
|
||||||
$fachbereiche .= ", ".$db->db_add_param($row->fachbereich_kurzbz);
|
|
||||||
$fachbereich['kurzbz'][]=$row->fachbereich_kurzbz;
|
|
||||||
$fachbereich['bezeichnung'][]=$row->bezeichnung;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Studiengangsbezeichnung auslesen
|
|
||||||
$stg_hlp_obj = new studiengang();
|
|
||||||
$stg_hlp_obj->load($stg);
|
|
||||||
|
|
||||||
$stg_kurzbz = $stg_hlp_obj->kuerzel;
|
|
||||||
$stg_kurzbzlang = $stg_hlp_obj->kurzbzlang;
|
|
||||||
|
|
||||||
//Lehrform auslesen
|
|
||||||
$qry = "Select distinct lehrform_kurzbz FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND studiensemester_kurzbz=".$db->db_add_param($stsem);
|
|
||||||
if(!$res = $db->db_query($qry))
|
|
||||||
die('Fehler beim Lesen aus der Datenbank');
|
|
||||||
//echo $fachbereiche;
|
|
||||||
while($row = $db->db_fetch_object($res))
|
|
||||||
$lehrform_kurzbz[] = $row->lehrform_kurzbz;
|
|
||||||
//Fachbereichsleiter fuer alle FB ermitteln
|
|
||||||
$qry="
|
|
||||||
SELECT
|
|
||||||
vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
|
|
||||||
FROM
|
|
||||||
public.tbl_benutzerfunktion
|
|
||||||
JOIN public.tbl_fachbereich USING(oe_kurzbz)
|
|
||||||
JOIN campus.vw_mitarbeiter USING(uid)
|
|
||||||
WHERE
|
|
||||||
vw_mitarbeiter.aktiv AND
|
|
||||||
funktion_kurzbz='Leitung' AND tbl_fachbereich.fachbereich_kurzbz in($fachbereiche) AND
|
|
||||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
|
|
||||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())";
|
|
||||||
|
|
||||||
if(!$res=$db->db_query($qry))
|
|
||||||
die('Fehler '.$db->errormsg);
|
|
||||||
|
|
||||||
$fachbereichsleiter=array();
|
|
||||||
while($row=$db->db_fetch_object($res))
|
|
||||||
$fachbereichsleiter[$row->fachbereich_kurzbz] = $row->vorname." ".$row->nachname;
|
|
||||||
|
|
||||||
//Fachbereichskoordinatoren fuer alle FB ermitteln
|
|
||||||
//$qry="SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in($fachbereiche)";
|
|
||||||
$qry = "SELECT
|
|
||||||
distinct vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
|
|
||||||
FROM
|
|
||||||
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich
|
|
||||||
WHERE
|
|
||||||
vw_mitarbeiter.aktiv AND
|
|
||||||
tbl_lehrveranstaltung.lehrveranstaltung_id='$lv' AND
|
|
||||||
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
|
|
||||||
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
|
|
||||||
lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz AND
|
|
||||||
tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND
|
|
||||||
tbl_benutzerfunktion.funktion_kurzbz='fbk' AND
|
|
||||||
vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND
|
|
||||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
|
|
||||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
|
|
||||||
tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1) ";
|
|
||||||
|
|
||||||
if(!$res=$db->db_query($qry))
|
|
||||||
die('Fehler ! '.$db->errormsg);
|
|
||||||
|
|
||||||
$fachbereichskoordinator=array();
|
|
||||||
while($row=$db->db_fetch_object($res))
|
|
||||||
{
|
|
||||||
$name = $row->vorname." ".$row->nachname;
|
|
||||||
|
|
||||||
if(!isset($fachbereichskoordinator[$row->fachbereich_kurzbz]) ||
|
|
||||||
!in_array($name, $fachbereichskoordinator[$row->fachbereich_kurzbz]))
|
|
||||||
{
|
|
||||||
$fachbereichskoordinator[$row->fachbereich_kurzbz][] = $name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Namen der Lehrenden Auslesen
|
|
||||||
$qry = "SELECT distinct vorname, nachname FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter
|
|
||||||
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
|
|
||||||
AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester JOIN lehre.tbl_lehreinheit USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1)
|
|
||||||
AND tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id
|
|
||||||
AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid";
|
|
||||||
|
|
||||||
$lehrendearray = array();
|
|
||||||
if($result=$db->db_query($qry))
|
|
||||||
{
|
|
||||||
while($row=$db->db_fetch_object($result))
|
|
||||||
$lehrendearray[] = "$row->vorname $row->nachname";
|
|
||||||
}
|
|
||||||
|
|
||||||
//Ausgabe der LV-Information
|
|
||||||
|
|
||||||
//Deutsch Version
|
|
||||||
if(!(isset($language) && $language=='en'))
|
|
||||||
{
|
|
||||||
echo "<a name=\"de\"></a><br><br>
|
|
||||||
<table class='tabcontent'>
|
|
||||||
<tr>
|
|
||||||
<td align='center' valign='top'>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
".stripslashes($titel_de)."</h1>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><br>";
|
|
||||||
echo '<table border="0" cellpadding="0">';
|
|
||||||
echo "<tr><td>Studiengang:</td><td>$stg_kurzbz</td></tr>";
|
|
||||||
echo "<tr><td>Semester:</td><td>$sem</td></tr>";
|
|
||||||
echo '<tr><td> </td><td> </td></tr>';
|
|
||||||
if(($anz=count($lehrendearray))>0)
|
|
||||||
{
|
|
||||||
echo "<tr valign='top'><td><nobr>".$phrasen->t('lehre/lehrbeauftragter').": </nobr></td><td>";
|
|
||||||
|
|
||||||
foreach($lehrendearray as $elem)
|
|
||||||
{
|
|
||||||
$anz--;
|
|
||||||
echo " $elem";
|
|
||||||
if($anz!=0)
|
|
||||||
echo ',';
|
|
||||||
}
|
|
||||||
echo '</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0)
|
|
||||||
{
|
|
||||||
echo "<tr valign='top'><td>Lehrform: </td><td>";
|
|
||||||
foreach ($lehrform_kurzbz as $lehrform_kurz)
|
|
||||||
echo "$lehrform_kurz<br />";
|
|
||||||
echo '</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lang > -1)
|
|
||||||
echo '<tr><td>Sprache: </td><td>'.stripslashes($lang).'</td></tr>';
|
|
||||||
|
|
||||||
if ($ects_points)
|
|
||||||
echo '<tr><td>ECTS: </td><td>'.number_format(stripslashes($ects_points),1,'.','').'</td></tr>';
|
|
||||||
|
|
||||||
if ($anz_incoming > -1)
|
|
||||||
{
|
|
||||||
echo '<tr><td>Incomingplätze: </td><td>'.stripslashes($anz_incoming).'</td></tr>';
|
|
||||||
}
|
|
||||||
else echo '<tr><td>Incomingplätze: </td><td>0</td></tr>';
|
|
||||||
|
|
||||||
echo '<tr><td> </td><td> </td></tr>';
|
|
||||||
//Fachbereiche und Leiter/Koordinatoren anzeigen
|
|
||||||
if (count($fachbereich['bezeichnung'])>0)
|
|
||||||
{
|
|
||||||
echo '<tr><td>Institut: </td><td>';
|
|
||||||
//Fachbereiche durchlaufen
|
|
||||||
for($i=0;$i<count($fachbereich['kurzbz']);$i++)
|
|
||||||
{
|
|
||||||
$help='';
|
|
||||||
echo stripslashes($fachbereich['bezeichnung'][$i]);
|
|
||||||
//zugehoerigen Leiter ausgeben
|
|
||||||
if(isset($fachbereichsleiter[$fachbereich['kurzbz'][$i]]))
|
|
||||||
$help.='Leitung: '.$fachbereichsleiter[$fachbereich['kurzbz'][$i]];
|
|
||||||
if(isset($fachbereichskoordinator[$fachbereich['kurzbz'][$i]]))
|
|
||||||
{
|
|
||||||
$first=true;
|
|
||||||
//zugehoerige Koordinatoren ausgeben
|
|
||||||
foreach($fachbereichskoordinator[$fachbereich['kurzbz'][$i]] as $fbk)
|
|
||||||
{
|
|
||||||
if($help!='')
|
|
||||||
{
|
|
||||||
if($first)
|
|
||||||
{
|
|
||||||
$help.=' Koordination:';
|
|
||||||
$first=false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$help.=',';
|
|
||||||
}
|
|
||||||
$help.=" $fbk";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($help!='')
|
|
||||||
echo " ($help)";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '</td></tr>';
|
|
||||||
}
|
|
||||||
echo "</table>";
|
|
||||||
echo "<br /><br /></td></tr>";
|
|
||||||
|
|
||||||
if ($kurzbeschreibung_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/kurzbeschreibung')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($kurzbeschreibung_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lehrziele_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lernergebnisse')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($lehrziele_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lehrinhalte_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lehrinhalte')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($lehrinhalte_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($voraussetzungen_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/vorkenntnisse')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($voraussetzungen_de)."<br><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($methodik_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/methodik')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($methodik_de)."<br><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($pruefungsordnung_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/leistungsbeurteilung')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($pruefungsordnung_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($unterlagen_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/literatur')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($unterlagen_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($anwesenheit_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anwesenheit')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($anwesenheit_de)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($anmerkungen_de)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anmerkungen')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($anmerkungen_de)." <br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</td></tr></table>";
|
|
||||||
}
|
|
||||||
|
|
||||||
//Englische Version
|
|
||||||
if(!(isset($language) && $language=='de'))
|
|
||||||
{
|
|
||||||
echo "<a name=\"en\"></a><br><br>";
|
|
||||||
echo "<table class='tabcontent'>
|
|
||||||
<tr>
|
|
||||||
<td align='center' valign='top'>
|
|
||||||
<h1>
|
|
||||||
".stripslashes($titel_en)."
|
|
||||||
</h1>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr><td><br />";
|
|
||||||
|
|
||||||
echo '<table border="0" cellpadding="0">';
|
|
||||||
echo "<tr><td>Degree programme:</td><td>$stg_kurzbz</td></tr>";
|
|
||||||
echo "<tr><td>Semester:</td><td>$sem</td></tr>";
|
|
||||||
echo "<tr><td> </td><td> </td></tr>";
|
|
||||||
|
|
||||||
if(($anz=count($lehrendearray))>0)
|
|
||||||
{
|
|
||||||
echo "<tr><td>Lecturer:</td><td>";
|
|
||||||
|
|
||||||
foreach($lehrendearray as $elem)
|
|
||||||
{
|
|
||||||
$anz--;
|
|
||||||
echo " $elem";
|
|
||||||
if($anz!=0)
|
|
||||||
echo ",";
|
|
||||||
}
|
|
||||||
echo "</td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0)
|
|
||||||
{
|
|
||||||
echo "<tr valign='top'><td>Course methods: </td><td>";
|
|
||||||
foreach ($lehrform_kurzbz as $lehrform_kurz)
|
|
||||||
echo "$lehrform_kurz<br />";
|
|
||||||
echo "</td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lang > -1)
|
|
||||||
echo "<tr><td>Language: </td><td>".stripslashes($lang)."</td></tr>";
|
|
||||||
|
|
||||||
if ($ects_points)
|
|
||||||
echo "<tr><td>ECTS Credits: </td><td>".number_format(stripslashes($ects_points),1,'.','')."</td></tr>";
|
|
||||||
|
|
||||||
if ($anz_incoming > -1)
|
|
||||||
{
|
|
||||||
echo '<tr><td>Places Available for Incoming Students: </td><td>'.stripslashes($anz_incoming).'</td></tr>';
|
|
||||||
}
|
|
||||||
else echo '<tr><td>Places Available for Incoming Students: </td><td>0</td></tr>';
|
|
||||||
|
|
||||||
echo "<tr><td> </td><td> </td></tr>";
|
|
||||||
|
|
||||||
//Fachbereiche und Leiter/Koordinatoren anzeigen
|
|
||||||
if (count($fachbereich['bezeichnung'])>0)
|
|
||||||
{
|
|
||||||
echo '<tr><td>Department: </td><td>';
|
|
||||||
//Fachbereiche durchlaufen
|
|
||||||
for($i=0;$i<count($fachbereich['kurzbz']);$i++)
|
|
||||||
{
|
|
||||||
$help='';
|
|
||||||
echo stripslashes($fachbereich['bezeichnung'][$i]);
|
|
||||||
//zugehoerigen Leiter ausgeben
|
|
||||||
if(isset($fachbereichsleiter[$fachbereich['kurzbz'][$i]]))
|
|
||||||
$help.='Head: '.$fachbereichsleiter[$fachbereich['kurzbz'][$i]];
|
|
||||||
if(isset($fachbereichskoordinator[$fachbereich['kurzbz'][$i]]))
|
|
||||||
{
|
|
||||||
$first=true;
|
|
||||||
//zugehoerige koordinatoren ausgeben
|
|
||||||
foreach($fachbereichskoordinator[$fachbereich['kurzbz'][$i]] as $fbk)
|
|
||||||
{
|
|
||||||
if($help!='')
|
|
||||||
{
|
|
||||||
if($first)
|
|
||||||
{
|
|
||||||
$help.=' Coordination:';
|
|
||||||
$first=false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$help.=',';
|
|
||||||
}
|
|
||||||
$help.=" $fbk";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($help!='')
|
|
||||||
echo " ($help)";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '</td></tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '</table>';
|
|
||||||
echo '<br /><br /></td></tr>';
|
|
||||||
|
|
||||||
if ($kurzbeschreibung_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/kurzbeschreibungEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($kurzbeschreibung_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lehrziele_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lernergebnisseEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($lehrziele_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($lehrinhalte_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lehrinhalteEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($lehrinhalte_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($voraussetzungen_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/vorkenntnisseEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($voraussetzungen_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($methodik_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/methodikEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($methodik_en)."<br><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($pruefungsordnung_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/leistungsbeurteilungEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($pruefungsordnung_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($unterlagen_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/literaturEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($unterlagen_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($anwesenheit_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anwesenheitEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($anwesenheit_en)."<br /><br /></td></tr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($anmerkungen_en)
|
|
||||||
{
|
|
||||||
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anmerkungenEN')."</h2></td></tr>";
|
|
||||||
echo "<tr><td>".stripslashes($anmerkungen_en)." <br /></td></tr>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</table>";
|
|
||||||
|
|
||||||
$lehreinheit = new lehreinheit();
|
|
||||||
$studiensemester = new studiensemester();
|
|
||||||
$lehreinheit->load_lehreinheiten($lv, $studiensemester->getaktorNext());
|
|
||||||
|
|
||||||
if (CIS_LVINFO_TERMINE_ANZEIGEN == true)
|
|
||||||
{
|
|
||||||
if(!empty($lehreinheit->lehreinheiten))
|
|
||||||
{
|
|
||||||
echo "<h2>Termine</h2><table>";
|
|
||||||
foreach($lehreinheit->lehreinheiten as $lehreinheit_temp)
|
|
||||||
{
|
|
||||||
$lehrstunde = new lehrstunde();
|
|
||||||
$lehrstunde->load_lehrstunden_le($lehreinheit_temp->lehreinheit_id);
|
|
||||||
$i = 1;
|
|
||||||
echo "<tr><td><ul>";
|
|
||||||
|
|
||||||
$result = $lehrstunde->lehrstunden;
|
|
||||||
$last = "";
|
|
||||||
$bis = "";
|
|
||||||
usort($result, "cmp");
|
|
||||||
$datum = new datum();
|
|
||||||
$std_von = new stunde();
|
|
||||||
$std_bis = new stunde();
|
|
||||||
foreach($result as $key=>$stunde)
|
|
||||||
{
|
|
||||||
if($last !== $stunde->datum)
|
|
||||||
{
|
|
||||||
$temp = array_values(getLastStundeByDatum($result, $stunde->datum));
|
|
||||||
$size = count($temp);
|
|
||||||
if($size != 0)
|
|
||||||
{
|
|
||||||
$std_von->load($temp[0]->stunde);
|
|
||||||
$std_bis->load($temp[$size-1]->stunde);
|
|
||||||
echo "<li>".$datum->formatDatum($temp[0]->datum,"d.m.Y")." von ".mb_substr($std_von->beginn,0,5)." bis ".mb_substr($std_bis->ende,0,5)."</li>";
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
elseif($last == "")
|
|
||||||
{
|
|
||||||
$temp = getLastStundeByDatum($result, $stunde->datum);
|
|
||||||
var_dump($temp);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$bis = $stunde->stunde;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($i % 5 === 0)
|
|
||||||
{
|
|
||||||
// echo "</ul></td><td><ul>";
|
|
||||||
// $i++;
|
|
||||||
}
|
|
||||||
$last = $stunde->datum;
|
|
||||||
}
|
|
||||||
echo "</ul></td></tr>";
|
|
||||||
}
|
|
||||||
echo "</table>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Ein paar Zeilenumbrueche damit er beim Sprung zum Anker weit genug nach unten springt
|
|
||||||
echo "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
|
|
||||||
|
|
||||||
?>
|
|
||||||
</td>
|
|
||||||
<td width="3%"> </td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body></html>
|
|
||||||
@@ -1,921 +0,0 @@
|
|||||||
<?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 <[email protected]>,
|
|
||||||
* Andreas Oesterreicher <[email protected]> and
|
|
||||||
* Rudolf Hangl <[email protected]>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('../../../../config/cis.config.inc.php');
|
|
||||||
require_once('../../../../include/functions.inc.php');
|
|
||||||
require_once('../../../../include/phrasen.class.php');
|
|
||||||
|
|
||||||
$sprache = getSprache();
|
|
||||||
$p= new phrasen($sprache);
|
|
||||||
|
|
||||||
?>
|
|
||||||
<!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=UTF-8">
|
|
||||||
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
|
|
||||||
<title><?php echo $p->t('courseInformation/terminologie');?></title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body style="padding: 10px">
|
|
||||||
<h1><?php echo $p->t('courseInformatoin/lvInfoTerminologie')?></h1>
|
|
||||||
|
|
||||||
<table class="tabcontent">
|
|
||||||
<tr>
|
|
||||||
<td width="85%">
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul>
|
|
||||||
<li> <a class="Item" href='index.php'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
|
|
||||||
<li> <a class="Item" href='freigabe.php'><font size='3'><?php echo $p->t('courseInformation/freigabe');?></font></a></li>
|
|
||||||
<li> <a class="Item" href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
|
|
||||||
<li> <a class="Item" href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie')?></font></a></li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table id="tabterm" border="1">
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td colspan="2" align="center">
|
|
||||||
<b><?php echo $p->t('courseInformation/terminologieDeutschEnglisch');?></b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
<b>Deutsch</b>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<b>Englisch</b>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Abschluss (einer Lehrveranstaltung)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
completion
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
AnfängerIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
beginner
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
angerechnet
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
recognized
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Anrechnung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
recognition
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Aufgaben
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
tasks / responsibilities / assignment
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Bachelor-Studiengang
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
bachelor's degree program
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Bachelor
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Bachelor
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Bachelor-Arbeiten
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
bachelor's paper
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
berufsbegleitend
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
part-time study
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Berufspraktikum
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
intership
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
bestanden
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
pass
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
bestanden, mit gutem Erfolg
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
pass with merit
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
bestanden, mit ausgezeichnetem
|
|
||||||
Erfolg
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
pass with distinction
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
BetreuerIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
supervisor
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Diplomarbeit
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
master's thesis
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
DI (FH)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
DI (FH)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Diplom-Studiengang
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
diploma degree program
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Erhalter
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
operator
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Experte/in
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
expert
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fachbereich
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
special field
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
FachbereichskoordinatorIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
special field coordinator
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
FachbereichsleiterIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
head of special field
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Fachhochschul-Beirat
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
University of Applied Sciences Advisory Board (UAS Advisory Board)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fachhochschul-Kollegium
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
University of Applied Sciences Council (UAS Council)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Fachhochschul-KollegiumsleiterIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Head of University of Applied Sciences Council
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fachhochschulrat
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
FH Council
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Fachhochschulkonferenz
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Association of Universities of
|
|
||||||
Applied Sciences Austria
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fernlehre
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
distance learning
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Fernlehrelemente
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
distance learning elements
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fortgeschrittene/r
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
advanced
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Gesamtnote, Gesamtbeurteilung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
final grade
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Grundlagen
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
fundamentals
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
hauptberuflich Lehrende/r
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
full-time instructor
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Immanente Leistungsbeurteilung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
continuous assessment
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
integrierte Lehrveranstaltung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
integrated course
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
JahrgangssprecherIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
class representative
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
kommissionelle Prüfung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
panel exam
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Labor
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
laboratory
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Lehrender
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
instructor
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Lehrgang universitären
|
|
||||||
Charakters
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
university
|
|
||||||
level course
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Lehrinhalte
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
course contents
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Lehrkörper
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
teaching staff
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Lehrmethode
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
teaching method
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Lehrveranstaltung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
course
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Lehrziele
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
course objectives
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Lernmethode
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
study technique
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Magisterarbeit
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
master's thesis
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Mag. (FH)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Mag. (FH)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Master-Studiengang
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
master's degree program
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Matrikelnummer
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
registration number
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Mündliche Prüfung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
oral examination
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
nebenberuflich Lehrende/r
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
part-time instructor
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Niveaustufe
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
level
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Niveaustufen:
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
levels
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Note
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
grade
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Organisation der LV
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
course organization
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Personenkennzeichen
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
personal identification number
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Pflichtveranstaltung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
required course
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Präsentation
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
presentation
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Programmverantwortlicher
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Program Director
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Projektarbeit
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
project work
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Prüfung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
examination
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Prüfungsmodalitäten
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
exam procedure
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Prüfungsordnung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
examination regulation
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Rektor
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
rector
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Schriftliche Prüfung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
written examination
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Semester
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
semester
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Seminar
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
seminar
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- beg. neu 26.12.2009 seq -->
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Stellv. Studiengangsleiter
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Deputy Program Director
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
AssistentIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Administrative Assistant
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
ECTS-Leistungspunkte
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
ECTS credits
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Semesterwochenstunden
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Semester periods per week (SP/W)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<!-- end neu 26.12.2009 seq -->
|
|
||||||
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Sommersemester
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
summer semester / spring semester
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Spezialisten
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
specialists
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Studiengang
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
degree program
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
StudiengangssprecherIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
program representative
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
StudiengangsleiterIn
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
program director
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Studienjahr
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
academic year
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Studienplan
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
curriculum
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Studienplatz
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
study place
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Studierendenvertretung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
student council
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Teilgebiet
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
segment
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Test
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
test
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Titel der Lehrveranstaltung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
course title
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Übung (einfache, mit Anleitung)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
exercise</font>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Übung (im Sinne einer LV)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
practice
|
|
||||||
session </td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Übung (im Sinne üben)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
practice
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Unterricht
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
instruction
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Vollzeit
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
full-time
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Voraussetzungen (für LVs)
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
requirements
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Vorlesung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
lecture
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Vortragender
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
lecturer
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Wintersemester
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
autumn semester / winter semester
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Zeugnis
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
certificate
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- beg. neu 26.12.2009 seq -->
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Unterrichtssprache
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Language of instruction
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Bewerbung
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
application
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Zugangsvorraussetzungen
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
admission requirements
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Matura
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Secondary School diploma
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Auslandssemester
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
exchange semester
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Fachhochschule Technikum Wien
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
University of Applied Sciences Technikum Wien (UAS Technikum Wien)
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste1">
|
|
||||||
<td>
|
|
||||||
Institut für
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
department of
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr class="liste0">
|
|
||||||
<td>
|
|
||||||
Senat
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Senate
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<!-- end neu 26.12.2009 seq -->
|
|
||||||
</table>
|
|
||||||
</td></tr></table>
|
|
||||||
</body></html>
|
|
||||||
@@ -1,687 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
|
||||||
//
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | PHP Version 4 |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) 1997-2002 The PHP Group |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | This source file is subject to version 2.02 of the PHP license, |
|
|
||||||
// | that is bundled with this package in the file LICENSE, and is |
|
|
||||||
// | available at through the world-wide-web at |
|
|
||||||
// | http://www.php.net/license/3_0.txt. |
|
|
||||||
// | If you did not receive a copy of the PHP license and are unable to |
|
|
||||||
// | obtain it through the world-wide-web, please send a note to |
|
|
||||||
// | [email protected] so we can mail you a copy immediately. |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Authors: Alexander Zhukov <[email protected]> Original port from Python |
|
|
||||||
// | Authors: Harry Fuecks <[email protected]> Port to PEAR + more |
|
|
||||||
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
//
|
|
||||||
// $Id: HTMLSax3.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
//
|
|
||||||
/**
|
|
||||||
* Main parser components
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @version $Id: HTMLSax3.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Required classes
|
|
||||||
*/
|
|
||||||
if (!defined('XML_HTMLSAX3')) {
|
|
||||||
define('XML_HTMLSAX3', 'XML/');
|
|
||||||
}
|
|
||||||
require_once(XML_HTMLSAX3 . 'HTMLSax3/States.php');
|
|
||||||
require_once(XML_HTMLSAX3 . 'HTMLSax3/Decorators.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base State Parser
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
* @abstract
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_StateParser {
|
|
||||||
/**
|
|
||||||
* Instance of user front end class to be passed to callbacks
|
|
||||||
* @var XML_HTMLSax3
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $htmlsax;
|
|
||||||
/**
|
|
||||||
* User defined object for handling elements
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_object_element;
|
|
||||||
/**
|
|
||||||
* User defined open tag handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_opening;
|
|
||||||
/**
|
|
||||||
* User defined close tag handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_closing;
|
|
||||||
/**
|
|
||||||
* User defined object for handling data in elements
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_object_data;
|
|
||||||
/**
|
|
||||||
* User defined data handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_data;
|
|
||||||
/**
|
|
||||||
* User defined object for handling processing instructions
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_object_pi;
|
|
||||||
/**
|
|
||||||
* User defined processing instruction handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_pi;
|
|
||||||
/**
|
|
||||||
* User defined object for handling JSP/ASP tags
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_object_jasp;
|
|
||||||
/**
|
|
||||||
* User defined JSP/ASP handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_jasp;
|
|
||||||
/**
|
|
||||||
* User defined object for handling XML escapes
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_object_escape;
|
|
||||||
/**
|
|
||||||
* User defined XML escape handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_method_escape;
|
|
||||||
/**
|
|
||||||
* User defined handler object or NullHandler
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $handler_default;
|
|
||||||
/**
|
|
||||||
* Parser options determining parsing behavior
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $parser_options = array();
|
|
||||||
/**
|
|
||||||
* XML document being parsed
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $rawtext;
|
|
||||||
/**
|
|
||||||
* Position in XML document relative to start (0)
|
|
||||||
* @var int
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $position;
|
|
||||||
/**
|
|
||||||
* Length of the XML document in characters
|
|
||||||
* @var int
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $length;
|
|
||||||
/**
|
|
||||||
* Array of state objects
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $State = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_StateParser setting up states
|
|
||||||
* @var XML_HTMLSax3 instance of user front end class
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_StateParser (& $htmlsax) {
|
|
||||||
$this->htmlsax = & $htmlsax;
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_START] = new XML_HTMLSax3_StartingState();
|
|
||||||
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_CLOSING_TAG] = new XML_HTMLSax3_ClosingTagState();
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_TAG] = new XML_HTMLSax3_TagState();
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_OPENING_TAG] = new XML_HTMLSax3_OpeningTagState();
|
|
||||||
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_PI] = new XML_HTMLSax3_PiState();
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_JASP] = new XML_HTMLSax3_JaspState();
|
|
||||||
$this->State[XML_HTMLSAX3_STATE_ESCAPE] = new XML_HTMLSax3_EscapeState();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves the position back one character
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function unscanCharacter() {
|
|
||||||
$this->position -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves the position forward one character
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function ignoreCharacter() {
|
|
||||||
$this->position += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the next character from the XML document or void if at end
|
|
||||||
* @access protected
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
function scanCharacter() {
|
|
||||||
if ($this->position < $this->length) {
|
|
||||||
return $this->rawtext{$this->position++};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string from the current position to the next occurance
|
|
||||||
* of the supplied string
|
|
||||||
* @param string string to search until
|
|
||||||
* @access protected
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function scanUntilString($string) {
|
|
||||||
$start = $this->position;
|
|
||||||
$this->position = strpos($this->rawtext, $string, $start);
|
|
||||||
if ($this->position === FALSE) {
|
|
||||||
$this->position = $this->length;
|
|
||||||
}
|
|
||||||
return substr($this->rawtext, $start, $this->position - $start);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string from the current position until the first instance of
|
|
||||||
* one of the characters in the supplied string argument
|
|
||||||
* @param string string to search until
|
|
||||||
* @access protected
|
|
||||||
* @return string
|
|
||||||
* @abstract
|
|
||||||
*/
|
|
||||||
function scanUntilCharacters($string) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves the position forward past any whitespace characters
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
* @abstract
|
|
||||||
*/
|
|
||||||
function ignoreWhitespace() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins the parsing operation, setting up any decorators, depending on
|
|
||||||
* parse options invoking _parse() to execute parsing
|
|
||||||
* @param string XML document to parse
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function parse($data) {
|
|
||||||
if ($this->parser_options['XML_OPTION_TRIM_DATA_NODES']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Trim(
|
|
||||||
$this->handler_object_data,
|
|
||||||
$this->handler_method_data);
|
|
||||||
$this->handler_object_data =& $decorator;
|
|
||||||
$this->handler_method_data = 'trimData';
|
|
||||||
}
|
|
||||||
if ($this->parser_options['XML_OPTION_CASE_FOLDING']==1) {
|
|
||||||
$open_decor = new XML_HTMLSax3_CaseFolding(
|
|
||||||
$this->handler_object_element,
|
|
||||||
$this->handler_method_opening,
|
|
||||||
$this->handler_method_closing);
|
|
||||||
$this->handler_object_element =& $open_decor;
|
|
||||||
$this->handler_method_opening ='foldOpen';
|
|
||||||
$this->handler_method_closing ='foldClose';
|
|
||||||
}
|
|
||||||
if ($this->parser_options['XML_OPTION_LINEFEED_BREAK']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Linefeed(
|
|
||||||
$this->handler_object_data,
|
|
||||||
$this->handler_method_data);
|
|
||||||
$this->handler_object_data =& $decorator;
|
|
||||||
$this->handler_method_data = 'breakData';
|
|
||||||
}
|
|
||||||
if ($this->parser_options['XML_OPTION_TAB_BREAK']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Tab(
|
|
||||||
$this->handler_object_data,
|
|
||||||
$this->handler_method_data);
|
|
||||||
$this->handler_object_data =& $decorator;
|
|
||||||
$this->handler_method_data = 'breakData';
|
|
||||||
}
|
|
||||||
if ($this->parser_options['XML_OPTION_ENTITIES_UNPARSED']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Entities_Unparsed(
|
|
||||||
$this->handler_object_data,
|
|
||||||
$this->handler_method_data);
|
|
||||||
$this->handler_object_data =& $decorator;
|
|
||||||
$this->handler_method_data = 'breakData';
|
|
||||||
}
|
|
||||||
if ($this->parser_options['XML_OPTION_ENTITIES_PARSED']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Entities_Parsed(
|
|
||||||
$this->handler_object_data,
|
|
||||||
$this->handler_method_data);
|
|
||||||
$this->handler_object_data =& $decorator;
|
|
||||||
$this->handler_method_data = 'breakData';
|
|
||||||
}
|
|
||||||
// Note switched on by default
|
|
||||||
if ($this->parser_options['XML_OPTION_STRIP_ESCAPES']==1) {
|
|
||||||
$decorator = new XML_HTMLSax3_Escape_Stripper(
|
|
||||||
$this->handler_object_escape,
|
|
||||||
$this->handler_method_escape);
|
|
||||||
$this->handler_object_escape =& $decorator;
|
|
||||||
$this->handler_method_escape = 'strip';
|
|
||||||
}
|
|
||||||
$this->rawtext = $data;
|
|
||||||
$this->length = strlen($data);
|
|
||||||
$this->position = 0;
|
|
||||||
$this->_parse();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Performs the parsing itself, delegating calls to a specific parser
|
|
||||||
* state
|
|
||||||
* @param constant state object to parse with
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function _parse($state = XML_HTMLSAX3_STATE_START) {
|
|
||||||
do {
|
|
||||||
$state = $this->State[$state]->parse($this);
|
|
||||||
} while ($state != XML_HTMLSAX3_STATE_STOP &&
|
|
||||||
$this->position < $this->length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parser for PHP Versions below 4.3.0. Uses a slower parsing mechanism than
|
|
||||||
* the equivalent PHP 4.3.0+ subclass of StateParser
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
* @see XML_HTMLSax3_StateParser_Gtet430
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_StateParser_Lt430 extends XML_HTMLSax3_StateParser {
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_StateParser_Lt430 defining available
|
|
||||||
* parser options
|
|
||||||
* @var XML_HTMLSax3 instance of user front end class
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_StateParser_Lt430(& $htmlsax) {
|
|
||||||
parent::XML_HTMLSax3_StateParser($htmlsax);
|
|
||||||
$this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string from the current position until the first instance of
|
|
||||||
* one of the characters in the supplied string argument
|
|
||||||
* @param string string to search until
|
|
||||||
* @access protected
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function scanUntilCharacters($string) {
|
|
||||||
$startpos = $this->position;
|
|
||||||
while ($this->position < $this->length && strpos($string, $this->rawtext{$this->position}) === FALSE) {
|
|
||||||
$this->position++;
|
|
||||||
}
|
|
||||||
return substr($this->rawtext, $startpos, $this->position - $startpos);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves the position forward past any whitespace characters
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function ignoreWhitespace() {
|
|
||||||
while ($this->position < $this->length &&
|
|
||||||
strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) {
|
|
||||||
$this->position++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins the parsing operation, setting up the unparsed XML entities
|
|
||||||
* decorator if necessary then delegating further work to parent
|
|
||||||
* @param string XML document to parse
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function parse($data) {
|
|
||||||
parent::parse($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parser for PHP Versions equal to or greater than 4.3.0. Uses a faster
|
|
||||||
* parsing mechanism than the equivalent PHP < 4.3.0 subclass of StateParser
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
* @see XML_HTMLSax3_StateParser_Lt430
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_StateParser_Gtet430 extends XML_HTMLSax3_StateParser {
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_StateParser_Gtet430 defining available
|
|
||||||
* parser options
|
|
||||||
* @var XML_HTMLSax3 instance of user front end class
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_StateParser_Gtet430(& $htmlsax) {
|
|
||||||
parent::XML_HTMLSax3_StateParser($htmlsax);
|
|
||||||
$this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
|
|
||||||
$this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Returns a string from the current position until the first instance of
|
|
||||||
* one of the characters in the supplied string argument.
|
|
||||||
* @param string string to search until
|
|
||||||
* @access protected
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
function scanUntilCharacters($string) {
|
|
||||||
$startpos = $this->position;
|
|
||||||
$length = strcspn($this->rawtext, $string, $startpos);
|
|
||||||
$this->position += $length;
|
|
||||||
return substr($this->rawtext, $startpos, $length);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves the position forward past any whitespace characters
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function ignoreWhitespace() {
|
|
||||||
$this->position += strspn($this->rawtext, " \n\r\t", $this->position);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins the parsing operation, setting up the parsed and unparsed
|
|
||||||
* XML entity decorators if necessary then delegating further work
|
|
||||||
* to parent
|
|
||||||
* @param string XML document to parse
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function parse($data) {
|
|
||||||
parent::parse($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default NullHandler for methods which were not set by user
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_NullHandler {
|
|
||||||
/**
|
|
||||||
* Generic handler method which does nothing
|
|
||||||
* @access protected
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function DoNothing() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User interface class. All user calls should only be made to this class
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3 {
|
|
||||||
/**
|
|
||||||
* Instance of concrete subclass of XML_HTMLSax3_StateParser
|
|
||||||
* @var XML_HTMLSax3_StateParser
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $state_parser;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3 selecting concrete StateParser subclass
|
|
||||||
* depending on PHP version being used as well as setting the default
|
|
||||||
* NullHandler for all callbacks<br />
|
|
||||||
* <b>Example:</b>
|
|
||||||
* <pre>
|
|
||||||
* $myHandler = & new MyHandler();
|
|
||||||
* $parser = new XML_HTMLSax3();
|
|
||||||
* $parser->set_object($myHandler);
|
|
||||||
* $parser->set_option('XML_OPTION_CASE_FOLDING');
|
|
||||||
* $parser->set_element_handler('myOpenHandler','myCloseHandler');
|
|
||||||
* $parser->set_data_handler('myDataHandler');
|
|
||||||
* $parser->parser($xml);
|
|
||||||
* </pre>
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3() {
|
|
||||||
if (version_compare(phpversion(), '4.3', 'ge')) {
|
|
||||||
$this->state_parser = new XML_HTMLSax3_StateParser_Gtet430($this);
|
|
||||||
} else {
|
|
||||||
$this->state_parser = new XML_HTMLSax3_StateParser_Lt430($this);
|
|
||||||
}
|
|
||||||
$nullhandler = new XML_HTMLSax3_NullHandler();
|
|
||||||
$this->set_object($nullhandler);
|
|
||||||
$this->set_element_handler('DoNothing', 'DoNothing');
|
|
||||||
$this->set_data_handler('DoNothing');
|
|
||||||
$this->set_pi_handler('DoNothing');
|
|
||||||
$this->set_jasp_handler('DoNothing');
|
|
||||||
$this->set_escape_handler('DoNothing');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the user defined handler object. Returns a PEAR Error
|
|
||||||
* if supplied argument is not an object.
|
|
||||||
* @param object handler object containing SAX callback methods
|
|
||||||
* @access public
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
function set_object(&$object) {
|
|
||||||
if ( is_object($object) ) {
|
|
||||||
$this->state_parser->handler_default =& $object;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
require_once('PEAR.php');
|
|
||||||
PEAR::raiseError('XML_HTMLSax3::set_object requires '.
|
|
||||||
'an object instance');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a parser option. By default all options are switched off.
|
|
||||||
* Returns a PEAR Error if option is invalid<br />
|
|
||||||
* <b>Available options:</b>
|
|
||||||
* <ul>
|
|
||||||
* <li>XML_OPTION_TRIM_DATA_NODES: trim whitespace off the beginning
|
|
||||||
* and end of data passed to the data handler</li>
|
|
||||||
* <li>XML_OPTION_LINEFEED_BREAK: linefeeds result in additional data
|
|
||||||
* handler calls</li>
|
|
||||||
* <li>XML_OPTION_TAB_BREAK: tabs result in additional data handler
|
|
||||||
* calls</li>
|
|
||||||
* <li>XML_OPTION_ENTITIES_UNPARSED: XML entities are returned as
|
|
||||||
* seperate data handler calls in unparsed form</li>
|
|
||||||
* <li>XML_OPTION_ENTITIES_PARSED: (PHP 4.3.0+ only) XML entities are
|
|
||||||
* returned as seperate data handler calls and are parsed with
|
|
||||||
* PHP's html_entity_decode() function</li>
|
|
||||||
* <li>XML_OPTION_STRIP_ESCAPES: strips out the -- -- comment markers
|
|
||||||
* or CDATA markup inside an XML escape, if found.</li>
|
|
||||||
* </ul>
|
|
||||||
* To get HTMLSax to behave in the same way as the native PHP SAX parser,
|
|
||||||
* using it's default state, you need to switch on XML_OPTION_LINEFEED_BREAK,
|
|
||||||
* XML_OPTION_ENTITIES_PARSED and XML_OPTION_CASE_FOLDING
|
|
||||||
* @param string name of parser option
|
|
||||||
* @param int (optional) 1 to switch on, 0 for off
|
|
||||||
* @access public
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
function set_option($name, $value=1) {
|
|
||||||
if ( array_key_exists($name,$this->state_parser->parser_options) ) {
|
|
||||||
$this->state_parser->parser_options[$name] = $value;
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
require_once('PEAR.php');
|
|
||||||
PEAR::raiseError('XML_HTMLSax3::set_option('.$name.') illegal');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the data handler method which deals with the contents of XML
|
|
||||||
* elements.<br />
|
|
||||||
* The handler method must accept two arguments, the first being an
|
|
||||||
* instance of XML_HTMLSax3 and the second being the contents of an
|
|
||||||
* XML element e.g.
|
|
||||||
* <pre>
|
|
||||||
* function myDataHander(& $parser,$data){}
|
|
||||||
* </pre>
|
|
||||||
* @param string name of method
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
* @see set_object
|
|
||||||
*/
|
|
||||||
function set_data_handler($data_method) {
|
|
||||||
$this->state_parser->handler_object_data =& $this->state_parser->handler_default;
|
|
||||||
$this->state_parser->handler_method_data = $data_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the open and close tag handlers
|
|
||||||
* <br />The open handler method must accept three arguments; the parser,
|
|
||||||
* the tag name and an array of attributes e.g.
|
|
||||||
* <pre>
|
|
||||||
* function myOpenHander(& $parser,$tagname,$attrs=array()){}
|
|
||||||
* </pre>
|
|
||||||
* The close handler method must accept two arguments; the parser and
|
|
||||||
* the tag name e.g.
|
|
||||||
* <pre>
|
|
||||||
* function myCloseHander(& $parser,$tagname){}
|
|
||||||
* </pre>
|
|
||||||
* @param string name of open method
|
|
||||||
* @param string name of close method
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
* @see set_object
|
|
||||||
*/
|
|
||||||
function set_element_handler($opening_method, $closing_method) {
|
|
||||||
$this->state_parser->handler_object_element =& $this->state_parser->handler_default;
|
|
||||||
$this->state_parser->handler_method_opening = $opening_method;
|
|
||||||
$this->state_parser->handler_method_closing = $closing_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the processing instruction handler method e.g. for PHP open
|
|
||||||
* and close tags<br />
|
|
||||||
* The handler method must accept three arguments; the parser, the
|
|
||||||
* PI target and data inside the PI
|
|
||||||
* <pre>
|
|
||||||
* function myPIHander(& $parser,$target, $data){}
|
|
||||||
* </pre>
|
|
||||||
* @param string name of method
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
* @see set_object
|
|
||||||
*/
|
|
||||||
function set_pi_handler($pi_method) {
|
|
||||||
$this->state_parser->handler_object_pi =& $this->state_parser->handler_default;
|
|
||||||
$this->state_parser->handler_method_pi = $pi_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the XML escape handler method e.g. for comments and doctype
|
|
||||||
* declarations<br />
|
|
||||||
* The handler method must accept two arguments; the parser and the
|
|
||||||
* contents of the escaped section
|
|
||||||
* <pre>
|
|
||||||
* function myEscapeHander(& $parser, $data){}
|
|
||||||
* </pre>
|
|
||||||
* @param string name of method
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
* @see set_object
|
|
||||||
*/
|
|
||||||
function set_escape_handler($escape_method) {
|
|
||||||
$this->state_parser->handler_object_escape =& $this->state_parser->handler_default;
|
|
||||||
$this->state_parser->handler_method_escape = $escape_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the JSP/ASP markup handler<br />
|
|
||||||
* The handler method must accept two arguments; the parser and
|
|
||||||
* body of the JASP tag
|
|
||||||
* <pre>
|
|
||||||
* function myJaspHander(& $parser, $data){}
|
|
||||||
* </pre>
|
|
||||||
* @param string name of method
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
* @see set_object
|
|
||||||
*/
|
|
||||||
function set_jasp_handler ($jasp_method) {
|
|
||||||
$this->state_parser->handler_object_jasp =& $this->state_parser->handler_default;
|
|
||||||
$this->state_parser->handler_method_jasp = $jasp_method;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the current string position of the "cursor" inside the XML
|
|
||||||
* document
|
|
||||||
* <br />Intended for use from within a user defined handler called
|
|
||||||
* via the $parser reference e.g.
|
|
||||||
* <pre>
|
|
||||||
* function myDataHandler(& $parser,$data) {
|
|
||||||
* echo( 'Current position: '.$parser->get_current_position() );
|
|
||||||
* }
|
|
||||||
* </pre>
|
|
||||||
* @access public
|
|
||||||
* @return int
|
|
||||||
* @see get_length
|
|
||||||
*/
|
|
||||||
function get_current_position() {
|
|
||||||
return $this->state_parser->position;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the string length of the XML document being parsed
|
|
||||||
* @access public
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
function get_length() {
|
|
||||||
return $this->state_parser->length;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Start parsing some XML
|
|
||||||
* @param string XML document
|
|
||||||
* @access public
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function parse($data) {
|
|
||||||
$this->state_parser->parse($data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,363 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
|
||||||
//
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | PHP Version 4 |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) 1997-2002 The PHP Group |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | This source file is subject to version 2.02 of the PHP license, |
|
|
||||||
// | that is bundled with this package in the file LICENSE, and is |
|
|
||||||
// | available at through the world-wide-web at |
|
|
||||||
// | http://www.php.net/license/3_0.txt. |
|
|
||||||
// | If you did not receive a copy of the PHP license and are unable to |
|
|
||||||
// | obtain it through the world-wide-web, please send a note to |
|
|
||||||
// | [email protected] so we can mail you a copy immediately. |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Authors: Alexander Zhukov <[email protected]> Original port from Python |
|
|
||||||
// | Authors: Harry Fuecks <[email protected]> Port to PEAR + more |
|
|
||||||
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
//
|
|
||||||
// $Id: Decorators.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
//
|
|
||||||
/**
|
|
||||||
* Decorators for dealing with parser options
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @version $Id: Decorators.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
* @see XML_HTMLSax3::set_option
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Trims the contents of element data from whitespace at start and end
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Trim {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_Trim
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_Trim(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Trims the data
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function trimData(&$parser, $data) {
|
|
||||||
$data = trim($data);
|
|
||||||
if ($data != '') {
|
|
||||||
$this->orig_obj->{$this->orig_method}($parser, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Coverts tag names to upper case
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_CaseFolding {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original open handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_open_method;
|
|
||||||
/**
|
|
||||||
* Original close handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_close_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_CaseFolding
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original open handler method
|
|
||||||
* @param string original close handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_CaseFolding(&$orig_obj, $orig_open_method, $orig_close_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_open_method = $orig_open_method;
|
|
||||||
$this->orig_close_method = $orig_close_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Folds up open tag callbacks
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string tag name
|
|
||||||
* @param array tag attributes
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function foldOpen(&$parser, $tag, $attrs=array(), $empty = FALSE) {
|
|
||||||
$this->orig_obj->{$this->orig_open_method}($parser, strtoupper($tag), $attrs, $empty);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Folds up close tag callbacks
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string tag name
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function foldClose(&$parser, $tag, $empty = FALSE) {
|
|
||||||
$this->orig_obj->{$this->orig_close_method}($parser, strtoupper($tag), $empty);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks up data by linefeed characters, resulting in additional
|
|
||||||
* calls to the data handler
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Linefeed {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_LineFeed
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_LineFeed(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks the data up by linefeeds
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function breakData(&$parser, $data) {
|
|
||||||
$data = explode("\n",$data);
|
|
||||||
foreach ( $data as $chunk ) {
|
|
||||||
$this->orig_obj->{$this->orig_method}($parser, $chunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks up data by tab characters, resulting in additional
|
|
||||||
* calls to the data handler
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Tab {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_Tab
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_Tab(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks the data up by linefeeds
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function breakData(&$parser, $data) {
|
|
||||||
$data = explode("\t",$data);
|
|
||||||
foreach ( $data as $chunk ) {
|
|
||||||
$this->orig_obj->{$this->orig_method}($this, $chunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks up data by XML entities and parses them with html_entity_decode(),
|
|
||||||
* resulting in additional calls to the data handler<br />
|
|
||||||
* Requires PHP 4.3.0+
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Entities_Parsed {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_Entities_Parsed
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_Entities_Parsed(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks the data up by XML entities
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function breakData(&$parser, $data) {
|
|
||||||
$data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
|
||||||
foreach ( $data as $chunk ) {
|
|
||||||
$chunk = html_entity_decode($chunk,ENT_NOQUOTES);
|
|
||||||
$this->orig_obj->{$this->orig_method}($this, $chunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Compatibility with older PHP versions
|
|
||||||
*/
|
|
||||||
if (version_compare(phpversion(), '4.3', '<') && !function_exists('html_entity_decode') ) {
|
|
||||||
function html_entity_decode($str, $style=ENT_NOQUOTES) {
|
|
||||||
return strtr($str,
|
|
||||||
array_flip(get_html_translation_table(HTML_ENTITIES,$style)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks up data by XML entities but leaves them unparsed,
|
|
||||||
* resulting in additional calls to the data handler<br />
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Entities_Unparsed {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_Entities_Unparsed
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_Entities_Unparsed(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks the data up by XML entities
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function breakData(&$parser, $data) {
|
|
||||||
$data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
|
||||||
foreach ( $data as $chunk ) {
|
|
||||||
$this->orig_obj->{$this->orig_method}($this, $chunk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Strips the HTML comment markers or CDATA sections from an escape.
|
|
||||||
* If XML_OPTIONS_FULL_ESCAPES is on, this decorator is not used.<br />
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_Escape_Stripper {
|
|
||||||
/**
|
|
||||||
* Original handler object
|
|
||||||
* @var object
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_obj;
|
|
||||||
/**
|
|
||||||
* Original handler method
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $orig_method;
|
|
||||||
/**
|
|
||||||
* Constructs XML_HTMLSax3_Entities_Unparsed
|
|
||||||
* @param object handler object being decorated
|
|
||||||
* @param string original handler method
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function XML_HTMLSax3_Escape_Stripper(&$orig_obj, $orig_method) {
|
|
||||||
$this->orig_obj =& $orig_obj;
|
|
||||||
$this->orig_method = $orig_method;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Breaks the data up by XML entities
|
|
||||||
* @param XML_HTMLSax3
|
|
||||||
* @param string element data
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function strip(&$parser, $data) {
|
|
||||||
// Check for HTML comments first
|
|
||||||
if ( substr($data,0,2) == '--' ) {
|
|
||||||
$patterns = array(
|
|
||||||
'/^\-\-/', // Opening comment: --
|
|
||||||
'/\-\-$/', // Closing comment: --
|
|
||||||
);
|
|
||||||
$data = preg_replace($patterns,'',$data);
|
|
||||||
|
|
||||||
// Check for XML CDATA sections (note: don't do both!)
|
|
||||||
} else if ( substr($data,0,1) == '[' ) {
|
|
||||||
$patterns = array(
|
|
||||||
'/^\[.*CDATA.*\[/s', // Opening CDATA
|
|
||||||
'/\].*\]$/s', // Closing CDATA
|
|
||||||
);
|
|
||||||
$data = preg_replace($patterns,'',$data);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->orig_obj->{$this->orig_method}($this, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,287 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
|
||||||
//
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | PHP Version 4 |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Copyright (c) 1997-2002 The PHP Group |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | This source file is subject to version 2.02 of the PHP license, |
|
|
||||||
// | that is bundled with this package in the file LICENSE, and is |
|
|
||||||
// | available at through the world-wide-web at |
|
|
||||||
// | http://www.php.net/license/3_0.txt. |
|
|
||||||
// | If you did not receive a copy of the PHP license and are unable to |
|
|
||||||
// | obtain it through the world-wide-web, please send a note to |
|
|
||||||
// | [email protected] so we can mail you a copy immediately. |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
// | Authors: Alexander Zhukov <[email protected]> Original port from Python |
|
|
||||||
// | Authors: Harry Fuecks <[email protected]> Port to PEAR + more |
|
|
||||||
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
|
|
||||||
// +----------------------------------------------------------------------+
|
|
||||||
//
|
|
||||||
// $Id: States.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
//
|
|
||||||
/**
|
|
||||||
* Parsing states.
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @version $Id: States.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* Define parser states
|
|
||||||
*/
|
|
||||||
define('XML_HTMLSAX3_STATE_STOP', 0);
|
|
||||||
define('XML_HTMLSAX3_STATE_START', 1);
|
|
||||||
define('XML_HTMLSAX3_STATE_TAG', 2);
|
|
||||||
define('XML_HTMLSAX3_STATE_OPENING_TAG', 3);
|
|
||||||
define('XML_HTMLSAX3_STATE_CLOSING_TAG', 4);
|
|
||||||
define('XML_HTMLSAX3_STATE_ESCAPE', 6);
|
|
||||||
define('XML_HTMLSAX3_STATE_JASP', 7);
|
|
||||||
define('XML_HTMLSAX3_STATE_PI', 8);
|
|
||||||
/**
|
|
||||||
* StartingState searches for the start of any XML tag
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_StartingState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_TAG
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$data = $context->scanUntilString('<');
|
|
||||||
if ($data != '') {
|
|
||||||
$context->handler_object_data->
|
|
||||||
{$context->handler_method_data}($context->htmlsax, $data);
|
|
||||||
}
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
return XML_HTMLSAX3_STATE_TAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Decides which state to move one from after StartingState
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_TagState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant the next state to move into
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
switch($context->ScanCharacter()) {
|
|
||||||
case '/':
|
|
||||||
return XML_HTMLSAX3_STATE_CLOSING_TAG;
|
|
||||||
break;
|
|
||||||
case '?':
|
|
||||||
return XML_HTMLSAX3_STATE_PI;
|
|
||||||
break;
|
|
||||||
case '%':
|
|
||||||
return XML_HTMLSAX3_STATE_JASP;
|
|
||||||
break;
|
|
||||||
case '!':
|
|
||||||
return XML_HTMLSAX3_STATE_ESCAPE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$context->unscanCharacter();
|
|
||||||
return XML_HTMLSAX3_STATE_OPENING_TAG;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Dealing with closing XML tags
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_ClosingTagState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_START
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$tag = $context->scanUntilCharacters('/>');
|
|
||||||
if ($tag != '') {
|
|
||||||
$char = $context->scanCharacter();
|
|
||||||
if ($char == '/') {
|
|
||||||
$char = $context->scanCharacter();
|
|
||||||
if ($char != '>') {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$context->handler_object_element->
|
|
||||||
{$context->handler_method_closing}($context->htmlsax, $tag, FALSE);
|
|
||||||
}
|
|
||||||
return XML_HTMLSAX3_STATE_START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Dealing with opening XML tags
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_OpeningTagState {
|
|
||||||
/**
|
|
||||||
* Handles attributes
|
|
||||||
* @param string attribute name
|
|
||||||
* @param string attribute value
|
|
||||||
* @return void
|
|
||||||
* @access protected
|
|
||||||
* @see XML_HTMLSax3_AttributeStartState
|
|
||||||
*/
|
|
||||||
function parseAttributes(&$context) {
|
|
||||||
$Attributes = array();
|
|
||||||
|
|
||||||
$context->ignoreWhitespace();
|
|
||||||
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
|
|
||||||
while ($attributename != '') {
|
|
||||||
$attributevalue = NULL;
|
|
||||||
$context->ignoreWhitespace();
|
|
||||||
$char = $context->scanCharacter();
|
|
||||||
if ($char == '=') {
|
|
||||||
$context->ignoreWhitespace();
|
|
||||||
$char = $context->ScanCharacter();
|
|
||||||
if ($char == '"') {
|
|
||||||
$attributevalue= $context->scanUntilString('"');
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
} else if ($char == "'") {
|
|
||||||
$attributevalue = $context->scanUntilString("'");
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
} else {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$attributevalue =
|
|
||||||
$context->scanUntilCharacters("> \n\r\t");
|
|
||||||
}
|
|
||||||
} else if ($char !== NULL) {
|
|
||||||
$attributevalue = NULL;
|
|
||||||
$context->unscanCharacter();
|
|
||||||
}
|
|
||||||
$Attributes[$attributename] = $attributevalue;
|
|
||||||
|
|
||||||
$context->ignoreWhitespace();
|
|
||||||
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
|
|
||||||
}
|
|
||||||
return $Attributes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_START
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$tag = $context->scanUntilCharacters("/> \n\r\t");
|
|
||||||
if ($tag != '') {
|
|
||||||
$this->attrs = array();
|
|
||||||
$Attributes = $this->parseAttributes($context);
|
|
||||||
$char = $context->scanCharacter();
|
|
||||||
if ($char == '/') {
|
|
||||||
$char = $context->scanCharacter();
|
|
||||||
if ($char != '>') {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
}
|
|
||||||
$context->handler_object_element->
|
|
||||||
{$context->handler_method_opening}($context->htmlsax, $tag,
|
|
||||||
$Attributes, TRUE);
|
|
||||||
$context->handler_object_element->
|
|
||||||
{$context->handler_method_closing}($context->htmlsax, $tag,
|
|
||||||
TRUE);
|
|
||||||
} else {
|
|
||||||
$context->handler_object_element->
|
|
||||||
{$context->handler_method_opening}($context->htmlsax, $tag,
|
|
||||||
$Attributes, FALSE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return XML_HTMLSAX3_STATE_START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deals with XML escapes handling comments and CDATA correctly
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_EscapeState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_START
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$char = $context->ScanCharacter();
|
|
||||||
if ($char == '-') {
|
|
||||||
$char = $context->ScanCharacter();
|
|
||||||
if ($char == '-') {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$text = $context->scanUntilString('-->');
|
|
||||||
$text .= $context->scanCharacter();
|
|
||||||
$text .= $context->scanCharacter();
|
|
||||||
} else {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$text = $context->scanUntilString('>');
|
|
||||||
}
|
|
||||||
} else if ( $char == '[') {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$text = $context->scanUntilString(']>');
|
|
||||||
$text.= $context->scanCharacter();
|
|
||||||
} else {
|
|
||||||
$context->unscanCharacter();
|
|
||||||
$text = $context->scanUntilString('>');
|
|
||||||
}
|
|
||||||
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
if ($text != '') {
|
|
||||||
$context->handler_object_escape->
|
|
||||||
{$context->handler_method_escape}($context->htmlsax, $text);
|
|
||||||
}
|
|
||||||
return XML_HTMLSAX3_STATE_START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Deals with JASP/ASP markup
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_JaspState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_START
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$text = $context->scanUntilString('%>');
|
|
||||||
if ($text != '') {
|
|
||||||
$context->handler_object_jasp->
|
|
||||||
{$context->handler_method_jasp}($context->htmlsax, $text);
|
|
||||||
}
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
return XML_HTMLSAX3_STATE_START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Deals with XML processing instructions
|
|
||||||
* @package XML_HTMLSax3
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
class XML_HTMLSax3_PiState {
|
|
||||||
/**
|
|
||||||
* @param XML_HTMLSax3_StateParser subclass
|
|
||||||
* @return constant XML_HTMLSAX3_STATE_START
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
function parse(&$context) {
|
|
||||||
$target = $context->scanUntilCharacters(" \n\r\t");
|
|
||||||
$data = $context->scanUntilString('?>');
|
|
||||||
if ($data != '') {
|
|
||||||
$context->handler_object_pi->
|
|
||||||
{$context->handler_method_pi}($context->htmlsax, $target, $data);
|
|
||||||
}
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
$context->IgnoreCharacter();
|
|
||||||
return XML_HTMLSAX3_STATE_START;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
@@ -1,671 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SafeHTML Parser
|
|
||||||
*
|
|
||||||
* PHP versions 4 and 5
|
|
||||||
*
|
|
||||||
* @category HTML
|
|
||||||
* @package SafeHTML
|
|
||||||
* @author Roman Ivanov <[email protected]>
|
|
||||||
* @copyright 2004-2005 Roman Ivanov
|
|
||||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
|
||||||
* @version 1.3.7
|
|
||||||
* @link http://pixel-apes.com/safehtml/
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This package requires HTMLSax3 package
|
|
||||||
*/
|
|
||||||
define("XML_HTMLSAX3", '');
|
|
||||||
require_once(XML_HTMLSAX3 . 'HTMLSax3.php');
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* SafeHTML Parser
|
|
||||||
*
|
|
||||||
* This parser strips down all potentially dangerous content within HTML:
|
|
||||||
* <ul>
|
|
||||||
* <li>opening tag without its closing tag</li>
|
|
||||||
* <li>closing tag without its opening tag</li>
|
|
||||||
* <li>any of these tags: "base", "basefont", "head", "html", "body", "applet",
|
|
||||||
* "object", "iframe", "frame", "frameset", "script", "layer", "ilayer", "embed",
|
|
||||||
* "bgsound", "link", "meta", "style", "title", "blink", "xml" etc.</li>
|
|
||||||
* <li>any of these attributes: on*, data*, dynsrc</li>
|
|
||||||
* <li>javascript:/vbscript:/about: etc. protocols</li>
|
|
||||||
* <li>expression/behavior etc. in styles</li>
|
|
||||||
* <li>any other active content</li>
|
|
||||||
* </ul>
|
|
||||||
* It also tries to convert code to XHTML valid, but htmltidy is far better
|
|
||||||
* solution for this task.
|
|
||||||
*
|
|
||||||
* <b>Example:</b>
|
|
||||||
* <pre>
|
|
||||||
* $parser =& new SafeHTML();
|
|
||||||
* $result = $parser->parse($doc);
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @category HTML
|
|
||||||
* @package SafeHTML
|
|
||||||
* @author Roman Ivanov <[email protected]>
|
|
||||||
* @copyright 1997-2005 Roman Ivanov
|
|
||||||
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
|
|
||||||
* @version Release: @package_version@
|
|
||||||
* @link http://pear.php.net/package/SafeHTML
|
|
||||||
*/
|
|
||||||
class SafeHTML
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Storage for resulting HTML output
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_xhtml = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Array of counters for each tag
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_counter = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stack of unclosed tags
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_stack = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Array of counters for tags that must be deleted with all content
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_dcCounter = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stack of unclosed tags that must be deleted with all content
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_dcStack = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stores level of list (ol/ul) nesting
|
|
||||||
*
|
|
||||||
* @var int
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_listScope = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stack of unclosed list tags
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_liStack = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Array of prepared regular expressions for protocols (schemas) matching
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_protoRegexps = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Array of prepared regular expressions for CSS matching
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
var $_cssRegexps = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of single tags ("<tag />")
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $singleTags = array('area', 'br', 'img', 'input', 'hr', 'wbr', );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of dangerous tags (such tags will be deleted)
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $deleteTags = array(
|
|
||||||
'applet', 'base', 'basefont', 'bgsound', 'blink', 'body',
|
|
||||||
'embed', 'frame', 'frameset', 'head', 'html', 'ilayer',
|
|
||||||
'iframe', 'layer', 'link', 'meta', 'object', 'style',
|
|
||||||
'title', 'script',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of dangerous tags (such tags will be deleted, and all content
|
|
||||||
* inside this tags will be also removed)
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $deleteTagsContent = array('script', 'style', 'title', 'xml', );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type of protocols filtering ('white' or 'black')
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $protocolFiltering = 'white';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of "dangerous" protocols (used for blacklist-filtering)
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $blackProtocols = array(
|
|
||||||
'about', 'chrome', 'data', 'disk', 'hcp',
|
|
||||||
'help', 'javascript', 'livescript', 'lynxcgi', 'lynxexec',
|
|
||||||
'ms-help', 'ms-its', 'mhtml', 'mocha', 'opera',
|
|
||||||
'res', 'resource', 'shell', 'vbscript', 'view-source',
|
|
||||||
'vnd.ms.radio', 'wysiwyg',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of "safe" protocols (used for whitelist-filtering)
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $whiteProtocols = array(
|
|
||||||
'ed2k', 'file', 'ftp', 'gopher', 'http', 'https',
|
|
||||||
'irc', 'mailto', 'news', 'nntp', 'telnet', 'webcal',
|
|
||||||
'xmpp', 'callto',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of attributes that can contain protocols
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $protocolAttributes = array(
|
|
||||||
'action', 'background', 'codebase', 'dynsrc', 'href', 'lowsrc', 'src',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of dangerous CSS keywords
|
|
||||||
*
|
|
||||||
* Whole style="" attribute will be removed, if parser will find one of
|
|
||||||
* these keywords
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $cssKeywords = array(
|
|
||||||
'absolute', 'behavior', 'behaviour', 'content', 'expression',
|
|
||||||
'fixed', 'include-source', 'moz-binding',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of tags that can have no "closing tag"
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
* @deprecated XHTML does not allow such tags
|
|
||||||
*/
|
|
||||||
var $noClose = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of block-level tags that terminates paragraph
|
|
||||||
*
|
|
||||||
* Paragraph will be closed when this tags opened
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $closeParagraph = array(
|
|
||||||
'address', 'blockquote', 'center', 'dd', 'dir', 'div',
|
|
||||||
'dl', 'dt', 'h1', 'h2', 'h3', 'h4',
|
|
||||||
'h5', 'h6', 'hr', 'isindex', 'listing', 'marquee',
|
|
||||||
'menu', 'multicol', 'ol', 'p', 'plaintext', 'pre',
|
|
||||||
'table', 'ul', 'xmp',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of table tags, all table tags outside a table will be removed
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $tableTags = array(
|
|
||||||
'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
|
|
||||||
'thead', 'tr',
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of list tags
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $listTags = array('dir', 'menu', 'ol', 'ul', 'dl', );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of dangerous attributes
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $attributes = array('dynsrc', 'id', 'name', );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of allowed "namespaced" attributes
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
var $attributesNS = array('xml:lang', );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs class
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function SafeHTML()
|
|
||||||
{
|
|
||||||
//making regular expressions based on Proto & CSS arrays
|
|
||||||
foreach ($this->blackProtocols as $proto) {
|
|
||||||
$preg = "/[\s\x01-\x1F]*";
|
|
||||||
for ($i=0; $i<strlen($proto); $i++) {
|
|
||||||
$preg .= $proto{$i} . "[\s\x01-\x1F]*";
|
|
||||||
}
|
|
||||||
$preg .= ":/i";
|
|
||||||
$this->_protoRegexps[] = $preg;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($this->cssKeywords as $css) {
|
|
||||||
$this->_cssRegexps[] = '/' . $css . '/i';
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles the writing of attributes - called from $this->_openHandler()
|
|
||||||
*
|
|
||||||
* @param array $attrs array of attributes $name => $value
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _writeAttrs ($attrs)
|
|
||||||
{
|
|
||||||
if (is_array($attrs)) {
|
|
||||||
foreach ($attrs as $name => $value) {
|
|
||||||
|
|
||||||
$name = strtolower($name);
|
|
||||||
|
|
||||||
if (strpos($name, 'on') === 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (strpos($name, 'data') === 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (in_array($name, $this->attributes)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!preg_match("/^[a-z0-9]+$/i", $name)) {
|
|
||||||
if (!in_array($name, $this->attributesNS))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($value === TRUE) || (is_null($value))) {
|
|
||||||
$value = $name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($name == 'style') {
|
|
||||||
|
|
||||||
// removes insignificant backslahes
|
|
||||||
$value = str_replace("\\", '', $value);
|
|
||||||
|
|
||||||
// removes CSS comments
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
$_value = preg_replace("!/\*.*?\*/!s", '', $value);
|
|
||||||
if ($_value == $value) break;
|
|
||||||
$value = $_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// replace all & to &
|
|
||||||
$value = str_replace('&', '&', $value);
|
|
||||||
$value = str_replace('&', '&', $value);
|
|
||||||
|
|
||||||
foreach ($this->_cssRegexps as $css) {
|
|
||||||
if (preg_match($css, $value)) {
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach ($this->_protoRegexps as $proto) {
|
|
||||||
if (preg_match($proto, $value)) {
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$tempval = preg_replace('/&#(\d+);?/me', "chr('\\1')", $value); //"'
|
|
||||||
$tempval = preg_replace('/&#x([0-9a-f]+);?/mei', "chr(hexdec('\\1'))", $tempval);
|
|
||||||
|
|
||||||
if ((in_array($name, $this->protocolAttributes)) &&
|
|
||||||
(strpos($tempval, ':') !== false))
|
|
||||||
{
|
|
||||||
if ($this->protocolFiltering == 'black') {
|
|
||||||
foreach ($this->_protoRegexps as $proto) {
|
|
||||||
if (preg_match($proto, $tempval)) continue 2;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$_tempval = explode(':', $tempval);
|
|
||||||
$proto = $_tempval[0];
|
|
||||||
if (!in_array($proto, $this->whiteProtocols)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$value = str_replace("\"", """, $value);
|
|
||||||
$this->_xhtml .= ' ' . $name . '="' . $value . '"';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Opening tag handler - called from HTMLSax
|
|
||||||
*
|
|
||||||
* @param object $parser HTML Parser
|
|
||||||
* @param string $name tag name
|
|
||||||
* @param array $attrs tag attributes
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _openHandler(&$parser, $name, $attrs)
|
|
||||||
{
|
|
||||||
$name = strtolower($name);
|
|
||||||
|
|
||||||
if (in_array($name, $this->deleteTagsContent)) {
|
|
||||||
array_push($this->_dcStack, $name);
|
|
||||||
$this->_dcCounter[$name] = isset($this->_dcCounter[$name]) ? $this->_dcCounter[$name]+1 : 1;
|
|
||||||
}
|
|
||||||
if (count($this->_dcStack) != 0) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($name, $this->deleteTags)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!preg_match("/^[a-z0-9]+$/i", $name)) {
|
|
||||||
if (preg_match("!(?:\@|://)!i", $name)) {
|
|
||||||
$this->_xhtml .= '<' . $name . '>';
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (in_array($name, $this->singleTags)) {
|
|
||||||
$this->_xhtml .= '<' . $name;
|
|
||||||
$this->_writeAttrs($attrs);
|
|
||||||
$this->_xhtml .= ' />';
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TABLES: cannot open table elements when we are not inside table
|
|
||||||
if ((isset($this->_counter['table'])) && ($this->_counter['table'] <= 0)
|
|
||||||
&& (in_array($name, $this->tableTags)))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// PARAGRAPHS: close paragraph when closeParagraph tags opening
|
|
||||||
if ((in_array($name, $this->closeParagraph)) && (in_array('p', $this->_stack))) {
|
|
||||||
$this->_closeHandler($parser, 'p');
|
|
||||||
}
|
|
||||||
|
|
||||||
// LISTS: we should close <li> if <li> of the same level opening
|
|
||||||
if ($name == 'li' && count($this->_liStack) &&
|
|
||||||
$this->_listScope == $this->_liStack[count($this->_liStack)-1])
|
|
||||||
{
|
|
||||||
$this->_closeHandler($parser, 'li');
|
|
||||||
}
|
|
||||||
|
|
||||||
// LISTS: we want to know on what nesting level of lists we are
|
|
||||||
if (in_array($name, $this->listTags)) {
|
|
||||||
$this->_listScope++;
|
|
||||||
}
|
|
||||||
if ($name == 'li') {
|
|
||||||
array_push($this->_liStack, $this->_listScope);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_xhtml .= '<' . $name;
|
|
||||||
$this->_writeAttrs($attrs);
|
|
||||||
$this->_xhtml .= '>';
|
|
||||||
array_push($this->_stack,$name);
|
|
||||||
$this->_counter[$name] = isset($this->_counter[$name]) ? $this->_counter[$name]+1 : 1;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Closing tag handler - called from HTMLSax
|
|
||||||
*
|
|
||||||
* @param object $parsers HTML parser
|
|
||||||
* @param string $name tag name
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _closeHandler(&$parser, $name)
|
|
||||||
{
|
|
||||||
|
|
||||||
$name = strtolower($name);
|
|
||||||
|
|
||||||
if (isset($this->_dcCounter[$name]) && ($this->_dcCounter[$name] > 0) &&
|
|
||||||
(in_array($name, $this->deleteTagsContent)))
|
|
||||||
{
|
|
||||||
while ($name != ($tag = array_pop($this->_dcStack))) {
|
|
||||||
$this->_dcCounter[$tag]--;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_dcCounter[$name]--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count($this->_dcStack) != 0) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((isset($this->_counter[$name])) && ($this->_counter[$name] > 0)) {
|
|
||||||
while ($name != ($tag = array_pop($this->_stack))) {
|
|
||||||
$this->_closeTag($tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_closeTag($name);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Closes tag
|
|
||||||
*
|
|
||||||
* @param string $tag tag name
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _closeTag($tag)
|
|
||||||
{
|
|
||||||
if (!in_array($tag, $this->noClose)) {
|
|
||||||
$this->_xhtml .= '</' . $tag . '>';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_counter[$tag]--;
|
|
||||||
|
|
||||||
if (in_array($tag, $this->listTags)) {
|
|
||||||
$this->_listScope--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($tag == 'li') {
|
|
||||||
array_pop($this->_liStack);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Character data handler - called from HTMLSax
|
|
||||||
*
|
|
||||||
* @param object $parser HTML parser
|
|
||||||
* @param string $data textual data
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _dataHandler(&$parser, $data)
|
|
||||||
{
|
|
||||||
if (count($this->_dcStack) == 0) {
|
|
||||||
$this->_xhtml .= $data;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Escape handler - called from HTMLSax
|
|
||||||
*
|
|
||||||
* @param object $parser HTML parser
|
|
||||||
* @param string $data comments or other type of data
|
|
||||||
* @return boolean
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _escapeHandler(&$parser, $data)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the XHTML document
|
|
||||||
*
|
|
||||||
* @return string Processed (X)HTML document
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function getXHTML ()
|
|
||||||
{
|
|
||||||
while ($tag = array_pop($this->_stack)) {
|
|
||||||
$this->_closeTag($tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->_xhtml;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears current document data
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function clear()
|
|
||||||
{
|
|
||||||
$this->_xhtml = '';
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Main parsing fuction
|
|
||||||
*
|
|
||||||
* @param string $doc HTML document for processing
|
|
||||||
* @return string Processed (X)HTML document
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function parse($doc)
|
|
||||||
{
|
|
||||||
|
|
||||||
// Save all '<' symbols
|
|
||||||
$doc = preg_replace("/<(?=[^a-zA-Z\/\!\?\%])/", '<', $doc);
|
|
||||||
|
|
||||||
// Web documents shouldn't contains \x00 symbol
|
|
||||||
$doc = str_replace("\x00", '', $doc);
|
|
||||||
|
|
||||||
// Opera6 bug workaround
|
|
||||||
$doc = str_replace("\xC0\xBC", '<', $doc);
|
|
||||||
|
|
||||||
// UTF-7 encoding ASCII decode
|
|
||||||
$doc = $this->repackUTF7($doc);
|
|
||||||
|
|
||||||
// Instantiate the parser
|
|
||||||
$parser= new XML_HTMLSax3();
|
|
||||||
|
|
||||||
// Set up the parser
|
|
||||||
$parser->set_object($this);
|
|
||||||
|
|
||||||
$parser->set_element_handler('_openHandler','_closeHandler');
|
|
||||||
$parser->set_data_handler('_dataHandler');
|
|
||||||
$parser->set_escape_handler('_escapeHandler');
|
|
||||||
|
|
||||||
$parser->parse($doc);
|
|
||||||
|
|
||||||
return $this->getXHTML();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* UTF-7 decoding fuction
|
|
||||||
*
|
|
||||||
* @param string $str HTML document for recode ASCII part of UTF-7 back to ASCII
|
|
||||||
* @return string Decoded document
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function repackUTF7($str)
|
|
||||||
{
|
|
||||||
return preg_replace_callback('!\+([0-9a-zA-Z/]+)\-!', array($this, 'repackUTF7Callback'), $str);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Additional UTF-7 decoding fuction
|
|
||||||
*
|
|
||||||
* @param string $str String for recode ASCII part of UTF-7 back to ASCII
|
|
||||||
* @return string Recoded string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function repackUTF7Callback($str)
|
|
||||||
{
|
|
||||||
$str = base64_decode($str[1]);
|
|
||||||
$str = preg_replace_callback('/^((?:\x00.)*)((?:[^\x00].)+)/', array($this, 'repackUTF7Back'), $str);
|
|
||||||
return preg_replace('/\x00(.)/', '$1', $str);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Additional UTF-7 encoding fuction
|
|
||||||
*
|
|
||||||
* @param string $str String for recode ASCII part of UTF-7 back to ASCII
|
|
||||||
* @return string Recoded string
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function repackUTF7Back($str)
|
|
||||||
{
|
|
||||||
return $str[1].'+'.rtrim(base64_encode($str[2]), '=').'-';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Local variables:
|
|
||||||
* tab-width: 4
|
|
||||||
* c-basic-offset: 4
|
|
||||||
* c-hanging-comment-ender-p: nil
|
|
||||||
* End:
|
|
||||||
*/
|
|
||||||
|
|
||||||
?>
|
|
||||||
Reference in New Issue
Block a user