-
Anmeldungen
+
t('pruefung/pruefungsbewertungAnmeldungen'); ?>
-
+
@@ -278,20 +286,20 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
+
-
+
-
+
-
+
-
+
@@ -299,7 +307,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
+
diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.json.php b/cis/private/lehre/pruefung/pruefungsbewertung.json.php
old mode 100644
new mode 100755
index 750628aff..0ff901e0c
--- a/cis/private/lehre/pruefung/pruefungsbewertung.json.php
+++ b/cis/private/lehre/pruefung/pruefungsbewertung.json.php
@@ -17,6 +17,14 @@ require_once('../../../../include/pruefungsanmeldung.class.php');
require_once('../../../../include/student.class.php');
require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/datum.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/globals.inc.php');
+require_once('../../../../include/sprache.class.php');
+
+$sprache = getSprache();
+$lang = new sprache();
+$lang->load($sprache);
+$p = new phrasen($sprache);
$uid = get_uid();
@@ -43,7 +51,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = getPruefungMitarbeiter($mitarbeiter_uid);
@@ -53,7 +61,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = getNoten();
@@ -73,7 +81,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$note = filter_input(INPUT_POST, 'note');
@@ -96,7 +104,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
@@ -109,7 +117,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = filter_input(INPUT_POST, 'pruefung_id');
@@ -120,7 +128,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id');
@@ -131,7 +139,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id');
@@ -150,7 +158,8 @@ echo json_encode($data);
* @return Array
*/
function getPruefungMitarbeiter($uid = null)
-{
+{
+ global $p;
$lehrveranstaltung = new lehrveranstaltung();
if($uid !== null)
{
@@ -183,7 +192,7 @@ function getPruefungMitarbeiter($uid = null)
else
{
$data['error']='true';
- $data['errormsg']="Keine Prüfungen vorhanden.";
+ $data['errormsg']=$p->t('pruefung/keinePruefungenVorhanden');
}
return $data;
}
@@ -224,6 +233,7 @@ function getNoten()
*/
function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid)
{
+ global $p;
$pruefungCis = new pruefungCis($pruefung_id);
$lehrveranstaltung = new lehrveranstaltung();
$lehreinheiten = $lehrveranstaltung->getLehreinheitenOfLv($lehrveranstaltung_id, $student_uid);
@@ -231,20 +241,20 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid,
$pruefung->new = true;
if(!empty($lehreinheiten))
{
+ $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id);
+ $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
+
$pruefung->lehreinheit_id = $lehreinheiten[0];
$pruefung->student_uid = $student_uid;
$pruefung->mitarbeiter_uid = $mitarbeiter_uid;
$pruefung->note = $note;
- $pruefung->pruefungstyp_kurzbz = $pruefungCis->pruefungstyp_kurzbz;
+ $pruefung->pruefungstyp_kurzbz = $pruefungsanmeldung->pruefungstyp_kurzbz;
$pruefung->datum = $datum;
$pruefung->anmerkung = $anmerkung;
$pruefung->pruefungsanmeldung_id = $pruefungsanmeldung_id;
$pruefung->insertvon = $uid;
$pruefung->insertamum = date('Y-m-d H:i:s');
- $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id);
- $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id);
-
$datum = new datum();
// var_dump(date("Y-m-d", time()));
// var_dump($pruefungstermin->von);
@@ -265,15 +275,16 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid,
else
{
$data['error']='true';
- $data['errormsg']="Prüfungstermin liegt nicht in der Vergangenheit.";
+ $data['errormsg']=$p->t('pruefung/terminNichtInDerVergangenheit');
+ //$data['errormsg']='Nicht in der Vergangenheit';
}
}
- else
+ else
{
$data['error']='true';
- $data['errormsg']="Keine Lehreinheiten vorhanden.";
+ $data['errormsg']=$p->t('pruefung/keineLehreinheitenVorhanden');
}
-
+
return $data;
}
@@ -286,6 +297,7 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid,
*/
function updateBeurteilung($pruefung_id, $note, $uid, $anmerkung)
{
+ global $p;
$pruefung = new pruefung($pruefung_id);
$pruefung->new = FALSE;
$pruefung->note = $note;
@@ -334,6 +346,7 @@ function getBeurteilung($pruefungsanmeldung_id)
*/
function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id)
{
+ global $p;
$pruefungsanmeldung = new pruefungsanmeldung();
$anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id);
foreach($anmeldungen as $a)
@@ -363,8 +376,8 @@ function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id)
}
else
{
- $data['errormsg']= 'Keine Anmeldungen vorhanden';
+ $data['errormsg']= $p->t('pruefung/keineAnmeldungenVorhanden');
}
}
return $data;
-}
\ No newline at end of file
+}
diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.php b/cis/private/lehre/pruefung/pruefungsbewertung.php
old mode 100644
new mode 100755
index 4a16ac6cd..28894e13c
--- a/cis/private/lehre/pruefung/pruefungsbewertung.php
+++ b/cis/private/lehre/pruefung/pruefungsbewertung.php
@@ -2,22 +2,22 @@
*/
@@ -33,6 +33,14 @@ require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/pruefungCis.class.php');
require_once('../../../../include/mitarbeiter.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/globals.inc.php');
+require_once('../../../../include/sprache.class.php');
+
+$sprache = getSprache();
+$lang = new sprache();
+$lang->load($sprache);
+$p = new phrasen($sprache);
$uid = get_uid();
$db = new basis_db();
@@ -53,7 +61,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
+
@@ -63,17 +71,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
body {
padding: 10px 0 0 10px;
}
-
+
#prfWrapper {
position: absolute;
height: 80%;
width: 300px;
padding: 1.8em 1.5em 1.8em 1em;
- border-radius: 25px;
- /*border: 1px solid black;*/
- box-shadow: 0em 0em 2em 0.5em #888888 inset;
+ //border-radius: 25px;
+ border: 1px solid #dddddd;
+ /*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
-
+
#pruefungen {
/*border: 1px solid black;*/
width: 94%;
@@ -84,7 +92,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
overflow: auto;
overflow-x: hidden;
}
-
+
#anmWrapper {
position: absolute;
/*top: 45px;*/
@@ -92,21 +100,21 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
width: 600px;
height: 80%;
padding: 1.8em 1.5em 1.8em 1em;
- border-radius: 25px;
- /*border: 1px solid black;*/
- box-shadow: 0em 0em 2em 0.5em #888888 inset;
+ /*border-radius: 25px;*/
+ border: 1px solid #dddddd;
+ /*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/
}
-
+
#anmeldungen {
height: 100%;
overflow: auto;
overflow-x: hidden;
}
-
+
#anmeldungen > div, h2 {
padding: 0.5em;
}
-
+
#message {
position: fixed;
top: 0px;
@@ -116,12 +124,12 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
font-size: 1.5em;
font-weight: bold;
}
-
+
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
-
+
.modalOverlay {
position: fixed;
width: 100%;
@@ -130,7 +138,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
-
+
.anmeldung {
font-size: 1.2em;
border-bottom: 1px solid black;
@@ -142,28 +150,28 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
margin: 0 1em 0 0;
float: left;
}
-
+
.anmeldung:last-child {
clear: both;
}
-
+
.anmeldung div:first-child {
width: 250px;
height: 100%;
}
-
+
.saved {
background-color: green;
}
-
+
.unsaved {
background-color: red;
}
-
+
#wrapper {
display: none;
}
-
+
#lektor {
margin: 0 0 1em 0;
}
@@ -209,7 +217,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
});
-
Prüfungsbewertung
+
t('pruefung/pruefungsbewertungTitle'); ?>
isBerechtigt('lehre/pruefungsbeurteilungAdmin'))
@@ -224,7 +232,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
}
else
{
- echo '
Lektor: ';
+ echo '
'.$p->t('pruefung/pruefungLektor').': ';
echo '
';
echo '
';
echo '
';
@@ -234,7 +242,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
Prüfungen
+
t('pruefung/pruefungPruefungenTitle'); ?>
@@ -242,14 +250,14 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-
Anmeldungen
+
t('pruefung/pruefungsbewertungAnmeldungen'); ?>
-
+
diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php
old mode 100644
new mode 100755
index 63a095df7..1338d3af9
--- a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php
+++ b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php
@@ -2,22 +2,22 @@
*/
@@ -29,6 +29,14 @@ require_once('../../../../include/organisationseinheit.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/datum.class.php');
require_once('../../../../include/pruefungsfenster.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/globals.inc.php');
+require_once('../../../../include/sprache.class.php');
+
+$sprache = getSprache();
+$lang = new sprache();
+$lang->load($sprache);
+$p = new phrasen($sprache);
$uid = get_uid();
$db = new basis_db();
@@ -42,7 +50,7 @@ function compareOe($a, $b)
{
if($a->organisationseinheittyp_kurzbz == $b->organisationseinheittyp_kurzbz)
return 0;
-
+
return ($a->organisationseinheittyp_kurzbz < $b->organisationseinheittyp_kurzbz) ? -1 : 1;
}
@@ -50,7 +58,7 @@ function compareOe($a, $b)
-
Prüfungsfenster anlegen
+
t('pruefung/titlePruefungsfenster') ?>
@@ -83,7 +91,7 @@ $oe = $rechte->getOEkurzbz("lehre/pruefungsfenster");
$studiensemester = new studiensemester();
$studiensemester->getAll();
-if (isset($_POST["method"]) && $_POST["method"] == "save")
+if (isset($_POST["method"]) && $_POST["method"] == "save")
{
$method = $_POST["method"];
$studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : "");
@@ -107,30 +115,30 @@ if (isset($_POST["method"]) && $_POST["method"] == "save")
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
- echo "Datensatz erfolgreich gespeichert";
+ echo $p->t('pruefung/erfolgreichgespeichert');
}
else {
- echo "Fehler: ".$pruefungsfenster->errormsg;
+ echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
-// }
-// else
+// }
+// else
// {
// echo "Fehler: Startdatum liegt in der Vergangenheit.";
// }
- }
+ }
else
{
- echo "Fehler: Enddatum liegt in der Vergangenheit.";
+ echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
- }
- else
- {
- echo "Fehler: Enddatum liegt nicht nach dem Startdatum.";
}
- }
- else
+ else
+ {
+ echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
+ }
+ }
+ else
{
- echo "Fehler: Datumseingabe nicht korrekt.";
+ echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
}
else if(isset($_POST["method"]) && $_POST["method"] == "update")
@@ -151,44 +159,44 @@ else if(isset($_POST["method"]) && $_POST["method"] == "update")
$pruefungsfenster_id = $_POST["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
-
+
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
- {
+ {
$pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected;
$pruefungsfenster->oe_kurzbz = $oe_kurzbz;
$pruefungsfenster->start = $startDate;
$pruefungsfenster->ende = $endDate;
if ($pruefungsfenster->save())
{
- echo "Datensatz erfolgreich geändert.";
+ echo $p->t('pruefung/erfolgreichgeaendert');
}
else {
- echo "Fehler: ".$pruefungsfenster->errormsg;
+ echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg;
}
}
else
{
- echo "Keine Berechtigung zum Ändern dieses Datensatzes.";
+ echo $p->t('pruefung/keineBerechtigungZumAendernDesDatensatzes');
}
-// }
-// else
+// }
+// else
// {
// echo "Fehler: Startdatum liegt in der Vergangenheit.";
// }
- }
+ }
else
{
- echo "Fehler: Enddatum liegt in der Vergangenheit.";
+ echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit');
}
- }
- else
- {
- echo "Fehler: Enddatum liegt nicht nach dem Startdatum.";
}
- }
- else
+ else
+ {
+ echo $p->t('pruefung/fehlerEndDatumVorStartDatum');
+ }
+ }
+ else
{
- echo "Fehler: Datumseingabe nicht korrekt.";
+ echo $p->t('pruefung/fehlerDatumNichtKorrekt');
}
}
else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="update")
@@ -198,41 +206,41 @@ else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_
$pruefungsfenster->load($pruefungsfenster_id);
if(!in_array($pruefungsfenster->oe_kurzbz, $oe))
{
- echo "Keine Berechtigung zum Anzeigen dieses Datensatzes.";
+ echo $p->t('pruefung/keineBerechtigungZumAnzeigenDesDatensatzes');
$pruefungsfenster = new pruefungsfenster();
}
$method = $_GET["method"];
-}
+}
else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="delete")
-{
+{
$pruefungsfenster_id = $_GET["id"];
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
-
+
if(in_array($pruefungsfenster->oe_kurzbz, $oe))
{
if(!$pruefungsfenster->hasPruefungen($pruefungsfenster_id) && $pruefungsfenster->errormsg === null)
{
-
+
if($pruefungsfenster->delete($pruefungsfenster_id))
{
- echo "Datensatz erfolgreich gelöscht.";
- }
+ echo $p->t('pruefung/erfolgreichgeloescht');
+ }
else
{
echo "Fehler: ".$pruefungsfenster->errormsg;
}
-
+
}
else
{
- echo "Prüfungsfenster konnte nicht gelöscht werden, da Prüfungen verknüpft sind.";
+ echo $p->t('pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen');
}
$method = $_GET["method"];
}
else
{
- echo "Keine Berechtigung zum Löschen dieses Datensatzes.";
+ echo $p->t('pruefung/keineBerechtigungZumLoeschenDesDatensatzes');
}
}
@@ -240,9 +248,9 @@ $prfFenster = new pruefungsfenster();
$prfFenster->getAll("start");
if($method != "update")
{
-?>
-
Prüfungsfenster-Verwaltung
-
Neues Prüfungsfenster anlegen
+?>
+
t('pruefung/pruefungsfensterVerwaltung'); ?>
+
t('pruefung/neuesPruefungsfensterAnlegen'); ?>
@@ -314,8 +322,8 @@ if($method != "update")
else
{
?>
-
Prüfungsfenster-Verwaltung
-
Prüfungsfenster bearbeiten
+
t('pruefung/pruefungsfensterVerwaltung'); ?>
+
t('pruefung/pruefungsfensterBearbeiten'); ?>
@@ -390,21 +398,21 @@ else
if((isset($_GET["id"]) && $method!="update") || !isset($_GET["id"]))
{
?>
-
Prüfungsfenster bearbeiten
+
t('pruefung/pruefungsfensterBearbeiten'); ?>
- result)){
-
+
?>
- Studiensemester
- Organisationseinheit
- Startdatum
- Enddatum
- Bearbeiten
- Löschen
+ t('global/studiensemester'); ?>
+ t('global/organisationseinheit'); ?>
+ t('pruefung/start'); ?>
+ t('pruefung/ende'); ?>
+ t('global/bearbeiten'); ?>
+ t('global/loeschen'); ?>
@@ -415,14 +423,14 @@ else
if(in_array($result->oe_kurzbz, $oe))
{
$organisationseinheit->load($result->oe_kurzbz);
- echo
+ echo
'
'.$result->studiensemester_kurzbz.'
'.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.'
'.$result->start.'
'.$result->ende.'
- bearbeiten
- löschen
+ '.$p->t('global/bearbeiten').'
+ '. $p->t('global/loeschen').'
';
}
}
@@ -433,14 +441,14 @@ else
}
else
{
- echo
+ echo
'
- Keine Prüfungsfenster gespeichert.
+ '.$p->t('pruefung/keinePruefungsfensterGespeichert').'
';
}
?>
-
diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php
old mode 100644
new mode 100755
index ee2d39f76..5960fe5c2
--- a/cis/private/lehre/pruefung/pruefungstermin.json.php
+++ b/cis/private/lehre/pruefung/pruefungstermin.json.php
@@ -15,6 +15,14 @@ require_once('../../../../include/datum.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/pruefungsfenster.class.php');
require_once('../../../../include/pruefungsanmeldung.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/globals.inc.php');
+require_once('../../../../include/sprache.class.php');
+
+$sprache = getSprache();
+$lang = new sprache();
+$lang->load($sprache);
+$p = new phrasen($sprache);
$uid = get_uid();
@@ -66,7 +74,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall);
@@ -105,7 +113,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall);
@@ -115,7 +123,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$lvId = $_POST["lehrveranstaltung_id"];
@@ -127,7 +135,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = $_REQUEST["pruefung_id"];
@@ -138,7 +146,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
$pruefung_id = $_REQUEST["pruefung_id"];
@@ -158,7 +166,7 @@ switch($method)
{
$data['result']='false';
$data['error']='true';
- $data['errormsg']='Sie haben keine Berechtigung.';
+ $data['errormsg']=$p->t('global/keineBerechtigung');
break;
}
break;
@@ -255,10 +263,11 @@ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz)
*/
function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall)
{
+ global $p;
if($lehrveranstaltungen === null)
{
$data['error']='true';
- $data['errormsg']="Keine Lehrverantaltung angegeben.";
+ $data['errormsg']=$p->t('pruefung/keineLvAngegeben');
return $data;
}
$termineArray = array();
@@ -282,7 +291,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id
else
{
$data['error']='true';
- $data['errormsg']="Kollision mit anderem Termin.";
+ $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin');
return $data;
}
// }
@@ -292,7 +301,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id
// $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters.";
// return $data;
// }
- }
+ }
$pruefung = new pruefungCis();
$pruefung->termine = $termineArray;
@@ -313,7 +322,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id
array_push($pruefung->lehrveranstaltungen, $lv);
}
}
-
+
if($pruefung->save(true))
{
$data['result']="true";
@@ -397,12 +406,13 @@ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_
*/
function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall)
{
+ global $p;
$pruefungsfenster = new pruefungsfenster();
$pruefungsfenster->load($pruefungsfenster_id);
$datum = new datum();
$pruefung = new pruefungCis();
$pruefung->load($pruefung_id);
-
+
if($termineNeu !== null)
{
$termineNeuArray = array();
@@ -426,7 +436,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru
else
{
$data['error']='true';
- $data['errormsg']="Kollision mit anderem Termin.";
+ $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin');
return $data;
}
// }
@@ -442,7 +452,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru
$pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur);
}
}
-
+
if($termine !== null)
{
$termineArray = array();
@@ -474,7 +484,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru
}
$pruefung->termine = $termineArray;
}
-
+
$pruefung->mitarbeiter_uid = $uid;
$pruefung->studiensemester_kurzbz = $studiensemester_kurzbz;
$pruefung->pruefungsfenster_id = $pruefungsfenster_id;
@@ -661,4 +671,4 @@ function checkCollision($uid, $beginn, $ende)
}
return false;
}
-?>
\ No newline at end of file
+?>
diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php
old mode 100644
new mode 100755
index bfc11ec1f..909ea18bd
--- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php
+++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php
@@ -2,22 +2,22 @@
*/
@@ -33,6 +33,14 @@ require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/pruefungCis.class.php');
require_once('../../../../include/mitarbeiter.class.php');
+require_once('../../../../include/phrasen.class.php');
+require_once('../../../../include/globals.inc.php');
+require_once('../../../../include/sprache.class.php');
+
+$sprache = getSprache();
+$lang = new sprache();
+$lang->load($sprache);
+$p = new phrasen($sprache);
$uid = get_uid();
$db = new basis_db();
@@ -49,11 +57,11 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
- Prüfungstermin festlegen
+ t('pruefung/titlePruefungstermin'); ?>
-
+
@@ -68,12 +76,12 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
font-size: 1.5em;
font-weight: bold;
}
-
+
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
-
+
.modalOverlay {
position: fixed;
width: 100%;
@@ -82,7 +90,7 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
-
+
#prfDetails, #prfVerwaltung {
margin: 1em;
}
@@ -142,7 +150,7 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
});
-
Prüfungen verwalten
+
t('pruefung/pruefungenVerwalten'); ?>
-
Prüfungen
+
t('pruefung/pruefungPruefungenTitle'); ?>
- Titel
- Studiensemester
- Lehrveranstaltungen
- Termine
- Methode
- Prüfungstyp
- Einzelprüfung
- Mitarbeiter
- storniert
+ t('pruefung/pruefungTitel'); ?>
+ t('global/studiensemester'); ?>
+ t('global/lehrveranstaltung'); ?>
+ t('pruefung/pruefungTermin'); ?>
+ t('pruefung/pruefungMethode'); ?>
+ t('pruefung/pruefungTyp'); ?>
+ t('pruefung/pruefungEinzelpruefung'); ?>
+ t('pruefung/pruefungMitarbeiter'); ?>
+ t('pruefung/storniert'); ?>
diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php
old mode 100644
new mode 100755
index 03a339775..100fdfbbb
--- a/cis/private/profile/studienplan.php
+++ b/cis/private/profile/studienplan.php
@@ -431,7 +431,7 @@ function drawTree($tree, $depth)
echo $icon." ".$termine." lehrveranstaltung_id&language=$sprache','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">".$row_tree->kurzbz.' - '.$row_tree->bezeichnung." ";
else
// Bezeichnung der Lehrveranstaltung
- echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung;
+ echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.'('.$row_tree->lehrveranstaltung_id.')';
echo $bende.'';
// Semester
@@ -445,6 +445,10 @@ function drawTree($tree, $depth)
echo '';
// Note zu dieser LV vorhanden?
+
+ $lv_kompatibel = new lehrveranstaltung();
+ $kompatibleLVs = $lv_kompatibel->loadLVkompatibel($row_tree->lehrveranstaltung_id);
+
if(isset($noten_arr[$row_tree->lehrveranstaltung_id]))
{
// Positive Note fuer diese LV vorhanden?
@@ -460,6 +464,27 @@ function drawTree($tree, $depth)
else
echo ''.$p->t('studienplan/negativ').' ';
}
+ //check if compatible course has grade
+ elseif(count($kompatibleLVs) > 0)
+ {
+ foreach($kompatibleLVs as $komp)
+ {
+ if(isset($noten_arr[$komp]))
+ {
+ $positiv=false;
+ foreach($noten_arr[$komp] as $note)
+ {
+ if($note_pruef_arr[$note]->positiv)
+ $positiv=true;
+ }
+
+ if($positiv)
+ echo ''.$p->t('studienplan/abgeschlossen').' ';
+ else
+ echo ''.$p->t('studienplan/negativ').' ';
+ }
+ }
+ }
else
{
if($abgeschlossen)
@@ -495,6 +520,19 @@ function drawTree($tree, $depth)
else
$tdinhalt .= ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.' ';
}
+ elseif(count($kompatibleLVs) > 0)
+ {
+ foreach($kompatibleLVs as $komp)
+ {
+ if(isset($noten_arr[$komp][$stsem]))
+ {
+ if($note_pruef_arr[$noten_arr[$komp][$stsem]]->positiv)
+ $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$komp][$stsem]]->anmerkung.' ';
+ else
+ $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$komp][$stsem]]->anmerkung.' ';
+ }
+ }
+ }
else
{
// Angebot der LV und der Kompatiblen pruefen
@@ -564,7 +602,7 @@ function drawTree($tree, $depth)
$tdclass[]='angebot';
if($angemeldet)
{
- $tdinhalt.= ' ';
+ $tdinhalt.= ' ';
}
else
{
@@ -615,6 +653,10 @@ echo ' '.$p->t('studienplan/legende').':
'.$p->t('studienplan/Anmeldung').'
+
+
+ '.$p->t('studienplan/legendeAngemeldet').'
+
'.$p->t('studienplan/legendeLock').'
diff --git a/cms/admin.php b/cms/admin.php
index 6da234e0c..0ff56de25 100644
--- a/cms/admin.php
+++ b/cms/admin.php
@@ -42,7 +42,75 @@ $rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/cms'))
die($rechte->errormsg);
-$berechtigte_oe = $rechte->getOEkurzbz('basis/cms')
+$berechtigte_oe = $rechte->getOEkurzbz('basis/cms');
+
+// Speichern eines Contents per Ajax Request ,
+// daher wird nach dem Speichern mittels exit beendet
+if(isset($_POST['NewContent']))
+{
+ if($rechte->isBerechtigt('basis/cms', null, 'sui'))
+ {
+ $templateContentId = isset($_POST['templateContent']) && $_POST['templateContent'] != 0?$_POST['templateContent']:'';
+ $titel = isset($_POST['titel'])?$_POST['titel']:'Neuer Eintrag';
+
+ if ($templateContentId != '')
+ {
+ $templateContent = new content();
+ $templateContent->getContent($templateContentId);
+ }
+
+ $template = new template();
+ $template->getAll();
+ if(!isset($template->result[0]))
+ exit('Es ist kein Template vorhanden');
+
+ if(in_array('etw',$berechtigte_oe))
+ $oe = 'etw';
+ else
+ $oe = $berechtigte_oe[0];
+
+ $content = new content();
+ $content->new = true;
+ $content->oe_kurzbz= $templateContentId != ''?$templateContent->oe_kurzbz:$oe;
+ $content->template_kurzbz=$templateContentId != ''?$templateContent->template_kurzbz:$template->result[0]->template_kurzbz;
+ $content->titel = $titel;
+ $content->aktiv=true;
+ $content->menu_open=false;
+ $content->content = $templateContentId != ''?$templateContent->content:' ';
+ $content->sichtbar=true;
+ $content->version='1';
+ $content->sprache=$templateContentId != ''?$templateContent->sprache:DEFAULT_LANGUAGE;
+ $content->insertvon = $user;
+ $content->insertamum = date('Y-m-d H:i:s');
+ $content->beschreibung = $templateContentId != ''?$templateContent->beschreibung:'';
+
+ if($content->save())
+ {
+ if($content->saveContentSprache())
+ {
+ if ($templateContentId!='')
+ {
+ $parent_content = new content();
+ $parent_content->content_id = $templateContentId;
+ $parent_content->child_content_id = $content->content_id;
+ $parent_content->insertamum = date('Y-m-d');
+ $parent_content->insertvon = $user;
+ $parent_content->sort=$parent_content->getMaxSort($templateContentId)+1;
+
+ if(!$parent_content->addChild())
+ exit('AddChild '.$content->errormsg);
+ }
+ exit($content->content_id);
+ }
+ else
+ exit('ContentSpracheSave '.$content->errormsg);
+ }
+ else
+ exit('ContentSave '.$content->errormsg);
+ }
+ else
+ exit('Sie haben keine Berechtigung fuer diese Aktion');
+}
?>
diff --git a/cms/menu/menu_addon_zeitsperren.inc.php b/cms/menu/menu_addon_zeitsperren.inc.php
index 4dd07e137..7fef792b8 100755
--- a/cms/menu/menu_addon_zeitsperren.inc.php
+++ b/cms/menu/menu_addon_zeitsperren.inc.php
@@ -31,15 +31,15 @@ class menu_addon_zeitsperren extends menu_addon
public function __construct()
{
parent::__construct();
-
+
$sprache = getSprache();
$user = get_uid();
-
+
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
-
+
$p = new phrasen($sprache);
-
+
$fkt=new funktion();
$fkt->getAll($user);
@@ -50,7 +50,8 @@ class menu_addon_zeitsperren extends menu_addon
'link' => 'private/profile/zeitsperre_days.php?days=12',
'name' => $p->t('menu/zeitsperren')
);
-
+
+ /*
if ($rechte->isBerechtigt('admin',0) || $rechte->isBerechtigt('mitarbeiter'))
{
$this->items[] = array('title' => $p->t('menu/resturlaub'),
@@ -59,8 +60,9 @@ class menu_addon_zeitsperren extends menu_addon
'name' => $p->t('menu/resturlaub')
);
}
-
- if ($rechte->isBerechtigt('admin',0) || $rechte->isBerechtigt('mitarbeiter')
+ */
+
+ if ($rechte->isBerechtigt('admin',0) || $rechte->isBerechtigt('mitarbeiter')
|| $fkt->checkFunktion('stvLtg')|| $fkt->checkFunktion('gLtg')
|| $fkt->checkFunktion('Leitung') || $fkt->checkFunktion('ass'))
{
@@ -85,7 +87,7 @@ class menu_addon_zeitsperren extends menu_addon
'name' => $p->t('menu/assistenz')
);
}
-
+
$stg_obj = new studiengang();
$stg_obj->loadArray($rechte->getStgKz('admin'), 'typ, kurzbz', true);
foreach($stg_obj->result as $row)
@@ -95,11 +97,11 @@ class menu_addon_zeitsperren extends menu_addon
'link' => 'private/profile/zeitsperre.php?funktion=lkt&stg_kz='.$row->studiengang_kz,
'name' => $p->t('menu/lektoren').' '.$row->kurzbzlang
);
- }
+ }
}
$this->output();
}
}
new menu_addon_zeitsperren();
-?>
\ No newline at end of file
+?>
diff --git a/cms/tinymce_dms.php b/cms/tinymce_dms.php
index f32c4a107..e8fa17656 100644
--- a/cms/tinymce_dms.php
+++ b/cms/tinymce_dms.php
@@ -270,7 +270,7 @@ if($importFile != '')
if($dms->save(true))
{
- echo 'File wurde erfolgreich hochgeladen. Filename:'.$filename.' ID:'.$dms->dms_id;
+ echo 'File wurde erfolgreich hochgeladen. Filename:'.$filename.' ID: '.$dms->dms_id.' ';
$dms_id=$dms->dms_id;
if($projekt_kurzbz!='' || $projektphase_id!='')
@@ -282,10 +282,10 @@ if($importFile != '')
else
echo 'Fehler beim Speichern der Daten';
- if(!chgrp(DMS_PATH.$filename,'dms'))
- echo 'CHGRP failed';
- if(!chmod(DMS_PATH.$filename, 0774))
- echo 'CHMOD failed';
+ if(!@chgrp(DMS_PATH.$filename,'dms'))
+ echo ' CHGRP failed';
+ if(!@chmod(DMS_PATH.$filename, 0774))
+ echo ' CHMOD failed';
exec('sudo chown wwwrun '.$filename);
// Lösche File aus Verzeichnis nachdem es raufgeladen wurde
@@ -308,10 +308,10 @@ if(isset($_POST['fileupload']))
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
- if(!chgrp($uploadfile,'dms'))
- echo 'CHGRP failed ';
- if(!chmod($uploadfile, 0774))
- echo 'CHMOD failed ';
+ if(!@chgrp($uploadfile,'dms'))
+ echo ' CHGRP failed';
+ if(!@chmod($uploadfile, 0774))
+ echo ' CHMOD failed';
exec('sudo chown wwwrun '.$uploadfile);
$dms = new dms();
@@ -831,32 +831,43 @@ function drawFilesFromImport()
if ($handle = opendir(IMPORT_PATH))
{
+ echo '';
echo ' Files im Import Ordner
- ';
+
+ File ';
- while (false !== ($file = readdir($handle)))
- {
- if($file != '.' && $file != '..')
- {
- echo'
-
-
- '.$file.'
-
-
- | Upload
-
- ';
- }
- }
- echo'
-
+ while (false !== ($file = readdir($handle)))
+ {
+ if($file != '.' && $file != '..')
+ {
+ echo'
+
+
+ '.$file.'
+
+
+ Upload
+
+ ';
+ }
+ }
+ echo'
+
-
';
- closedir($handle);
+
';
+ closedir($handle);
}
}
/**
@@ -1018,7 +1029,7 @@ function drawFilesList($rows)
Herunterladen ';
if($rechte->isberechtigt('basis/dms',null, 'sui', null))
{
- echo ' dms_id.'/Upload" onclick="window.location=\'#divupload\'; updateBeschreibung(\'';
$beschreibungstext = $row->beschreibung;
$beschreibungstext = str_replace("'","4nführungsze1ch3n",$beschreibungstext);
$beschreibungstext = str_replace('"',"D4n7ührung",$beschreibungstext);
diff --git a/composer.json b/composer.json
old mode 100644
new mode 100755
index 32278e8dc..a64b8607b
--- a/composer.json
+++ b/composer.json
@@ -5,5 +5,14 @@
"components/bootstrap": "3.3.5",
"michelf/php-markdown": "1.5.0"
+ },
+ "require-dev":
+ {
+ "squizlabs/php_codesniffer": "2.*",
+ "fzaninotto/faker": "1.*"
+ },
+ "config":
+ {
+ "bin-dir": "bin"
}
}
diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php
index 41279f8c3..c87e6b586 100644
--- a/content/fasoverlay.js.php
+++ b/content/fasoverlay.js.php
@@ -1771,10 +1771,21 @@ function PrintZutrittskarte()
function PrintStudienblatt(event)
{
var tree = document.getElementById('student-prestudent-tree-rolle');
+ var ss = document.getElementById('statusbarpanel-semester').label;
+
+ var items = tree.view.rowCount;
try
{
- var studienplan_id = getTreeCellText(tree, "student-prestudent-tree-rolle-studienplan_id", 0);
+ var studienplan_id = "";
+ for (var v=0; v < items; v++)
+ {
+ var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v);
+ if(stsem == ss)
+ {
+ studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v);
+ }
+ }
}
catch(e)
{
@@ -1843,7 +1854,7 @@ function PrintStudienblatt(event)
{
if(error>0)
alert(error+' der ausgewaehlten Personen haben keinen Account');
- action = 'content/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&output='+output+'&&uid='+data;
+ action = 'content/pdfExport.php?xsl=Studienblatt&xml=studienblatt.xml.php&output='+output+'&&uid='+data+"&ss="+ss;
window.open(action,'Studienblatt','height=520,width=500,left=350,top=350,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');
}
else
@@ -1858,10 +1869,19 @@ function PrintStudienblatt(event)
function PrintStudienblattEnglisch(event)
{
var tree = document.getElementById('student-prestudent-tree-rolle');
+ var items = tree.view.rowCount;
try
{
- var studienplan_id = getTreeCellText(tree, "student-prestudent-tree-rolle-studienplan_id", 0);
+ var studienplan_id = "";
+ for (var v=0; v < items; v++)
+ {
+ var stsem = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', v);
+ if(stsem == ss)
+ {
+ studienplan_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-studienplan_id', v);
+ }
+ }
}
catch(e)
{
diff --git a/include/anrechnung.class.php b/include/anrechnung.class.php
index 1e4f6db1e..122e587fa 100644
--- a/include/anrechnung.class.php
+++ b/include/anrechnung.class.php
@@ -186,13 +186,25 @@ class anrechnung extends basis_db
* @param $prestudent_id
* @return true wenn ok, false im Fehlerfall
*/
- public function getAnrechnungPrestudent($prestudent_id)
+ public function getAnrechnungPrestudent($prestudent_id, $lehrveranstaltung_id=null, $lehrveranstaltung_id_kompatibel=null)
{
$qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, "
. "lehrveranstaltung_id_kompatibel, genehmigt_von , insertamum, insertvon, updateamum, updatevon "
. "FROM lehre.tbl_anrechnung "
. "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) "
. "WHERE prestudent_id = " . $this->db_add_param($prestudent_id);
+
+ if($lehrveranstaltung_id != NULL)
+ {
+ $qry .= " AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
+ }
+
+ if($lehrveranstaltung_id_kompatibel != NULL)
+ {
+ $qry .= " AND lehrveranstaltung_id_kompatibel=".$this->db_add_param($lehrveranstaltung_id_kompatibel);
+ }
+
+ $qry .= ";";
if ($this->db_query($qry))
{
diff --git a/include/globals.inc.php b/include/globals.inc.php
old mode 100644
new mode 100755
index 2ba9205da..650e0601c
--- a/include/globals.inc.php
+++ b/include/globals.inc.php
@@ -1,73 +1,92 @@
-
+
diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php
index 2173a1b23..680505ffc 100755
--- a/include/lehrveranstaltung.class.php
+++ b/include/lehrveranstaltung.class.php
@@ -1258,6 +1258,12 @@ class lehrveranstaltung extends basis_db
if ($obj->bezeichnung_arr['English'] == '')
$obj->bezeichnung_arr['English'] = $obj->bezeichnung_arr['German'];
+ $obj->sws = $row->sws;
+ $obj->lvs = $row->lvs;
+ $obj->alvs = $row->alvs;
+ $obj->lvps = $row->lvps;
+ $obj->las = $row->las;
+
$obj->stpllv_semester = $row->stpllv_semester;
$obj->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht);
$obj->stpllv_koordinator = $row->stpllv_koordinator;
@@ -1299,7 +1305,7 @@ class lehrveranstaltung extends basis_db
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
- protected function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id)
+ public function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id)
{
$childs = array();
foreach ($this->lehrveranstaltungen as $row)
@@ -1312,7 +1318,7 @@ class lehrveranstaltung extends basis_db
}
return $childs;
}
-
+
/**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
@@ -1335,7 +1341,7 @@ class lehrveranstaltung extends basis_db
{
return false;
}
-
+
}
/**
@@ -2436,5 +2442,51 @@ class lehrveranstaltung extends basis_db
return false;
}
}
+
+ /**
+ * Prüft ob eine Lehrvernstaltung in Studienplordnungen verwendet wird die
+ * nicht mehr in bearbeitung sind. Diese sind fuer die bearbeitung gesperrt
+ * @param integer $lehrveranstaltung_id
+ * @return boolean true wenn gesperrt
+ * @return boolean false wenn nicht gesperrt
+ * @return boolean false und errormsg im Fehlerfall
+ */
+ public function isGesperrt($lehrveranstaltung_id)
+ {
+ $qry = "SELECT
+ count(*) as anzahl
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienplan_lehrveranstaltung USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE
+ tbl_studienplan_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
+ AND tbl_studienordnung.status_kurzbz<>'development'";
+
+ if($result = $this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object($result))
+ {
+ if($row->anzahl>0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg='Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
}
?>
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
old mode 100644
new mode 100755
index 7e38d5702..ee1396f0d
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -973,9 +973,13 @@ class prestudent extends person
return false;
}
- $qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung
- FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
- WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
+ $qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung,
+ tbl_status.bezeichnung_mehrsprachig
+ FROM public.tbl_prestudentstatus
+ LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
+ JOIN public.tbl_status USING (status_kurzbz)
+ WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz
+ AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
if($studiensemester_kurzbz!='')
$qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
@@ -990,6 +994,7 @@ class prestudent extends person
{
$this->prestudent_id = $row->prestudent_id;
$this->status_kurzbz = $row->status_kurzbz;
+ $this->status_mehrsprachig = $this->db_parse_lang_array($row->bezeichnung_mehrsprachig);
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->ausbildungssemester = $row->ausbildungssemester;
$this->datum = $row->datum;
diff --git a/include/projekt.class.php b/include/projekt.class.php
index eddeaafc4..06c67d865 100755
--- a/include/projekt.class.php
+++ b/include/projekt.class.php
@@ -1,454 +1,455 @@
-,
- * Andreas Österreicher
- */
-/**
- * Klasse projekt
- *
- * Verwaltet die Projekte
- */
-require_once(dirname(__FILE__).'/basis_db.class.php');
-
-class projekt extends basis_db
-{
- public $new; // boolean
- public $result = array(); // projekt Objekt
-
- //Tabellenspalten
- public $projekt_kurzbz; // string
- public $nummer; // string
- public $titel; // string
- public $beschreibung; // string
- public $beginn; // date
- public $ende; // date
- public $oe_kurzbz; // string
- public $insertamum; // timestamp
- public $insertvon; // string
- public $updateamum; // timestamp
- public $updatevon; // string
- public $budget;
- public $farbe;
+,
+ * Andreas Österreicher
+ */
+/**
+ * Klasse projekt
+ *
+ * Verwaltet die Projekte
+ * @param string $projekt_kurzbz primary key Projektname.
+ */
+require_once(dirname(__FILE__).'/basis_db.class.php');
+
+class projekt extends basis_db
+{
+ public $new; // boolean
+ public $result = array(); // projekt Objekt
+
+ //Tabellenspalten
+ public $projekt_kurzbz; // string
+ public $nummer; // string
+ public $titel; // string
+ public $beschreibung; // string
+ public $beginn; // date
+ public $ende; // date
+ public $oe_kurzbz; // string
+ public $insertamum; // timestamp
+ public $insertvon; // string
+ public $updateamum; // timestamp
+ public $updatevon; // string
+ public $budget;
+ public $farbe;
public $anzahl_ma; // integer
public $aufwand_pt; // integer
-
-
-
- /**
- * Konstruktor
- * @param $projekt_kurzbz ID der Projektarbeit, die geladen werden soll (Default=null)
- */
- public function __construct($projekt_kurzbz=null)
- {
- parent::__construct();
-
- if($projekt_kurzbz != null)
- $this->load($projekt_kurzbz);
- }
-
- /**
- * Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz
- * @param $projekt_kurzbz Kurzbz des Projekts
- * @return true wenn ok, false im Fehlerfall
- */
- public function load($projekt_kurzbz)
- {
- $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
-
- if($this->db_query($qry))
- {
- if($row = $this->db_fetch_object())
- {
- $this->projekt_kurzbz = $row->projekt_kurzbz;
- $this->nummer= $row->nummer;
- $this->titel= $row->titel;
- $this->beschreibung= $row->beschreibung;
- $this->beginn= $row->beginn;
- $this->ende = $row->ende;
- $this->oe_kurzbz= $row->oe_kurzbz;
- $this->budget= $row->budget;
- $this->farbe= $row->farbe;
- $this->anzahl_ma = $row->anzahl_ma;
- $this->aufwand_pt = $row->aufwand_pt;
-
- return true;
- }
- else
- {
- $this->errormsg = 'Datensatz wurde nicht gefunden';
- return false;
- }
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Laedt alle aktuellen Projekte
- * @param $kommend lädt auch alle zukünftigen
- * @return boolean
- */
- public function getProjekteAktuell($filter_kommende = false, $oe=null)
- {
- $qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
-
- if($filter_kommende)
- $qry.= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
- else
- $qry.=" (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
-
-
- if(!is_null($oe))
- $qry.= ' AND oe_kurzbz='.$this->db_add_param($oe);
-
- $qry.= ' ORDER BY oe_kurzbz;';
- if($this->db_query($qry))
- {
- while($row = $this->db_fetch_object())
- {
- $obj = new projekt();
-
- $obj->projekt_kurzbz = $row->projekt_kurzbz;
- $obj->nummer = $row->nummer;
- $obj->titel = $row->titel;
- $obj->beschreibung = $row->beschreibung;
- $obj->beginn = $row->beginn;
- $obj->ende = $row->ende;
- $obj->oe_kurzbz = $row->oe_kurzbz;
- $obj->budget = $row->budget;
- $obj->farbe = $row->farbe;
- $obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
- $obj->anzahl_ma = $row->anzahl_ma;
- $obj->aufwand_pt = $row->aufwand_pt;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Laedt alle Projekte die zwischen beginn und ende liegen
- * @param $beginn
- * @param $ende
- * @param $oe
- * @return boolean
- */
- public function getProjekteInZeitraum($beginn, $ende, $oe=null)
- {
- $qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn);
- if (!is_null($oe))
- $qry.= " AND oe_kurzbz=".$this->db_add_param($oe);
- $qry.= ' ORDER BY oe_kurzbz;';
- //echo $qry;
- if($this->db_query($qry))
- {
- while($row = $this->db_fetch_object())
- {
- $obj = new projekt();
-
- $obj->projekt_kurzbz = $row->projekt_kurzbz;
- $obj->nummer = $row->nummer;
- $obj->titel = $row->titel;
- $obj->beschreibung = $row->beschreibung;
- $obj->beginn = $row->beginn;
- $obj->ende = $row->ende;
- $obj->oe_kurzbz = $row->oe_kurzbz;
- $obj->budget = $row->budget;
- $obj->farbe = $row->farbe;
- $obj->anzahl_ma = $row->anzahl_ma;
- $obj->aufwand_pt = $row->aufwand_pt;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
-
- /**
- * Laedt die Projeke einer Organisationseinheit
- * @param $projekt_kurzbz Kurzbezeichnung des Projekts
- * @return true wenn ok, false im Fehlerfall
- */
- public function getProjekte($oe=null)
- {
- $qry = 'SELECT * FROM fue.tbl_projekt';
- if (!is_null($oe))
- $qry.= " WHERE oe_kurzbz=".$this->db_add_param($oe);
- $qry.= ' ORDER BY oe_kurzbz;';
- //echo $qry;
- if($this->db_query($qry))
- {
- while($row = $this->db_fetch_object())
- {
- $obj = new projekt();
-
- $obj->projekt_kurzbz = $row->projekt_kurzbz;
- $obj->nummer = $row->nummer;
- $obj->titel = $row->titel;
- $obj->beschreibung = $row->beschreibung;
- $obj->beginn = $row->beginn;
- $obj->ende = $row->ende;
- $obj->oe_kurzbz = $row->oe_kurzbz;
- $obj->budget = $row->budget;
- $obj->farbe = $row->farbe;
- $obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
- $obj->anzahl_ma = $row->anzahl_ma;
- $obj->aufwand_pt = $row->aufwand_pt;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Prueft die Variablen auf Gueltigkeit
- * @return true wenn ok, false im Fehlerfall
- */
- protected function validate()
- {
-
- //Gesamtlaenge pruefen
- if ($this->projekt_kurzbz==null)
- {
- $this->errormsg='Projekt kurzbz darf nicht NULL sein!';
- }
- if ($this->oe_kurzbz==null)
- {
- $this->errormsg='OE kurbz darf nicht NULL sein!';
- }
- if(mb_strlen($this->projekt_kurzbz)>16)
- {
- $this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein';
- return false;
- }
- if(mb_strlen($this->nummer)>8)
- {
- $this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein';
- return false;
- }
- if(mb_strlen($this->titel)>256)
- {
- $this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein';
- return false;
- }
-
- $this->errormsg = '';
- return true;
- }
-
- /**
- * Speichert den aktuellen Datensatz in die Datenbank
- * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
- * andernfalls wird der Datensatz mit der ID in $projekt_kurzbz aktualisiert
- * @return true wenn ok, false im Fehlerfall
- */
- public function save($new=null)
- {
- //Variablen pruefen
- if(!$this->validate())
- return false;
-
- if($new==null)
- $new = $this->new;
-
- if($new)
- {
- //Neuen Datensatz einfuegen
-
- $qry='INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('.
- $this->db_add_param($this->projekt_kurzbz).', '.
- $this->db_add_param($this->nummer).', '.
- $this->db_add_param($this->titel).', '.
- $this->db_add_param($this->beschreibung).', '.
- $this->db_add_param($this->beginn).', '.
- $this->db_add_param($this->ende).', '.
- $this->db_add_param($this->budget).', '.
- $this->db_add_param($this->farbe).', '.
+
+
+
+ /**
+ * Konstruktor
+ * @param string $projekt_kurzbz ID der Projektarbeit, die geladen werden soll (Default=null).
+ */
+ public function __construct($projekt_kurzbz = null)
+ {
+ parent::__construct();
+
+ if($projekt_kurzbz != null)
+ $this->load($projekt_kurzbz);
+ }
+
+ /**
+ * Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz
+ * @param string $projekt_kurzbz Kurzbz des Projekts.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function load($projekt_kurzbz)
+ {
+ $qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
+
+ if ($this->db_query($qry))
+ {
+ if ($row = $this->db_fetch_object())
+ {
+ $this->projekt_kurzbz = $row->projekt_kurzbz;
+ $this->nummer = $row->nummer;
+ $this->titel = $row->titel;
+ $this->beschreibung = $row->beschreibung;
+ $this->beginn = $row->beginn;
+ $this->ende = $row->ende;
+ $this->oe_kurzbz = $row->oe_kurzbz;
+ $this->budget = $row->budget;
+ $this->farbe = $row->farbe;
+ $this->anzahl_ma = $row->anzahl_ma;
+ $this->aufwand_pt = $row->aufwand_pt;
+
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Datensatz wurde nicht gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Laedt alle aktuellen Projekte
+ * @param bool $filter_kommende Lädt auch alle zukünftigen.
+ * @param string $oe Organisationseinheit.
+ * @return bool
+ */
+ public function getProjekteAktuell($filter_kommende = false, $oe = null)
+ {
+ $qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
+
+ if($filter_kommende)
+ $qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
+ else
+ $qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
+
+
+ if (!is_null($oe))
+ $qry .= ' AND oe_kurzbz='.$this->db_add_param($oe);
+
+ $qry .= ' ORDER BY oe_kurzbz;';
+ if ($this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object())
+ {
+ $obj = new projekt();
+
+ $obj->projekt_kurzbz = $row->projekt_kurzbz;
+ $obj->nummer = $row->nummer;
+ $obj->titel = $row->titel;
+ $obj->beschreibung = $row->beschreibung;
+ $obj->beginn = $row->beginn;
+ $obj->ende = $row->ende;
+ $obj->oe_kurzbz = $row->oe_kurzbz;
+ $obj->budget = $row->budget;
+ $obj->farbe = $row->farbe;
+ $obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
+ $obj->anzahl_ma = $row->anzahl_ma;
+ $obj->aufwand_pt = $row->aufwand_pt;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Laedt alle Projekte die zwischen beginn und ende liegen
+ * @param date $beginn Anfang.
+ * @param date $ende Ende.
+ * @param string $oe Organisationseinheit.
+ * @return bool
+ */
+ public function getProjekteInZeitraum($beginn, $ende, $oe = null)
+ {
+ $qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn);
+ if (!is_null($oe))
+ $qry .= " AND oe_kurzbz=".$this->db_add_param($oe);
+ $qry .= ' ORDER BY oe_kurzbz;';
+ //echo $qry;
+ if ($this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object())
+ {
+ $obj = new projekt();
+
+ $obj->projekt_kurzbz = $row->projekt_kurzbz;
+ $obj->nummer = $row->nummer;
+ $obj->titel = $row->titel;
+ $obj->beschreibung = $row->beschreibung;
+ $obj->beginn = $row->beginn;
+ $obj->ende = $row->ende;
+ $obj->oe_kurzbz = $row->oe_kurzbz;
+ $obj->budget = $row->budget;
+ $obj->farbe = $row->farbe;
+ $obj->anzahl_ma = $row->anzahl_ma;
+ $obj->aufwand_pt = $row->aufwand_pt;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+
+ /**
+ * Laedt die Projeke einer Organisationseinheit
+ * @param string $oe Organisationseinheit.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function getProjekte($oe = null)
+ {
+ $qry = 'SELECT * FROM fue.tbl_projekt';
+ if (!is_null($oe))
+ $qry .= " WHERE oe_kurzbz=".$this->db_add_param($oe);
+ $qry .= ' ORDER BY oe_kurzbz;';
+ //echo $qry;
+ if ($this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object())
+ {
+ $obj = new projekt();
+
+ $obj->projekt_kurzbz = $row->projekt_kurzbz;
+ $obj->nummer = $row->nummer;
+ $obj->titel = $row->titel;
+ $obj->beschreibung = $row->beschreibung;
+ $obj->beginn = $row->beginn;
+ $obj->ende = $row->ende;
+ $obj->oe_kurzbz = $row->oe_kurzbz;
+ $obj->budget = $row->budget;
+ $obj->farbe = $row->farbe;
+ $obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
+ $obj->anzahl_ma = $row->anzahl_ma;
+ $obj->aufwand_pt = $row->aufwand_pt;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Prueft die Variablen auf Gueltigkeit
+ * @return true wenn ok, false im Fehlerfall
+ */
+ protected function validate()
+ {
+ //Gesamtlaenge pruefen
+ if ($this->projekt_kurzbz == null)
+ {
+ $this->errormsg = 'Projekt kurzbz darf nicht NULL sein!';
+ }
+ if ($this->oe_kurzbz == null)
+ {
+ $this->errormsg = 'OE kurbz darf nicht NULL sein!';
+ }
+ if (mb_strlen($this->projekt_kurzbz) > 16)
+ {
+ $this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein';
+ return false;
+ }
+ if (mb_strlen($this->nummer) > 8)
+ {
+ $this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein';
+ return false;
+ }
+ if (mb_strlen($this->titel) > 256)
+ {
+ $this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein';
+ return false;
+ }
+
+ $this->errormsg = '';
+ return true;
+ }
+
+ /**
+ * Speichert den aktuellen Datensatz in die Datenbank
+ * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
+ * andernfalls wird der Datensatz mit der ID in $projekt_kurzbz aktualisiert
+ * @param bool $new Neu ja/nein.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function save($new = null)
+ {
+ //Variablen pruefen
+ if(!$this->validate())
+ return false;
+
+ if ($new == null)
+ $new = $this->new;
+
+ if ($new)
+ {
+ //Neuen Datensatz einfuegen
+
+ $qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('.
+ $this->db_add_param($this->projekt_kurzbz).', '.
+ $this->db_add_param($this->nummer).', '.
+ $this->db_add_param($this->titel).', '.
+ $this->db_add_param($this->beschreibung).', '.
+ $this->db_add_param($this->beginn).', '.
+ $this->db_add_param($this->ende).', '.
+ $this->db_add_param($this->budget).', '.
+ $this->db_add_param($this->farbe).', '.
$this->db_add_param($this->oe_kurzbz).','.
$this->db_add_param($this->aufwand_pt).','.
- $this->db_add_param($this->anzahl_ma).','.
- $this->db_add_param($this->aufwandstyp_kurzbz).');';
- }
- else
- {
- //Updaten des bestehenden Datensatzes
-
- $qry='UPDATE fue.tbl_projekt SET '.
- 'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
- 'nummer='.$this->db_add_param($this->nummer).', '.
- 'titel='.$this->db_add_param($this->titel).', '.
- 'beschreibung='.$this->db_add_param($this->beschreibung).', '.
- 'beginn='.$this->db_add_param($this->beginn).', '.
- 'ende='.$this->db_add_param($this->ende).', '.
- 'budget='.$this->db_add_param($this->budget).', '.
- 'farbe='.$this->db_add_param($this->farbe).', '.
+ $this->db_add_param($this->anzahl_ma).','.
+ $this->db_add_param($this->aufwandstyp_kurzbz).');';
+ }
+ else
+ {
+ //Updaten des bestehenden Datensatzes
+
+ $qry = 'UPDATE fue.tbl_projekt SET '.
+ 'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
+ 'nummer='.$this->db_add_param($this->nummer).', '.
+ 'titel='.$this->db_add_param($this->titel).', '.
+ 'beschreibung='.$this->db_add_param($this->beschreibung).', '.
+ 'beginn='.$this->db_add_param($this->beginn).', '.
+ 'ende='.$this->db_add_param($this->ende).', '.
+ 'budget='.$this->db_add_param($this->budget).', '.
+ 'farbe='.$this->db_add_param($this->farbe).', '.
'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '.
'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '.
- 'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '.
- 'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '.
- 'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';';
- }
-
- if($this->db_query($qry))
- {
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Speichern der Daten';
- return false;
- }
- }
-
- /**
- * Loescht den Datenensatz
- * @param $projekt_kurzbz Projekt das geloescht werden soll
- * @return true wenn ok, false im Fehlerfall
- */
- public function delete($projekt_kurzbz)
- {
-
- $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
-
- if($this->db_query($qry))
- {
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Loeschen des Datensatzes';
- return false;
- }
- }
-
- /**
- * Liefert die Projekte zu denen ein Mitarbeiter zugeordnet ist.
- * Optional auch mit den Zuteilungen zu Projektphasen.
- * @param $mitarbeiter_uid
- * @param $projektphasen boolean Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
- */
- function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen=false)
- {
- $qry = "SELECT DISTINCT
- tbl_projekt.*
- FROM
- fue.tbl_ressource
- JOIN fue.tbl_projekt_ressource USING(ressource_id)
- JOIN fue.tbl_projekt USING(projekt_kurzbz)
- WHERE (beginn<=now() or beginn is null)
- AND (ende>=now() OR ende is null)
- AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
-
- if ($projektphasen==true)
- $qry.= "UNION
-
- SELECT DISTINCT
- tbl_projekt.*
- FROM
- fue.tbl_projektphase
- JOIN fue.tbl_projekt USING (projekt_kurzbz)
- JOIN fue.tbl_projekt_ressource USING (projektphase_id)
- JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
- WHERE (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
- AND (tbl_projekt.ende>=now() OR tbl_projekt.ende is null)
- AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
-
- if($result = $this->db_query($qry))
- {
- while($row = $this->db_fetch_object($result))
- {
- $obj = new projekt();
-
- $obj->projekt_kurzbz = $row->projekt_kurzbz;
- $obj->nummer = $row->nummer;
- $obj->titel = $row->titel;
- $obj->beschreibung = $row->beschreibung;
- $obj->beginn = $row->beginn;
- $obj->ende = $row->ende;
- $obj->oe_kurzbz = $row->oe_kurzbz;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->erromsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
- public function getProjektFromBestellung($bestellung_id)
- {
- $qry ="select * from fue.tbl_projekt
- join wawi.tbl_projekt_bestellung USING (projekt_kurzbz)
- where bestellung_id= ".$this->db_add_param($bestellung_id);
-
- if($this->db_query($qry))
- {
- if($row = $this->db_fetch_object())
- {
- $this->projekt_kurzbz = $row->projekt_kurzbz;
- $this->nummer= $row->nummer;
- $this->titel= $row->titel;
- $this->beschreibung= $row->beschreibung;
- $this->beginn= $row->beginn;
- $this->ende = $row->ende;
- $this->oe_kurzbz= $row->oe_kurzbz;
- $this->budget= $row->budget;
- $this->farbe= $row->farbe;
- $this->anzahl_ma = $row->anzahl_ma;
- $this->aufwand_pt = $row->aufwand_pt;
-
- return true;
- }
- else
- {
- $this->errormsg = 'Datensatz wurde nicht gefunden';
- return false;
- }
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
-}
-?>
+ 'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '.
+ 'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '.
+ 'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';';
+ }
+
+ if ($this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Loescht den Datenensatz
+ * @param string $projekt_kurzbz Projekt das geloescht werden soll.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function delete($projekt_kurzbz)
+ {
+ $qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
+
+ if ($this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Loeschen des Datensatzes';
+ return false;
+ }
+ }
+
+ /**
+ * Liefert die Projekte zu denen ein Mitarbeiter zugeordnet ist.
+ * Optional auch mit den Zuteilungen zu Projektphasen.
+ * @param string $mitarbeiter_uid MitarbeiterUID.
+ * @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
+ * @return true wenn ok, false im Fehlerfall
+ */
+ function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen = false)
+ {
+ $qry = "SELECT DISTINCT
+ tbl_projekt.*
+ FROM
+ fue.tbl_ressource
+ JOIN fue.tbl_projekt_ressource USING(ressource_id)
+ JOIN fue.tbl_projekt USING(projekt_kurzbz)
+ WHERE (beginn<=now() or beginn is null)
+ AND (ende>=now() OR ende is null)
+ AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
+
+ if ($projektphasen == true)
+ $qry .= "UNION
+
+ SELECT DISTINCT
+ tbl_projekt.*
+ FROM
+ fue.tbl_projektphase
+ JOIN fue.tbl_projekt USING (projekt_kurzbz)
+ JOIN fue.tbl_projekt_ressource USING (projektphase_id)
+ JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
+ WHERE (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
+ AND (tbl_projekt.ende>=now() OR tbl_projekt.ende is null OR 1=1)
+ AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
+
+ if ($result = $this->db_query($qry))
+ {
+ while ($row = $this->db_fetch_object($result))
+ {
+ $obj = new projekt();
+
+ $obj->projekt_kurzbz = $row->projekt_kurzbz;
+ $obj->nummer = $row->nummer;
+ $obj->titel = $row->titel;
+ $obj->beschreibung = $row->beschreibung;
+ $obj->beginn = $row->beginn;
+ $obj->ende = $row->ende;
+ $obj->oe_kurzbz = $row->oe_kurzbz;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->erromsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+ public function getProjektFromBestellung($bestellung_id)
+ {
+ $qry = "select * from fue.tbl_projekt
+ join wawi.tbl_projekt_bestellung USING (projekt_kurzbz)
+ where bestellung_id= ".$this->db_add_param($bestellung_id);
+
+ if ($this->db_query($qry))
+ {
+ if ($row = $this->db_fetch_object())
+ {
+ $this->projekt_kurzbz = $row->projekt_kurzbz;
+ $this->nummer = $row->nummer;
+ $this->titel = $row->titel;
+ $this->beschreibung = $row->beschreibung;
+ $this->beginn = $row->beginn;
+ $this->ende = $row->ende;
+ $this->oe_kurzbz = $row->oe_kurzbz;
+ $this->budget = $row->budget;
+ $this->farbe = $row->farbe;
+ $this->anzahl_ma = $row->anzahl_ma;
+ $this->aufwand_pt = $row->aufwand_pt;
+
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Datensatz wurde nicht gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+}
+?>
diff --git a/include/pruefung.class.php b/include/pruefung.class.php
old mode 100644
new mode 100755
diff --git a/include/pruefungsanmeldung.class.php b/include/pruefungsanmeldung.class.php
index a1bcf9c0a..49dd8dd54 100644
--- a/include/pruefungsanmeldung.class.php
+++ b/include/pruefungsanmeldung.class.php
@@ -39,6 +39,7 @@ class pruefungsanmeldung extends basis_db {
public $statusupdatevon; //varchar(32)
public $statusupdateamum; //timestamp
public $anrechnung_id; //integer
+ public $pruefungstyp_kurzbz; //varchar(32)
/**
* Konstruktor
@@ -92,7 +93,7 @@ class pruefungsanmeldung extends basis_db {
if($new)
{
- $qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id) VALUES ('
+ $qry = 'INSERT INTO campus.tbl_pruefungsanmeldung (uid, pruefungstermin_id, lehrveranstaltung_id, status_kurzbz, wuensche, reihung, kommentar, anrechnung_id, pruefungstyp_kurzbz) VALUES ('
. $this->db_add_param($this->uid).', '
. $this->db_add_param($this->pruefungstermin_id).', '
. $this->db_add_param($this->lehrveranstaltung_id).', '
@@ -100,7 +101,8 @@ class pruefungsanmeldung extends basis_db {
. $this->db_add_param($this->wuensche).', '
. $this->db_add_param($this->reihung).', '
. $this->db_add_param($this->kommentar).', '
- . $this->db_add_param($this->anrechnung_id).');';
+ . $this->db_add_param($this->anrechnung_id).', '
+ . $this->db_add_param($this->pruefungstyp_kurzbz).');';
}
else
{
@@ -113,6 +115,7 @@ class pruefungsanmeldung extends basis_db {
. 'reihung='.$this->db_add_param($this->reihung).', '
. 'kommentar='.$this->db_add_param($this->kommentar).', '
. 'anrechnung_id='.$this->db_add_param($this->anrechnung_id)
+ . 'pruefungstyp_kurzbz='.$this->db_add_param($this->pruefungstyp_kurzbz)
. ' WHERE pruefungsanmeldung_id='.$this->db_add_param($this->pruefungsanmeldung_id).';';
}
@@ -162,6 +165,7 @@ class pruefungsanmeldung extends basis_db {
$this->statusupdateamum = $row->statusupdateamum;
$this->statusupdatevon = $row->statusupdatevon;
$this->anrechnung_id = $row->anrechnung_id;
+ $this->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
}
return true;
}
@@ -206,6 +210,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdateamum = $row->statusupdateamum;
$anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id;
+ $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
array_push($anmeldungen, $anmeldung);
}
return $anmeldungen;
@@ -264,6 +269,7 @@ class pruefungsanmeldung extends basis_db {
$anmeldung->statusupdateamum = $row->statusupdateamum;
$anmeldung->statusupdatevon = $row->statusupdatevon;
$anmeldung->anrechnung_id = $row->anrechnung_id;
+ $anmeldung->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz;
array_push($anmeldungen, $anmeldung);
}
return $anmeldungen;
diff --git a/include/studienordnung.class.php b/include/studienordnung.class.php
index 5a341570c..7a203568f 100644
--- a/include/studienordnung.class.php
+++ b/include/studienordnung.class.php
@@ -155,9 +155,10 @@ class studienordnung extends basis_db
}
else
{
- $qry = 'SELECT sto.*, s.bezeichnung as status_bezeichnung, sem.* FROM lehre.tbl_studienordnung sto
+ $qry = 'SELECT distinct sto.*, s.bezeichnung as status_bezeichnung, sem.* FROM lehre.tbl_studienordnung sto
JOIN lehre.tbl_studienordnungstatus s USING(status_kurzbz)
- LEFT JOIN lehre.tbl_studienordnung_semester sem USING (studienordnung_id)
+ LEFT JOIN lehre.tbl_studienplan USING(studienordnung_id)
+ LEFT JOIN lehre.tbl_studienplan_semester sem USING (studienplan_id)
WHERE studiengang_kz='.$this->db_add_param($studiengang_kz, FHC_INTEGER, false);
if (!is_null($studiensemester_kurzbz))
@@ -200,7 +201,8 @@ class studienordnung extends basis_db
{
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->semester = $row->semester;
- $obj->studienordnung_semester_id = $row->studienordnung_semester_id;
+ //$obj->studienordnung_semester_id = $row->studienordnung_semester_id;
+ $obj->studienplan_semester_id = $row->studienplan_semester_id;
}
$this->result[] = $obj;
}
diff --git a/include/studienplan.class.php b/include/studienplan.class.php
index 17611725c..b34bae50b 100644
--- a/include/studienplan.class.php
+++ b/include/studienplan.class.php
@@ -609,8 +609,8 @@ class studienplan extends basis_db
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->sort = $row->sort;
- $this->curriculum = $row->curriculum;
- $this->export = $row->export;
+ $this->curriculum = $this->db_parse_bool($row->curriculum);
+ $this->export = $this->db_parse_bool($row->export);
$this->new=false;
return true;
}
@@ -700,7 +700,7 @@ class studienplan extends basis_db
* @param $ausbuldungssemester
* @param $orgform_kurzbz
*/
- function getStudienplaeneFromSem($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz = "")
+ function getStudienplaeneFromSem($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester="", $orgform_kurzbz = "")
{
$qry = "SELECT
*
@@ -711,8 +711,10 @@ class studienplan extends basis_db
WHERE
tbl_studienplan.aktiv
AND tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)."
- AND tbl_studienplan_semester.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
- AND tbl_studienplan_semester.semester=".$this->db_add_param($ausbildungssemester);
+ AND tbl_studienplan_semester.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz);
+
+ if($ausbildungssemester!='')
+ $qry.=" AND tbl_studienplan_semester.semester=".$this->db_add_param($ausbildungssemester);
if($orgform_kurzbz!='')
{
@@ -896,12 +898,17 @@ class studienplan extends basis_db
$this->db_add_param($key["ausbildungssemester"]) . '); ';
}
- if (!$this->db_query($qry))
+ if($qry!='')
{
- $this->errormsg = 'Fehler beim Speichern des Datensatzes';
- return false;
+ if (!$this->db_query($qry))
+ {
+ $this->errormsg = 'Fehler beim Speichern des Datensatzes';
+ return false;
+ }
+ return true;
}
- return true;
+ else
+ return true;
}
else
{
diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php
new file mode 100755
index 000000000..c76ad5096
--- /dev/null
+++ b/locale/de-AT/pruefung.php
@@ -0,0 +1,113 @@
+phrasen['pruefung/titlePruefungsfenster'] = 'Prüfungsfenster anlegen';
+$this->phrasen['pruefung/erfolgreichgespeichert'] = 'Datensatz erfolgreich gespeichert';
+$this->phrasen['pruefung/fehler'] = 'Fehler: ';
+$this->phrasen['pruefung/fehlerEndDatumInDerVergangenheit'] = 'Fehler: Enddatum liegt in der Vergangenheit.';
+$this->phrasen['pruefung/fehlerEndDatumVorStartDatum'] = 'Fehler: Enddatum liegt nicht nach dem Startdatum.';
+$this->phrasen['pruefung/fehlerDatumNichtKorrekt'] = 'Fehler: Datumseingabe nicht korrekt.';
+$this->phrasen['pruefung/erfolgreichgeaendert'] = 'Datensatz erfolgreich geändert';
+$this->phrasen['pruefung/keineBerechtigungZumAendernDesDatensatzes'] = 'Keine Berechtigung zum Ändern dieses Datensatzes.';
+$this->phrasen['pruefung/keineBerechtigungZumAnzeigenDesDatensatzes'] = 'Keine Berechtigung zum Anzeigen dieses Datensatzes.';
+$this->phrasen['pruefung/erfolgreichgeloescht'] = 'Datensatz erfolgreich gelöscht';
+$this->phrasen['pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen'] = 'Prüfungsfenster konnte nicht gelöscht werden, da Prüfungen verknüpft sind.';
+$this->phrasen['pruefung/keineBerechtigungZumLoeschenDesDatensatzes'] = 'Keine Berechtigung zum Löschen dieses Datensatzes.';
+$this->phrasen['pruefung/pruefungsfensterVerwaltung'] = 'Prüfungsfenster-Verwaltung';
+$this->phrasen['pruefung/neuesPruefungsfensterAnlegen'] = 'Neues Prüfungsfenster anlegen';
+$this->phrasen['pruefung/start'] = 'Startdatum';
+$this->phrasen['pruefung/ende'] = 'Enddatum';
+$this->phrasen['pruefung/pruefungsfensterBearbeiten'] = 'Prüfungsfenster bearbeiten';
+$this->phrasen['pruefung/keinePruefungsfensterGespeichert'] = 'Keine Prüfungsfenster gespeichert.';
+// Termin festlegen
+$this->phrasen['pruefung/titlePruefungstermin'] = 'Prüfungstermin festlegen';
+$this->phrasen['pruefung/pruefungLektor'] = 'Lektor';
+$this->phrasen['pruefung/pruefungenVerwalten'] = 'Prüfungen verwalten';
+$this->phrasen['pruefung/pruefungTitel'] = 'Titel';
+$this->phrasen['pruefung/pruefungsfenster'] = 'Prüfungsfenster';
+$this->phrasen['pruefung/pruefungMethode'] = 'Methode';
+$this->phrasen['pruefung/pruefungEinzelpruefung'] = 'Einzelprüfung';
+$this->phrasen['pruefung/pruefungTyp'] = 'Prüfungstyp';
+$this->phrasen['pruefung/pruefungIntervall'] = 'Prüfungsintervall';
+$this->phrasen['pruefung/pruefungTermin'] = 'Termin';
+$this->phrasen['pruefung/pruefungMinTeilnehmer'] = 'min. Teilnehmer';
+$this->phrasen['pruefung/pruefungMaxTeilnehmer'] = 'max. Teilnehmer';
+$this->phrasen['pruefung/pruefungSammelklausur'] = 'Sammelklausur';
+$this->phrasen['pruefung/pruefungTerminHinzufuegen'] = 'Termin hinzufügen';
+$this->phrasen['pruefung/pruefungPruefungenTitle'] = 'Prüfungen';
+$this->phrasen['pruefung/pruefungMitarbeiter'] = 'Mitarbeiter';
+$this->phrasen['pruefung/storniert'] = 'storniert';
+
+// pruefung.js.php
+$this->phrasen['pruefung/keinFensterVorhanden'] = 'Keine Prüfungsfenster vorhanden';
+$this->phrasen['pruefung/keineDatenVorhanden'] = 'Keine Daten vorhanden.';
+$this->phrasen['pruefung/anmeldefristAbgelaufen'] = 'Anmeldefrist abgelaufen';
+$this->phrasen['pruefung/stornierenMoeglichBis'] = 'Stornieren möglich bis';
+$this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Anmeldung möglich bis';
+$this->phrasen['pruefung/zurLvAnmeldung'] = 'zur LV-Anmeldung';
+$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Zuerst Prüfung auswählen.';
+$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'von Lektor hinzugefügt';
+$this->phrasen['pruefung/bestaetigen'] = 'Bestätigen';
+$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:';
+$this->phrasen['pruefung/bestaetigt'] = 'bestätigt';
+$this->phrasen['pruefung/statusAenderungVon'] = 'Satusänderung von';
+$this->phrasen['pruefung/reihungSpeichern'] = 'Reihung speichern';
+$this->phrasen['pruefung/listeDrucken'] = 'Liste drucken';
+$this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: ';
+$this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort ';
+$this->phrasen['pruefung/imBuero'] = ' im Büro';
+$this->phrasen['pruefung/raum'] = ' Raum';
+$this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern';
+$this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.';
+$this->phrasen['pruefung/studiengangAuswaehlen'] = 'Studiengang auswählen';
+$this->phrasen['pruefung/keinePruefungenVorhanden'] = 'Keine Prüfungen vorhanden.';
+$this->phrasen['pruefung/kommentarZu'] = 'Kommentar zu ';
+$this->phrasen['pruefung/kommentarSpeichern'] = 'Kommentar speichern';
+$this->phrasen['pruefung/kommentarErfolgreichGespeichert'] = 'Kommentar erfolgreich gespeichert.';
+$this->phrasen['pruefung/formulardatenNichtKorrekt'] = 'Formulardaten sind nicht korrekt.';
+$this->phrasen['pruefung/pruefungErfolgreichGespeichert'] = 'Prüfung erfolgreich gespeichert.';
+$this->phrasen['pruefung/lehrveranstaltungAuswaehlen'] = 'Lehrveranstaltung auswählen ...';
+$this->phrasen['pruefung/keineLehrveranstaltungenVorhanden'] = 'Keine Lehrveranstaltungen vorhanden.';
+$this->phrasen['pruefung/pruefungStornieren'] = 'Prüfung stornieren';
+$this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreich entfernt';
+$this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert';
+$this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht';
+
+// pruefungsbewertung
+$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
+$this->phrasen['pruefung/pruefungsbewertungAnmeldungen'] = 'Anmeldungen';
+ // pruefungsanmeldung
+$this->phrasen['pruefung/anmeldungFuer'] = 'Prüfungsanmeldung für';
+$this->phrasen['pruefung/filter'] = 'Filter';
+$this->phrasen['pruefung/details'] = 'Details';
+$this->phrasen['pruefung/lvDetails'] = 'LV-Details';
+$this->phrasen['pruefung/pruefungsDetails'] = 'Prüfungsdetails';
+$this->phrasen['pruefung/typ'] = 'Typ';
+$this->phrasen['pruefung/intervall'] = 'Intervall';
+$this->phrasen['pruefung/besuchteLehrveranstaltungen'] = 'Besuchte Lehrveranstaltungen';
+$this->phrasen['pruefung/freiePlaetze'] = 'freie Plätze';
+$this->phrasen['pruefung/lvVonStudiengang'] = 'Lehrveranstaltungen von Studiengang';
+$this->phrasen['pruefung/lvAlle'] = 'Alle Lehrveranstaltungen';
+$this->phrasen['pruefung/anmeldungSpeichern'] = 'Anmeldung speichern';
+$this->phrasen['pruefung/studienverpflichtung'] = 'Studienverpflichtung';
+
+// liste
+$this->phrasen['pruefung/anmeldungsliste'] = 'Anmeldungsliste';
+$this->phrasen['pruefung/fehlenderParam_lvid'] = 'Fehlender Parameter lehrveranstaltung_id';
+$this->phrasen['pruefung/fehlenderParam_terminid'] = 'Fehlender Parameter termin_id';
+$this->phrasen['pruefung/fehlenderParam_studiensemester'] = 'Fehlender Parameter studiensemester';
+$this->phrasen['pruefung/pruefer'] = 'Prüfer';
+$this->phrasen['pruefung/keineBestaetigtenAnmeldungenVorhanden'] = 'Keine bestätigten Anmeldungen vorhanden.';
+$this->phrasen['pruefung/keineLvAngegeben'] = 'Keine Lehrverantaltung angegeben.';
+$this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Kollision mit anderem Termin.';
+$this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'Prüfungstermin liegt nicht in der Vergangenheit.';
+$this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Keine Lehreinheiten vorhanden.';
+$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Keine Anmeldungen vorhanden.';
+
+// anmeldungen Verwalten
+$this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Prüfungsanmeldung Verwaltung';
+$this->phrasen['pruefung/anmeldungenVerwalten'] = 'Anmeldungen Verwalten';
+
+
+
+
+?>
diff --git a/locale/de-AT/studienplan.php b/locale/de-AT/studienplan.php
old mode 100644
new mode 100755
index b43658bee..4aa7dfc90
--- a/locale/de-AT/studienplan.php
+++ b/locale/de-AT/studienplan.php
@@ -15,6 +15,7 @@ $this->phrasen['studienplan/legende']='Legende';
$this->phrasen['studienplan/legendeLVwirdAngeboten']='Lehrveranstaltung wird in diesem Semester angeboten';
$this->phrasen['studienplan/legendeLock']='Lehrveranstaltung für dieses Semester gesperrt';
$this->phrasen['studienplan/legendeEmpfehlung']='Empfehlung';
+$this->phrasen['studienplan/legendeAngemeldet']='angemeldet';
$this->phrasen['studienplan/LehrveranstalungWaehlen']='Bitte wählen Sie die Lehrveranstaltung zu der Sie sich anmelden möchten:';
$this->phrasen['studienplan/AnmeldungDerzeitNichtMoeglich']='Derzeit sind noch keine Anmeldungen moeglich';
$this->phrasen['studienplan/bereitsAngemeldet']='Sie sind bereits zu dieser Lehrveranstaltung angemeldet';
@@ -24,4 +25,3 @@ $this->phrasen['studienplan/einschreibungErfolgreich']='Sie wurden erfolgreich i
$this->phrasen['studienplan/AnmeldungNichtMoeglich']='Keine Anmeldung moeglich';
$this->phrasen['studienplan/regelabgeschlossen']='abgeschlossen';
?>
-
diff --git a/locale/en-US/pruefung.php b/locale/en-US/pruefung.php
new file mode 100755
index 000000000..c76ad5096
--- /dev/null
+++ b/locale/en-US/pruefung.php
@@ -0,0 +1,113 @@
+phrasen['pruefung/titlePruefungsfenster'] = 'Prüfungsfenster anlegen';
+$this->phrasen['pruefung/erfolgreichgespeichert'] = 'Datensatz erfolgreich gespeichert';
+$this->phrasen['pruefung/fehler'] = 'Fehler: ';
+$this->phrasen['pruefung/fehlerEndDatumInDerVergangenheit'] = 'Fehler: Enddatum liegt in der Vergangenheit.';
+$this->phrasen['pruefung/fehlerEndDatumVorStartDatum'] = 'Fehler: Enddatum liegt nicht nach dem Startdatum.';
+$this->phrasen['pruefung/fehlerDatumNichtKorrekt'] = 'Fehler: Datumseingabe nicht korrekt.';
+$this->phrasen['pruefung/erfolgreichgeaendert'] = 'Datensatz erfolgreich geändert';
+$this->phrasen['pruefung/keineBerechtigungZumAendernDesDatensatzes'] = 'Keine Berechtigung zum Ändern dieses Datensatzes.';
+$this->phrasen['pruefung/keineBerechtigungZumAnzeigenDesDatensatzes'] = 'Keine Berechtigung zum Anzeigen dieses Datensatzes.';
+$this->phrasen['pruefung/erfolgreichgeloescht'] = 'Datensatz erfolgreich gelöscht';
+$this->phrasen['pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen'] = 'Prüfungsfenster konnte nicht gelöscht werden, da Prüfungen verknüpft sind.';
+$this->phrasen['pruefung/keineBerechtigungZumLoeschenDesDatensatzes'] = 'Keine Berechtigung zum Löschen dieses Datensatzes.';
+$this->phrasen['pruefung/pruefungsfensterVerwaltung'] = 'Prüfungsfenster-Verwaltung';
+$this->phrasen['pruefung/neuesPruefungsfensterAnlegen'] = 'Neues Prüfungsfenster anlegen';
+$this->phrasen['pruefung/start'] = 'Startdatum';
+$this->phrasen['pruefung/ende'] = 'Enddatum';
+$this->phrasen['pruefung/pruefungsfensterBearbeiten'] = 'Prüfungsfenster bearbeiten';
+$this->phrasen['pruefung/keinePruefungsfensterGespeichert'] = 'Keine Prüfungsfenster gespeichert.';
+// Termin festlegen
+$this->phrasen['pruefung/titlePruefungstermin'] = 'Prüfungstermin festlegen';
+$this->phrasen['pruefung/pruefungLektor'] = 'Lektor';
+$this->phrasen['pruefung/pruefungenVerwalten'] = 'Prüfungen verwalten';
+$this->phrasen['pruefung/pruefungTitel'] = 'Titel';
+$this->phrasen['pruefung/pruefungsfenster'] = 'Prüfungsfenster';
+$this->phrasen['pruefung/pruefungMethode'] = 'Methode';
+$this->phrasen['pruefung/pruefungEinzelpruefung'] = 'Einzelprüfung';
+$this->phrasen['pruefung/pruefungTyp'] = 'Prüfungstyp';
+$this->phrasen['pruefung/pruefungIntervall'] = 'Prüfungsintervall';
+$this->phrasen['pruefung/pruefungTermin'] = 'Termin';
+$this->phrasen['pruefung/pruefungMinTeilnehmer'] = 'min. Teilnehmer';
+$this->phrasen['pruefung/pruefungMaxTeilnehmer'] = 'max. Teilnehmer';
+$this->phrasen['pruefung/pruefungSammelklausur'] = 'Sammelklausur';
+$this->phrasen['pruefung/pruefungTerminHinzufuegen'] = 'Termin hinzufügen';
+$this->phrasen['pruefung/pruefungPruefungenTitle'] = 'Prüfungen';
+$this->phrasen['pruefung/pruefungMitarbeiter'] = 'Mitarbeiter';
+$this->phrasen['pruefung/storniert'] = 'storniert';
+
+// pruefung.js.php
+$this->phrasen['pruefung/keinFensterVorhanden'] = 'Keine Prüfungsfenster vorhanden';
+$this->phrasen['pruefung/keineDatenVorhanden'] = 'Keine Daten vorhanden.';
+$this->phrasen['pruefung/anmeldefristAbgelaufen'] = 'Anmeldefrist abgelaufen';
+$this->phrasen['pruefung/stornierenMoeglichBis'] = 'Stornieren möglich bis';
+$this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Anmeldung möglich bis';
+$this->phrasen['pruefung/zurLvAnmeldung'] = 'zur LV-Anmeldung';
+$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Zuerst Prüfung auswählen.';
+$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'von Lektor hinzugefügt';
+$this->phrasen['pruefung/bestaetigen'] = 'Bestätigen';
+$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Anmerkung des Studenten:';
+$this->phrasen['pruefung/bestaetigt'] = 'bestätigt';
+$this->phrasen['pruefung/statusAenderungVon'] = 'Satusänderung von';
+$this->phrasen['pruefung/reihungSpeichern'] = 'Reihung speichern';
+$this->phrasen['pruefung/listeDrucken'] = 'Liste drucken';
+$this->phrasen['pruefung/pruefungsraum'] = 'Prüfungsraum: ';
+$this->phrasen['pruefung/pruefungsort'] = 'Prüfungsort ';
+$this->phrasen['pruefung/imBuero'] = ' im Büro';
+$this->phrasen['pruefung/raum'] = ' Raum';
+$this->phrasen['pruefung/raumSpeichern'] = ' Raum speichern';
+$this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Reihung erfolgreich geändert.';
+$this->phrasen['pruefung/studiengangAuswaehlen'] = 'Studiengang auswählen';
+$this->phrasen['pruefung/keinePruefungenVorhanden'] = 'Keine Prüfungen vorhanden.';
+$this->phrasen['pruefung/kommentarZu'] = 'Kommentar zu ';
+$this->phrasen['pruefung/kommentarSpeichern'] = 'Kommentar speichern';
+$this->phrasen['pruefung/kommentarErfolgreichGespeichert'] = 'Kommentar erfolgreich gespeichert.';
+$this->phrasen['pruefung/formulardatenNichtKorrekt'] = 'Formulardaten sind nicht korrekt.';
+$this->phrasen['pruefung/pruefungErfolgreichGespeichert'] = 'Prüfung erfolgreich gespeichert.';
+$this->phrasen['pruefung/lehrveranstaltungAuswaehlen'] = 'Lehrveranstaltung auswählen ...';
+$this->phrasen['pruefung/keineLehrveranstaltungenVorhanden'] = 'Keine Lehrveranstaltungen vorhanden.';
+$this->phrasen['pruefung/pruefungStornieren'] = 'Prüfung stornieren';
+$this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Lehrveranstaltung erfolgreich entfernt';
+$this->phrasen['pruefung/pruefungStorniert'] = 'Prüfung storniert';
+$this->phrasen['pruefung/terminGeloescht'] = 'Termin gelöscht';
+
+// pruefungsbewertung
+$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Prüfungsbewertung';
+$this->phrasen['pruefung/pruefungsbewertungAnmeldungen'] = 'Anmeldungen';
+ // pruefungsanmeldung
+$this->phrasen['pruefung/anmeldungFuer'] = 'Prüfungsanmeldung für';
+$this->phrasen['pruefung/filter'] = 'Filter';
+$this->phrasen['pruefung/details'] = 'Details';
+$this->phrasen['pruefung/lvDetails'] = 'LV-Details';
+$this->phrasen['pruefung/pruefungsDetails'] = 'Prüfungsdetails';
+$this->phrasen['pruefung/typ'] = 'Typ';
+$this->phrasen['pruefung/intervall'] = 'Intervall';
+$this->phrasen['pruefung/besuchteLehrveranstaltungen'] = 'Besuchte Lehrveranstaltungen';
+$this->phrasen['pruefung/freiePlaetze'] = 'freie Plätze';
+$this->phrasen['pruefung/lvVonStudiengang'] = 'Lehrveranstaltungen von Studiengang';
+$this->phrasen['pruefung/lvAlle'] = 'Alle Lehrveranstaltungen';
+$this->phrasen['pruefung/anmeldungSpeichern'] = 'Anmeldung speichern';
+$this->phrasen['pruefung/studienverpflichtung'] = 'Studienverpflichtung';
+
+// liste
+$this->phrasen['pruefung/anmeldungsliste'] = 'Anmeldungsliste';
+$this->phrasen['pruefung/fehlenderParam_lvid'] = 'Fehlender Parameter lehrveranstaltung_id';
+$this->phrasen['pruefung/fehlenderParam_terminid'] = 'Fehlender Parameter termin_id';
+$this->phrasen['pruefung/fehlenderParam_studiensemester'] = 'Fehlender Parameter studiensemester';
+$this->phrasen['pruefung/pruefer'] = 'Prüfer';
+$this->phrasen['pruefung/keineBestaetigtenAnmeldungenVorhanden'] = 'Keine bestätigten Anmeldungen vorhanden.';
+$this->phrasen['pruefung/keineLvAngegeben'] = 'Keine Lehrverantaltung angegeben.';
+$this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Kollision mit anderem Termin.';
+$this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'Prüfungstermin liegt nicht in der Vergangenheit.';
+$this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Keine Lehreinheiten vorhanden.';
+$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Keine Anmeldungen vorhanden.';
+
+// anmeldungen Verwalten
+$this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Prüfungsanmeldung Verwaltung';
+$this->phrasen['pruefung/anmeldungenVerwalten'] = 'Anmeldungen Verwalten';
+
+
+
+
+?>
diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php
new file mode 100755
index 000000000..7a515b417
--- /dev/null
+++ b/locale/it-IT/abgabetool.php
@@ -0,0 +1,71 @@
+phrasen['abgabetool/abgabeLektorenbereich']='Consegna portale lettori';
+$this->phrasen['abgabetool/abgabeStudentenbereich']='consegna portale studente';
+$this->phrasen['abgabetool/abgabetermine']='scadenze consegna';
+$this->phrasen['abgabetool/abgabetool']='Strumenti di consegna';
+$this->phrasen['abgabetool/abgabetyp']='tipologia consegna';
+$this->phrasen['abgabetool/abgabeZusatzdaten']='consegna dati integrativi';
+$this->phrasen['abgabetool/abgegebenAm']='consegnato il';
+$this->phrasen['abgabetool/abgegebeneDatei']='file consegnato';
+$this->phrasen['abgabetool/abstract']='abstract';
+$this->phrasen['abgabetool/abstractEng']='abstract in inglese';
+$this->phrasen['abgabetool/alleArbeitenAnzeigen']='mostra tutti gli elaborati seguiti';
+$this->phrasen['abgabetool/benoten']='valutazione';
+$this->phrasen['abgabetool/beschreibungAbgabe']='breve descrizione consegna';
+$this->phrasen['abgabetool/betreuer']='Tutor';
+$this->phrasen['abgabetool/betreuerart']='Tipologia di Tutor';
+$this->phrasen['abgabetool/dateiupload']='Uplooad file';
+$this->phrasen['abgabetool/dateiZuGross']='File superiore a 15 MB! ';
+$this->phrasen['abgabetool/dateneingabeUnvollstaendig']='I dati immessi sono incompleti';
+$this->phrasen['abgabetool/datum']='data';
+$this->phrasen['abgabetool/details']='dettagli';
+$this->phrasen['abgabetool/deutscheSchlagwoerter']='parole chiave tedesche';
+$this->phrasen['abgabetool/downloadProjektarbeit']='scaricato documento';
+$this->phrasen['abgabetool/eidesstattlicheErklaerung']='Dichiaro sull\'onore di aver redatto autonomamente il presente elaborato ';
+$this->phrasen['abgabetool/eingabeTerminPersonen']='inserisci scadenza per più persone';
+$this->phrasen['abgabetool/emailAnBetreuer']='scrivi email a relatore';
+$this->phrasen['abgabetool/englischeSchlagwoerter']='parole chiave inglesi';
+$this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='dichiarazione non accettata';
+$this->phrasen['abgabetool/fehlerBetreuerNichtGefundenKeinMail']='Impossibile trovare il relatore. Nessuna email spedita';
+$this->phrasen['abgabetool/fehlerMail']='errore di spedizione della email!';
+$this->phrasen['abgabetool/fehlerMailBegutachter']='Errore di trasmissione della mail al (primo) esaminatore';
+$this->phrasen['abgabetool/fehlerMailStudent']='errore di spedizione della mai agli studenti!';
+$this->phrasen['abgabetool/fehlerTerminEintragen']='scadenza non è stata registrata!';
+$this->phrasen['abgabetool/fehlerTerminLoeschen']='Errore in sede di cancellazione della scadenza!';
+$this->phrasen['abgabetool/fix']='fisso';
+$this->phrasen['abgabetool/fixerAbgabetermin']='scadenza consegna inderogabile';
+$this->phrasen['abgabetool/gelesenUndAkzeptiert']='Letto e accettato';
+$this->phrasen['abgabetool/keineBerechtigungStudentenansicht']='Errore di autorizzazione per accedere al portale studente';
+$this->phrasen['abgabetool/keineTermineVorhanden']='nessuna scadenza attuale';
+$this->phrasen['abgabetool/keinPDF']='Upload non è un file PDF! Ripetere l\'upload';
+$this->phrasen['abgabetool/kontrolleZusatzdaten']='controllo dati integrativi';
+$this->phrasen['abgabetool/kontrollierteSchlagwoerter']='parole chiave controllate / voci??';
+$this->phrasen['abgabetool/mailVerschicktAn']='l\'email è atata spedita a ';
+$this->phrasen['abgabetool/maxZeichen']='(massimo 5000 caratteri)';
+$this->phrasen['abgabetool/neuenTerminSpeichern']='salva nuova scadenza';
+$this->phrasen['abgabetool/nurPDF']='solo PDF max 15 MB';
+$this->phrasen['abgabetool/pflichtfeld']='campo obbligatorio';
+$this->phrasen['abgabetool/plagiatspruefung']='vai alla verifica antiplagio';
+$this->phrasen['abgabetool/projektabgabeUebersicht']='consegna progetto - mostra tutti';
+$this->phrasen['abgabetool/seitenanzahl']='numero pagine';
+$this->phrasen['abgabetool/spracheDerArbeit']='lingua dell\'elaborato';
+$this->phrasen['abgabetool/student']='Studente';
+$this->phrasen['abgabetool/studentenansicht']='portale studenti';
+$this->phrasen['abgabetool/TeminVorhanden']='questa scadenza è già stata inserita';
+$this->phrasen['abgabetool/termin']='scadenza ';
+$this->phrasen['abgabetool/terminaenderungSpeichern']='salva modifica scadenza';
+$this->phrasen['abgabetool/terminLoeschen']='cancella scadenza';
+$this->phrasen['abgabetool/terminNichtGefunden']='scadenza non trovata';
+$this->phrasen['abgabetool/terminserieAnlegen']='crea serie scadenze';
+$this->phrasen['abgabetool/terminserieAnlegenHelp']='crea scadenza per più persone';
+$this->phrasen['abgabetool/terminuebersicht']='panoramica scadenze';
+$this->phrasen['abgabetool/terminuebersichtAnzeigen']='mostra tutti le scadenze';
+$this->phrasen['abgabetool/terminVorbei']='scadenza prescritta';
+$this->phrasen['abgabetool/terminVorhanden']='questa scadenza è già stata inserita';
+$this->phrasen['abgabetool/titel']='titolo';
+$this->phrasen['abgabetool/typ']='tipo';
+$this->phrasen['abgabetool/ueberschrift']='tesi bachelor / master';
+$this->phrasen['abgabetool/upload']='Upload';
+$this->phrasen['abgabetool/variablerAbgabetermin']='scadenza consegna variabile';
+$this->phrasen['abgabetool/zweitbetreuerBei']='secondo relatore presso';
+?>
diff --git a/locale/it-IT/anwesenheitsliste.php b/locale/it-IT/anwesenheitsliste.php
new file mode 100755
index 000000000..dc11dec87
--- /dev/null
+++ b/locale/it-IT/anwesenheitsliste.php
@@ -0,0 +1,21 @@
+phrasen['anwesenheitsliste/angerechnet']='riconosciuto';
+$this->phrasen['anwesenheitsliste/anleitungImportFunktion']='copiare i presenti elementi nella memoria temporanea per compilare la colonna import del modulo generale voti';
+$this->phrasen['anwesenheitsliste/anwesenheit']='presenza';
+$this->phrasen['anwesenheitsliste/anwesenheitslisten']='elenco presenti';
+$this->phrasen['anwesenheitsliste/anwesenheitslistenMitBildern']='elenchi presenti con foto';
+$this->phrasen['anwesenheitsliste/erstellenDerListeKlicken']='Per creare la lista cliccare sul gruppo desiderato!';
+$this->phrasen['anwesenheitsliste/fehlerhafteParameteruebergabe']='errore di trasferimento dei parametri. Si prega di riprovare';
+$this->phrasen['anwesenheitsliste/fehlstunden']='ore di assenza';
+$this->phrasen['anwesenheitsliste/gesamtliste']='elenco generale';
+$this->phrasen['anwesenheitsliste/keineEintraegeGefunden']='impossibile trovare registrazioni corrispondenti';
+$this->phrasen['anwesenheitsliste/keineLVsGefunden']='impossibile trovare lezioni ';
+$this->phrasen['anwesenheitsliste/keineStudentenVorhanden']='momentaneamentenel corso di studi / semestre non sono registrati studenti';
+$this->phrasen['anwesenheitsliste/keineStundenvorhanden']='momentaneamente nessuna ora registrata ';
+$this->phrasen['anwesenheitsliste/leAbgeschlossen']='LE conclusa';
+$this->phrasen['anwesenheitsliste/notenliste']='elenco voti';
+$this->phrasen['anwesenheitsliste/notenlisten']='elenchi voti';
+$this->phrasen['anwesenheitsliste/studiensemesterIstUngueltig']='semestre di studio non valido';
+$this->phrasen['anwesenheitsliste/waehleLV']='scegliere una lezione';
+
+?>
diff --git a/locale/it-IT/benotungstool.php b/locale/it-IT/benotungstool.php
new file mode 100755
index 000000000..15afeb510
--- /dev/null
+++ b/locale/it-IT/benotungstool.php
@@ -0,0 +1,174 @@
+phrasen['benotungstool/abgabe']='consegna';
+$this->phrasen['benotungstool/abgabedatei']='file di consegna ';
+$this->phrasen['benotungstool/abgabenDownloaden']='download consegna';
+$this->phrasen['benotungstool/abgeben']='consegna';
+$this->phrasen['benotungstool/alleKreuzerllistenDieserUebung']='tutte le liste con caselle da barrare di questa esercitazione';
+$this->phrasen['benotungstool/alleStudierenden']='tutti gli studenti';
+$this->phrasen['benotungstool/angabe']='indicazione';
+$this->phrasen['benotungstool/angabeidatei']='file con le indicazioni';
+$this->phrasen['benotungstool/anlegen']='crea';
+$this->phrasen['benotungstool/anwesenheitstabelle']='elenco presenti e panoramica delle presenze';
+$this->phrasen['benotungstool/anzahlDerBeispiele']='numero esempi';
+$this->phrasen['benotungstool/anzahlDerBeispieleGueltigeZahl']='il numero di esempi deve essere un numero valido';
+$this->phrasen['benotungstool/anzahlDerBeispieleKleiner100']='il numero di esempi deve essere inferiore a 100';
+$this->phrasen['benotungstool/anzahlDerBeispieleNichtNegativ']='il numero di esempi non può essere un numero negativo';
+$this->phrasen['benotungstool/anzahlDerStudenten']='numero di studenti';
+$this->phrasen['benotungstool/anzahlKommisionellePruefungen']='numero esami di commissione';
+$this->phrasen['benotungstool/anzahlNachpruefungen']='numero esami reiterati';
+$this->phrasen['benotungstool/anzahlNegativerBeurteilungen']='numero voti negativi';
+$this->phrasen['benotungstool/anzahlPunkteProBeispiel']='numero punti per ogni esempio';
+$this->phrasen['benotungstool/anzahlStudentenGueltigeZahl']='quantità studenti/esempi deve essere un numero valido';
+$this->phrasen['benotungstool/anzahlStudentenKleiner100']='quantità studenti/esempi deve essere inferiore a 100';
+$this->phrasen['benotungstool/anzahlStudentenNichtNegativ']='quantità studenti/esempi non può essere un numero negativo';
+$this->phrasen['benotungstool/aufgabe']='verifica';
+$this->phrasen['benotungstool/aufgabeKreuzerllistenAbgaben']='verifica (caselle da barrare, consegne)';
+$this->phrasen['benotungstool/ausgewaehlteAufgabeBearbeiten']='elabora verifiche scelte';
+$this->phrasen['benotungstool/ausgewaehlteUebungBearbeiten']='elabora esercitazione scelta';
+$this->phrasen['benotungstool/auswahl']='scegli';
+$this->phrasen['benotungstool/auswahlLoeschen']='cancella scelta';
+$this->phrasen['benotungstool/auswahlLoeschen']='cancella scelta';
+$this->phrasen['benotungstool/beispiel']='esempio';
+$this->phrasen['benotungstool/beispiel']='esempio';
+$this->phrasen['benotungstool/beispielBearbeiten']='elabora esempio';
+$this->phrasen['benotungstool/beispieleKonntenNichtAngelegtWerden']='impossibile inserire esempi';
+$this->phrasen['benotungstool/beispielIdUngueltig']='esempio_id non valida';
+$this->phrasen['benotungstool/benoten']='valutare';
+$this->phrasen['benotungstool/benotung']='valutazione';
+$this->phrasen['benotungstool/benotungstool']='strumenti di valutazione';
+$this->phrasen['benotungstool/bezeichnungMussEingegebenWerden']='inserire testo';
+$this->phrasen['benotungstool/bisDatumUngueltigesFormat']='fino-a-data formato non valido ';
+$this->phrasen['benotungstool/bisherInsgesamt']='totale attuale';
+$this->phrasen['benotungstool/bitteWaehlenSieDenStudentenAus']='scegli studente per accedere alla videata dettaglio o studente. (amministrazione di voti, punti supplementari, caselle da barrare, osservazioni, dati studente)';
+$this->phrasen['benotungstool/dasBeispielKannNichtMehrAngekreuztWerden']='impossibile sbarrare l\'esempio %s ';
+$this->phrasen['benotungstool/datenErfolgreichKopiert']='dati copiati';
+$this->phrasen['benotungstool/derzeitGibtEsKeineUebungen']='momentaneamente nessuna esercitazione';
+$this->phrasen['benotungstool/derzeitSindKeineAufgabenAngelegt']='momentaneamente nessuna verifica registrata';
+$this->phrasen['benotungstool/derzeitSindKeineUebungenAngelegt']='al momento nessuna esercitazione registrata';
+$this->phrasen['benotungstool/detail']='dettaglio';
+$this->phrasen['benotungstool/dieseKreuzerlliste']='questa lista da barrare';
+$this->phrasen['benotungstool/downloadverzeichnisAnzeigen']='mostra elenco download';
+$this->phrasen['benotungstool/eingetrageneNoten']='voti registrati';
+$this->phrasen['benotungstool/errechneteGesamtnote']='voto complessivo calcolato ';
+$this->phrasen['benotungstool/esGibtKeineLehreinheiten']='nessuna lezione in questo semestre autorizzata per questo accesso ';
+$this->phrasen['benotungstool/esHabenStudentenEingetragen']='complessivi %s studenti hanno registrato ';
+$this->phrasen['benotungstool/esKonntenNichtAlleDatenGespeichertWerden']='impossibile salvare tutti i dati';
+$this->phrasen['benotungstool/fehlerBeimAuslesen']='errore in sede di lettura delle lezioni ';
+$this->phrasen['benotungstool/fehlerBeimFreigebenDerNoten']='errore in sede di attivazione dei voti: la password trasmessa non è corretta';
+$this->phrasen['benotungstool/fehlerBeimKopieren']='errore di copiatura: nella lezione selezionata esiste già una lista con caselle da barrare con lo stesso nome';
+$this->phrasen['benotungstool/fehlerBeimLadenDesStudenten']='errore di caricamento degli studenti';
+$this->phrasen['benotungstool/fehlerhafteNoteBeiStudent']='Voto scorretto per studente %s %s';
+$this->phrasen['benotungstool/fehlerKopierenDerDaten']='errore di copiatura dei dati';
+$this->phrasen['benotungstool/fehlerNichtAlleBeispieleKopiert']='errore: impossibile copiare tutti i dati';
+$this->phrasen['benotungstool/format']='(formato: 31.12.2007 14:30)';
+$this->phrasen['benotungstool/freigabe']='attivazione';
+$this->phrasen['benotungstool/freigegebenVon']='attivato da';
+$this->phrasen['benotungstool/freigeschalten']='attivato';
+$this->phrasen['benotungstool/freigeschaltet']='attivato';
+$this->phrasen['benotungstool/gesamtnote']='voto complessivo';
+$this->phrasen['benotungstool/gesamtuebersicht']='mostra tutto';
+$this->phrasen['benotungstool/gewicht']='taratura ';
+$this->phrasen['benotungstool/gewichtMussEineZahlSein']='taratura deve essere un numero';
+$this->phrasen['benotungstool/handbuch']='manuale';
+$this->phrasen['benotungstool/handbuchBenotungstool']='manuale strumenti valutazione (PDF)';
+$this->phrasen['benotungstool/hatDieLvNotenFuerFolgendeStudenten']='ha attivato i voti della lezione per i seguenti studenti';
+$this->phrasen['benotungstool/hauptuebungKonnteNichtKopiertWerden']='impossibile copiare esercitazione principale';
+$this->phrasen['benotungstool/importAnweisung']='copiare le colonne dati personali e voti dalla lista dei voti e inserirle nel seguete campo';
+$this->phrasen['benotungstool/importieren']='importa';
+$this->phrasen['benotungstool/keineAbgabenVerfuegbar']='nessuna consegna disponibile';
+$this->phrasen['benotungstool/keineBeispieleAngelegt']='momentaneamente nessun esempio registrato';
+$this->phrasen['benotungstool/keineKreuzerllistenFuerDieseLehrveranstaltung']='momentaneamente nessuna lista con caselle da barrare per la lezione scelta';
+$this->phrasen['benotungstool/keinePassendeLehreinheitGefunden']='impossibile trovare lezione adeguata/corrispondente in questo semestre';
+$this->phrasen['benotungstool/kommissionellePruefung']='esame di commissione';
+$this->phrasen['benotungstool/kreuzerllisteNichtAngelegt']='impossibile creare lista con caselle da barrare';
+$this->phrasen['benotungstool/kreuzerltool']='strumenti con caselle da barrare';
+$this->phrasen['benotungstool/leGesamtnote']='voto complessivo lezione';
+$this->phrasen['benotungstool/leGesamtnotenVerwalten']='gestione voto complessivo lezione';
+$this->phrasen['benotungstool/lehrveranstaltungBenoten']='valutare lezione';
+$this->phrasen['benotungstool/leistungsuebersichtNotenuebersichtFuer']='panoramica stato prestazioni / panoramica voti ';
+$this->phrasen['benotungstool/leNoten']='voti lezione';
+$this->phrasen['benotungstool/leNotenVerwalten']='gestione voti lezione';
+$this->phrasen['benotungstool/liste']='elenco';
+$this->phrasen['benotungstool/lvGesamtnoteVerwalten']='gestione voto complessivo lezione';
+$this->phrasen['benotungstool/lvNote']='Voto lezione';
+$this->phrasen['benotungstool/lvNotenVerwalten']='gestione voti lezioni';
+$this->phrasen['benotungstool/maxBeispieleStudent']='al massimo esempi/studente';
+$this->phrasen['benotungstool/maxStudentenBeispiel']='al massimo studenti/esempio';
+$this->phrasen['benotungstool/minimum']='minimo';
+$this->phrasen['benotungstool/mitarbeitspunkte']='punti supplementari';
+$this->phrasen['benotungstool/moodleNote']='voto moodle';
+$this->phrasen['benotungstool/mussPositivSein']='* deve essere positivo';
+$this->phrasen['benotungstool/nachpruefung']='esame reiterato';
+$this->phrasen['benotungstool/neueAbgabeAnlegen']='crea nuova consegna';
+$this->phrasen['benotungstool/neueKreuzerllisteAnlegen']='crea nuova lista con caselle da barrare ';
+$this->phrasen['benotungstool/neuesBeispielAnlegen']='crea nuovo esempio';
+$this->phrasen['benotungstool/neueUebungAnlegen']='crea nuova esercitazione';
+$this->phrasen['benotungstool/nichtFreigeschaltet']='non attivato';
+$this->phrasen['benotungstool/nichtGespeichertKreuzerllisteNichtFreigegeben']='impossibile attivare cambiamenti in quanto la lista con caselle da barrare scelta non è attivata';
+$this->phrasen['benotungstool/nichtVorbereitet']='non preparato';
+$this->phrasen['benotungstool/note']='voto';
+$this->phrasen['benotungstool/noteEingeben']='Inserire un voto tra 1 - 5 ovvero 7 (non valutato), 10 (superato), 14 (non superato) ovvero 16 (frequentato con successo)';
+$this->phrasen['benotungstool/noteEingebenOderLeer']='Inserire un voto tra 1 - 5 ovvero 7 (non valutato), 10 (superato), 14 (non superato) ovvero 16 (frequentato con successo) o lasciare libero il campo';
+$this->phrasen['benotungstool/noteIstUngueltig']='voto non valido';
+$this->phrasen['benotungstool/noten']='voti: 1-5, 7 (non valutato), 10 (superato), 14 (non superato), 16 (frequentato con successo) ';
+$this->phrasen['benotungstool/notenlisteImport']='elenco voti per l\'import-voti-lezione';
+$this->phrasen['benotungstool/notenschluesselDefinieren']='definisci chiave di voto';
+$this->phrasen['benotungstool/notenschluesselIn']='chiave di voto in';
+$this->phrasen['benotungstool/notenschluesselInProzent']='chiave di voto in percento ';
+$this->phrasen['benotungstool/notenuebersichtFuer']='panoramica voti per ';
+$this->phrasen['benotungstool/positiv']='positivo';
+$this->phrasen['benotungstool/probleme']='problemi';
+$this->phrasen['benotungstool/prozentPunkten']='percento / punti ';
+$this->phrasen['benotungstool/pruefung']='Esame';
+$this->phrasen['benotungstool/pruefungAnlegenFuer']='crea esame per';
+$this->phrasen['benotungstool/punkte']='punti';
+$this->phrasen['benotungstool/punkte']='punti';
+$this->phrasen['benotungstool/punkteEingetragen']='inserisci punti';
+$this->phrasen['benotungstool/punkteInsgesamtMoeglich']='totale punti possibile';
+$this->phrasen['benotungstool/punkteMuessenEineGueltigeZahlSein']='punti deve essere un numero valido';
+$this->phrasen['benotungstool/punkten']='punti';
+$this->phrasen['benotungstool/punkteProBeispielGueltigeZahl']='punti per esempio deve essere un numero valido';
+$this->phrasen['benotungstool/punkteProBeispielNichtNegativ']='punti per esempio non può essere un numero negativo';
+$this->phrasen['benotungstool/punkteSindUngueltig']='punti non sono validi';
+$this->phrasen['benotungstool/standardwerteSetzen']='inserire valori standard';
+$this->phrasen['benotungstool/statistik']='statistica';
+$this->phrasen['benotungstool/statistikFuerKreuzerllisten']='statistica liste con caselle da barrare';
+$this->phrasen['benotungstool/statistikFuerStudentenAnzeigen']='mostra statistica studenti';
+$this->phrasen['benotungstool/studentenabgabedatei']='file di consegna studente';
+$this->phrasen['benotungstool/studentenansicht']='panoramica studenti';
+$this->phrasen['benotungstool/studentenaufgabenVerwalten']='gestisci verifiche studenti';
+$this->phrasen['benotungstool/studentenAuswaehlen']='scegliere uno o una studente';
+$this->phrasen['benotungstool/studentIstLvNichtZugeordnet']='Studente %s %s (%s) non è collegato a questa lezione. Il voto non sarà registrato!';
+$this->phrasen['benotungstool/studentMitMatrikelnummerExistiertNicht']='Studente con numero di matricola %s inesistente';
+$this->phrasen['benotungstool/studentWurdeNichtGefunden']='studente non trovato';
+$this->phrasen['benotungstool/teilnote']='voto parziale';
+$this->phrasen['benotungstool/thema']='soggetto / tema?';
+$this->phrasen['benotungstool/themaMussEingegebenWerden']='inserire soggetto / tema?';
+$this->phrasen['benotungstool/uebersicht']='panoramica';
+$this->phrasen['benotungstool/uebung']='esercitazione';
+$this->phrasen['benotungstool/uebungBearbeiten']='elabora esercitazione';
+$this->phrasen['benotungstool/uebungen']='esercitazioni';
+$this->phrasen['benotungstool/uebungenAnlegenUndVerwalten']='crea e gestisci esercitazioni';
+$this->phrasen['benotungstool/uebungErfolgreichKopiert']='ok: esercitazione copiata';
+$this->phrasen['benotungstool/uebungInAndereLeKopieren']='copia esercitazione in altra lezione';
+$this->phrasen['benotungstool/uebungKonnteNichtAngelegtWerden']='impossibile creare esercitazione';
+$this->phrasen['benotungstool/uebungKonnteNichtKopiertWerden']='impossibile copiare esercitazione ';
+$this->phrasen['benotungstool/uebungsnotenVerwalten']='gestione voti esercitazioni';
+$this->phrasen['benotungstool/uebungUndLehreinheit']='scegliere esercitazione e lezione ';
+$this->phrasen['benotungstool/uebungVerwalten']='gestisci esercitazione';
+$this->phrasen['benotungstool/vonDatumNichtGroesserAlsBisDatum']='da data non può essere superiore a fino a data';
+$this->phrasen['benotungstool/vonDatumUngueltigesFormat']='da-data ha un formato non valido';
+$this->phrasen['benotungstool/vorbereitet']='preparato';
+$this->phrasen['benotungstool/vorhandeneAufgabeBearbeiten']='elabora verifiche inserite';
+$this->phrasen['benotungstool/vorhandeneBeispiele']='esempi inseriti';
+$this->phrasen['benotungstool/vorhandeneUebungenBearbeiten']='elabora esercitazioni inseriti';
+$this->phrasen['benotungstool/vorhandeneUebungenKopieren']='copia esercitazioni inseriti';
+$this->phrasen['benotungstool/waehlenSieEineAufgabeAus']='scegliere un ordine da (lista con caselle da barrare, consegne)';
+$this->phrasen['benotungstool/waehlenSieEineKreuzerlliste']='scegliere una lista con caselle da barrare';
+$this->phrasen['benotungstool/wurdeNichtGefunden']='non trovato';
+$this->phrasen['benotungstool/zeugnisnote']='Voto';
+$this->phrasen['benotungstool/zeunis']='libretto universitario';
+$this->phrasen['benotungstool/zugehoerigeUebungFehlerhaft']='errore in esercitazione correlato';
+$this->phrasen['benotungstool/zuVieleBeispieleAngekreuzt']='troppi esempi sbarrati';
+
+?>
diff --git a/locale/it-IT/buchungen.php b/locale/it-IT/buchungen.php
new file mode 100755
index 000000000..67829163f
--- /dev/null
+++ b/locale/it-IT/buchungen.php
@@ -0,0 +1,8 @@
+phrasen['buchungen/betrag']='Importo';
+$this->phrasen['buchungen/buchgstyp']='tipologia registrazione';
+$this->phrasen['buchungen/buchungsdatum']='data registrazione';
+$this->phrasen['buchungen/buchungstext']='testo registrazione';
+$this->phrasen['buchungen/titel']='registrazioni';
+
+?>
diff --git a/locale/it-IT/coodle.php b/locale/it-IT/coodle.php
new file mode 100755
index 000000000..e7dd369a4
--- /dev/null
+++ b/locale/it-IT/coodle.php
@@ -0,0 +1,61 @@
+phrasen['coodle/aktion']='azione';
+$this->phrasen['coodle/auswahlEndtermin']='scelta termine ultimo';
+$this->phrasen['coodle/auswahlHinweis']='la scelta comporta la fissazone del termine ultimo e ultimato il sondaggio. Non è possibile invalidare il processo';
+$this->phrasen['coodle/bearbeiten']='editare sondaggio';
+$this->phrasen['coodle/beendeteUmfragen']='ultimare sondaggio';
+$this->phrasen['coodle/beschreibung']='descrizione';
+$this->phrasen['coodle/coodle']='Coodle';
+$this->phrasen['coodle/coodleId']='coodle_id';
+$this->phrasen['coodle/dauer']='durata scadenza';
+$this->phrasen['coodle/dauerminuten']='minuti';
+$this->phrasen['coodle/dragEvent']='scadenza ';
+$this->phrasen['coodle/einladungNeuVerschicken']='spedire di nuovo inviti';
+$this->phrasen['coodle/email']='email';
+$this->phrasen['coodle/endedatum']='fine del sondaggio';
+$this->phrasen['coodle/erfolgreichGestartet']='sondaggio attivato';
+$this->phrasen['coodle/ersteller']='creato da';
+$this->phrasen['coodle/erstelltVon']='creato da %s ( %s giorni fa) ';
+$this->phrasen['coodle/externeBeschreibung']='inserire il nome e l\'indirizzo email della persona che si vuole aggiungere al sondaggio';
+$this->phrasen['coodle/externenHinzufuegen']='aggiungi';
+$this->phrasen['coodle/externePersonhinzu']='aggiungi persona esterna';
+$this->phrasen['coodle/keineAuswahl']='nessuna scelta';
+$this->phrasen['coodle/keineBerechtigung']='errore di autorizzazione per questo sondaggio';
+$this->phrasen['coodle/keineOderMehrereRäume']='inserisci nessuno o più aule';
+$this->phrasen['coodle/keineRessourcenVorhanden']='nessun partecipante correlato';
+$this->phrasen['coodle/keineTermineVorhanden']='nessuna scadenza inserita per questo sondaggio';
+$this->phrasen['coodle/laufendeUmfragen']='sondaggi attivi';
+$this->phrasen['coodle/letzterStatus']='ultimo stato';
+$this->phrasen['coodle/loeschen']='cancella sondaggio';
+$this->phrasen['coodle/mailVersandtAn']='ok, messaggio spedito a %s';
+$this->phrasen['coodle/name']='nome';
+$this->phrasen['coodle/neuerEintrag']='nuovo sondaggio';
+$this->phrasen['coodle/neueUmfrage']='crea nuovo sondaggio';
+$this->phrasen['coodle/raumBelegt']='impossibile prenotare aula %s, l\'aula è occupata!';
+$this->phrasen['coodle/raumErfolgreichReserviert']='ok, aula %s prenotata';
+$this->phrasen['coodle/raumNichtReserviert']='Attenzione: non è stata prenotata l\'aula scelta; impossibile effettuare attualmente prenotazioni dopo il %s ';
+$this->phrasen['coodle/ReservierungNichtMoeglich']='Attenzione: impossibile effettuare attualmente prenotazioni dopo il %s ';
+$this->phrasen['coodle/ressource']='risorsa / partecipante';
+$this->phrasen['coodle/ressourceEntfernen']='cancella risorsa';
+$this->phrasen['coodle/ressourcen']='risorse / partecipante';
+$this->phrasen['coodle/ressourcenBeschreibung']='Qui è possibile aggiungere aule e persone al sondaggio. inserire nome nel campo di testo e scegliere l\'annotazione corrispondente.';
+$this->phrasen['coodle/Ressourcenhinzu']='aggiungi risorse';
+$this->phrasen['coodle/startBeschreibung']='cliccare qui per informare i partecipanti e lanciare il sondaggio';
+$this->phrasen['coodle/terminauswahl']='Coodle scelta scadenze';
+$this->phrasen['coodle/termine']='gestisci scadenze';
+$this->phrasen['coodle/terminZiehenBeschreibung']='portare la scadenza nella posizione scelata per inserire proposte di scadenza ';
+$this->phrasen['coodle/titel']='titolo';
+$this->phrasen['coodle/uebersicht']='Coodle - panoramica';
+$this->phrasen['coodle/umfrageAbgeschlossen']='il sondaggio è chiuso';
+$this->phrasen['coodle/umfrageKonnteNichtGeloeschtWerden']='impossibile cancellare il sondaggio';
+$this->phrasen['coodle/umfrageNichtGeladen']='impossibile caricare il sondaggio';
+$this->phrasen['coodle/umfrageNichtGueltig']='sondaggio invalidato';
+$this->phrasen['coodle/umfrageNochNichtGestartet']='sondaggio da lanciare';
+$this->phrasen['coodle/umfrageStarten']='lancia sondaggio';
+$this->phrasen['coodle/umfrageWurdeBereitsGestartet']='sondaggio già lanciato';
+$this->phrasen['coodle/weiterZurTerminauswahl']='prosegui per la scelta scadenza';
+$this->phrasen['coodle/ZurueckzumBearbeiten']='<< torna all\'elaborazione';
+$this->phrasen['coodle/zurueckZurUebersicht']='torna alla panoramica';
+$this->phrasen['coodle/zurueckZurUebersicht']='torna alla panoramica';
+$this->phrasen['coodle/zurUmfrage']='vai al sondaggio';
+?>
diff --git a/locale/it-IT/courseInformation.php b/locale/it-IT/courseInformation.php
new file mode 100755
index 000000000..b51d1c1d5
--- /dev/null
+++ b/locale/it-IT/courseInformation.php
@@ -0,0 +1,46 @@
+phrasen['courseInformation/achtungFehlerBeimSpeichern']='Attenzione: errore di salvataggio dei dati! Si prega di riprovare ';
+$this->phrasen['courseInformation/bearbeitetVon']='elaborato da';
+$this->phrasen['courseInformation/beiFehlernInDenFixfeldern']='\'in caso di errori nei campi fissi rivolgersi all\' assistente incaricata .\';';
+$this->phrasen['courseInformation/beispielComputerarchitektur']='esempi architettura PC';
+$this->phrasen['courseInformation/beispielItProjektarbeitDeutsch']='esempi elaborati progetto IT tedesco';
+$this->phrasen['courseInformation/beispielItProjektarbeitEnglisch']='esempi elaborati progetto IT inglese';
+$this->phrasen['courseInformation/beispielMSEChangeManagement']='Esempi MSE Change Management e softwareevolution';
+$this->phrasen['courseInformation/beispielProjektmarketing']='Esempi marketing e controlling per lavori a progetto ';
+$this->phrasen['courseInformation/deutschFreigeben']='attivare informazioni in tedesco della lezione';
+$this->phrasen['courseInformation/diesIstEineAutomatischeMail']='questo è un messaggio automatico';
+$this->phrasen['courseInformation/ectsCredits']='';
+$this->phrasen['courseInformation/ectsInformation']='';
+$this->phrasen['courseInformation/ectsLvInfo']='';
+$this->phrasen['courseInformation/englischFreigeben']='attivare informazioni inglese della lezione';
+$this->phrasen['courseInformation/fallsSieAufzaehlungslistenVerwenden']='se si vogliono utilizzare liste si prega di inserirle nel modo seguente: <ul> <li> Listeneintrag1</li> <li> Listeneintrag2</li> </ul> \';';
+$this->phrasen['courseInformation/fehlerBeimSchreibenDesLog']='errore di scrittura del log file';
+$this->phrasen['courseInformation/fehlerBeimSendenAufgetreten']='errore di trasmissione della mail di attivazione a %s';
+$this->phrasen['courseInformation/fehlerLogFile']='errore di scrittura del log file';
+$this->phrasen['courseInformation/freigabe']='attiva';
+$this->phrasen['courseInformation/freigabeLvinfo']='attiva informazioni della lezione';
+$this->phrasen['courseInformation/freigabemailWurdeVersandt']='ok: mail di attivazione spedito a %s';
+$this->phrasen['courseInformation/freigeben']='attivare';
+$this->phrasen['courseInformation/freigegeben']='arrivare informazioni della lezione';
+$this->phrasen['courseInformation/incomingplaetze']='posti incoming';
+$this->phrasen['courseInformation/institutskoordinator']='coordinatore o coordinatrice d\'istituto';
+$this->phrasen['courseInformation/institutsleiter']='';
+$this->phrasen['courseInformation/konnteKeinFreigabemailVersendetWerden']='errore di trasmissione della mai di attivazione delle informazioni della lezione';
+$this->phrasen['courseInformation/lehrendeLautLehrauftrag']='lettore previsto dall\'incarico';
+$this->phrasen['courseInformation/lvInfoBeispiele']='informazioni della lezione - esempi';
+$this->phrasen['courseInformation/lvInfoFreigabe']='informazioni della lezione - attivazione';
+$this->phrasen['courseInformation/lvInfoSemester']='informazione della lezione - %s - %s. Semestre';
+$this->phrasen['courseInformation/lvinfoWurdeUeberarbeitet']='%s ha elaborato le informazioni della lezione %s e richiede di attivarle';
+$this->phrasen['courseInformation/nochNichtFreigegeben']='informazioni della lezione non ancora attivate';
+$this->phrasen['courseInformation/online']='online';
+$this->phrasen['courseInformation/pflichtfelderWerdenAufDerExternenSeiteAngezeigt']='i campi necessari sono visibili anche sulla pagina web ufficiale e devono perciò essere compilati';
+$this->phrasen['courseInformation/sieKoennenDieseUnterFolgenderAdresseFreigeben']='queste possono essere attivate seguendo il link ';
+$this->phrasen['courseInformation/terminologie']='terminologia';
+$this->phrasen['courseInformation/terminologieDeutschEnglisch']='terminologia tedesco-inglese';
+$this->phrasen['courseInformation/unterrichtssprache']='lingua della lezione';
+$this->phrasen['courseInformation/updateAm']='update del ';
+$this->phrasen['courseInformation/voransicht']='';
+$this->phrasen['courseInformation/zurFreigabeAbschicken']='spedire per l\'attivazione';
+$this->phrasen['courseInformatoin/lvInfoTerminologie']='informazioni della lezione - terminologia';
+
+?>
diff --git a/locale/it-IT/dms_link.php b/locale/it-IT/dms_link.php
new file mode 100755
index 000000000..271d69587
--- /dev/null
+++ b/locale/it-IT/dms_link.php
@@ -0,0 +1,23 @@
+phrasen['dms_link/abgabetoolAssistenzHandbuch']='28 ';
+$this->phrasen['dms_link/abgabetoolLektorHandbuch']='28 ';
+$this->phrasen['dms_link/abgabetoolStudentHandbuch']='27 ';
+$this->phrasen['dms_link/anleitungMailverteiler']='7578 ';
+$this->phrasen['dms_link/bedienungsanleitungMailverteiler']='1474 ';
+$this->phrasen['dms_link/benotungstoolHandbuch']='32 ';
+$this->phrasen['dms_link/berechtigungskonzeptMailverteiler']='1475 ';
+$this->phrasen['dms_link/bildRichtlinien']='6174 ';
+$this->phrasen['dms_link/cisHandbuch']='764 ';
+$this->phrasen['dms_link/dokuwikiGesamtnote']='';
+$this->phrasen['dms_link/handbuchUrlaubsverwaltung']='759 ';
+$this->phrasen['dms_link/handbuchZeitaufzeichnung']='1545';
+$this->phrasen['dms_link/iconPDF']='46 ';
+$this->phrasen['dms_link/lvPlanFAQ']='6887 ';
+$this->phrasen['dms_link/lvplanSyncFAQ']='7188 ';
+$this->phrasen['dms_link/moodleHandbuch']='33 ';
+$this->phrasen['dms_link/moodleHandbuch24']='1426 ';
+$this->phrasen['dms_link/profilhilfe']='';
+$this->phrasen['dms_link/sicherheitAnDerFHTW']='6765 ';
+$this->phrasen['dms_link/veranstaltungsleitfaden']='133 ';
+
+?>
diff --git a/locale/it-IT/eventkalender.php b/locale/it-IT/eventkalender.php
new file mode 100755
index 000000000..658b5cd32
--- /dev/null
+++ b/locale/it-IT/eventkalender.php
@@ -0,0 +1,75 @@
+phrasen['eventkalender/aenderungVon']='modifica del';
+$this->phrasen['eventkalender/alleKategorien']='tutte le categorie';
+$this->phrasen['eventkalender/alleWochenOeffnen']='apri tutte le settimane';
+$this->phrasen['eventkalender/alleWochenSchliessen']='chiudi tutte le settimane';
+$this->phrasen['eventkalender/am']='il';
+$this->phrasen['eventkalender/angelegt']='inserito';
+$this->phrasen['eventkalender/angelegtVon']='inserito da ';
+$this->phrasen['eventkalender/beiFragenGebenSieImmerDieVeranstaltungsIDan']='per ulteriori informazioni è necessario inserire la ID dell\'evento';
+$this->phrasen['eventkalender/beiFragenGebenSieImmerDieVeranstaltungsIdXYan']='per ulteriori informazioni è necessario inserire la ID dell\'evento %s';
+$this->phrasen['eventkalender/bild']='immagine';
+$this->phrasen['eventkalender/bildladen']='carica immagine';
+$this->phrasen['eventkalender/datumBis']='data fino al';
+$this->phrasen['eventkalender/datumVon']='data dal';
+$this->phrasen['eventkalender/details']='dettagli';
+$this->phrasen['eventkalender/durch']='da ';
+$this->phrasen['eventkalender/einJahrVor']='1 anno dopo';
+$this->phrasen['eventkalender/einJahrZurueck']='1 anno prima';
+$this->phrasen['eventkalender/einMonatVor']='1 mese dopo';
+$this->phrasen['eventkalender/einMonatZurueck']='1 mese prima';
+$this->phrasen['eventkalender/farbe']='colore';
+$this->phrasen['eventkalender/fehlerBeimLesenDerVeranstaltungskategorie']='errore di lettura della categoria dell\'evento';
+$this->phrasen['eventkalender/fehlerStartKleinerEnde']='Errore! Inizio e termine non plausibili';
+$this->phrasen['eventkalender/freigabe']='attiva';
+$this->phrasen['eventkalender/freigabeVon']='attivato da';
+$this->phrasen['eventkalender/ganztaegigeVeranstaltung']='evento tutta la giornata';
+$this->phrasen['eventkalender/geaendert']='modificato';
+$this->phrasen['eventkalender/geloescht']='cancellato';
+$this->phrasen['eventkalender/ID']='ID';
+$this->phrasen['eventkalender/jahresplan']='programmazione annuale';
+$this->phrasen['eventkalender/jahrIstUngueltig']='errore: anno';
+$this->phrasen['eventkalender/kategorie']='categoria';
+$this->phrasen['eventkalender/kategorienBearbeiten']='elabora categorie';
+$this->phrasen['eventkalender/keineBerechtigungAufAnwenderinformationen']='impossibile accedere alle infomazioni per l\'utente (attivazione, creazione, modifica) per mancanza di autorizzazione';
+$this->phrasen['eventkalender/keineFreigabe']='non attivato';
+$this->phrasen['eventkalender/keineGueltigeZeit']='errore: orario!\nInserire orario in formato: HH:MM ';
+$this->phrasen['eventkalender/keineVeranstaltungen']='nessun evento';
+$this->phrasen['eventkalender/keineVeranstaltungGefunden']='nessun evento trovato';
+$this->phrasen['eventkalender/keineVeranstaltungsIdUebergeben']='manca ID evento ';
+$this->phrasen['eventkalender/keinGueltigesDatum']='errore: data!\nInserire dara in formato: DD.MM.YYYY ';
+$this->phrasen['eventkalender/kurzbezeichnung']='sigla';
+$this->phrasen['eventkalender/kurzbezeichnungenMitEinemStern']='abbreviazioni con anteposto * (asterisco) mostrano solo collaboratori e lettori';
+$this->phrasen['eventkalender/kw']='settimana dell\'anno';
+$this->phrasen['eventkalender/monatIstUngueltig']='errore: mese';
+$this->phrasen['eventkalender/neuanlage']='nuovo inserimento';
+$this->phrasen['eventkalender/oeffnen']='apri';
+$this->phrasen['eventkalender/pflichtfeld']='campo obbligatorio';
+$this->phrasen['eventkalender/reserviertVon']='prenotato da';
+$this->phrasen['eventkalender/reservierungenInEinemNeuenFensterAnzeigen']='mostra prenotazioni in nuova videata';
+$this->phrasen['eventkalender/reservierungenKoennenErstNachDemSpeichernZugeordnetWerden']='sarà possibile attribuire le prenotazioni solo dopo aver registrato l\'evento';
+$this->phrasen['eventkalender/reservierungenZurVeranstaltungsID']='prenotazioni evento con ID';
+$this->phrasen['eventkalender/reservierungID']='ID prenotazione';
+$this->phrasen['eventkalender/schliessen']='chiudi';
+$this->phrasen['eventkalender/sollDieHauptseiteNeuAufgebautWerden']='ricaricare la pagina principale?';
+$this->phrasen['eventkalender/suche']='cerca';
+$this->phrasen['eventkalender/suchtext']='testo per ricerca';
+$this->phrasen['eventkalender/uhr']='orologio';
+$this->phrasen['eventkalender/uhrzeit']='ora';
+$this->phrasen['eventkalender/veranstaltung']='evento';
+$this->phrasen['eventkalender/veranstaltungBearbeiten']='elabora evento';
+$this->phrasen['eventkalender/veranstaltungen']='eventi';
+$this->phrasen['eventkalender/veranstaltungenAnzeigen']='mostra eventi';
+$this->phrasen['eventkalender/veranstaltungIdIstUngueltig']='ID evento non valida';
+$this->phrasen['eventkalender/veranstaltungIdXYwurdeNichtGefunden']='impossibile trovare ID evento %s';
+$this->phrasen['eventkalender/veranstaltungsdetailID']='dettaglio evento ID';
+$this->phrasen['eventkalender/veranstaltungsID']='ID evento ';
+$this->phrasen['eventkalender/veranstaltungskategorie']='categoria evento';
+$this->phrasen['eventkalender/veranstaltungsleitfaden']='guida evento';
+$this->phrasen['eventkalender/veranstaltungXYgeloescht']='cancellato evento %s ';
+$this->phrasen['eventkalender/voransicht']='anteprima';
+$this->phrasen['eventkalender/woche']='settimana';
+$this->phrasen['eventkalender/wochenindexWurdeNichtGefunden']='impossibile trovare indice settimana %s';
+$this->phrasen['eventkalender/wollenSieWirklichIdXYloeschen']='conferma cancellazione ID %s';
+
+?>
diff --git a/locale/it-IT/feedback.php b/locale/it-IT/feedback.php
new file mode 100755
index 000000000..a9234c8b3
--- /dev/null
+++ b/locale/it-IT/feedback.php
@@ -0,0 +1,9 @@
+phrasen['feedback/absatz1']='';
+$this->phrasen['feedback/erfolgreichEingetragen']='il messaggio è stato registrato';
+$this->phrasen['feedback/feedbackNichtWeitergeleitet']='il feedback non è stato spedito';
+$this->phrasen['feedback/ihreNachrichtWurdeWeitergeleitet']='il messaggio è stato inoltrato al personale competente';
+$this->phrasen['feedback/vielenDankFuerIhrFeedback']='grazie del feedback!';
+$this->phrasen['feedback/wendenSieSichAnDieAdministration']='si prega di rivolgersi all\'amministrazione';
+
+?>
diff --git a/locale/it-IT/freebusy.php b/locale/it-IT/freebusy.php
new file mode 100755
index 000000000..15bc1d429
--- /dev/null
+++ b/locale/it-IT/freebusy.php
@@ -0,0 +1,13 @@
+phrasen['freebusy/aktiv']='attivo';
+$this->phrasen['freebusy/beschreibungstext1']='su questo sito è possibile riassumere per la propria URL FreeBusy personale diverse informazioni esterne sulla disponibilità. ';
+$this->phrasen['freebusy/LVPlanBezeichnung']='progamma lezioni personale';
+$this->phrasen['freebusy/LVPlanTyp']='programma lezioni';
+$this->phrasen['freebusy/neuerEintrag']='aggiungi nuova registrazione';
+$this->phrasen['freebusy/PfadZuFreebusyUrl']='la URL FreeBusy personale è raggiungibile dal seguente link:';
+$this->phrasen['freebusy/titel']='gestione FreeBusy';
+$this->phrasen['freebusy/typ']='tipo';
+$this->phrasen['freebusy/url']='URL';
+$this->phrasen['freebusy/urlKannNichtGeladenWerden']='impossibile raggiungere la URL inserita';
+
+?>
diff --git a/locale/it-IT/freifach.php b/locale/it-IT/freifach.php
new file mode 100755
index 000000000..a271f2293
--- /dev/null
+++ b/locale/it-IT/freifach.php
@@ -0,0 +1,18 @@
+phrasen['freifach/abmeldungNurUeberAssistenz']='Attenzione: il ritiro da una materia facoltativa è momentaneamente possibile solo tramite la Segreteria Studenti ';
+$this->phrasen['freifach/auswahl']='scelta';
+$this->phrasen['freifach/bitteFreifachAuswaehlen']='si prega di scegliere una delle materie facoltative';
+$this->phrasen['freifach/datenErfolgreichAktualisiert']='i dati sono stati attualizzati';
+$this->phrasen['freifach/fehlerBeimAktualisieren']='errore in sede di aggiornamento dell\'attribuzione dei corsi facoltativi! Si prega di riprovare ';
+$this->phrasen['freifach/fehlerBeimAuslesen']='errore di lettura dello specchietto di attribuzione';
+$this->phrasen['freifach/fehlerBeimAuslesenFreifach']='errore di lettura dei corsi facoltativi: Si prega di riprovare ';
+$this->phrasen['freifach/freifach']='corso facoltativo';
+$this->phrasen['freifach/freifaecher']='corsi facoltativi';
+$this->phrasen['freifach/freifaecherAnmeldung']='iscrizione ai corsi facoltativi';
+$this->phrasen['freifach/freifaecherAnmeldungsuebersicht']='panoramica iscrizione ai corsi facoltativi';
+$this->phrasen['freifach/freifaecherNichtZugeteilt']='errore di attribuzione dei corsi facoltativi! Si prega di riprovare';
+$this->phrasen['freifach/keineAnmeldungenFuerDiesesFreifach']='ancora nessuna iscrizione per questo corso';
+$this->phrasen['freifach/MailAnAlleSenden ']='spedisci mail a tutti gli iscritti al presente corso facoltativo';
+$this->phrasen['freifach/markierenFreifachFuerAnmeldung']='cliccare i corsi facoltativi per i quali si desidera l\'iscrizione';
+
+?>
diff --git a/locale/it-IT/gesamtnote.php b/locale/it-IT/gesamtnote.php
new file mode 100755
index 000000000..c250efa68
--- /dev/null
+++ b/locale/it-IT/gesamtnote.php
@@ -0,0 +1,8 @@
+phrasen['gesamtnote/keinNotenschluesselvorhanden']='per la presente lezione non è stata definita la chiave di voto';
+$this->phrasen['gesamtnote/notenschluesselanzeigen']='mostra chiave di voto';
+$this->phrasen['gesamtnote/noteUnveraendert']='voto invariato';
+$this->phrasen['gesamtnote/passwortFalsch']='errore in sede di attivazione dei voti: la password trasmessa non è corretta';
+$this->phrasen['gesamtnote/wollenSieWirklichLoeschen']='conferma cancellazione delle registrazioni cliccate? Tutte le caselle barrate andranno perse';
+
+?>
diff --git a/locale/it-IT/global.php b/locale/it-IT/global.php
new file mode 100755
index 000000000..618c5b83b
--- /dev/null
+++ b/locale/it-IT/global.php
@@ -0,0 +1,158 @@
+phrasen['global/abbrechen']='annulla';
+$this->phrasen['global/abmelden']='esci';
+$this->phrasen['global/abschicken']='spedisci ';
+$this->phrasen['global/adresse']='indirizzo';
+$this->phrasen['global/aendern']='modifica';
+$this->phrasen['global/aktion']='azione';
+$this->phrasen['global/alle']='tutti';
+$this->phrasen['global/allgemeinerdownload']='download generale';
+$this->phrasen['global/angelegtAm']='registrato il ';
+$this->phrasen['global/angemeldet']='iscritto';
+$this->phrasen['global/anleitung']='istruzioni';
+$this->phrasen['global/anmelden']='iscriversi';
+$this->phrasen['global/anmerkung']='osservazioni';
+$this->phrasen['global/anmerkungen']='osservazioni';
+$this->phrasen['global/anzeigen']='mostra';
+$this->phrasen['global/ausblenden']='';
+$this->phrasen['global/auswaehlen']='';
+$this->phrasen['global/auswahl']='';
+$this->phrasen['global/bearbeiten']='modifica';
+$this->phrasen['global/beginn']='inizio';
+$this->phrasen['global/beispiele']='esempi';
+$this->phrasen['global/benutzer']='utente';
+$this->phrasen['global/beschreibung']='descrizione';
+$this->phrasen['global/betreff']='oggetto';
+$this->phrasen['global/bezeichnung']='denominazione';
+$this->phrasen['global/bis']='fino';
+$this->phrasen['global/code']='codice';
+$this->phrasen['global/datei']='file';
+$this->phrasen['global/dateiErfolgreichHochgeladen']='il file è stato caricato';
+$this->phrasen['global/dateiExistiertNicht']='il file è inesistente';
+$this->phrasen['global/dateiLoeschen']='cancella file';
+$this->phrasen['global/dateiNichtErfolgreichHochgeladen']='impossibile caricare il file. Si prega di ripetere l\'operazione.';
+$this->phrasen['global/datensatzWurdeNichtGefunden']='impossibile trovare i dati cercati';
+$this->phrasen['global/datenWurdenGespeichert']='i dati sono stati salvati';
+$this->phrasen['global/datum']='Data';
+$this->phrasen['global/datumNichtGesetzt']='non è stata impostata la data';
+$this->phrasen['global/deutsch']='tedesco';
+$this->phrasen['global/dienstag']='martedì';
+$this->phrasen['global/donnerstag']='giovedì ';
+$this->phrasen['global/download']='download';
+$this->phrasen['global/editieren']='editare';
+$this->phrasen['global/eintragen']='registrare';
+$this->phrasen['global/eintragWurdeGeloescht']='cancellata registrazione';
+$this->phrasen['global/emailAdresse']='indirizzo e-mail';
+$this->phrasen['global/emailAnAssistenz']='e-mail alla segreteria';
+$this->phrasen['global/emailgesendetan']='spedisci e-mail a';
+$this->phrasen['global/ende']='fine';
+$this->phrasen['global/englisch']='inglese';
+$this->phrasen['global/entfernen']='cestina';
+$this->phrasen['global/erfolgreichAngelegt']='ok, registrato';
+$this->phrasen['global/erfolgreichgelöscht']='ok, cancellato';
+$this->phrasen['global/erfolgreichgespeichert']='ok, salvato';
+$this->phrasen['global/erstellen']='crea';
+$this->phrasen['global/fax']='fax';
+$this->phrasen['global/fehleraufgetreten']='è avvenuto un errore';
+$this->phrasen['global/fehlerBeiDerParameteruebergabe']='errore di trasmissione dei parametri';
+$this->phrasen['global/fehlerBeimAktualisierenDerDaten']='errore di aggiornamento dei dati';
+$this->phrasen['global/fehlerBeimErmittelnDerUID ']='errore di ricerca della UID';
+$this->phrasen['global/fehlerBeimLadenDesDatensatzes']='errore di caricamento dei dati';
+$this->phrasen['global/fehlerBeimLesenAusDatenbank']='errore di lettura dalla banca dati';
+$this->phrasen['global/fehlerBeimLoeschenDesEintrags']='errore di cancellazione della registrazione';
+$this->phrasen['global/fehlerBeimOeffnenDerDatenbankverbindung']='errore di apertura del collegamento con la banca dati';
+$this->phrasen['global/fehlerBeimSpeichernDerDaten']='errore di salvataggio dati';
+$this->phrasen['global/fhTechnikumWien']='SFU';
+$this->phrasen['global/fhtw']='Sigmund Freud PrivatUniversität';
+$this->phrasen['global/frau']='Sig.ra';
+$this->phrasen['global/freitag']='venerdì';
+$this->phrasen['global/FuerDieseAktionBenoetigenSieAdministrationsrechte']='per questa azione si necessita l\'amministratore del sistema';
+$this->phrasen['global/funktion']='funzione';
+$this->phrasen['global/geburtsdatum']='Data di nascita';
+$this->phrasen['global/geburtsort']='Luogo di nascita';
+$this->phrasen['global/geschaeftsfuehrendeltg']='Amministratore';
+$this->phrasen['global/geschlecht']='';
+$this->phrasen['global/gruppe']='Gruppo';
+$this->phrasen['global/handbuch']='Manuale';
+$this->phrasen['global/handy']='Cellulare';
+$this->phrasen['global/hauptwohnsitz']='Residenza ';
+$this->phrasen['global/hilfe']='Assistenza';
+$this->phrasen['global/hinzufuegen']='aggiungi';
+$this->phrasen['global/institut']='Istituto';
+$this->phrasen['global/ja']='sì';
+$this->phrasen['global/kalender']='Calendario';
+$this->phrasen['global/keineBerechtigung']='non autorizzato';
+$this->phrasen['global/keineBerechtigungFuerDieseSeite']='errore di autorizzazione per questa pagina';
+$this->phrasen['global/keineBerechtigungZumAendernDesDatensatzes']='errore di autorizzazione per modificare i dati';
+$this->phrasen['global/keineDatenGefunden']='impossibile trovare i dati';
+$this->phrasen['global/kopieren']='copia';
+$this->phrasen['global/LDAPserverNichtErreichbar']='il server LDAP non è raggiungibile';
+$this->phrasen['global/lehreinheit']='';
+$this->phrasen['global/lehrveranstaltung']='Insegnamento';
+$this->phrasen['global/lehrziele']='obiettivi di studio';
+$this->phrasen['global/loeschen']='cancella';
+$this->phrasen['global/löschen']='cancella';
+$this->phrasen['global/mail']='messaggio mail';
+$this->phrasen['global/mann']='maschio/uomo';
+$this->phrasen['global/matrikelnummer']='numero di matricola';
+$this->phrasen['global/minute']='minuti';
+$this->phrasen['global/mittwoch']='mercoledì';
+$this->phrasen['global/montag']='lunedì';
+$this->phrasen['global/nachname']='Cognome';
+$this->phrasen['global/name']='nome';
+$this->phrasen['global/nebenwohnsitz']='domicilio';
+$this->phrasen['global/nein']='no';
+$this->phrasen['global/neu']='nuovo';
+$this->phrasen['global/newsgroups']='newsgroup';
+$this->phrasen['global/nichtAngemeldet ']='errore di log in: impossibile trovare l\'UID dell\'utente ';
+$this->phrasen['global/nummer']='numero';
+$this->phrasen['global/ok']='ok';
+$this->phrasen['global/organisationseinheit']='Unità organizzativa';
+$this->phrasen['global/organisationseinheiten']='';
+$this->phrasen['global/ort']='luogo';
+$this->phrasen['global/passwort']='Password';
+$this->phrasen['global/person']='persona';
+$this->phrasen['global/personen']='persone ';
+$this->phrasen['global/personenkennzeichen']='Codice Persona';
+$this->phrasen['global/personenkz']='Codice Persona';
+$this->phrasen['global/plz']='CAP';
+$this->phrasen['global/postnomen']='Titolo';
+$this->phrasen['global/samstag']='sabato';
+$this->phrasen['global/sekretariat']='segreteria';
+$this->phrasen['global/semester']='Semestre';
+$this->phrasen['global/sonntag']='domenica';
+$this->phrasen['global/speichern']='salva';
+$this->phrasen['global/sprache']='lingua';
+$this->phrasen['global/staatsbuergerschaft']='cittadinanza';
+$this->phrasen['global/stellvertreter']='supplenza ';
+$this->phrasen['global/strasse']='via';
+$this->phrasen['global/studentenvertreter']='rappresentanti degli studendi';
+$this->phrasen['global/studiengang']='Corso di studi';
+$this->phrasen['global/studiengangKonnteNichtGefundenWerden ']='impossibile trovare corso di studi digitato';
+$this->phrasen['global/studiengangsleitung']='Direzione del corso di studi';
+$this->phrasen['global/studiengangsmanagement']='Management del corso di studi';
+$this->phrasen['global/studienrichtung']='indirizzo di studio';
+$this->phrasen['global/studiensemester']='Semestre di studio';
+$this->phrasen['global/studiensemesterKonnteNichtGefundenWerden ']='impossibile trovare semestre di studio digitato';
+$this->phrasen['global/studienzentrum']='';
+$this->phrasen['global/stunde']='ora';
+$this->phrasen['global/suchen']='cerca';
+$this->phrasen['global/telefon']='telefono';
+$this->phrasen['global/telefonnummer']='numero telefonico';
+$this->phrasen['global/titel']='Titolo';
+$this->phrasen['global/uid']='UID';
+$this->phrasen['global/umbenennen']='cambia nome';
+$this->phrasen['global/unbekannterFehleraufgetreten']='è avvenuto un errore sconosciuto';
+$this->phrasen['global/universität']='università';
+$this->phrasen['global/username']='Username';
+$this->phrasen['global/userNichtGefunden']='';
+$this->phrasen['global/verband']='Gruppo Principale';
+$this->phrasen['global/von']='inizio';
+$this->phrasen['global/vorname']='Nome';
+$this->phrasen['global/warnungWirklichLoeschen']='';
+$this->phrasen['global/zurueck']='Indietro';
+$this->phrasen['global/zuruecksetzen']='';
+$this->phrasen['global/zweck']='';
+$this->phrasen['global/ects']='ECTS';
+
+?>
diff --git a/locale/it-IT/incoming.php b/locale/it-IT/incoming.php
new file mode 100755
index 000000000..7dba7a301
--- /dev/null
+++ b/locale/it-IT/incoming.php
@@ -0,0 +1,115 @@
+phrasen['incoming/abgelegtam']='archiviato il (data, gg.mm.aaaa)';
+$this->phrasen['incoming/abgelegtin']='archiviato in (nome dell\'istituzione)';
+$this->phrasen['incoming/abgelegtinort']='archiviato in (xxxxx)';
+$this->phrasen['incoming/alleSemester']='tutti i semestri';
+$this->phrasen['incoming/alleSprachen']='tutte le lingue';
+$this->phrasen['incoming/anmerkungen']='';
+$this->phrasen['incoming/ansprechpersonHeimatuniversitaet']='';
+$this->phrasen['incoming/aufgrundEinerBehinderung']='';
+$this->phrasen['incoming/austauschprgramwählen']='';
+$this->phrasen['incoming/austauschprogram']='';
+$this->phrasen['incoming/auswahlDerLv']='';
+$this->phrasen['incoming/auswahlUniversitaeten']='';
+$this->phrasen['incoming/bachelorstudiengang']='';
+$this->phrasen['incoming/bachelorthesis']='';
+$this->phrasen['incoming/betreuerMasterBachelor']='';
+$this->phrasen['incoming/bitteCodeEingeben']='';
+$this->phrasen['incoming/dateien']='';
+$this->phrasen['incoming/dateiname']='';
+$this->phrasen['incoming/deutschkurs1']='';
+$this->phrasen['incoming/deutschkurs2']='';
+$this->phrasen['incoming/deutschkurs3']='';
+$this->phrasen['incoming/deutschkurse']='';
+$this->phrasen['incoming/dokument']='documento';
+$this->phrasen['incoming/dokumenttyp']='tipo';
+$this->phrasen['incoming/ects']='';
+$this->phrasen['incoming/eigenelehrveranstaltungen']='';
+$this->phrasen['incoming/eigeneuniversitaet']='';
+$this->phrasen['incoming/erasmusIntensivsprachkurs']='';
+$this->phrasen['incoming/fehlerAdresse']='errore nell\'inserimento dell\'indirizzo';
+$this->phrasen['incoming/fehlerBeimLoeschenDerLv']='errore in sede di cancellazione dell\'evento';
+$this->phrasen['incoming/fehlerIncoming']='errore nell\'inserimento der Preincoming ';
+$this->phrasen['incoming/fehlerKontakt']='errore nell\'inserimento del contatto';
+$this->phrasen['incoming/fileupload']='';
+$this->phrasen['incoming/filter']='';
+$this->phrasen['incoming/freieplätze']='';
+$this->phrasen['incoming/geaendertesLA']='';
+$this->phrasen['incoming/hauptmenue']='';
+$this->phrasen['incoming/heimatuniversitaet']='';
+$this->phrasen['incoming/jahrestudiert']='';
+$this->phrasen['incoming/keiner']='';
+$this->phrasen['incoming/learningAgreement']='';
+$this->phrasen['incoming/learningagreementerstellen']='';
+$this->phrasen['incoming/lebenslauf']='';
+$this->phrasen['incoming/lehrveranstaltungen']='';
+$this->phrasen['incoming/lehrveranstaltungenauswählen']='';
+$this->phrasen['incoming/lichtbild']='';
+$this->phrasen['incoming/loeschen']='';
+$this->phrasen['incoming/masterstudiengang']='';
+$this->phrasen['incoming/masterthesis']='';
+$this->phrasen['incoming/motivationsschreiben']='';
+$this->phrasen['incoming/name']='';
+$this->phrasen['incoming/nation']='';
+$this->phrasen['incoming/neuenOutgoingAnlegen']='';
+$this->phrasen['incoming/nichtMehrAlsDreiUniversitaeten']='';
+$this->phrasen['incoming/nothesis']='';
+$this->phrasen['incoming/orgform']='';
+$this->phrasen['incoming/ort']='';
+$this->phrasen['incoming/outgoingRegistration']='';
+$this->phrasen['incoming/personimernstfall']='';
+$this->phrasen['incoming/persönlichedateneditieren']='';
+$this->phrasen['incoming/praktikum']='';
+$this->phrasen['incoming/praktikumBis']='';
+$this->phrasen['incoming/praktikumVon']='';
+$this->phrasen['incoming/profil']='';
+$this->phrasen['incoming/programmAuswahl']='';
+$this->phrasen['incoming/projektarbeitstitel']='';
+$this->phrasen['incoming/registration']='';
+$this->phrasen['incoming/registrationEmail']='';
+$this->phrasen['incoming/researcharea']='';
+$this->phrasen['incoming/sommersemester']='';
+$this->phrasen['incoming/sprachkurs']='';
+$this->phrasen['incoming/sprachkursBis']='';
+$this->phrasen['incoming/sprachkursVon']='';
+$this->phrasen['incoming/studentenImSS']='';
+$this->phrasen['incoming/studentenImWS']='';
+$this->phrasen['incoming/studienrichtung']='';
+$this->phrasen['incoming/studienrichtungGastuniversitaet']='';
+$this->phrasen['incoming/studiertbis']='';
+$this->phrasen['incoming/studiertvon']='';
+$this->phrasen['incoming/summerschool']='';
+$this->phrasen['incoming/thesis']='';
+$this->phrasen['incoming/übersichtlehrveranstaltungen']='';
+$this->phrasen['incoming/uebersichtLv']='panoramica corsi';
+$this->phrasen['incoming/ungueltigeIdUebergeben']='';
+$this->phrasen['incoming/ungueltigerbenutzer']='';
+$this->phrasen['incoming/unitcode']='';
+$this->phrasen['incoming/universitaet']='';
+$this->phrasen['incoming/universitätsname']='';
+$this->phrasen['incoming/universitätsnameerweitert']='';
+$this->phrasen['incoming/uploadCv']='';
+$this->phrasen['incoming/uploadLearningAgreement']='';
+$this->phrasen['incoming/uploadvondateien']='';
+$this->phrasen['incoming/verwaltungVonDateien']='';
+$this->phrasen['incoming/vorbereitenderSprachkurs']='';
+$this->phrasen['incoming/währendDesAuslandsaufenthaltes']='';
+$this->phrasen['incoming/warteAufFreigabe']='';
+$this->phrasen['incoming/weiter']='';
+$this->phrasen['incoming/welcomeToUAS']='';
+$this->phrasen['incoming/wennVorhanden']='';
+$this->phrasen['incoming/wilkommenAnFh']='';
+$this->phrasen['incoming/willkommenBeiOutgoingAnmeldung']='';
+$this->phrasen['incoming/wintersemester']='';
+$this->phrasen['incoming/wochenstunden']='';
+$this->phrasen['incoming/zeitraumBis']='';
+$this->phrasen['incoming/zeitraumVon']='';
+$this->phrasen['incoming/zeugnis']='';
+$this->phrasen['incoming/zugangscode']='';
+$this->phrasen['incoming/zugangsvoraussetzung']='';
+$this->phrasen['incoming/zugangsvoraussetzungFussnote']='';
+$this->phrasen['incoming/zugangsvoraussetzungmaster']='';
+$this->phrasen['incoming/zurAnmeldung']='';
+$this->phrasen['incoming/zusaetzlicheDaten']='';
+
+?>
diff --git a/locale/it-IT/lehre.php b/locale/it-IT/lehre.php
new file mode 100755
index 000000000..716afbb27
--- /dev/null
+++ b/locale/it-IT/lehre.php
@@ -0,0 +1,37 @@
+phrasen['lehre/abmelden']='esci';
+$this->phrasen['lehre/abmeldung']='uscita';
+$this->phrasen['lehre/AbmeldungAusGruppeNichtMoeglich']='';
+$this->phrasen['lehre/AbmeldungErfolgreich']='';
+$this->phrasen['lehre/anwesenheitsUndNotenlisten']='';
+$this->phrasen['lehre/benotungstoolHandbuch']='';
+$this->phrasen['lehre/confirmAbmeldung']='';
+$this->phrasen['lehre/download']='';
+$this->phrasen['lehre/feedback']='feedback';
+$this->phrasen['lehre/gesamtnote']='';
+$this->phrasen['lehre/keineLektorenZugeordnet']='';
+$this->phrasen['lehre/keinMailverteiler']='';
+$this->phrasen['lehre/kreuzerltool']='strumenti per esercitazioni (tool con caselle da barrare)';
+$this->phrasen['lehre/kreuzerltoolMitMoodleInfo']='';
+$this->phrasen['lehre/Lehrbeauftrager']='';
+$this->phrasen['lehre/lehrveranstaltungsinformation']='';
+$this->phrasen['lehre/leistungsuebersicht']='';
+$this->phrasen['lehre/lvInfoBearbeiten']='';
+$this->phrasen['lehre/mail']='';
+$this->phrasen['lehre/moodle']='';
+$this->phrasen['lehre/moodleHandbuch']='';
+$this->phrasen['lehre/moodleMitKreuzerltoolInfo']='';
+$this->phrasen['lehre/moodleWartung']='';
+$this->phrasen['lehre/newsgroups']='';
+$this->phrasen['lehre/nichtzugeteilt']='';
+$this->phrasen['lehre/pinboard']='';
+$this->phrasen['lehre/semesterplan']='';
+$this->phrasen['lehre/semesterplanUpload']='';
+$this->phrasen['lehre/semesterplanVorlage']='';
+$this->phrasen['lehre/semesterplanVorlageHilfe']='';
+$this->phrasen['lehre/studentenAbgabe']='';
+$this->phrasen['lehre/upload']='';
+$this->phrasen['lehre/ziparchiv']='';
+$this->phrasen['lehre/ziparchivTitle']='scarica tutti i file in directory download in formato zip';
+
+?>
diff --git a/locale/it-IT/lvaliste.php b/locale/it-IT/lvaliste.php
new file mode 100755
index 000000000..d9b6f08e5
--- /dev/null
+++ b/locale/it-IT/lvaliste.php
@@ -0,0 +1,32 @@
+phrasen['lvaliste/anmerkung']='';
+$this->phrasen['lvaliste/anzahl']='';
+$this->phrasen['lvaliste/betreuungen']='';
+$this->phrasen['lvaliste/blockung']='';
+$this->phrasen['lvaliste/fehlerAnStudiengang']='Si prega di trasmettere messaggio di errore e feedback alla corrispondente amministrazione del corso di studi ';
+$this->phrasen['lvaliste/gesamtnote']='';
+$this->phrasen['lvaliste/gruppen']='';
+$this->phrasen['lvaliste/hilfeAnzeigen']='';
+$this->phrasen['lvaliste/hilfeText']='';
+$this->phrasen['lvaliste/institut']='';
+$this->phrasen['lvaliste/kalenderwoche']='';
+$this->phrasen['lvaliste/keineDatensaetze']='';
+$this->phrasen['lvaliste/koordination']='';
+$this->phrasen['lvaliste/lehrfach']='';
+$this->phrasen['lvaliste/lehrfachBezeichnung']='';
+$this->phrasen['lvaliste/lehrform']='';
+$this->phrasen['lvaliste/lehrveranstaltungen']='';
+$this->phrasen['lvaliste/lektor']='';
+$this->phrasen['lvaliste/lvBezeichnung']='';
+$this->phrasen['lvaliste/raumtyp']='';
+$this->phrasen['lvaliste/raumtypalternativ']='alternativa';
+$this->phrasen['lvaliste/semester']='';
+$this->phrasen['lvaliste/student']='';
+$this->phrasen['lvaliste/studiengang']='';
+$this->phrasen['lvaliste/stunden']='';
+$this->phrasen['lvaliste/summe']='';
+$this->phrasen['lvaliste/titel']='';
+$this->phrasen['lvaliste/titelProjektarbeit']='titolo dell\'elaborato del progetto';
+$this->phrasen['lvaliste/wochenrythmus']='';
+
+?>
diff --git a/locale/it-IT/lvinfo.php b/locale/it-IT/lvinfo.php
new file mode 100755
index 000000000..a3a8edd0f
--- /dev/null
+++ b/locale/it-IT/lvinfo.php
@@ -0,0 +1,21 @@
+phrasen['lvinfo/anmerkungen']='';
+$this->phrasen['lvinfo/anmerkungenEN']='';
+$this->phrasen['lvinfo/anwesenheit']='';
+$this->phrasen['lvinfo/anwesenheitEN']='';
+$this->phrasen['lvinfo/kurzbeschreibung']='';
+$this->phrasen['lvinfo/kurzbeschreibungEN']='';
+$this->phrasen['lvinfo/lehrinhalte']='';
+$this->phrasen['lvinfo/lehrinhalteEN']='';
+$this->phrasen['lvinfo/leistungsbeurteilung']='';
+$this->phrasen['lvinfo/leistungsbeurteilungEN']='';
+$this->phrasen['lvinfo/lernergebnisse']='';
+$this->phrasen['lvinfo/lernergebnisseEN']='';
+$this->phrasen['lvinfo/literatur']='';
+$this->phrasen['lvinfo/literaturEN']='';
+$this->phrasen['lvinfo/methodik']='';
+$this->phrasen['lvinfo/methodikEN']='';
+$this->phrasen['lvinfo/vorkenntnisse']='';
+$this->phrasen['lvinfo/vorkenntnisseEN']='';
+
+?>
diff --git a/locale/it-IT/lvplan.php b/locale/it-IT/lvplan.php
new file mode 100755
index 000000000..edc4182cf
--- /dev/null
+++ b/locale/it-IT/lvplan.php
@@ -0,0 +1,90 @@
+phrasen['lvplan/aktuelleKW']='numero di settimana attuale';
+$this->phrasen['lvplan/alleRaeume']='tutte le sale';
+$this->phrasen['lvplan/alleReservierungen']='tutte le prenotazioni';
+$this->phrasen['lvplan/alleReservierungenAnzeigen']='mostra tutte le prenotazioni';
+$this->phrasen['lvplan/anleitungLVPlanSync']='';
+$this->phrasen['lvplan/anzahlPersonen']='';
+$this->phrasen['lvplan/bereitsReserviert']='';
+$this->phrasen['lvplan/beschreibungFehlt']='';
+$this->phrasen['lvplan/bisZeitEingeben']='';
+$this->phrasen['lvplan/bisZeitFormat']='';
+$this->phrasen['lvplan/bitteEinenLektorAuswaehlen']='';
+$this->phrasen['lvplan/bitteEinenStudiengangAuswaehlen']='';
+$this->phrasen['lvplan/bitteEinStudiensemesterAuswaehlen']='';
+$this->phrasen['lvplan/bitteWendenSieSichAn']='';
+$this->phrasen['lvplan/caldavURL']='';
+$this->phrasen['lvplan/caldavURLMac']='';
+$this->phrasen['lvplan/datumAngeben']='';
+$this->phrasen['lvplan/datumIstUngueltig']='';
+$this->phrasen['lvplan/datumsbereichZuGross ']='';
+$this->phrasen['lvplan/datumUngueltig']='';
+$this->phrasen['lvplan/eigeneReservierungen']='';
+$this->phrasen['lvplan/eineWocheVor']='';
+$this->phrasen['lvplan/eineWocheZurueck']='';
+$this->phrasen['lvplan/einheit']='';
+$this->phrasen['lvplan/fehlerUndFeedback']='scrivi feedback';
+$this->phrasen['lvplan/googleURL']='';
+$this->phrasen['lvplan/grp']='';
+$this->phrasen['lvplan/hauptmenue']='';
+$this->phrasen['lvplan/home']='';
+$this->phrasen['lvplan/info']='';
+$this->phrasen['lvplan/lehrveranstaltungsplan']='';
+$this->phrasen['lvplan/lehrveranstaltungsplanDetails']='';
+$this->phrasen['lvplan/lehrverbaende']='';
+$this->phrasen['lvplan/lehrverband']='';
+$this->phrasen['lvplan/lektor']='';
+$this->phrasen['lvplan/lektorenplan']='';
+$this->phrasen['lvplan/lektorInStudentIn']='';
+$this->phrasen['lvplan/lvKoordinationsstelle']='';
+$this->phrasen['lvplan/lvPlan']='Calendario lezioni';
+$this->phrasen['lvplan/nameEingeben']='';
+$this->phrasen['lvplan/nichtVorhanden']='';
+$this->phrasen['lvplan/ort']='';
+$this->phrasen['lvplan/persoenlichenAbonnieren']='';
+$this->phrasen['lvplan/persoenlicherLvPlan']='';
+$this->phrasen['lvplan/personen']='';
+$this->phrasen['lvplan/profil']='';
+$this->phrasen['lvplan/raeume']='';
+$this->phrasen['lvplan/raum']='';
+$this->phrasen['lvplan/raumAuswaehlen']='';
+$this->phrasen['lvplan/raumExistiertNicht']='';
+$this->phrasen['lvplan/rauminfoAnzeigen']='';
+$this->phrasen['lvplan/rauminformationenAnzeigen']='';
+$this->phrasen['lvplan/raumreservierungAufZeitraumEingeschraenkt']='';
+$this->phrasen['lvplan/raumsuche']='';
+$this->phrasen['lvplan/raumtyp']='';
+$this->phrasen['lvplan/reservierungen']='';
+$this->phrasen['lvplan/reservierungenLoeschen']='';
+$this->phrasen['lvplan/reservierungsliste']='';
+$this->phrasen['lvplan/reservierungWurdeGeloescht']='';
+$this->phrasen['lvplan/saal']='';
+$this->phrasen['lvplan/saalplan']='';
+$this->phrasen['lvplan/saalreservierung']='';
+$this->phrasen['lvplan/sem']='';
+$this->phrasen['lvplan/semesterIstUngueltig']='';
+$this->phrasen['lvplan/semesterplaene']='';
+$this->phrasen['lvplan/semesterplaenearchiv']='';
+$this->phrasen['lvplan/semesterplanLaden']='';
+$this->phrasen['lvplan/spezialgruppe']='';
+$this->phrasen['lvplan/springeZuKw']='';
+$this->phrasen['lvplan/stammdatenKontrollieren']='';
+$this->phrasen['lvplan/stg']='CdS';
+$this->phrasen['lvplan/studiengangAuswaehlen']='';
+$this->phrasen['lvplan/studiensemesterAuswaehlen']='';
+$this->phrasen['lvplan/studierende']='';
+$this->phrasen['lvplan/stundeIstUngueltig']='';
+$this->phrasen['lvplan/titelFehlt']='';
+$this->phrasen['lvplan/titelUndBeschreibungFehlt']='';
+$this->phrasen['lvplan/uebersicht']='panoramica';
+$this->phrasen['lvplan/uebersichtDerLehrverbaende']='panoramica delle lehrverbände?';
+$this->phrasen['lvplan/unr']='';
+$this->phrasen['lvplan/ver']='';
+$this->phrasen['lvplan/vierWochenVor']='';
+$this->phrasen['lvplan/vierWochenZurueck']='';
+$this->phrasen['lvplan/vonZeitEingeben']='';
+$this->phrasen['lvplan/vonZeitFormat']='';
+$this->phrasen['lvplan/wochenplan']='';
+$this->phrasen['lvplan/zurReservierung']='';
+
+?>
diff --git a/locale/it-IT/mail.php b/locale/it-IT/mail.php
new file mode 100755
index 000000000..9f91f948a
--- /dev/null
+++ b/locale/it-IT/mail.php
@@ -0,0 +1,6 @@
+phrasen['mail/accountaktivierung']='';
+$this->phrasen['mail/profilBetriebsmittelKorrektur']='';
+$this->phrasen['mail/signatur']='';
+
+?>
diff --git a/locale/it-IT/mailverteiler.php b/locale/it-IT/mailverteiler.php
new file mode 100755
index 000000000..9d177255a
--- /dev/null
+++ b/locale/it-IT/mailverteiler.php
@@ -0,0 +1,28 @@
+phrasen['mailverteiler/absatz1']='';
+$this->phrasen['mailverteiler/absatz2']='';
+$this->phrasen['mailverteiler/absatz3']='';
+$this->phrasen['mailverteiler/alleStudentenDiesesStudienganges']='tutti gli studenti di questo corso di studi';
+$this->phrasen['mailverteiler/alleStudentenVon']='tutti gli studenti di';
+$this->phrasen['mailverteiler/anzeigen']='';
+$this->phrasen['mailverteiler/ausblenden']='';
+$this->phrasen['mailverteiler/bedienungsanleitung']='';
+$this->phrasen['mailverteiler/berechtigungskonzept']='';
+$this->phrasen['mailverteiler/bestaetige']='';
+$this->phrasen['mailverteiler/bestaetigeOeffnen']='';
+$this->phrasen['mailverteiler/fehlerBeimLadenDerStudenten']='errore di caricamento degli studenti';
+$this->phrasen['mailverteiler/geoeffnet']='';
+$this->phrasen['mailverteiler/gesperrt']='';
+$this->phrasen['mailverteiler/infoBenutzung']='';
+$this->phrasen['mailverteiler/keineVerteilerVorhanden']='';
+$this->phrasen['mailverteiler/klickenZumSchicken']='';
+$this->phrasen['mailverteiler/mailverteiler']='';
+$this->phrasen['mailverteiler/oeffnenEinesVerteilers']='';
+$this->phrasen['mailverteiler/personen']='';
+$this->phrasen['mailverteiler/personenImVerteiler']='';
+$this->phrasen['mailverteiler/status']='';
+$this->phrasen['mailverteiler/studentenverteiler']='';
+$this->phrasen['mailverteiler/titel']='';
+$this->phrasen['mailverteiler/verteilerOeffnen']='';
+
+?>
diff --git a/locale/it-IT/menu.php b/locale/it-IT/menu.php
new file mode 100755
index 000000000..2117b5a24
--- /dev/null
+++ b/locale/it-IT/menu.php
@@ -0,0 +1,13 @@
+phrasen['menu/assistenz']='';
+$this->phrasen['menu/fixangestellte']='';
+$this->phrasen['menu/fixelektoren']='';
+$this->phrasen['menu/lektoren']='';
+$this->phrasen['menu/organisationseinheit']='';
+$this->phrasen['menu/resturlaub']='';
+$this->phrasen['menu/suchePersonOrtDokumentInhalt']='';
+$this->phrasen['menu/suchePersonOrtDokumentInhaltLang']='';
+$this->phrasen['menu/urlaubAlle']=' tutto ';
+$this->phrasen['menu/zeitsperren']='panoramica periodi attualmente bloccati ';
+
+?>
diff --git a/locale/it-IT/moodle.php b/locale/it-IT/moodle.php
new file mode 100755
index 000000000..1cfc8fb3f
--- /dev/null
+++ b/locale/it-IT/moodle.php
@@ -0,0 +1,30 @@
+phrasen['moodle/artIstUnbekannt']='';
+$this->phrasen['moodle/datenWurdenAktualisiert']='';
+$this->phrasen['moodle/esExistiertBereitsEinTestkurs']='';
+$this->phrasen['moodle/esIstBereitsEinMoodleKursVorhanden']='';
+$this->phrasen['moodle/esMussMindestensEineLehreinheitMarkiertSein']='';
+$this->phrasen['moodle/esWurdeKeineGueltigeIdUebergeben']='';
+$this->phrasen['moodle/esWurdeKeinStudiensemesterUebergeben']='';
+$this->phrasen['moodle/fehlerBeiDerLektorenZuordnung']='errore attribuzione lettore';
+$this->phrasen['moodle/fehlerBeiDerStudentenZuordnung']='errore attribuzione studenti';
+$this->phrasen['moodle/fehlerBeimAnlegenAufgetreten']='';
+$this->phrasen['moodle/gruppenUebernehmen']='';
+$this->phrasen['moodle/klickenSieHierUmTestkursErstellen']='';
+$this->phrasen['moodle/klickenSieHierUmTestkursErstellen24']='';
+$this->phrasen['moodle/kursAnlegen']='';
+$this->phrasen['moodle/kursbezeichnung']='';
+$this->phrasen['moodle/kursUebersicht']='';
+$this->phrasen['moodle/lvidMussUebergebenWerden']='';
+$this->phrasen['moodle/moodleKursAnlegen']='';
+$this->phrasen['moodle/moodleKursAnlegen24']='';
+$this->phrasen['moodle/sieSindNichtAngemeldet']='';
+$this->phrasen['moodle/testkurse']='corsi test';
+$this->phrasen['moodle/testkurse24']='corsi test per Moodle 2.4';
+$this->phrasen['moodle/testkursWurdeErfolgreichAngelegt']='';
+$this->phrasen['moodle/ungueltigeVersion']='';
+$this->phrasen['moodle/vorhandeneMoodleKurse']='';
+$this->phrasen['moodle/wartungschoice']='';
+$this->phrasen['moodle/weiterleitung']='';
+
+?>
diff --git a/locale/it-IT/news.php b/locale/it-IT/news.php
new file mode 100755
index 000000000..b3139ec14
--- /dev/null
+++ b/locale/it-IT/news.php
@@ -0,0 +1,31 @@
+phrasen['news/allesemester']='tutti i semestri';
+$this->phrasen['news/allgemein']='generale';
+$this->phrasen['news/anlegen']='';
+$this->phrasen['news/betreff']='';
+$this->phrasen['news/eintragNochNichtVeroeffentlicht']='';
+$this->phrasen['news/eintragVeroeffentlicht']='';
+$this->phrasen['news/fehlerBeimSenden']='errore in sede di trasmissione della mail a %s';
+$this->phrasen['news/freifach']='';
+$this->phrasen['news/keinSemester']='';
+$this->phrasen['news/keinUebersetzerVorhanden']='';
+$this->phrasen['news/mailtext']='';
+$this->phrasen['news/mailtextHTML']='';
+$this->phrasen['news/maximal30Tage']='';
+$this->phrasen['news/neuereintrag']='';
+$this->phrasen['news/neuerNewseintrag']='';
+$this->phrasen['news/newsverwaltung']='';
+$this->phrasen['news/sichtbarab']='';
+$this->phrasen['news/sichtbarbis']='';
+$this->phrasen['news/studiengang']='';
+$this->phrasen['news/text']='testo';
+$this->phrasen['news/uebersetzen']='tradurre';
+$this->phrasen['news/uebersetzunganlegen']='salva la traduzione in ';
+$this->phrasen['news/uebersetzungenvorhanden']='';
+$this->phrasen['news/uebersetzungsanforderungGesendet']='richiesta di traduzione trasmessa a %s';
+$this->phrasen['news/verfasser']='';
+$this->phrasen['news/veroeffentlichen']='';
+$this->phrasen['news/verwaltungstools']='';
+$this->phrasen['news/xsemester']='';
+
+?>
diff --git a/locale/it-IT/notebookregister.php b/locale/it-IT/notebookregister.php
new file mode 100755
index 000000000..65b81161b
--- /dev/null
+++ b/locale/it-IT/notebookregister.php
@@ -0,0 +1,15 @@
+phrasen['notebookregister/MACadresse']='';
+$this->phrasen['notebookregister/MACadresseBereitsVerwendet']='';
+$this->phrasen['notebookregister/MACadresseErfolgreichEingetragen']='';
+$this->phrasen['notebookregister/MACadresseErfolgreichGeaendert']='';
+$this->phrasen['notebookregister/MACadresseFehlerhaft']='';
+$this->phrasen['notebookregister/MACadresseNichtFreigeschalten']='';
+$this->phrasen['notebookregister/notebook_absatz1']='';
+$this->phrasen['notebookregister/notebook_absatz2']='';
+$this->phrasen['notebookregister/notebook_anmerkung']='';
+$this->phrasen['notebookregister/passwortEingebenWennUIDgeaendert']='';
+$this->phrasen['notebookregister/passwortErneutEingeben']='';
+$this->phrasen['notebookregister/titelNotebookRegistration']='';
+
+?>
diff --git a/locale/it-IT/notfallbestimmungen.php b/locale/it-IT/notfallbestimmungen.php
new file mode 100755
index 000000000..49d0280ff
--- /dev/null
+++ b/locale/it-IT/notfallbestimmungen.php
@@ -0,0 +1,11 @@
+phrasen['notfallbestimmungen/ausbildungErfolgteDurchORK']='';
+$this->phrasen['notfallbestimmungen/brandschutzbeauftragte']='';
+$this->phrasen['notfallbestimmungen/brandschutzwarte']='';
+$this->phrasen['notfallbestimmungen/ersthelfer']='';
+$this->phrasen['notfallbestimmungen/ersthelferUndBrandschutzbeauftragte']='';
+$this->phrasen['notfallbestimmungen/folgendePersonenStehenZurVerfuegung']='';
+$this->phrasen['notfallbestimmungen/rektorat']='';
+$this->phrasen['notfallbestimmungen/sicherheitAnDerFHTW']='';
+
+?>
diff --git a/locale/it-IT/passwort.php b/locale/it-IT/passwort.php
new file mode 100755
index 000000000..1d8b76633
--- /dev/null
+++ b/locale/it-IT/passwort.php
@@ -0,0 +1,31 @@
+phrasen['passwort/AccountAktivierung']='Attiva account';
+$this->phrasen['passwort/AenderungFehler']='Passwort Änderung fehlgeschlagen:%s';
+$this->phrasen['passwort/AenderungOK']='Das Passwort wurde erfolgreich geaendert';
+$this->phrasen['passwort/AltesPasswort']='Vecchia password';
+$this->phrasen['passwort/CaptchaEingabe']='Cliccare sui campi visualizzati sul campo sottostante';
+$this->phrasen['passwort/Grossbuchstabe']='Das neue Passwort muss mindestens einen Grossbuchstaben enthalten.';
+$this->phrasen['passwort/InfotextPolicy']='
+La password deve contenere almeno 8 caratteri, di cui almeno 1 maiuscolo, 1 minuscolo e 1 cifra.
+La password non può contenere spazi e caratteri accentati.
+Caratteri speciali ammessi sono: -$#[]{}!().,*:;_ =
+';
+$this->phrasen['passwort/Kleinbuchstabe']='Das neue Passwort muss mindestens einen Kleinbuchstaben enthalten.';
+$this->phrasen['passwort/Leerzeichen']='Es darf kein Leerzeichen im Passwort vorkommen.';
+$this->phrasen['passwort/MinLaenge']='La password deve contenere almeno 8 caratteri.';
+$this->phrasen['passwort/NeuesPasswort']='Nuova password';
+$this->phrasen['passwort/NichtUebereinstimmend']='Passwörter stimmen nicht überein';
+$this->phrasen['passwort/NoHttps']='ATTENZIONE - state utilizzando una trasmissione in chiaro. La password dovrebbe essere cambiata solo in presenza di un sistema di trasmissione codificato,';
+$this->phrasen['passwort/PasswortAenderFuer']='Cambio password per utente %s %s ( %s )';
+$this->phrasen['passwort/PasswortAendern']='Cambia password';
+$this->phrasen['passwort/PasswortWaehlen']='Bitte wählen Sie ein Passwort für Ihren Account.';
+$this->phrasen['passwort/PasswortWiederholung']='Conferma nuova password';
+$this->phrasen['passwort/ReloadCaptcha']='Ich kann das Bild nicht lesen - neu laden';
+$this->phrasen['passwort/Sonderzeichen']='Bitte verwenden Sie nur erlaubte Sonderzeichen';
+$this->phrasen['passwort/Title']='Cambio password';
+$this->phrasen['passwort/Umlaute']='Es dürfen keine Umlaute verwendet werden.';
+$this->phrasen['passwort/Ziffer']='Es muss mindestens eine Ziffer vorhanden sein.';
+$this->phrasen['passwort/ZuHttpsWechseln']='Jetzt zu verschlüsselter Verbindung wechseln';
+
+?>
diff --git a/locale/it-IT/personensuche.php b/locale/it-IT/personensuche.php
new file mode 100755
index 000000000..fd108c1f1
--- /dev/null
+++ b/locale/it-IT/personensuche.php
@@ -0,0 +1,20 @@
+phrasen['personensuche/alleKategorien']='tutte le categorie';
+$this->phrasen['personensuche/allePersonen']='tutte le persone';
+$this->phrasen['personensuche/art']='';
+$this->phrasen['personensuche/bitteSuchbegriffEingeben']='';
+$this->phrasen['personensuche/eintraegeGefunden']='';
+$this->phrasen['personensuche/esWurden']='';
+$this->phrasen['personensuche/hauptverteiler']='';
+$this->phrasen['personensuche/inGruppe']='';
+$this->phrasen['personensuche/keineEintraegeGefunden']='impossibile trovare registrazioni corrispondenti';
+$this->phrasen['personensuche/kennzeichen']='';
+$this->phrasen['personensuche/mitarbeiterIn']='';
+$this->phrasen['personensuche/mitarbeiterInExtern']='';
+$this->phrasen['personensuche/mitarbeiterInFix']='';
+$this->phrasen['personensuche/personensuche']='';
+$this->phrasen['personensuche/student']='';
+$this->phrasen['personensuche/studentIn']='';
+$this->phrasen['personensuche/sucheNach']='';
+
+?>
diff --git a/locale/it-IT/profil.php b/locale/it-IT/profil.php
new file mode 100755
index 000000000..3b141a687
--- /dev/null
+++ b/locale/it-IT/profil.php
@@ -0,0 +1,62 @@
+phrasen['profil/AccountInaktiv']='Attenzione: questo account non è più attivo';
+$this->phrasen['profil/adminstration']='Amministrazione';
+$this->phrasen['profil/alias']='alias';
+$this->phrasen['profil/alleStudentenVon']='Tutti gli studenti di';
+$this->phrasen['profil/ausgegebenAm']='';
+$this->phrasen['profil/betriebsmittel']='';
+$this->phrasen['profil/Bild']='';
+$this->phrasen['profil/bildHochladen']='';
+$this->phrasen['profil/bildSpeichern']='';
+$this->phrasen['profil/Bildupload']='';
+$this->phrasen['profil/BilduploadInfotext']='';
+$this->phrasen['profil/buero']='';
+$this->phrasen['profil/derUserIstInFolgendenVerteilern ']='';
+$this->phrasen['profil/email']='Email';
+$this->phrasen['profil/entlehnteBetriebsmittel']='';
+$this->phrasen['profil/esWurdenKeineProfileGefunden']='Nessun profilo o più profili per l\'utente richiesto';
+$this->phrasen['profil/faxTw']='fax';
+$this->phrasen['profil/fhausweisAbholbereitAmEmpfangAb']='';
+$this->phrasen['profil/fhausweisGedrucktAm']='';
+$this->phrasen['profil/fhausweisStatus']='';
+$this->phrasen['profil/fhausweisWurdeBereitsAusgegeben']='Tesserino consegnato o pronto per il ritiro';
+$this->phrasen['profil/fhausweisWurdeNochNichtGedruckt']='';
+$this->phrasen['profil/fotoAuswählen']='';
+$this->phrasen['profil/fotofreigeben']='';
+$this->phrasen['profil/fotosperren']='';
+$this->phrasen['profil/fotoWurdeNochNichtAkzeptiert']='';
+$this->phrasen['profil/funktionen']='';
+$this->phrasen['profil/home']='';
+$this->phrasen['profil/homepage']='';
+$this->phrasen['profil/ihrFotoWurdeNochNichtGeprueft']='';
+$this->phrasen['profil/inaktivMitarbeiter']='';
+$this->phrasen['profil/inaktivSonstige']='';
+$this->phrasen['profil/inaktivStudent']='';
+$this->phrasen['profil/infotextSperre']='';
+$this->phrasen['profil/intern']='E-mail di Ateneo';
+$this->phrasen['profil/kontaktPrivat']='Contatti Personali';
+$this->phrasen['profil/kurzbeschreibungFuerOeh']='';
+$this->phrasen['profil/kurzzeichen']='ID breve';
+$this->phrasen['profil/ladenSieBitteEinGueltigesFotoHoch']='';
+$this->phrasen['profil/leistungsbeurteilung']='';
+$this->phrasen['profil/lvplanVon']='';
+$this->phrasen['profil/martrikelnummer']='Codice Persona';
+$this->phrasen['profil/meinCis']='';
+$this->phrasen['profil/mitarbeiter']='';
+$this->phrasen['profil/mobil']='Cellulare';
+$this->phrasen['profil/nummer']='';
+$this->phrasen['profil/nurJPGBilder']='';
+$this->phrasen['profil/profil']='';
+$this->phrasen['profil/profilfotoGesperrt']='';
+$this->phrasen['profil/profilfotoUploadGesperrt']='';
+$this->phrasen['profil/sieSindMitgliedInFolgendenVerteilern']='';
+$this->phrasen['profil/solltenDatenNichtStimmen']='La preghiamo di rivolgersi alla segreteria nel caso i dati non risultino essere corretti.';
+$this->phrasen['profil/student']='Studente';
+$this->phrasen['profil/telefon']='';
+$this->phrasen['profil/telefonTw']='';
+$this->phrasen['profil/wendenSieSichAn']='';
+$this->phrasen['profil/zeitsperrenVon']='';
+$this->phrasen['profil/zeitwuensche']='';
+$this->phrasen['profil/zustaendigeAssistenz']='';
+
+?>
diff --git a/locale/it-IT/pruefung.php b/locale/it-IT/pruefung.php
new file mode 100755
index 000000000..79495aa13
--- /dev/null
+++ b/locale/it-IT/pruefung.php
@@ -0,0 +1,111 @@
+phrasen['pruefung/titlePruefungsfenster'] = 'Inserire sessione';
+$this->phrasen['pruefung/erfolgreichgespeichert'] = 'Salvataggio avvenuto con successo';
+$this->phrasen['pruefung/fehler'] = 'Errore: ';
+$this->phrasen['pruefung/fehlerEndDatumInDerVergangenheit'] = 'Errore: la data di termine è fissata nel passato.';
+$this->phrasen['pruefung/fehlerEndDatumVorStartDatum'] = 'Errore: la data di termine è precedente alla data di inizio.';
+$this->phrasen['pruefung/fehlerDatumNichtKorrekt'] = 'Errore: data inserita in maniera non corretta.';
+$this->phrasen['pruefung/erfolgreichgeaendert'] = 'Modifica avvenuta con successo';
+$this->phrasen['pruefung/keineBerechtigungZumAendernDesDatensatzes'] = 'Non si dispone dei permessi necessari per la modifica.';
+$this->phrasen['pruefung/keineBerechtigungZumAnzeigenDesDatensatzes'] = 'Non si dispone dei permessi necessari per la visualizzazione.';
+$this->phrasen['pruefung/erfolgreichgeloescht'] = 'Cancellazione avvenuta con successo.';
+$this->phrasen['pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen'] = 'Non è stato possibile cancellare la sessione siccome è collegata ad alcuni esami.';
+$this->phrasen['pruefung/keineBerechtigungZumLoeschenDesDatensatzes'] = 'Non si dispone dei permessi necessari per la cancellazione.';
+$this->phrasen['pruefung/pruefungsfensterVerwaltung'] = 'Gestione sessioni';
+$this->phrasen['pruefung/neuesPruefungsfensterAnlegen'] = 'Inserimento nuova sessione';
+$this->phrasen['pruefung/start'] = 'Data inizio';
+$this->phrasen['pruefung/ende'] = 'Data fine';
+$this->phrasen['pruefung/pruefungsfensterBearbeiten'] = 'Modificare sessione';
+$this->phrasen['pruefung/keinePruefungsfensterGespeichert'] = 'Nessuna sessione salvata';
+// Termin festlegen
+$this->phrasen['pruefung/titlePruefungstermin'] = 'Inserimento appello d’esame';
+$this->phrasen['pruefung/pruefungLektor'] = 'Docente';
+$this->phrasen['pruefung/pruefungenVerwalten'] = 'Gestione esami';
+$this->phrasen['pruefung/pruefungTitel'] = 'Titolo';
+$this->phrasen['pruefung/pruefungsfenster'] = 'Sessione';
+$this->phrasen['pruefung/pruefungMethode'] = 'Modalità';
+$this->phrasen['pruefung/pruefungEinzelpruefung'] = 'Einzelprüfung';
+$this->phrasen['pruefung/pruefungTyp'] = 'Tipo';
+$this->phrasen['pruefung/pruefungIntervall'] = 'Periodo';
+$this->phrasen['pruefung/pruefungTermin'] = 'Appelli';
+$this->phrasen['pruefung/pruefungMinTeilnehmer'] = 'min. iscritti';
+$this->phrasen['pruefung/pruefungMaxTeilnehmer'] = 'max. iscritti';
+$this->phrasen['pruefung/pruefungSammelklausur'] = 'Sammelklausur';
+$this->phrasen['pruefung/pruefungTerminHinzufuegen'] = 'Inserire appello';
+$this->phrasen['pruefung/pruefungPruefungenTitle'] = 'Esami';
+$this->phrasen['pruefung/pruefungMitarbeiter'] = 'Collaboratore';
+$this->phrasen['pruefung/storniert'] = 'annullato';
+
+// pruefung.js.php
+$this->phrasen['pruefung/keinFensterVorhanden'] = 'Nessuna sessione a disposizione.';
+$this->phrasen['pruefung/keineDatenVorhanden'] = 'Nessuna data a disposizione.';
+$this->phrasen['pruefung/anmeldefristAbgelaufen'] = 'Termine di iscrizione scaduto.';
+$this->phrasen['pruefung/stornierenMoeglichBis'] = 'Possibilità di annullare l’iscrizione entro il';
+$this->phrasen['pruefung/anmeldenMoeglichBis'] = 'Possibilità di iscrizione entro il';
+$this->phrasen['pruefung/zurLvAnmeldung'] = 'iscriversi al corso';
+$this->phrasen['pruefung/zuerstPruefungAuswaehlen'] = 'Scegliere prima l’esame.';
+$this->phrasen['pruefung/bemerkungVonLektorHinzugefuegt'] = 'inserito da docente';
+$this->phrasen['pruefung/bestaetigen'] = 'Confermare';
+$this->phrasen['pruefung/anmerkungDesStudenten'] = 'Osservazioni dello studente:';
+$this->phrasen['pruefung/bestaetigt'] = 'confermato';
+$this->phrasen['pruefung/statusAenderungVon'] = 'Modifica status di';
+$this->phrasen['pruefung/reihungSpeichern'] = 'Salvare sequenza';
+$this->phrasen['pruefung/listeDrucken'] = 'Stampare lista';
+$this->phrasen['pruefung/pruefungsraum'] = 'Aula d’esame: ';
+$this->phrasen['pruefung/pruefungsort'] = 'Luogo d’esame ';
+$this->phrasen['pruefung/imBuero'] = ' in ufficio';
+$this->phrasen['pruefung/raum'] = ' Aula';
+$this->phrasen['pruefung/raumSpeichern'] = ' Salvare aula';
+$this->phrasen['pruefung/reihunghErfolgreichGeaendert'] = 'Sequenza modificata con successo.';
+$this->phrasen['pruefung/studiengangAuswaehlen'] = 'Selezionare percorso di studi';
+$this->phrasen['pruefung/keinePruefungenVorhanden'] = 'Nessun esame disponibile.';
+$this->phrasen['pruefung/kommentarZu'] = 'Commento a ';
+$this->phrasen['pruefung/kommentarSpeichern'] = 'Salvare commento';
+$this->phrasen['pruefung/kommentarErfolgreichGespeichert'] = 'Commento salvato con successo.';
+$this->phrasen['pruefung/formulardatenNichtKorrekt'] = 'Dati non corretti.';
+$this->phrasen['pruefung/pruefungErfolgreichGespeichert'] = 'Esame salvato con successo.';
+$this->phrasen['pruefung/lehrveranstaltungAuswaehlen'] = 'Selezionare insegnamento ...';
+$this->phrasen['pruefung/keineLehrveranstaltungenVorhanden'] = 'Nessun insegnamento disponibile.';
+$this->phrasen['pruefung/pruefungStornieren'] = 'Cancellare esame';
+$this->phrasen['pruefung/lvErfolgreichEntfernt'] = 'Insegnamento tolto con successo.';
+$this->phrasen['pruefung/pruefungStorniert'] = 'Esame cancellato';
+$this->phrasen['pruefung/terminGeloescht'] = 'Appello eliminato';
+
+// pruefungsbewertung
+$this->phrasen['pruefung/pruefungsbewertungTitle'] = 'Voto d’esame';
+$this->phrasen['pruefung/pruefungsbewertungAnmeldungen'] = 'Iscrizioni';
+ // pruefungsanmeldung
+$this->phrasen['pruefung/anmeldungFuer'] = 'Iscrizione d’esame per';
+$this->phrasen['pruefung/filter'] = 'Filtro';
+$this->phrasen['pruefung/details'] = 'Dettagli';
+$this->phrasen['pruefung/lvDetails'] = 'Dettagli insegnamento';
+$this->phrasen['pruefung/pruefungsDetails'] = 'Dettagli esame';
+$this->phrasen['pruefung/typ'] = 'Tipo';
+$this->phrasen['pruefung/intervall'] = 'Periodo';
+$this->phrasen['pruefung/besuchteLehrveranstaltungen'] = 'Insegnamenti frequentati';
+$this->phrasen['pruefung/freiePlaetze'] = 'Posti liberi';
+$this->phrasen['pruefung/lvVonStudiengang'] = 'Insegnamenti del percorso di studi';
+$this->phrasen['pruefung/lvAlle'] = 'Tutti gli insegnamenti';
+$this->phrasen['pruefung/anmeldungSpeichern'] = 'Salvare iscrizione';
+$this->phrasen['pruefung/studienverpflichtung'] = 'Obbligo formativo';
+
+// liste
+$this->phrasen['pruefung/anmeldungsliste'] = 'Lista partecipanti';
+$this->phrasen['pruefung/fehlenderParam_lvid'] = 'Parametro mancante lehrveranstaltung_id';
+$this->phrasen['pruefung/fehlenderParam_terminid'] = 'Parametro mancante termin_id';
+$this->phrasen['pruefung/fehlenderParam_studiensemester'] = 'Parametro mancante studiensemester';
+$this->phrasen['pruefung/pruefer'] = 'Professore';
+$this->phrasen['pruefung/keineBestaetigtenAnmeldungenVorhanden'] = 'Nessuna conferma di registrazione disponibile.';
+$this->phrasen['pruefung/keineLvAngegeben'] = 'Nessun corso definito.';
+$this->phrasen['pruefung/kollisionMitAnderemTermin'] = 'Date sovrapposte.';
+$this->phrasen['pruefung/terminNichtInDerVergangenheit'] = 'La data dell’esame non è nel passato.';
+$this->phrasen['pruefung/keineLehreinheitenVorhanden'] = 'Nessuna unità di corso disponibile.';
+$this->phrasen['pruefung/keineAnmeldungenVorhanden'] = 'Nessuna registrazione disponibile.';
+
+// anmeldungen Verwalten
+$this->phrasen['pruefung/anmeldungenVerwaltenTitle'] = 'Amministrazione della registrazione degli esami';
+$this->phrasen['pruefung/anmeldungenVerwalten'] = 'Amministrazione registrazioni';
+
+
+?>
diff --git a/locale/it-IT/semesterplan.php b/locale/it-IT/semesterplan.php
new file mode 100755
index 000000000..fb7c9f7fd
--- /dev/null
+++ b/locale/it-IT/semesterplan.php
@@ -0,0 +1,20 @@
+phrasen['semesterplan/bitteZuerstDateiAuswaehlen']='';
+$this->phrasen['semesterplan/dateiKonnteNichtGefundenWerden']='';
+$this->phrasen['semesterplan/dateinameNurBuchstaben']='';
+$this->phrasen['semesterplan/dateitypIstNichtErlaubt']='';
+$this->phrasen['semesterplan/erstellenSieIhrenSemesterplan']='';
+$this->phrasen['semesterplan/fehlerBeiDerParameteruebergabe']='errore di trasmissione dei parametri';
+$this->phrasen['semesterplan/fehlerBeimLadenDerLv']='errore di caricamento della LV';
+$this->phrasen['semesterplan/fehlerBeimLadenDesStudienganges']='errore di caricamento del corso di studi';
+$this->phrasen['semesterplan/fehlerBeimUpload']='errore in sede di upload! Si prega di riprovare ';
+$this->phrasen['semesterplan/fertig']='completo';
+$this->phrasen['semesterplan/fileErfolgreichHochgeladen']='';
+$this->phrasen['semesterplan/inMSWord']='';
+$this->phrasen['semesterplan/ladenSieDieDateiHoch']='';
+$this->phrasen['semesterplan/oeffnenSieDieGespeicherteDatei']='';
+$this->phrasen['semesterplan/ordnerinhalt']='';
+$this->phrasen['semesterplan/speichernSieDasDokument']='';
+$this->phrasen['semesterplan/speichernSieDieVorlage']='';
+
+?>
diff --git a/locale/it-IT/services.php b/locale/it-IT/services.php
new file mode 100755
index 000000000..6994a9e54
--- /dev/null
+++ b/locale/it-IT/services.php
@@ -0,0 +1,8 @@
+phrasen['services/details']='';
+$this->phrasen['services/filtern']='';
+$this->phrasen['services/leistung']='';
+$this->phrasen['services/service']='';
+$this->phrasen['services/uebersichtUeberServicesOrganisationseinheiten']='panoramica dei servizi del dipartimento';
+
+?>
diff --git a/locale/it-IT/studienplan.php b/locale/it-IT/studienplan.php
new file mode 100755
index 000000000..6d6e3c964
--- /dev/null
+++ b/locale/it-IT/studienplan.php
@@ -0,0 +1,28 @@
+phrasen['studienplan/abgeschlossen']='superato';
+$this->phrasen['studienplan/anmelden']='iscriversi';
+$this->phrasen['studienplan/Anmeldung']='Scelta del corso opzionale';
+$this->phrasen['studienplan/AnmeldungDerzeitNichtMoeglich']='';
+$this->phrasen['studienplan/anmeldunggesperrt']='';
+$this->phrasen['studienplan/AnmeldungNichtMoeglich']='';
+$this->phrasen['studienplan/anmeldungvonbis']='';
+$this->phrasen['studienplan/bereitsAngemeldet']='';
+$this->phrasen['studienplan/ects']='CFU';
+$this->phrasen['studienplan/einschreibungErfolgreich']='';
+$this->phrasen['studienplan/legende']='Legenda';
+$this->phrasen['studienplan/legendeEmpfehlung']='';
+$this->phrasen['studienplan/legendeAngemeldet']='iscritto';
+$this->phrasen['studienplan/legendeLock']='Corso non offerto in questo semestre';
+$this->phrasen['studienplan/legendeLVwirdAngeboten']='Corso offerto in questo semestre';
+$this->phrasen['studienplan/LehrveranstalungWaehlen']='';
+$this->phrasen['studienplan/negativ']='';
+$this->phrasen['studienplan/offen']='da superare';
+$this->phrasen['studienplan/optional']='';
+$this->phrasen['studienplan/reduzierteCP']='';
+$this->phrasen['studienplan/regelabgeschlossen']='concluso';
+$this->phrasen['studienplan/regelnichterfuellt']='';
+$this->phrasen['studienplan/status']='Stato';
+$this->phrasen['studienplan/studienplan']='Piano di studi';
+$this->phrasen['studienplan/zuWenigCP']='';
+
+?>
diff --git a/locale/it-IT/telefonverzeichnis.php b/locale/it-IT/telefonverzeichnis.php
new file mode 100755
index 000000000..4320b62fe
--- /dev/null
+++ b/locale/it-IT/telefonverzeichnis.php
@@ -0,0 +1,8 @@
+phrasen['telefonverzeichnis/durchwahl']='';
+$this->phrasen['telefonverzeichnis/faxnummern']='numero di fax';
+$this->phrasen['telefonverzeichnis/faxnummernFuerMitarbeiter']='numero di fax per dipendenti: +43 1 333 40 77 - 99 <Telefon DW>';
+$this->phrasen['telefonverzeichnis/hauptnummer']='';
+$this->phrasen['telefonverzeichnis/titelTelefonverzeichnis']='';
+
+?>
diff --git a/locale/it-IT/testtool.php b/locale/it-IT/testtool.php
new file mode 100755
index 000000000..0f64986a9
--- /dev/null
+++ b/locale/it-IT/testtool.php
@@ -0,0 +1,41 @@
+phrasen['testtool/alleFragenBeantwortet']='';
+$this->phrasen['testtool/bearbeitungszeit']='';
+$this->phrasen['testtool/begruessungstext']='';
+$this->phrasen['testtool/beiDiesemGebietMuessenSieJedeFrageBeantworten']='';
+$this->phrasen['testtool/bitteZuerstAnmelden']='';
+$this->phrasen['testtool/blaettern']='';
+$this->phrasen['testtool/demo']='';
+$this->phrasen['testtool/dieseFrageIstNichtFuerSieBestimmt']='';
+$this->phrasen['testtool/dieZeitIstAbgelaufen']='';
+$this->phrasen['testtool/einleitung']='';
+$this->phrasen['testtool/esWurdeKeineFrageGefunden']='';
+$this->phrasen['testtool/fehler']='errore';
+$this->phrasen['testtool/fehlerBeimGenerierenDesFragenpools']='errore in sede di creazione del pool di domande';
+$this->phrasen['testtool/fehlerBeimSpeichernDerErstansicht']='errore in sede di salvataggio della videata iniziale';
+$this->phrasen['testtool/fehlerBeimStartvorgang']='errore in sede di procedura di avvio';
+$this->phrasen['testtool/gebietStarten']='';
+$this->phrasen['testtool/geburtsdatumStimmtNichtUeberein']='';
+$this->phrasen['testtool/home']='';
+$this->phrasen['testtool/jahr']='';
+$this->phrasen['testtool/keineAntwort']='';
+$this->phrasen['testtool/keinPrueflingseintragVorhanden']='';
+$this->phrasen['testtool/klickenSieAufEinTeilgebiet']='';
+$this->phrasen['testtool/login']='';
+$this->phrasen['testtool/monat']='';
+$this->phrasen['testtool/nameAuswaehlen']='';
+$this->phrasen['testtool/okKlickenUmZuStarten']='';
+$this->phrasen['testtool/quereinstieg']='';
+$this->phrasen['testtool/reihungstestKannNichtGeladenWerden']='';
+$this->phrasen['testtool/reihungstestNichtFreigeschalten']='';
+$this->phrasen['testtool/semester']='';
+$this->phrasen['testtool/speichernUndWeiter']='';
+$this->phrasen['testtool/spracheDerTestfragen']='';
+$this->phrasen['testtool/startDrueckenUmZuBeginnen']='';
+$this->phrasen['testtool/startseite']='';
+$this->phrasen['testtool/tag']='';
+$this->phrasen['testtool/willkommenstext']='';
+$this->phrasen['testtool/zeitAbgelaufen']='';
+$this->phrasen['testtool/zurueckZurStartseite']='';
+
+?>
diff --git a/locale/it-IT/tools.php b/locale/it-IT/tools.php
new file mode 100755
index 000000000..b4a4ddf9b
--- /dev/null
+++ b/locale/it-IT/tools.php
@@ -0,0 +1,64 @@
+phrasen['tools/aktuelleVersion']='versione attuale';
+$this->phrasen['tools/ampel']='Ssemaforo';
+$this->phrasen['tools/ampelAktion']='Azione';
+$this->phrasen['tools/ampelBereitsBestaetigt']='';
+$this->phrasen['tools/ampelBeschreibung']='';
+$this->phrasen['tools/ampelBestaetigen']='';
+$this->phrasen['tools/ampelBestaetigt']='';
+$this->phrasen['tools/ampelBestaetigtAm']='';
+$this->phrasen['tools/ampelDeadline']='';
+$this->phrasen['tools/ampelErledigt']='';
+$this->phrasen['tools/ampelKurzbz']='';
+$this->phrasen['tools/ampelMitarbeiter']='';
+$this->phrasen['tools/ampelNichtGefunden']='';
+$this->phrasen['tools/ampelRestdauer']='';
+$this->phrasen['tools/ampelStatus']='';
+$this->phrasen['tools/ampelsystem']='';
+$this->phrasen['tools/applikationsliste']='';
+$this->phrasen['tools/benotungsdatumDerZeugnisnote']='Data del voto';
+$this->phrasen['tools/bestaetigungDrucken']='';
+$this->phrasen['tools/betrag']='Importo';
+$this->phrasen['tools/buchungstext']='Descrizione';
+$this->phrasen['tools/content']='';
+$this->phrasen['tools/dasAmpelsystemIstEinErinnerungsystem']='';
+$this->phrasen['tools/datei']='';
+$this->phrasen['tools/dokumente']='Documenti';
+$this->phrasen['tools/einzelanwendung']='';
+$this->phrasen['tools/esWurdenKeineErgebnisseGefunden']='impossibile trovare risultati';
+$this->phrasen['tools/esWurdenMehrAlsXDokumenteGefunden']='trovate più di 40 documenti corrispondenti alla ricerca. Si prega di specificare ulteriormente la ricerca';
+$this->phrasen['tools/esWurdenMehrAlsXInhalteGefunden']='trovate più di 20 persone corrispondenti alla ricerca. Si prega di specificare ulteriormente la ricerca';
+$this->phrasen['tools/esWurdenMehrAlsXPersonenGefunden']='trovate più di 20 persone corrispondenti alla ricerca. Si prega di specificare ulteriormente la ricerca';
+$this->phrasen['tools/fehlerBeimAuslesenDerNoten']='errore di lettura dei voti';
+$this->phrasen['tools/fehlerBeimLesenDerDatei']='errore di lettura del file';
+$this->phrasen['tools/inskriptionsbestaetigung']='Certificato d\'iscrizione';
+$this->phrasen['tools/keineDatenGefunden']='';
+$this->phrasen['tools/keineZahlungenVorhanden']='';
+$this->phrasen['tools/leistungsbeurteilung']='';
+$this->phrasen['tools/maxPersonen']='';
+$this->phrasen['tools/mussAlsStudentEingeloggtSein']='';
+$this->phrasen['tools/naehereInformationenfindenSieUnter']='';
+$this->phrasen['tools/nichtZugeteilt']='';
+$this->phrasen['tools/nochKeineBeurteilungEingetragen']='non è stata inserita ancora valutazione alcuna';
+$this->phrasen['tools/offen']='rata da saldare';
+$this->phrasen['tools/reservieren']='';
+$this->phrasen['tools/softwarepaket']='';
+$this->phrasen['tools/studentWurdeNichtGefunden']='';
+$this->phrasen['tools/studienbeitragFuerSSBezahltAmDatum']='';
+$this->phrasen['tools/studienbeitragFuerSSBezahlt']='Tasse per il semestre %1$s versate';
+$this->phrasen['tools/studienbeitragFuerSSNochNichtBezahlt']='Tasse per il semestre %1$s non ancora versate';
+$this->phrasen['tools/studienbuchblatt']='';
+$this->phrasen['tools/studienerfolgsbestaetigung']='Stampa certificato d\'iscrizione';
+$this->phrasen['tools/studiensemesterAuswaehlen']='';
+$this->phrasen['tools/suchbegriff']='';
+$this->phrasen['tools/suche']='';
+$this->phrasen['tools/telefonklappe']='';
+$this->phrasen['tools/uebersichtLeitung']='';
+$this->phrasen['tools/vorlageWohnsitzfinanzamt']='';
+$this->phrasen['tools/waehlenSieEineOEoderAmpel']='';
+$this->phrasen['tools/wurdeNichtGefunden']='non trovato ';
+$this->phrasen['tools/zahlungen']='Situazione tasse';
+$this->phrasen['tools/zahlungsbestaetigung']='Ricevuta di pagamento';
+$this->phrasen['tools/zahlungstyp']='Tipo';
+
+?>
diff --git a/locale/it-IT/upload.php b/locale/it-IT/upload.php
new file mode 100755
index 000000000..e14e96bd2
--- /dev/null
+++ b/locale/it-IT/upload.php
@@ -0,0 +1,40 @@
+phrasen['upload/aktionen']='azioni';
+$this->phrasen['upload/auswaehlen']='';
+$this->phrasen['upload/benutzerKonnteNichtZugeordnetWerden']='';
+$this->phrasen['upload/dateiAufServerDateiformat']='Errore: il formato del file che si vuole caricare sul server non viene supportato';
+$this->phrasen['upload/dateien']='';
+$this->phrasen['upload/dateienAutomatischUeberschreiben']='';
+$this->phrasen['upload/dateienImOrdner']='';
+$this->phrasen['upload/dateienInOrdnern']='';
+$this->phrasen['upload/dateiExistiertBereits']='Errore: il file è già esistente! Si prega di utilizzare l\'opzione "sovrascrivere automaticamente i file';
+$this->phrasen['upload/dateinameDarfNurBuchstaben']='';
+$this->phrasen['upload/dateiUpload']='';
+$this->phrasen['upload/esWurdeKeinPfadDefiniert']='';
+$this->phrasen['upload/fehlerBeimLadenDerLv']='errore di caricamento della LV';
+$this->phrasen['upload/fehlerBeimLoeschenDesOrdners']='errore in sede di cancellazione della cartella';
+$this->phrasen['upload/formattributInEinNeues ']='';
+$this->phrasen['upload/kbGespeichert']='';
+$this->phrasen['upload/keineDateienGefunden']='impossibile trovare file';
+$this->phrasen['upload/keineGegenstaendeDefiniert']='';
+$this->phrasen['upload/keineOrdnerGefunden']='impossibile trovare cartelle corrispondenti';
+$this->phrasen['upload/keineSemesterDefiniert']='';
+$this->phrasen['upload/keineStudiengaengeDefiniert']='';
+$this->phrasen['upload/leeren']='';
+$this->phrasen['upload/maxUploadgroesse']='';
+$this->phrasen['upload/name']='';
+$this->phrasen['upload/neuesVerzeichnisErstellen']='';
+$this->phrasen['upload/studentenUploadEinsehen']='';
+$this->phrasen['upload/studentenUploadVerwalten']='';
+$this->phrasen['upload/studentenUploadverzeichnis']='';
+$this->phrasen['upload/studentenUploadverzeichnisLeeren']='';
+$this->phrasen['upload/umEinenOrdnerOderEineDatei']='';
+$this->phrasen['upload/unterordnerVon']='';
+$this->phrasen['upload/upload']='';
+$this->phrasen['upload/verzeichnisErstellen']='';
+$this->phrasen['upload/verzeichnisname']='';
+$this->phrasen['upload/verzeichnisnameDarfNurBuchstaben']='';
+$this->phrasen['upload/wollenSieOrdnerWirklichLoeschen']='';
+$this->phrasen['upload/wollenSieUploadWirklichLeeren']='';
+
+?>
diff --git a/locale/it-IT/urlaubstool.php b/locale/it-IT/urlaubstool.php
new file mode 100755
index 000000000..5827658fc
--- /dev/null
+++ b/locale/it-IT/urlaubstool.php
@@ -0,0 +1,39 @@
+phrasen['urlaubstool/aktuellerStand']='stato attuale';
+$this->phrasen['urlaubstool/aktuellGebuchterUrlaub']='ferie attualmente prenotate';
+$this->phrasen['urlaubstool/anspruch']='';
+$this->phrasen['urlaubstool/anspruchAnzahlDerUrlaubstage']='';
+$this->phrasen['urlaubstool/bis']='';
+$this->phrasen['urlaubstool/diesIstEineAutomatischeMail']='';
+$this->phrasen['urlaubstool/eintragungenSpeichern']='';
+$this->phrasen['urlaubstool/eintragungLoeschen']='';
+$this->phrasen['urlaubstool/eintragWirklichLoeschen']='';
+$this->phrasen['urlaubstool/erreichbar']='';
+$this->phrasen['urlaubstool/erreichbarkeit']='';
+$this->phrasen['urlaubstool/fehlerBeimSendenAufgetreten']='errore in sede di trasmissione della mail di attivazione a %s';
+$this->phrasen['urlaubstool/fehlerBeimSendenVertretungAufgetreten']='errore in sede di trasmissione della mail di informazione a %s per la sostituzione per vacanze';
+$this->phrasen['urlaubstool/freigabeansuchenUrlaub']='';
+$this->phrasen['urlaubstool/freigabemailWurdeVersandt']='';
+$this->phrasen['urlaubstool/freigegebenDurch']='';
+$this->phrasen['urlaubstool/freigegebenDurchAm']='';
+$this->phrasen['urlaubstool/handbuchUrlaubserfassung']='';
+$this->phrasen['urlaubstool/hilfe']='';
+$this->phrasen['urlaubstool/jaehrlich']='';
+$this->phrasen['urlaubstool/keineVertretungEingetragen']='';
+$this->phrasen['urlaubstool/konnteKeinFreigabemailVersendetWerden']='';
+$this->phrasen['urlaubstool/mailtextVertretung']='';
+$this->phrasen['urlaubstool/meineZeitsperren']='';
+$this->phrasen['urlaubstool/ok']='';
+$this->phrasen['urlaubstool/resturlaub']='';
+$this->phrasen['urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben']='';
+$this->phrasen['urlaubstool/stichtag']='';
+$this->phrasen['urlaubstool/tage']='';
+$this->phrasen['urlaubstool/urlaubImGeschaeftsjahr']='';
+$this->phrasen['urlaubstool/urlaubstool']='';
+$this->phrasen['urlaubstool/vertretung']='';
+$this->phrasen['urlaubstool/vertretungsmailWurdeVersandt']='';
+$this->phrasen['urlaubstool/von']='';
+$this->phrasen['urlaubstool/xHatNeuenUrlaubEingetragen']='';
+$this->phrasen['urlaubstool/zuerstVertretungAuswaehlen']='';
+
+?>
diff --git a/locale/it-IT/zeitaufzeichnung.php b/locale/it-IT/zeitaufzeichnung.php
new file mode 100755
index 000000000..04f222b4a
--- /dev/null
+++ b/locale/it-IT/zeitaufzeichnung.php
@@ -0,0 +1,47 @@
+phrasen['zeitaufzeichnung/aktivitaet']='attività';
+$this->phrasen['zeitaufzeichnung/aktuelleZeitLaden']='importa ora attuale';
+$this->phrasen['zeitaufzeichnung/alleAnzeigen']='mostra tutto';
+$this->phrasen['zeitaufzeichnung/alleEintraege']='tutte le registrazioni ';
+$this->phrasen['zeitaufzeichnung/alsEndzeitUebernehmen']='imposta come fine';
+$this->phrasen['zeitaufzeichnung/alsNeuenEintragSpeichern']='salva come nuova registrazione';
+$this->phrasen['zeitaufzeichnung/alsStartzeitUebernehmen']='imposta come inizio';
+$this->phrasen['zeitaufzeichnung/arbeitszeit']='';
+$this->phrasen['zeitaufzeichnung/benutzerWurdeNichtGefunden']='';
+$this->phrasen['zeitaufzeichnung/bisDatumKleinerAlsVonDatum']='';
+$this->phrasen['zeitaufzeichnung/dauer']='';
+$this->phrasen['zeitaufzeichnung/ende']='';
+$this->phrasen['zeitaufzeichnung/endeXTageAnsicht']='';
+$this->phrasen['zeitaufzeichnung/fehlerBeimErmittelnDerProjekte']='errore di identificazione dei progetti';
+$this->phrasen['zeitaufzeichnung/gesamtdauer']='';
+$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='';
+$this->phrasen['zeitaufzeichnung/id']='';
+$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='';
+$this->phrasen['zeitaufzeichnung/kartennummer']='';
+$this->phrasen['zeitaufzeichnung/keineAuswahl']='';
+$this->phrasen['zeitaufzeichnung/kunde']='';
+$this->phrasen['zeitaufzeichnung/nameEingeben']='';
+$this->phrasen['zeitaufzeichnung/neu']='';
+$this->phrasen['zeitaufzeichnung/oderKartennummerOptional']='';
+$this->phrasen['zeitaufzeichnung/oe']='';
+$this->phrasen['zeitaufzeichnung/organisationseinheit1']='';
+$this->phrasen['zeitaufzeichnung/organisationseinheit2']='';
+$this->phrasen['zeitaufzeichnung/organisationseinheiten']='';
+$this->phrasen['zeitaufzeichnung/pause']='';
+$this->phrasen['zeitaufzeichnung/projekt']='';
+$this->phrasen['zeitaufzeichnung/service']='';
+$this->phrasen['zeitaufzeichnung/sieSindDerzeitKeinenProjektenZugeordnet']='';
+$this->phrasen['zeitaufzeichnung/start']='';
+$this->phrasen['zeitaufzeichnung/summeEintraege']='';
+$this->phrasen['zeitaufzeichnung/tagessumme']='';
+$this->phrasen['zeitaufzeichnung/uebersicht']='';
+$this->phrasen['zeitaufzeichnung/user']='';
+$this->phrasen['zeitaufzeichnung/wochensumme']='';
+$this->phrasen['zeitaufzeichnung/wochensummeArbeitszeit']='';
+$this->phrasen['zeitaufzeichnung/wochensummeEintraege']='';
+$this->phrasen['zeitaufzeichnung/xTageAnsicht']='';
+$this->phrasen['zeitaufzeichnung/zeitaufzeichnung']='';
+$this->phrasen['zeitaufzeichnung/zeitaufzeichnungVon']='';
+$this->phrasen['zeitaufzeichnung/zeitraumAuffallendHoch']='Attenzione, il periodo indicato risulta molto lungo. \n Confermare per salvataggio dei dati indicati.';
+
+?>
diff --git a/locale/it-IT/zeitsperre.php b/locale/it-IT/zeitsperre.php
new file mode 100755
index 000000000..c3b8e1c53
--- /dev/null
+++ b/locale/it-IT/zeitsperre.php
@@ -0,0 +1,43 @@
+phrasen['zeitsperre/achtungEsWerdenAlleEingegebenenTage']='';
+$this->phrasen['zeitsperre/aktuellerStand']='stato attuale';
+$this->phrasen['zeitsperre/anzahlTage']='';
+$this->phrasen['zeitsperre/beschreibungSieheCisHandbuch']='';
+$this->phrasen['zeitsperre/bisDatumIstUngueltigNullenAngeben']='';
+$this->phrasen['zeitsperre/bisDatumMonat']='';
+$this->phrasen['zeitsperre/bisDatumUngueltig']='';
+$this->phrasen['zeitsperre/bitteZuerstVertretungAuswaehlen']='';
+$this->phrasen['zeitsperre/edit']='';
+$this->phrasen['zeitsperre/freigegeben']='';
+$this->phrasen['zeitsperre/grund']='';
+$this->phrasen['zeitsperre/istGroesserAlsBisDatum']='';
+$this->phrasen['zeitsperre/istNichtRichtig']='';
+$this->phrasen['zeitsperre/keineBerechtigungDatensatzLoeschen']='';
+$this->phrasen['zeitsperre/keineZeitsperrenEingetragen']='';
+$this->phrasen['zeitsperre/legendeDurchwahl']='';
+$this->phrasen['zeitsperre/legendeErreichbarkeit']='';
+$this->phrasen['zeitsperre/legendeGrund']='';
+$this->phrasen['zeitsperre/legendeVertretung']='';
+$this->phrasen['zeitsperre/loeschen']='';
+$this->phrasen['zeitsperre/monat']='';
+$this->phrasen['zeitsperre/resturlaubstage']='';
+$this->phrasen['zeitsperre/resturlaubstagePerDatum']='';
+$this->phrasen['zeitsperre/sieHabenKeineBerechtigung']='';
+$this->phrasen['zeitsperre/sieHabenKeineBerechtigungZuAendern']='';
+$this->phrasen['zeitsperre/stundeInklusive']='';
+$this->phrasen['zeitsperre/tag']='';
+$this->phrasen['zeitsperre/ungueltigeId']='';
+$this->phrasen['zeitsperre/urlaubBereitsEingetragen']='';
+$this->phrasen['zeitsperre/urlaubImGeschaeftsjahr']='';
+$this->phrasen['zeitsperre/urlaubKannNichtMehrEditiertWerden']='';
+$this->phrasen['zeitsperre/vonDatum']='';
+$this->phrasen['zeitsperre/vonDatumGroesserAlsBisDatum']='';
+$this->phrasen['zeitsperre/vonDatumIstUngueltigNullenAngeben']='';
+$this->phrasen['zeitsperre/vonDatumMonat']='';
+$this->phrasen['zeitsperre/vonDatumUngueltig']='';
+$this->phrasen['zeitsperre/wollenSieEintragWirklichLoeschen']='';
+$this->phrasen['zeitsperre/zeitsperre']='';
+$this->phrasen['zeitsperre/zeitsperren']='';
+$this->phrasen['zeitsperre/zeitsperreVonBis']='';
+
+?>
diff --git a/locale/it-IT/zeitwunsch.php b/locale/it-IT/zeitwunsch.php
new file mode 100755
index 000000000..3215b330a
--- /dev/null
+++ b/locale/it-IT/zeitwunsch.php
@@ -0,0 +1,25 @@
+phrasen['zeitwunsch/bedeutung']='';
+$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='';
+$this->phrasen['zeitwunsch/erklaerung']='';
+$this->phrasen['zeitwunsch/erklärung']='';
+$this->phrasen['zeitwunsch/esSolltenFuerJedeStunde']='';
+$this->phrasen['zeitwunsch/falscheWerteEingetragen']='';
+$this->phrasen['zeitwunsch/folgendePunkteSindZuBeachten']='';
+$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='';
+$this->phrasen['zeitwunsch/help']='';
+$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='';
+$this->phrasen['zeitwunsch/hierKannIchUnterrichten']='';
+$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='';
+$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='';
+$this->phrasen['zeitwunsch/letzteAenderung']='';
+$this->phrasen['zeitwunsch/nurInNotfaellen']='';
+$this->phrasen['zeitwunsch/profil']='';
+$this->phrasen['zeitwunsch/sperrenSieNurTermine']='';
+$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='inserire nel modulo settimanale standard la propria disponibilità relativa alla normale settimana lavorativa';
+$this->phrasen['zeitwunsch/verwendenSieDenWertNur']='';
+$this->phrasen['zeitwunsch/von']='';
+$this->phrasen['zeitwunsch/wert']='';
+$this->phrasen['zeitwunsch/zeitwunsch']='';
+$this->phrasen['zeitwunsch/zeitwunschVon']='';
+?>
diff --git a/rdf/lehrveranstaltung_einheiten.rdf.php b/rdf/lehrveranstaltung_einheiten.rdf.php
index 4d296c2d2..6ceaca126 100644
--- a/rdf/lehrveranstaltung_einheiten.rdf.php
+++ b/rdf/lehrveranstaltung_einheiten.rdf.php
@@ -176,25 +176,12 @@ else
$stp_ids=array();
$stpl_main = new studienplan();
- $sto_obj = new studienordnung();
- if($sto_obj->loadStudienordnungSTG($stg_kz, $semester_aktuell, $sem))
+ $stpl_main->getStudienplaeneFromSem($stg_kz, $semester_aktuell, $sem, $orgform);
+ foreach($stpl_main->result as $row_stp)
{
- foreach($sto_obj->result as $row_sto)
- {
- //echo "$row_sto->studienordnung_id $row_sto->semester\n";
- $stp_obj = new studienplan();
- if($stp_obj->loadStudienplanSTO($row_sto->studienordnung_id, $orgform))
- {
- foreach($stp_obj->result as $row_stp)
- {
- $stp_ids_arr[]=array('stpid'=>$row_stp->studienplan_id,'semester'=>$row_sto->semester);
- $stp_ids[]=$row_stp->studienplan_id;
- }
- }
- }
+ $stp_ids_arr[]=array('stpid'=>$row_stp->studienplan_id,'semester'=>$row_stp->semester);
+ $stp_ids[]=$row_stp->studienplan_id;
}
- else
- echo "FAILED:".$stpl_main->errormsg;
$qry='';
if(count($stp_ids)>0)
@@ -229,7 +216,7 @@ else
tbl_lehrveranstaltung.lehre, lehreverzeichnis as lv_lehreverzeichnis, aktiv, planfaktor as lv_planfaktor,
planlektoren as lv_planlektoren, planpersonalkosten as lv_planpersonalkosten,
plankostenprolektor as lv_plankostenprolektor, tbl_lehrveranstaltung.lehrform_kurzbz as lv_lehrform_kurzbz, tbl_lehrveranstaltung.orgform_kurzbz,
- '' as studienplan_id, '' as studienplan_bezeichnung, '' as studienplan_lehrveranstaltung_id_parent,
+ ''::text as studienplan_id, '' as studienplan_bezeichnung, '' as studienplan_lehrveranstaltung_id_parent,
tbl_lehrveranstaltung.lehrtyp_kurzbz
FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id)
WHERE 1=1";
@@ -247,9 +234,22 @@ else
$qry.=" AND NOT EXISTS (SELECT 1 FROM lehre.tbl_studienplan_lehrveranstaltung where studienplan_id in (".$db->db_implode4SQL($stp_ids).")
AND lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND tbl_lehrveranstaltung.aktiv)";
}
- //$qry = 'SELECT distinct on(lehrveranstaltung_id) * FROM ('.$qry.' ORDER BY studienplan_id DESC) a';
+/*
+ $qry = 'SELECT
+ lehrveranstaltung_id, lv_kurzbz, lv_bezeichnung, lv_bezeichnung_english, studiengang_kz,
+ semester, sprache, lv_ects, semesterstunden, anmerkung, lehre, lv_lehreverzeichnis, aktiv,
+ lv_planfaktor, lv_planlektoren, lv_planpersonalkosten, lv_plankostenprolektor, lv_lehrform_kurzbz,
+ orgform_kurzbz, studienplan_lehrveranstaltung_id_parent, lehrtyp_kurzbz,
+ array_agg(studienplan_id) as studienplan_id, array_agg(studienplan_bezeichnung) as studienplan_bezeichnung
+ FROM ('.$qry.') a
+ GROUP BY
+ lehrveranstaltung_id, lv_kurzbz, lv_bezeichnung, lv_bezeichnung_english, studiengang_kz,
+ semester, sprache, lv_ects, semesterstunden, anmerkung, lehre, lv_lehreverzeichnis, aktiv,
+ lv_planfaktor, lv_planlektoren, lv_planpersonalkosten, lv_plankostenprolektor, lv_lehrform_kurzbz,
+ orgform_kurzbz, studienplan_lehrveranstaltung_id_parent, lehrtyp_kurzbz';
+*/
}
- //die($qry);
+//die($qry);
if(!$result = $db->db_query($qry))
die($db->db_last_error().' '.$qry);
diff --git a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
index cc47cb5dc..b8f4020f9 100755
--- a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
+++ b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php
@@ -36,6 +36,8 @@ require_once('../include/studienplan.class.php');
require_once('../include/student.class.php');
require_once('../include/prestudent.class.php');
require_once('../include/organisationseinheit.class.php');
+require_once('../include/anrechnung.class.php');
+require_once('../include/lehrform.class.php');
$datum = new datum();
$db = new basis_db();
@@ -152,6 +154,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$lvbezeichnung = $lehrveranstaltung->bezeichnung;
$lvstg = $lehrveranstaltung->studiengang_kz;
$lehrform_kurzbz=$lehrveranstaltung->lehrform_kurzbz;
+ $lehrform = new lehrform($lehrform_kurzbz);
+ $lehrform_bezeichnung = $lehrform->bezeichnung;
$organisationseinheit = new organisationseinheit($lehrveranstaltung->oe_kurzbz);
$lehreinheit=new lehreinheit();
@@ -309,19 +313,64 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$xml .= " ".$datum->formatDatum($benotungsdatum,'d.m.Y')." ";
$xml .= " ".$datum->formatDatum($uebernahmedatum,'d.m.Y')." ";
$xml .= " ".$lehrform_kurzbz." ";
+ $xml .= " ".$lehrform_bezeichnung." ";
$xml .= " ".($sws==0?'':number_format(sprintf('%.1F',$sws),1))." ";
$xml .= " ".number_format($ects,1)." ";
$xml .= " ".$leiter_titel." ".$leiter_vorname." ".$leiter_nachname.($leiter_titelpost!=''?', '.$leiter_titelpost:'')." ";
$xml .= " ";
$xml .= " ";
+
$lehrveranstaltung->getLVkompatibel($lehrveranstaltung_id);
foreach($lehrveranstaltung->lehrveranstaltungen as $lv_kompatibel)
{
$xml .= "".$lv_kompatibel->bezeichnung." ";
}
+
$xml .= " ";
- $return = $lehrveranstaltung->getLVFromStudienplanByLehrtyp($studienplan_id, "modul");
+ $anrechnung = new anrechnung();
+ $anrechnung->getAnrechnungPrestudent($student->prestudent_id, null, $lehrveranstaltung_id);
+
+ $xml .= "";
+ $lehrveranstaltung_id_kompatibel = "";
+ if(count($anrechnung->result) === 1)
+ {
+ $lehrveranstaltung_id_kompatibel = $anrechnung->result[0]->lehrveranstaltung_id;
+ $xml .= $anrechnung->result[0]->lehrveranstaltung_bez;
+ }
+ $xml .= " ";
+
+ $lehrveranstaltung->loadLehrveranstaltungStudienplan($studienplan_id);
+
+ $studienplan_lehrveranstaltung_id = "";
+ foreach($lehrveranstaltung->lehrveranstaltungen as $lv)
+ {
+ if(($lv->lehrveranstaltung_id == $lehrveranstaltung_id) || ($lv->lehrveranstaltung_id == $lehrveranstaltung_id_kompatibel))
+ {
+ $studienplan_lehrveranstaltung_id = $lv->studienplan_lehrveranstaltung_id;
+ break;
+ }
+ }
+
+ $studienplan = new studienplan();
+ if($studienplan_lehrveranstaltung_id != "")
+ {
+ $studienplan->loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id);
+ $lv = new lehrveranstaltung();
+ while($lv->lehrtyp_kurzbz != "modul")
+ {
+ $lv->load($studienplan->lehrveranstaltung_id);
+ $studienplan->loadStudienplanLehrveranstaltung($studienplan->studienplan_lehrveranstaltung_id_parent);
+ }
+ $lehrveranstaltung->lehrveranstaltungen = array(0 => $lv);
+ }
+ else
+ {
+ $lehrveranstaltung->lehrveranstaltungen = array();
+ }
+
+// $return = $lehrveranstaltung->getLVFromStudienplanByLehrtyp($studienplan_id, "modul");
+
$xml .= " ";
//Variable wird zur korrekten Darstellung im Dokument benötigt
diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php
index b3dc5b989..26f8586c4 100644
--- a/rdf/student.rdf.php
+++ b/rdf/student.rdf.php
@@ -497,6 +497,8 @@ if($xmlformat=='rdf')
(tbl_bisio.von>='".$stsem_obj->start."' AND tbl_bisio.von<='".$stsem_obj->ende."')
OR
(tbl_bisio.bis>='".$stsem_obj->start."' AND tbl_bisio.bis<='".$stsem_obj->ende."')
+ OR
+ (tbl_bisio.von<='".$stsem_obj->start."' AND tbl_bisio.bis>='".$stsem_obj->ende."')
)
AND NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE status_kurzbz='Incoming' AND prestudent_id=bis.tbl_bisio.prestudent_id)
";
@@ -775,7 +777,7 @@ else
break;
}
}
-
+
$lv_studiengang=new studiengang();
$lv_studiengang->load($lv_studiengang_kz);
$lv_studiengang_bezeichnung=$lv_studiengang->bezeichnung;
@@ -800,24 +802,24 @@ else
$orgform_student_bezeichnung = new organisationsform();
$orgform_student_bezeichnung->load($prestudent->orgform_kurzbz);
-
+
//Wenn Lehrgang, dann Erhalter-KZ vor die LV-Studiengangs-Kz hängen
if ($lv_studiengang_kz<0)
{
$stg = new studiengang();
$stg->load($lv_studiengang_kz);
-
+
$lv_studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($lv_studiengang_kz));
}
else
$lv_studiengang_kz = sprintf("%04s", abs($lv_studiengang_kz));
-
+
//Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
if ($student->studiengang_kz<0)
{
$stg = new studiengang();
$stg->load($student->studiengang_kz);
-
+
$stg_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($student->studiengang_kz));
}
else
diff --git a/rdf/studienblatt.xml.php b/rdf/studienblatt.xml.php
index 3bf916d13..f057865f6 100644
--- a/rdf/studienblatt.xml.php
+++ b/rdf/studienblatt.xml.php
@@ -1,339 +1,340 @@
-
- * Karl Burkhart
- * Manfred Kindl
- */
-header("Content-type: application/xhtml+xml");
-require_once('../config/vilesci.config.inc.php');
-require_once('../include/functions.inc.php');
-require_once('../include/studiengang.class.php');
-require_once('../include/student.class.php');
-require_once('../include/prestudent.class.php');
-require_once('../include/adresse.class.php');
-require_once('../include/lehrveranstaltung.class.php');
-require_once('../include/akadgrad.class.php');
-require_once('../include/studiensemester.class.php');
-require_once('../include/nation.class.php');
-require_once('../include/studienordnung.class.php');
-require_once('../include/studienplan.class.php');
-require_once('../include/mitarbeiter.class.php');
-require_once('../include/organisationsform.class.php');
-require_once('../include/zgv.class.php');
-require_once('../include/konto.class.php');
-
-$uid_arr = (isset($_REQUEST['uid'])?$_REQUEST['uid']:null);
-
-$uid_arr = explode(";",$uid_arr);
-
-echo "\n";
-echo "\n";
-
-$uid = isset($uid_arr[1])?$uid_arr[1]:$uid_arr[0];
-
-$konto = new konto();
-$student_help = new student();
-// an 2ter stelle da im Aufruf vom FAS ;; der erste immer '' ist
-if($student_help->load($uid))
-{
- $studiengang = new studiengang();
- $studiengang->load($student_help->studiengang_kz);
- switch($studiengang->typ)
- {
- case 'b':
- $studTyp = 'Bachelor';
- $titel_kurzbz = 'BSc';
- break;
- case 'm':
- $studTyp = 'Master';
- $titel_kurzbz ='MSc';
- break;
- case 'd':
- $studTyp = 'Diplom';
- break;
- case 'l':
- $studTyp = 'Lehrgang';
- break;
- case 'k':
- $studTyp = 'Kurzstudium';
- break;
- default:
- $studTyp ='';
- $titel_kurzbz = '';
- }
- echo "\t".$studTyp." \n";
- echo "\t".$studiengang->bezeichnung." \n";
-}
-
-foreach($uid_arr as $uid)
-{
- if($uid=='')
- continue;
-
- echo "\t\n";
-
- $student = new student();
- if($student->load($uid))
- {
- $datum_aktuell = date('d.m.Y');
- $gebdatum = date('d.m.Y',strtotime($student->gebdatum));
- $prestudent = new prestudent($student->prestudent_id);
- $prestudent->getLastStatus($student->prestudent_id,null,'Student');
- $studienordnung = new studienordnung();
- $studienordnung->getStudienordnungFromStudienplan($prestudent->studienplan_id);
- $studiengang = new studiengang();
- $studiengang->load($studienordnung->studiengang_kz);
- $studienplan = new studienplan();
- $studienplan->loadStudienplan($prestudent->studienplan_id);
- $staatsbuergerschaft = new nation();
- $staatsbuergerschaft->load($student->staatsbuergerschaft);
-
-
- $svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr;
-
- switch($student->geschlecht)
- {
- case 'm':
- $geschlecht = 'Männlich';
- break;
- case 'w':
- $geschlecht = 'Weiblich';
- break;
- case 'u':
- $geschlecht = 'Unbekannt';
- break;
- default:
- $geschlecht ='';
- }
-
- //Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
- if ($studienordnung->studiengang_kz<0)
- {
- $stg = new studiengang();
- $stg->load($studienordnung->studiengang_kz);
-
- $studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($studienordnung->studiengang_kz));
- }
- else
- $studiengang_kz = sprintf("%04s", abs($studienordnung->studiengang_kz));
-
- echo "\t\t1
\n";
- echo "\t\t".$uid." \n";
- echo "\t\t".$geschlecht." \n";
- echo "\t\t".$student->anrede." \n";
- echo "\t\t".$student->vorname." ".$student->vornamen." \n";
- echo "\t\t".$student->vornamen." \n";
- echo "\t\t".$student->nachname." \n";
- echo "\t\t".$student->titelpre." \n";
- echo "\t\t".$student->titelpost." \n";
- echo "\t\t".$gebdatum." \n";
- echo "\t\t".$student->gebort." \n";
- echo "\t\t".$staatsbuergerschaft->langtext." \n";
- echo "\t\t".$svnr." \n";
- echo "\t\t".trim($student->matrikelnr)." \n";
- echo "\t\t".$studienordnung->studiengangbezeichnung." \n";
- echo "\t\t".$studienordnung->studiengangbezeichnung_englisch." \n";
- echo "\t\t".$studienordnung->studiengangkurzbzlang." \n";
- echo "\t\t".$studiengang_kz." \n";
- echo "\t\t".$studienplan->sprache." ";
- echo "\t\t".$studienordnung->ects." ";
- echo "\t\t".($studienplan->regelstudiendauer!=0?$studienordnung->ects/$studienplan->regelstudiendauer:0)." ";
-
- echo "\t\t".date('Y')." ";
-
- echo "\t\t".$prestudent->ausbildungssemester." ";
-
- $studiensemester_aktuell = new studiensemester();
- $studiensemester_aktuell->load($prestudent->studiensemester_kurzbz);
-
- echo "\t\t".$studiensemester_aktuell->bezeichnung." ";
-
- // check ob Oeh-Beitrag bezahlt wurde
- $oehbeitrag = $konto->getOehBeitragGesamt($uid, $studiensemester_aktuell->studiensemester_kurzbz);
- echo "\t\t".str_replace('.', ',', $oehbeitrag)." ";
-
- // check ob Quereinsteiger
- $ausbildungssemester = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->ausbildungssemester:'';
- echo "\t\t".$ausbildungssemester." ";
-
- $studiensemester_beginn = new studiensemester();
- $studienbeginn = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->studiensemester_kurzbz:'';
- $studiensemester_beginn->load($studienbeginn);
-
- echo "\t\t".$studiensemester_beginn->bezeichnung." ";
- echo "\t\t".date('d.m.Y',strtotime($studiensemester_beginn->start))." ";
-
- $prestudent->getLastStatus($student->prestudent_id,null,'Student');
- $studiensemester_abschluss = new studiensemester();
- $abschluss = $studiensemester_abschluss->jump($prestudent->studiensemester_kurzbz, $studienplan->regelstudiendauer-$prestudent->ausbildungssemester);
- $studiensemester_abschluss->load($abschluss);
- echo "\t\t".$studiensemester_abschluss->bezeichnung." ";
- echo "\t\t".date('d.m.Y',strtotime($studiensemester_abschluss->ende))." ";
-
- $studiensemester_endedatum = new studiensemester();
- $studiensemester_endedatum->load($studiensemester_endedatum->getaktorNext(1));
-
- echo "\t\t".date('d.m.Y',strtotime($studiensemester_endedatum->ende))." ";
-
- $status_aktuell = ($prestudent->getLastStatus($student->prestudent_id,null,null))?$prestudent->status_kurzbz:'';
-
- switch($status_aktuell)
- {
- case 'Student':
- $studierendenstatus_aktuell = 'Aktive/r StudentIn';
- break;
- case 'Unterbrecher':
- $studierendenstatus_aktuell = 'UnterbrecherIn';
- break;
- case 'Absolvent':
- $studierendenstatus_aktuell = 'AbsolventIn';
- break;
- case 'Diplomand':
- $studierendenstatus_aktuell = 'DiplomandIn';
- break;
- case 'Abbrecher':
- $studierendenstatus_aktuell = 'AbbrecherIn';
- break;
- default:
- $studierendenstatus_aktuell ='';
- }
-
- echo "\t\t".$studierendenstatus_aktuell." \n";
- echo "\t\t".$prestudent->zgvdatum." \n";
- $zgv = new zgv($prestudent->zgv_code);
- echo "\t\t".$zgv->zgv_kurzbz." \n";
- echo "\t\t".$studienplan->bezeichnung." \n";
- echo "\t\tanmerkung]]> \n";
-
- $titel_kurzbz = '';
- switch($studiengang->typ)
- {
- case 'b':
- $studTyp = 'Bachelor';
- $titel_kurzbz = 'BSc';
- break;
- case 'm':
- $studTyp = 'Master';
- $titel_kurzbz ='MSc';
- break;
- case 'd':
- $studTyp = 'Diplom';
- break;
- case 'l':
- $studTyp = 'Lehrgang';
- break;
- case 'k':
- $studTyp = 'Kurzstudium';
- break;
- default:
- $studTyp ='';
- $titel_kurzbz = '';
- }
-
- echo "\t\t".$titel_kurzbz." \n";
- echo "\t\t".$studTyp." \n";
- echo "\t\t".$studienplan->sprache." \n";
- echo "\t\t".$studienplan->regelstudiendauer." \n";
-
- $akadgrad = new akadgrad();
- $akadgrad->getAkadgradStudent($student->uid);
-
- echo "\t\t".$akadgrad->titel." \n";
- echo "\t\t".$akadgrad->akadgrad_kurzbz." \n";
-
- //für ao. Studierende wird die StgKz der Lehrveranstaltungen benötigt, die sie besuchen
- $lv_studiengang_kz='';
- $lv_studiengang_bezeichnung='';
- $lv_studiengang_typ='';
-
- $stg_typ=new studiengang();
- $lv=new lehrveranstaltung();
- $lv->load_lva_student($student->uid);
- if(count($lv->lehrveranstaltungen)>0)
- {
- $lv_studiengang_kz=$lv->lehrveranstaltungen[0]->studiengang_kz;
- $lv_studiengang=new studiengang();
- $lv_studiengang->load($lv_studiengang_kz);
- $lv_studiengang_bezeichnung=$lv_studiengang->bezeichnung;
- $stg_typ->getStudiengangTyp($lv_studiengang->typ);
- $lv_studiengang_typ=$stg_typ->bezeichnung;
- }
-
- echo "\t\t".sprintf('%04s', $lv_studiengang_kz)." ";
- echo "\t\t$lv_studiengang_typ ";
- echo "\t\t$lv_studiengang_bezeichnung ";
-
- echo "\t\t".$datum_aktuell." \n";
-
- $adresse = new adresse();
- $adresse->load_pers($student->person_id);
-
- foreach($adresse->result as $row_adresse)
- {
- if($row_adresse->zustelladresse)
- {
- echo "\t\tstrasse]]> \n";
- echo "\t\t".$row_adresse->plz." ".$row_adresse->ort." \n";
- echo "\t\t".$row_adresse->nation." \n";
- break;
- }
- }
- foreach($adresse->result as $row_adresse)
- {
- if($row_adresse->heimatadresse)
- {
- echo "\t\tstrasse]]> \n";
- echo "\t\t".$row_adresse->plz." ".$row_adresse->ort." \n";
- echo "\t\t".$row_adresse->nation." \n";
- break;
- }
- }
- $prestudent = new prestudent();
- $prestudent->getLastStatus($student->prestudent_id, null, 'Student');
-
- if($prestudent->orgform_kurzbz!='')
- $orgform = $prestudent->orgform_kurzbz;
- else
- $orgform = $studienplan->orgform_kurzbz;
-
- $orgform_bez = new organisationsform();
- $orgform_bez->load($orgform);
-
- echo "\t\t".$orgform." \n";
- echo "\t\t".$orgform_bez->bezeichnung." \n";
-
- //Studiengangsleiter auslesen
- $stg_oe_obj = new studiengang($studienordnung->studiengang_kz);
- if ($studienordnung->studiengang_kz=='')
- $stgleiter = $stg_oe_obj->getLeitung($student_help->studiengang_kz);
- else
- $stgleiter = $stg_oe_obj->getLeitung($studienordnung->studiengang_kz);
- $stgl='';
- foreach ($stgleiter as $stgleiter_uid)
- {
- $stgl_ma = new mitarbeiter($stgleiter_uid);
- $stgl .= trim($stgl_ma->titelpre.' '.$stgl_ma->vorname.' '.$stgl_ma->nachname.' '.$stgl_ma->titelpost);
- }
-
- echo "\t\t$stgl \n";
- }
- echo "\t \n";
-}
-echo " ";
-
+
+ * Karl Burkhart
+ * Manfred Kindl
+ */
+header("Content-type: application/xhtml+xml");
+require_once('../config/vilesci.config.inc.php');
+require_once('../include/functions.inc.php');
+require_once('../include/studiengang.class.php');
+require_once('../include/student.class.php');
+require_once('../include/prestudent.class.php');
+require_once('../include/adresse.class.php');
+require_once('../include/lehrveranstaltung.class.php');
+require_once('../include/akadgrad.class.php');
+require_once('../include/studiensemester.class.php');
+require_once('../include/nation.class.php');
+require_once('../include/studienordnung.class.php');
+require_once('../include/studienplan.class.php');
+require_once('../include/mitarbeiter.class.php');
+require_once('../include/organisationsform.class.php');
+require_once('../include/zgv.class.php');
+require_once('../include/konto.class.php');
+
+$uid_arr = (isset($_REQUEST['uid'])?$_REQUEST['uid']:null);
+$studiensemester = (isset($_REQUEST['ss'])?$_REQUEST['ss']:null);
+
+$uid_arr = explode(";",$uid_arr);
+
+echo "\n";
+echo "\n";
+
+$uid = isset($uid_arr[1])?$uid_arr[1]:$uid_arr[0];
+
+$konto = new konto();
+$student_help = new student();
+// an 2ter stelle da im Aufruf vom FAS ;; der erste immer '' ist
+if($student_help->load($uid))
+{
+ $studiengang = new studiengang();
+ $studiengang->load($student_help->studiengang_kz);
+ switch($studiengang->typ)
+ {
+ case 'b':
+ $studTyp = 'Bachelor';
+ $titel_kurzbz = 'BSc';
+ break;
+ case 'm':
+ $studTyp = 'Master';
+ $titel_kurzbz ='MSc';
+ break;
+ case 'd':
+ $studTyp = 'Diplom';
+ break;
+ case 'l':
+ $studTyp = 'Lehrgang';
+ break;
+ case 'k':
+ $studTyp = 'Kurzstudium';
+ break;
+ default:
+ $studTyp ='';
+ $titel_kurzbz = '';
+ }
+ echo "\t".$studTyp." \n";
+ echo "\t".$studiengang->bezeichnung." \n";
+}
+
+foreach($uid_arr as $uid)
+{
+ if($uid=='')
+ continue;
+
+ echo "\t\n";
+
+ $student = new student();
+ if($student->load($uid))
+ {
+ $datum_aktuell = date('d.m.Y');
+ $gebdatum = date('d.m.Y',strtotime($student->gebdatum));
+ $prestudent = new prestudent($student->prestudent_id);
+ $prestudent->getLastStatus($student->prestudent_id,$studiensemester,'Student');
+ $studienordnung = new studienordnung();
+ $studienordnung->getStudienordnungFromStudienplan($prestudent->studienplan_id);
+ $studiengang = new studiengang();
+ $studiengang->load($studienordnung->studiengang_kz);
+ $studienplan = new studienplan();
+ $studienplan->loadStudienplan($prestudent->studienplan_id);
+ $staatsbuergerschaft = new nation();
+ $staatsbuergerschaft->load($student->staatsbuergerschaft);
+
+
+ $svnr = ($student->svnr == '')?'Ersatzkennzeichen: '.$student->ersatzkennzeichen:$student->svnr;
+
+ switch($student->geschlecht)
+ {
+ case 'm':
+ $geschlecht = 'Männlich';
+ break;
+ case 'w':
+ $geschlecht = 'Weiblich';
+ break;
+ case 'u':
+ $geschlecht = 'Unbekannt';
+ break;
+ default:
+ $geschlecht ='';
+ }
+
+ //Wenn Lehrgang, dann Erhalter-KZ vor die Studiengangs-Kz hängen
+ if ($studienordnung->studiengang_kz<0)
+ {
+ $stg = new studiengang();
+ $stg->load($studienordnung->studiengang_kz);
+
+ $studiengang_kz = sprintf("%03s", $stg->erhalter_kz).sprintf("%04s", abs($studienordnung->studiengang_kz));
+ }
+ else
+ $studiengang_kz = sprintf("%04s", abs($studienordnung->studiengang_kz));
+
+ echo "\t\t1
\n";
+ echo "\t\t".$uid." \n";
+ echo "\t\t".$geschlecht." \n";
+ echo "\t\t".$student->anrede." \n";
+ echo "\t\t".$student->vorname." ".$student->vornamen." \n";
+ echo "\t\t".$student->vornamen." \n";
+ echo "\t\t".$student->nachname." \n";
+ echo "\t\t".$student->titelpre." \n";
+ echo "\t\t".$student->titelpost." \n";
+ echo "\t\t".$gebdatum." \n";
+ echo "\t\t".$student->gebort." \n";
+ echo "\t\t".$staatsbuergerschaft->langtext." \n";
+ echo "\t\t".$svnr." \n";
+ echo "\t\t".trim($student->matrikelnr)." \n";
+ echo "\t\t".$studienordnung->studiengangbezeichnung." \n";
+ echo "\t\t".$studienordnung->studiengangbezeichnung_englisch." \n";
+ echo "\t\t".$studienordnung->studiengangkurzbzlang." \n";
+ echo "\t\t".$studiengang_kz." \n";
+ echo "\t\t".$studienplan->sprache." ";
+ echo "\t\t".$studienordnung->ects." ";
+ echo "\t\t".($studienplan->regelstudiendauer!=0?$studienordnung->ects/$studienplan->regelstudiendauer:0)." ";
+
+ echo "\t\t".date('Y')." ";
+
+ echo "\t\t".$prestudent->ausbildungssemester." ";
+
+ $studiensemester_aktuell = new studiensemester();
+ $studiensemester_aktuell->load($studiensemester);
+
+ echo "\t\t".$studiensemester_aktuell->bezeichnung." ";
+
+ // check ob Oeh-Beitrag bezahlt wurde
+ $oehbeitrag = $konto->getOehBeitragGesamt($uid, $studiensemester_aktuell->studiensemester_kurzbz);
+ echo "\t\t".str_replace('.', ',', $oehbeitrag)." ";
+
+ // check ob Quereinsteiger
+ $ausbildungssemester = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->ausbildungssemester:'';
+ echo "\t\t".$ausbildungssemester." ";
+
+ $studiensemester_beginn = new studiensemester();
+ $studienbeginn = ($prestudent->getFirstStatus($student->prestudent_id, 'Student'))?$prestudent->studiensemester_kurzbz:'';
+ $studiensemester_beginn->load($studienbeginn);
+
+ echo "\t\t".$studiensemester_beginn->bezeichnung." ";
+ echo "\t\t".date('d.m.Y',strtotime($studiensemester_beginn->start))." ";
+
+ $prestudent->getLastStatus($student->prestudent_id,$studiensemester,'Student');
+ $studiensemester_abschluss = new studiensemester();
+ $abschluss = $studiensemester_abschluss->jump($prestudent->studiensemester_kurzbz, $studienplan->regelstudiendauer-$prestudent->ausbildungssemester);
+ $studiensemester_abschluss->load($abschluss);
+ echo "\t\t".$studiensemester_abschluss->bezeichnung." ";
+ echo "\t\t".date('d.m.Y',strtotime($studiensemester_abschluss->ende))." ";
+
+ $studiensemester_endedatum = new studiensemester();
+ $studiensemester_endedatum->load($studiensemester_endedatum->getaktorNext(1));
+
+ echo "\t\t".date('d.m.Y',strtotime($studiensemester_endedatum->ende))." ";
+
+ $status_aktuell = ($prestudent->getLastStatus($student->prestudent_id,null,null))?$prestudent->status_kurzbz:'';
+
+ switch($status_aktuell)
+ {
+ case 'Student':
+ $studierendenstatus_aktuell = 'Aktive/r StudentIn';
+ break;
+ case 'Unterbrecher':
+ $studierendenstatus_aktuell = 'UnterbrecherIn';
+ break;
+ case 'Absolvent':
+ $studierendenstatus_aktuell = 'AbsolventIn';
+ break;
+ case 'Diplomand':
+ $studierendenstatus_aktuell = 'DiplomandIn';
+ break;
+ case 'Abbrecher':
+ $studierendenstatus_aktuell = 'AbbrecherIn';
+ break;
+ default:
+ $studierendenstatus_aktuell ='';
+ }
+
+ echo "\t\t".$studierendenstatus_aktuell." \n";
+ echo "\t\t".$prestudent->zgvdatum." \n";
+ $zgv = new zgv($prestudent->zgv_code);
+ echo "\t\t".$zgv->zgv_kurzbz." \n";
+ echo "\t\t".$studienplan->bezeichnung." \n";
+ echo "\t\tanmerkung]]> \n";
+
+ $titel_kurzbz = '';
+ switch($studiengang->typ)
+ {
+ case 'b':
+ $studTyp = 'Bachelor';
+ $titel_kurzbz = 'BSc';
+ break;
+ case 'm':
+ $studTyp = 'Master';
+ $titel_kurzbz ='MSc';
+ break;
+ case 'd':
+ $studTyp = 'Diplom';
+ break;
+ case 'l':
+ $studTyp = 'Lehrgang';
+ break;
+ case 'k':
+ $studTyp = 'Kurzstudium';
+ break;
+ default:
+ $studTyp ='';
+ $titel_kurzbz = '';
+ }
+
+ echo "\t\t".$titel_kurzbz." \n";
+ echo "\t\t".$studTyp." \n";
+ echo "\t\t".$studienplan->sprache." \n";
+ echo "\t\t".$studienplan->regelstudiendauer." \n";
+
+ $akadgrad = new akadgrad();
+ $akadgrad->getAkadgradStudent($student->uid);
+
+ echo "\t\t".$akadgrad->titel." \n";
+ echo "\t\t".$akadgrad->akadgrad_kurzbz." \n";
+
+ //für ao. Studierende wird die StgKz der Lehrveranstaltungen benötigt, die sie besuchen
+ $lv_studiengang_kz='';
+ $lv_studiengang_bezeichnung='';
+ $lv_studiengang_typ='';
+
+ $stg_typ=new studiengang();
+ $lv=new lehrveranstaltung();
+ $lv->load_lva_student($student->uid);
+ if(count($lv->lehrveranstaltungen)>0)
+ {
+ $lv_studiengang_kz=$lv->lehrveranstaltungen[0]->studiengang_kz;
+ $lv_studiengang=new studiengang();
+ $lv_studiengang->load($lv_studiengang_kz);
+ $lv_studiengang_bezeichnung=$lv_studiengang->bezeichnung;
+ $stg_typ->getStudiengangTyp($lv_studiengang->typ);
+ $lv_studiengang_typ=$stg_typ->bezeichnung;
+ }
+
+ echo "\t\t".sprintf('%04s', $lv_studiengang_kz)." ";
+ echo "\t\t$lv_studiengang_typ ";
+ echo "\t\t$lv_studiengang_bezeichnung ";
+
+ echo "\t\t".$datum_aktuell." \n";
+
+ $adresse = new adresse();
+ $adresse->load_pers($student->person_id);
+
+ foreach($adresse->result as $row_adresse)
+ {
+ if($row_adresse->zustelladresse)
+ {
+ echo "\t\tstrasse]]> \n";
+ echo "\t\t".$row_adresse->plz." ".$row_adresse->ort." \n";
+ echo "\t\t".$row_adresse->nation." \n";
+ break;
+ }
+ }
+ foreach($adresse->result as $row_adresse)
+ {
+ if($row_adresse->heimatadresse)
+ {
+ echo "\t\tstrasse]]> \n";
+ echo "\t\t".$row_adresse->plz." ".$row_adresse->ort." \n";
+ echo "\t\t".$row_adresse->nation." \n";
+ break;
+ }
+ }
+ $prestudent = new prestudent();
+ $prestudent->getLastStatus($student->prestudent_id, null, 'Student');
+
+ if($prestudent->orgform_kurzbz!='')
+ $orgform = $prestudent->orgform_kurzbz;
+ else
+ $orgform = $studienplan->orgform_kurzbz;
+
+ $orgform_bez = new organisationsform();
+ $orgform_bez->load($orgform);
+
+ echo "\t\t".$orgform." \n";
+ echo "\t\t".$orgform_bez->bezeichnung." \n";
+
+ //Studiengangsleiter auslesen
+ $stg_oe_obj = new studiengang($studienordnung->studiengang_kz);
+ if ($studienordnung->studiengang_kz=='')
+ $stgleiter = $stg_oe_obj->getLeitung($student_help->studiengang_kz);
+ else
+ $stgleiter = $stg_oe_obj->getLeitung($studienordnung->studiengang_kz);
+ $stgl='';
+ foreach ($stgleiter as $stgleiter_uid)
+ {
+ $stgl_ma = new mitarbeiter($stgleiter_uid);
+ $stgl .= trim($stgl_ma->titelpre.' '.$stgl_ma->vorname.' '.$stgl_ma->nachname.' '.$stgl_ma->titelpost);
+ }
+
+ echo "\t\t$stgl \n";
+ }
+ echo "\t \n";
+}
+echo " ";
+
?>
\ No newline at end of file
diff --git a/system/dbupdate_3.2.php b/system/dbupdate_3.2.php
index 34324ab7d..73e6f86c5 100755
--- a/system/dbupdate_3.2.php
+++ b/system/dbupdate_3.2.php
@@ -107,7 +107,7 @@ if(!@$db->db_query("SELECT bewerbung_abgeschicktamum FROM public.tbl_prestudents
//Spalte benotung in lehre.tbl_lehrveranstaltung
if (!$result = @$db->db_query("SELECT benotung FROM lehre.tbl_lehrveranstaltung LIMIT 1;"))
{
- $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN benotung boolean NOT NULL DEFAULT FALSE;";
+ $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN benotung boolean NOT NULL DEFAULT TRUE;";
if (!$db->db_query($qry))
echo 'lehre.tbl_lehrveranstaltung: ' . $db->db_last_error() . ' ';
@@ -118,7 +118,7 @@ if (!$result = @$db->db_query("SELECT benotung FROM lehre.tbl_lehrveranstaltung
//Spalte lvinfo in lehre.tbl_lehrveranstaltung
if (!$result = @$db->db_query("SELECT lvinfo FROM lehre.tbl_lehrveranstaltung LIMIT 1;"))
{
- $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lvinfo boolean NOT NULL DEFAULT FALSE;";
+ $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lvinfo boolean NOT NULL DEFAULT TRUE;";
if (!$db->db_query($qry))
echo 'lehre.tbl_lehrveranstaltung: ' . $db->db_last_error() . ' ';
@@ -1114,9 +1114,30 @@ if (!$result = @$db->db_query("SELECT genehmigung FROM lehre.tbl_studienplan_leh
echo ' lehre.tbl_studienplan_lehrveranstaltung: Spalte genehmigung hinzugefügt. ';
}
+//Spalte pruefungstyp_kurzbz in campus.tbl_pruefungsanmeldung
+if (!$result = @$db->db_query("SELECT pruefungstyp_kurzbz FROM campus.tbl_pruefungsanmeldung LIMIT 1;"))
+{
+ $qry = "ALTER TABLE campus.tbl_pruefungsanmeldung ADD COLUMN pruefungstyp_kurzbz varchar(16);
+ ALTER TABLE campus.tbl_pruefungsanmeldung ADD CONSTRAINT fk_pruefungsanmeldung_pruefungstyp_pruefungstyp_kurzbz FOREIGN KEY (pruefungstyp_kurzbz) REFERENCES lehre.tbl_pruefungstyp(pruefungstyp_kurzbz) ON DELETE CASCADE ON UPDATE CASCADE;";
+
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_pruefungsanmeldung: ' . $db->db_last_error() . ' ';
+ else
+ echo ' campus.tbl_pruefungsanmeldung: Spalte pruefungstyp_kurzbz hinzugefügt. ';
+}
+
+// Neue Spalte bezeichnung_mehrsprachig bei tbl_status
+if(!@$db->db_query("SELECT bezeichnung_mehrsprachig FROM public.tbl_status LIMIT 1"))
+{
+ $qry = " ALTER TABLE public.tbl_status ADD COLUMN bezeichnung_mehrsprachig varchar(255)[];
+ update tbl_status set bezeichnung_mehrsprachig = cast('{'||status_kurzbz||','||status_kurzbz||'}' as varchar[]);";
-
+ if(!$db->db_query($qry))
+ echo 'public.tbl_status '.$db->db_last_error().' ';
+ else
+ echo ' Spalte bezeichnung_mehrsprachig in public.tbl_status hinzugefügt Die ersten beiden Sprachen wurden vorbefüllt. Weitere Übersetzungen sind zu ergänzen! ';
+}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
@@ -1327,7 +1348,7 @@ $tabellen=array(
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz"),
- "public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id"),
+ "public.tbl_status" => array("status_kurzbz","beschreibung","anmerkung","ext_id","bezeichnung_mehrsprachig"),
"public.tbl_semesterwochen" => array("semester","studiengang_kz","wochen"),
"public.tbl_service" => array("service_id", "bezeichnung","beschreibung","ext_id","oe_kurzbz","content_id"),
"public.tbl_sprache" => array("sprache","locale","flagge","index","content","bezeichnung"),
diff --git a/tests/codesniffer/FHComplete/Sniffs/Commenting/DocBlockAlignmentSniff.php b/tests/codesniffer/FHComplete/Sniffs/Commenting/DocBlockAlignmentSniff.php
new file mode 100755
index 000000000..94b5a3e66
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Commenting/DocBlockAlignmentSniff.php
@@ -0,0 +1,59 @@
+getTokens();
+ $leftWall = array(
+ T_CLASS,
+ T_NAMESPACE,
+ T_INTERFACE,
+ T_TRAIT,
+ T_USE
+ );
+ $oneIndentation = array(
+ T_FUNCTION,
+ T_VARIABLE,
+ T_CONST
+ );
+ $allTokens = array_merge($leftWall, $oneIndentation);
+ $notFlatFile = $phpcsFile->findNext(T_NAMESPACE, 0);
+ $next = $phpcsFile->findNext($allTokens, $stackPtr + 1);
+
+ if ($next && $notFlatFile) {
+ $notWalled = (in_array($tokens[$next]['code'], $leftWall) && $tokens[$stackPtr]['column'] !== 1);
+ $notIndented = (in_array($tokens[$next]['code'], $oneIndentation) && $tokens[$stackPtr]['column'] !== 5);
+ if ($notWalled || $notIndented) {
+ $phpcsFile->addError('Expected docblock to be aligned with code.', $stackPtr, 'NotAllowed');
+ }
+ }
+
+ return;
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentSniff.php b/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentSniff.php
new file mode 100755
index 000000000..34ea7e796
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentSniff.php
@@ -0,0 +1,487 @@
+
+ * @author Marc McIntyre
+ * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+
+if (class_exists('PEAR_Sniffs_Commenting_FunctionCommentSniff', true) === false) {
+ throw new PHP_CodeSniffer_Exception('Class PEAR_Sniffs_Commenting_FunctionCommentSniff not found');
+}
+
+/**
+ * Parses and verifies the doc comments for functions.
+ *
+ * Verifies that :
+ *
+ * A comment exists
+ * There is a blank newline after the short description
+ * There is a blank newline between the long and short description
+ * There is a blank newline between the long description and tags
+ * Parameter names represent those in the method
+ * Parameter comments are in the correct order
+ * Parameter comments are complete
+ * A type hint is provided for array and custom class
+ * Type hint matches the actual variable/class type
+ * A blank line is present before the first and after the last parameter
+ * A return type exists
+ * Any throw tag must have a comment
+ * The tag order and indentation are correct
+ *
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Greg Sherwood
+ * @author Marc McIntyre
+ * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class FHComplete_Sniffs_Commenting_FunctionCommentSniff extends PEAR_Sniffs_Commenting_FunctionCommentSniff
+{
+ /**
+ * Is the comment an inheritdoc?
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param int $stackPtr The position of the current token
+ * in the stack passed in $tokens.
+ *
+ * @return boolean True if the comment is an inheritdoc
+ */
+ protected function isInheritDoc(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
+ {
+ $start = $phpcsFile->findPrevious(T_DOC_COMMENT_OPEN_TAG, $stackPtr - 1);
+ $end = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, $start);
+ $content = $phpcsFile->getTokensAsString($start, ($end - $start));
+ return preg_match('#{@inheritDoc}#', $content) === 1;
+ } // end isInheritDoc()
+
+ /**
+ * Process the return comment of this function comment.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param int $stackPtr The position of the current token
+ * in the stack passed in $tokens.
+ * @param int $commentStart The position in the stack where the comment started.
+ *
+ * @return void
+ */
+ protected function processReturn(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $commentStart)
+ {
+ if ($this->isInheritDoc($phpcsFile, $stackPtr)) {
+ return;
+ }
+
+ $tokens = $phpcsFile->getTokens();
+
+ // Skip constructor and destructor.
+ $className = '';
+ foreach ($tokens[$stackPtr]['conditions'] as $condPtr => $condition) {
+ if ($condition === T_CLASS || $condition === T_INTERFACE) {
+ $className = $phpcsFile->getDeclarationName($condPtr);
+ $className = strtolower(ltrim($className, '_'));
+ }
+ }
+
+ $methodName = $phpcsFile->getDeclarationName($stackPtr);
+ $isSpecialMethod = ($methodName === '__construct' || $methodName === '__destruct');
+ if ($methodName !== '_') {
+ $methodName = strtolower(ltrim($methodName, '_'));
+ }
+
+ $return = null;
+ foreach ($tokens[$commentStart]['comment_tags'] as $tag) {
+ if ($tokens[$tag]['content'] === '@return') {
+ if ($return !== null) {
+ $error = 'Only 1 @return tag is allowed in a function comment';
+ $phpcsFile->addError($error, $tag, 'DuplicateReturn');
+ return;
+ }
+
+ $return = $tag;
+ }
+ }
+
+ if ($isSpecialMethod === true) {
+ return;
+ }
+
+ if ($return !== null) {
+ $content = $tokens[($return + 2)]['content'];
+ if (empty($content) === true || $tokens[($return + 2)]['code'] !== T_DOC_COMMENT_STRING) {
+ $error = 'Return type missing for @return tag in function comment';
+ $phpcsFile->addError($error, $return, 'MissingReturnType');
+ } else {
+ // Check return type (can be multiple, separated by '|').
+ $typeNames = explode('|', $content);
+ $suggestedNames = array();
+ foreach ($typeNames as $i => $typeName) {
+ if ($typeName === 'integer') {
+ $suggestedName = 'int';
+ } elseif ($typeName === 'boolean') {
+ $suggestedName = 'bool';
+ } elseif (in_array($typeName, array('int', 'bool'))) {
+ $suggestedName = $typeName;
+ } else {
+ $suggestedName = PHP_CodeSniffer::suggestType($typeName);
+ }
+ if (in_array($suggestedName, $suggestedNames) === false) {
+ $suggestedNames[] = $suggestedName;
+ }
+ }
+
+ $suggestedType = implode('|', $suggestedNames);
+ if ($content !== $suggestedType) {
+ $error = 'Function return type "%s" is invalid';
+ $error = 'Expected "%s" but found "%s" for function return type';
+ $data = array(
+ $suggestedType,
+ $content,
+ );
+ $phpcsFile->addError($error, $return, 'InvalidReturn', $data);
+ }
+
+ // If the return type is void, make sure there is
+ // no return statement in the function.
+ if ($content === 'void') {
+ if (isset($tokens[$stackPtr]['scope_closer']) === true) {
+ $endToken = $tokens[$stackPtr]['scope_closer'];
+ for ($returnToken = $stackPtr; $returnToken < $endToken; $returnToken++) {
+ if ($tokens[$returnToken]['code'] === T_CLOSURE) {
+ $returnToken = $tokens[$returnToken]['scope_closer'];
+ continue;
+ }
+
+ if ($tokens[$returnToken]['code'] === T_RETURN) {
+ break;
+ }
+ }
+
+ if ($returnToken !== $endToken) {
+ // If the function is not returning anything, just
+ // exiting, then there is no problem.
+ $semicolon = $phpcsFile->findNext(T_WHITESPACE, ($returnToken + 1), null, true);
+ if ($tokens[$semicolon]['code'] !== T_SEMICOLON) {
+ $error = 'Function return type is void, but function contains return statement';
+ $phpcsFile->addWarning($error, $return, 'InvalidReturnVoid');
+ }
+ }
+ }//end if
+ } elseif (!preg_match('/^mixed/', $content)) {
+ // If return type is not void, there needs to be a return statement
+ // somewhere in the function that returns something.
+ if (isset($tokens[$stackPtr]['scope_closer']) === true) {
+ $endToken = $tokens[$stackPtr]['scope_closer'];
+ $returnToken = $phpcsFile->findNext(T_RETURN, $stackPtr, $endToken);
+ if ($returnToken === false) {
+ $error = 'Function return type is not void, but function has no return statement';
+ $phpcsFile->addWarning($error, $return, 'InvalidNoReturn');
+ } elseif (!preg_match('/void/', $content)) {
+ $semicolon = $phpcsFile->findNext(T_WHITESPACE, ($returnToken + 1), null, true);
+ if ($tokens[$semicolon]['code'] === T_SEMICOLON) {
+ $error = 'Function return type is not void, but function is returning void here';
+ $phpcsFile->addWarning($error, $returnToken, 'InvalidReturnNotVoid');
+ }
+ }
+ }
+ }//end if
+ }//end if
+ } else {
+ $error = 'Missing @return tag in function comment';
+ $phpcsFile->addWarning($error, $tokens[$commentStart]['comment_closer'], 'MissingReturn');
+ }//end if
+
+ }//end processReturn()
+
+
+ /**
+ * Process any throw tags that this function comment has.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param int $stackPtr The position of the current token
+ * in the stack passed in $tokens.
+ * @param int $commentStart The position in the stack where the comment started.
+ *
+ * @return void
+ */
+ protected function processThrows(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $commentStart)
+ {
+ $tokens = $phpcsFile->getTokens();
+
+ $throws = array();
+ foreach ($tokens[$commentStart]['comment_tags'] as $pos => $tag) {
+ if ($tokens[$tag]['content'] !== '@throws') {
+ continue;
+ }
+
+ $exception = null;
+ $comment = null;
+ if ($tokens[($tag + 2)]['code'] === T_DOC_COMMENT_STRING) {
+ $matches = array();
+ preg_match('/([^\s]+)(?:\s+(.*))?/', $tokens[($tag + 2)]['content'], $matches);
+ $exception = $matches[1];
+ if (isset($matches[2]) === true) {
+ $comment = $matches[2];
+ }
+ }
+
+ if ($exception === null) {
+ $error = 'Exception type and comment missing for @throws tag in function comment';
+ $phpcsFile->addWarning($error, $tag, 'InvalidThrows');
+ } elseif ($comment === null) {
+ $error = 'Comment missing for @throws tag in function comment';
+ $phpcsFile->addWarning($error, $tag, 'EmptyThrows');
+ } else {
+ // Any strings until the next tag belong to this comment.
+ if (isset($tokens[$commentStart]['comment_tags'][($pos + 1)]) === true) {
+ $end = $tokens[$commentStart]['comment_tags'][($pos + 1)];
+ } else {
+ $end = $tokens[$commentStart]['comment_closer'];
+ }
+
+ for ($i = ($tag + 3); $i < $end; $i++) {
+ if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) {
+ $comment .= ' '.$tokens[$i]['content'];
+ }
+ }
+
+ // Starts with a capital letter and ends with a fullstop.
+ $firstChar = $comment{0};
+ if (strtoupper($firstChar) !== $firstChar) {
+ $error = '@throws tag comment must start with a capital letter';
+ $phpcsFile->addWarning($error, ($tag + 2), 'ThrowsNotCapital');
+ }
+
+ $lastChar = substr($comment, -1);
+ if ($lastChar !== '.') {
+ $error = '@throws tag comment must end with a full stop';
+ $phpcsFile->addWarning($error, ($tag + 2), 'ThrowsNoFullStop');
+ }
+ }//end if
+ }//end foreach
+
+ }//end processThrows()
+
+
+ /**
+ * Process the function parameter comments.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param int $stackPtr The position of the current token
+ * in the stack passed in $tokens.
+ * @param int $commentStart The position in the stack where the comment started.
+ *
+ * @return void
+ */
+ protected function processParams(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $commentStart)
+ {
+ if ($this->isInheritDoc($phpcsFile, $stackPtr)) {
+ return;
+ }
+
+ $tokens = $phpcsFile->getTokens();
+
+ $params = array();
+ $maxType = 0;
+ $maxVar = 0;
+ foreach ($tokens[$commentStart]['comment_tags'] as $pos => $tag) {
+ if ($tokens[$tag]['content'] !== '@param') {
+ continue;
+ }
+
+ $type = '';
+ $typeSpace = 0;
+ $var = '';
+ $varSpace = 0;
+ $comment = '';
+ $commentLines = array();
+ if ($tokens[($tag + 2)]['code'] === T_DOC_COMMENT_STRING) {
+ $matches = array();
+ preg_match('/([^$&]+)(?:((?:\$|&)[^\s]+)(?:(\s+)(.*))?)?/', $tokens[($tag + 2)]['content'], $matches);
+
+ $typeLen = strlen($matches[1]);
+ $type = trim($matches[1]);
+ $typeSpace = ($typeLen - strlen($type));
+ $typeLen = strlen($type);
+ if ($typeLen > $maxType) {
+ $maxType = $typeLen;
+ }
+
+ if (isset($matches[2]) === true) {
+ $var = $matches[2];
+ $varLen = strlen($var);
+ if ($varLen > $maxVar) {
+ $maxVar = $varLen;
+ }
+
+ if (isset($matches[4]) === true) {
+ $varSpace = strlen($matches[3]);
+ $comment = $matches[4];
+ $commentLines[] = array(
+ 'comment' => $comment,
+ 'token' => ($tag + 2),
+ 'indent' => $varSpace,
+ );
+
+ // Any strings until the next tag belong to this comment.
+ if (isset($tokens[$commentStart]['comment_tags'][($pos + 1)]) === true) {
+ $end = $tokens[$commentStart]['comment_tags'][($pos + 1)];
+ } else {
+ $end = $tokens[$commentStart]['comment_closer'];
+ }
+
+ for ($i = ($tag + 3); $i < $end; $i++) {
+ if ($tokens[$i]['code'] === T_DOC_COMMENT_STRING) {
+ $indent = 0;
+ if ($tokens[($i - 1)]['code'] === T_DOC_COMMENT_WHITESPACE) {
+ $indent = strlen($tokens[($i - 1)]['content']);
+ }
+
+ $comment .= ' '.$tokens[$i]['content'];
+ $commentLines[] = array(
+ 'comment' => $tokens[$i]['content'],
+ 'token' => $i,
+ 'indent' => $indent,
+ );
+ }
+ }
+ } else {
+ $error = 'Missing parameter comment';
+ $phpcsFile->addError($error, $tag, 'MissingParamComment');
+ $commentLines[] = array('comment' => '');
+ }//end if
+ } else {
+ $error = 'Missing parameter name';
+ $phpcsFile->addError($error, $tag, 'MissingParamName');
+ }//end if
+ } else {
+ $error = 'Missing parameter type';
+ $phpcsFile->addError($error, $tag, 'MissingParamType');
+ }//end if
+
+ $params[] = array(
+ 'tag' => $tag,
+ 'type' => $type,
+ 'var' => $var,
+ 'comment' => $comment,
+ 'commentLines' => $commentLines,
+ 'type_space' => $typeSpace,
+ 'var_space' => $varSpace,
+ );
+ }//end foreach
+
+ $realParams = $phpcsFile->getMethodParameters($stackPtr);
+ $foundParams = array();
+
+ foreach ($params as $pos => $param) {
+ // If the type is empty, the whole line is empty.
+ if ($param['type'] === '') {
+ continue;
+ }
+
+ // Check the param type value.
+ $typeNames = explode('|', $param['type']);
+ foreach ($typeNames as $typeName) {
+ if ($typeName === 'integer') {
+ $suggestedName = 'int';
+ } elseif ($typeName === 'boolean') {
+ $suggestedName = 'bool';
+ } elseif (in_array($typeName, array('int', 'bool'))) {
+ $suggestedName = $typeName;
+ } else {
+ $suggestedName = PHP_CodeSniffer::suggestType($typeName);
+ }
+
+ if ($typeName !== $suggestedName) {
+ $error = 'Expected "%s" but found "%s" for parameter type';
+ $data = array(
+ $suggestedName,
+ $typeName,
+ );
+
+ $fix = $phpcsFile->addFixableError($error, $param['tag'], 'IncorrectParamVarName', $data);
+ if ($fix === true) {
+ $content = $suggestedName;
+ $content .= str_repeat(' ', $param['type_space']);
+ $content .= $param['var'];
+ $content .= str_repeat(' ', $param['var_space']);
+ $content .= $param['commentLines'][0]['comment'];
+ $phpcsFile->fixer->replaceToken(($param['tag'] + 2), $content);
+ }
+ }
+ }//end foreach
+
+ if ($param['var'] === '') {
+ continue;
+ }
+
+ $foundParams[] = $param['var'];
+
+ // Make sure the param name is correct.
+ if (isset($realParams[$pos]) === true) {
+ $realName = $realParams[$pos]['name'];
+ if ($realName !== $param['var']) {
+ $code = 'ParamNameNoMatch';
+ $data = array(
+ $param['var'],
+ $realName,
+ );
+
+ $error = 'Doc comment for parameter %s does not match ';
+ if (strtolower($param['var']) === strtolower($realName)) {
+ $error .= 'case of ';
+ $code = 'ParamNameNoCaseMatch';
+ }
+
+ $error .= 'actual variable name %s';
+
+ $phpcsFile->addWarning($error, $param['tag'], $code, $data);
+ }
+ } elseif (substr($param['var'], -4) !== ',...') {
+ // We must have an extra parameter comment.
+ $error = 'Superfluous parameter comment';
+ $phpcsFile->addError($error, $param['tag'], 'ExtraParamComment');
+ }//end if
+
+ if ($param['comment'] === '') {
+ continue;
+ }
+
+ // Param comments must start with a capital letter and end with the full stop.
+ $firstChar = $param['comment']{0};
+ if (preg_match('|\p{Lu}|u', $firstChar) === 0) {
+ $error = 'Parameter comment must start with a capital letter';
+ $phpcsFile->addWarning($error, $param['tag'], 'ParamCommentNotCapital');
+ }
+
+ $lastChar = substr($param['comment'], -1);
+ if ($lastChar !== '.') {
+ $error = 'Parameter comment must end with a full stop';
+ $phpcsFile->addWarning($error, $param['tag'], 'ParamCommentFullStop');
+ }
+ }//end foreach
+
+ $realNames = array();
+ foreach ($realParams as $realParam) {
+ $realNames[] = $realParam['name'];
+ }
+
+ // Report missing comments.
+ $diff = array_diff($realNames, $foundParams);
+ foreach ($diff as $neededParam) {
+ $error = 'Doc comment for parameter "%s" missing';
+ $data = array($neededParam);
+ $phpcsFile->addWarning($error, $commentStart, 'MissingParamTag', $data);
+ }
+
+ }//end processParams()
+}//end class
diff --git a/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentTypeSniff.php b/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentTypeSniff.php
new file mode 100755
index 000000000..722661165
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Commenting/FunctionCommentTypeSniff.php
@@ -0,0 +1,87 @@
+getTokens();
+
+ // We are only interested in function/class/interface doc block comments.
+ $nextToken = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true);
+ $ignore = array(
+ T_CLASS,
+ T_INTERFACE,
+ T_FUNCTION,
+ T_PUBLIC,
+ T_PRIVATE,
+ T_PROTECTED,
+ T_STATIC,
+ T_ABSTRACT,
+ );
+
+ if (in_array($tokens[$nextToken]['code'], $ignore) === false) {
+ // Could be a file comment.
+ $prevToken = $phpcsFile->findPrevious(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr - 1), null, true);
+ if ($tokens[$prevToken]['code'] !== T_OPEN_TAG) {
+ return;
+ }
+ }
+
+ $types = array(
+ 'boolean' => 'bool',
+ 'integer' => 'int',
+ );
+ foreach ($types as $from => $to) {
+ $this->_check($phpcsFile, $stackPtr, $from, $to);
+ }
+ }
+
+ /**
+ * MyFHComplete_Sniffs_Commenting_DocBlockTypeSniff::_check()
+ *
+ * @param int $stackPtr
+ * @param string $from
+ * @param string $to
+ * @return void
+ */
+ protected function _check(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $from, $to)
+ {
+ $tokens = $phpcsFile->getTokens();
+ $content = $tokens[$stackPtr]['content'];
+
+ $matches = array();
+ if (preg_match('/\@(\w+)\s+([\w\\|\\\\]*?)' . $from . '\b/i', $content, $matches) === 0) {
+ return;
+ }
+
+ $error = 'Please use "' . $to . '" instead of "' . $from . '" for types in doc blocks.';
+ $phpcsFile->addWarning($error, $stackPtr, 'WrongType');
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ControlSignatureSniff.php b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ControlSignatureSniff.php
new file mode 100755
index 000000000..b78202cec
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ControlSignatureSniff.php
@@ -0,0 +1,58 @@
+
+ * @author Marc McIntyre
+ * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class FHComplete_Sniffs_ControlStructures_ControlSignatureSniff extends PHP_CodeSniffer_Standards_AbstractPatternSniff
+{
+
+ /**
+ * If true, comments will be ignored if they are found in the code.
+ *
+ * @var boolean
+ */
+ public $ignoreComments = true;
+
+
+ /**
+ * Returns the patterns that this test wishes to verify.
+ *
+ * @return string[]
+ */
+ protected function getPatterns()
+ {
+ return array(
+ 'try {EOL...}\s+catch (...)EOL...{EOL...EOL...}',
+ 'do+EOL...{EOL...EOL...} while (...);EOL',
+ 'while (...)EOL...{EOL',
+ 'for (...) {EOL',
+ 'if (...)EOL...{EOL',
+ 'foreach (...)EOL...{EOL',
+ '}EOL...\s+else if (...)EOL...{EOL',
+ '}EOL...\s+elseif (...)EOL...{EOL',
+ '}EOL...\s+else+EOL...{EOL',
+ 'do+EOL...{EOL',
+ );
+
+ }//end getPatterns()
+
+
+}//end class
diff --git a/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ElseIfDeclarationSniff.php b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ElseIfDeclarationSniff.php
new file mode 100755
index 000000000..1ef2f2aaf
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/ElseIfDeclarationSniff.php
@@ -0,0 +1,48 @@
+getTokens();
+
+ $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if ($tokens[$nextToken]['code'] !== T_IF) {
+ return;
+ }
+
+ $error = 'Usage of ELSE IF not allowed; use ELSEIF instead';
+ $phpcsFile->addError($error, $stackPtr, 'NotAllowed');
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/ControlStructures/WhileStructuresSniff.php b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/WhileStructuresSniff.php
new file mode 100755
index 000000000..421f86ba6
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/ControlStructures/WhileStructuresSniff.php
@@ -0,0 +1,56 @@
+getTokens();
+
+ $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if ($tokens[$nextToken]['code'] === T_OPEN_PARENTHESIS) {
+ $closer = $tokens[$nextToken]['parenthesis_closer'];
+ $diff = $closer - $stackPtr;
+ $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + $diff + 1), null, true);
+ }
+
+ if ($tokens[$stackPtr]['code'] === T_WHILE && $tokens[$nextToken]['code'] === T_SEMICOLON) {
+ /* This while is probably part of a do-while construction, skip it .. */
+ return;
+ }
+ if ($tokens[$nextToken]['code'] !== T_OPEN_CURLY_BRACKET && $tokens[$nextToken]['code'] !== T_COLON) {
+ $error = 'Curly brackets required in a do-while or while loop';
+ $phpcsFile->addError($error, $stackPtr, 'NotAllowed');
+ }
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Formatting/OneClassPerUseSniff.php b/tests/codesniffer/FHComplete/Sniffs/Formatting/OneClassPerUseSniff.php
new file mode 100755
index 000000000..2b2ee37e6
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Formatting/OneClassPerUseSniff.php
@@ -0,0 +1,48 @@
+getTokens();
+ $i = 2; // Ignore use word and whitespace
+ $filename = $phpcsFile->getFilename();
+
+ while (in_array($tokens[$stackPtr + $i]['code'], array(T_STRING, T_NS_SEPARATOR, T_WHITESPACE, T_AS))) {
+ $i++;
+ }
+
+ if ($tokens[$stackPtr + $i]['code'] === T_COMMA) {
+ $error = 'Only one class is allowed per use';
+ $phpcsFile->addError($error, $stackPtr, 'OneClassPerUse', array());
+ }
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Formatting/UseInAlphabeticalOrderSniff.php b/tests/codesniffer/FHComplete/Sniffs/Formatting/UseInAlphabeticalOrderSniff.php
new file mode 100755
index 000000000..43da15876
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Formatting/UseInAlphabeticalOrderSniff.php
@@ -0,0 +1,142 @@
+_processed[$phpcsFile->getFilename()])) {
+ return;
+ }
+ $filename = $phpcsFile->getFilename();
+
+ $this->_uses = array();
+ $next = $stackPtr;
+
+ while ($next !== false) {
+ $this->_checkUseToken($phpcsFile, $next);
+ $next = $phpcsFile->findNext(T_USE, $next + 1);
+ }
+
+ // Prevent multiple uses in the same file from entering
+ $this->_processed[$phpcsFile->getFilename()] = true;
+
+ foreach ($this->_uses as $scope => $used) {
+ $defined = $sorted = array_keys($used);
+
+ natcasesort($sorted);
+ $sorted = array_values($sorted);
+ if ($sorted === $defined) {
+ continue;
+ }
+
+ foreach ($defined as $i => $name) {
+ if ($name !== $sorted[$i]) {
+ $error = 'Use classes must be in alphabetical order. Was expecting ' . $sorted[$i];
+ $phpcsFile->addError($error, $used[$name], 'UseInAlphabeticalOrder', array());
+ }
+ }
+ }
+ }
+
+/**
+ * Check all the use tokens in a file.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file to check.
+ * @param integer $stackPtr The index of the first use token.
+ * @return void
+ */
+ protected function _checkUseToken($phpcsFile, $stackPtr) {
+ // If the use token is for a closure we want to ignore it.
+ $isClosure = $this->_isClosure($phpcsFile, $stackPtr);
+ if ($isClosure) {
+ return;
+ }
+
+ $tokens = $phpcsFile->getTokens();
+
+ // Only one USE declaration allowed per statement.
+ $next = $phpcsFile->findNext(array(T_COMMA, T_SEMICOLON), ($stackPtr + 1));
+ if ($tokens[$next]['code'] === T_COMMA) {
+ $error = 'There must be one USE keyword per declaration';
+ $phpcsFile->addError($error, $stackPtr, 'MultipleDeclarations');
+ }
+
+ $content = '';
+ $end = $phpcsFile->findNext(array(T_SEMICOLON, T_OPEN_CURLY_BRACKET), $stackPtr);
+ $useTokens = array_slice($tokens, $stackPtr, $end - $stackPtr, true);
+
+ foreach ($useTokens as $index => $token) {
+ if ($token['code'] === T_STRING || $token['code'] === T_NS_SEPARATOR) {
+ $content .= $token['content'];
+ }
+ }
+
+ // Check for class scoping on use. Traits should be
+ // ordered independently.
+ $scope = 0;
+ if (!empty($token['conditions'])) {
+ $scope = key($token['conditions']);
+ }
+ $this->_uses[$scope][$content] = $stackPtr;
+ }
+
+/**
+ * Check if the current stackPtr is a use token that is for a closure.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile
+ * @param integer $stackPtr
+ * @return boolean
+ */
+ protected function _isClosure($phpcsFile, $stackPtr) {
+ return $phpcsFile->findPrevious(
+ array(T_CLOSURE),
+ ($stackPtr - 1),
+ null,
+ false,
+ null,
+ true
+ );
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Functions/ClosureDeclarationSniff.php b/tests/codesniffer/FHComplete/Sniffs/Functions/ClosureDeclarationSniff.php
new file mode 100755
index 000000000..6582d3011
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Functions/ClosureDeclarationSniff.php
@@ -0,0 +1,35 @@
+getTokens();
+ $spaces = 0;
+
+ if ($tokens[($stackPtr + 1)]['code'] === T_WHITESPACE) {
+ $spaces = strlen($tokens[($stackPtr + 1)]['content']);
+ }
+
+ if ($spaces !== 1) {
+ $error = 'Expected 1 space after closure\'s function keyword; %s found';
+ $data = array($spaces);
+ $phpcsFile->addError($error, $stackPtr, 'SpaceAfterFunction', $data);
+ }
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Functions/FunctionDeclarationArgumentSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/Functions/FunctionDeclarationArgumentSpacingSniff.php
new file mode 100755
index 000000000..260ad1c10
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Functions/FunctionDeclarationArgumentSpacingSniff.php
@@ -0,0 +1,26 @@
+
+ * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+
+if (class_exists('Generic_Sniffs_NamingConventions_CamelCapsFunctionNameSniff', true) === false) {
+ throw new PHP_CodeSniffer_Exception('Class Generic_Sniffs_NamingConventions_CamelCapsFunctionNameSniff not found');
+}
+
+/**
+ * PSR1_Sniffs_Methods_CamelCapsMethodNameSniff.
+ *
+ * Ensures method names are defined using camel case.
+ *
+ * @category PHP
+ * @package PHP_CodeSniffer
+ * @author Greg Sherwood
+ * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class FHComplete_Sniffs_NamingConventions_CamelCapsMethodNameSniff extends Generic_Sniffs_NamingConventions_CamelCapsFunctionNameSniff
+{
+
+
+ /**
+ * Processes the tokens within the scope.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being processed.
+ * @param int $stackPtr The position where this token was
+ * found.
+ * @param int $currScope The position of the current scope.
+ *
+ * @return void
+ */
+ protected function processTokenWithinScope(PHP_CodeSniffer_File $phpcsFile, $stackPtr, $currScope)
+ {
+ $methodName = $phpcsFile->getDeclarationName($stackPtr);
+ if ($methodName === null
+ || substr($methodName,-4) === '_get'
+ || substr($methodName,-5) === '_post'
+ || substr($methodName,-4) === '_put'
+ || substr($methodName,-6) === '_patch'
+ || substr($methodName,-7) === '_delete'
+ )
+ // Ignore closures.
+ return;
+
+ // Ignore magic methods.
+ if (preg_match('|^__|', $methodName) !== 0) {
+ $magicPart = strtolower(substr($methodName, 2));
+ if (isset($this->magicMethods[$magicPart]) === true
+ || isset($this->methodsDoubleUnderscore[$magicPart]) === true
+ ) {
+ return;
+ }
+ }
+
+ $testName = ltrim($methodName, '_');
+ if ($testName !== '' && PHP_CodeSniffer::isCamelCaps($testName, false, true, false) === false) {
+ $error = 'Method name "%s" is not in camel caps format';
+ $className = $phpcsFile->getDeclarationName($currScope);
+ $errorData = array($className.'::'.$methodName);
+ $phpcsFile->addError($error, $stackPtr, 'NotCamelCaps', $errorData);
+ $phpcsFile->recordMetric($stackPtr, 'CamelCase method name', 'no');
+ } else {
+ $phpcsFile->recordMetric($stackPtr, 'CamelCase method name', 'yes');
+ }
+
+ }//end processTokenWithinScope()
+
+
+ /**
+ * Processes the tokens outside the scope.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being processed.
+ * @param int $stackPtr The position where this token was
+ * found.
+ *
+ * @return void
+ */
+ protected function processTokenOutsideScope(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
+ {
+
+ }//end processTokenOutsideScope()
+
+
+}//end class
diff --git a/tests/codesniffer/FHComplete/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php
new file mode 100755
index 000000000..3137ea8cf
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php
@@ -0,0 +1,223 @@
+
+ * @author Marc McIntyre
+ * @copyright 2006-2012 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ * @version Release: 1.5.0RC3
+ * @link http://pear.php.net/package/PHP_CodeSniffer
+ */
+class FHComplete_Sniffs_NamingConventions_UpperCaseConstantNameSniff implements PHP_CodeSniffer_Sniff
+{
+
+ /**
+ * Returns an array of tokens this test wants to listen for.
+ *
+ * @return array
+ */
+ public function register()
+ {
+ return array(T_STRING);
+ }
+
+ /**
+ * Processes this test, when one of its tokens is encountered.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param integer $stackPtr The position of the current token in the
+ * stack passed in $tokens.
+ *
+ * @return void
+ */
+ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
+ {
+ $tokens = $phpcsFile->getTokens();
+ $constName = $tokens[$stackPtr]['content'];
+
+ // If this token is in a heredoc, ignore it.
+ if ($phpcsFile->hasCondition($stackPtr, T_START_HEREDOC) === true) {
+ return;
+ }
+
+ // Special case for PHPUnit.
+ if ($constName === 'PHPUnit_MAIN_METHOD') {
+ return;
+ }
+
+ // If the next non-whitespace token after this token
+ // is not an opening parenthesis then it is not a function call.
+ $openBracket = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if ($tokens[$openBracket]['code'] !== T_OPEN_PARENTHESIS) {
+ $functionKeyword = $phpcsFile->findPrevious(
+ array(
+ T_WHITESPACE,
+ T_COMMA,
+ T_COMMENT,
+ T_STRING,
+ T_NS_SEPARATOR,
+ ),
+ ($stackPtr - 1),
+ null,
+ true
+ );
+
+ $declarations = array(
+ T_FUNCTION,
+ T_CLASS,
+ T_INTERFACE,
+ T_TRAIT,
+ T_IMPLEMENTS,
+ T_EXTENDS,
+ T_INSTANCEOF,
+ T_NEW,
+ T_NAMESPACE,
+ T_USE,
+ T_AS,
+ T_GOTO,
+ T_INSTEADOF,
+ T_PROTECTED,
+ T_PRIVATE,
+ T_PUBLIC
+ );
+
+ if (in_array($tokens[$functionKeyword]['code'], $declarations) === true) {
+ // This is just a declaration; no constants here.
+ return;
+ }
+
+ if ($tokens[$functionKeyword]['code'] === T_CONST) {
+ // This is a class constant.
+ if (strtoupper($constName) !== $constName) {
+ $error = 'Class constants must be uppercase; expected %s but found %s';
+ $data = array(
+ strtoupper($constName),
+ $constName,
+ );
+ $phpcsFile->addError($error, $stackPtr, 'ClassConstantNotUpperCase', $data);
+ }
+
+ return;
+ }
+
+ // Is this a class name?
+ $nextPtr = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if ($tokens[$nextPtr]['code'] === T_DOUBLE_COLON) {
+ return;
+ }
+
+ // Is this a namespace name?
+ if ($tokens[$nextPtr]['code'] === T_NS_SEPARATOR) {
+ return;
+ }
+
+ // Is this an insteadof name?
+ if ($tokens[$nextPtr]['code'] === T_INSTEADOF) {
+ return;
+ }
+
+ // Is this an as name?
+ if ($tokens[$nextPtr]['code'] === T_AS) {
+ return;
+ }
+
+ // Is this a type hint?
+ if ($tokens[$nextPtr]['code'] === T_VARIABLE
+ || $phpcsFile->isReference($nextPtr) === true
+ ) {
+ return;
+ }
+
+ // Is this a member var name?
+ $prevPtr = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true);
+ if ($tokens[$prevPtr]['code'] === T_OBJECT_OPERATOR) {
+ return;
+ }
+
+ // Is this a variable name, in the form ${varname} ?
+ if ($tokens[$prevPtr]['code'] === T_OPEN_CURLY_BRACKET) {
+ $nextPtr = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if ($tokens[$nextPtr]['code'] === T_CLOSE_CURLY_BRACKET) {
+ return;
+ }
+ }
+
+ // Is this a namespace name?
+ if ($tokens[$prevPtr]['code'] === T_NS_SEPARATOR) {
+ return;
+ }
+
+ // Is this an instance of declare()
+ $prevPtrDeclare = $phpcsFile->findPrevious(
+ array(T_WHITESPACE, T_OPEN_PARENTHESIS),
+ ($stackPtr - 1),
+ null,
+ true
+ );
+ if ($tokens[$prevPtrDeclare]['code'] === T_DECLARE) {
+ return;
+ }
+
+ // Is this a goto label target?
+ if ($tokens[$nextPtr]['code'] === T_COLON) {
+ if (in_array($tokens[$prevPtr]['code'], array(T_SEMICOLON, T_OPEN_CURLY_BRACKET, T_COLON), true)) {
+ return;
+ }
+ }
+
+ // This is a real constant.
+ if (strtoupper($constName) !== $constName) {
+ $error = 'Constants must be uppercase; expected %s but found %s';
+ $data = array(
+ strtoupper($constName),
+ $constName,
+ );
+ $phpcsFile->addError($error, $stackPtr, 'ConstantNotUpperCase', $data);
+ }
+
+ } elseif (strtolower($constName) === 'define' || strtolower($constName) === 'constant') {
+ /*
+ This may be a "define" or "constant" function call.
+ */
+ // Make sure this is not a method call.
+ $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true);
+ if ($tokens[$prev]['code'] === T_OBJECT_OPERATOR
+ || $tokens[$prev]['code'] === T_DOUBLE_COLON
+ ) {
+ return;
+ }
+
+ // The next non-whitespace token must be the constant name.
+ $constPtr = $phpcsFile->findNext(T_WHITESPACE, ($openBracket + 1), null, true);
+ if ($tokens[$constPtr]['code'] !== T_CONSTANT_ENCAPSED_STRING) {
+ return;
+ }
+
+ $constName = $tokens[$constPtr]['content'];
+
+ // Check for constants like self::CONSTANT.
+ $prefix = '';
+ $splitPos = strpos($constName, '::');
+ if ($splitPos !== false) {
+ $prefix = substr($constName, 0, ($splitPos + 2));
+ $constName = substr($constName, ($splitPos + 2));
+ }
+
+ if (strtoupper($constName) !== $constName) {
+ $error = 'Constants must be uppercase; expected %s but found %s';
+ $data = array(
+ $prefix . strtoupper($constName),
+ $prefix . $constName,
+ );
+ $phpcsFile->addError($error, $stackPtr, 'ConstantNotUpperCase', $data);
+ }
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidClassBracketsSniff.php b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidClassBracketsSniff.php
new file mode 100755
index 000000000..a43ac59d0
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidClassBracketsSniff.php
@@ -0,0 +1,47 @@
+getTokens();
+
+ $found = $phpcsFile->findNext(T_OPEN_CURLY_BRACKET, $stackPtr);
+ if ($tokens[$found - 1]['code'] != T_WHITESPACE) {
+ $error = 'Expected 1 space after class declaration, found 0';
+ $phpcsFile->addError($error, $found - 1, 'InvalidSpacing', array());
+ return;
+ }
+
+ if (strlen($tokens[$found - 1]['content']) > 1 || $tokens[$found - 2]['code'] == T_WHITESPACE) {
+ $error = 'Expected 1 space after class declaration, found ' . strlen($tokens[$found - 1]['content']);
+ $phpcsFile->addError($error, $found - 1, 'InvalidSpacing', array());
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidFunctionNameSniff.php b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidFunctionNameSniff.php
new file mode 100755
index 000000000..3281d83f9
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidFunctionNameSniff.php
@@ -0,0 +1,138 @@
+getDeclarationName($stackPtr);
+ if ($methodName === null) {
+ // Ignore closures.
+ return;
+ }
+
+ $className = $phpcsFile->getDeclarationName($currScope);
+ $errorData = array($className . '::' . $methodName);
+
+ // PHP4 constructors are allowed to break our rules.
+ if ($methodName === $className) {
+ return;
+ }
+
+ // PHP4 destructors are allowed to break our rules.
+ if ($methodName === '_' . $className) {
+ return;
+ }
+
+ // Ignore magic methods
+ if (preg_match('/^__(' . implode('|', $this->_magicMethods) . ')$/', $methodName)) {
+ return;
+ }
+
+ $methodProps = $phpcsFile->getMethodProperties($stackPtr);
+ if ($methodProps['scope_specified'] === false) {
+ // Let another sniffer take care of that
+ return;
+ }
+
+ $isPublic = $methodProps['scope'] === 'public';
+ $isProtected = $methodProps['scope'] === 'protected';
+ $isPrivate = $methodProps['scope'] === 'private';
+ $scope = $methodProps['scope'];
+
+ if ($isPublic === true) {
+ if ($methodName[0] === '_') {
+ $error = 'Public method name "%s" must not be prefixed with underscore';
+ $phpcsFile->addError($error, $stackPtr, 'PublicWithUnderscore', $errorData);
+ return;
+ }
+ // Underscored public methods in controller are allowed to break our rules.
+ if (substr($className, -10) === 'Controller') {
+ return;
+ }
+ // Underscored public methods in shells are allowed to break our rules.
+ if (substr($className, -5) === 'Shell') {
+ return;
+ }
+ // Underscored public methods in tasks are allowed to break our rules.
+ if (substr($className, -4) === 'Task') {
+ return;
+ }
+ } elseif ($isPrivate === true) {
+ if (substr($methodName, 0, 2) !== '__') {
+ $error = 'Private method name "%s" must be prefixed with 2 underscores';
+ $phpcsFile->addError($error, $stackPtr, 'PrivateNoUnderscore', $errorData);
+ return;
+ } else {
+ $filename = $phpcsFile->getFilename();
+ if (strpos($filename, '/lib/Cake/') === true) {
+ $warning = 'Private method name "%s" in FHComplete core is discouraged';
+ $phpcsFile->addWarning($warning, $stackPtr, 'PrivateMethodInCore', $errorData);
+ }
+ }
+ } else {
+ if ($methodName[0] !== '_' || substr($methodName, 0, 2) === '__') {
+ $error = 'Protected method name "%s" must be prefixed with one underscore';
+ $phpcsFile->addError($error, $stackPtr, 'ProtectedNoUnderscore', $errorData);
+ return;
+ }
+ }
+ }
+
+/**
+ * Processes the tokens outside the scope.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being processed.
+ * @param integer $stackPtr The position where this token was found.
+ * @return void
+ */
+ protected function processTokenOutsideScope(PHP_CodeSniffer_File $phpcsFile, $stackPtr) {
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidTraitNameSniff.php b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidTraitNameSniff.php
new file mode 100755
index 000000000..5364eab07
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidTraitNameSniff.php
@@ -0,0 +1,48 @@
+getTokens();
+ $traitName = $tokens[$stackPtr + 2]['content'];
+
+ if (substr($traitName, -5) !== 'Trait') {
+ $error = 'Traits must have a "Trait" suffix.';
+ $phpcsFile->addError($error, $stackPtr, 'InvalidTraitName', array());
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidVariableNameSniff.php b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidVariableNameSniff.php
new file mode 100755
index 000000000..bce627331
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/NamingConventions/ValidVariableNameSniff.php
@@ -0,0 +1,171 @@
+getTokens();
+ $varName = ltrim($tokens[$stackPtr]['content'], '$');
+
+ $phpReservedVars = array(
+ '_SERVER',
+ '_GET',
+ '_POST',
+ '_REQUEST',
+ '_SESSION',
+ '_ENV',
+ '_COOKIE',
+ '_FILES',
+ 'GLOBALS',
+ );
+
+ // If it's a php reserved var, then its ok.
+ if (in_array($varName, $phpReservedVars) === true) {
+ return;
+ }
+
+ // There is no way for us to know if the var is public or private,
+ // so we have to ignore a leading underscore if there is one and just
+ // check the main part of the variable name.
+ $originalVarName = $varName;
+ if (substr($varName, 0, 1) === '_') {
+ $objOperator = $phpcsFile->findPrevious(array(T_WHITESPACE), ($stackPtr - 1), null, true);
+ if ($tokens[$objOperator]['code'] === T_DOUBLE_COLON) {
+ // The variable lives within a class, and is referenced like
+ // this: MyClass::$_variable, so we don't know its scope.
+ $inClass = true;
+ } else {
+ $inClass = $phpcsFile->hasCondition($stackPtr, array(T_TRAIT, T_CLASS, T_INTERFACE));
+ }
+
+ if ($inClass === true) {
+ $varName = ltrim($varName, '_');
+ }
+ }
+
+ // $title_for_layout is allowed on controllers
+ $fileName = basename($phpcsFile->getFilename(), '.php');
+ if ((substr($fileName, -10) === 'Controller') && ($varName == 'title_for_layout')) {
+ return;
+ }
+
+ if ($this->_isValidVar($varName) === false) {
+ $error = 'Variable "%s" is not in valid camel caps format';
+ $data = array($originalVarName);
+ $phpcsFile->addError($error, $stackPtr, 'NotCamelCaps', $data);
+ }
+ }
+
+/**
+ * Processes class member variables.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param integer $stackPtr The position of the current token in the
+ * stack passed in $tokens.
+ * @return void
+ */
+ protected function processMemberVar(PHP_CodeSniffer_File $phpcsFile, $stackPtr) {
+ }
+
+/**
+ * Processes the variable found within a double quoted string.
+ *
+ * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
+ * @param integer $stackPtr The position of the double quoted string.
+ * @return void
+ */
+ protected function processVariableInString(PHP_CodeSniffer_File $phpcsFile, $stackPtr) {
+ $tokens = $phpcsFile->getTokens();
+
+ $phpReservedVars = array(
+ '_SERVER',
+ '_GET',
+ '_POST',
+ '_REQUEST',
+ '_SESSION',
+ '_ENV',
+ '_COOKIE',
+ '_FILES',
+ 'GLOBALS',
+ );
+
+ if (preg_match_all('|[^\\\]\$([a-zA-Z0-9_]+)|', $tokens[$stackPtr]['content'], $matches) !== 0) {
+ foreach ($matches[1] as $varName) {
+ // If it's a php reserved var, then its ok.
+ if (in_array($varName, $phpReservedVars) === true) {
+ continue;
+ }
+
+ // There is no way for us to know if the var is public or private,
+ // so we have to ignore a leading underscore if there is one and just
+ // check the main part of the variable name.
+ $originalVarName = $varName;
+ if (substr($varName, 0, 1) === '_') {
+ if ($phpcsFile->hasCondition($stackPtr, array(T_CLASS, T_INTERFACE)) === true) {
+ $varName = substr($varName, 1);
+ }
+ }
+
+ if ($this->_isValidVar($varName) === false) {
+ $error = 'Variable "%s" is not in valid camel caps format';
+ $data = array($originalVarName);
+ $phpcsFile->addError($error, $stackPtr, 'StringVarNotCamelCaps', $data);
+ }
+ }
+ }
+ }
+
+/**
+ * Check that a variable is a valid shape.
+ *
+ * Variables in FHComplete can either be $fooBar, $FooBar, $_fooBar, or $_FooBar.
+ *
+ * @param string $string The variable to check.
+ * @param boolea $public Whether or not the variable is public.
+ * @return boolean
+ */
+ protected function _isValidVar($string, $public = true) {
+ $firstChar = '[a-zA-Z]';
+ if (!$public) {
+ $firstChar = '[_]{1,2}' . $firstChar;
+ }
+ if (preg_match("|^$firstChar|", $string) === 0) {
+ return false;
+ }
+ $firstStringCount = 1;
+ if (preg_match("|^__|", $string)) {
+ $firstStringCount = 2;
+ }
+ // Check that the name only contains legal characters.
+ $legalChars = 'a-zA-Z0-9';
+ if (preg_match("|[^$legalChars]|", substr($string, $firstStringCount)) > 0) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/PHP/DisallowShortOpenTagSniff.php b/tests/codesniffer/FHComplete/Sniffs/PHP/DisallowShortOpenTagSniff.php
new file mode 100755
index 000000000..cd3b8598e
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/PHP/DisallowShortOpenTagSniff.php
@@ -0,0 +1,53 @@
+getTokens();
+ $openTag = $tokens[$stackPtr];
+
+ if (trim($openTag['content']) === '') {
+ $error = 'Short PHP opening tag used; expected "addError($error, $stackPtr, 'Found', $data);
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/PHP/TypeCastingSniff.php b/tests/codesniffer/FHComplete/Sniffs/PHP/TypeCastingSniff.php
new file mode 100755
index 000000000..2595c4f56
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/PHP/TypeCastingSniff.php
@@ -0,0 +1,74 @@
+getTokens();
+
+ // Process !! casts
+ if ($tokens[$stackPtr]['code'] == T_BOOLEAN_NOT) {
+ $nextToken = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+ if (!$nextToken) {
+ return;
+ }
+ if ($tokens[$nextToken]['code'] != T_BOOLEAN_NOT) {
+ return;
+ }
+ $error = 'Usage of !! cast is not allowed. Please use (bool) to cast.';
+ $phpcsFile->addError($error, $stackPtr, 'NotAllowed');
+
+ return;
+ }
+
+ // Only allow short forms if both short and long forms are possible
+ $matching = array(
+ '(boolean)' => '(bool)',
+ '(integer)' => '(int)',
+ );
+ $content = $tokens[$stackPtr]['content'];
+ $key = strtolower($content);
+ if (isset($matching[$key])) {
+ $error = 'Please use ' . $matching[$key] . ' instead of ' . $content . '.';
+ $phpcsFile->addError($error, $stackPtr, 'NotAllowed');
+ return;
+ }
+ if ($content !== $key) {
+ $error = 'Please use ' . $key . ' instead of ' . $content . '.';
+ $phpcsFile->addError($error, $stackPtr, 'NotAllowed');
+ return;
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/Strings/ConcatenationSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/Strings/ConcatenationSpacingSniff.php
new file mode 100755
index 000000000..59eaaf974
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/Strings/ConcatenationSpacingSniff.php
@@ -0,0 +1,48 @@
+getTokens();
+ if ($tokens[($stackPtr - 1)]['code'] == T_WHITESPACE) {
+ $message = 'Expected 0 spaces before ., but 1 found';
+ $phpcsFile->addError($message, $stackPtr, 'FoundBefore');
+ }
+
+ if ($tokens[($stackPtr + 1)]['code'] == ' ')
+ {
+ $message = 'Expected 0 spaces after ., but 1 found';
+ $phpcsFile->addError($message, $stackPtr, 'FoundAfter');
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/CommaSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/CommaSpacingSniff.php
new file mode 100755
index 000000000..7506abe9f
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/CommaSpacingSniff.php
@@ -0,0 +1,54 @@
+getTokens();
+
+ $next = $phpcsFile->findNext(T_WHITESPACE, ($stackPtr + 1), null, true);
+
+ if ($tokens[$next]['code'] !== T_WHITESPACE && ($next !== $stackPtr + 2)) {
+ // Last character in a line is ok.
+ if ($tokens[$next]['line'] === $tokens[$stackPtr]['line']) {
+ $error = 'Missing space after comma';
+ $phpcsFile->addError($error, $next);
+ }
+ }
+
+ $previous = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true);
+
+ if ($tokens[$previous]['code'] !== T_WHITESPACE && ($previous !== $stackPtr - 1)) {
+ $error = 'Space before comma, expected none, though';
+ $phpcsFile->addError($error, $next);
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionCallSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionCallSpacingSniff.php
new file mode 100755
index 000000000..8a3cbc8e0
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionCallSpacingSniff.php
@@ -0,0 +1,53 @@
+getTokens();
+
+ // Find the next non-empty token.
+ $openBracket = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true);
+
+ if ($tokens[$openBracket]['code'] !== T_OPEN_PARENTHESIS) {
+ // Not a function call.
+ return;
+ }
+
+ // Look for funcName (
+ if (($stackPtr + 1) !== $openBracket) {
+ $error = 'Space before opening parenthesis of function call not allowed';
+ $phpcsFile->addError($error, $stackPtr, 'SpaceBeforeOpenBracket');
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php
new file mode 100755
index 000000000..83e7ac73e
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php
@@ -0,0 +1,69 @@
+getTokens();
+
+ if (isset($tokens[$stackPtr]['scope_closer']) === false) {
+ // Probably an interface method.
+ return;
+ }
+
+ $closeBrace = $tokens[$stackPtr]['scope_closer'];
+ $prevContent = $phpcsFile->findPrevious(T_WHITESPACE, ($closeBrace - 1), null, true);
+
+ $braceLine = $tokens[$closeBrace]['line'];
+ $prevLine = $tokens[$prevContent]['line'];
+
+ $found = ($braceLine - $prevLine - 1);
+ if ($phpcsFile->hasCondition($stackPtr, T_FUNCTION) === true
+ || isset($tokens[$stackPtr]['nested_parenthesis']) === true
+ ) {
+ // Nested function.
+ if ($found < 0) {
+ $error = 'Closing brace of nested function must be on a new line';
+ $phpcsFile->addError($error, $closeBrace, 'ContentBeforeClose');
+ } elseif ($found > 0) {
+ $error = 'Expected 0 blank lines before closing brace of nested function; %s found';
+ $data = array($found);
+ $phpcsFile->addError($error, $closeBrace, 'SpacingBeforeNestedClose', $data);
+ }
+ } else {
+ if ($found !== 0) {
+ $error = 'Expected 0 blank lines before closing function brace; %s found';
+ $data = array($found);
+ $phpcsFile->addError($error, $closeBrace, 'SpacingBeforeClose', $data);
+ }
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php
new file mode 100755
index 000000000..d202e760a
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php
@@ -0,0 +1,62 @@
+getTokens();
+
+ if (isset($tokens[$stackPtr]['scope_opener']) === false) {
+ // Probably an interface method.
+ return;
+ }
+
+ $openBrace = $tokens[$stackPtr]['scope_opener'];
+ $nextContent = $phpcsFile->findNext(T_WHITESPACE, ($openBrace + 1), null, true);
+
+ if ($nextContent === $tokens[$stackPtr]['scope_closer']) {
+ // The next bit of content is the closing brace, so this
+ // is an empty function and should have a blank line
+ // between the opening and closing braces.
+ return;
+ }
+
+ $braceLine = $tokens[$openBrace]['line'];
+ $nextLine = $tokens[$nextContent]['line'];
+
+ $found = ($nextLine - $braceLine - 1);
+ if ($found > 0) {
+ $error = 'Expected 0 blank lines after opening function brace; %s found';
+ $data = array($found);
+ $phpcsFile->addError($error, $openBrace, 'SpacingAfter', $data);
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionSpacingSniff.php
new file mode 100755
index 000000000..09f6a55b0
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/FunctionSpacingSniff.php
@@ -0,0 +1,129 @@
+getTokens();
+
+ /*
+ Check the number of blank lines
+ after the function.
+ */
+
+ if (isset($tokens[$stackPtr]['scope_closer']) === false) {
+ // Must be an interface method, so the closer is the semi-colon.
+ $closer = $phpcsFile->findNext(T_SEMICOLON, $stackPtr);
+ } else {
+ $closer = $tokens[$stackPtr]['scope_closer'];
+ }
+
+ // There needs to be 1 blank lines after the closer.
+ $nextLineToken = null;
+ for ($i = $closer; $i < $phpcsFile->numTokens; $i++) {
+ if (strpos($tokens[$i]['content'], $phpcsFile->eolChar) === false) {
+ continue;
+ } else {
+ $nextLineToken = ($i + 1);
+ break;
+ }
+ }
+
+ if ($nextLineToken === null) {
+ // Never found the next line, which means
+ // there are 0 blank lines after the function.
+ $foundLines = 0;
+ } else {
+ $nextContent = $phpcsFile->findNext(array(T_WHITESPACE), ($nextLineToken + 1), null, true);
+ if ($nextContent === false) {
+ // We are at the end of the file. That is acceptable as well.
+ $foundLines = 1;
+ } else {
+ $foundLines = ($tokens[$nextContent]['line'] - $tokens[$nextLineToken]['line']);
+ }
+ }
+
+ /*
+ Check the number of blank lines
+ before the function.
+ */
+
+ $prevLineToken = null;
+ for ($i = $stackPtr; $i > 0; $i--) {
+ if (strpos($tokens[$i]['content'], $phpcsFile->eolChar) === false) {
+ continue;
+ } else {
+ $prevLineToken = $i;
+ break;
+ }
+ }
+
+ if ($prevLineToken === null) {
+ // Never found the previous line, which means
+ // there are 0 blank lines before the function.
+ $foundLines = 0;
+ } else {
+ $prevContent = $phpcsFile->findPrevious(array(T_WHITESPACE, T_DOC_COMMENT), $prevLineToken, null, true);
+
+ // Before we throw an error, check that we are not throwing an error
+ // for another function. We don't want to error for no blank lines after
+ // the previous function and no blank lines before this one as well.
+ $currentLine = $tokens[$stackPtr]['line'];
+ $prevLine = ($tokens[$prevContent]['line'] - 1);
+ $i = ($stackPtr - 1);
+ $foundLines = 0;
+ while ($currentLine !== $prevLine && $currentLine > 1 && $i > 0) {
+ if (isset($tokens[$i]['scope_condition']) === true) {
+ $scopeCondition = $tokens[$i]['scope_condition'];
+ if ($tokens[$scopeCondition]['code'] === T_FUNCTION) {
+ // Found a previous function.
+ return;
+ }
+ } elseif ($tokens[$i]['code'] === T_FUNCTION) {
+ // Found another interface function.
+ return;
+ }
+
+ $currentLine = $tokens[$i]['line'];
+ if ($currentLine === $prevLine) {
+ break;
+ }
+
+ if ($tokens[($i - 1)]['line'] < $currentLine && $tokens[($i + 1)]['line'] > $currentLine) {
+ // This token is on a line by itself. If it is whitespace, the line is empty.
+ if ($tokens[$i]['code'] === T_WHITESPACE) {
+ $foundLines++;
+ }
+ }
+ $i--;
+ }
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php
new file mode 100755
index 000000000..a52680736
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php
@@ -0,0 +1,42 @@
+getTokens();
+
+ $nextType = $tokens[($stackPtr + 1)]['code'];
+ if (in_array($nextType, PHP_CodeSniffer_Tokens::$emptyTokens) === true) {
+ $error = 'Space found after object operator';
+ $phpcsFile->addError($error, $stackPtr, 'After');
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/OperatorSpacingSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/OperatorSpacingSniff.php
new file mode 100755
index 000000000..efeef023a
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/OperatorSpacingSniff.php
@@ -0,0 +1,185 @@
+getTokens();
+
+ // Skip default values in function declarations.
+ if ($tokens[$stackPtr]['code'] === T_EQUAL
+ || $tokens[$stackPtr]['code'] === T_MINUS
+ ) {
+ if (isset($tokens[$stackPtr]['nested_parenthesis']) === true) {
+ $parenthesis = array_keys($tokens[$stackPtr]['nested_parenthesis']);
+ $bracket = array_pop($parenthesis);
+ if (isset($tokens[$bracket]['parenthesis_owner']) === true) {
+ $function = $tokens[$bracket]['parenthesis_owner'];
+ if ($tokens[$function]['code'] === T_FUNCTION) {
+ return;
+ }
+ }
+ }
+ }
+
+ if ($tokens[$stackPtr]['code'] === T_EQUAL) {
+ // Skip for '=&' case.
+ if (isset($tokens[($stackPtr + 1)]) === true && $tokens[($stackPtr + 1)]['code'] === T_BITWISE_AND) {
+ return;
+ }
+ }
+
+ if ($tokens[$stackPtr]['code'] === T_BITWISE_AND) {
+ // If its not a reference, then we expect one space either side of the
+ // bitwise operator.
+ if (!$phpcsFile->isReference($stackPtr) && !$this->isVariable($stackPtr, $tokens, $phpcsFile)) {
+ // Check there is one space before the & operator.
+ if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE) {
+ $error = 'Expected 1 space before "&" operator; 0 found';
+ $phpcsFile->addError($error, $stackPtr, 'NoSpaceBeforeAmp');
+ }
+
+ // Check there is one space after the & operator.
+ if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) {
+ $error = 'Expected 1 space after "&" operator; 0 found';
+ $phpcsFile->addError($error, $stackPtr, 'NoSpaceAfterAmp');
+ }
+ }
+ } else {
+ if ($tokens[$stackPtr]['code'] === T_MINUS) {
+ // Skip declaration of negative value in new array format; eg. $arr = [-1].
+ if ($tokens[($stackPtr - 1)]['code'] === T_OPEN_SHORT_ARRAY) {
+ return;
+ }
+
+ // Check minus spacing, but make sure we aren't just assigning
+ // a minus value or returning one.
+ $prev = $phpcsFile->findPrevious(T_WHITESPACE, ($stackPtr - 1), null, true);
+ if ($tokens[$prev]['code'] === T_RETURN) {
+ // Just returning a negative value; eg. return -1.
+ return;
+ }
+
+ if (in_array($tokens[$prev]['code'], PHP_CodeSniffer_Tokens::$operators) === true) {
+ // Just trying to operate on a negative value; eg. ($var * -1).
+ return;
+ }
+
+ if (in_array($tokens[$prev]['code'], PHP_CodeSniffer_Tokens::$comparisonTokens) === true) {
+ // Just trying to compare a negative value; eg. ($var === -1).
+ return;
+ }
+
+ // A list of tokens that indicate that the token is not
+ // part of an arithmetic operation.
+ $invalidTokens = array(
+ T_COMMA,
+ T_OPEN_PARENTHESIS,
+ T_OPEN_SQUARE_BRACKET,
+ T_DOUBLE_ARROW,
+ T_COLON,
+ T_INLINE_THEN,
+ T_INLINE_ELSE,
+ T_CASE,
+ );
+
+ if (in_array($tokens[$prev]['code'], $invalidTokens) === true) {
+ // Just trying to use a negative value; eg. myFunction($var, -2).
+ return;
+ }
+ if (in_array($tokens[$prev]['code'], PHP_CodeSniffer_Tokens::$assignmentTokens) === true) {
+ // Just trying to assign a negative value; eg. ($var = -1).
+ return;
+ }
+ }
+
+ $operator = $tokens[$stackPtr]['content'];
+
+ if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE) {
+ $error = "Expected 1 space before \"$operator\"; 0 found";
+ $phpcsFile->addError($error, $stackPtr, 'NoSpaceBefore');
+ }
+
+ if ($tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE) {
+ $error = "Expected 1 space after \"$operator\"; 0 found";
+ $phpcsFile->addError($error, $stackPtr, 'NoSpaceAfter');
+ }
+ }
+ }
+
+ /**
+ * Check if the current token is inside an array.
+ *
+ * @param int $stackPtr The current token offset.
+ * @param array $phpcsFile The current token list.
+ * @return bool
+ */
+ protected function isVariable($stackPtr, $tokens, $phpcsFile)
+ {
+ $tokenAfter = $phpcsFile->findNext(
+ PHP_CodeSniffer_Tokens::$emptyTokens,
+ ($stackPtr + 1),
+ null,
+ true
+ );
+ $tokenBefore = $phpcsFile->findNext(
+ PHP_CodeSniffer_Tokens::$emptyTokens,
+ ($stackPtr - 1),
+ null,
+ true
+ );
+
+ if ($tokens[$tokenAfter]['code'] === T_VARIABLE &&
+ (
+ $tokens[$tokenBefore]['code'] === T_OPEN_PARENTHESIS ||
+ $tokens[$tokenBefore]['code'] === T_COMMA ||
+ $tokens[$tokenBefore]['code'] === T_OPEN_SHORT_ARRAY
+ )
+ ) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ScopeIndentSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ScopeIndentSniff.php
new file mode 100755
index 000000000..b3e998ed4
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/ScopeIndentSniff.php
@@ -0,0 +1,280 @@
+getTokens();
+
+ // If this is an inline condition (ie. there is no scope opener), then
+ // return, as this is not a new scope.
+ if (isset($tokens[$stackPtr]['scope_opener']) === false) {
+ return;
+ }
+
+ if ($tokens[$stackPtr]['code'] === T_ELSE) {
+ $next = $phpcsFile->findNext(
+ PHP_CodeSniffer_Tokens::$emptyTokens,
+ ($stackPtr + 1),
+ null,
+ true
+ );
+
+ // We will handle the T_IF token in another call to process.
+ if ($tokens[$next]['code'] === T_IF) {
+ return;
+ }
+ }
+
+ // Find the first token on this line.
+ $firstToken = $stackPtr;
+ for ($i = $stackPtr; $i >= 0; $i--) {
+ // Record the first code token on the line.
+ if (in_array($tokens[$i]['code'], PHP_CodeSniffer_Tokens::$emptyTokens) === false) {
+ $firstToken = $i;
+ }
+
+ // It's the start of the line, so we've found our first php token.
+ if ($tokens[$i]['column'] === 1) {
+ break;
+ }
+ }
+
+ // Based on the conditions that surround this token, determine the
+ // indent that we expect this current content to be.
+ $expectedIndent = $this->calculateExpectedIndent($tokens, $firstToken);
+
+ $scopeOpener = $tokens[$stackPtr]['scope_opener'];
+ $scopeCloser = $tokens[$stackPtr]['scope_closer'];
+
+ // Some scopes are expected not to have indents.
+ if (in_array($tokens[$firstToken]['code'], $this->nonIndentingScopes) === false) {
+ $indent = ($expectedIndent + $this->indent);
+ } else {
+ $indent = $expectedIndent;
+ }
+
+ $newline = false;
+ $commentOpen = false;
+ $inHereDoc = false;
+
+ // Only loop over the content beween the opening and closing brace, not
+ // the braces themselves.
+ for ($i = ($scopeOpener + 1); $i < $scopeCloser; $i++) {
+ // If this token is another scope, skip it as it will be handled by
+ // another call to this sniff.
+ if (in_array($tokens[$i]['code'], PHP_CodeSniffer_Tokens::$scopeOpeners) === true) {
+ if (isset($tokens[$i]['scope_opener']) === true) {
+ $i = $tokens[$i]['scope_closer'];
+
+ // If the scope closer is followed by a semi-colon, the semi-colon is part
+ // of the closer and should also be ignored. This most commonly happens with
+ // CASE statements that end with "break;", where we don't want to stop
+ // ignoring at the break, but rather at the semi-colon.
+ $nextToken = $phpcsFile->findNext(PHP_CodeSniffer_Tokens::$emptyTokens, ($i + 1), null, true);
+ if ($tokens[$nextToken]['code'] === T_SEMICOLON) {
+ $i = $nextToken;
+ }
+ } else {
+ // If this token does not have a scope_opener indice, then
+ // it's probably an inline scope, so let's skip to the next
+ // semicolon. Inline scopes include inline if's, abstract
+ // methods etc.
+ $nextToken = $phpcsFile->findNext(T_SEMICOLON, $i, $scopeCloser);
+ if ($nextToken !== false) {
+ $i = $nextToken;
+ }
+ }
+ continue;
+ }
+
+ // If this is a HEREDOC then we need to ignore it as the
+ // whitespace before the contents within the HEREDOC are
+ // considered part of the content.
+ if ($tokens[$i]['code'] === T_START_HEREDOC) {
+ $inHereDoc = true;
+ continue;
+ } elseif ($inHereDoc === true) {
+ if ($tokens[$i]['code'] === T_END_HEREDOC) {
+ $inHereDoc = false;
+ }
+ continue;
+ }
+
+ if ($tokens[$i]['column'] === 1) {
+ // We started a newline.
+ $newline = true;
+ }
+
+ if ($newline === true && $tokens[$i]['code'] !== T_WHITESPACE) {
+ // If we started a newline and we find a token that is not
+ // whitespace, then this must be the first token on the line that
+ // must be indented.
+ $newline = false;
+ $firstToken = $i;
+
+ $column = $tokens[$firstToken]['column'];
+
+ // Special case for non-PHP code.
+ if ($tokens[$firstToken]['code'] === T_INLINE_HTML) {
+ $trimmedContentLength = strlen(ltrim($tokens[$firstToken]['content']));
+ if ($trimmedContentLength === 0) {
+ continue;
+ }
+
+ $contentLength = strlen($tokens[$firstToken]['content']);
+ $column = ($contentLength - $trimmedContentLength + 1);
+ }
+
+ // If we're starting a new PHP block that has the scope closer
+ // as the next token we'll skip the remaining checks as the scope is closed.
+ if ($tokens[$firstToken]['code'] === T_OPEN_TAG &&
+ $scopeCloser == $firstToken + 1
+ ) {
+ continue;
+ }
+
+ // Check to see if this constant string spans multiple lines.
+ // If so, then make sure that the strings on lines other than the
+ // first line are indented appropriately, based on their whitespace.
+ if (in_array($tokens[$firstToken]['code'], PHP_CodeSniffer_Tokens::$stringTokens) === true) {
+ if (in_array($tokens[($firstToken - 1)]['code'], PHP_CodeSniffer_Tokens::$stringTokens) === true) {
+ // If we find a string that directly follows another string
+ // then its just a string that spans multiple lines, so we
+ // don't need to check for indenting.
+ continue;
+ }
+ }
+
+ // This is a special condition for T_DOC_COMMENT and C-style
+ // comments, which contain whitespace between each line.
+ $comments = array(
+ T_COMMENT,
+ T_DOC_COMMENT
+ );
+
+ $isDocComment = false;
+ if (in_array($tokens[$firstToken]['code'], $comments) === true) {
+ $content = trim($tokens[$firstToken]['content']);
+ if (preg_match('|^/\*|', $content) !== 0) {
+ // Check to see if the end of the comment is on the same line
+ // as the start of the comment. If it is, then we don't
+ // have to worry about opening a comment.
+ if (preg_match('|\*/$|', $content) === 0) {
+ // We don't have to calculate the column for the
+ // start of the comment as there is a whitespace
+ // token before it.
+ $commentOpen = true;
+ $isDocComment = (substr($content, 0, 3) === '/**');
+ }
+ } elseif ($commentOpen === true) {
+ if ($content === '') {
+ // We are in a comment, but this line has nothing on it
+ // so let's skip it.
+ continue;
+ }
+
+ $contentLength = strlen($tokens[$firstToken]['content']);
+ $trimmedContentLength = strlen(ltrim($tokens[$firstToken]['content']));
+
+ $column = ($contentLength - $trimmedContentLength + 1);
+ if (preg_match('|\*/$|', $content) !== 0) {
+ $commentOpen = false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Calculates the expected indent of a token.
+ *
+ * @param array $tokens The stack of tokens for this file.
+ * @param int $stackPtr The position of the token to get indent for.
+ * @return int
+ */
+ protected function calculateExpectedIndent(array $tokens, $stackPtr)
+ {
+ $conditionStack = array();
+
+ // Empty conditions array (top level structure).
+ if (empty($tokens[$stackPtr]['conditions']) === true) {
+ if (isset($tokens[$stackPtr]['nested_parenthesis']) === true
+ && empty($tokens[$stackPtr]['nested_parenthesis']) === false
+ ) {
+ // Wrapped in parenthesis means it is probably in a
+ // function call (like a closure) so we have to assume indent
+ // is correct here and someone else will check it more
+ // carefully in another sniff.
+ return $tokens[$stackPtr]['column'];
+ } else {
+ return 1;
+ }
+ }
+
+ $tokenConditions = $tokens[$stackPtr]['conditions'];
+ foreach ($tokenConditions as $id => $condition) {
+ // If it's an indenting scope ie. it's not in our array of
+ // scopes that don't indent, add it to our condition stack.
+ if (in_array($condition, $this->nonIndentingScopes) === false) {
+ $conditionStack[$id] = $condition;
+ }
+ }
+ return ((count($conditionStack) * $this->indent) + 1);
+ }
+}
diff --git a/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/TabAndSpaceSniff.php b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/TabAndSpaceSniff.php
new file mode 100755
index 000000000..0c2593aa1
--- /dev/null
+++ b/tests/codesniffer/FHComplete/Sniffs/WhiteSpace/TabAndSpaceSniff.php
@@ -0,0 +1,63 @@
+getTokens();
+
+ $line = $tokens[$stackPtr]['line'];
+ if ($stackPtr > 0 && $tokens[($stackPtr - 1)]['line'] !== $line) {
+ return;
+ }
+
+ if (strpos($tokens[$stackPtr]['content'], " \t") !== false) {
+ $error = 'Space and tab found';
+ $phpcsFile->addError($error, $stackPtr);
+ }
+ if (strpos($tokens[$stackPtr]['content'], "\t ") !== false) {
+ $error = 'Tab and space found';
+ $phpcsFile->addError($error, $stackPtr);
+ }
+ }
+}
diff --git a/tests/codesniffer/FHComplete/ruleset.xml b/tests/codesniffer/FHComplete/ruleset.xml
new file mode 100755
index 000000000..6673d18fe
--- /dev/null
+++ b/tests/codesniffer/FHComplete/ruleset.xml
@@ -0,0 +1,92 @@
+
+
+ FHComplete's coding standard
+
+ \.git
+ */Config/*.ini.php
+ /*/tmp/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ */tests/*
+
+
+ */tests/*
+
+
+
+
+
diff --git a/tests/codesniffer/FHComplete/tests/FHCompletePHPStandardTest.php b/tests/codesniffer/FHComplete/tests/FHCompletePHPStandardTest.php
new file mode 100755
index 000000000..8c933aa95
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/FHCompletePHPStandardTest.php
@@ -0,0 +1,67 @@
+helper)) {
+ $this->helper = new TestHelper();
+ }
+ }
+
+/**
+ * testFiles
+ *
+ * Run simple syntax checks, if the filename ends with pass.php - expect it to pass
+ */
+ public static function testProvider() {
+ $tests = array();
+
+ $standard = dirname(dirname(__FILE__));
+
+ $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(dirname(__FILE__) . '/files'));
+ foreach ($iterator as $dir) {
+ if ($dir->isDir()) {
+ continue;
+ }
+
+ $file = $dir->getPathname();
+ $expectPass = (substr($file, -8) === 'pass.php');
+ $tests[] = array(
+ $file,
+ $standard,
+ $expectPass
+ );
+ }
+ return $tests;
+ }
+
+/**
+ * _testFile
+ *
+ * @dataProvider testProvider
+ *
+ * @param string $file
+ * @param string $standard
+ * @param boolean $expectPass
+ */
+ public function testFile($file, $standard, $expectPass) {
+ $outputStr = $this->helper->runPhpCs($file);
+ if ($expectPass) {
+ $this->assertNotRegExp(
+ "/FOUND \d+ ERROR/",
+ $outputStr,
+ basename($file) . ' - expected to pass with no errors, some were reported. '
+ );
+ } else {
+ $this->assertRegExp(
+ "/FOUND \d+ ERROR/",
+ $outputStr,
+ basename($file) . ' - expected failures, none reported. '
+ );
+ }
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/tests/TestHelper.php b/tests/codesniffer/FHComplete/tests/TestHelper.php
new file mode 100755
index 000000000..4d86b5fe4
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/TestHelper.php
@@ -0,0 +1,54 @@
+_phpcs = new PHP_CodeSniffer_CLI();
+ }
+
+/**
+ * Run PHPCS on a file.
+ *
+ * @param string $file to run.
+ * @return string The output from phpcs.
+ */
+ public function runPhpCs($file) {
+ $defaults = $this->_phpcs->getDefaults();
+ $standard = dirname(__FILE__) . '/ruleset.xml';
+ if (
+ defined('PHP_CodeSniffer::VERSION') &&
+ version_compare(PHP_CodeSniffer::VERSION, '1.5.0') != -1
+ ) {
+ $standard = array($standard);
+ }
+ $options = array(
+ 'encoding' => 'utf-8',
+ 'files' => array($file),
+ 'standard' => $standard,
+ 'showSources' => true,
+ ) + $defaults;
+
+ // New PHPCS has a strange issue where the method arguments
+ // are not stored on the instance causing weird errors.
+ $reflection = new ReflectionProperty($this->_phpcs, 'values');
+ $reflection->setAccessible(true);
+ $reflection->setValue($this->_phpcs, $options);
+
+ ob_start();
+ $this->_phpcs->process($options);
+ $result = ob_get_contents();
+ ob_end_clean();
+ return $result;
+ }
+
+}
diff --git a/tests/codesniffer/FHComplete/tests/bootstrap.php b/tests/codesniffer/FHComplete/tests/bootstrap.php
new file mode 100755
index 000000000..b6ef51c7c
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/bootstrap.php
@@ -0,0 +1,2 @@
+ 100) {
+ echo 'i > 100';
+}
+
+while (false) {
+ echo 'false';
+}
+
+do {
+ echo 'dowhile test';
+} while (false);
diff --git a/tests/codesniffer/FHComplete/tests/files/control_structure_dowhile.php b/tests/codesniffer/FHComplete/tests/files/control_structure_dowhile.php
new file mode 100755
index 000000000..54b2190d4
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/control_structure_dowhile.php
@@ -0,0 +1,6 @@
+something ('testing');
+fail_whale ();
diff --git a/tests/codesniffer/FHComplete/tests/files/mixing_indent.php b/tests/codesniffer/FHComplete/tests/files/mixing_indent.php
new file mode 100755
index 000000000..0400dd514
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/mixing_indent.php
@@ -0,0 +1,6 @@
+ 'after 2 tabs'
+ );
+}
diff --git a/tests/codesniffer/FHComplete/tests/files/multiple_use.php b/tests/codesniffer/FHComplete/tests/files/multiple_use.php
new file mode 100755
index 000000000..b239a6419
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/multiple_use.php
@@ -0,0 +1,6 @@
+
+
+
+echo "this should fail";
diff --git a/tests/codesniffer/FHComplete/tests/files/short_open_tags_pass.php b/tests/codesniffer/FHComplete/tests/files/short_open_tags_pass.php
new file mode 100755
index 000000000..0bdfd43fb
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/short_open_tags_pass.php
@@ -0,0 +1,6 @@
+
+
+= "this should pass";
diff --git a/tests/codesniffer/FHComplete/tests/files/space_tab.php b/tests/codesniffer/FHComplete/tests/files/space_tab.php
new file mode 100755
index 000000000..132eca1a5
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/space_tab.php
@@ -0,0 +1,2 @@
+passingPublic = 'changed';
+ $this->underscored = 'has value now';
+ $this->doubleUnderscore = 'not recommended';
+ }
+
+ /**
+ * [setStatics description]
+ *
+ * @return void
+ */
+ public static function setStatics()
+ {
+ self::$publicStatic = true;
+ self::$protectedStatic = true;
+ self::$privateStatic = true;
+ }
+}
diff --git a/tests/codesniffer/FHComplete/tests/files/whitespace_comma.php b/tests/codesniffer/FHComplete/tests/files/whitespace_comma.php
new file mode 100755
index 000000000..78e43d5f0
--- /dev/null
+++ b/tests/codesniffer/FHComplete/tests/files/whitespace_comma.php
@@ -0,0 +1,2 @@
+
+
+ FH-Complete coding standard
+
+
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vilesci/lehre/lehreinheiten_vorrueckung.php b/vilesci/lehre/lehreinheiten_vorrueckung.php
index 2b1edad37..79f4405fb 100644
--- a/vilesci/lehre/lehreinheiten_vorrueckung.php
+++ b/vilesci/lehre/lehreinheiten_vorrueckung.php
@@ -247,6 +247,7 @@ if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
$lem_obj->insertamum = date('Y-m-d H:i:s');
$lem_obj->insertvon = 'Vorrueckung_'.$user;
$lem_obj->ext_id = '';
+ $lem_obj->vertrag_id='';
if(!$lem_obj->save())
{
@@ -339,4 +340,4 @@ if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
?>
-
\ No newline at end of file
+
diff --git a/wawi/bestellung.php b/wawi/bestellung.php
index b7b5c6f7d..6544af6a9 100644
--- a/wawi/bestellung.php
+++ b/wawi/bestellung.php
@@ -2695,7 +2695,7 @@ function sendBestellerMail($bestellung, $status)
switch($status)
{
case 'bestellt': $email.=" Ihre Bestellung wurde bestellt "; break;
- case 'geliefert': $email.=" Ihre Bestellung wurde geliefert Hinweis: Nach erfolgter Lieferung werden Waren ab einem Wert von EUR 250,-- pro Einzelposition inventarisiert. "; break;
+ case 'geliefert': $email.=" Ihre Bestellung wurde geliefert Hinweis: Nach erfolgter Lieferung werden Waren ab einem Wert von EUR 400,-- pro Einzelposition inventarisiert. "; break;
case 'freigabe': $email.=" Ihre Bestellung wurde freigegeben "; break;
case 'storno': $email.=" Ihre Bestellung wurde storniert "; break;
}