diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index cd88f814a..9e68c5cb8 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -297,6 +297,13 @@ class InfoCenter extends Auth_Controller
}
$persondata = $this->_loadPersonData($person_id);
+
+ $checkPerson = $this->PersonModel->checkDuplicate($person_id);
+
+ if (isError($checkPerson)) show_error(getError($checkPerson));
+
+ $duplicate = array('duplicated' => getData($checkPerson));
+
$prestudentdata = $this->_loadPrestudentData($person_id);
$this->DokumentModel->addOrder('bezeichnung');
@@ -305,7 +312,8 @@ class InfoCenter extends Auth_Controller
$data = array_merge(
$persondata,
$prestudentdata,
- $dokumentdata
+ $dokumentdata,
+ $duplicate
);
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
@@ -734,7 +742,7 @@ class InfoCenter extends Auth_Controller
if (hasData($lastStatus) && hasData($statusgrresult))
{
- //check if still Interessent
+ //check if still Interessent, Bewerber or Wartender
if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS
|| $lastStatus->retval[0]->status_kurzbz === self::BEWERBERSTATUS
|| $lastStatus->retval[0]->status_kurzbz === self::WARTENDER)
@@ -2134,17 +2142,18 @@ class InfoCenter extends Auth_Controller
{
$statusgrund = $this->input->post('statusgrund');
$studiengang = $this->input->post('studiengang');
+ $abgeschickt = $this->input->post('abgeschickt');
$personen = $this->input->post('personen');
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
- if ($statusgrund === 'null' || $studiengang === 'null' || empty($personen))
- $this->terminateWithJsonError("Bitte Statusgrund, Studiengang und Personen auswählen.");
+ if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen))
+ $this->terminateWithJsonError("Bitte füllen Sie alle Felder aus");
foreach($personen as $person)
{
- $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester);
+ $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt);
- if(!hasData($prestudent))
+ if (!hasData($prestudent))
continue;
$prestudentData = getData($prestudent);
diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php
index 827bdc989..c5f0d3e98 100644
--- a/application/libraries/UDFLib.php
+++ b/application/libraries/UDFLib.php
@@ -312,10 +312,10 @@ class UDFLib
{
$resultElement->{$columnName} = $columnValue;
}
- }
- // And finally remove the UDFs column
- unset($resultElement->{self::COLUMN_NAME});
+ // And finally remove the UDFs column
+ unset($resultElement->{self::COLUMN_NAME});
+ }
}
/**
diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php
index 4111e5f19..2d8ac4a7e 100644
--- a/application/models/crm/Prestudent_model.php
+++ b/application/models/crm/Prestudent_model.php
@@ -611,7 +611,7 @@ class Prestudent_model extends DB_Model
));
}
- public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester)
+ public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt)
{
$query = "SELECT ps.prestudent_id
FROM public.tbl_prestudentstatus pss
@@ -621,7 +621,17 @@ class Prestudent_model extends DB_Model
WHERE ps.person_id = ?
AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ?
AND pss.studiensemester_kurzbz = ?
- ";
+ AND";
+
+ if ($abgeschickt === 'true')
+ $query .= " EXISTS";
+ else
+ $query .= " NOT EXISTS";
+
+ $query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss
+ JOIN public.tbl_prestudent sps USING(prestudent_id)
+ WHERE sps.prestudent_id = ps.prestudent_id
+ AND spss.bewerbung_abgeschicktamum IS NOT NULL)";
return $this->execQuery($query, array($person, $studiengang, $studienSemester));
}
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 085c3f826..ec5522674 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -265,4 +265,19 @@ class Person_model extends DB_Model
return success($result->vorname. ' '. $result->nachname);
}
+
+ public function checkDuplicate($person_id)
+ {
+ $qry = "SELECT sp.person_id
+ FROM public.tbl_person p
+ LEFT JOIN public.tbl_person sp ON p.vorname = sp.vorname
+ AND p.nachname = sp.nachname
+ AND p.gebdatum = sp.gebdatum
+ JOIN public.tbl_prestudent ps ON sp.person_id = ps.person_id
+ JOIN public.tbl_prestudentstatus pss ON ps.prestudent_id = pss.prestudent_id
+ WHERE p.person_id = ? AND sp.person_id != ? AND pss.status_kurzbz = ?";
+
+
+ return $this->execQuery($qry, array($person_id, $person_id, 'Abbrecher'));
+ }
}
diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
index 7c9669ae3..4d8dc36d0 100644
--- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php
@@ -2,7 +2,7 @@
$STUDIENSEMESTER = $studiensemester_selected;
$ORGANISATIONSEINHEIT = (isset($organisationseinheit_selected) && !is_null($organisationseinheit_selected)) ? array($organisationseinheit_selected) : $organisationseinheit;
-$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8';
+$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8,9,10';
$query = '
SELECT
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftrag.php b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
index 4498dacb4..023df1ac7 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftrag.php
@@ -160,7 +160,7 @@ $this->load->view(
'Ausbildungssemester_widget',
array(
DropdownWidget::SELECTED_ELEMENT => $ausbildungssemester_selected,
- 'number_semester' => 6
+ 'number_semester' => 10
),
array(
'name' => 'ausbildungssemester',
diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
index 1ccfc55a4..c272c392c 100644
--- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php
@@ -2,7 +2,7 @@
$STUDIENSEMESTER = $studiensemester_selected;
$STUDIENGANG = (isset($studiengang_selected) && !is_null($studiengang_selected)) ? array($studiengang_selected) : $studiengang;
-$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8';
+$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8,9,10';
$query = '
SELECT
diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php
index d0e0a7126..c49a1c6cc 100644
--- a/application/views/system/infocenter/infocenterData.php
+++ b/application/views/system/infocenter/infocenterData.php
@@ -6,7 +6,7 @@
$INTERESSENT_STATUS = '\'Interessent\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
- $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\', \'Interessent rejected\'';
+ $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\'';
$LOGDATA_NAME_PARKED = '\'Parked\'';
$LOGDATA_NAME_ONHOLD = '\'Onhold\'';
$LOGTYPE_KURZBZ = '\'Processstate\'';
@@ -14,6 +14,7 @@
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $ORG_NAME = '\'InfoCenter\'';
$query = '
SELECT
@@ -33,7 +34,7 @@
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "LastAction",
(
@@ -42,7 +43,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "LastActionType",
(
@@ -59,7 +60,7 @@
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "User/Operator",
(
@@ -254,13 +255,14 @@
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
+ AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.'
AND tbl_benutzerfunktion.uid = (
SELECT l.insertvon
FROM system.tbl_log l
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
)
LIMIT 1
@@ -439,13 +441,13 @@
$datasetRaw->{'ZGVMNation'} = '-';
}
- if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
+ if ($datasetRaw->{'InfoCenterMitarbeiter'} === null)
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
}
else
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
}
return $datasetRaw;
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 30acb8617..76a371c11 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -101,6 +101,22 @@
+
+
+
+
+ person_id . '
';
+ }
+ ?>
+
+
+
+
diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php
index 26c30d718..9078c13db 100644
--- a/application/views/system/infocenter/infocenterFreigegebenData.php
+++ b/application/views/system/infocenter/infocenterFreigegebenData.php
@@ -5,13 +5,14 @@
$INTERESSENT_STATUS = '\'Interessent\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
- $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
+ $LOGDATA_NAME = '\'Login with code\', \'Login with user\'';
$REJECTED_STATUS = '\'Abgewiesener\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $ORG_NAME = '\'InfoCenter\'';
- $query = '
+$query = '
SELECT
p.person_id AS "PersonId",
p.vorname AS "Vorname",
@@ -27,7 +28,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "LastAction",
(
@@ -36,7 +37,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "LastActionType",
(
@@ -45,7 +46,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "User/Operator",
(
@@ -231,13 +232,14 @@
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
+ AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.'
AND tbl_benutzerfunktion.uid = (
SELECT l.insertvon
FROM system.tbl_log l
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
)
LIMIT 1
@@ -410,13 +412,13 @@
$datasetRaw->{'ZGVMNation'} = '-';
}
- if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
+ if ($datasetRaw->{'InfoCenterMitarbeiter'} === null)
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
}
else
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
}
return $datasetRaw;
diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
index 81ddd2594..5aa664a97 100644
--- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
+++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php
@@ -5,11 +5,12 @@
$INTERESSENT_STATUS = '\'Interessent\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
- $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
+ $LOGDATA_NAME = '\'Login with code\', \'Login with user\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $ORG_NAME = '\'InfoCenter\'';
- $query = '
+$query = '
SELECT
p.person_id AS "PersonId",
p.vorname AS "Vorname",
@@ -25,7 +26,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "LastAction",
(
@@ -34,7 +35,7 @@
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
) AS "User/Operator",
(
@@ -182,13 +183,14 @@
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
+ AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.'
AND tbl_benutzerfunktion.uid = (
SELECT l.insertvon
FROM system.tbl_log l
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
- ORDER BY l.zeitpunkt DESC
+ ORDER BY l.log_id DESC
LIMIT 1
)
LIMIT 1
@@ -347,13 +349,13 @@
$datasetRaw->{'ZGVMNation'} = '-';
}
- if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
+ if ($datasetRaw->{'InfoCenterMitarbeiter'} === null)
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
}
else
{
- $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
+ $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
}
return $datasetRaw;
diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php
index fcf3dd811..5bdc40925 100644
--- a/cis/private/tools/zeitaufzeichnung.php
+++ b/cis/private/tools/zeitaufzeichnung.php
@@ -710,6 +710,10 @@ echo '
else
{
var pausenstart = Math.floor((spanne/2-15)+(von_stunden*60+parseInt(von_minuten)));
+ if (pausenstart%15 !== 0)
+ {
+ pausenstart = Math.round(pausenstart/10)*10;
+ }
var pausenstart_stunde = Math.floor(pausenstart/60);
var pausenstart_minute = pausenstart - pausenstart_stunde*60;
pausenstart_stunde = (pausenstart_stunde < 10 ? "0"+pausenstart_stunde : pausenstart_stunde);
@@ -2177,6 +2181,7 @@ function exportProjectOverviewAsCSV($user, $delimiter = ',')
function getDataForProjectOverviewCSV($user)
{
+ $db = new basis_db();
$projects_of_user = new projekt();
$projects = $projects_of_user->getProjekteListForMitarbeiter($user);
@@ -2184,10 +2189,12 @@ function getDataForProjectOverviewCSV($user)
if($projektphase->getProjectphaseForMitarbeiter($user))
$projektphasen = $projektphase->result;
else
- $projetkphasen = array();
+ $projektphasen = array();
$csvData = array();
+ $exists = @$db->db_query('SELECT 1 FROM sync.tbl_projects_timesheets_project LIMIT 1;');
+
foreach ($projects as $project)
{
$titel = $project->titel;
@@ -2197,7 +2204,15 @@ function getDataForProjectOverviewCSV($user)
$beginn = $project->beginn;
$ende = $project->ende;
- $csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende);
+ $inhalt = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende);
+
+ if ($exists)
+ {
+ $sap_projekt_id = $project->sap_project_id;
+ $inhalt[] = $sap_projekt_id;
+ }
+
+ $csvData[] = $inhalt;
}
foreach ($projektphasen as $prjp)
@@ -2210,14 +2225,26 @@ function getDataForProjectOverviewCSV($user)
$projekt_phase_id = $prjp->projektphase_id;
$beginn = $prjp->start;
$ende = $prjp->ende;
+ $inhalt = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende);
- array_push($csvData, array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende) );
+ if ($exists)
+ {
+ $project_task_id = $prjp->project_task_id;
+ $inhalt[] = $project_task_id;
+ }
+
+ array_push($csvData, $inhalt);
}
}
sort($csvData);
//headers schreiben
- array_unshift($csvData, array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'));
+ $header = array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE');
+
+ if ($exists)
+ $header[] = 'SAP PROJEKTNUMMER';
+
+ array_unshift($csvData, $header);
return $csvData;
}
?>
diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php
index 177f1f8aa..ce00eabc1 100644
--- a/cis/private/tools/zeitaufzeichnung_projektliste.php
+++ b/cis/private/tools/zeitaufzeichnung_projektliste.php
@@ -750,7 +750,7 @@ foreach ($projektnames as $projektname)
}
$worksheet->setColumn($spalte, $spalte, $phasewidth);
- $worksheet->write($zeile, $spalte++, $projekt->beschreibung, $format_cell_leftrightline);
+ $worksheet->writeString($zeile, $spalte++, $projekt->beschreibung, $format_cell_leftrightline);
}
}
else
diff --git a/content/lvplanung/timetable-week.xul.php b/content/lvplanung/timetable-week.xul.php
index 18eaf6076..7e3a144dd 100644
--- a/content/lvplanung/timetable-week.xul.php
+++ b/content/lvplanung/timetable-week.xul.php
@@ -1,708 +1,735 @@
-,
- * Andreas Oesterreicher
and
- * Rudolf Hangl .
- * Gerald Simane-Sequens .
- */
-header("Content-type: application/vnd.mozilla.xul+xml");
-
-require_once('../../config/vilesci.config.inc.php');
-require_once('../../include/globals.inc.php');
-require_once('../../include/functions.inc.php');
-require_once('../../include/benutzerberechtigung.class.php');
-require_once('../../include/lehreinheit.class.php');
-require_once('../../include/zeitwunsch.class.php');
-require_once('../../include/wochenplan.class.php');
-require_once('../../include/reservierung.class.php');
-require_once('../../include/log.class.php');
-
-echo '';
-echo '';
-$PHP_SELF = $_SERVER['PHP_SELF'];
-// Startwerte setzen
-$db_stpl_table=null;
-$db = new basis_db();
-
-echo '';
-
-$uid = get_uid();
-
-//Berechtigung pruefen
-$rechte = new benutzerberechtigung();
-$rechte->getBerechtigungen($uid);
-
-if(!$rechte->isBerechtigt('lehre/lvplan'))
- die('Sie haben keine Berechtigung fuer diese Seite');
-
-$error_msg='';
-$kollision_msg='';
-
-// Benutzerdefinierte Variablen laden
-loadVariables($uid);
-
-if (!isset($ignore_kollision))
- $ignore_kollision=(boolean)false;
-elseif ($ignore_kollision=='false')
- $ignore_kollision=(boolean)false;
-else
- $ignore_kollision=(boolean)true;
-
-if (!isset($alle_unr_mitladen))
- $alle_unr_mitladen=(boolean)false;
-elseif ($alle_unr_mitladen=='false')
- $alle_unr_mitladen=(boolean)false;
-else
- $alle_unr_mitladen=(boolean)true;
-
-// Bezeichnungen fuer Tabellen und Views
-$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table;
-
-// Variablen uebernehmen
-if (isset($_GET['aktion']))
- $aktion=$_GET['aktion'];
-else
- $aktion=null;
-
-if (isset($_GET['semesterplan']))
- $semesterplan=$_GET['semesterplan'];
-else
- $semesterplan=false;
-if (isset($_GET['new_stunde']))
- $new_stunde=$_GET['new_stunde'];
-if (isset($_GET['new_datum']))
- $new_datum=$_GET['new_datum'];
-if (isset($_GET['old_ort']))
- $old_ort=$_GET['old_ort'];
-if (isset($_GET['new_ort']))
- $new_ort=$_GET['new_ort'];
-if (isset($_GET['kollisionsanzahl']))
- $kollisionsanzahl=$_GET['kollisionsanzahl'];
-else
- $kollisionsanzahl=0;
-if (isset($_GET['ort']))
- $ort=$_GET['ort'];
-else
- $ort=null;
-if (isset($_GET['datum']))
- $datum=$_GET['datum'];
-if (isset($_GET['type']))
- $type=$_GET['type'];
-if (isset($_GET['stg_kz']))
- $stg_kz=$_GET['stg_kz'];
-else
- $stg_kz=null;
-if (isset($_GET['sem']))
- $sem=$_GET['sem'];
-else
- $sem=null;
-if (isset($_GET['ver']))
- $ver=$_GET['ver'];
-else
- $ver=null;
-if (isset($_GET['grp']))
- $grp=$_GET['grp'];
-else
- $grp=null;
-if (isset($_GET['pers_uid']))
- $pers_uid=$_GET['pers_uid'];
-if (isset($_GET['gruppe']))
- $gruppe=$_GET['gruppe'];
-else
- $gruppe=null;
-if (isset($_GET['semester_aktuell']))
- $semester_aktuell=$_GET['semester_aktuell'];
-
-if (!isset($semester_aktuell) && $semesterplan)
- $error_msg.='Studien-Semester ist nicht gesetzt!';
-
-if(isset($_GET['fachbereich_kurzbz']))
- $fachbereich_kurzbz = $_GET['fachbereich_kurzbz'];
-else
- $fachbereich_kurzbz=null;
-
-if (isset($_GET['new_unr']))
- $new_unr=$_GET['new_unr'];
-else
- $new_unr=null;
-
-if (isset($_GET['new_blockung']))
- $new_blockung=$_GET['new_blockung'];
-else
- $new_blockung=null;
-?>
-
-
-
- >
-
-
-
-
-
-
-';
-else
- echo '';
-?>
-
-
-
-
-
-
-db_query("SET datestyle TO ISO;"))
-// $error_msg=$db->db_last_error();
-
-// ****************************************************************************
-// Variablen fuer Aktionen setzen
-if ($aktion=='lva_single_search' || $aktion=='lva_single_set'
- || $aktion=='lva_multi_search' || $aktion=='lva_multi_set'
- || $aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
-{
- $i=0;
- $name_lva_id='lva_id'.$i;
- while ($i<100 && isset($_GET[$name_lva_id]))
- {
- $lva_id[$i]=$_GET[$name_lva_id];
- //$error_msg.=$lva_id[$i];
- $name_lva_id='lva_id'.++$i;
- }
- $lva_id=array_unique($lva_id);
-}
-if ($aktion=='stpl_move' || $aktion=='stpl_single_search' || $aktion=='stpl_set' || $aktion=='stpl_delete_single')
-{
- $i=0;
- $name_stpl_id='stundenplan_id'.$i;
- while ($i<100 && isset($_GET[$name_stpl_id]))
- {
- $stpl_id[]=$_GET[$name_stpl_id];
- //echo $stpl_id[$i];
- $name_stpl_id='stundenplan_id'.++$i;
- }
- // Mehrfachauswahl uebernehmen
- $j=0;
- $name_stpl_idx='x'.$j.'stundenplan_id0';
- while ($j<100 && isset($_GET[$name_stpl_idx]))
- {
- $i=0;
- $name_stpl_id='x'.$j.'stundenplan_id'.$i;
- while ($i<100 && isset($_GET[$name_stpl_id]))
- {
- $stpl_idx[]=$_GET[$name_stpl_id];
- $name_stpl_id='x'.$j.'stundenplan_id'.++$i;
- }
- $name_stpl_idx='x'.++$j.'stundenplan_id0';
- }
-
- //ReservierungsIDs
- $i=0;
- $name_res_id='reservierung_id'.$i;
- while ($i<100 && isset($_GET[$name_res_id]))
- {
- $res_id[]=$_GET[$name_res_id];
- $name_res_id='reservierung_id'.++$i;
- }
-
- // Mehrfachauswahl uebernehmen
- $j=0;
- $name_res_idx='x'.$j.'reservierung_id0';
- while ($j<100 && isset($_GET[$name_res_idx]))
- {
- $i=0;
- $name_res_id='x'.$j.'reservierung_id'.$i;
- while ($i<100 && isset($_GET[$name_res_id]))
- {
- $res_idx[]=$_GET[$name_res_id];
- $name_res_id='x'.$j.'reservierung_id'.++$i;
- }
- $name_res_idx='x'.++$j.'reservierung_id0';
- }
-}
-
-// ****************************************************************************
-// Aktionen durchfuehren
-$db->db_query('BEGIN;');
-// *************** Stunden verschieben ****************************************
-if ($aktion=='stpl_move' || $aktion=='stpl_set')
-{
- $undo='';
- $sql='';
- $moved=array();
-
- foreach ($stpl_id as $stundenplan_id)
- {
- $moved[]=$stundenplan_id;
- $lehrstunde=new lehrstunde();
- $lehrstunde->load($stundenplan_id,$db_stpl_table);
- if($rechte->isBerechtigt('lehre/lvplan',$lehrstunde->studiengang_kz,'ui'))
- {
- $undo.=$lehrstunde->getUndo($db_stpl_table);
- $diffStunde=$new_stunde-$lehrstunde->stunde;
- $lehrstunde->datum=$new_datum;
- $lehrstunde->stunde=$new_stunde;
- if ($ort!=$old_ort)
- $lehrstunde->ort_kurzbz=$ort;
- if ($aktion=='stpl_set')
- $lehrstunde->ort_kurzbz=$new_ort;
-
- if($new_unr!='')
- $lehrstunde->unr = $new_unr;
-
- $kollision=$lehrstunde->kollision($db_stpl_table);
- if ($kollision && !$ignore_kollision)
- $kollision_msg.=$lehrstunde->errormsg;
- if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
- {
- if(!$lehrstunde->save($uid,$db_stpl_table))
- $error_msg.=$lehrstunde->errormsg;
- $sql.=$lehrstunde->lastqry;
- }
- }
- else
- {
- $error_msg.="Sie haben keine Berechtigung zur Verschiebung von Stunden des Studienganges ".$lehrstunde->studiengang;
- }
- }
- // Mehrfachauswahl
- if (isset($stpl_idx))
- {
- foreach ($stpl_idx as $stundenplan_id)
- {
- if(!in_array($stundenplan_id, $moved))
- {
- $lehrstunde=new lehrstunde();
- $lehrstunde->load($stundenplan_id,$db_stpl_table);
- if($rechte->isBerechtigt('lehre/lvplan',$lehrstunde->studiengang_kz,'ui'))
- {
- $undo.=$lehrstunde->getUndo($db_stpl_table);
- $lehrstunde->datum=$new_datum;
- $lehrstunde->stunde+=$diffStunde;
- if ($ort!=$old_ort)
- $lehrstunde->ort_kurzbz=$ort;
- if ($aktion=='stpl_set')
- $lehrstunde->ort_kurzbz=$new_ort;
- if($new_unr!='')
- $lehrstunde->unr = $new_unr;
-
- $kollision=$lehrstunde->kollision($db_stpl_table);
- if ($kollision && !$ignore_kollision)
- $kollision_msg.=$lehrstunde->errormsg;
- if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
- {
- if(!$lehrstunde->save($uid,$db_stpl_table))
- $error_msg.=$lehrstunde->errormsg;
- $sql.=$lehrstunde->lastqry;
- }
- }
- else
- {
- $error_msg.="Sie haben keine Berechtigung zur Verschiebung von Stunden des Studienganges ".$lehrstunde->studiengang;
- }
- }
- }
- }
-
- //UNDO Befehl schreiben
- if($undo!='' && $error_msg=='' && $sql!='' && $kollision_msg=='')
- {
- $log = new log();
- $log->executetime = date('Y-m-d H:i:s');
- $log->sqlundo = $undo;
- $log->sql = $sql;
- $log->beschreibung = 'Stundenverschiebung '.$new_datum.'('.$new_stunde.') '.$ort;
- $log->mitarbeiter_uid = $uid;
- if(!$log->save(true))
- $error_msg.='Fehler: '.$log->errormsg;
-
- }
-}
-// ****************** STPL Delete *******************************
-elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block')
-{
- $lehrstunde=new lehrstunde();
-
- if($rechte->isBerechtigt('lehre/lvplan',null,'uid'))
- {
- //Einzelne Stunden entfernen
- if(isset($stpl_id))
- {
- foreach ($stpl_id as $stundenplan_id)
- {
- $lehrstunde->delete($stundenplan_id,$db_stpl_table);
- $error_msg.=$lehrstunde->errormsg;
- }
- }
-
- //Loeschen von mehreren Stunden
- if(isset($stpl_idx))
- {
- foreach ($stpl_idx as $stundenplan_id)
- {
- $lehrstunde->delete($stundenplan_id,$db_stpl_table);
- $error_msg.=$lehrstunde->errormsg;
- }
- }
-
- if(isset($res_id))
- {
- foreach ($res_id as $reservierung_id)
- {
- $reservierung = new reservierung();
- $reservierung->load($reservierung_id);
- $logdata_reservierung = (array)$reservierung;
- $logdata = var_export($logdata_reservierung, true);
- $reservierung->delete($reservierung_id);
- $error_msg.=$reservierung->errormsg;
- }
- }
-
- //Loeschen von mehreren Reservierungen
- if(isset($res_idx))
- {
- foreach ($res_idx as $reservierung_id)
- {
- $reservierung = new reservierung();
- $reservierung->load($reservierung_id);
- $logdata_reservierung = (array)$reservierung;
- $logdata = var_export($logdata_reservierung, true);
- $reservierung->delete($reservierung_id);
- $error_msg.=$reservierung->errormsg;
- }
- }
- }
- else
- {
- $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
- }
-}
-// ******************** Lehrveranstaltung setzen ******************************
-elseif ($aktion=='lva_single_set')
-{
- if($rechte->isBerechtigt('lehre/lvplan',null,'ui'))
- {
- $z=0;
- foreach ($lva_id AS $le_id)
- {
- $lva[$z]=new lehreinheit();
- $lva[$z]->loadLE($le_id);
-
- if($new_unr!='')
- $lva[$z]->unr=$new_unr;
- if($new_blockung!='')
- $lva[$z]->stundenblockung=$new_blockung;
-
- //$error_msg.='test'.$le_id.($lva[$i]->errormsg).($lva[$i]->stundenblockung);
- for ($j=0;$j<$lva[$z]->stundenblockung && $error_msg=='';$j++)
- if (!$lva[$z]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
- $kollision_msg.=$lva[$z]->errormsg."\n";
- $z++;
- }
- for ($i=0;$i<$z && $error_msg=='';$i++)
- {
- if($new_unr!='')
- $lva[$i]->unr=$new_unr;
- if($new_blockung!='')
- $lva[$i]->stundenblockung=$new_blockung;
-
- for ($j=0;$j<$lva[$i]->stundenblockung;$j++)
- {
-
- if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
- $error_msg.='Error: '.$lva[$i]->errormsg;
- }
- }
- }
- else
- {
- $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
- }
-}
-//******************* Multi Verplanung ***************
-elseif ($aktion=='lva_multi_set')
-{
- if($rechte->isBerechtigt('lehre/lvplan',null,'ui'))
- {
- // Ferien holen
- $ferien=new ferien();
- if ($type=='verband')
- $ferien->getAll($stg_kz);
- else
- $ferien->getAll(0);
-
- // Ende holen
- if (!$result_semester=$db->db_query("SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";"))
- die ($db->db_last_error());
- if ($db->db_num_rows()>0)
- {
- $row = $db->db_fetch_object();
- $ende = $row->ende;
- }
- else
- $error_msg.="Fatal Error: Ende Datum ist nicht gesetzt ($semester_aktuell)!";
-
- $ende=mktime(0,0,1,substr($ende,5,2),substr($ende,8,2),substr($ende,0,4));
- $anz_lvas=count($lva_id);
- // Arrays intitialisieren
- $wochenrythmus=array();
- $verplant=array();
- $block=array();
- $wochenrythmus=array();
- $semesterstunden=array();
- $planstunden=array();
- $offenestunden=array();
- // LVAs holen
- $sql_query='SELECT * FROM lehre.'.$lva_stpl_view.' WHERE';
- $lvas='';
- foreach ($lva_id as $id)
- $lvas.=' OR lehreinheit_id='.$id;
- $lvas=substr($lvas,3);
- $sql_query.=$lvas;
-
- if(!$result_lva = $db->db_query($sql_query))
- $error_msg.=$db->db_last_error();
- $num_rows_lva=$db->db_num_rows($result_lva);
- // Daten aufbereiten
- for ($i=0;$i<$num_rows_lva;$i++)
- {
- $row=$db->db_fetch_object($result_lva,$i);
- $verplant[]=$row->verplant;
- $block[]=$row->stundenblockung;
- $wochenrythmus[]=$row->wochenrythmus;
- $semesterstunden[]=$row->semesterstunden;
- $planstunden[]=$row->planstunden;
- $offenestunden[]=$row->planstunden-$row->verplant;
- }
- // Variablen eindeutig?
- // Offene Stunden
- $os=$offenestunden[0];
- $offenestunden=array_unique($offenestunden);
- if (count($offenestunden)==1)
- $offenestunden=$os;
- else
- $error_msg.='Offene Stunden sind nicht eindeutig!';
-
- //Blockung
- $blk=$block[0];
- $block=array_unique($block);
- if (count($block)==1)
- $block=$blk;
- else
- $error_msg.='Blockung ist nicht eindeutig!';
- //Wochenrythmus
- $wr=$wochenrythmus[0];
- $wochenrythmus=array_unique($wochenrythmus);
- if (count($wochenrythmus)==1)
- $wochenrythmus=$wr;
- else
- $error_msg.='Wochenrhythmus ist nicht eindeutig!';
- $count=0;
- $rest=$offenestunden;
- if ($rest<=0)
- $error_msg.='Es sind bereits alle Stunden verplant!'.$rest;
- if ($error_msg=='')
- {
- $d=mktime(0,0,1,substr($new_datum,5,2),substr($new_datum,8),substr($new_datum,0,4));
- while ($rest>0 && $d<$ende)
- {
- if ($rest<$block && $rest>0)
- $block=$rest;
- //LVAs holen und pruefen ob moeglich
- for ($i=0;$i<$anz_lvas;$i++)
- {
- $lva[$i]=new lehreinheit();
- $lva[$i]->loadLE($lva_id[$i]);
- for ($j=0;$j<$block;$j++)
- if (!$lva[$i]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
- $kollision_msg.=$lva[$i]->errormsg;
- }
- // LVAs setzen
- for ($i=0;$i<$anz_lvas && $error_msg=='';$i++)
- for ($j=0;$j<$block;$j++)
- if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
- $error_msg.=$lva[$i]->errormsg;
- $d=jump_week($d,$wochenrythmus);
- while ($ferien->isferien($d))
- $d=jump_week($d,$wochenrythmus);
- // Es kann sein, dass die Zeitumstellung (1 Stunde) Probleme macht
- // Falls 23 Uhr eine Stunde nach vor
- $new_datum=date('Y-m-d',$d);
- $rest-=$block;
- }
- }
- }
- else
- {
- $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
- }
-}
-// Lehrveranstaltungen aus dem Stundenplan loeschen
-elseif ($aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
-{
- if($rechte->isBerechtigt('lehre/lvplan',null,'uid'))
- {
- $result_semester = $db->db_query("SELECT start,ende FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";");
- if ($db->db_num_rows()>0)
- {
- $start=date('Y-m-d',$datum);
- if ($aktion=='lva_stpl_del_multi')
- {
- $row = $db->db_fetch_object($result_semester);
- $ende = $row->ende;
- }
- else
- $ende=date('Y-m-d',jump_week($datum,1));
- $anz_lvas=count($lva_id);
- $sql_query_lvaid='';
- $sql_query='DELETE FROM lehre.'.TABLE_BEGIN.$db_stpl_table.' WHERE (';
- for ($i=0;$i<$anz_lvas;$i++)
- $sql_query_lvaid.=' OR lehreinheit_id='.$lva_id[$i];
- $sql_query_lvaid=substr($sql_query_lvaid,3);
- $sql_query.=$sql_query_lvaid;
- $sql_query.=") AND datum>='$start' AND datum<'$ende'";
- if(!$result_lva_del=$db->db_query($sql_query))
- $error_msg.=$db->db_last_error();
- }
- else
- $error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
- }
- else
- $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
-}
-
-if ($error_msg=='' && ($kollision_msg=='' || $kollisionsanzahl>0))
-{
- $db->db_query('COMMIT;');
- if($kollisionsanzahl>0)
- $error_msg.="\nStunden wurden verplant\n";
-}
-else
- $db->db_query('ROLLBACK;');
-
-$error_msg.=$kollision_msg;
-
-// Stundenplan erstellen
-$stdplan=new wochenplan($type);
-if (!isset($datum))
- $datum=time();
-if (!isset($semesterplan) || !$semesterplan)
- $begin=$ende=$datum;
-else
-{
- $db->db_query("SELECT start,ende FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";");
- if ($db->db_num_rows()>0)
- {
- $row = $db->db_fetch_object();
- $begin=strtotime($row->start);
- $ende=strtotime($row->ende);
- }
- else
- $error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
-}
-
-// Benutzergruppe
-$stdplan->user=$user;
-// aktueller Benutzer
-$stdplan->user_uid=$uid;
-
-// Zusaetzliche Daten laden
-if (! $stdplan->load_data($type,$pers_uid,$ort,$stg_kz,$sem,$ver,$grp,$gruppe,$fachbereich_kurzbz) && $error_msg!='')
- $error_msg.=$stdplan->errormsg;
-
-// Stundenplan einer Woche laden
-//if (! $stdplan->load_week($datum,$db_stpl_table))
-// $error_msg.=$stdplan->errormsg;
-while ($begin<=$ende)
-{
- $stdplan->init_stdplan();
- $datum=$begin;
- $begin=strtotime("+1 week",$begin);
-
- // Zeitwuensche laden falls benoetigt
- $zeitwunsch=null;
- if ($type=='lektor' || $aktion=='lva_single_search' || $aktion=='lva_multi_search')
- {
- $wunsch=new zeitwunsch();
- if ($type=='lektor')
- if ($wunsch->loadPerson($pers_uid,$datum))
- $zeitwunsch=$wunsch->zeitwunsch;
- else
- $error_msg.=$wunsch->errormsg;
- if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
- if ($wunsch->loadZwLE($lva_id,$datum))
- $zeitwunsch=$wunsch->zeitwunsch;
- else
- $error_msg.=$wunsch->errormsg;
- }
-
- // Stundenplan einer Woche laden
- if (! $stdplan->load_week($datum,$db_stpl_table, $alle_unr_mitladen))
- $error_msg.=$stdplan->errormsg;
-
- //Raumvorschlag setzen
-
- if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
- if (! $stdplan->load_lva_search($datum,$lva_id,$db_stpl_table, $aktion))
- $error_msg.=$stdplan->errormsg;
-
- if ($aktion=='stpl_single_search')
- {
- if(isset($stpl_id))
- {
- if (! $stdplan->load_stpl_search($datum,$stpl_id,$db_stpl_table))
- $error_msg.=$stdplan->errormsg;
- }
- else
- $error_msg.='Derzeit gibt es keinen Raumvorschlag fuer Reservierungen';
- }
-
- // Stundenplan der Woche drucken
- $stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch, $ignore_kollision, $kollision_student, $max_kollision);
-
-}
-
-?>
-
-
-
-
-
-
-
+,
+ * Andreas Oesterreicher and
+ * Rudolf Hangl .
+ * Gerald Simane-Sequens .
+ */
+header("Content-type: application/vnd.mozilla.xul+xml");
+
+require_once('../../config/vilesci.config.inc.php');
+require_once('../../include/globals.inc.php');
+require_once('../../include/functions.inc.php');
+require_once('../../include/benutzerberechtigung.class.php');
+require_once('../../include/lehreinheit.class.php');
+require_once('../../include/zeitwunsch.class.php');
+require_once('../../include/wochenplan.class.php');
+require_once('../../include/reservierung.class.php');
+require_once('../../include/log.class.php');
+
+echo '';
+echo '';
+$PHP_SELF = $_SERVER['PHP_SELF'];
+// Startwerte setzen
+$db_stpl_table=null;
+$db = new basis_db();
+
+echo '';
+
+$uid = get_uid();
+
+//Berechtigung pruefen
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($uid);
+
+if(!$rechte->isBerechtigt('lehre/lvplan'))
+ die('Sie haben keine Berechtigung fuer diese Seite');
+
+$error_msg='';
+$kollision_msg='';
+
+// Benutzerdefinierte Variablen laden
+loadVariables($uid);
+
+if (!isset($ignore_kollision))
+ $ignore_kollision=(boolean)false;
+elseif ($ignore_kollision=='false')
+ $ignore_kollision=(boolean)false;
+else
+ $ignore_kollision=(boolean)true;
+
+if (!isset($alle_unr_mitladen))
+ $alle_unr_mitladen=(boolean)false;
+elseif ($alle_unr_mitladen=='false')
+ $alle_unr_mitladen=(boolean)false;
+else
+ $alle_unr_mitladen=(boolean)true;
+
+// Bezeichnungen fuer Tabellen und Views
+$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table;
+
+// Variablen uebernehmen
+if (isset($_GET['aktion']))
+ $aktion=$_GET['aktion'];
+else
+ $aktion=null;
+
+if (isset($_GET['semesterplan']))
+ $semesterplan=$_GET['semesterplan'];
+else
+ $semesterplan=false;
+if (isset($_GET['new_stunde']))
+ $new_stunde=$_GET['new_stunde'];
+if (isset($_GET['new_datum']))
+ $new_datum=$_GET['new_datum'];
+if (isset($_GET['old_ort']))
+ $old_ort=$_GET['old_ort'];
+if (isset($_GET['new_ort']))
+ $new_ort=$_GET['new_ort'];
+if (isset($_GET['kollisionsanzahl']))
+ $kollisionsanzahl=$_GET['kollisionsanzahl'];
+else
+ $kollisionsanzahl=0;
+if (isset($_GET['ort']))
+ $ort=$_GET['ort'];
+else
+ $ort=null;
+if (isset($_GET['datum']))
+ $datum=$_GET['datum'];
+if (isset($_GET['type']))
+ $type=$_GET['type'];
+if (isset($_GET['stg_kz']))
+ $stg_kz=$_GET['stg_kz'];
+else
+ $stg_kz=null;
+if (isset($_GET['sem']))
+ $sem=$_GET['sem'];
+else
+ $sem=null;
+if (isset($_GET['ver']))
+ $ver=$_GET['ver'];
+else
+ $ver=null;
+if (isset($_GET['grp']))
+ $grp=$_GET['grp'];
+else
+ $grp=null;
+if (isset($_GET['pers_uid']))
+ $pers_uid=$_GET['pers_uid'];
+if (isset($_GET['gruppe']))
+ $gruppe=$_GET['gruppe'];
+else
+ $gruppe=null;
+if (isset($_GET['semester_aktuell']))
+ $semester_aktuell=$_GET['semester_aktuell'];
+
+if (!isset($semester_aktuell) && $semesterplan)
+ $error_msg.='Studien-Semester ist nicht gesetzt!';
+
+if(isset($_GET['fachbereich_kurzbz']))
+ $fachbereich_kurzbz = $_GET['fachbereich_kurzbz'];
+else
+ $fachbereich_kurzbz=null;
+
+if (isset($_GET['new_unr']))
+ $new_unr=$_GET['new_unr'];
+else
+ $new_unr=null;
+
+if (isset($_GET['new_blockung']))
+ $new_blockung=$_GET['new_blockung'];
+else
+ $new_blockung=null;
+?>
+
+
+
+ >
+
+
+
+
+
+
+';
+else
+ echo '';
+?>
+
+
+
+
+
+
+db_query("SET datestyle TO ISO;"))
+// $error_msg=$db->db_last_error();
+
+// ****************************************************************************
+// Variablen fuer Aktionen setzen
+if ($aktion=='lva_single_search' || $aktion=='lva_single_set'
+ || $aktion=='lva_multi_search' || $aktion=='lva_multi_set'
+ || $aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
+{
+ $i=0;
+ $name_lva_id='lva_id'.$i;
+ while ($i<100 && isset($_GET[$name_lva_id]))
+ {
+ $lva_id[$i]=$_GET[$name_lva_id];
+ //$error_msg.=$lva_id[$i];
+ $name_lva_id='lva_id'.++$i;
+ }
+ $lva_id=array_unique($lva_id);
+}
+if ($aktion=='stpl_move' || $aktion=='stpl_single_search' || $aktion=='stpl_set' || $aktion=='stpl_delete_single')
+{
+ $i=0;
+ $name_stpl_id='stundenplan_id'.$i;
+ while ($i<100 && isset($_GET[$name_stpl_id]))
+ {
+ $stpl_id[]=$_GET[$name_stpl_id];
+ //echo $stpl_id[$i];
+ $name_stpl_id='stundenplan_id'.++$i;
+ }
+ // Mehrfachauswahl uebernehmen
+ $j=0;
+ $name_stpl_idx='x'.$j.'stundenplan_id0';
+ while ($j<100 && isset($_GET[$name_stpl_idx]))
+ {
+ $i=0;
+ $name_stpl_id='x'.$j.'stundenplan_id'.$i;
+ while ($i<100 && isset($_GET[$name_stpl_id]))
+ {
+ $stpl_idx[]=$_GET[$name_stpl_id];
+ $name_stpl_id='x'.$j.'stundenplan_id'.++$i;
+ }
+ $name_stpl_idx='x'.++$j.'stundenplan_id0';
+ }
+
+ //ReservierungsIDs
+ $i=0;
+ $name_res_id='reservierung_id'.$i;
+ while ($i<100 && isset($_GET[$name_res_id]))
+ {
+ $res_id[]=$_GET[$name_res_id];
+ $name_res_id='reservierung_id'.++$i;
+ }
+
+ // Mehrfachauswahl uebernehmen
+ $j=0;
+ $name_res_idx='x'.$j.'reservierung_id0';
+ while ($j<100 && isset($_GET[$name_res_idx]))
+ {
+ $i=0;
+ $name_res_id='x'.$j.'reservierung_id'.$i;
+ while ($i<100 && isset($_GET[$name_res_id]))
+ {
+ $res_idx[]=$_GET[$name_res_id];
+ $name_res_id='x'.$j.'reservierung_id'.++$i;
+ }
+ $name_res_idx='x'.++$j.'reservierung_id0';
+ }
+}
+
+// ****************************************************************************
+// Aktionen durchfuehren
+$db->db_query('BEGIN;');
+// *************** Stunden verschieben ****************************************
+if ($aktion=='stpl_move' || $aktion=='stpl_set')
+{
+ $undo='';
+ $sql='';
+ $moved=array();
+
+ foreach ($stpl_id as $stundenplan_id)
+ {
+ $moved[]=$stundenplan_id;
+ $lehrstunde=new lehrstunde();
+ $lehrstunde->load($stundenplan_id,$db_stpl_table);
+ if($rechte->isBerechtigt('lehre/lvplan',$lehrstunde->studiengang_kz,'ui'))
+ {
+ $undo.=$lehrstunde->getUndo($db_stpl_table);
+ $diffStunde=$new_stunde-$lehrstunde->stunde;
+ $lehrstunde->datum=$new_datum;
+ $lehrstunde->stunde=$new_stunde;
+ if ($ort!=$old_ort)
+ $lehrstunde->ort_kurzbz=$ort;
+ if ($aktion=='stpl_set')
+ $lehrstunde->ort_kurzbz=$new_ort;
+
+ if($new_unr!='')
+ $lehrstunde->unr = $new_unr;
+
+ $kollision=$lehrstunde->kollision($db_stpl_table);
+ if ($kollision && !$ignore_kollision)
+ $kollision_msg.=$lehrstunde->errormsg;
+ if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
+ {
+ if(!$lehrstunde->save($uid,$db_stpl_table))
+ $error_msg.=$lehrstunde->errormsg;
+ $sql.=$lehrstunde->lastqry;
+ }
+ }
+ else
+ {
+ $error_msg.="Sie haben keine Berechtigung zur Verschiebung von Stunden des Studienganges ".$lehrstunde->studiengang;
+ }
+ }
+ // Mehrfachauswahl
+ if (isset($stpl_idx))
+ {
+ foreach ($stpl_idx as $stundenplan_id)
+ {
+ if(!in_array($stundenplan_id, $moved))
+ {
+ $lehrstunde=new lehrstunde();
+ $lehrstunde->load($stundenplan_id,$db_stpl_table);
+ if($rechte->isBerechtigt('lehre/lvplan',$lehrstunde->studiengang_kz,'ui'))
+ {
+ $undo.=$lehrstunde->getUndo($db_stpl_table);
+ $lehrstunde->datum=$new_datum;
+ $lehrstunde->stunde+=$diffStunde;
+ if ($ort!=$old_ort)
+ $lehrstunde->ort_kurzbz=$ort;
+ if ($aktion=='stpl_set')
+ $lehrstunde->ort_kurzbz=$new_ort;
+ if($new_unr!='')
+ $lehrstunde->unr = $new_unr;
+
+ $kollision=$lehrstunde->kollision($db_stpl_table);
+ if ($kollision && !$ignore_kollision)
+ $kollision_msg.=$lehrstunde->errormsg;
+ if (!$kollision || $ignore_kollision || $kollisionsanzahl>0)
+ {
+ if(!$lehrstunde->save($uid,$db_stpl_table))
+ $error_msg.=$lehrstunde->errormsg;
+ $sql.=$lehrstunde->lastqry;
+ }
+ }
+ else
+ {
+ $error_msg.="Sie haben keine Berechtigung zur Verschiebung von Stunden des Studienganges ".$lehrstunde->studiengang;
+ }
+ }
+ }
+ }
+
+ //UNDO Befehl schreiben
+ if($undo!='' && $error_msg=='' && $sql!='' && $kollision_msg=='')
+ {
+ $log = new log();
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->sqlundo = $undo;
+ $log->sql = $sql;
+ $log->beschreibung = 'Stundenverschiebung '.$new_datum.'('.$new_stunde.') '.$ort;
+ $log->mitarbeiter_uid = $uid;
+ if(!$log->save(true))
+ $error_msg.='Fehler: '.$log->errormsg;
+
+ }
+}
+// ****************** STPL Delete *******************************
+elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block')
+{
+ $lehrstunde=new lehrstunde();
+ $sql='';
+ $geloeschteDaten = '';
+
+ if($rechte->isBerechtigt('lehre/lvplan',null,'uid'))
+ {
+ //Einzelne Stunden entfernen
+ if(isset($stpl_id))
+ {
+ foreach ($stpl_id as $stundenplan_id)
+ {
+ $lehrstunde->load($stundenplan_id,$db_stpl_table);
+ $geloeschteDaten .= 'Lektor: '.$lehrstunde->lektor_uid.', Datum: '.
+ $lehrstunde->datum.', Stunde: '.$lehrstunde->stunde.', Ort: '.
+ $lehrstunde->ort_kurzbz.', Verband: '.strtoupper($lehrstunde->studiengang).'-'.
+ $lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp.', Spezialgruppe: '.$lehrstunde->gruppe_kurzbz.'; ';
+ $lehrstunde->delete($stundenplan_id,$db_stpl_table);
+ $error_msg.=$lehrstunde->errormsg;
+ $sql.=$lehrstunde->lastqry.'; ';
+ }
+ }
+
+ //Loeschen von mehreren Stunden
+ if(isset($stpl_idx))
+ {
+ foreach ($stpl_idx as $stundenplan_id)
+ {
+ $lehrstunde->load($stundenplan_id,$db_stpl_table);
+ $geloeschteDaten .= 'Lektor: '.$lehrstunde->lektor_uid.', Datum: '.
+ $lehrstunde->datum.', Stunde: '.$lehrstunde->stunde.', Ort: '.
+ $lehrstunde->ort_kurzbz.', Verband: '.strtoupper($lehrstunde->studiengang).'-'.
+ $lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp.', Spezialgruppe: '.$lehrstunde->gruppe_kurzbz.'; ';
+ $lehrstunde->delete($stundenplan_id,$db_stpl_table);
+ $error_msg.=$lehrstunde->errormsg;
+ $sql.=$lehrstunde->lastqry.'; ';
+ }
+ }
+
+ if(isset($res_id))
+ {
+ foreach ($res_id as $reservierung_id)
+ {
+ $reservierung = new reservierung();
+ $reservierung->load($reservierung_id);
+ $logdata_reservierung = (array)$reservierung;
+ $logdata = var_export($logdata_reservierung, true);
+ $reservierung->delete($reservierung_id);
+ $error_msg.=$reservierung->errormsg;
+ }
+ }
+
+ //Loeschen von mehreren Reservierungen
+ if(isset($res_idx))
+ {
+ foreach ($res_idx as $reservierung_id)
+ {
+ $reservierung = new reservierung();
+ $reservierung->load($reservierung_id);
+ $logdata_reservierung = (array)$reservierung;
+ $logdata = var_export($logdata_reservierung, true);
+ $reservierung->delete($reservierung_id);
+ $error_msg.=$reservierung->errormsg;
+ }
+ }
+
+ //UNDO Befehl schreiben
+ if($error_msg=='' && $sql!='')
+ {
+ $log = new log();
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->sqlundo = NULL;
+ $log->sql = $sql.' /* Geloeschte Daten: '.$geloeschteDaten.'*/';
+ $log->beschreibung = 'Stundenloeschung';
+ $log->mitarbeiter_uid = $uid;
+ if(!$log->save(true))
+ $error_msg.='Fehler: '.$log->errormsg;
+ }
+ }
+ else
+ {
+ $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
+ }
+}
+// ******************** Lehrveranstaltung setzen ******************************
+elseif ($aktion=='lva_single_set')
+{
+ if($rechte->isBerechtigt('lehre/lvplan',null,'ui'))
+ {
+ $z=0;
+ foreach ($lva_id AS $le_id)
+ {
+ $lva[$z]=new lehreinheit();
+ $lva[$z]->loadLE($le_id);
+
+ if($new_unr!='')
+ $lva[$z]->unr=$new_unr;
+ if($new_blockung!='')
+ $lva[$z]->stundenblockung=$new_blockung;
+
+ //$error_msg.='test'.$le_id.($lva[$i]->errormsg).($lva[$i]->stundenblockung);
+ for ($j=0;$j<$lva[$z]->stundenblockung && $error_msg=='';$j++)
+ if (!$lva[$z]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
+ $kollision_msg.=$lva[$z]->errormsg."\n";
+ $z++;
+ }
+ for ($i=0;$i<$z && $error_msg=='';$i++)
+ {
+ if($new_unr!='')
+ $lva[$i]->unr=$new_unr;
+ if($new_blockung!='')
+ $lva[$i]->stundenblockung=$new_blockung;
+
+ for ($j=0;$j<$lva[$i]->stundenblockung;$j++)
+ {
+
+ if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
+ $error_msg.='Error: '.$lva[$i]->errormsg;
+ }
+ }
+ }
+ else
+ {
+ $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
+ }
+}
+//******************* Multi Verplanung ***************
+elseif ($aktion=='lva_multi_set')
+{
+ if($rechte->isBerechtigt('lehre/lvplan',null,'ui'))
+ {
+ // Ferien holen
+ $ferien=new ferien();
+ if ($type=='verband')
+ $ferien->getAll($stg_kz);
+ else
+ $ferien->getAll(0);
+
+ // Ende holen
+ if (!$result_semester=$db->db_query("SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";"))
+ die ($db->db_last_error());
+ if ($db->db_num_rows()>0)
+ {
+ $row = $db->db_fetch_object();
+ $ende = $row->ende;
+ }
+ else
+ $error_msg.="Fatal Error: Ende Datum ist nicht gesetzt ($semester_aktuell)!";
+
+ $ende=mktime(0,0,1,substr($ende,5,2),substr($ende,8,2),substr($ende,0,4));
+ $anz_lvas=count($lva_id);
+ // Arrays intitialisieren
+ $wochenrythmus=array();
+ $verplant=array();
+ $block=array();
+ $wochenrythmus=array();
+ $semesterstunden=array();
+ $planstunden=array();
+ $offenestunden=array();
+ // LVAs holen
+ $sql_query='SELECT * FROM lehre.'.$lva_stpl_view.' WHERE';
+ $lvas='';
+ foreach ($lva_id as $id)
+ $lvas.=' OR lehreinheit_id='.$id;
+ $lvas=substr($lvas,3);
+ $sql_query.=$lvas;
+
+ if(!$result_lva = $db->db_query($sql_query))
+ $error_msg.=$db->db_last_error();
+ $num_rows_lva=$db->db_num_rows($result_lva);
+ // Daten aufbereiten
+ for ($i=0;$i<$num_rows_lva;$i++)
+ {
+ $row=$db->db_fetch_object($result_lva,$i);
+ $verplant[]=$row->verplant;
+ $block[]=$row->stundenblockung;
+ $wochenrythmus[]=$row->wochenrythmus;
+ $semesterstunden[]=$row->semesterstunden;
+ $planstunden[]=$row->planstunden;
+ $offenestunden[]=$row->planstunden-$row->verplant;
+ }
+ // Variablen eindeutig?
+ // Offene Stunden
+ $os=$offenestunden[0];
+ $offenestunden=array_unique($offenestunden);
+ if (count($offenestunden)==1)
+ $offenestunden=$os;
+ else
+ $error_msg.='Offene Stunden sind nicht eindeutig!';
+
+ //Blockung
+ $blk=$block[0];
+ $block=array_unique($block);
+ if (count($block)==1)
+ $block=$blk;
+ else
+ $error_msg.='Blockung ist nicht eindeutig!';
+ //Wochenrythmus
+ $wr=$wochenrythmus[0];
+ $wochenrythmus=array_unique($wochenrythmus);
+ if (count($wochenrythmus)==1)
+ $wochenrythmus=$wr;
+ else
+ $error_msg.='Wochenrhythmus ist nicht eindeutig!';
+ $count=0;
+ $rest=$offenestunden;
+ if ($rest<=0)
+ $error_msg.='Es sind bereits alle Stunden verplant!'.$rest;
+ if ($error_msg=='')
+ {
+ $d=mktime(0,0,1,substr($new_datum,5,2),substr($new_datum,8),substr($new_datum,0,4));
+ while ($rest>0 && $d<$ende)
+ {
+ if ($rest<$block && $rest>0)
+ $block=$rest;
+ //LVAs holen und pruefen ob moeglich
+ for ($i=0;$i<$anz_lvas;$i++)
+ {
+ $lva[$i]=new lehreinheit();
+ $lva[$i]->loadLE($lva_id[$i]);
+ for ($j=0;$j<$block;$j++)
+ if (!$lva[$i]->check_lva($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table) && !$ignore_kollision)
+ $kollision_msg.=$lva[$i]->errormsg;
+ }
+ // LVAs setzen
+ for ($i=0;$i<$anz_lvas && $error_msg=='';$i++)
+ for ($j=0;$j<$block;$j++)
+ if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid))
+ $error_msg.=$lva[$i]->errormsg;
+ $d=jump_week($d,$wochenrythmus);
+ while ($ferien->isferien($d))
+ $d=jump_week($d,$wochenrythmus);
+ // Es kann sein, dass die Zeitumstellung (1 Stunde) Probleme macht
+ // Falls 23 Uhr eine Stunde nach vor
+ $new_datum=date('Y-m-d',$d);
+ $rest-=$block;
+ }
+ }
+ }
+ else
+ {
+ $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
+ }
+}
+// Lehrveranstaltungen aus dem Stundenplan loeschen
+elseif ($aktion=='lva_stpl_del_multi' || $aktion=='lva_stpl_del_single')
+{
+ if($rechte->isBerechtigt('lehre/lvplan',null,'uid'))
+ {
+ $result_semester = $db->db_query("SELECT start,ende FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";");
+ if ($db->db_num_rows()>0)
+ {
+ $start=date('Y-m-d',$datum);
+ if ($aktion=='lva_stpl_del_multi')
+ {
+ $row = $db->db_fetch_object($result_semester);
+ $ende = $row->ende;
+ }
+ else
+ $ende=date('Y-m-d',jump_week($datum,1));
+ $anz_lvas=count($lva_id);
+ $sql_query_lvaid='';
+ $sql_query='DELETE FROM lehre.'.TABLE_BEGIN.$db_stpl_table.' WHERE (';
+ for ($i=0;$i<$anz_lvas;$i++)
+ $sql_query_lvaid.=' OR lehreinheit_id='.$lva_id[$i];
+ $sql_query_lvaid=substr($sql_query_lvaid,3);
+ $sql_query.=$sql_query_lvaid;
+ $sql_query.=") AND datum>='$start' AND datum<'$ende'";
+ if(!$result_lva_del=$db->db_query($sql_query))
+ $error_msg.=$db->db_last_error();
+ }
+ else
+ $error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
+ }
+ else
+ $error_msg.="Sie haben keine Berechtigung fuer diese Aktion";
+}
+
+if ($error_msg=='' && ($kollision_msg=='' || $kollisionsanzahl>0))
+{
+ $db->db_query('COMMIT;');
+ if($kollisionsanzahl>0)
+ $error_msg.="\nStunden wurden verplant\n";
+}
+else
+ $db->db_query('ROLLBACK;');
+
+$error_msg.=$kollision_msg;
+
+// Stundenplan erstellen
+$stdplan=new wochenplan($type);
+if (!isset($datum))
+ $datum=time();
+if (!isset($semesterplan) || !$semesterplan)
+ $begin=$ende=$datum;
+else
+{
+ $db->db_query("SELECT start,ende FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";");
+ if ($db->db_num_rows()>0)
+ {
+ $row = $db->db_fetch_object();
+ $begin=strtotime($row->start);
+ $ende=strtotime($row->ende);
+ }
+ else
+ $error_msg.='Studiensemester '.$semester_aktuell.' konnte nicht gefunden werden!';
+}
+
+// Benutzergruppe
+$stdplan->user=$user;
+// aktueller Benutzer
+$stdplan->user_uid=$uid;
+
+// Zusaetzliche Daten laden
+if (! $stdplan->load_data($type,$pers_uid,$ort,$stg_kz,$sem,$ver,$grp,$gruppe,$fachbereich_kurzbz) && $error_msg!='')
+ $error_msg.=$stdplan->errormsg;
+
+// Stundenplan einer Woche laden
+//if (! $stdplan->load_week($datum,$db_stpl_table))
+// $error_msg.=$stdplan->errormsg;
+while ($begin<=$ende)
+{
+ $stdplan->init_stdplan();
+ $datum=$begin;
+ $begin=strtotime("+1 week",$begin);
+
+ // Zeitwuensche laden falls benoetigt
+ $zeitwunsch=null;
+ if ($type=='lektor' || $aktion=='lva_single_search' || $aktion=='lva_multi_search')
+ {
+ $wunsch=new zeitwunsch();
+ if ($type=='lektor')
+ if ($wunsch->loadPerson($pers_uid,$datum))
+ $zeitwunsch=$wunsch->zeitwunsch;
+ else
+ $error_msg.=$wunsch->errormsg;
+ if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
+ if ($wunsch->loadZwLE($lva_id,$datum))
+ $zeitwunsch=$wunsch->zeitwunsch;
+ else
+ $error_msg.=$wunsch->errormsg;
+ }
+
+ // Stundenplan einer Woche laden
+ if (! $stdplan->load_week($datum,$db_stpl_table, $alle_unr_mitladen))
+ $error_msg.=$stdplan->errormsg;
+
+ //Raumvorschlag setzen
+
+ if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
+ if (! $stdplan->load_lva_search($datum,$lva_id,$db_stpl_table, $aktion))
+ $error_msg.=$stdplan->errormsg;
+
+ if ($aktion=='stpl_single_search')
+ {
+ if(isset($stpl_id))
+ {
+ if (! $stdplan->load_stpl_search($datum,$stpl_id,$db_stpl_table))
+ $error_msg.=$stdplan->errormsg;
+ }
+ else
+ $error_msg.='Derzeit gibt es keinen Raumvorschlag fuer Reservierungen';
+ }
+
+ // Stundenplan der Woche drucken
+ $stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch, $ignore_kollision, $kollision_student, $max_kollision);
+
+}
+
+?>
+
+
+
+
+
+
+
diff --git a/include/konto.class.php b/include/konto.class.php
index c23209a06..09afa5303 100644
--- a/include/konto.class.php
+++ b/include/konto.class.php
@@ -713,7 +713,7 @@ class konto extends basis_db
$qry = "select sum(betrag) as betrag from public.tbl_konto
join public.tbl_benutzer benutzer using(person_id)
where uid=".$this->db_add_param($uid)." and studiensemester_kurzbz = ".$this->db_add_param($stsem)."
- and buchungstyp_kurzbz = 'Studiengebuehr' and betrag > 0";
+ and buchungstyp_kurzbz in('Studiengebuehr','StudiengebuehrAnzahlung','StudiengebuehrRestzahlung') and betrag > 0";
if($studiengang_kz!= null)
$qry.=" and studiengang_kz = ".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php
index 87e6ca569..71dbf3319 100644
--- a/include/lehrstunde.class.php
+++ b/include/lehrstunde.class.php
@@ -1,1142 +1,1143 @@
-new=TRUE;
- }
-
- /**
- * @brief Einen Datensatz aus optional angegebener Stundenplan-Tabelle laden
- * @param stundenplan_id ID in der Datenbank
- * @param stpl_table Name der Tabelle in der DB
- * @return Boolean, Fehlermeldung kommt in das Attribut errormsg
- */
- public function load($stundenplan_id,$stpl_table='stundenplandev')
- {
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_view='lehre.'.VIEW_BEGIN.$stpl_table;
- $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
-
- $sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
-
- //Datenbankabfrage
- if (!$this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return false;
- }
-
- $this->anzahl = $this->db_num_rows();
-
- //Daten uebernehmen
- if ($this->anzahl!=1)
- {
- $this->errormsg='Keinen Datensatz gefunden';
- return false;
- }
- else
- {
- $row=$this->db_fetch_object();
- $this->stundenplan_id=$row->{$stpl_id};
- $this->unr=$row->unr;
- $this->lektor_uid=$row->uid;
- $this->lektor_kurzbz=$row->lektor;
- $this->datum=$row->datum;
- $this->stunde=$row->stunde;
- $this->ort_kurzbz=$row->ort_kurzbz;
- $this->lehrfach=$row->lehrfach;
- $this->lehrfach_bez=$row->lehrfach_bez;
- $this->lehrfach_id=$row->lehrfach_id;
- $this->lehrform=$row->lehrform;
- $this->studiengang_kz=$row->studiengang_kz;
- $this->studiengang=$row->stg_kurzbz;
- $this->sem=$row->semester;
- $this->ver=$row->verband;
- $this->grp=$row->gruppe;
- $this->gruppe_kurzbz=$row->gruppe_kurzbz;
- $this->titel=$row->titel;
- $this->anmerkung=$row->anmerkung;
- $this->updateamum=$row->updateamum;
- $this->updatevon=$row->updatevon;
- $this->new=false;
- }
- return true;
- }
-
- /**
- * Datensatz in DB speichern
- *
- */
- public function save($uid, $stpl_table='stundenplandev')
- {
- // Parameter Checken
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
- if ($this->new)
- {
- // insert
- }
- else
- {
- // update
- $sql_query='UPDATE '.$stpl_table;
- $sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
- $sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
- if($this->unr!='')
- $sql_query.=", unr=".$this->db_add_param($this->unr);
- $sql_query.=", updateamum=now(), updatevon=".$this->db_add_param($uid);
- $sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id);
-
- $this->lastqry = $sql_query;
- //Datenbankabfrage
- if (!$this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Erstellt einen Undo Befehl fuer die Speichern funktion
- *
- * @param $stpl_table
- * @return string undo
- */
- public function getUndo($stpl_table='stundenplandev')
- {
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
-
- $sql_query='UPDATE '.$stpl_table;
- $sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
- $sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
- $sql_query.=", updateamum=".$this->db_add_param($this->updateamum).", updatevon=".$this->db_add_param($this->updatevon);
- $sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id).";";
-
- return $sql_query;
- }
-
- /**
- * Datensatz aus DB entfernen
- * @param id ID des Datensatzes in der Tabelle
- * @param stpl_table Name der Tabelle
- *
- */
- public function delete($id, $stpl_table='stundenplandev')
- {
- // Parameter Checken
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
- // Delete SQL vorbereiten
- $sql_query='DELETE FROM '.$stpl_table;
- $sql_query.=" WHERE $stpl_id=".$this->db_add_param($id);
-
- //Datenbankrequest
- if (!$this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return false;
- }
- else
- return true;
- }
-
- /**
- * Laedt Lehrstunden
- *
- * @param type (student, lektor, lehrverband, gruppe, ort, ....)
- * @param datum_von (inklusive) Startdatum der Abfrage
- * @param datum_bis (exklusive) Enddatum der Abfrage
- * @param uid (des Lektors oder Studenten) kann auch NULL sein
- * @param ort_kurzbz (Kurzbezeichnung des Orts) kann auch NULL sein
- * @param studiengang_kz
- * @param sem
- * @param ver
- * @param grp
- * @param gruppe_kurzbz
- *
- */
- public function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe_kurzbz=NULL, $stpl_view='stundenplan', $idList=null, $fachbereich_kurzbz=null, $lva=NULL, $alle_unr_mitladen=false)
- {
- $num_rows_einheit=0;
- // Parameter Checken
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_view.TABLE_ID;
- $stpl_view_ohneschema=VIEW_BEGIN.$stpl_view;
- $stpl_view='lehre.'.VIEW_BEGIN.$stpl_view;
-
-
- // Datum im Format YYYY-MM-TT ?
- if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_von) )
- {
- $this->errormsg='Fehler: Startdatum hat falsches Format!';
- return -1;
- }
- if ($datum_bis!=null)
- {
- if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_bis) )
- {
- $this->errormsg='Fehler: Enddatum hat falsches Format!';
- return -1;
- }
- }
- else
- $datum_bis=$datum_von;
-
- // Person
- if (($type=='student' || $type=='lektor') && $uid==NULL)
- {
- $this->errormsg='Fehler: uid der Person ist nicht gesetzt';
- return -1;
- }
- // Ort
- if ($type=='ort' && $ort_kurzbz==NULL)
- {
- $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt';
- return -1;
- }
- // Gruppe
- if ($type=='gruppe' && $gruppe_kurzbz==NULL)
- {
- $this->errormsg='Fehler: Kurzbezeichnung der Gruppe ist nicht gesetzt';
- return -1;
- }
- // Verband
- if ($type=='verband' && ($studiengang_kz==NULL || !is_numeric($studiengang_kz)))
- {
- $this->errormsg='Fehler: Studiengang ist nicht gesetzt';
- return -1;
- }
- // LVA
- if ($type=='lva' && $lva==NULL)
- {
- $this->errormsg='Fehler: LVA-ID ist nicht gesetzt';
- return -1;
- }
- if ($type=='lva' && !is_numeric($lva))
- {
- $this->errormsg='Fehler: LVA-ID ist ungueltig';
- return -1;
- }
- // Type
- if ($type==null)
- {
- $this->errormsg='Fehler: Type in "lehrstunde->load_lehrstunde" ist nicht gesetzt!';
- return -1;
- }
-
- // Zusaetzliche Daten ermitteln
- // Personendaten
- if ($type=='student')
- {
- if(defined('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE') && LVPLAN_LOAD_UEBER_SEMESTERHAELFTE === true)
- $lvplan_load_ueber_semesterhaelfte = true;
- else
- $lvplan_load_ueber_semesterhaelfte = false;
- // Bei Studierenden wird das passende Studiensemester ermittelt und das dazupassende
- // naechstliegende Dadurch wird sichergestellt, dass Einheiten aus den Vorsemestern
- // zB fuer Nachpruefungen oder Einheiten aus den Folgesemestern die vorgezogen werden
- // auch im Plan sichtbar sind.
- if (is_null($this->ss))
- {
- $studiensemester_obj = new studiensemester();
- $this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
-
- if($lvplan_load_ueber_semesterhaelfte)
- {
- $this->ssnext = $studiensemester_obj->getNextFrom($this->ss);
- $this->ssprev = $studiensemester_obj->getPreviousFrom($this->ss);
- }
- else
- $this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
- }
- if(!isset($this->ssnext))
- $this->ssnext = $this->ss;
-
- if($lvplan_load_ueber_semesterhaelfte)
- {
- $sql_query="SELECT studiengang_kz, semester, verband, gruppe
- FROM
- public.tbl_studentlehrverband
- JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
- WHERE student_uid=".$this->db_add_param($uid)."
- AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).",".$this->db_add_param($this->ssprev).")
- ORDER BY start desc LIMIT 2";
- }
- else
- {
- // Lehrverbandszuordnungen der betreffenden Studiensemester laden
- $sql_query="SELECT studiengang_kz, semester, verband, gruppe
- FROM public.tbl_studentlehrverband
- WHERE student_uid=".$this->db_add_param($uid)."
- AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).")";
- }
-
- $verbaende=array();
- if($this->db_query($sql_query))
- {
- $num_rows=$this->db_num_rows();
- if ($num_rows>0)
- {
- while($row = $this->db_fetch_object())
- {
- $verbaende[] = array('studiengang_kz'=>$row->studiengang_kz,
- 'sem'=>$row->semester,
- 'ver'=>$row->verband,
- 'grp'=>$row->gruppe);
- }
- }
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Verbaende';
- return -2;
- }
- // Spezialgruppen ermitteln zu denen die Person zugeteilt ist
- if($lvplan_load_ueber_semesterhaelfte)
- {
- $sql_query="SELECT
- gruppe_kurzbz
- FROM
- public.tbl_benutzergruppe
- WHERE
- uid=".$this->db_add_param($uid)."
- AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
- OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
- OR studiensemester_kurzbz=".$this->db_add_param($this->ssprev)."
- OR studiensemester_kurzbz IS NULL)";
- }
- else
- {
- $sql_query="SELECT
- gruppe_kurzbz
- FROM
- public.tbl_benutzergruppe
- WHERE
- uid=".$this->db_add_param($uid)."
- AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
- OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
- OR studiensemester_kurzbz IS NULL)";
- }
-
- if (!$result_einheit=$this->db_query($sql_query))
- {
- $this->errormsg= 'Fehler beim Laden der Gruppen';
- return false;
- }
- else
- $num_rows_einheit=$this->db_num_rows($result_einheit);
- }
- // Bei Lektoren auch Spezialgruppen wegen Reservierungen abfragen
- if ($type == 'lektor')
- {
- if (is_null($this->ss))
- {
- $studiensemester_obj = new studiensemester();
- $this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
- $this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
- }
- if(!isset($this->ssnext))
- $this->ssnext = $this->ss;
- // Spezialgruppen ermitteln zu denen die Person zugeteilt ist
- $sql_query="SELECT
- gruppe_kurzbz
- FROM
- public.tbl_benutzergruppe
- WHERE
- uid=".$this->db_add_param($uid)."
- AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
- OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
- OR studiensemester_kurzbz IS NULL)";
-
- if (!$result_einheit=$this->db_query($sql_query))
- {
- $this->errormsg='Fehler beim Laden der Gruppen';
- return false;
- }
- else
- $num_rows_einheit=$this->db_num_rows($result_einheit);
- }
-
- // Stundenplandaten ermitteln
- // Abfrage generieren
-
- if ($type!='idList')
- {
- if($alle_unr_mitladen)
- $sql_query_stdplan='SELECT '.$stpl_id.', datum, stunde, unr FROM '.$stpl_view.' stplvw';
- else
- $sql_query_stdplan='SELECT * FROM '.$stpl_view.' stplvw';
- $sql_query_lva="";
- $sql_query=" WHERE datum>=".$this->db_add_param($datum_von)." AND datum<".$this->db_add_param($datum_bis);
- if ($type == 'lva')
- $sql_query_lva=" AND lehrveranstaltung_id=".$this->db_add_param($lva);
- elseif ($type=='lektor')
- {
- $sql_query.=" AND (";
- $sql_query.=" uid=".$this->db_add_param($uid);
- //Reservierungen mit Spezialgruppen laden
- for ($i=0;$i<$num_rows_einheit;$i++)
- {
- $row=$this->db_fetch_object($result_einheit,$i);
- $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
- }
- $sql_query.=')';
- }
- elseif ($type=='ort' && $ort_kurzbz != 'all')
- $sql_query.=" AND ort_kurzbz=".$this->db_add_param($ort_kurzbz);
- elseif ($type=='ort' && $ort_kurzbz == 'all')
- $sql_query.=" AND ort_kurzbz IS NOT NULL AND ort_kurzbz !='Dummy'";
- elseif ($type=='gruppe')
- $sql_query.=" AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
- elseif($type=='fachbereich')
- $sql_query.=" AND fachbereich_kurzbz=".$this->db_add_param($fachbereich_kurzbz);
- elseif($type=='student')
- {
- $sql_query.=" AND (";
- if(is_array($verbaende) && count($verbaende)>0)
- {
- foreach($verbaende as $row_verbaende)
- {
- $studiengang_kz = $row_verbaende['studiengang_kz'];
- $ver = $row_verbaende['ver'];
- $sem = $row_verbaende['sem'];
- $grp = $row_verbaende['grp'];
-
- $sql_query.=" (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
- if ($sem!=null && $sem>=0 && $sem!='')
- $sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
- if ($ver!='0' && $ver!=null && $ver!='')
- $sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
- if ($grp!='0' && $grp!=null && $grp!='')
- $sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
- $sql_query.=" AND gruppe_kurzbz is null";
- $sql_query.=") OR ";
- }
- }
-
- $sql_query.=" 1!=1";
- for ($i=0;$i<$num_rows_einheit;$i++)
- {
- $row=$this->db_fetch_object($result_einheit,$i);
- $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
- }
- $sql_query.=')';
- }
- else
- {
- $sql_query.=" AND ( (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
- if ($sem!=null && $sem>=0 && $sem!='')
- $sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
- if ($ver!='0' && $ver!=null && $ver!='')
- $sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
- if ($grp!='0' && $grp!=null && $grp!='')
- $sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
-
- // Direkte Gruppen werden ausgenommen da sonst Stunden von Verband A in der Ansicht für Verband B
- // mit angezeigt werden weil die direkte Gruppe geladen wird.
- $sql_query.=' AND
- (
- gruppe_kurzbz is null
- OR
- EXISTS(
- SELECT 1 FROM public.tbl_gruppe
- WHERE
- gruppe_kurzbz = stplvw.gruppe_kurzbz
- AND direktinskription=false
- )
- )';
-
- $sql_query.=' )';
-
- for ($i=0;$i<$num_rows_einheit;$i++)
- {
- $row=$this->db_fetch_object($result_einheit,$i);
- $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
- }
- $sql_query.=')';
- }
- $sql_query_orderby=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid';
- $sql_query_stdplan.=$sql_query . $sql_query_lva . $sql_query_orderby;
-
- // Wenn aktiviert, werden alle Stunden mit der gleichen UNR geladen die zur selben Zeit stattfinden
- if($alle_unr_mitladen)
- {
- $sql_query_stdplan="
- WITH lvplan(id, datum, stunde, unr) as
- (
- $sql_query_stdplan
- )
- SELECT
- distinct $stpl_view_ohneschema.*
- FROM
- ".$stpl_view.", lvplan
- WHERE
- $stpl_view_ohneschema.datum=lvplan.datum
- AND $stpl_view_ohneschema.stunde=lvplan.stunde
- AND $stpl_view_ohneschema.unr=lvplan.unr
- ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid
- ";
- }
- }
- else
- {
- $sql_query_stdplan='SELECT * FROM '.$stpl_view;
- $sql_query='';
- foreach ($idList as $id)
- $sql_query.=" OR ".$stpl_id."=".$this->db_add_param($id);
- $sql_query=mb_substr($sql_query,3);
- $sql_query_stdplan.=' WHERE'.$sql_query;
- }
-
- //Datenbankabfrage
- if (!$this->db_query($sql_query_stdplan))
- {
- $this->errormsg = 'Fehler beim Laden der Stundenplandaten';
- return -2;
- }
- $stpl_tbl = $this->db_result;
- $num_rows = $this->db_num_rows($stpl_tbl);
- $this->anzahl=$num_rows;
- //Daten uebernehmen
- for ($i=0;$i<$num_rows;$i++)
- {
- $row=$this->db_fetch_object($stpl_tbl, $i);
-
- $stunde=new lehrstunde();
- $stunde->stundenplan_id=$row->{$stpl_id};
- $stunde->lehreinheit_id=$row->lehreinheit_id;
- $stunde->unr=$row->unr;
- $stunde->lektor_uid=$row->uid;
- $stunde->lektor_kurzbz=$row->lektor;
- $stunde->datum=$row->datum;
- $stunde->stunde=$row->stunde;
- $stunde->ort_kurzbz=$row->ort_kurzbz;
- $stunde->lehrfach=$row->lehrfach;
- $stunde->lehrfach_bez=$row->lehrfach_bez;
- $stunde->lehrfach_id=$row->lehrfach_id;
- $stunde->lehrform=$row->lehrform;
- if ($row->farbe!=' ' && $row->farbe!=null)
- $stunde->farbe=$row->farbe;
- else
- $stunde->farbe='FFFFFF';
- $stunde->studiengang_kz=$row->studiengang_kz;
- $stunde->studiengang=mb_strtoupper($row->stg_typ.$row->stg_kurzbz);
- $stunde->sem=$row->semester;
- $stunde->ver=$row->verband;
- $stunde->grp=$row->gruppe;
- $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
- $stunde->titel=$row->titel;
- $stunde->anmerkung=$row->anmerkung;
- $stunde->anmerkung_lehreinheit=$row->anmerkung_lehreinheit;
- $stunde->updateamum=$row->updateamum;
- $stunde->updatevon=$row->updatevon;
- $stunde->reservierung=false;
- $this->lehrstunden[$i]=$stunde;
-
- }
-
- // Reservierungsdaten ermitteln
- if ($type!='idList' && $type!='fachbereich' && $type!='lva')
- {
- // Datenbankabfrage generieren
- $sql_query_reservierung='SELECT * FROM campus.vw_reservierung stplvw';
- $sql_query_reservierung.=$sql_query . $sql_query_orderby;
-
- //Datenbankabfrage
- if (!$this->db_query($sql_query_reservierung))
- {
- $this->errormsg = 'Fehler beim Laden der Reservierungen';
- return -2;
- }
- $stpl_tbl = $this->db_result;
- $num_rows=$this->db_num_rows($stpl_tbl);
- $this->anzahl+=$num_rows;
-
- //Daten uebernehmen
- for ($i=0;$i<$num_rows;$i++)
- {
- $row = $this->db_fetch_object($stpl_tbl, $i);
-
- $stunde=new lehrstunde();
- $stunde->reservierung=true;
- $stunde->stundenplan_id=$row->reservierung_id;
- $stunde->unr=0;
- $stunde->lektor_uid=$row->uid;
- $stunde->lektor_kurzbz=$row->uid;
- $stunde->datum=$row->datum;
- $stunde->stunde=$row->stunde;
- $stunde->ort_kurzbz=$row->ort_kurzbz;
- //$stunde->lehrfach_id=$row->lehrfach_id;
- $stunde->lehrfach=$row->titel;
- $stunde->lehrfach_bez=$row->beschreibung;
- $stunde->studiengang_kz=$row->studiengang_kz;
- $stunde->studiengang=$row->stg_kurzbz;
- $stunde->sem=$row->semester;
- $stunde->ver=$row->verband;
- $stunde->grp=$row->gruppe;
- $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
- $stunde->titel=$row->titel;
- $stunde->anmerkung=$row->beschreibung;
- $stunde->anmerkung_lehreinheit=$row->beschreibung;
- $stunde->farbe='';
- $this->lehrstunden[]=$stunde;
- }
- }
- return $this->anzahl;
- }
-
- /**
- * @param lehreinheit_id
- * @param uid (mitarbeiter)
- *
- */
- public function load_lehrstunden_le($lehreinheit_id, $uid=null, $stpl_table='stundenplandev')
- {
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
-
- // Stundenplandaten ermitteln
- // Abfrage generieren
- $sql="SELECT * FROM ".$stpl_table." WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
- if ($uid!=null && !is_null($uid))
- $sql.=" AND mitarbeiter_uid=".$this->db_add_param($uid);
-
- //Datenbankabfrage
- if (!$this->db_query($sql))
- {
- $this->errormsg=$this->db_last_error();
- return -1;
- }
- $num_rows=$this->db_num_rows();
- $this->anzahl=$num_rows;
- //Daten uebernehmen
- for ($i=0;$i<$num_rows;$i++)
- {
- $row=$this->db_fetch_object(null, $i);
-
- $stunde=new lehrstunde();
- $stunde->stundenplan_id=$row->{$stpl_id};
- $stunde->lehreinheit_id=$row->lehreinheit_id;
- $stunde->unr=$row->unr;
- $stunde->studiengang_kz=$row->studiengang_kz;
- $stunde->sem=$row->semester;
- $stunde->ver=$row->verband;
- $stunde->grp=$row->gruppe;
- $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
- $stunde->lektor_uid=$row->mitarbeiter_uid;
- $stunde->ort_kurzbz=$row->ort_kurzbz;
- $stunde->datum=$row->datum;
- $stunde->stunde=$row->stunde;
- $stunde->titel=$row->titel;
- $stunde->anmerkung=$row->anmerkung;
- $stunde->fix=$row->fix;
- $stunde->insertamum=$row->insertamum;
- $stunde->insertvon=$row->insertvon;
- $stunde->updateamum=$row->updateamum;
- $stunde->updatevon=$row->updatevon;
- $stunde->reservierung=false;
- $this->lehrstunden[$i]=$stunde;
- }
- return $this->anzahl;
- }
-
-
- /**
- * Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
- * Bei einer Kollision steht der Grund der Kollision in '$this->errormsg'.
- * @param string db_stpl_table Tabllenname des Stundenplans im DBMS
- * @return boolean true=kollision, false=keine kollision
- */
- public function kollision($stpl_table='stundenplandev')
- {
- $variablen_obj = new variable();
- $variablen_obj->loadVariables(get_uid());
-
- $kollision_student = $variablen_obj->variable->kollision_student;
- $ignore_reservierung = $variablen_obj->variable->ignore_reservierung;
- $ignore_zeitsperre = $variablen_obj->variable->ignore_zeitsperre;
-
- //Kollisionspruefung auf Studentenebene
- if($kollision_student=='true' && $this->kollision_student($stpl_table))
- return true;
-
- // Parameter Checken
- // Bezeichnung der Stundenplan-Tabelle und des Keys
- $stpl_id=$stpl_table.TABLE_ID;
- $stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
-
- // Datenbank abfragen
- $sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table
- WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde);
-
- // Direkte Lehreinheitsgruppen kollidieren nicht
- $sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz = ".$stpl_table.".gruppe_kurzbz AND direktinskription=true)";
-
- $sql_query.= " AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
-
- if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)))
- $sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
-
- //Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
- if($kollision_student=='false')
- {
- // Direkte Gruppen kollidieren nicht
- $direktgruppe = false;
- if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
- {
- $grp_obj = new gruppe();
- $grp_obj->load($this->gruppe_kurzbz);
- if($grp_obj->direktinskription)
- {
- $direktgruppe = true;
- }
- }
- if(!$direktgruppe)
- {
- $sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
- if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
- {
- $sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
- }
- else
- {
- if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
- $sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
- if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
- $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
- }
-
- $sql_query.=")";
- }
- }
- $sql_query.=") AND unr!=".$this->db_add_param($this->unr);
-
- if (!$erg_stpl = $this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return true;
- }
-
- $anz=$this->db_num_rows($erg_stpl);
- if ($anz==0)
- {
- // Zeitsperren pruefen
- if($ignore_zeitsperre=='false' && !in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)) && $this->kollision_zeitsperre())
- return true;
-
- // Reservierungen pruefen
- if ($ignore_reservierung=='false' && $this->kollision_reservierung())
- return true;
-
- if($this->kollision_ressource())
- return true;
- return false;
- }
- else
- {
- $row = $this->db_fetch_object($erg_stpl);
- $this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde\n"; //\n".$sql_query
- return true;
- }
- }
-
- /**
- * Prueft ob eine Kollision mit den zugeteilten Ressourcen vorhanden ist
- *
- * @return boolean true=kollision, false=keine kollision
- */
- public function kollision_ressource()
- {
- $qry = "SELECT
- tbl_betriebsmittel.beschreibung, tbl_stundenplandev.ort_kurzbz
- FROM
- lehre.tbl_stundenplan_betriebsmittel
- JOIN lehre.tbl_stundenplandev USING(stundenplandev_id)
- JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id)
- WHERE
- tbl_stundenplandev.datum=".$this->db_add_param($this->datum)."
- AND tbl_stundenplandev.stunde=".$this->db_add_param($this->stunde)."
- AND betriebsmittel_id IN(SELECT betriebsmittel_id FROM lehre.tbl_stundenplan_betriebsmittel WHERE stundenplandev_id=".$this->db_add_param($this->stundenplan_id).")
- AND tbl_stundenplandev.stundenplandev_id<>".$this->db_add_param($this->stundenplan_id);
-
- if($result = $this->db_query($qry))
- {
- if($row = $this->db_fetch_object($result))
- {
- $this->errormsg='Kollision (Ressource)'.$row->beschreibung.'|'.$row->ort_kurzbz;
- return true;
- }
- return false;
- }
- return false;
- }
-
- /**
- * Prueft ob eine Kollision mit den Zeitsperren vorhanden ist
- *
- * @return boolean true=kollision, false=keine kollision
- */
- public function kollision_zeitsperre()
- {
- $sql_query="SELECT
- zeitsperre_id,zeitsperretyp_kurzbz,mitarbeiter_uid AS lektor,vondatum,vonstunde,bisdatum,bisstunde
- FROM campus.tbl_zeitsperre
- WHERE mitarbeiter_uid=".$this->db_add_param($this->lektor_uid)."
- AND (vondatum<".$this->db_add_param($this->datum)." OR (vondatum=".$this->db_add_param($this->datum)." AND (vonstunde<=".$this->db_add_param($this->stunde)." OR vonstunde IS NULL)))
- AND (bisdatum>".$this->db_add_param($this->datum)." OR (bisdatum=".$this->db_add_param($this->datum)." AND (bisstunde>=".$this->db_add_param($this->stunde)." OR bisstunde IS NULL)));";
-
- if (!$erg_zs = $this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return true;
- }
-
- $anz_zs=$this->db_num_rows($erg_zs);
- if ($anz_zs!=0)
- {
- $row = $this->db_fetch_object($erg_zs);
- $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
- return true;
- }
- return false;
- }
-
- /**
- * Prueft ob eine LV-Plan Kollision mit den Reservierungen besteht
- *
- * @return boolean true=kollision, false=keine kollision
- */
- public function kollision_reservierung()
- {
- $sql_query="SELECT
- reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz,
- semester, verband, gruppe, gruppe_kurzbz, datum, stunde
- FROM lehre.vw_reservierung
- WHERE
- datum=".$this->db_add_param($this->datum)." AND
- stunde=".$this->db_add_param($this->stunde)." AND
- (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." OR ";
-
- if (!in_array($this->lektor_uid, unserialize(KOLLISIONSFREIE_USER)))
- $sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid not in(".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER)).")) OR ";
-
- $sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
- if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
- $sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
- if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
- $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
- if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
- $sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
- $sql_query.="))";
-
- if (!$erg_res = $this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return true;
- }
- $anz_res = $this->db_num_rows($erg_res);
-
- if ($anz_res!=0)
- {
- $row = $this->db_fetch_object($erg_res);
- $this->errormsg="Kollision (Reservierung): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde";
- return true;
- }
- return false;
- }
-
- /**
- * Prueft eine Kollision auf Studentenebene
- * Es werden nur die Kollisionen der Studenten abgefragt
- * Raum, Lektor, Reservierung, Zeitsperren, etc werden hier nicht geprueft
- *
- * @param $stpl_table
- * @return boolean true=kollision, false=keine kollision
- */
- public function kollision_student($stpl_table='stundenplandev')
- {
- // Parameter Checken
- // Bezeichnung der Stundenplan-Tabelle
- $stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
-
- $sql_query = "SELECT *
- FROM ".$stpl_table."_student_unr
- WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND student_uid IN(
- SELECT uid FROM public.vw_gruppen WHERE
-
- ";
- $sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem)."
- AND studiensemester_kurzbz=(
- SELECT tbl_studiensemester.studiensemester_kurzbz
- FROM
- public.tbl_studiensemester
- WHERE
- tbl_studiensemester.ende >= ".$this->db_add_param($this->datum)."
- AND tbl_studiensemester.start <=".$this->db_add_param($this->datum)." LIMIT 1)";
- if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
- $sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
- else
- {
- if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
- $sql_query.=" AND (verband=".$this->db_add_param($this->ver).")";
- else
- $sql_query.=" AND (verband IS NULL OR verband='' OR verband=' ')";
- if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
- $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp).")";
- else
- $sql_query.=" AND (gruppe IS NULL OR gruppe='' OR gruppe=' ')";
- }
-
-
- $sql_query.=")) AND unr!=".$this->db_add_param($this->unr);
-
- if (!$erg_stpl=$this->db_query($sql_query))
- {
- $this->errormsg=$sql_query.$this->db_last_error();
- return true;
- }
-
- $anz=$this->db_num_rows($erg_stpl);
-
- if ($anz>0)
- {
- $row = $this->db_fetch_object($erg_stpl);
- $this->errormsg="Kollision Student ($stpl_table): $row->student_uid $row->datum/$row->stunde ";
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * Gruppiert die einzelnen Lehrstunden zusammen
- */
- public function getLehrstundenGruppiert()
- {
- $result = array();
-
- foreach($this->lehrstunden as $row_lehrstunde)
- {
- $found=false;
- //Pruefen ob bereits ein Eintrag vorhanden ist
- //zu dem dazugruppiert werden kann
-
- /*
- Kriterien fuer Gruppierung
- - gleiches Datum
- - gleiche Stunde
- - gleiche UNR
- */
- foreach($result as $key=>$row_result)
- {
- if($row_result->unr==$row_lehrstunde->unr
- && $row_result->datum==$row_lehrstunde->datum
- && $row_result->stunde==$row_lehrstunde->stunde)
- {
- $found=true;
- //gleicher Eintrag gefunden
- $grpidx = count($result[$key]->gruppen);
- $result[$key]->gruppen[$grpidx]->studiengang_kz=$row_lehrstunde->studiengang_kz;
- $result[$key]->gruppen[$grpidx]->sem=$row_lehrstunde->sem;
- $result[$key]->gruppen[$grpidx]->ver=$row_lehrstunde->ver;
- $result[$key]->gruppen[$grpidx]->grp=$row_lehrstunde->grp;
- $result[$key]->gruppen[$grpidx]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
- if(!in_array($row_lehrstunde->lektor_uid, $result[$key]->lektor_uid))
- $result[$key]->lektor_uid[]=$row_lehrstunde->lektor_uid;
- if(!in_array($row_lehrstunde->ort_kurzbz, $result[$key]->ort_kurzbz))
- $result[$key]->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
- break;
- }
- }
-
- if(!$found)
- {
- // Wenn kein passender Eintrag vorhanden ist,
- // wird ein neuer angelegt
- $stunde=new lehrstunde();
- $stunde->stundenplan_id=$row_lehrstunde->stundenplan_id;
- $stunde->lehreinheit_id=$row_lehrstunde->lehreinheit_id;
- $stunde->farbe = (isset($row_lehrstunde->farbe)?$row_lehrstunde->farbe:'FFFFFF');
- $stunde->unr=$row_lehrstunde->unr;
- $stunde->gruppen[0]->studiengang_kz=$row_lehrstunde->studiengang_kz;
- $stunde->gruppen[0]->sem=$row_lehrstunde->sem;
- $stunde->gruppen[0]->ver=$row_lehrstunde->ver;
- $stunde->gruppen[0]->grp=$row_lehrstunde->grp;
- $stunde->gruppen[0]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
- $stunde->lektor_uid[]=$row_lehrstunde->lektor_uid;
- $stunde->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
- $stunde->datum=$row_lehrstunde->datum;
- $stunde->stunde=$row_lehrstunde->stunde;
- $stunde->titel=$row_lehrstunde->titel;
- $stunde->anmerkung=$row_lehrstunde->anmerkung;
- $stunde->fix=$row_lehrstunde->fix;
- $stunde->reservierung=$row_lehrstunde->reservierung;
- $result[]=$stunde;
- }
- }
- return $result;
- }
-
- public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
- {
-
- $qry = "SELECT
- stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
- stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
- array_agg(
- CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
- ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
- END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
- array_agg(ort_kurzbz) as orte,
- array_agg(titel) as titel
- FROM
- lehre.tbl_".$db_stpl_table." as stpl
- JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
- JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
- WHERE ";
-
- if($lehrveranstaltung_id!='')
- {
- $qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
- WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
- AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
-
- }
- elseif($lehreinheit_id!='')
- {
- $qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
- }
- elseif($mitarbeiter_uid!='')
- {
- $qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
- SELECT
- lehreinheit_id
- FROM
- lehre.tbl_lehreinheitmitarbeiter
- JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
- WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
- }
- elseif($student_uid!='')
- {
- $qry.=" lehreinheit_id in (
- SELECT
- lehreinheit_id
- FROM
- campus.vw_student_lehrveranstaltung
- WHERE
- uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
- }
- else
- return false;
-
- $qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
- ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
-
- if($result = $this->db_query($qry))
- {
- while($row = $this->db_fetch_object($result))
- {
- $obj = new stdClass();
-
- $obj->datum = $row->datum;
- $obj->stundevon = $row->stundevon;
- $obj->stundebis = $row->stundebis;
- $obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
- $obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
- $obj->orte = array_unique($this->db_parse_array($row->orte));
- $obj->titel = array_filter(array_unique($this->db_parse_array($row->titel)));
- $obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
- $obj->lehreinheit_id = $row->lehreinheit_id;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- return false;
- }
-}
-
-?>
+new=TRUE;
+ }
+
+ /**
+ * @brief Einen Datensatz aus optional angegebener Stundenplan-Tabelle laden
+ * @param stundenplan_id ID in der Datenbank
+ * @param stpl_table Name der Tabelle in der DB
+ * @return Boolean, Fehlermeldung kommt in das Attribut errormsg
+ */
+ public function load($stundenplan_id,$stpl_table='stundenplandev')
+ {
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_view='lehre.'.VIEW_BEGIN.$stpl_table;
+ $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
+
+ $sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;";
+
+ //Datenbankabfrage
+ if (!$this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return false;
+ }
+
+ $this->anzahl = $this->db_num_rows();
+
+ //Daten uebernehmen
+ if ($this->anzahl!=1)
+ {
+ $this->errormsg='Keinen Datensatz gefunden';
+ return false;
+ }
+ else
+ {
+ $row=$this->db_fetch_object();
+ $this->stundenplan_id=$row->{$stpl_id};
+ $this->unr=$row->unr;
+ $this->lektor_uid=$row->uid;
+ $this->lektor_kurzbz=$row->lektor;
+ $this->datum=$row->datum;
+ $this->stunde=$row->stunde;
+ $this->ort_kurzbz=$row->ort_kurzbz;
+ $this->lehrfach=$row->lehrfach;
+ $this->lehrfach_bez=$row->lehrfach_bez;
+ $this->lehrfach_id=$row->lehrfach_id;
+ $this->lehrform=$row->lehrform;
+ $this->studiengang_kz=$row->studiengang_kz;
+ $this->studiengang=$row->stg_kurzbz;
+ $this->sem=$row->semester;
+ $this->ver=$row->verband;
+ $this->grp=$row->gruppe;
+ $this->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $this->titel=$row->titel;
+ $this->anmerkung=$row->anmerkung;
+ $this->updateamum=$row->updateamum;
+ $this->updatevon=$row->updatevon;
+ $this->new=false;
+ }
+ return true;
+ }
+
+ /**
+ * Datensatz in DB speichern
+ *
+ */
+ public function save($uid, $stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
+ if ($this->new)
+ {
+ // insert
+ }
+ else
+ {
+ // update
+ $sql_query='UPDATE '.$stpl_table;
+ $sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
+ $sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
+ if($this->unr!='')
+ $sql_query.=", unr=".$this->db_add_param($this->unr);
+ $sql_query.=", updateamum=now(), updatevon=".$this->db_add_param($uid);
+ $sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id);
+
+ $this->lastqry = $sql_query;
+ //Datenbankabfrage
+ if (!$this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Erstellt einen Undo Befehl fuer die Speichern funktion
+ *
+ * @param $stpl_table
+ * @return string undo
+ */
+ public function getUndo($stpl_table='stundenplandev')
+ {
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
+
+ $sql_query='UPDATE '.$stpl_table;
+ $sql_query.=" SET datum=".$this->db_add_param($this->datum).", stunde=".$this->db_add_param($this->stunde);
+ $sql_query.=", ort_kurzbz=".$this->db_add_param($this->ort_kurzbz).", mitarbeiter_uid=".$this->db_add_param($this->lektor_uid);
+ $sql_query.=", updateamum=".$this->db_add_param($this->updateamum).", updatevon=".$this->db_add_param($this->updatevon);
+ $sql_query.=" WHERE $stpl_id=".$this->db_add_param($this->stundenplan_id).";";
+
+ return $sql_query;
+ }
+
+ /**
+ * Datensatz aus DB entfernen
+ * @param id ID des Datensatzes in der Tabelle
+ * @param stpl_table Name der Tabelle
+ *
+ */
+ public function delete($id, $stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
+ // Delete SQL vorbereiten
+ $sql_query='DELETE FROM '.$stpl_table;
+ $sql_query.=" WHERE $stpl_id=".$this->db_add_param($id);
+
+ $this->lastqry = $sql_query;
+ //Datenbankrequest
+ if (!$this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return false;
+ }
+ else
+ return true;
+ }
+
+ /**
+ * Laedt Lehrstunden
+ *
+ * @param type (student, lektor, lehrverband, gruppe, ort, ....)
+ * @param datum_von (inklusive) Startdatum der Abfrage
+ * @param datum_bis (exklusive) Enddatum der Abfrage
+ * @param uid (des Lektors oder Studenten) kann auch NULL sein
+ * @param ort_kurzbz (Kurzbezeichnung des Orts) kann auch NULL sein
+ * @param studiengang_kz
+ * @param sem
+ * @param ver
+ * @param grp
+ * @param gruppe_kurzbz
+ *
+ */
+ public function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $gruppe_kurzbz=NULL, $stpl_view='stundenplan', $idList=null, $fachbereich_kurzbz=null, $lva=NULL, $alle_unr_mitladen=false)
+ {
+ $num_rows_einheit=0;
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_view.TABLE_ID;
+ $stpl_view_ohneschema=VIEW_BEGIN.$stpl_view;
+ $stpl_view='lehre.'.VIEW_BEGIN.$stpl_view;
+
+
+ // Datum im Format YYYY-MM-TT ?
+ if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_von) )
+ {
+ $this->errormsg='Fehler: Startdatum hat falsches Format!';
+ return -1;
+ }
+ if ($datum_bis!=null)
+ {
+ if (!preg_match("/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})/",$datum_bis) )
+ {
+ $this->errormsg='Fehler: Enddatum hat falsches Format!';
+ return -1;
+ }
+ }
+ else
+ $datum_bis=$datum_von;
+
+ // Person
+ if (($type=='student' || $type=='lektor') && $uid==NULL)
+ {
+ $this->errormsg='Fehler: uid der Person ist nicht gesetzt';
+ return -1;
+ }
+ // Ort
+ if ($type=='ort' && $ort_kurzbz==NULL)
+ {
+ $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt';
+ return -1;
+ }
+ // Gruppe
+ if ($type=='gruppe' && $gruppe_kurzbz==NULL)
+ {
+ $this->errormsg='Fehler: Kurzbezeichnung der Gruppe ist nicht gesetzt';
+ return -1;
+ }
+ // Verband
+ if ($type=='verband' && ($studiengang_kz==NULL || !is_numeric($studiengang_kz)))
+ {
+ $this->errormsg='Fehler: Studiengang ist nicht gesetzt';
+ return -1;
+ }
+ // LVA
+ if ($type=='lva' && $lva==NULL)
+ {
+ $this->errormsg='Fehler: LVA-ID ist nicht gesetzt';
+ return -1;
+ }
+ if ($type=='lva' && !is_numeric($lva))
+ {
+ $this->errormsg='Fehler: LVA-ID ist ungueltig';
+ return -1;
+ }
+ // Type
+ if ($type==null)
+ {
+ $this->errormsg='Fehler: Type in "lehrstunde->load_lehrstunde" ist nicht gesetzt!';
+ return -1;
+ }
+
+ // Zusaetzliche Daten ermitteln
+ // Personendaten
+ if ($type=='student')
+ {
+ if(defined('LVPLAN_LOAD_UEBER_SEMESTERHAELFTE') && LVPLAN_LOAD_UEBER_SEMESTERHAELFTE === true)
+ $lvplan_load_ueber_semesterhaelfte = true;
+ else
+ $lvplan_load_ueber_semesterhaelfte = false;
+ // Bei Studierenden wird das passende Studiensemester ermittelt und das dazupassende
+ // naechstliegende Dadurch wird sichergestellt, dass Einheiten aus den Vorsemestern
+ // zB fuer Nachpruefungen oder Einheiten aus den Folgesemestern die vorgezogen werden
+ // auch im Plan sichtbar sind.
+ if (is_null($this->ss))
+ {
+ $studiensemester_obj = new studiensemester();
+ $this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
+
+ if($lvplan_load_ueber_semesterhaelfte)
+ {
+ $this->ssnext = $studiensemester_obj->getNextFrom($this->ss);
+ $this->ssprev = $studiensemester_obj->getPreviousFrom($this->ss);
+ }
+ else
+ $this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
+ }
+ if(!isset($this->ssnext))
+ $this->ssnext = $this->ss;
+
+ if($lvplan_load_ueber_semesterhaelfte)
+ {
+ $sql_query="SELECT studiengang_kz, semester, verband, gruppe
+ FROM
+ public.tbl_studentlehrverband
+ JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
+ WHERE student_uid=".$this->db_add_param($uid)."
+ AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).",".$this->db_add_param($this->ssprev).")
+ ORDER BY start desc LIMIT 2";
+ }
+ else
+ {
+ // Lehrverbandszuordnungen der betreffenden Studiensemester laden
+ $sql_query="SELECT studiengang_kz, semester, verband, gruppe
+ FROM public.tbl_studentlehrverband
+ WHERE student_uid=".$this->db_add_param($uid)."
+ AND studiensemester_kurzbz in(".$this->db_add_param($this->ss).",".$this->db_add_param($this->ssnext).")";
+ }
+
+ $verbaende=array();
+ if($this->db_query($sql_query))
+ {
+ $num_rows=$this->db_num_rows();
+ if ($num_rows>0)
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $verbaende[] = array('studiengang_kz'=>$row->studiengang_kz,
+ 'sem'=>$row->semester,
+ 'ver'=>$row->verband,
+ 'grp'=>$row->gruppe);
+ }
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Verbaende';
+ return -2;
+ }
+ // Spezialgruppen ermitteln zu denen die Person zugeteilt ist
+ if($lvplan_load_ueber_semesterhaelfte)
+ {
+ $sql_query="SELECT
+ gruppe_kurzbz
+ FROM
+ public.tbl_benutzergruppe
+ WHERE
+ uid=".$this->db_add_param($uid)."
+ AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
+ OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
+ OR studiensemester_kurzbz=".$this->db_add_param($this->ssprev)."
+ OR studiensemester_kurzbz IS NULL)";
+ }
+ else
+ {
+ $sql_query="SELECT
+ gruppe_kurzbz
+ FROM
+ public.tbl_benutzergruppe
+ WHERE
+ uid=".$this->db_add_param($uid)."
+ AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
+ OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
+ OR studiensemester_kurzbz IS NULL)";
+ }
+
+ if (!$result_einheit=$this->db_query($sql_query))
+ {
+ $this->errormsg= 'Fehler beim Laden der Gruppen';
+ return false;
+ }
+ else
+ $num_rows_einheit=$this->db_num_rows($result_einheit);
+ }
+ // Bei Lektoren auch Spezialgruppen wegen Reservierungen abfragen
+ if ($type == 'lektor')
+ {
+ if (is_null($this->ss))
+ {
+ $studiensemester_obj = new studiensemester();
+ $this->ss = $studiensemester_obj->getSemesterFromDatum($datum_von,true);
+ $this->ssnext = $studiensemester_obj->getNearestTo($this->ss,$datum_von);
+ }
+ if(!isset($this->ssnext))
+ $this->ssnext = $this->ss;
+ // Spezialgruppen ermitteln zu denen die Person zugeteilt ist
+ $sql_query="SELECT
+ gruppe_kurzbz
+ FROM
+ public.tbl_benutzergruppe
+ WHERE
+ uid=".$this->db_add_param($uid)."
+ AND (studiensemester_kurzbz=".$this->db_add_param($this->ss)."
+ OR studiensemester_kurzbz=".$this->db_add_param($this->ssnext)."
+ OR studiensemester_kurzbz IS NULL)";
+
+ if (!$result_einheit=$this->db_query($sql_query))
+ {
+ $this->errormsg='Fehler beim Laden der Gruppen';
+ return false;
+ }
+ else
+ $num_rows_einheit=$this->db_num_rows($result_einheit);
+ }
+
+ // Stundenplandaten ermitteln
+ // Abfrage generieren
+
+ if ($type!='idList')
+ {
+ if($alle_unr_mitladen)
+ $sql_query_stdplan='SELECT '.$stpl_id.', datum, stunde, unr FROM '.$stpl_view.' stplvw';
+ else
+ $sql_query_stdplan='SELECT * FROM '.$stpl_view.' stplvw';
+ $sql_query_lva="";
+ $sql_query=" WHERE datum>=".$this->db_add_param($datum_von)." AND datum<".$this->db_add_param($datum_bis);
+ if ($type == 'lva')
+ $sql_query_lva=" AND lehrveranstaltung_id=".$this->db_add_param($lva);
+ elseif ($type=='lektor')
+ {
+ $sql_query.=" AND (";
+ $sql_query.=" uid=".$this->db_add_param($uid);
+ //Reservierungen mit Spezialgruppen laden
+ for ($i=0;$i<$num_rows_einheit;$i++)
+ {
+ $row=$this->db_fetch_object($result_einheit,$i);
+ $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
+ }
+ $sql_query.=')';
+ }
+ elseif ($type=='ort' && $ort_kurzbz != 'all')
+ $sql_query.=" AND ort_kurzbz=".$this->db_add_param($ort_kurzbz);
+ elseif ($type=='ort' && $ort_kurzbz == 'all')
+ $sql_query.=" AND ort_kurzbz IS NOT NULL AND ort_kurzbz !='Dummy'";
+ elseif ($type=='gruppe')
+ $sql_query.=" AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
+ elseif($type=='fachbereich')
+ $sql_query.=" AND fachbereich_kurzbz=".$this->db_add_param($fachbereich_kurzbz);
+ elseif($type=='student')
+ {
+ $sql_query.=" AND (";
+ if(is_array($verbaende) && count($verbaende)>0)
+ {
+ foreach($verbaende as $row_verbaende)
+ {
+ $studiengang_kz = $row_verbaende['studiengang_kz'];
+ $ver = $row_verbaende['ver'];
+ $sem = $row_verbaende['sem'];
+ $grp = $row_verbaende['grp'];
+
+ $sql_query.=" (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
+ if ($sem!=null && $sem>=0 && $sem!='')
+ $sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
+ if ($ver!='0' && $ver!=null && $ver!='')
+ $sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
+ if ($grp!='0' && $grp!=null && $grp!='')
+ $sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
+ $sql_query.=" AND gruppe_kurzbz is null";
+ $sql_query.=") OR ";
+ }
+ }
+
+ $sql_query.=" 1!=1";
+ for ($i=0;$i<$num_rows_einheit;$i++)
+ {
+ $row=$this->db_fetch_object($result_einheit,$i);
+ $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
+ }
+ $sql_query.=')';
+ }
+ else
+ {
+ $sql_query.=" AND ( (studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
+ if ($sem!=null && $sem>=0 && $sem!='')
+ $sql_query.=" AND (semester=".$this->db_add_param($sem)." OR semester IS NULL)";
+ if ($ver!='0' && $ver!=null && $ver!='')
+ $sql_query.=" AND (verband=".$this->db_add_param($ver)." OR verband IS NULL OR verband='0' OR verband='')";
+ if ($grp!='0' && $grp!=null && $grp!='')
+ $sql_query.=" AND (gruppe=".$this->db_add_param($grp)." OR gruppe IS NULL OR gruppe='0' OR gruppe='')";
+
+ // Direkte Gruppen werden ausgenommen da sonst Stunden von Verband A in der Ansicht für Verband B
+ // mit angezeigt werden weil die direkte Gruppe geladen wird.
+ $sql_query.=' AND
+ (
+ gruppe_kurzbz is null
+ OR
+ EXISTS(
+ SELECT 1 FROM public.tbl_gruppe
+ WHERE
+ gruppe_kurzbz = stplvw.gruppe_kurzbz
+ AND direktinskription=false
+ )
+ )';
+
+ $sql_query.=' )';
+
+ for ($i=0;$i<$num_rows_einheit;$i++)
+ {
+ $row=$this->db_fetch_object($result_einheit,$i);
+ $sql_query.=" OR gruppe_kurzbz=".$this->db_add_param($row->gruppe_kurzbz);
+ }
+ $sql_query.=')';
+ }
+ $sql_query_orderby=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid';
+ $sql_query_stdplan.=$sql_query . $sql_query_lva . $sql_query_orderby;
+
+ // Wenn aktiviert, werden alle Stunden mit der gleichen UNR geladen die zur selben Zeit stattfinden
+ if($alle_unr_mitladen)
+ {
+ $sql_query_stdplan="
+ WITH lvplan(id, datum, stunde, unr) as
+ (
+ $sql_query_stdplan
+ )
+ SELECT
+ distinct $stpl_view_ohneschema.*
+ FROM
+ ".$stpl_view.", lvplan
+ WHERE
+ $stpl_view_ohneschema.datum=lvplan.datum
+ AND $stpl_view_ohneschema.stunde=lvplan.stunde
+ AND $stpl_view_ohneschema.unr=lvplan.unr
+ ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, uid
+ ";
+ }
+ }
+ else
+ {
+ $sql_query_stdplan='SELECT * FROM '.$stpl_view;
+ $sql_query='';
+ foreach ($idList as $id)
+ $sql_query.=" OR ".$stpl_id."=".$this->db_add_param($id);
+ $sql_query=mb_substr($sql_query,3);
+ $sql_query_stdplan.=' WHERE'.$sql_query;
+ }
+
+ //Datenbankabfrage
+ if (!$this->db_query($sql_query_stdplan))
+ {
+ $this->errormsg = 'Fehler beim Laden der Stundenplandaten';
+ return -2;
+ }
+ $stpl_tbl = $this->db_result;
+ $num_rows = $this->db_num_rows($stpl_tbl);
+ $this->anzahl=$num_rows;
+ //Daten uebernehmen
+ for ($i=0;$i<$num_rows;$i++)
+ {
+ $row=$this->db_fetch_object($stpl_tbl, $i);
+
+ $stunde=new lehrstunde();
+ $stunde->stundenplan_id=$row->{$stpl_id};
+ $stunde->lehreinheit_id=$row->lehreinheit_id;
+ $stunde->unr=$row->unr;
+ $stunde->lektor_uid=$row->uid;
+ $stunde->lektor_kurzbz=$row->lektor;
+ $stunde->datum=$row->datum;
+ $stunde->stunde=$row->stunde;
+ $stunde->ort_kurzbz=$row->ort_kurzbz;
+ $stunde->lehrfach=$row->lehrfach;
+ $stunde->lehrfach_bez=$row->lehrfach_bez;
+ $stunde->lehrfach_id=$row->lehrfach_id;
+ $stunde->lehrform=$row->lehrform;
+ if ($row->farbe!=' ' && $row->farbe!=null)
+ $stunde->farbe=$row->farbe;
+ else
+ $stunde->farbe='FFFFFF';
+ $stunde->studiengang_kz=$row->studiengang_kz;
+ $stunde->studiengang=mb_strtoupper($row->stg_typ.$row->stg_kurzbz);
+ $stunde->sem=$row->semester;
+ $stunde->ver=$row->verband;
+ $stunde->grp=$row->gruppe;
+ $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $stunde->titel=$row->titel;
+ $stunde->anmerkung=$row->anmerkung;
+ $stunde->anmerkung_lehreinheit=$row->anmerkung_lehreinheit;
+ $stunde->updateamum=$row->updateamum;
+ $stunde->updatevon=$row->updatevon;
+ $stunde->reservierung=false;
+ $this->lehrstunden[$i]=$stunde;
+
+ }
+
+ // Reservierungsdaten ermitteln
+ if ($type!='idList' && $type!='fachbereich' && $type!='lva')
+ {
+ // Datenbankabfrage generieren
+ $sql_query_reservierung='SELECT * FROM campus.vw_reservierung stplvw';
+ $sql_query_reservierung.=$sql_query . $sql_query_orderby;
+
+ //Datenbankabfrage
+ if (!$this->db_query($sql_query_reservierung))
+ {
+ $this->errormsg = 'Fehler beim Laden der Reservierungen';
+ return -2;
+ }
+ $stpl_tbl = $this->db_result;
+ $num_rows=$this->db_num_rows($stpl_tbl);
+ $this->anzahl+=$num_rows;
+
+ //Daten uebernehmen
+ for ($i=0;$i<$num_rows;$i++)
+ {
+ $row = $this->db_fetch_object($stpl_tbl, $i);
+
+ $stunde=new lehrstunde();
+ $stunde->reservierung=true;
+ $stunde->stundenplan_id=$row->reservierung_id;
+ $stunde->unr=0;
+ $stunde->lektor_uid=$row->uid;
+ $stunde->lektor_kurzbz=$row->uid;
+ $stunde->datum=$row->datum;
+ $stunde->stunde=$row->stunde;
+ $stunde->ort_kurzbz=$row->ort_kurzbz;
+ //$stunde->lehrfach_id=$row->lehrfach_id;
+ $stunde->lehrfach=$row->titel;
+ $stunde->lehrfach_bez=$row->beschreibung;
+ $stunde->studiengang_kz=$row->studiengang_kz;
+ $stunde->studiengang=$row->stg_kurzbz;
+ $stunde->sem=$row->semester;
+ $stunde->ver=$row->verband;
+ $stunde->grp=$row->gruppe;
+ $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $stunde->titel=$row->titel;
+ $stunde->anmerkung=$row->beschreibung;
+ $stunde->anmerkung_lehreinheit=$row->beschreibung;
+ $stunde->farbe='';
+ $this->lehrstunden[]=$stunde;
+ }
+ }
+ return $this->anzahl;
+ }
+
+ /**
+ * @param lehreinheit_id
+ * @param uid (mitarbeiter)
+ *
+ */
+ public function load_lehrstunden_le($lehreinheit_id, $uid=null, $stpl_table='stundenplandev')
+ {
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table='lehre.'.TABLE_BEGIN.$stpl_table;
+
+ // Stundenplandaten ermitteln
+ // Abfrage generieren
+ $sql="SELECT * FROM ".$stpl_table." WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
+ if ($uid!=null && !is_null($uid))
+ $sql.=" AND mitarbeiter_uid=".$this->db_add_param($uid);
+
+ //Datenbankabfrage
+ if (!$this->db_query($sql))
+ {
+ $this->errormsg=$this->db_last_error();
+ return -1;
+ }
+ $num_rows=$this->db_num_rows();
+ $this->anzahl=$num_rows;
+ //Daten uebernehmen
+ for ($i=0;$i<$num_rows;$i++)
+ {
+ $row=$this->db_fetch_object(null, $i);
+
+ $stunde=new lehrstunde();
+ $stunde->stundenplan_id=$row->{$stpl_id};
+ $stunde->lehreinheit_id=$row->lehreinheit_id;
+ $stunde->unr=$row->unr;
+ $stunde->studiengang_kz=$row->studiengang_kz;
+ $stunde->sem=$row->semester;
+ $stunde->ver=$row->verband;
+ $stunde->grp=$row->gruppe;
+ $stunde->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $stunde->lektor_uid=$row->mitarbeiter_uid;
+ $stunde->ort_kurzbz=$row->ort_kurzbz;
+ $stunde->datum=$row->datum;
+ $stunde->stunde=$row->stunde;
+ $stunde->titel=$row->titel;
+ $stunde->anmerkung=$row->anmerkung;
+ $stunde->fix=$row->fix;
+ $stunde->insertamum=$row->insertamum;
+ $stunde->insertvon=$row->insertvon;
+ $stunde->updateamum=$row->updateamum;
+ $stunde->updatevon=$row->updatevon;
+ $stunde->reservierung=false;
+ $this->lehrstunden[$i]=$stunde;
+ }
+ return $this->anzahl;
+ }
+
+
+ /**
+ * Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan.
+ * Bei einer Kollision steht der Grund der Kollision in '$this->errormsg'.
+ * @param string db_stpl_table Tabllenname des Stundenplans im DBMS
+ * @return boolean true=kollision, false=keine kollision
+ */
+ public function kollision($stpl_table='stundenplandev')
+ {
+ $variablen_obj = new variable();
+ $variablen_obj->loadVariables(get_uid());
+
+ $kollision_student = $variablen_obj->variable->kollision_student;
+ $ignore_reservierung = $variablen_obj->variable->ignore_reservierung;
+ $ignore_zeitsperre = $variablen_obj->variable->ignore_zeitsperre;
+
+ //Kollisionspruefung auf Studentenebene
+ if($kollision_student=='true' && $this->kollision_student($stpl_table))
+ return true;
+
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle und des Keys
+ $stpl_id=$stpl_table.TABLE_ID;
+ $stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
+
+ // Datenbank abfragen
+ $sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table
+ WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde);
+
+ // Direkte Lehreinheitsgruppen kollidieren nicht
+ $sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz = ".$stpl_table.".gruppe_kurzbz AND direktinskription=true)";
+
+ $sql_query.= " AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
+
+ if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)))
+ $sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
+
+ //Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
+ if($kollision_student=='false')
+ {
+ // Direkte Gruppen kollidieren nicht
+ $direktgruppe = false;
+ if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ {
+ $grp_obj = new gruppe();
+ $grp_obj->load($this->gruppe_kurzbz);
+ if($grp_obj->direktinskription)
+ {
+ $direktgruppe = true;
+ }
+ }
+ if(!$direktgruppe)
+ {
+ $sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
+ if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ {
+ $sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
+ }
+ else
+ {
+ if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
+ $sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
+ if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
+ $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
+ }
+
+ $sql_query.=")";
+ }
+ }
+ $sql_query.=") AND unr!=".$this->db_add_param($this->unr);
+
+ if (!$erg_stpl = $this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return true;
+ }
+
+ $anz=$this->db_num_rows($erg_stpl);
+ if ($anz==0)
+ {
+ // Zeitsperren pruefen
+ if($ignore_zeitsperre=='false' && !in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)) && $this->kollision_zeitsperre())
+ return true;
+
+ // Reservierungen pruefen
+ if ($ignore_reservierung=='false' && $this->kollision_reservierung())
+ return true;
+
+ if($this->kollision_ressource())
+ return true;
+ return false;
+ }
+ else
+ {
+ $row = $this->db_fetch_object($erg_stpl);
+ $this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde\n"; //\n".$sql_query
+ return true;
+ }
+ }
+
+ /**
+ * Prueft ob eine Kollision mit den zugeteilten Ressourcen vorhanden ist
+ *
+ * @return boolean true=kollision, false=keine kollision
+ */
+ public function kollision_ressource()
+ {
+ $qry = "SELECT
+ tbl_betriebsmittel.beschreibung, tbl_stundenplandev.ort_kurzbz
+ FROM
+ lehre.tbl_stundenplan_betriebsmittel
+ JOIN lehre.tbl_stundenplandev USING(stundenplandev_id)
+ JOIN wawi.tbl_betriebsmittel USING(betriebsmittel_id)
+ WHERE
+ tbl_stundenplandev.datum=".$this->db_add_param($this->datum)."
+ AND tbl_stundenplandev.stunde=".$this->db_add_param($this->stunde)."
+ AND betriebsmittel_id IN(SELECT betriebsmittel_id FROM lehre.tbl_stundenplan_betriebsmittel WHERE stundenplandev_id=".$this->db_add_param($this->stundenplan_id).")
+ AND tbl_stundenplandev.stundenplandev_id<>".$this->db_add_param($this->stundenplan_id);
+
+ if($result = $this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object($result))
+ {
+ $this->errormsg='Kollision (Ressource)'.$row->beschreibung.'|'.$row->ort_kurzbz;
+ return true;
+ }
+ return false;
+ }
+ return false;
+ }
+
+ /**
+ * Prueft ob eine Kollision mit den Zeitsperren vorhanden ist
+ *
+ * @return boolean true=kollision, false=keine kollision
+ */
+ public function kollision_zeitsperre()
+ {
+ $sql_query="SELECT
+ zeitsperre_id,zeitsperretyp_kurzbz,mitarbeiter_uid AS lektor,vondatum,vonstunde,bisdatum,bisstunde
+ FROM campus.tbl_zeitsperre
+ WHERE mitarbeiter_uid=".$this->db_add_param($this->lektor_uid)."
+ AND (vondatum<".$this->db_add_param($this->datum)." OR (vondatum=".$this->db_add_param($this->datum)." AND (vonstunde<=".$this->db_add_param($this->stunde)." OR vonstunde IS NULL)))
+ AND (bisdatum>".$this->db_add_param($this->datum)." OR (bisdatum=".$this->db_add_param($this->datum)." AND (bisstunde>=".$this->db_add_param($this->stunde)." OR bisstunde IS NULL)));";
+
+ if (!$erg_zs = $this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return true;
+ }
+
+ $anz_zs=$this->db_num_rows($erg_zs);
+ if ($anz_zs!=0)
+ {
+ $row = $this->db_fetch_object($erg_zs);
+ $this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Prueft ob eine LV-Plan Kollision mit den Reservierungen besteht
+ *
+ * @return boolean true=kollision, false=keine kollision
+ */
+ public function kollision_reservierung()
+ {
+ $sql_query="SELECT
+ reservierung_id AS id, uid AS lektor, stg_kurzbz, ort_kurzbz,
+ semester, verband, gruppe, gruppe_kurzbz, datum, stunde
+ FROM lehre.vw_reservierung
+ WHERE
+ datum=".$this->db_add_param($this->datum)." AND
+ stunde=".$this->db_add_param($this->stunde)." AND
+ (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." OR ";
+
+ if (!in_array($this->lektor_uid, unserialize(KOLLISIONSFREIE_USER)))
+ $sql_query.="(uid=".$this->db_add_param($this->lektor_uid)." AND uid not in(".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER)).")) OR ";
+
+ $sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
+ if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
+ $sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
+ if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
+ $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
+ if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ $sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
+ $sql_query.="))";
+
+ if (!$erg_res = $this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return true;
+ }
+ $anz_res = $this->db_num_rows($erg_res);
+
+ if ($anz_res!=0)
+ {
+ $row = $this->db_fetch_object($erg_res);
+ $this->errormsg="Kollision (Reservierung): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde";
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Prueft eine Kollision auf Studentenebene
+ * Es werden nur die Kollisionen der Studenten abgefragt
+ * Raum, Lektor, Reservierung, Zeitsperren, etc werden hier nicht geprueft
+ *
+ * @param $stpl_table
+ * @return boolean true=kollision, false=keine kollision
+ */
+ public function kollision_student($stpl_table='stundenplandev')
+ {
+ // Parameter Checken
+ // Bezeichnung der Stundenplan-Tabelle
+ $stpl_table='lehre.'.VIEW_BEGIN.$stpl_table;
+
+ $sql_query = "SELECT *
+ FROM ".$stpl_table."_student_unr
+ WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND student_uid IN(
+ SELECT uid FROM public.vw_gruppen WHERE
+
+ ";
+ $sql_query.="(studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem)."
+ AND studiensemester_kurzbz=(
+ SELECT tbl_studiensemester.studiensemester_kurzbz
+ FROM
+ public.tbl_studiensemester
+ WHERE
+ tbl_studiensemester.ende >= ".$this->db_add_param($this->datum)."
+ AND tbl_studiensemester.start <=".$this->db_add_param($this->datum)." LIMIT 1)";
+ if ($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
+ $sql_query.=" AND (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
+ else
+ {
+ if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
+ $sql_query.=" AND (verband=".$this->db_add_param($this->ver).")";
+ else
+ $sql_query.=" AND (verband IS NULL OR verband='' OR verband=' ')";
+ if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
+ $sql_query.=" AND (gruppe=".$this->db_add_param($this->grp).")";
+ else
+ $sql_query.=" AND (gruppe IS NULL OR gruppe='' OR gruppe=' ')";
+ }
+
+
+ $sql_query.=")) AND unr!=".$this->db_add_param($this->unr);
+
+ if (!$erg_stpl=$this->db_query($sql_query))
+ {
+ $this->errormsg=$sql_query.$this->db_last_error();
+ return true;
+ }
+
+ $anz=$this->db_num_rows($erg_stpl);
+
+ if ($anz>0)
+ {
+ $row = $this->db_fetch_object($erg_stpl);
+ $this->errormsg="Kollision Student ($stpl_table): $row->student_uid $row->datum/$row->stunde ";
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Gruppiert die einzelnen Lehrstunden zusammen
+ */
+ public function getLehrstundenGruppiert()
+ {
+ $result = array();
+
+ foreach($this->lehrstunden as $row_lehrstunde)
+ {
+ $found=false;
+ //Pruefen ob bereits ein Eintrag vorhanden ist
+ //zu dem dazugruppiert werden kann
+
+ /*
+ Kriterien fuer Gruppierung
+ - gleiches Datum
+ - gleiche Stunde
+ - gleiche UNR
+ */
+ foreach($result as $key=>$row_result)
+ {
+ if($row_result->unr==$row_lehrstunde->unr
+ && $row_result->datum==$row_lehrstunde->datum
+ && $row_result->stunde==$row_lehrstunde->stunde)
+ {
+ $found=true;
+ //gleicher Eintrag gefunden
+ $grpidx = count($result[$key]->gruppen);
+ $result[$key]->gruppen[$grpidx]->studiengang_kz=$row_lehrstunde->studiengang_kz;
+ $result[$key]->gruppen[$grpidx]->sem=$row_lehrstunde->sem;
+ $result[$key]->gruppen[$grpidx]->ver=$row_lehrstunde->ver;
+ $result[$key]->gruppen[$grpidx]->grp=$row_lehrstunde->grp;
+ $result[$key]->gruppen[$grpidx]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
+ if(!in_array($row_lehrstunde->lektor_uid, $result[$key]->lektor_uid))
+ $result[$key]->lektor_uid[]=$row_lehrstunde->lektor_uid;
+ if(!in_array($row_lehrstunde->ort_kurzbz, $result[$key]->ort_kurzbz))
+ $result[$key]->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
+ break;
+ }
+ }
+
+ if(!$found)
+ {
+ // Wenn kein passender Eintrag vorhanden ist,
+ // wird ein neuer angelegt
+ $stunde=new lehrstunde();
+ $stunde->stundenplan_id=$row_lehrstunde->stundenplan_id;
+ $stunde->lehreinheit_id=$row_lehrstunde->lehreinheit_id;
+ $stunde->farbe = (isset($row_lehrstunde->farbe)?$row_lehrstunde->farbe:'FFFFFF');
+ $stunde->unr=$row_lehrstunde->unr;
+ $stunde->gruppen[0]->studiengang_kz=$row_lehrstunde->studiengang_kz;
+ $stunde->gruppen[0]->sem=$row_lehrstunde->sem;
+ $stunde->gruppen[0]->ver=$row_lehrstunde->ver;
+ $stunde->gruppen[0]->grp=$row_lehrstunde->grp;
+ $stunde->gruppen[0]->gruppe_kurzbz=$row_lehrstunde->gruppe_kurzbz;
+ $stunde->lektor_uid[]=$row_lehrstunde->lektor_uid;
+ $stunde->ort_kurzbz[]=$row_lehrstunde->ort_kurzbz;
+ $stunde->datum=$row_lehrstunde->datum;
+ $stunde->stunde=$row_lehrstunde->stunde;
+ $stunde->titel=$row_lehrstunde->titel;
+ $stunde->anmerkung=$row_lehrstunde->anmerkung;
+ $stunde->fix=$row_lehrstunde->fix;
+ $stunde->reservierung=$row_lehrstunde->reservierung;
+ $result[]=$stunde;
+ }
+ }
+ return $result;
+ }
+
+ public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
+ {
+
+ $qry = "SELECT
+ stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
+ stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
+ array_agg(
+ CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
+ ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
+ END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
+ array_agg(ort_kurzbz) as orte,
+ array_agg(titel) as titel
+ FROM
+ lehre.tbl_".$db_stpl_table." as stpl
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
+ WHERE ";
+
+ if($lehrveranstaltung_id!='')
+ {
+ $qry.=" lehreinheit_id in(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
+ WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
+ AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
+
+ }
+ elseif($lehreinheit_id!='')
+ {
+ $qry.=" lehreinheit_id=".$this->db_add_param($lehreinheit_id);
+ }
+ elseif($mitarbeiter_uid!='')
+ {
+ $qry.=" mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND lehreinheit_id IN(
+ SELECT
+ lehreinheit_id
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
+ }
+ elseif($student_uid!='')
+ {
+ $qry.=" lehreinheit_id in (
+ SELECT
+ lehreinheit_id
+ FROM
+ campus.vw_student_lehrveranstaltung
+ WHERE
+ uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).")";
+ }
+ else
+ return false;
+
+ $qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
+ ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
+
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $obj = new stdClass();
+
+ $obj->datum = $row->datum;
+ $obj->stundevon = $row->stundevon;
+ $obj->stundebis = $row->stundebis;
+ $obj->gruppen = array_unique($this->db_parse_array($row->gruppen));
+ $obj->lektoren = array_unique($this->db_parse_array($row->lektoren));
+ $obj->orte = array_unique($this->db_parse_array($row->orte));
+ $obj->titel = array_filter(array_unique($this->db_parse_array($row->titel)));
+ $obj->lehrfach_bezeichnung = $row->lehrfach_bezeichnung;
+ $obj->lehreinheit_id = $row->lehreinheit_id;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ return false;
+ }
+}
+
+?>
diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php
index c8154691d..6cff4c75f 100644
--- a/include/lehrveranstaltung.class.php
+++ b/include/lehrveranstaltung.class.php
@@ -1,5 +1,5 @@
,
- * Andreas Oesterreicher and
- * Rudolf Hangl .
- * Stefan Puraner
+ * Andreas Oesterreicher ,
+ * Rudolf Hangl ,
+ * Stefan Puraner and
+ * Manuela Thamer
*/
require_once(dirname(__FILE__) . '/basis_db.class.php');
require_once(dirname(__FILE__) . '/functions.inc.php');
@@ -2458,6 +2459,44 @@ class lehrveranstaltung extends basis_db
}
}
+ /**
+ * Laedt den LV-Leiter einer Lehrveranstaltung
+ * ist keiner der Lektoren als LV-Leitung eingetragen, wird Null zurückgegeben
+ * @param int $lehrveranstaltung_id ID der Lehrveranstaltung.
+ * @param char $studiensemester_kurzbz Studiensemester.
+ * @return char $mitarbeiter_uid UID des Mitarbeiters oder NULL, wenn keine LV-Leitung vorhanden
+ */
+ public function getEingetrageneLVLeitung($lehrveranstaltung_id, $studiensemester_kurzbz)
+ {
+ $qry = "SELECT
+ mitarbeiter_uid
+ FROM
+ lehre.tbl_lehreinheit
+ JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
+ WHERE
+ tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id)."
+ AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ AND lehrfunktion_kurzbz='LV-Leitung';";
+
+ if($result = $this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object($result))
+ {
+ return $row->mitarbeiter_uid;
+ }
+ else
+ {
+ $this->errormsg = 'Keine Eintrag gefunden';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
/**
* Liefert den Koordinator einer Lehrveranstaltung
* @param $lehrveranstaltung_id
diff --git a/include/projekt.class.php b/include/projekt.class.php
index 5cfa0ed9c..9d1250982 100644
--- a/include/projekt.class.php
+++ b/include/projekt.class.php
@@ -47,6 +47,7 @@ class projekt extends basis_db
public $farbe;
public $anzahl_ma; // integer
public $aufwand_pt; // integer
+ public $sap_project_id;
/**
@@ -419,41 +420,86 @@ class projekt extends basis_db
function getProjekteListForMitarbeiter($mitarbeiter_uid, $projektphasen = false)
{
$projectList = array();
+ $exists = @$this->db_query('SELECT 1 FROM sync.tbl_projects_timesheets_project LIMIT 1;');
+
$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)
+ ";
+
+ if ($exists)
+ {
+ $qry .= ", tbl_sap_projects_timesheets.project_id
+ ";
+ }
+
+ $qry .= "FROM
+ fue.tbl_ressource
+ JOIN fue.tbl_projekt_ressource USING(ressource_id)
+ JOIN fue.tbl_projekt USING(projekt_kurzbz)
+ ";
+
+ if ($exists)
+ {
+ $qry .= "LEFT JOIN sync.tbl_projects_timesheets_project USING(projekt_id)
+ LEFT JOIN sync.tbl_sap_projects_timesheets USING(projects_timesheet_id)
+ ";
+ }
+
+ $qry .= "WHERE (beginn<=now() or beginn is null)
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
AND
(
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
student_uid=" . $this->db_add_param($mitarbeiter_uid) . "
- )";
+ )
+ ";
+
+ if ($exists)
+ {
+ $qry .= "AND tbl_projects_timesheets_project.projektphase_id IS NULL
+ ";
+ }
if ($projektphasen == true)
+ {
$qry .= "UNION
+ SELECT DISTINCT
+ tbl_projekt.*
+ ";
- 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 + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
- ) OR (
- (tbl_projektphase.start<=now() or tbl_projektphase.start is null)
- AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
- )
- )
- AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
+ if ($exists)
+ {
+ $qry .= ", tbl_sap_projects_timesheets.project_task_id
+ ";
+ }
+
+ $qry .= "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)
+ ";
+
+ if ($exists)
+ {
+ $qry .= "LEFT JOIN sync.tbl_projects_timesheets_project ON tbl_projects_timesheets_project.projektphase_id = tbl_projekt_ressource.projektphase_id
+ LEFT JOIN sync.tbl_sap_projects_timesheets USING(projects_timesheet_id)
+ ";
+ }
+
+ $qry .= "WHERE
+ (
+ (
+ (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
+ AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
+ ) OR (
+ (tbl_projektphase.start<=now() or tbl_projektphase.start is null)
+ AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
+ )
+ )
+ ";
+ };
+
+ $qry .= "AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
if ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
@@ -466,6 +512,8 @@ class projekt extends basis_db
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->oe_kurzbz = $row->oe_kurzbz;
+ if ($exists)
+ $obj->sap_project_id = $row->project_id;
$this->result[] = $obj;
diff --git a/include/projektphase.class.php b/include/projektphase.class.php
index d029ba080..21d50fb68 100644
--- a/include/projektphase.class.php
+++ b/include/projektphase.class.php
@@ -48,6 +48,7 @@ class projektphase extends basis_db
public $insertvon; // bigint
public $updateamum; // timestamp
public $updatevon; // bigint
+ public $project_task_id;
/**
@@ -685,26 +686,42 @@ public function getFortschritt($projektphase_id)
public function getProjectphaseForMitarbeiter($mitarbeiter_uid)
{
$projecphasetList = array();
+ $exists = @$this->db_query('SELECT 1 FROM sync.tbl_projects_timesheets_project LIMIT 1;');
- $qry = "
- SELECT
- DISTINCT tbl_projektphase.*,tbl_projekt.titel
- 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 + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
- ) AND (
- (tbl_projektphase.start<=now() or tbl_projektphase.start is null)
- AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
- )
- )
- AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
+ $qry = "SELECT DISTINCT tbl_projektphase.*,
+ tbl_projekt.titel
+ ";
+
+ if ($exists)
+ {
+ $qry .= ", tbl_sap_projects_timesheets.project_task_id
+ ";
+ }
+
+ $qry .= "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)
+ ";
+
+ if ($exists)
+ {
+ $qry .= "LEFT JOIN sync.tbl_projects_timesheets_project ON tbl_projects_timesheets_project.projektphase_id = tbl_projekt_ressource.projektphase_id
+ LEFT JOIN sync.tbl_sap_projects_timesheets USING(projects_timesheet_id)
+ ";
+ }
+
+ $qry .= "WHERE
+ (
+ (
+ (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
+ AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
+ ) AND (
+ (tbl_projektphase.start<=now() or tbl_projektphase.start is null)
+ AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
+ )
+ )
+ AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
if($result = $this->db_query($qry))
{
@@ -729,6 +746,8 @@ public function getFortschritt($projektphase_id)
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
+ if ($exists)
+ $obj->project_task_id = $row->project_task_id;
$this->result[] = $obj;
diff --git a/include/statistik.class.php b/include/statistik.class.php
index 7d34a04a0..3075250b5 100644
--- a/include/statistik.class.php
+++ b/include/statistik.class.php
@@ -510,7 +510,7 @@ class statistik extends basis_db
$this->html='';
$this->csv='';
$this->json=array();
- set_time_limit(60);
+ set_time_limit(120);
if($this->sql!='')
{
diff --git a/locale/de-AT/lehre.php b/locale/de-AT/lehre.php
index fb938322f..c5be73401 100644
--- a/locale/de-AT/lehre.php
+++ b/locale/de-AT/lehre.php
@@ -2,7 +2,8 @@
$this->phrasen['lehre/keineLektorenZugeordnet']='Derzeit sind keine Lektoren für dieses Fach zugeteilt';
$this->phrasen['lehre/lehrveranstaltungsinformation']='Lehrveranstaltungsinformation';
-$this->phrasen['lehre/lehrbeauftragter']='Lehrbeauftragte(r)';
+$this->phrasen['lehre/lehrbeauftragter']='Lehrbeauftragte*r';
+$this->phrasen['lehre/lvleitung']='LV-Leiter*in';
$this->phrasen['lehre/lvInfoBearbeiten']='Bearbeiten';
$this->phrasen['lehre/semesterplan']='Semesterplan';
diff --git a/locale/en-US/lehre.php b/locale/en-US/lehre.php
index 1fd41700f..e8a78c38b 100644
--- a/locale/en-US/lehre.php
+++ b/locale/en-US/lehre.php
@@ -3,6 +3,7 @@ $this->phrasen['lehre/keineLektorenZugeordnet']='Currently there are no lecturer
$this->phrasen['lehre/lehrveranstaltungsinformation']='Course Information';
$this->phrasen['lehre/lehrbeauftragter']='Lecturer(s)';
+$this->phrasen['lehre/lvleitung']='Head of Course';
$this->phrasen['lehre/lvInfoBearbeiten']='Edit';
$this->phrasen['lehre/semesterplan']='Semesterplan';
diff --git a/public/js/infocenter/infocenterPersonDataset.js b/public/js/infocenter/infocenterPersonDataset.js
index 252f6ac1f..bdeed1770 100644
--- a/public/js/infocenter/infocenterPersonDataset.js
+++ b/public/js/infocenter/infocenterPersonDataset.js
@@ -49,6 +49,11 @@ var InfocenterPersonDataset = {
'' +
+ '' +
'';
InfocenterPersonDataset.getAbsageData();
@@ -327,6 +332,7 @@ var InfocenterPersonDataset = {
var statusgrund = $('.absgstatusgrund').val();
var studiengang = $('.auswahlAbsageStg').val();
+ var abgeschickt = $('.auswahlAbsageAbgeschickt').val();
var personen = [];
@@ -340,7 +346,8 @@ var InfocenterPersonDataset = {
{
'statusgrund': statusgrund,
'studiengang': studiengang,
- 'personen' : personen
+ 'personen' : personen,
+ 'abgeschickt' : abgeschickt
},
{
successCallback: function(data, textStatus, jqXHR) {
diff --git a/rdf/organisationseinheit.rdf.php b/rdf/organisationseinheit.rdf.php
index f31d542ce..ee66697a9 100644
--- a/rdf/organisationseinheit.rdf.php
+++ b/rdf/organisationseinheit.rdf.php
@@ -35,7 +35,7 @@ require_once('../include/organisationseinheit.class.php');
// raumtypen holen
$org=new organisationseinheit();
-$org->getAll();
+$org->getAll(null, null, 'organisationseinheittyp_kurzbz, bezeichnung');
$rdf_url='http://www.technikum-wien.at/organisationseinheit';
@@ -64,4 +64,4 @@ foreach ($org->result as $oe)
?>
-
\ No newline at end of file
+
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index bc3f4bc27..66633145c 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -1725,6 +1725,20 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants
}
}
+// UPDATE Berechtigungen fuer vilesci User erteilen fuer tbl_person_lock
+if ($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_person_lock' AND table_schema='system' AND grantee='vilesci' AND privilege_type='UPDATE'"))
+{
+ if ($db->db_num_rows($result) === 0)
+ {
+ $qry = "GRANT UPDATE ON system.tbl_person_lock TO vilesci;";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_person_lock Berechtigungen: '.$db->db_last_error().'
';
+ else
+ echo 'UPDATE Recht fuer system.tbl_person_lock fuer vilesci user gesetzt ';
+ }
+}
+
/**
* Kommentare fuer Datenbanktabellen
diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php
index f6e0e63fb..5545cb1d6 100644
--- a/system/phrasesupdate.php
+++ b/system/phrasesupdate.php
@@ -888,6 +888,26 @@ $phrases = array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'global',
+ 'phrase' => 'bewerberVorhanden',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => 'BewerberIn bereits vorhanden',
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => 'Applicant already available',
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
array(
'app' => 'core',
'category' => 'global',
@@ -12560,13 +12580,13 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Zertifikat als PDF hochladen",
+ 'text' => "Zertifikat als PDF hochladen (nur mit QR-Code, kein gescanntes Zertifikat)",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => "upload certificate pdf",
+ 'text' => "upload certificate pdf (only with qrcode, no scanned certificate)",
'description' => '',
'insertvon' => 'system'
)
@@ -12580,13 +12600,13 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Validierungsergebnis / aktuelles Gültigkeitsdatum",
+ 'text' => "Validierungsergebnis / gespeichertes Gültigkeitsdatum",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => "validation result / current valid date",
+ 'text' => "validation result / stored valid date",
'description' => '',
'insertvon' => 'system'
)
@@ -12680,13 +12700,13 @@ array(
'phrases' => array(
array(
'sprache' => 'German',
- 'text' => "Das Zertifikat konnte nicht verifiziert werden.",
+ 'text' => "Das Zertifikat konnte nicht verifiziert werden. Stellen Sie bitte sicher, dass ein QR-Code enthalten ist.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
- 'text' => "certificate could not be verified.",
+ 'text' => "certificate could not be verified. Please make sure it contains a qr-code.",
'description' => '',
'insertvon' => 'system'
)
@@ -12772,6 +12792,106 @@ array(
)
)
),
+ array(
+ 'app' => 'core',
+ 'category' => 'eucovidqr',
+ 'phrase' => 'UploadSuccessful',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Das Gültigkeitsdatum wurde erfolgreich gespeichert.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "validity date has been successfully stored.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'eucovidqr',
+ 'phrase' => 'UploadFailed',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Es wurde kein Gültigkeitsdatum gespeichert.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "validity date has not been stored.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'eucovidqr',
+ 'phrase' => 'uploadbeschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Hier kann ein Digitales COVID-Zertifikat der EU mit QR-Code selbst erfasst werden.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "an EU Digital COVID Certificate with QR code can be self registered here.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'eucovidqr',
+ 'phrase' => 'manualbeschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Falls das Zertifikat keinen QR-Code enthält oder die Selbst-Erfassung fehlschlägt, kann das Zertifkat beim Empfang manuell erfasst werden.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "if the certificate does not contain a QR code or self registration fails, the certificate can be manually registered at the front desk.",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
+ array(
+ 'app' => 'core',
+ 'category' => 'eucovidqr',
+ 'phrase' => 'supportbeschreibung',
+ 'insertvon' => 'system',
+ 'phrases' => array(
+ array(
+ 'sprache' => 'German',
+ 'text' => "Bei technischen Problemen kontaktieren Sie bitte: ",
+ 'description' => '',
+ 'insertvon' => 'system'
+ ),
+ array(
+ 'sprache' => 'English',
+ 'text' => "in case of technical issues please contact: ",
+ 'description' => '',
+ 'insertvon' => 'system'
+ )
+ )
+ ),
//******************* ÖH-Beitragsverwaltung
array(
'app' => 'core',
diff --git a/vilesci/bis/lehrgangsmeldung.php b/vilesci/bis/lehrgangsmeldung.php
index 9cc560d32..b9d6a2526 100644
--- a/vilesci/bis/lehrgangsmeldung.php
+++ b/vilesci/bis/lehrgangsmeldung.php
@@ -242,29 +242,37 @@ if($result = $db->db_query($qry))
$zustell_strasse = $rowzustelladr->strasse;
$zustell_nation = $rowzustelladr->nation;
}
-
- // eMail-Adresse
- $qry_mail = "
+
+ // FH eMail-Adresse FH aus UID@Domain
+ $email = '';
+ if ($row->student_uid != '')
+ {
+ $email = $row->student_uid. '@'. DOMAIN;
+ }
+
+ // private eMail-Adresse
+ $email_privat = '';
+ $qry_privmail = "
SELECT kontakt
FROM public.tbl_kontakt
- WHERE kontakttyp = 'email'
- AND zustellung = TRUE
- AND person_id = ". $db->db_add_param($row->pers_id). "
- ORDER BY insertamum DESC LIMIT 1;
+ WHERE zustellung = TRUE
+ AND kontakttyp = 'email'
+ AND person_id=". $db->db_add_param($row->pers_id). "
+ ORDER BY insertamum DESC
+ LIMIT 1;
";
-
- $email = '';
- if ($result_email = $db->db_query($qry_mail))
+
+ if ($privmail_result = $db->db_query($qry_privmail))
{
- if($db->db_num_rows($result_email) == 1)
+ if($db->db_num_rows($privmail_result) == 1)
{
- if($row_mail = $db->db_fetch_object($result_email))
+ if ($row_privmail = $db->db_fetch_object($privmail_result))
{
- $email = $row_mail->kontakt;
+ $email_privat = $row_privmail->kontakt;
}
}
}
-
+
if($row->gebdatum<'1920-01-01' OR $row->gebdatum==null OR $row->gebdatum=='')
{
$error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')";
@@ -620,7 +628,8 @@ if($result = $db->db_query($qry))
$datei.="
".$row->svnr."";
}
- if($row->ersatzkennzeichen!='')
+ // Ersatzkennzeichen nur inkludieren wenn svnr nicht gesetzt
+ if($row->ersatzkennzeichen!='' && $row->svnr == null)
{
$datei.="
".$row->ersatzkennzeichen."";
@@ -648,7 +657,8 @@ if($result = $db->db_query($qry))
}
$datei.="
- ". $email. "
+ ". $email_privat. "
+ ". $email. "
".$row->zgv_code."
".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum))."";
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index dceb4d30c..901181a24 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -758,6 +758,29 @@ function GenerateXMLStudentBlock($row)
$email = $row->student_uid. '@'. DOMAIN;
}
+ // private eMail-Adresse
+ $email_privat = '';
+ $qry_privmail = "
+ SELECT kontakt
+ FROM public.tbl_kontakt
+ WHERE zustellung = TRUE
+ AND kontakttyp = 'email'
+ AND person_id=". $db->db_add_param($row->pers_id). "
+ ORDER BY insertamum DESC
+ LIMIT 1;
+ ";
+
+ if ($privmail_result = $db->db_query($qry_privmail))
+ {
+ if($db->db_num_rows($privmail_result) == 1)
+ {
+ if ($row_privmail = $db->db_fetch_object($privmail_result))
+ {
+ $email_privat = $row_privmail->kontakt;
+ }
+ }
+ }
+
if($row->gebdatum<'1920-01-01' OR $row->gebdatum==null OR $row->gebdatum=='')
{
$error_log.=(!empty($error_log)?', ':'')."Geburtsdatum ('".$row->gebdatum."')";
@@ -1263,7 +1286,9 @@ function GenerateXMLStudentBlock($row)
$datei .= "
" . $row->svnr . "";
}
- if ($row->ersatzkennzeichen != '')
+
+ // Ersatzkennzeichen nur inkludieren wenn svnr nicht gesetzt
+ if ($row->ersatzkennzeichen != '' && $row->svnr == null)
{
$datei .= "
" . $row->ersatzkennzeichen . "";
@@ -1296,11 +1321,16 @@ function GenerateXMLStudentBlock($row)
";
}
+ if ($email_privat != '')
+ {
+ $datei .= "
+ " . $email_privat . "";
+ }
+
if ($email != '')
{
$datei .= "
- " . $email . "
- ";
+ " . $email . "";
}
if(!$ausserordentlich)
@@ -1531,12 +1561,12 @@ function GenerateXMLStudentBlock($row)
if ($aktstatus != 'Incoming' && $rowio->ects_erworben != '')
{
$datei.="
- ".$rowio->ects_erworben."";
+ ".round($rowio->ects_erworben)."";
}
if ($aktstatus != 'Incoming' && $rowio->ects_angerechnet != '')
{
$datei.="
- ".$rowio->ects_angerechnet."";
+ ".round($rowio->ects_angerechnet)."";
}
foreach ($aufenthaltfoerderung_code_arr as $aufenthaltfoerderung_code)
{
diff --git a/vilesci/stammdaten/service_details.php b/vilesci/stammdaten/service_details.php
index 70605f420..686ed52f4 100644
--- a/vilesci/stammdaten/service_details.php
+++ b/vilesci/stammdaten/service_details.php
@@ -149,7 +149,7 @@ $datum_obj = new datum();
{
echo 'Daten erfolgreich gespeichert';
echo "\n";
$action='update';
$service_id = $service->service_id;
diff --git a/vilesci/stammdaten/service_uebersicht.php b/vilesci/stammdaten/service_uebersicht.php
index b8381667e..756f4a685 100644
--- a/vilesci/stammdaten/service_uebersicht.php
+++ b/vilesci/stammdaten/service_uebersicht.php
@@ -51,9 +51,9 @@ echo '
{
$("#myTable").tablesorter(
{
- sortList: [[3,0],[2,0]],
- widgets: [\'zebra\'],
- headers: {8:{sorter:false}}
+ sortList: [[2,0]],
+ widgets: [\'zebra\',\'filter\', \'stickyHeaders\'],
+ headers: {9:{sorter:false,filter: false}}
});
}
);
@@ -127,6 +127,7 @@ echo '
| Beschreibung |
Organisationseinheit |
Kategorie |
+ Content ID |
Design |
Betrieb |
Operativ |
@@ -144,6 +145,7 @@ foreach($service->result as $row)
echo '',$row->oe_kurzbz,' | ';
$title = (isset($servicekategorie_arr[$row->servicekategorie_kurzbz])?$servicekategorie_arr[$row->servicekategorie_kurzbz]:'');
echo '',$row->servicekategorie_kurzbz,' | ';
+ echo '',$row->content_id,' | ';
echo '',$row->design_uid,' | ';
echo '',$row->betrieb_uid,' | ';
echo '',$row->operativ_uid,' | ';
diff --git a/vilesci/stammdaten/statistik_details.php b/vilesci/stammdaten/statistik_details.php
index 4480de955..1ba840c02 100644
--- a/vilesci/stammdaten/statistik_details.php
+++ b/vilesci/stammdaten/statistik_details.php
@@ -223,7 +223,7 @@ EOT;
| SQL |
- |
+ |
|
|
@@ -234,7 +234,7 @@ EOT;
|
Preferences |
- |
+ |
|
|
|