Merge branch 'master' into features-Zeiterfassung/Sprint177

This commit is contained in:
Andreas Österreicher
2021-12-17 08:46:05 +01:00
104 changed files with 59646 additions and 54495 deletions
+8 -8
View File
@@ -27,7 +27,7 @@ $config['navigation_header'] = array(
'oehbeitragsverwaltung' => array(
'link' => site_url('codex/Oehbeitrag'),
'icon' => '',
'description' => hbeitragsverwaltung',
'description' => H-Beitragsverwaltung',
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'admin:w'
@@ -102,6 +102,13 @@ $config['navigation_header'] = array(
'description' => 'BPK Wartung',
'sort' => 20,
'requiredPermissions' => 'admin:r'
),
'errormonitoring' => array(
'link' => site_url('system/issues/Issues'),
'description' => 'Fehler Monitoring',
'expand' => true,
'sort' => 30,
'requiredPermissions' => 'system/issues_verwalten:r'
)
)
),
@@ -133,13 +140,6 @@ $config['navigation_header'] = array(
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'system/developer:r'
),
'errormonitoring' => array(
'link' => site_url('system/issues/Issues'),
'description' => 'Fehler Monitoring',
'expand' => true,
'sort' => 20,
'requiredPermissions' => 'system/issues_verwalten:r'
)
)
)
+9 -1
View File
@@ -4,7 +4,7 @@ if (! defined("BASEPATH")) exit("No direct script access allowed");
class Oehbeitrag extends Auth_Controller
{
const STUDIENSEMESTER_START = 'WS2020';
const STUDIENSEMESTER_START = 'WS2020'; // Öhbeitrage can be assigned beginning with this Studiensemester
public function __construct()
{
@@ -23,6 +23,14 @@ class Oehbeitrag extends Auth_Controller
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->library('WidgetLib');
$this->loadPhrases(
array(
'global',
'ui',
'oehbeitrag'
)
);
}
public function index()
@@ -20,6 +20,7 @@ class InfoCenter extends Auth_Controller
const INDEX_PAGE = 'index';
const FREIGEGEBEN_PAGE = 'freigegeben';
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
const ABGEWIESEN_PAGE = 'abgewiesen';
const SHOW_DETAILS_PAGE = 'showDetails';
const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
@@ -107,6 +108,7 @@ class InfoCenter extends Auth_Controller
array(
'index' => 'infocenter:r',
'freigegeben' => 'infocenter:r',
'abgewiesen' => 'infocenter:r',
'reihungstestAbsolviert' => 'infocenter:r',
'showDetails' => 'infocenter:r',
'showZGVDetails' => 'lehre/zgvpruefung:r',
@@ -203,6 +205,16 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/infocenterFreigegeben.php');
}
/**
* Abgewiesen page of the InfoCenter tool
*/
public function abgewiesen()
{
$this->_setNavigationMenu(self::ABGEWIESEN_PAGE); // define the navigation menu for this page
$this->load->view('system/infocenter/infocenterAbgewiesen.php');
}
/**
*
*/
@@ -297,6 +309,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 +324,8 @@ class InfoCenter extends Auth_Controller
$data = array_merge(
$persondata,
$prestudentdata,
$dokumentdata
$dokumentdata,
$duplicate
);
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
@@ -734,7 +754,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)
@@ -913,7 +933,8 @@ class InfoCenter extends Auth_Controller
$this->_log($person_id, 'freigegeben', $logparams);
$this->_sendFreigabeMail($prestudent_id);
if (is_numeric($statusgrund_id) || $logdata['studiengang_typ'] === 'm')
$this->_sendFreigabeMail($prestudent_id);
}
}
}
@@ -1191,6 +1212,10 @@ class InfoCenter extends Auth_Controller
{
$this->_setNavigationMenu(self::REIHUNGSTESTABSOLVIERT_PAGE);
}
elseif (strpos($navigation_page, self::ABGEWIESEN_PAGE) !== false)
{
$this->_setNavigationMenu(self::ABGEWIESEN_PAGE);
}
$this->outputJsonSuccess('success');
}
@@ -1414,12 +1439,14 @@ class InfoCenter extends Auth_Controller
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
{
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
}
$this->navigationlib->setSessionMenu(
@@ -1458,6 +1485,18 @@ class InfoCenter extends Auth_Controller
null, // subscriptLinkValue
'', // target
20 // sort
),
'abgewiesen' => $this->navigationlib->oneLevel(
'Abgewiesene', // description
$abgewiesenLink, // link
null, // children
'close', // icon
null, // subscriptDescription
false, // expand
null, // subscriptLinkClass
null, // subscriptLinkValue
'', // target
30 // sort
)
)
);
@@ -1483,6 +1522,8 @@ class InfoCenter extends Auth_Controller
}
if ($origin_page === self::ZGV_UBERPRUEFUNG_PAGE)
$link = site_url(self::ZGV_UEBERPRUEFUNG_URI);
if ($origin_page === self::ABGEWIESEN_PAGE)
$link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
@@ -1520,6 +1561,7 @@ class InfoCenter extends Auth_Controller
$homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
@@ -1578,6 +1620,24 @@ class InfoCenter extends Auth_Controller
)
);
}
if($page == self::ABGEWIESEN_PAGE)
{
$this->navigationlib->setSessionElementMenu(
'abgewiesen',
$this->navigationlib->oneLevel(
'Abgewiesene', // description
$abgewiesenLink, // link
null, // children
'close', // icon
null, // subscriptDescription
false, // expand
null, // subscriptLinkClass
null, // subscriptLinkValue
'', // target
40 // sort
)
);
}
}
/**
@@ -2134,17 +2194,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);
@@ -23,18 +23,21 @@ class Issues extends Auth_Controller
$this->load->library('PermissionLib');
$this->load->library('WidgetLib');
// Load models
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
$this->loadPhrases(
array(
'global',
'ui',
'filter'
'filter',
'lehre',
'person',
'fehlermonitoring'
)
);
// Load models
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
$this->_setAuthUID(); // sets property uid
}
+46 -7
View File
@@ -203,7 +203,7 @@ class FilterWidgetLib
// Loops in the session for all the filter widgets
foreach ($filterWidgetsSession as $filterWidget => $filterWidgetData)
{
// If this filter widget is not the currrent used filter widget and the it is expired...
// If this filter widget is not the current used filter widget and the it is expired...
if ($this->_filterUniqueId != $filterWidget && $filterWidgetData[self::SESSION_TIMEOUT] <= time())
{
cleanSessionElement(self::SESSION_NAME, $filterWidget); // ...remove it
@@ -232,7 +232,7 @@ class FilterWidgetLib
if ($filterId != null && is_numeric($filterId) && $filterId > 0)
{
$whereParameters = array(
'filter_id' => $filterId
self::FILTER_ID => $filterId
);
}
else
@@ -279,6 +279,18 @@ class FilterWidgetLib
if ($definition == null && $whereParameters != null)
{
$definition = $this->_ci->FiltersModel->loadWhere($whereParameters);
// Last chance!!!
if (!hasData($definition)) // If no data have been found until now the tries the most desperate query
{
$this->_ci->FiltersModel->addOrder('filter_id', 'ASC'); // sort on column filter_id to get the oldest
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName
);
$definition = $this->_ci->FiltersModel->loadWhere($whereParameters);
}
}
return $definition;
@@ -712,8 +724,11 @@ class FilterWidgetLib
{
$this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to remove the filter definitions from DB
// delete it!
$this->_ci->FiltersModel->delete(array('filter_id' => $filterId));
// Delete it from database
$this->_ci->FiltersModel->delete(array(self::FILTER_ID => $filterId));
// Delete it from session
$this->_dropFromSessionFilterWidgetById($filterId);
$removeCustomFilter = true;
}
@@ -735,7 +750,7 @@ class FilterWidgetLib
$session = $this->getSession(); // The filter currently stored in session (the one that is currently used)
if ($session != null)
{
// Loads the Fitlers model
// Loads the Filters model
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
// Loads all the filters related to this page (same dataset_name and same app name)
@@ -761,7 +776,7 @@ class FilterWidgetLib
'%s?%s=%s',
site_url($navigationPage),
self::FILTER_ID,
$filter->filter_id
$filter->{self::FILTER_ID}
) // link
);
@@ -774,7 +789,7 @@ class FilterWidgetLib
{
$menuEntry['subscriptDescription'] = 'Remove';
$menuEntry['subscriptLinkClass'] = 'remove-custom-filter';
$menuEntry['subscriptLinkValue'] = $filter->filter_id;
$menuEntry['subscriptLinkValue'] = $filter->{self::FILTER_ID};
$childrenPersonalArray[] = $menuEntry; // adds to personal filters menu array
}
}
@@ -974,5 +989,29 @@ class FilterWidgetLib
return $pos;
}
/**
* Remove from the session the given filter widget
*/
private function _dropFromSessionFilterWidgetById($filterId)
{
// Loads the session for all the filter widgets
$filterWidgetsSession = getSession(self::SESSION_NAME);
// If something is present in session
if ($filterWidgetsSession != null)
{
// Loops in the session for all the filter widgets
foreach ($filterWidgetsSession as $filterWidget => $filterWidgetData)
{
// If this filter widget is not the one that we are looking for
if ($filterWidgetData[self::FILTER_ID] == $filterId)
{
cleanSessionElement(self::SESSION_NAME, $filterWidget); // ...remove it
break; // stop to search
}
}
}
}
}
+3 -3
View File
@@ -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});
}
}
/**
+2 -11
View File
@@ -114,7 +114,7 @@ class VorlageLib
if (!hasData($vorlage))
{
// Builds where clause
$where = $this->_where($vorlage_kurzbz, $orgform_kurzbz, $sprache);
$where = $this->_where($vorlage_kurzbz);
$vorlage = $this->ci->organisationseinheitlib->treeSearch(
'public',
@@ -134,20 +134,11 @@ class VorlageLib
/**
* _where
*/
private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache)
private function _where($vorlage_kurzbz)
{
// Builds where clause
$where = "vorlage_kurzbz = ".$this->ci->VorlageModel->escape($vorlage_kurzbz);
if (is_null($sprache))
{
$where .= " AND sprache IS NULL";
}
else
{
$where .= " AND sprache = ".$this->ci->VorlageModel->escape($sprache);
}
$where .= " AND aktiv = true";
return $where;
+13 -2
View File
@@ -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));
}
@@ -655,4 +665,5 @@ class Prestudent_model extends DB_Model
return $this->execQuery($query, array($prestudent_id));
}
}
@@ -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'));
}
}
@@ -18,7 +18,7 @@ class Betriebsmittelperson_model extends DB_Model
* @param bool $isRetourniert False to retrieve only active Betriebsmittel.
* @return array|bool
*/
public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null)
public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null, $onlyAktiveBenutzer=false)
{
if (!is_numeric($person_id))
{
@@ -28,8 +28,12 @@ class Betriebsmittelperson_model extends DB_Model
$this->addJoin('wawi.tbl_betriebsmittel', 'betriebsmittel_id');
if( $onlyAktiveBenutzer ) {
$this->addJoin('public.tbl_benutzer b', 'b.uid = wawi.tbl_betriebsmittelperson.uid AND b.aktiv = \'t\'');
}
$condition = '
person_id = '. $this->escape($person_id). '
wawi.tbl_betriebsmittelperson.person_id = '. $this->escape($person_id). '
';
if (is_string($betriebsmitteltyp)) {
+15 -7
View File
@@ -12,6 +12,14 @@ $this->load->view(
'dialoglib' => true,
'ajaxlib' => true,
'navigationwidget' => true,
'phrases' => array(
'person' => array('vorname', 'nachname'),
'global' => array('unbeschraenkt'),
'ui' => array('bearbeiten', 'loeschen', 'speichern', 'entfernen'),
'oehbeitrag' => array('oehbeitraegeFestgelegt', 'fehlerHolenOehbeitraege', 'fehlerHolenSemester',
'fehlerHinzufuegenOehbeitrag', 'fehlerAktualisierenOehbeitrag',
'fehlerLoeschenOehbeitrag')
),
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/codex/oehbeitrag.css'),
'customJSs' => array('public/js/tablesort/tablesort.js', 'public/js/codex/oehbeitrag.js')
)
@@ -28,23 +36,23 @@ $this->load->view(
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
&Ouml;hbeitragsverwaltung
<?php echo $this->p->t('oehbeitrag', 'oehbeitragsVerwaltung') ?>
</h3>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button class="btn btn-default" id="addNewOeh">Neuen &Ouml;hbeitrag hinzuf&uuml;gen</button>
<button class="btn btn-default" id="addNewOeh"><?php echo $this->p->t('oehbeitrag', 'oehbeitragHinzufuegen') ?></button>
<br />
<br />
<table class="table table-bordered table-condensed" id="oehbeitraegeTbl">
<thead>
<tr>
<th>G&uuml;ltig von</th>
<th>G&uuml;ltig bis</th>
<th>Studierendenbetrag</th>
<th>Versicherungsbetrag</th>
<th id="actionHeading">Aktion</th>
<th><?php echo ucfirst($this->p->t('global', 'gueltigVon')) ?></th>
<th><?php echo ucfirst($this->p->t('global', 'gueltigBis')) ?></th>
<th><?php echo ucfirst($this->p->t('oehbeitrag', 'studierendenbetrag')) ?></th>
<th><?php echo ucfirst($this->p->t('oehbeitrag', 'versicherungsbetrag')) ?></th>
<th id="actionHeading"><?php echo ucfirst($this->p->t('ui', 'aktion')) ?></th>
</tr>
</thead>
<tbody>
@@ -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
@@ -187,7 +187,7 @@ FROM
(SELECT
uid
FROM
public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
ON tbl_benutzer.uid = ma.mitarbeiter_uid
WHERE
person_id = tmp_projektbetreuung.person_id
@@ -268,7 +268,7 @@ FROM
ELSE (oe.organisationseinheittyp_kurzbz ||
\' \' || oe.bezeichnung)
END AS "lv_oe_kurzbz",
(vorname || \' \' || nachname) AS "lektor",
(nachname || \' \' || vorname) AS "lektor",
TRUNC(pb.stunden, 1) AS "stunden",
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
vertrag_id,
@@ -160,7 +160,7 @@ $this->load->view(
'Ausbildungssemester_widget',
array(
DropdownWidget::SELECTED_ELEMENT => $ausbildungssemester_selected,
'number_semester' => 6
'number_semester' => 10
),
array(
'name' => 'ausbildungssemester',
@@ -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
@@ -22,7 +22,7 @@
<a href="outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo isEmptyString($dokument->titel) ? $dokument->bezeichnung : $dokument->titel ?></a>
</td>
<td>
<select class="aktenid" id="aktenid_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?>>
<select class="aktenid" id="aktenid_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?> autocomplete="off">
<?php
foreach($dokumententypen as $dokumenttyp)
echo "<option " . ($dokumenttyp->bezeichnung === $dokument->dokument_bezeichnung ? 'selected' : '') . " value = " . $dokumenttyp->dokument_kurzbz . ">" . $dokumenttyp->bezeichnung . "</option>"
@@ -0,0 +1,50 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Info Center',
'jquery' => true,
'jqueryui' => true,
'jquerycheckboxes' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'ajaxlib' => true,
'filterwidget' => true,
'navigationwidget' => true,
'dialoglib' => true,
'phrases' => array(
'person' => array('vorname', 'nachname'),
'global' => array('mailAnXversandt'),
'ui' => array('bitteEintragWaehlen')
),
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
)
);
?>
<body>
<div id="wrapper">
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
Abgewiesene
</h3>
</div>
</div>
<div>
<?php $this->load->view('system/infocenter/infocenterAbgewiesenData.php'); ?>
</div>
</div>
</div>
</div>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,87 @@
<?php
$this->config->load('infocenter');
$ABGEWIESENEN_STATUS = '\'Abgewiesener\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$LOGDATA_NAME = '\'Message sent\'';
$LOGDATA_VON = '\'online\'';
$query = '
SELECT
p.person_id AS "PersonID",
ps.prestudent_id AS "PreStudentID",
p.vorname AS "Vorname",
p.nachname AS "Nachname",
sg.kurzbzlang as "Studiengang",
pss.insertamum AS "AbgewiesenAm",
(
SELECT l.zeitpunkt
FROM system.tbl_log l
WHERE l.person_id = p.person_id
AND '. $LOGDATA_NAME .' = (
SELECT l.logdata->>\'name\'
FROM system.tbl_log l
WHERE l.person_id = p.person_id
ORDER BY l.log_id DESC
LIMIT 1
)
AND '. $LOGDATA_VON .' = (
SELECT l.insertvon
FROM system.tbl_log l
WHERE l.person_id = p.person_id
ORDER BY l.log_id DESC
LIMIT 1
)
AND l.zeitpunkt >= pss.insertamum
ORDER BY l.log_id DESC
LIMIT 1
) AS "Nachricht"
FROM
public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_person p USING(person_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .'
AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND (sg.typ IN ('. $STUDIENGANG_TYP .')
OR
sg.studiengang_kz IN ('. $ADDITIONAL_STG .')
)
ORDER BY "AbgewiesenAm" DESC';
$filterWidgetArray = array(
'query' => $query,
'app' => InfoCenter::APP,
'datasetName' => 'abgewiesen',
'filter_id' => $this->input->get('filter_id'),
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'columnsAliases' => array(
'PersonID',
'PreStudentID',
'Vorname',
'Nachname',
'Studiengang',
'Abgewiesen am',
'Nachricht'
),
'formatRow' => function($datasetRaw) {
if ($datasetRaw->{'Nachricht'} === null)
{
$datasetRaw->{'Nachricht'} = 'Nein';
}
else
{
$datasetRaw->{'Nachricht'} = 'Ja';
}
$datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i');
return $datasetRaw;
}
);
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
?>
@@ -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\', \'Attempt to register with existing mailadress\'';
$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",
(
@@ -54,12 +55,14 @@
a.dokument_kurzbz in ('.$AKTE_TYP.')
) AS "AnzahlAkte",
(
SELECT l.insertvon
SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
FROM system.tbl_log l
LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
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 +257,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
@@ -269,8 +273,10 @@
LEFT JOIN (
SELECT tpl.person_id,
tpl.zeitpunkt,
tpl.uid AS lockuser
sp.nachname AS lockuser
FROM system.tbl_person_lock tpl
JOIN public.tbl_benutzer sb USING (uid)
JOIN public.tbl_person sp ON sb.person_id = sp.person_id
WHERE tpl.app = '.$APP.'
) pl USING(person_id)
LEFT JOIN (
@@ -439,13 +445,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;
@@ -101,6 +101,22 @@
</div>
</div>
</div>
<?php if (!is_null($duplicated)): ?>
<div class="row alert-warning">
<h3 class="header col-lg-12">
<?php echo $this->p->t('global', 'bewerberVorhanden') . ':'; ?>
</h3>
<div class="text-left col-lg-12">
<?php
foreach ($duplicated as $duplicate)
{
echo 'Person ID: ' . $duplicate->person_id . '<br />';
}
?>
</div>
</div>
<?php endif; ?>
<br/>
<section>
<div class="row">
@@ -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\', \'Attempt to register with existing mailadress\'';
$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,16 +37,18 @@
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",
(
SELECT l.insertvon
SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
FROM system.tbl_log l
LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
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 +234,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
@@ -246,8 +250,10 @@
LEFT JOIN (
SELECT tpl.person_id,
tpl.zeitpunkt,
tpl.uid AS lockuser
sp.nachname AS lockuser
FROM system.tbl_person_lock tpl
JOIN public.tbl_benutzer sb USING (uid)
JOIN public.tbl_person sp ON sb.person_id = sp.person_id
WHERE tpl.app = '.$APP.'
) pl USING(person_id)
WHERE
@@ -410,13 +416,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;
@@ -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\', \'Attempt to register with existing mailadress\'';
$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;
+4 -3
View File
@@ -15,10 +15,11 @@ $this->load->view(
'navigationwidget' => true,
'dialoglib' => true,
'phrases' => array(
'ui' => array('bitteEintragWaehlen')
'ui',
'fehlermonitoring'
),
'customCSSs' => array('public/css/issues/issuesDataset.css', 'public/css/sbadmin2/tablesort_bootstrap.css'),
'customJSs' => array('public/js/issues/issuesDataset.js', 'public/js/bootstrapper.js')
'customJSs' => array('public/js/issues/issuesDataset.js', 'public/js/bootstrapper.js'),
)
);
?>
@@ -33,7 +34,7 @@ $this->load->view(
<div class="row">
<div class="col-lg-12">
<h3 class="page-header">
Fehler Monitoring
<?php echo $this->p->t('fehlermonitoring', 'fehlerMonitoring') ?>
</h3>
</div>
</div>
+65 -40
View File
@@ -4,40 +4,64 @@ $PERSON_ID = getAuthPersonId();
$ALL_FUNKTIONEN_OE_KURZBZ = "('" . implode("','", array_keys($all_funktionen_oe_kurzbz)) . "')";
$ALL_OE_KURZBZ_BERECHTIGT = "('" . implode("','", $all_oe_kurzbz_berechtigt) . "')";
$RELEVANT_PRESTUDENT_STATUS = "('Aufgenommener', 'Student', 'Incoming', 'Diplomand', 'Abbrecher', 'Unterbrecher', 'Absolvent')";
$LANGUAGE_INDEX = getUserLanguage() == 'German' ? '1' : '2';
// get issues for the oes of the uid or for the persons (students, oe-zuordnung) of the oes
$query = "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
// get issues for the oes of the logged user or for the persons (students, oe-zuordnung) of the oes
$query = "WITH zustaendigkeiten AS (
SELECT fehlercode,
CASE
WHEN zst.person_id = ".$PERSON_ID;
if (!isEmptyArray($all_funktionen_oe_kurzbz))
{
$query .= " OR (zst.oe_kurzbz IN $ALL_FUNKTIONEN_OE_KURZBZ AND zst.funktion_kurzbz IS NULL) /* if oe is specified in fehler_zustaendigkeiten */";
// check for each oe for each function if zustaendig
foreach ($all_funktionen_oe_kurzbz as $oe_kurzbz => $funktionen_kurzbz)
{
foreach ($funktionen_kurzbz as $funktion_kurzbz)
{
$query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')";
}
}
}
$query .= " THEN TRUE
ELSE FALSE
END AS \"zustaendig\"
FROM system.tbl_fehler_zustaendigkeiten zst
)";
$query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\",
inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\",
ftyp.bezeichnung_mehrsprachig[1] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[1] AS \"Fehlerstatus\",
ftyp.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlerstatus\",
verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\",
fr.fehlertyp_kurzbz as \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\"
fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\",
pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\",
CASE
WHEN
EXISTS(SELECT 1
FROM zustaendigkeiten
WHERE fehlercode = iss.fehlercode
AND zustaendig = TRUE) /* If Zuständigkeit is defined for the oe/person, zustaendig. */
THEN 'Ja'
WHEN
EXISTS(SELECT 1
FROM zustaendigkeiten
WHERE fehlercode = iss.fehlercode
AND zustaendig = FALSE) /* If Zuständigkeit is defined for different oe/person, not zustaendig. */
THEN 'Nein'
ELSE 'Ja' /* If no Zuständigkeit defined, zustaendig by default. */
END AS \"Hauptzuständig\"
FROM system.tbl_issue iss
JOIN system.tbl_fehler fr USING (fehlercode)
JOIN system.tbl_fehlertyp ftyp USING (fehlertyp_kurzbz)
JOIN system.tbl_issue_status stat USING (status_kurzbz)
LEFT JOIN public.tbl_person pers ON iss.person_id = pers.person_id
WHERE EXISTS (
SELECT 1 FROM system.tbl_fehler_zustaendigkeiten zst
WHERE EXISTS ( /* if oe or person is specified in fehler_zustaendigkeiten */
SELECT 1 FROM zustaendigkeiten
WHERE fehlercode = iss.fehlercode
AND (
person_id = ".$PERSON_ID." /* person_id in fehler_zustaendigkeit for individual persons */";
if (!isEmptyArray($all_funktionen_oe_kurzbz))
{
$query .= " OR (zst.oe_kurzbz IN $ALL_FUNKTIONEN_OE_KURZBZ AND zst.funktion_kurzbz IS NULL) /* if oe is specified in fehler_zustaendigkeiten */";
// check for each oe for each function if zustaendig
foreach ($all_funktionen_oe_kurzbz as $oe_kurzbz => $funktionen_kurzbz)
{
foreach ($funktionen_kurzbz as $funktion_kurzbz)
{
$query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')";
}
}
}
$query .= "))"; // close AND of exists, and exists
AND zustaendig = TRUE)";
// show issue if it is assigend to oe of logged in user or to student of oe of logged in user
if (!isEmptyArray($all_oe_kurzbz_berechtigt))
@@ -92,22 +116,23 @@ $filterWidgetArray = array(
'checkboxes' => 'issue_id',
'columnsAliases' => array(
'ID',
'Fehlercode',
'Fehlercode extern',
'Datum',
'Inhalt',
'Inhalt extern',
ucfirst($this->p->t('fehlermonitoring', 'fehlercode')),
ucfirst($this->p->t('fehlermonitoring', 'fehlercodeExtern')),
ucfirst($this->p->t('global', 'datum')),
ucfirst($this->p->t('fehlermonitoring', 'inhalt')),
ucfirst($this->p->t('fehlermonitoring', 'inhaltExtern')),
'PersonId',
'OE',
'Fehlertyp',
'Fehlerstatus',
'Verarbeitet von',
'Verarbeitet am',
'Applikation',
'Fehlertypcode',
'Statuscode',
'Vorname',
'Nachname'
ucfirst($this->p->t('lehre', 'organisationseinheit')),
ucfirst($this->p->t('fehlermonitoring', 'fehlertyp')),
ucfirst($this->p->t('fehlermonitoring', 'fehlerstatus')),
ucfirst($this->p->t('fehlermonitoring', 'verarbeitetVon')),
ucfirst($this->p->t('fehlermonitoring', 'verarbeitetAm')),
ucfirst($this->p->t('global', 'applikation')),
ucfirst($this->p->t('fehlermonitoring', 'fehlertypcode')),
ucfirst($this->p->t('fehlermonitoring', 'statuscode')),
ucfirst($this->p->t('person', 'vorname')),
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig'))
),
'formatRow' => function($datasetRaw) {
@@ -21,8 +21,6 @@
<?php FilterWidget::loadViewSelectFilters(); ?>
</div>
<br>
<!-- Filter save options -->
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
@@ -1,17 +1,28 @@
<div class="up-down-border">
<br>
<div>
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('filter', 'filterHinzufuegen')); ?>:
</span>
<span>
<select id="addFilter" class="drop-down-filters"></select>
</span>
</div>
<br>
<div id="appliedFilters"></div>
<div class="margin-left-25">
<span>
<input id="applyFilter" type="button" value="<?php echo ucfirst($this->p->t('filter', 'filterApply')); ?>">
</span>
</div>
<br>
<div id="appliedFilters"></div>
<div>
<span class="filter-span-label">
<?php echo ucfirst($this->p->t('filter', 'filterHinzufuegen')); ?>:
</span>
<span>
<select id="addFilter" class="drop-down-filters"></select>
</span>
<span>
<input id="applyFilter" type="button" value="<?php echo ucfirst($this->p->t('global', 'hinzufuegen')); ?>">
</span>
</div>
+6 -173
View File
@@ -28,6 +28,7 @@ require_once('../../../include/studiensemester.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/erhalter.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/lehrelisthelper.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -64,183 +65,15 @@ if(isset($_GET['output']) && ($output='odt' || $output='doc'))
isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL;
isset($_GET['lehreinheit_id']) ? $lehreinheit = $_GET['lehreinheit_id'] : $lehreinheit = NULL;
$doc = new dokument_export('Anwesenheitslist');
// Teilnehmende Gruppen laden
$qry = "SELECT DISTINCT ON(kuerzel, semester, verband, gruppe, gruppe_kurzbz)
UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel,
semester,
verband,
gruppe,
gruppe_kurzbz
FROM campus.vw_lehreinheit
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
AND studiensemester_kurzbz=".$db->db_add_param($studiensemester);
if($lehreinheit!='')
$qry.=" AND lehreinheit_id=".$db->db_add_param($lehreinheit, FHC_INTEGER);
$gruppen_string = '';
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
if($gruppen_string!='')
$gruppen_string.=', ';
if($row->gruppe_kurzbz=='')
$gruppen_string.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe);
else
$gruppen_string.=$row->gruppe_kurzbz;
}
}
// Verplante Räume laden
$qry = "SELECT distinct(ort_kurzbz)
FROM lehre.tbl_stundenplan
WHERE lehreinheit_id in
(
SELECT lehreinheit_id
FROM campus.vw_lehreinheit
WHERE lehrveranstaltung_id = ".$db->db_add_param($lvid, FHC_INTEGER)."
AND studiensemester_kurzbz = ".$db->db_add_param($studiensemester)."
)";
if($lehreinheit!='')
$qry.= " AND tbl_stundenplan.lehreinheit_id = ".$db->db_add_param($lehreinheit, FHC_INTEGER);
$raum_string = '';
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
if($raum_string!='')
$raum_string.=', ';
if($row->ort_kurzbz!='')
$raum_string.=$row->ort_kurzbz;
}
}
$stg = new studiengang();
$stg->load($lv->studiengang_kz);
$studiengang_bezeichnung=$stg->bezeichnung;
$doc = new dokument_export('Anwesenheitslist');
$stg->getAllTypes();
$data = array(
'gruppen'=>$gruppen_string,
'bezeichnung'=>$lv->bezeichnung,
'lehrveranstaltung_id'=>$lv->lehrveranstaltung_id,
'studiengang'=>$studiengang_bezeichnung,
'studiengang_kz'=>$lv->studiengang_kz,
'typ'=>$stg->studiengang_typ_arr[$stg->typ],
'ects'=>$lv->ects,
'sprache'=>$lv->sprache,
'studiensemester'=>$studiensemester,
'semester'=>$lv->semester,
'orgform'=>$lv->orgform_kurzbz,
'raum'=>$raum_string,
);
//Lehrende der LV laden und in ein Array schreiben
$lehrende = new lehreinheitmitarbeiter();
$lehrende->getMitarbeiterLV($lvid, $studiensemester, $lehreinheit);
$arr_lehrende = array();
if (isset($lehrende->result))
{
foreach($lehrende->result AS $row)
{
$data[]=array('lehrende'=>array('uid'=>$row->uid,'name'=>$row->vorname.' '.$row->nachname));
$arr_lehrende[]=mb_strtoupper($row->uid);
}
}
//Studierende der LV laden und in ein Array schreiben
$qry = 'SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN lehre.tbl_note USING (note)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester);
if($lehreinheit!='')
$qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$db->db_add_param($lehreinheit, FHC_INTEGER);
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($studiensemester);
$stsemdatumvon = $stsem_obj->start;
$stsemdatumbis = $stsem_obj->ende;
$erhalter = new erhalter();
$erhalter->getAll();
$a_o_kz = '9'.sprintf("%03s", $erhalter->result[0]->erhalter_kz); //Stg_Kz AO-Studierende auslesen (9005 fuer FHTW)
$anzahl_studierende = 0;
$datum = new datum();
$zusatz = '';
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
if($row->status!='Abbrecher' && $row->status!='Unterbrecher')
{
$anzahl_studierende++;
if($row->status=='Incoming') //Incoming
$zusatz='(i)';
else
$zusatz='';
if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing
$zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')';
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
if($row->mitarbeiter_uid!='') //mitarbeiter
$zusatz.='(ma)';
if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende
$zusatz.='(a.o.)';
$data[]=array('student'=>array(
'vorname'=>$row->vorname,
'nachname'=>$row->nachname,
'personenkennzeichen'=>trim($row->matrikelnr),
'matr_nr'=>$row->matr_nr,
'semester'=>$row->semester,
'verband'=>trim($row->verband),
'gruppe'=>trim($row->gruppe),
'zusatz'=>$zusatz,
'studiengang_kurzbz'=>$row->kurzbzlang
));
}
}
//Anzahl Studierende in Array $data (an erster Stelle) einfuegen
$data = array_reverse($data, true);
$data['anzahl_studierende'] = $anzahl_studierende;
$data = array_reverse($data, true);
}
$lehrelisthelper = new LehreListHelper($db, $studiensemester, $lvid, $lv, $stg, $lehreinheit);
$arr_lehrende = $lehrelisthelper->getArr_Lehrende();
$data = $lehrelisthelper->getData();
$studentuids = $lehrelisthelper->getStudentUids();
$doc->addDataArray($data,'anwesenheitsliste');
if($lehreinheit!='')
+22 -3
View File
@@ -34,6 +34,7 @@
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/vertrag.class.php');
require_once '../../../include/covid/covidhelper.class.php';
$sprache = getSprache();
$p=new phrasen($sprache);
@@ -61,7 +62,8 @@
$stsem = $_GET['stsem'];
else
die($p->t('anwesenheitsliste/studiensemesterIstUngueltig'));
$covidhelper = new CovidHelper();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
@@ -69,6 +71,11 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<style type="text/css">
.covidstatus {
padding-left: 4em;
}
</style>
</head>
<body>
@@ -84,6 +91,7 @@
<?php
if($error==0)
{
$covid_content = '';
$aw_content='';
$awbild_content='';
$nt_content='';
@@ -98,6 +106,7 @@
$lv = new lehrveranstaltung($lvid);
$covid_content .= ($covidhelper->isUdfDefined()) ? '<tr><td><a href="covidstatusliste.php?stg='.$stg_kz.'.&sem='.$sem.'&lvid='.$lvid.'&stsem='.$stsem.'">' . $p->t('anwesenheitsliste/gesamtliste') . ' ' . $lv->bezeichnung . '</a></td></tr>' : '';
$aw_content .= "<tr><td><a class='Item' href='anwesenheitsliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&stsem=$stsem'>".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung</a></td></tr>";
$awbild_content .= "<tr><td><a class='Item' href='fotoliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&stsem=$stsem'>".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung</a></td></tr>";
$nt_content .= "<tr><td><a class='Item' href='notenliste.xls.php?stg=$stg_kz&sem=$sem&lvid=$lvid&stsem=$stsem'>".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung</a></td></tr>";
@@ -151,6 +160,7 @@
}
}
$covid_content .= ($covidhelper->isUdfDefined()) ? '<tr><td><a href="covidstatusliste.php?stg='.$stg_kz.'.&sem='.$sem.'&lvid='.$lvid.'&lehreinheit_id='.$lastlehreinheit.'&stsem='.$stsem.'">&nbsp;&nbsp;&nbsp;<img src="../../../skin/images/haken.gif" />' . $kurzbz . ' - ' . $lehrform . ' - ' . $gruppen . ' (' . $lektoren . ')</a></td></tr>' : '';
$aw_content .= "<tr><td><a class='Item' href='anwesenheitsliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
$awbild_content .= "<tr><td><a class='Item' href='fotoliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
$nt_content .= "<tr><td><a class='Item' href='notenliste.xls.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
@@ -186,6 +196,7 @@
}
}
$covid_content .= ($covidhelper->isUdfDefined()) ? '<tr><td><a href="covidstatusliste.php?stg='.$stg_kz.'.&sem='.$sem.'&lvid='.$lvid.'&lehreinheit_id='.$lastlehreinheit.'&stsem='.$stsem.'">&nbsp;&nbsp;&nbsp;<img src="../../../skin/images/haken.gif" />' . $kurzbz . ' - ' . $lehrform . ' - ' . $gruppen . ' (' . $lektoren . ')</a></td></tr>' : '';
$aw_content .= "<tr><td><a class='Item' href='anwesenheitsliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
$awbild_content .= "<tr><td><a class='Item' href='fotoliste.pdf.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
$nt_content .= "<tr><td><a class='Item' href='notenliste.xls.php?stg=$stg_kz&sem=$sem&lvid=$lvid&lehreinheit_id=$lastlehreinheit&stsem=$stsem'>&nbsp;&nbsp;&nbsp;<img src='../../../skin/images/haken.gif' />$kurzbz - $lehrform - $gruppen ($lektoren)</a></td></tr>";
@@ -198,6 +209,11 @@
}
else
{
if($covid_content!='')
$covid_content = "<table border='0' cellspacing='0'><tr><td><h3>".$p->t('anwesenheitsliste/covidstatuslisten')."</h3></td></tr>".$covid_content."</table>";
else
$covid_content = ($covidhelper->isUdfDefined()) ? $p->t('anwesenheitsliste/keineStudentenVorhanden') : '';
if($aw_content!='')
$aw_content = "<table border='0' cellspacing='0'><tr><td><h3>".$p->t('anwesenheitsliste/anwesenheitslisten')."</h3></td></tr>".$aw_content."</table>";
else
@@ -221,17 +237,20 @@
$aw_content='';
if(defined('CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN') && !CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN)
$awbild_content='';
echo "<table cellpadding='0' cellspacing='0'>
<tr>
<td>$aw_content</td>
<td class=\"covidstatus\">$covid_content</td>
</tr>
<tr>
<td>$awbild_content</td>
<td></td>
</tr>
<tr>
<td>$nt_content</td>
<td></td>
</tr>
</table>";
@@ -45,6 +45,8 @@ require_once ('../../../../include/note.class.php');
require_once ('../../../../include/notenschluessel.class.php');
require_once ('../../../../include/studienplan.class.php');
require_once ('../../../../include/addon.class.php');
require_once ('../../../../include/mobilitaet.class.php');
require_once ('../../../../include/student.class.php');
$summe_stud = 0;
$summe_t2 = 0;
@@ -80,6 +82,8 @@ if (! $lv_obj->load($lvid))
// Studiengang laden
$stg_obj = new studiengang($lv_obj->studiengang_kz);
$stg_obj->studiengang_kz;
$datum_obj = new datum();
if (isset($_GET['stsem']))
@@ -1113,8 +1117,8 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
campus.vw_student_lehrveranstaltung
JOIN campus.vw_student USING(uid)
WHERE
studiensemester_kurzbz = " . $db->db_add_param($stsem) . "
AND lehrveranstaltung_id = " . $db->db_add_param($lvid) . "
studiensemester_kurzbz = ". $db->db_add_param($stsem). "
AND lehrveranstaltung_id = ". $db->db_add_param($lvid). "
ORDER BY nachname, vorname ";
if ($result_stud = $db->db_query($qry_stud))
@@ -1122,11 +1126,29 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
$i = 1;
$errorshown = false;
$summe_stud = $db->db_num_rows($result_stud);
//Ergänzung um Mobility-Eintrag (d.d.)
while ($row_stud = $db->db_fetch_object($result_stud))
{
$grades[$row_stud->uid]['vorname'] = $row_stud->vorname;
$grades[$row_stud->uid]['nachname'] = $row_stud->nachname;
$student = new student();
$student->load($row_stud->uid);
$student->result[]= $student;
$prestudent_id = $student->prestudent_id;
$mobility = new mobilitaet();
$mobility->loadPrestudent($prestudent_id);
$output = $mobility->result;
$eintrag = '';
foreach ($output as $k)
{
if($k->mobilitaetstyp_kurzbz == 'GS')
$eintrag = ' (d.d.)';
}
$grades[$row_stud->uid]['mobility'] = $eintrag;
// Noten aus Uebungstool
$le = new lehreinheit();
$le->load_lehreinheiten($lvid, $stsem);
@@ -1167,12 +1189,13 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
$anzahlChanged = 0;
foreach ($grades as $uid => $data)
//Ausgabe Array
{
$htmlstring .= '<tr class="liste' . ($i % 2) . '">
<td><a href="mailto:' . $uid . '@' . DOMAIN . '"><img src="../../../../skin/images/button_mail.gif"></a></td>
<td>' . $db->convert_html_chars($uid) . '</td>
<td id= '. $uid. "_nn". '>' . $db->convert_html_chars($data['nachname']) . '</td>
<td id= '. $uid. "_vn". '>' . $db->convert_html_chars($data['vorname']) . '</td>';
<td id= '. $uid. "_vn". '>' . $db->convert_html_chars($data['vorname']) . $db->convert_html_chars($data['mobility']) .'</td>';
// Bereits eingetragene Note ermitteln
if ($lvgesamtnote = new lvgesamtnote($lvid, $uid, $stsem))
@@ -1619,5 +1642,11 @@ echo $htmlstring;
<div id="nachpruefung_div"></div>
<div id="legende">
<hr>
<h3>Legende</h2>
<p>(d.d.)... Double Degree Program</p>
</div>
</body>
</html>
+166
View File
@@ -0,0 +1,166 @@
<?php
/* Copyright (C) 2015 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Manfred Kindl <manfred.kindl@technikum-wien.at>
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheitgruppe.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/erhalter.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/lehrelisthelper.class.php');
require_once('../../../include/covid/covidhelper.class.php');
$debug = false;
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$user=get_uid();
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($user);
if(isset($_GET['lvid']) && is_numeric($_GET['lvid']))
$lvid = $_GET['lvid'];
else
die('Eine gueltige LvID muss uebergeben werden');
$lv = new lehrveranstaltung();
$lv->load($lvid);
if(isset($_GET['stsem']))
$studiensemester = $_GET['stsem'];
else
die('Eine Studiensemester muss uebergeben werden');
if( !$berechtigung->isBerechtigt('admin')
&& !$berechtigung->isBerechtigt('assistenz')
&& !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's')
&& !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester))
die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen');
isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL;
isset($_GET['lehreinheit_id']) ? $lehreinheit = $_GET['lehreinheit_id'] : $lehreinheit = NULL;
$stg = new studiengang();
$stg->load($lv->studiengang_kz);
$lehrelisthelper = new LehreListHelper($db, $studiensemester, $lvid, $lv, $stg, $lehreinheit);
$arr_lehrende = $lehrelisthelper->getArr_Lehrende();
$data = $lehrelisthelper->getData();
$studentuids = $lehrelisthelper->getStudentUids();
$covidhelper = new CovidHelper();
$covidhelper->fetchCovidStatus($studentuids);
$covidstatus = $covidhelper->getCovidStatus();
$now = new DateTime('now', new DateTimeZone('Europe/Vienna'));
header('Content-Type: text/html; charset=utf-8');
?>
<!<!doctype html>
<html>
<head>
<title>FHC - Nachweisliste</title>
<link rel="stylesheet" type="text/css" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css">
<link href="../../../vendor/components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<h1>Nachweisliste "<?php echo $data['bezeichnung']; ?>"</h1>
<ul>
<li><strong>Gruppen</strong>: <?php echo $data['gruppen']; ?></li>
<li><strong>Studiensemester</strong>: <?php echo $data['studiensemester']; ?></li>
<li><strong>Lehrende</strong>: <?php echo $lehrelisthelper->getLehrende_String(); ?></li>
<li><strong>generiert</strong>: <?php echo $now->format('d.m.Y H:i'); ?></li>
<li><strong>Anzahl der Studierenden</strong>: <?php echo $data['anzahl_studierende']; ?></li>
</ul>
<table class="table table-striped table-hover table-condensed">
<thead>
<tr>
<th>lfd.Nr.</th>
<th>Name</th>
<th>Kennzeichen</th>
<th>Gruppe</th>
<th>Nachweis</th>
</tr>
</thead>
<tbody>
<?php
$len = strlen($data['anzahl_studierende']);
$lfdnr = 1;
foreach ($data as $value)
{
if( !(is_array($value) && isset($value['student'])) )
{
continue;
}
$tmpstudent =& $value['student'];
?>
<tr class="<?php echo $covidhelper->getBootstrapClass($tmpstudent['uid'])?>" title="<?php echo $covidhelper->getTitle($tmpstudent['uid'])?>">
<td><?php echo sprintf('%0' . $len . 'd', $lfdnr); ?></td>
<td><?php echo $tmpstudent['nachname'] . ' ' . $tmpstudent['vorname'] . ' ' . $tmpstudent['zusatz']; ?></td>
<td><?php echo $tmpstudent['personenkennzeichen']; ?></td>
<td><?php echo $tmpstudent['semester'] . $tmpstudent['verband'] . $tmpstudent['gruppe']; ?></td>
<td><?php echo $covidhelper->getIconHtml($tmpstudent['uid']); ?></td>
</tr>
<?php
$lfdnr++;
}
?>
</tbody>
</table>
</div>
</div>
<?php
if( $debug )
{
?>
<div class="row">
<div class="col-lg-6">
<div class="debug">
<pre>
<?php
print_r($data);
print_r($covidstatus);
?>
</pre>
</div>
</div>
</div>
<?php
}
?>
</div>
</body>
</html>
Binary file not shown.
-78
View File
@@ -1,78 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/phrasen.class.php');
$sprache = getSprache();
$p= new phrasen($sprache);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title><?php echo $p->t('courseInformation/ectsLvInfo');?></title>
</head>
<body style="padding: 10px">
<h1><?php echo $p->t('courseInformation/lvInfoBeispiele');?></h1>
<table class="tabcontent">
<tr>
<td width="85%">
&nbsp;
</td>
<td>
<ul>
<li>&nbsp;<a class="Item" href='index.php'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
<li>&nbsp;<a class="Item" href='freigabe.php'><font size='3'><?php echo $p->t('courseInformation/freigabe')?></font></a></li>
<li>&nbsp;<a class="Item" href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
<li>&nbsp;<a class="Item" href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie')?></font></a></li>
</ul>
</td>
</tr>
</table>
<table class="tabcontent">
<tr>
<td class="tdwidth10">
<ul>
<!--
<li><a href='../../../../documents/lva_info/Beispiel__IT_Projektarbeit_6.pdf' target="_blank">Beispiel IT Projektarbeit (kommentiert und ausgef&uuml;llt)</a></li>
<li><a href='../../../../documents/lva_info/Beispiel_Balog.pdf' target="_blank"">Beispiel Computerarchitektur (ausgef&uuml;llt)</a></li>
<li><a href='../../../../documents/lva_info/Beispiel_Woletz.pdf' target="_blank">Beispiel Projektmanagement (ausgef&uuml;llt)</a></li>
-->
<li><a href='Beispiel_Projektmarketing.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielProjektmarketing');?></a></li>
<li><a href='Beispiel_ITProjektarbeit_at.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielItProjektarbeitDeutsch');?></a></li>
<li><a href='Beispiel_ITProjektarbeit_en.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielItProjektarbeitEnglisch');?></a></li>
<li><a href='Beispiel_Computerarchitektur.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielComputerarchitektur');?></a></li>
<li><a href='Beispiel_Change_Management.pdf' target='_blank' class='Item'><?php echo $p->t('courseInformation/beispielMSEChangeManagement');?></a></li>
</ul>
</td>
</tr>
</table>
</body>
</html>
-363
View File
@@ -1,363 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*
@author Andres Oesterreicher
@date 20.10.2005
@brief Formular zum Freigeben der LV Informationen aus der tabelle tbl_lvinfo
@edit 08-11-2006 Versionierung entfernt. Studiensemester = WS2007
03-01-2006 Anpassung an neue DB
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/basis_db.class.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/lvinfo.class.php');
require_once('../../../../include/phrasen.class.php');
require_once('../../../../include/benutzerberechtigung.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
//if(!check_lektor($user))
// die('<center>'.$p->t('global/keineBerechtigungFuerDieseSeite').'</center>');
/* WriteLog($qry,$uid)
* @brief Schreib die Querys im format: uid - datum - qry ins LogFile
* @param $qry Query anweisung
* $uid Username
* @return true wenn ok false wenn fehler beim oeffnen
*/
function WriteLog($qry,$uid)
{
if($fp=fopen(LOG_PATH.'lvinfo.log',"a"))
{
fwrite($fp,"\n");
fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry);
fclose($fp);
return true;
}
else
return false;
}
$lv=trim((isset($_REQUEST['lv']) ? $_REQUEST['lv']:''));
//Studiengang der Angezeigt werden soll
$stg=trim((isset($_REQUEST['stg']) ? $_REQUEST['stg']:''));
//Semester das angezeigt werden soll
$sem=trim((isset($_REQUEST['sem']) ? $_REQUEST['sem']:''));
if (!$rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
die ($rechte->errormsg);
if(isset($_GET["lv"])) //Id des DS der freigegeben/nicht freigegeben werden soll
$id=$_GET["lv"];
if(isset($_GET["del"])) //Wenn diese Variable gesetzt ist dann wird DS mit $idde und $iden geloescht
$del=$_GET["del"];
if(isset($_GET["changestat"])) //Wenn diese Variable gesetzt ist dann wird DS mit $id freigegeben/nicht freigegeben
$changestat=$_GET["changestat"];
if(isset($_POST["status"]) && $_POST["status"] =='changestg')
unset($sem);
if(isset($del) && isset($lv))
{
//Loeschen der beiden Datensaetze
$lvinfo_obj = new lvinfo();
$db->db_query('BEGIN');
if($lvinfo_obj->delete($lv))
{
if(!WriteLog($lvinfo_obj->lastqry,$user))
{
echo "<br>".$p->t('courseInformation/fehlerBeimSchreibenDesLog')."<br>";
}
$db->db_query('COMMIT');
}
else
{
$db->db_query('ROLLBACK');
echo "<br>".$p->t('global/fehleraufgetreten')."<br>";
}
}
if(isset($changestat) && isset($lv) && isset($_GET['lang']))
{
//Setzt die Spalte genehmigt auf den entsprechenden Wert
//=Wenn Hackerl angeklickt wird
$qry="SELECT genehmigt FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache=";
if($_GET['lang']=='de')
$qry.= $db->db_add_param(ATTR_SPRACHE_DE);
else
$qry.= $db->db_add_param(ATTR_SPRACHE_EN);
if($result=$db->db_query($qry))
{
if($row=$db->db_fetch_object($result))
{
$wert = $row->genehmigt=='t'?'false':'true';
$qry="UPDATE campus.tbl_lvinfo SET genehmigt=$wert
WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache=";
if($_GET['lang']=='de')
$qry .= $db->db_add_param(ATTR_SPRACHE_DE);
else
$qry .= $db->db_add_param(ATTR_SPRACHE_EN);
if($db->db_query($qry))
WriteLog($qry,$user);
else
echo $p->t('global/fehlerBeimLesenAusDatenbank');
}
else
echo $p->t('global/fehlerBeimLesenAusDatenbank');
}
else
echo $p->t('global/fehlerBeimLesenAusDatenbank');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="../../../../skin/jquery.css" type="text/css"/>
<link rel="stylesheet" href="../../../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="../../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../../vendor/jquery/sizzle/sizzle.js"></script>
<title><?php echo $p->t('courseInformation/ectsLvInfo');?></title>
<script language="JavaScript" type="text/javascript">
function ask() {
return confirm("<?php echo $p->t('global/warnungWirklichLoeschen');?>");
}
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[1,0]],
widgets: ["zebra"],
headers : {0:{sorter: false}}
});
});
</script>
</head>
<body style="padding:10px">
<h1><?php echo $p->t('courseInformation/lvInfoFreigabe');?></h1>
<table class="tabcontent">
<tr>
<td width="85%">
&nbsp;
</td>
<td>
<ul>
<li>&nbsp;<a href='index.php?<?php echo "stg=$stg&sem=".(isset($sem)?$sem:'')."&lvid=$lv"?>'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
<li>&nbsp;<a href='freigabe.php?<?php echo "stg=$stg&sem=".(isset($sem)?$sem:'')."&lv=$lv"?>'><font size='3'><?php echo $p->t('courseInformation/freigabe');?></font></a></li>
<li>&nbsp;<a href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
<!--<li>&nbsp;<a href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie');?></font></a></li>-->
</ul>
</td>
</tr>
</table>
<?php
//DropDown Menues zur Auswahl von Studiengang und Semester anzeigen
echo "<form name='auswFrm' action='".$_SERVER['PHP_SELF']."' method='POST'>";
echo "<input type='hidden' name='status' value='a'>";
echo "<input type='hidden' name='lv' value='$lv'>";
//stg Drop Down
$qry = "SELECT distinct tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kurzbzlang FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung, public.tbl_studiengang
WHERE tbl_lvinfo.aktiv=true
AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz
ORDER by kurzbzlang";
if(!$result=$db->db_query($qry))
die ('<center>'.$p->t('global/fehlerBeimLesenAusDatenbank').'</center>');
echo $p->t('global/studiengang')." <SELECT name='stg' onChange='javascript:window.document.auswFrm.status.value=\"changestg\";window.document.auswFrm.submit();'>";
//$firststg;
$vorhanden=false;
while($row=$db->db_fetch_object($result))
{
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$row->studiengang_kz))
{
if(!isset($firststg))
$firststg=$row->studiengang_kz;
if(!isset($stg))
$stg=$row->studiengang_kz;
if($stg==$row->studiengang_kz)
{
echo "<option value='$row->studiengang_kz' selected>$row->kurzbzlang</option>";
$vorhanden=true;
}
else
echo "<option value='$row->studiengang_kz'>$row->kurzbzlang</option>";
}
}
echo "</SELECT>";
if(!$vorhanden) //Wenn $stg einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt
$stg=$firststg;
//Semester Drop Down
$qry = "SELECT distinct semester FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung
WHERE tbl_lvinfo.aktiv=true
AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($stg)."
ORDER by semester";
if(!$result=$db->db_query($qry))
die ("<center>".$p->t('global/fehleraufgetreten')."</center>");
echo " ".$p->t('global/semester')." <SELECT name='sem' onChange='javascript:window.document.auswFrm.submit();'>";
//$firstsem;
$vorhanden=false;
while($row=$db->db_fetch_object($result))
{
if(!isset($firstsem))
$firstsem = $row->semester;
if(!isset($sem))
$sem=$row->semester;
if($sem==$row->semester)
{
echo "<option value='$row->semester' selected>$row->semester</option>";
$vorhanden=true;
}
else
echo "<option value='$row->semester'>$row->semester</option>";
}
echo "</SELECT>";
if(!$vorhanden) //Wenn $sem einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt
$sem=$firstsem;
//Anzeigen der Liste mit den LV - Informationen
?>
<br><br>
<table>
<tr>
<td>
<table id="myTable" class="tablesorter">
<thead>
<tr class='liste'>
<th></th>
<th><?php echo $p->t('global/lehrveranstaltung');?></th>
<th><?php echo $p->t('courseInformation/bearbeitetVon');?></th>
<th><?php echo $p->t('courseInformation/updateAm');?></th>
<th><?php echo $p->t('global/anzeigen');?></th>
<th><?php echo $p->t('courseInformation/freigeben');?></th>
</tr>
</thead>
<tbody>
<?php
$qry="SELECT *, tbl_lehrveranstaltung.bezeichnung as bezeichnung,
to_char(tbl_lvinfo.updateamum,'DD.MM.YYYY HH24:MI') as amum,
tbl_lvinfo.updateamum as updateamum, tbl_lvinfo.updatevon as updatevon
FROM
campus.tbl_lvinfo
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
studiengang_kz=".$db->db_add_param($stg)."
AND semester=".$db->db_add_param($sem)." AND tbl_lvinfo.aktiv=true
AND tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_DE)."
ORDER BY tbl_lehrveranstaltung.bezeichnung ASC";
if(!$result=$db->db_query($qry))
die("<center>Fehler bei einer Datenbankabfrage</center>");
$i=-1;
while($row=$db->db_fetch_object($result))
{
$i++;
$qry1="SELECT *,
tbl_lehrveranstaltung.bezeichnung as bezeichnung,
tbl_lvinfo.updatevon as updatevon
FROM
campus.tbl_lvinfo
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE
tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_EN)."
AND lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id);
if(!$result1=$db->db_query($qry1))
die("<center>Fehler bei einer Datenbankabfrage</center>");
if(!$row1=$db->db_fetch_object($result1))
die("<center>Fehler bei einer Datenbankabfrage</center>");
$qry2="SELECT vorname, nachname FROM campus.vw_mitarbeiter WHERE uid=".$db->db_add_param($row->updatevon);
$style='';
if ($lv==$row->lehrveranstaltung_id)
$style='style="background-color: #AAA; border-top: 1px solid black; border-bottom: 1px solid black"';
$bearbeitet=$row->updatevon;
if($result2=$db->db_query($qry2))
if($row2=$db->db_fetch_object($result2))
$bearbeitet=$row2->vorname.' '.$row2->nachname;
echo "\n";
echo "<tr class='liste".($i%2)."'>"."\n";
echo "<td $style align='center'><a href='".$_SERVER['PHP_SELF']."?del=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id' onClick='return ask();'>Delete</a></td>"."\n";
echo "<td $style>$row->bezeichnung</td>"."\n";
//echo "<td align='center'>$row->studiensemester_kurzbz</td>"."\n";
echo "<td $style>$bearbeitet</td>"."\n";
echo "<td $style>".$row->amum."</td>"."\n";
echo "<td $style align='center'><a href='#' onClick='javascript:window.open(\"preview.php?lv=$row->lehrveranstaltung_id&language=de\",\"Preview\",\"width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes\");'>German</a>&nbsp;";
echo "<a href='#' onClick='javascript:window.open(\"preview.php?lv=$row1->lehrveranstaltung_id&language=en\",\"Preview\",\"width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes\");'>English</a></td>"."\n";
echo "<td $style align='center'>DE <input type='checkbox' onClick='javascript:window.location.href=\"".$_SERVER['PHP_SELF']."?changestat=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id&lang=de\";' ".($row->genehmigt=='t'?'checked':'').">"."\n";
echo "<input type='checkbox' onClick='javascript:window.location.href=\"".$_SERVER['PHP_SELF']."?changestat=1&stg=$stg&sem=$sem&lv=$row->lehrveranstaltung_id&lang=en\";' ".($row1->genehmigt=='t'?'checked':'')."> EN</td>"."\n";
echo "</tr>";
}
?>
</tbody>
</table>
</td>
</tr>
</table>
</body>
</html>
-914
View File
@@ -1,914 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/* @author Andres Oesterreicher
@date 20.10.2005
@brief Formular zum eintragen der ECTS Information auf Deutsch und Englisch
Die Informationen werden in der Tabelle tbl_lvinfo gespeichert.
@edit 08-11-2006 Versionierung entfernt: Studiensemester=WS2007
02-01-2007 Umstellung auf die neue DB
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../config/global.config.inc.php');
require_once('../../../../include/basis_db.class.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/lvinfo.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/phrasen.class.php');
require_once('../../../../include/safehtml/safehtml.class.php');
require_once('../../../../include/benutzerberechtigung.class.php');
require_once('../../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../../include/mail.class.php');
require_once('../../../../include/benutzer.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$sprache1 = getSprache();
$p=new phrasen($sprache1);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$output = '';
$errormsg = '';
$okmsg='';
$lv = '';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title><?php echo $p->t('courseInformation/ectsInformation')?></title>
<style type="text/css">
textarea
{
font-size: 13px;
}
</style>
<script language="JavaScript" type="text/javascript">
function save()
{
window.document.editFrm.status.value="save";
window.document.editFrm.action="<?php echo $_SERVER['PHP_SELF']; ?>";
window.document.editFrm.target="_self";
window.document.editFrm.submit();
}
function freigeben()
{
window.document.editFrm.status.value="freigeben";
window.document.editFrm.action="<?php echo $_SERVER['PHP_SELF']; ?>";
window.document.editFrm.target="_self";
window.document.editFrm.submit();
}
</script>
</head>
<body style="padding: 10px">
<?php
$oe_kurzbz='';
function Cut($string)
{
if(strlen($string)>50)
return substr($string,0,47)."...";
else
return $string;
}
if(isset($_GET['lvid']))
$lv=$_GET['lvid'];
//Variablenuebernahme
if(isset($_POST['lv'])) //LehrveranstaltungsID
{
$lv = $_POST['lv'];
$lv_obj = new lehrveranstaltung();
$lv_obj->load($lv);
$oe_kurzbz = $lv_obj->oe_kurzbz;
}
if(isset($_GET['lvid']))
{
$lv_obj = new lehrveranstaltung();
$lv_obj->load($lv);
if(!isset($stg))
{
$stg = $lv_obj->studiengang_kz;
$oe_kurzbz = $lv_obj->oe_kurzbz;
}
if(!isset($sem))
$sem = $lv_obj->semester;
}
else
{
$stg = '';
}
if(isset($_POST['stg']))
{
$stg = $_POST['stg'];
if(!isset($oe_kurzbz))
{
$oe = new studiengang();
$oe->load($stg);
$oe_kurzbz = $oe->oe_kurzbz;
}
}
if(!isset($sem) && isset($_POST['sem']))
$sem = $_POST['sem'];
if(isset($_POST['changed'])) //Gibt an welches der Auswahlfelder geaendert wurde
$changed = $_POST['changed'];
if(isset($_POST['status']))
$status = $_POST['status'];
// if(isset($_POST["freigeben"])) //Wird auf 'ja' gesetzt wenn gleich freigegebenwerden soll nach dem Speichern
// $freigeben = $_POST["freigeben"];
if(isset($_POST['sprache'])) //Sprache fuer dieses Lehrfach
$sprache = $_POST['sprache'];
// Berechtigungen ueberpruefen
$lektor_der_lv = false;
$lektor = new lehreinheitmitarbeiter();
$lektor_der_lv = $lektor->existsLV($lv, null, $user);
// Bearbeiten nur moeglich, wenn Lektor der LV und bearbeiten fuer Lektoren aktiviert ist
// Oder Berechtigung zum Bearbeiten eingetragen ist
$berechtigt = true;
if(!(
(!defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && $lektor_der_lv)
|| (defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT==true && $lektor_der_lv)
|| $rechte->isBerechtigt('lehre/lvinfo',$oe_kurzbz)
|| $rechte->isBerechtigt('lehre/lvinfo',$stg)
)
)
{
$berechtigt = false;
}
//Variablen fuer das Formular
$lehrziele_de = (isset($_POST['lehrziele_de'])?$_POST['lehrziele_de']:'');
$lehrinhalte_de = (isset($_POST['lehrinhalte_de'])?$_POST['lehrinhalte_de']:'');
$voraussetzungen_de = (isset($_POST['voraussetzungen_de'])?$_POST['voraussetzungen_de']:'');
$unterlagen_de = (isset($_POST['unterlagen_de'])?$_POST['unterlagen_de']:'');
$pruefungsordnung_de = (isset($_POST['pruefungsordnung_de'])?$_POST['pruefungsordnung_de']:'');
$anmerkungen_de = (isset($_POST['anmerkungen_de'])?$_POST['anmerkungen_de']:'');
$kurzbeschreibung_de = (isset($_POST['kurzbeschreibung_de'])?$_POST['kurzbeschreibung_de']:'');
$anwesenheit_de = (isset($_POST['anwesenheit_de'])?$_POST['anwesenheit_de']:'');
$freig_de = (isset($_POST['freig_de'])?($_POST['freig_de']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):'');
$methodik_de = (isset($_POST['methodik_de'])?$_POST['methodik_de']:'');
//$titel_de = (isset($_POST['titel_de'])?$_POST['titel_de']:'');
$parser = new SafeHTML();
$lehrziele_de = $parser->parse($lehrziele_de);
$parser = new SafeHTML();
$lehrinhalte_de = $parser->parse($lehrinhalte_de);
$parser = new SafeHTML();
$voraussetzungen_de = $parser->parse($voraussetzungen_de);
$parser = new SafeHTML();
$unterlagen_de = $parser->parse($unterlagen_de);
$parser = new SafeHTML();
$pruefungsordnung_de = $parser->parse($pruefungsordnung_de);
$parser = new SafeHTML();
$anmerkungen_de = $parser->parse($anmerkungen_de);
$parser = new SafeHTML();
$kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de);
$parser = new SafeHTML();
$anwesenheit_de = $parser->parse($anwesenheit_de);
$parser = new SafeHTML();
$freig_de = $parser->parse($freig_de);
$parser = new SafeHTML();
$methodik_de = $parser->parse($methodik_de);
$lehrziele_en = (isset($_POST['lehrziele_en'])?$_POST['lehrziele_en']:'');
$lehrinhalte_en = (isset($_POST['lehrinhalte_en'])?$_POST['lehrinhalte_en']:'');
$voraussetzungen_en = (isset($_POST['voraussetzungen_en'])?$_POST['voraussetzungen_en']:'');
$unterlagen_en = (isset($_POST['unterlagen_en'])?$_POST['unterlagen_en']:'');
$pruefungsordnung_en = (isset($_POST['pruefungsordnung_en'])?$_POST['pruefungsordnung_en']:'');
$anmerkungen_en = (isset($_POST['anmerkungen_en'])?$_POST['anmerkungen_en']:'');
$kurzbeschreibung_en = (isset($_POST['kurzbeschreibung_en'])?$_POST['kurzbeschreibung_en']:'');
$anwesenheit_en = (isset($_POST['anwesenheit_en'])?$_POST['anwesenheit_en']:'');
$freig_en = (isset($_POST['freig_en'])?($_POST['freig_en']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):'');
$methodik_en = (isset($_POST['methodik_en'])?$_POST['methodik_en']:'');
//$titel_en = (isset($_POST['titel_en'])?$_POST['titel_en']:'');
$parser = new SafeHTML();
$lehrziele_en = $parser->parse($lehrziele_en);
$parser = new SafeHTML();
$lehrinhalte_en = $parser->parse($lehrinhalte_en);
$parser = new SafeHTML();
$voraussetzungen_en = $parser->parse($voraussetzungen_en);
$parser = new SafeHTML();
$unterlagen_en = $parser->parse($unterlagen_en);
$parser = new SafeHTML();
$pruefungsordnung_en = $parser->parse($pruefungsordnung_en);
$parser = new SafeHTML();
$anmerkungen_en = $parser->parse($anmerkungen_en);
$parser = new SafeHTML();
$kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en);
$parser = new SafeHTML();
$anwesenheit_en = $parser->parse($anwesenheit_en);
$parser = new SafeHTML();
$freig_en = $parser->parse($freig_en);
$parser = new SafeHTML();
$methodik_en = $parser->parse($methodik_en);
/* WriteLog($qry,$uid)
* @brief Schreib die Querys im format: uid - datum - qry ins LogFile
* @param $qry Query anweisung
* $uid Username
* @return true wenn ok false wenn fehler beim oeffnen
*/
function WriteLog($qry,$uid)
{
if($fp=fopen(LOG_PATH.'lvinfo.log',"a"))
{
fwrite($fp,"\n");
fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry);
fclose($fp);
return true;
}
else
return false;
}
if(isset($status))
{
if($status=='save') // Beim druecken auf "Speichern"
{
if ($berechtigt==false)
die($p->t('global/keineBerechtigungFuerDieseSeite'));
//Speichert die aenderungen in der Datenbank (de und en)
$lv_obj_sav= new lvinfo();
$save_error=false;
$save_log_error=false;
//Deutsch
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_de);
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_de);
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_de);
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_de);
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_de);
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_de);
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_de);
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_de);
$lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
$lv_obj_sav->updatevon=$user;
$lv_obj_sav->aktiv=true;
$lv_obj_sav->sprache=ATTR_SPRACHE_DE;
$lv_obj_sav->lehrveranstaltung_id=$lv;
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_de);
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_de);
$lv_obj1 = new lvinfo();
$vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE);
if(!$vorhanden)
$lv_obj_sav->new=true;
else
$lv_obj_sav->new=false;
if(!$lv_obj_sav->save())
$save_error=true;
else
if(!WriteLog($lv_obj_sav->lastqry,$user))
$save_log_error=true;
//Englisch
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_en);
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_en);
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_en);
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_en);
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_en);
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_en);
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_en);
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_en);
$lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
$lv_obj_sav->aktiv=true;
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
$lv_obj_sav->updatevon=$user;
$lv_obj_sav->sprache=ATTR_SPRACHE_EN;
$lv_obj_sav->lehrveranstaltung_id=$lv;
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_en);
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_en);
$lv_obj1 = new lvinfo();
$vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN);
if(!$vorhanden)
$lv_obj_sav->new=true;
else
$lv_obj_sav->new=false;
if(!$lv_obj_sav->save())
$save_error=true;
else
if(!WriteLog($lv_obj_sav->lastqry,$user))
$save_log_error=true;
if($save_error)
$errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern');
else
$okmsg.= $p->t('global/erfolgreichgespeichert');
if($save_log_error)
$errormsg.= $p->t('courseInformation/fehlerLogFile');
}
if($status=='freigeben') // Beim druecken auf "Zur Freigabe abschicken"
{
if ($berechtigt==false)
die($p->t('global/keineBerechtigungFuerDieseSeite'));
//Speichert die aenderungen in der Datenbank (de und en)
$lv_obj_sav= new lvinfo();
$save_error=false;
$save_log_error=false;
//Deutsch
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_de);
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_de);
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_de);
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_de);
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_de);
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_de);
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_de);
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_de);
$lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
$lv_obj_sav->updatevon=$user;
$lv_obj_sav->aktiv=true;
$lv_obj_sav->sprache=ATTR_SPRACHE_DE;
$lv_obj_sav->lehrveranstaltung_id=$lv;
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_de);
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_de);
$lv_obj1 = new lvinfo();
$vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE);
if(!$vorhanden)
$lv_obj_sav->new=true;
else
$lv_obj_sav->new=false;
if(!$lv_obj_sav->save())
$save_error=true;
else
if(!WriteLog($lv_obj_sav->lastqry,$user))
$save_log_error=true;
//Englisch
$lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "<br>", $lehrziele_en);
$lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "<br>", $lehrinhalte_en);
$lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "<br>", $voraussetzungen_en);
$lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "<br>", $unterlagen_en);
$lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "<br>", $pruefungsordnung_en);
$lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "<br>", $anmerkungen_en);
$lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "<br>", $kurzbeschreibung_en);
$lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "<br>", $anwesenheit_en);
$lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false);
$lv_obj_sav->aktiv=true;
$lv_obj_sav->updateamum=date('Y-m-d H:i:s');
$lv_obj_sav->updatevon=$user;
$lv_obj_sav->sprache=ATTR_SPRACHE_EN;
$lv_obj_sav->lehrveranstaltung_id=$lv;
$lv_obj_sav->methodik = mb_eregi_replace("\r\n", "<br>", $methodik_en);
//$lv_obj_sav->titel = mb_eregi_replace("\r\n", "<br>", $titel_en);
$lv_obj1 = new lvinfo();
$vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN);
if(!$vorhanden)
$lv_obj_sav->new=true;
else
$lv_obj_sav->new=false;
if(!$lv_obj_sav->save())
$save_error=true;
else
if(!WriteLog($lv_obj_sav->lastqry,$user))
$save_log_error=true;
if($save_error)
$errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern');
else
$okmsg.= $p->t('global/erfolgreichgespeichert');
if($save_log_error)
$errormsg.= $p->t('courseInformation/fehlerLogFile');
//Mail an Studiengangsleiter
$studiengangsleiter = new studiengang();
$stgleiter = $studiengangsleiter->getLeitung($stg);
if($stgleiter)
{
$to='';
foreach($stgleiter as $leiter)
{
if($to!='')
{
$to.=', '.$leiter.'@'.DOMAIN;
}
else
{
$to.=$leiter.'@'.DOMAIN;
}
}
$benutzer = new benutzer();
$benutzer->load($user);
$bezeichnung = new lehrveranstaltung();
$bezeichnung->load($lv);
$message = $p->t('courseInformation/diesIstEineAutomatischeMail').".\n".
$p->t('courseInformation/lvinfoWurdeUeberarbeitet',array($benutzer->nachname.' '.$benutzer->vorname,$bezeichnung->bezeichnung)).":\n";
$message.="\n".$p->t('courseInformation/sieKoennenDieseUnterFolgenderAdresseFreigeben').":\n".
APP_ROOT."cis/private/lehre/ects/freigabe.php?stg=".$stg."&sem=".$sem."&lv=".$lv;
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('courseInformation/freigabeLvinfo'), $message);
if($mail->send())
{
$okmsg.="<br><span style='color:green;'>".$p->t('courseInformation/freigabemailWurdeVersandt',array($to))."</span>";
}
else
{
$okmsg.="<br><span class='error'>".$p->t('courseInformation/fehlerBeimSendenAufgetreten',array($to))."!</span>";
}
}
else
{
$okmsg.="<br><span class='error'>".$p->t('courseInformation/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
}
$output .= "\n";
$output .= "<table class='tabcontent'><tr>";
$output .= "<td width='85%'>";
$output .= "<form action='".$_SERVER['PHP_SELF']."' name='auswahlFrm' method='POST'>";
$stg_obj = new studiengang();
//Anzeigen des DropDown Menues mit Stg
if($stg_obj->getAll('typ, kurzbz'))
{
$output .= $p->t('global/studiengang')." <SELECT name='stg' onChange='javascript:window.document.auswahlFrm.changed.value=\"stg\";window.document.auswahlFrm.submit();'>";
$stgselected=false;
unset($firststg);
//DropDown Menue mit den Stg fuellen
foreach($stg_obj->result as $elem)
{
$lv_help_obj = new lehrveranstaltung();
$lv_help_obj->load_lva($elem->studiengang_kz, null,null,true);
if(count($lv_help_obj->lehrveranstaltungen)>0)
{
if(!isset($firststg))
$firststg = $elem->studiengang_kz;
if(!isset($stg))
$stg=$elem->studiengang_kz;
if($elem->studiengang_kz == $stg)
{
$output .= "<option value='$elem->studiengang_kz' selected>$elem->kuerzel</option>";
$stgselected=true;
}
else
$output .= "<option value='$elem->studiengang_kz'>$elem->kuerzel</option>";
}
}
$output .= "</SELECT>";
if(!$stgselected)
$stg=$firststg;
}
else
{
$errormsg .= "$stg_obj->errormsg";
}
//Anzeigen des DropDown Menues mit Semester
if(isset($changed) && $changed=='stg')
{
unset($sem);
unset($lvid);
}
if($stg_obj->load($stg))
{
$output .= $p->t('global/semester')." <SELECT name='sem' onChange='javascript:window.document.auswahlFrm.changed.value=\"sem\";window.document.auswahlFrm.submit();'>";
unset($firstsem);
$semselected=false;
for($i=1;$i<=$stg_obj->max_semester;$i++)
{
$lv_help_obj = new lehrveranstaltung();
$lv_help_obj->load_lva($stg, $i, null,true);
if(count($lv_help_obj->lehrveranstaltungen)>0)
{
if(!isset($firstsem))
$firstsem=$i;
if(!isset($sem) || (isset($sem) && $sem>$stg_obj->max_semester))
{
$sem = $i;
}
if($i == $sem)
{
$output .= "<option value='$i' selected>$i</option>";
$semselected=true;
}
else
$output .= "<option value='$i'>$i</option>";
}
}
$output .= "</SELECT>";
if(!$semselected)
$sem=$firstsem;
}
else
$errormsg .= "$stg_obj->errormsg";
//Anzeigen des DropDown Menues mit Lehrveranstaltungen
$lv_obj = new lehrveranstaltung();
if($lv_obj->load_lva($stg,$sem,null,true,null,'orgform_kurzbz,semester, bezeichnung'))
{
$output .= $p->t('global/lehrveranstaltung')." <SELECT name='lv' onChange='javascript:window.document.auswahlFrm.changed.value=\"lv\";window.document.auswahlFrm.submit();'>";
$vorhanden=false;
unset($firstlv);
foreach($lv_obj->lehrveranstaltungen as $erg)
{
if(!isset($lv) || (isset($changed) && $changed=='sem') || (isset($changed) && $changed=='stg'))
{
$lv = $erg->lehrveranstaltung_id;
$changed='';
}
if(!isset($firstlv))
$firstlv=$erg->lehrveranstaltung_id;
if($lv == $erg->lehrveranstaltung_id)
{
$output .= "<option value='$erg->lehrveranstaltung_id' selected>".($erg->orgform_kurzbz!=''?$erg->orgform_kurzbz." - ":"").Cut($erg->bezeichnung)."</option>";
$vorhanden=true;
}
else
$output .= "<option value='$erg->lehrveranstaltung_id'>".($erg->orgform_kurzbz!=''?$erg->orgform_kurzbz." - ":"").Cut($erg->bezeichnung)."</option>";
}
$output .= "</SELECT>";
if(!$vorhanden)
$lv=$firstlv;
}
else
{
$errormsg .= "$lv_obj->errormsg";
}
$output .= "<input type='hidden' name='changed' value=''>";
$output .= "<input type='Submit' value='".$p->t('global/anzeigen')."'>";
$output .= "</form>";
$output .= "</td>";
$output .= "<td>";
//Menue ausgeben
$output .= "\n";
$output .= "<ul>";
$output .= "<li>&nbsp;<a class='Item' href='index.php?stg=$stg&sem=$sem&lvid=$lv'><font size='3'>".$p->t('global/bearbeiten')."</font></a></li>";
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
$output .= "<li>&nbsp;<a class='Item' href='freigabe.php?stg=$stg&sem=$sem&lv=$lv'><font size='3'>".$p->t('courseInformation/freigabe')."</font></a></li>";
$output .= "<li>&nbsp;<a class='Item' href='beispiele.php'><font size='3'>".$p->t('global/beispiele')."</font></a></li>";
//$output .= "<li>&nbsp;<a class='Item' href='terminologie.php'><font size='3'>".$p->t('courseInformation/terminologie')."</font></a></li>";
$output .= "</ul>";
$output .= "</td></tr></table>";
$stg_obj->load($stg);
//Kopfzeile hinausschreiben und $output ausgeben
echo "<h1>&nbsp;".$p->t('courseInformation/lvInfoSemester',array($stg_obj->kuerzel, $sem))."</h1>";
echo $output;
if ($berechtigt==false)
die($p->t('global/keineBerechtigungFuerDieseSeite'));
if(isset($lv) && isset($stg) && isset($sem)) // Wenn oben alles Ausgewaehlt wurde
{
//Anzeige des Formulares
$stg_obj1 = new studiengang();
$stg_obj1->load($stg);
if(isset($errormsg) && $okmsg!='')
echo '<span class="error">'.$errormsg.'</span><br>';
if(isset($okmsg) && $okmsg!='')
echo '<span class="ok">'.$okmsg.'</span><br>';
$lv_obj_en = new lvinfo();
$lv_obj_de = new lvinfo();
if($lv_obj_en->load($lv, ATTR_SPRACHE_EN))
$lv_en=$lv_obj_en;
if($lv_obj_de->load($lv, ATTR_SPRACHE_DE))
$lv_de=$lv_obj_de;
if(!isset($_POST['lehrziele_de']) && isset($lv_de))
{
$lehrziele_de = $lv_de->lehrziele;
$lehrinhalte_de = $lv_de->lehrinhalte;
$voraussetzungen_de = $lv_de->voraussetzungen;
$unterlagen_de = $lv_de->unterlagen;
$pruefungsordnung_de = $lv_de->pruefungsordnung;
$anmerkungen_de = $lv_de->anmerkungen;
$kurzbeschreibung_de = $lv_de->kurzbeschreibung;
$anwesenheit_de = $lv_de->anwesenheit;
$freig_de = $lv_de->genehmigt;
$titel_de = $lv_de->titel;
$methodik_de = $lv_de->methodik;
//Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden
if (substr_count($lehrziele_de, 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage')==0)
$lehrziele_de = 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage, '.$lehrziele_de;
}
if(!isset($_POST['lehrziele_en']) && isset($lv_en))
{
$lehrziele_en = $lv_en->lehrziele;
$lehrinhalte_en = $lv_en->lehrinhalte;
$voraussetzungen_en = $lv_en->voraussetzungen;
$unterlagen_en = $lv_en->unterlagen;
$pruefungsordnung_en = $lv_en->pruefungsordnung;
$anmerkungen_en = $lv_en->anmerkungen;
$kurzbeschreibung_en = $lv_en->kurzbeschreibung;
$anwesenheit_en = $lv_en->anwesenheit;
$freig_en = $lv_en->genehmigt;
$titel_en = $lv_en->titel;
$methodik_en = $lv_en->methodik;
//Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden
if (substr_count($lehrziele_en, 'After passing this course successfully students are able to')==0)
$lehrziele_en = 'After passing this course successfully students are able to '.$lehrziele_en;
}
$lv_obj = new lehrveranstaltung();
$lv_obj->load($lv);
echo "<Form name='editFrm' action='".$_SERVER['PHP_SELF']."' method='POST'>";
echo "<table>";
echo "<tr><td><b>".$p->t('courseInformation/ectsCredits')."</b></td><td width='100%'>".($lv_obj->ects!=''?number_format($lv_obj->ects,1,'.',''):'')."</td></tr>";
$stsem_obj = new studiensemester();
$stsem = $stsem_obj->getaktorNext();
//Namen der Lehrenden Auslesen
$qry = "SELECT
*
FROM
campus.vw_mitarbeiter, lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit
WHERE
lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)."
AND tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." ORDER BY ende DESC LIMIT 1)
AND mitarbeiter_uid=uid";
echo "<tr><td class='tdvertical' nowrap><b>".$p->t('courseInformation/lehrendeLautLehrauftrag')."</b></td><td nowrap>";
$helparray = array();
if($result=$db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
if(!in_array("$row->titelpre $row->vorname $row->nachname $row->titelpost",$helparray))//damit ein Name nicht doppelt vorkommt
$helparray[] = "$row->titelpre $row->vorname $row->nachname $row->titelpost";
}
}
foreach($helparray as $elem)
echo $elem."<br>";
echo "</td></tr>";
//FB Leiter auslesen
$qry = " SELECT
distinct titelpre, titelpost, vorname, nachname
FROM
public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid)
WHERE
funktion_kurzbz='Leitung' AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
oe_kurzbz in (SELECT distinct lehrfach.oe_kurzbz
FROM
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
WHERE
tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
studiensemester_kurzbz=(SELECT studiensemester_kurzbz
FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)."
ORDER BY ende DESC LIMIT 1
)
)";
echo "<tr><td class='tdvertical'><b>".$p->t('courseInformation/institutsleiter')."</b></td><td>";
if($result=$db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
echo "$row->titelpre $row->vorname $row->nachname $row->titelpost<br>";
}
}
echo "</td></tr>";
//FB Koordinator auslesen
//$qry = "SELECT distinct vorname, nachname FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in (SELECT fachbereich_kurzbz FROM lehre.tbl_lehrfach, lehre.tbl_lehreinheit WHERE lehrveranstaltung_id='$lv' AND tbl_lehrfach.lehrfach_id=tbl_lehreinheit.lehrfach_id AND tbl_lehreinheit.studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id='$lv' ORDER BY ende DESC LIMIT 1))";
$qry = "SELECT
distinct titelpre, titelpost, vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
FROM
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich
WHERE
tbl_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND
tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND
tbl_benutzerfunktion.funktion_kurzbz='fbk' AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND
tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)";
echo "<tr><td class='tdvertical'><b>".$p->t('courseInformation/institutskoordinator')."</b></td><td>";
if($result=$db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
echo "$row->titelpre $row->vorname $row->nachname $row->titelpost<br>";
}
}
echo "</td></tr>";
//echo "</table>";
echo "<tr><td>";
echo "<input type='hidden' name='stg' value='$stg'>";
echo "<input type='hidden' name='sem' value='$sem'>";
echo "<input type='hidden' name='lv' value='$lv'>";
echo "<input type='hidden' name='status' value=''>";
echo "</td></tr>";
//Sprache ausgeben
echo "<tr><td><b>".$p->t('courseInformation/unterrichtssprache')."</b></td><td>$lv_obj->sprache";
echo "</td></tr>";
//Anz. Incoming ausgeben
if ($lv_obj->incoming > -1)
{
echo "<tr><td valign='top'><b>".$p->t('courseInformation/incomingplaetze')."</b></td><td valign='top'>$lv_obj->incoming";
}
else echo "<tr><td valign='top'><b>".$p->t('courseInformation/incomingplaetze')."</b></td><td>0";
echo "</td></tr><tr><td colspan='2'><font style='font-size:smaller'>".$p->t('courseInformation/beiFehlernInDenFixfeldern',array($stg_obj1->email))."</font></td></tr>";
echo "<tr><td align='left' colspan='2'><br/><br/><font style='color:black'>".$p->t('courseInformation/pflichtfelderWerdenAufDerExternenSeiteAngezeigt',array($stg_obj1->email))."</font>.</td></tr>";
//echo "<tr><td align='left' colspan='4'><font style='color:black'>".$p->t('courseInformation/fallsSieAufzaehlungslistenVerwenden',array($stg_obj1->email))."</font></td></tr>"; --> Es sollten keine HTML-Tags gespeichert werden koennen. Hier muss eine andere Loesung gefunde werden.
echo "</table><br><br>";
//Eingabefelder anzeigen
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";
echo '<tr>
<td colspan="2" align="center"><h2>DEUTSCH</h2></td>
<td rowspan="14" width="20">&nbsp;</td>
<td colspan="2" align="center"><h2>ENGLISH</h2></td>
</tr>';
echo '<tr>
<td colspan="2" align="center">'.($lv_de->genehmigt==false?'<span style="color:red">'.$p->t('courseInformation/nochNichtFreigegeben').'</span>':$p->t('courseInformation/freigegeben')).'</td>
<td colspan="2" align="center">'.($lv_en->genehmigt==false?'<span style="color:red">'.$p->t('courseInformation/nochNichtFreigegeben').'</span>':$p->t('courseInformation/freigegeben')).'</td>
</tr>';
echo '<tr>
<td colspan="5">&nbsp;</td>
</tr>';
echo '
<tr class="liste0">
<td><i>'.$p->t('lvinfo/kurzbeschreibung').' <font style="color:black">(Pflichtfeld)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="kurzbeschreibung_de">'. (isset($kurzbeschreibung_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$kurzbeschreibung_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/kurzbeschreibungEN').' <font style="color:black">(Required)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="kurzbeschreibung_en">'. (isset($kurzbeschreibung_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$kurzbeschreibung_en)):'').'</textarea></td>
</tr>
<tr class="liste1">
<td><i>'.$p->t('lvinfo/methodik').' <font style="color:black">(Pflichtfeld)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="methodik_de">'. (isset($methodik_de)?stripslashes(mb_eregi_replace("<br>","\r\n", $methodik_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/methodikEN').' <font style="color:black">(Required)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="methodik_en">'. (isset($methodik_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$methodik_en)):'').'</textarea></td>
</tr>';
echo '<tr class="liste0">
<td><i>'.$p->t('lvinfo/lernergebnisse').' <font style="color:black">(Pflichtfeld)</font></i></td>
<td align="right"><textarea rows="5" cols="50" name="lehrziele_de">'. (isset($lehrziele_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrziele_de)):'Nach erfolgreichem Abschluss sind die Studierenden in der Lage, ').'</textarea></td>
<td><i>'.$p->t('lvinfo/lernergebnisseEN').' <font style="color:black">(Required)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="lehrziele_en">'. (isset($lehrziele_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrziele_en)):'').'</textarea></td>
</tr>
<tr class="liste1">
<td><i>'.$p->t('lvinfo/lehrinhalte').' <font style="color:black">(Pflichtfeld)</font></i></td>
<td align="right"><textarea rows="5" cols="50" name="lehrinhalte_de">'. (isset($lehrinhalte_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrinhalte_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/lehrinhalteEN').' <font style="color:black">(Required)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="lehrinhalte_en">'. (isset($lehrinhalte_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$lehrinhalte_en)):'').'</textarea></td>
</tr>
<tr class="liste0">
<td><i>'.$p->t('lvinfo/vorkenntnisse').' <font style="color:black">(Pflichtfeld)</font></i> </td>
<td align="right"><textarea rows="5" cols="50" name="voraussetzungen_de">'. (isset($voraussetzungen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$voraussetzungen_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/vorkenntnisseEN').' <font style="color:black">(Required)</font></i></td>
<td align="right"><textarea rows="5" cols="50" name="voraussetzungen_en">'. (isset($voraussetzungen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$voraussetzungen_en)):'').'</textarea></td>
</tr>';
echo '<tr class="liste1">
<td><i>'.$p->t('lvinfo/literatur').'</i> </td>
<td align="right"><textarea rows="5" cols="50" name="unterlagen_de">'. (isset($unterlagen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$unterlagen_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/literaturEN').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="unterlagen_en">'. (isset($unterlagen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$unterlagen_en)):'').'</textarea></td>
</tr>
<tr class="liste0">
<td><i>'.$p->t('lvinfo/leistungsbeurteilung').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="pruefungsordnung_de">'. (isset($pruefungsordnung_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$pruefungsordnung_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/leistungsbeurteilungEN').'</i> </td>
<td align="right"><textarea rows="5" cols="50" name="pruefungsordnung_en">'. (isset($pruefungsordnung_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$pruefungsordnung_en)):'').'</textarea></td>
</tr>
<tr class="liste1">
<td><i>'.$p->t('lvinfo/anwesenheit').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="anwesenheit_de">'. (isset($anwesenheit_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$anwesenheit_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/anwesenheitEN').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="anwesenheit_en">'. (isset($anwesenheit_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$anwesenheit_en)):'').'</textarea></td>
</tr>
<tr class="liste0">
<td><i>'.$p->t('lvinfo/anmerkungen').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="anmerkungen_de">'. (isset($anmerkungen_de)?stripslashes(mb_eregi_replace("<br>","\r\n",$anmerkungen_de)):'').'</textarea></td>
<td><i>'.$p->t('lvinfo/anmerkungenEN').'</i></td>
<td align="right"><textarea rows="5" cols="50" name="anmerkungen_en">'. (isset($anmerkungen_en)?stripslashes(mb_eregi_replace("<br>","\r\n",$anmerkungen_en)):'').'</textarea></td>
</tr>';
if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))
echo ' <tr class="liste0">
<td align=center colspan=2><br><input type="checkbox" name="freig_de" '. (isset($freig_de) && ($freig_de==true || $freig_de=='1')?'checked':'').'/><i>'.$p->t('courseInformation/deutschFreigeben').'</i><br><br></td>
<td align=center colspan=2><input type="checkbox" name="freig_en" '. (isset($freig_en) && ($freig_en==true || $freig_en=='1')?'checked':'').'/><i>'.$p->t('courseInformation/englischFreigeben').'</i> </td>
<td ></td>
</tr>';
echo "</table><br>";
echo "<div align='left'>";
echo "<input type='button' value='".$p->t('global/speichern')."' onClick='save();'>";
echo "<input type='button' value='".$p->t('courseInformation/voransicht')."' onClick='javascript:window.document.editFrm.action=\"preview.php\";window.document.editFrm.target=\"_blank\";window.document.editFrm.submit();'>";
echo "<br><br>";
if (!$berechtigt)
echo "<input type='button' value='".$p->t('courseInformation/zurFreigabeAbschicken')."' onClick='freigeben();'>";
echo "</div>";
echo "</form>";
echo "<br><br><br><br><br><br><br><br><br><br><br><br>";
if(isset($error) && $error!='')
echo $error;
}
?>
<td></tr></table>
</body>
</html>
-746
View File
@@ -1,746 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/* @date 27.10.2005
@brief Zeigt die Daten aus der tbl_lvinfo an
@edit 08-11-2006 Versionierung wurde entfernt. Alle eintraege werden jetzt im WS2007
abgespeichert
03-02-2006 Anpassung an die neue Datenbank
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../config/global.config.inc.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/lvinfo.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/safehtml/safehtml.class.php');
require_once '../../../../include/phrasen.class.php';
require_once '../../../../include/lehreinheit.class.php';
require_once '../../../../include/lehrstunde.class.php';
require_once '../../../../include/datum.class.php';
require_once '../../../../include/stunde.class.php';
if (!$db = new basis_db())
die('Fehler beim Herstellen der Datenbankverbindung');
$phrasen = new phrasen();
function cmp($a, $b)
{
if($a->datum == $b->datum && $a->stunde == $b->stunde)
{
return 0;
}
if($a->datum == $b->datum && $a->stunde < $b->stunde)
{
return -1;
}
else if($a->datum == $b->datum && $a->stunde >= $b->stunde)
{
return 1;
}
return ($a->datum < $b->datum) ? -1 : 1;
}
function getLastStundeByDatum(Array $array, $filterDatum)
{
$callback = function($item) use ($filterDatum)
{
return ($filterDatum == $item->datum);
};
return array_filter($array,$callback);
}
$titel_de = '';
$methodik_de = '';
$kurzbeschreibung_de = '';
$anwesenheit_de = '';
$lehrziele_de = '';
$lehrinhalte_de = '';
$voraussetzungen_de = '';
$unterlagen_de = '';
$pruefungsordnung_de = '';
$anmerkungen_de = '';
$titel_en = '';
$methodik_en = '';
$kurzbeschreibung_en = '';
$anwesenheit_en = '';
$lehrziele_en = '';
$lehrinhalte_en = '';
$voraussetzungen_en = '';
$unterlagen_en = '';
$pruefungsordnung_en = '';
$anmerkungen_en = '';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ECTS - European Course Credit Transfer Systems (ECTS)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../../skin/style.css.php" type="text/css" rel="stylesheet" />
</head>
<body>
<table align="right">
<tr>
<td>
<div class="home_logo"></div>
</td>
</tr>
</table>
<br><br><br><br><br><br>
<table class="tabcontent" id="inhalt">
<tr>
<td><div align="center">
<?php
if(isset($_REQUEST['lv']))
$lv = $_REQUEST['lv'];
$language='';
if(isset($_GET['language']))
$language=$_GET['language'];
if(isset($_POST['language']))
$language=$_POST['language'];
if(!isset($language) || ($language!='de' && $language!='en'))
{
echo "<li><a class='Item' href=\"#de\">Deutsche Version</a></li><br>";
echo "<li><a class='Item' href=\"#en\">Englische Version</a></li><br>";
}
if(isset($_POST['methodik_de'])) //Alle Variablen werden per POST Methode uebergeben (zB bei Voransicht)
{
//$sprache = stripslashes($_POST['sprache']);
//$semstunden = stripslashes($_POST["semstunden"]);
$lehrveranstaltung_id = $_POST['lv'];
// german content variables
//$titel_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['titel_de']));
$methodik_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['methodik_de']));
$kurzbeschreibung_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['kurzbeschreibung_de']));
$anwesenheit_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anwesenheit_de']));
$lehrziele_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrziele_de']));
$lehrinhalte_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrinhalte_de']));
$voraussetzungen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['voraussetzungen_de']));
$unterlagen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['unterlagen_de']));
$pruefungsordnung_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['pruefungsordnung_de']));
$anmerkungen_de = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anmerkungen_de']));
$parser = new SafeHTML();
$lehrziele_de = $parser->parse($lehrziele_de);
$parser = new SafeHTML();
$lehrinhalte_de = $parser->parse($lehrinhalte_de);
$parser = new SafeHTML();
$voraussetzungen_de = $parser->parse($voraussetzungen_de);
$parser = new SafeHTML();
$unterlagen_de = $parser->parse($unterlagen_de);
$parser = new SafeHTML();
$pruefungsordnung_de = $parser->parse($pruefungsordnung_de);
$parser = new SafeHTML();
$anmerkungen_de = $parser->parse($anmerkungen_de);
$parser = new SafeHTML();
$kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de);
$parser = new SafeHTML();
$anwesenheit_de = $parser->parse($anwesenheit_de);
$parser = new SafeHTML();
$methodik_de = $parser->parse($methodik_de);
// Englisch content variables
//$titel_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['titel_en']));
$methodik_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['methodik_en']));
$kurzbeschreibung_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['kurzbeschreibung_en']));
$anwesenheit_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anwesenheit_en']));
$lehrziele_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrziele_en']));
$lehrinhalte_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['lehrinhalte_en']));
$voraussetzungen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['voraussetzungen_en']));
$unterlagen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['unterlagen_en']));
$pruefungsordnung_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['pruefungsordnung_en']));
$anmerkungen_en = mb_eregi_replace("\r\n","<br>",stripslashes($_POST['anmerkungen_en']));
$parser = new SafeHTML();
$lehrziele_en = $parser->parse($lehrziele_en);
$parser = new SafeHTML();
$lehrinhalte_en = $parser->parse($lehrinhalte_en);
$parser = new SafeHTML();
$voraussetzungen_en = $parser->parse($voraussetzungen_en);
$parser = new SafeHTML();
$unterlagen_en = $parser->parse($unterlagen_en);
$parser = new SafeHTML();
$pruefungsordnung_en = $parser->parse($pruefungsordnung_en);
$parser = new SafeHTML();
$anmerkungen_en = $parser->parse($anmerkungen_en);
$parser = new SafeHTML();
$kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en);
$parser = new SafeHTML();
$anwesenheit_en = $parser->parse($anwesenheit_en);
$parser = new SafeHTML();
$methodik_en = $parser->parse($methodik_en);
}
elseif(isset($_GET['lv'])) //LV Id wird uebergeben (zB bei Ansicht fuer alle von lesson.php)
{
$lehrveranstaltung_id=$_GET['lv'];
$stsemobj = new studiensemester();
$stsem = $stsemobj->getaktorNext();
$lvinfo_obj = new lvinfo();
if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_DE))
{
// german content variables
//$titel_de = $lvinfo_obj->titel;
$methodik_de = $lvinfo_obj->methodik;
$kurzbeschreibung_de = $lvinfo_obj->kurzbeschreibung;
$anwesenheit_de = $lvinfo_obj->anwesenheit;
$lehrziele_de = $lvinfo_obj->lehrziele;
$lehrinhalte_de = $lvinfo_obj->lehrinhalte;
$voraussetzungen_de = $lvinfo_obj->voraussetzungen;
$unterlagen_de = $lvinfo_obj->unterlagen;
$pruefungsordnung_de = $lvinfo_obj->pruefungsordnung;
$anmerkungen_de = $lvinfo_obj->anmerkungen;
}
if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_EN))
{
// Englisch content variables
//$titel_en = $lvinfo_obj->titel;
$methodik_en = $lvinfo_obj->methodik;
$kurzbeschreibung_en = $lvinfo_obj->kurzbeschreibung;
$anwesenheit_en = $lvinfo_obj->anwesenheit;
$lehrziele_en = $lvinfo_obj->lehrziele;
$lehrinhalte_en = $lvinfo_obj->lehrinhalte;
$voraussetzungen_en = $lvinfo_obj->voraussetzungen;
$unterlagen_en = $lvinfo_obj->unterlagen;
$pruefungsordnung_en = $lvinfo_obj->pruefungsordnung;
$anmerkungen_en = $lvinfo_obj->anmerkungen;
}
}
else
die('Fehler bei der Parameteruebergabe');
$stsemobj = new studiensemester();
$stsem = $stsemobj->getaktorNext();
$lv_obj = new lehrveranstaltung();
if(!$lv_obj->load($lehrveranstaltung_id))
die($lv_obj->errormsg);
$ects_points = $lv_obj->ects;
$stg = $lv_obj->studiengang_kz;
$sem = $lv_obj->semester;
$lang = $lv_obj->sprache;
$titel_de = $lv_obj->bezeichnung;
$titel_en = $lv_obj->bezeichnung_english;
$anz_incoming = $lv_obj->incoming;
if (!isset($lv))
$lv=0;
//Zugeteilte Fachbereiche auslesen
$qry = "SELECT distinct tbl_fachbereich.bezeichnung as bezeichnung, tbl_fachbereich.fachbereich_kurzbz as fachbereich_kurzbz
FROM public.tbl_fachbereich, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach
WHERE tbl_lehreinheit.studiensemester_kurzbz=(
SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1)
AND tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz";
if(!$result=$db->db_query($qry))
die('Fehler beim Lesen aus der Datenbank');
$fachbereiche="'1'";
$fachbereich['kurzbz']=array();
$fachbereich['bezeichnung']=array();
while($row=$db->db_fetch_object($result))
{
$fachbereiche .= ", ".$db->db_add_param($row->fachbereich_kurzbz);
$fachbereich['kurzbz'][]=$row->fachbereich_kurzbz;
$fachbereich['bezeichnung'][]=$row->bezeichnung;
}
//Studiengangsbezeichnung auslesen
$stg_hlp_obj = new studiengang();
$stg_hlp_obj->load($stg);
$stg_kurzbz = $stg_hlp_obj->kuerzel;
$stg_kurzbzlang = $stg_hlp_obj->kurzbzlang;
//Lehrform auslesen
$qry = "Select distinct lehrform_kurzbz FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND studiensemester_kurzbz=".$db->db_add_param($stsem);
if(!$res = $db->db_query($qry))
die('Fehler beim Lesen aus der Datenbank');
//echo $fachbereiche;
while($row = $db->db_fetch_object($res))
$lehrform_kurzbz[] = $row->lehrform_kurzbz;
//Fachbereichsleiter fuer alle FB ermitteln
$qry="
SELECT
vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_fachbereich USING(oe_kurzbz)
JOIN campus.vw_mitarbeiter USING(uid)
WHERE
vw_mitarbeiter.aktiv AND
funktion_kurzbz='Leitung' AND tbl_fachbereich.fachbereich_kurzbz in($fachbereiche) AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())";
if(!$res=$db->db_query($qry))
die('Fehler '.$db->errormsg);
$fachbereichsleiter=array();
while($row=$db->db_fetch_object($res))
$fachbereichsleiter[$row->fachbereich_kurzbz] = $row->vorname."&nbsp;".$row->nachname;
//Fachbereichskoordinatoren fuer alle FB ermitteln
//$qry="SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in($fachbereiche)";
$qry = "SELECT
distinct vorname, nachname, tbl_fachbereich.fachbereich_kurzbz
FROM
lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich
WHERE
vw_mitarbeiter.aktiv AND
tbl_lehrveranstaltung.lehrveranstaltung_id='$lv' AND
tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND
lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz AND
tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND
tbl_benutzerfunktion.funktion_kurzbz='fbk' AND
vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1) ";
if(!$res=$db->db_query($qry))
die('Fehler ! '.$db->errormsg);
$fachbereichskoordinator=array();
while($row=$db->db_fetch_object($res))
{
$name = $row->vorname."&nbsp;".$row->nachname;
if(!isset($fachbereichskoordinator[$row->fachbereich_kurzbz]) ||
!in_array($name, $fachbereichskoordinator[$row->fachbereich_kurzbz]))
{
$fachbereichskoordinator[$row->fachbereich_kurzbz][] = $name;
}
}
//Namen der Lehrenden Auslesen
$qry = "SELECT distinct vorname, nachname FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter
WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester JOIN lehre.tbl_lehreinheit USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1)
AND tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id
AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid";
$lehrendearray = array();
if($result=$db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
$lehrendearray[] = "$row->vorname $row->nachname";
}
//Ausgabe der LV-Information
//Deutsch Version
if(!(isset($language) && $language=='en'))
{
echo "<a name=\"de\"></a><br><br>
<table class='tabcontent'>
<tr>
<td align='center' valign='top'>
<h1>
".stripslashes($titel_de)."</h1>
</td>
</tr>
<tr>
<td><br>";
echo '<table border="0" cellpadding="0">';
echo "<tr><td>Studiengang:</td><td>$stg_kurzbz</td></tr>";
echo "<tr><td>Semester:</td><td>$sem</td></tr>";
echo '<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';
if(($anz=count($lehrendearray))>0)
{
echo "<tr valign='top'><td><nobr>".$phrasen->t('lehre/lehrbeauftragter').": </nobr></td><td>";
foreach($lehrendearray as $elem)
{
$anz--;
echo " $elem";
if($anz!=0)
echo ',';
}
echo '</td></tr>';
}
if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0)
{
echo "<tr valign='top'><td>Lehrform:&nbsp;</td><td>";
foreach ($lehrform_kurzbz as $lehrform_kurz)
echo "$lehrform_kurz<br />";
echo '</td></tr>';
}
if ($lang > -1)
echo '<tr><td>Sprache:&nbsp;</td><td>'.stripslashes($lang).'</td></tr>';
if ($ects_points)
echo '<tr><td>ECTS:&nbsp;</td><td>'.number_format(stripslashes($ects_points),1,'.','').'</td></tr>';
if ($anz_incoming > -1)
{
echo '<tr><td>Incomingpl&auml;tze:&nbsp;</td><td>'.stripslashes($anz_incoming).'</td></tr>';
}
else echo '<tr><td>Incomingpl&auml;tze:&nbsp;</td><td>0</td></tr>';
echo '<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';
//Fachbereiche und Leiter/Koordinatoren anzeigen
if (count($fachbereich['bezeichnung'])>0)
{
echo '<tr><td>Institut:&nbsp;</td><td>';
//Fachbereiche durchlaufen
for($i=0;$i<count($fachbereich['kurzbz']);$i++)
{
$help='';
echo stripslashes($fachbereich['bezeichnung'][$i]);
//zugehoerigen Leiter ausgeben
if(isset($fachbereichsleiter[$fachbereich['kurzbz'][$i]]))
$help.='Leitung: '.$fachbereichsleiter[$fachbereich['kurzbz'][$i]];
if(isset($fachbereichskoordinator[$fachbereich['kurzbz'][$i]]))
{
$first=true;
//zugehoerige Koordinatoren ausgeben
foreach($fachbereichskoordinator[$fachbereich['kurzbz'][$i]] as $fbk)
{
if($help!='')
{
if($first)
{
$help.=' Koordination:';
$first=false;
}
else
$help.=',';
}
$help.=" $fbk";
}
}
if($help!='')
echo " ($help)";
}
echo '</td></tr>';
}
echo "</table>";
echo "<br /><br /></td></tr>";
if ($kurzbeschreibung_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/kurzbeschreibung')."</h2></td></tr>";
echo "<tr><td>".stripslashes($kurzbeschreibung_de)."<br /><br /></td></tr>";
}
if ($lehrziele_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lernergebnisse')."</h2></td></tr>";
echo "<tr><td>".stripslashes($lehrziele_de)."<br /><br /></td></tr>";
}
if ($lehrinhalte_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lehrinhalte')."</h2></td></tr>";
echo "<tr><td>".stripslashes($lehrinhalte_de)."<br /><br /></td></tr>";
}
if ($voraussetzungen_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/vorkenntnisse')."</h2></td></tr>";
echo "<tr><td>".stripslashes($voraussetzungen_de)."<br><br /></td></tr>";
}
if ($methodik_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/methodik')."</h2></td></tr>";
echo "<tr><td>".stripslashes($methodik_de)."<br><br /></td></tr>";
}
if ($pruefungsordnung_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/leistungsbeurteilung')."</h2></td></tr>";
echo "<tr><td>".stripslashes($pruefungsordnung_de)."<br /><br /></td></tr>";
}
if ($unterlagen_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/literatur')."</h2></td></tr>";
echo "<tr><td>".stripslashes($unterlagen_de)."<br /><br /></td></tr>";
}
if ($anwesenheit_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anwesenheit')."</h2></td></tr>";
echo "<tr><td>".stripslashes($anwesenheit_de)."<br /><br /></td></tr>";
}
if ($anmerkungen_de)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anmerkungen')."</h2></td></tr>";
echo "<tr><td>".stripslashes($anmerkungen_de)."&nbsp;<br /><br /></td></tr>";
}
echo "</td></tr></table>";
}
//Englische Version
if(!(isset($language) && $language=='de'))
{
echo "<a name=\"en\"></a><br><br>";
echo "<table class='tabcontent'>
<tr>
<td align='center' valign='top'>
<h1>
".stripslashes($titel_en)."
</h1>
</td>
</tr>
<tr><td><br />";
echo '<table border="0" cellpadding="0">';
echo "<tr><td>Degree programme:</td><td>$stg_kurzbz</td></tr>";
echo "<tr><td>Semester:</td><td>$sem</td></tr>";
echo "<tr><td>&nbsp;</td><td>&nbsp;</td></tr>";
if(($anz=count($lehrendearray))>0)
{
echo "<tr><td>Lecturer:</td><td>";
foreach($lehrendearray as $elem)
{
$anz--;
echo " $elem";
if($anz!=0)
echo ",";
}
echo "</td></tr>";
}
if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0)
{
echo "<tr valign='top'><td>Course methods:&nbsp;</td><td>";
foreach ($lehrform_kurzbz as $lehrform_kurz)
echo "$lehrform_kurz<br />";
echo "</td></tr>";
}
if ($lang > -1)
echo "<tr><td>Language:&nbsp;</td><td>".stripslashes($lang)."</td></tr>";
if ($ects_points)
echo "<tr><td>ECTS Credits:&nbsp;</td><td>".number_format(stripslashes($ects_points),1,'.','')."</td></tr>";
if ($anz_incoming > -1)
{
echo '<tr><td>Places Available for Incoming Students:&nbsp;</td><td>'.stripslashes($anz_incoming).'</td></tr>';
}
else echo '<tr><td>Places Available for Incoming Students:&nbsp;</td><td>0</td></tr>';
echo "<tr><td>&nbsp;</td><td>&nbsp;</td></tr>";
//Fachbereiche und Leiter/Koordinatoren anzeigen
if (count($fachbereich['bezeichnung'])>0)
{
echo '<tr><td>Department:&nbsp;</td><td>';
//Fachbereiche durchlaufen
for($i=0;$i<count($fachbereich['kurzbz']);$i++)
{
$help='';
echo stripslashes($fachbereich['bezeichnung'][$i]);
//zugehoerigen Leiter ausgeben
if(isset($fachbereichsleiter[$fachbereich['kurzbz'][$i]]))
$help.='Head: '.$fachbereichsleiter[$fachbereich['kurzbz'][$i]];
if(isset($fachbereichskoordinator[$fachbereich['kurzbz'][$i]]))
{
$first=true;
//zugehoerige koordinatoren ausgeben
foreach($fachbereichskoordinator[$fachbereich['kurzbz'][$i]] as $fbk)
{
if($help!='')
{
if($first)
{
$help.=' Coordination:';
$first=false;
}
else
$help.=',';
}
$help.=" $fbk";
}
}
if($help!='')
echo " ($help)";
}
echo '</td></tr>';
}
echo '</table>';
echo '<br /><br /></td></tr>';
if ($kurzbeschreibung_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/kurzbeschreibungEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($kurzbeschreibung_en)."<br /><br /></td></tr>";
}
if ($lehrziele_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lernergebnisseEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($lehrziele_en)."<br /><br /></td></tr>";
}
if ($lehrinhalte_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/lehrinhalteEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($lehrinhalte_en)."<br /><br /></td></tr>";
}
if ($voraussetzungen_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/vorkenntnisseEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($voraussetzungen_en)."<br /><br /></td></tr>";
}
if ($methodik_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/methodikEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($methodik_en)."<br><br /></td></tr>";
}
if ($pruefungsordnung_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/leistungsbeurteilungEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($pruefungsordnung_en)."<br /><br /></td></tr>";
}
if ($unterlagen_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/literaturEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($unterlagen_en)."<br /><br /></td></tr>";
}
if ($anwesenheit_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anwesenheitEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($anwesenheit_en)."<br /><br /></td></tr>";
}
if ($anmerkungen_en)
{
echo "<tr><td align='left' valign='top'><h2>".$phrasen->t('lvinfo/anmerkungenEN')."</h2></td></tr>";
echo "<tr><td>".stripslashes($anmerkungen_en)."&nbsp;<br /></td></tr>";
}
}
echo "</table>";
$lehreinheit = new lehreinheit();
$studiensemester = new studiensemester();
$lehreinheit->load_lehreinheiten($lv, $studiensemester->getaktorNext());
if (CIS_LVINFO_TERMINE_ANZEIGEN == true)
{
if(!empty($lehreinheit->lehreinheiten))
{
echo "<h2>Termine</h2><table>";
foreach($lehreinheit->lehreinheiten as $lehreinheit_temp)
{
$lehrstunde = new lehrstunde();
$lehrstunde->load_lehrstunden_le($lehreinheit_temp->lehreinheit_id);
$i = 1;
echo "<tr><td><ul>";
$result = $lehrstunde->lehrstunden;
$last = "";
$bis = "";
usort($result, "cmp");
$datum = new datum();
$std_von = new stunde();
$std_bis = new stunde();
foreach($result as $key=>$stunde)
{
if($last !== $stunde->datum)
{
$temp = array_values(getLastStundeByDatum($result, $stunde->datum));
$size = count($temp);
if($size != 0)
{
$std_von->load($temp[0]->stunde);
$std_bis->load($temp[$size-1]->stunde);
echo "<li>".$datum->formatDatum($temp[0]->datum,"d.m.Y")." von ".mb_substr($std_von->beginn,0,5)." bis ".mb_substr($std_bis->ende,0,5)."</li>";
}
$i++;
}
elseif($last == "")
{
$temp = getLastStundeByDatum($result, $stunde->datum);
var_dump($temp);
}
else
{
$bis = $stunde->stunde;
}
if($i % 5 === 0)
{
// echo "</ul></td><td><ul>";
// $i++;
}
$last = $stunde->datum;
}
echo "</ul></td></tr>";
}
echo "</table>";
}
}
//Ein paar Zeilenumbrueche damit er beim Sprung zum Anker weit genug nach unten springt
echo "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>";
?>
</td>
<td width="3%">&nbsp;</td>
</tr>
</table>
</body></html>
-921
View File
@@ -1,921 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/phrasen.class.php');
$sprache = getSprache();
$p= new phrasen($sprache);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../../skin/style.css.php" rel="stylesheet" type="text/css">
<title><?php echo $p->t('courseInformation/terminologie');?></title>
</head>
<body style="padding: 10px">
<h1><?php echo $p->t('courseInformatoin/lvInfoTerminologie')?></h1>
<table class="tabcontent">
<tr>
<td width="85%">
&nbsp;
</td>
<td>
<ul>
<li>&nbsp;<a class="Item" href='index.php'><font size='3'><?php echo $p->t('global/bearbeiten');?></font></a></li>
<li>&nbsp;<a class="Item" href='freigabe.php'><font size='3'><?php echo $p->t('courseInformation/freigabe');?></font></a></li>
<li>&nbsp;<a class="Item" href='beispiele.php'><font size='3'><?php echo $p->t('global/beispiele');?></font></a></li>
<li>&nbsp;<a class="Item" href='terminologie.php'><font size='3'><?php echo $p->t('courseInformation/terminologie')?></font></a></li>
</ul>
</td>
</tr>
</table>
<table id="tabterm" border="1">
<tr class="liste1">
<td colspan="2" align="center">
<b><?php echo $p->t('courseInformation/terminologieDeutschEnglisch');?></b>
</td>
</tr>
<tr class="liste1">
<td>
</td>
<td></td>
</tr>
<tr class="liste0">
<td>
<b>Deutsch</b>
</td>
<td>
<b>Englisch</b>
</td>
</tr>
<tr class="liste1">
<td>
Abschluss (einer Lehrveranstaltung)
</td>
<td>
completion
</td>
</tr>
<tr class="liste0">
<td>
Anf&auml;ngerIn
</td>
<td>
beginner
</td>
</tr>
<tr class="liste1">
<td>
angerechnet
</td>
<td>
recognized
</td>
</tr>
<tr class="liste0">
<td>
Anrechnung
</td>
<td>
recognition
</td>
</tr>
<tr class="liste1">
<td>
Aufgaben
</td>
<td>
tasks / responsibilities / assignment
</td>
</tr>
<tr class="liste0">
<td>
Bachelor-Studiengang
</td>
<td>
bachelor's degree program
</td>
</tr>
<tr class="liste1">
<td>
Bachelor
</td>
<td>
Bachelor
</td>
</tr>
<tr class="liste0">
<td>
Bachelor-Arbeiten
</td>
<td>
bachelor's paper
</td>
</tr>
<tr class="liste1">
<td>
berufsbegleitend
</td>
<td>
part-time study
</td>
</tr>
<tr class="liste0">
<td>
Berufspraktikum
</td>
<td>
intership
</td>
</tr>
<tr class="liste1">
<td>
bestanden
</td>
<td>
pass
</td>
</tr>
<tr class="liste0">
<td>
bestanden, mit gutem Erfolg
</td>
<td>
pass with merit
</td>
</tr>
<tr class="liste1">
<td>
bestanden, mit ausgezeichnetem
Erfolg
</td>
<td>
pass with distinction
</td>
</tr>
<tr class="liste0">
<td>
BetreuerIn
</td>
<td>
supervisor
</td>
</tr>
<tr class="liste1">
<td>
Diplomarbeit
</td>
<td>
master's thesis
</td>
</tr>
<tr class="liste0">
<td>
DI (FH)
</td>
<td>
DI (FH)
</td>
</tr>
<tr class="liste1">
<td>
Diplom-Studiengang
</td>
<td>
diploma degree program
</td>
</tr>
<tr class="liste0">
<td>
Erhalter
</td>
<td>
operator
</td>
</tr>
<tr class="liste1">
<td>
Experte/in
</td>
<td>
expert
</td>
</tr>
<tr class="liste0">
<td>
Fachbereich
</td>
<td>
special field
</td>
</tr>
<tr class="liste1">
<td>
FachbereichskoordinatorIn
</td>
<td>
special field coordinator
</td>
</tr>
<tr class="liste0">
<td>
FachbereichsleiterIn
</td>
<td>
head of special field
</td>
</tr>
<tr class="liste1">
<td>
Fachhochschul-Beirat
</td>
<td>
University of Applied Sciences Advisory Board (UAS Advisory Board)
</td>
</tr>
<tr class="liste0">
<td>
Fachhochschul-Kollegium
</td>
<td>
University of Applied Sciences Council (UAS Council)
</td>
</tr>
<tr class="liste1">
<td>
Fachhochschul-KollegiumsleiterIn
</td>
<td>
Head of University of Applied Sciences Council
</td>
</tr>
<tr class="liste0">
<td>
Fachhochschulrat
</td>
<td>
FH Council
</td>
</tr>
<tr class="liste1">
<td>
Fachhochschulkonferenz
</td>
<td>
Association of Universities of
Applied Sciences Austria
</td>
</tr>
<tr class="liste0">
<td>
Fernlehre
</td>
<td>
distance learning
</td>
</tr>
<tr class="liste1">
<td>
Fernlehrelemente
</td>
<td>
distance learning elements
</td>
</tr>
<tr class="liste0">
<td>
Fortgeschrittene/r
</td>
<td>
advanced
</td>
</tr>
<tr class="liste1">
<td>
Gesamtnote, Gesamtbeurteilung
</td>
<td>
final grade
</td>
</tr>
<tr class="liste0">
<td>
Grundlagen
</td>
<td>
fundamentals
</td>
</tr>
<tr class="liste1">
<td>
hauptberuflich Lehrende/r
</td>
<td>
full-time instructor
</td>
</tr>
<tr class="liste0">
<td>
Immanente Leistungsbeurteilung
</td>
<td>
continuous assessment
</td>
</tr>
<tr class="liste1">
<td>
integrierte Lehrveranstaltung
</td>
<td>
integrated course
</td>
</tr>
<tr class="liste0">
<td>
JahrgangssprecherIn
</td>
<td>
class representative
</td>
</tr>
<tr class="liste1">
<td>
kommissionelle Pr&uuml;fung
</td>
<td>
panel exam
</td>
</tr>
<tr class="liste0">
<td>
Labor
</td>
<td>
laboratory
</td>
</tr>
<tr class="liste1">
<td>
Lehrender
</td>
<td>
instructor
</td>
</tr>
<tr class="liste0">
<td>
Lehrgang universit&auml;ren
Charakters
</td>
<td>
university
level course
</td>
</tr>
<tr class="liste1">
<td>
Lehrinhalte
</td>
<td>
course contents
</td>
</tr>
<tr class="liste0">
<td>
Lehrk&ouml;rper
</td>
<td>
teaching staff
</td>
</tr>
<tr class="liste1">
<td>
Lehrmethode
</td>
<td>
teaching method
</td>
</tr>
<tr class="liste0">
<td>
Lehrveranstaltung
</td>
<td>
course
</td>
</tr>
<tr class="liste1">
<td>
Lehrziele
</td>
<td>
course objectives
</td>
</tr>
<tr class="liste0">
<td>
Lernmethode
</td>
<td>
study technique
</td>
</tr>
<tr class="liste1">
<td>
Magisterarbeit
</td>
<td>
master's thesis
</td>
</tr>
<tr class="liste0">
<td>
Mag. (FH)
</td>
<td>
Mag. (FH)
</td>
</tr>
<tr class="liste1">
<td>
Master-Studiengang
</td>
<td>
master's degree program
</td>
</tr>
<tr class="liste0">
<td>
Matrikelnummer
</td>
<td>
registration number
</td>
</tr>
<tr class="liste1">
<td>
M&uuml;ndliche Pr&uuml;fung
</td>
<td>
oral examination
</td>
</tr>
<tr class="liste0">
<td>
nebenberuflich Lehrende/r
</td>
<td>
part-time instructor
</td>
</tr>
<tr class="liste1">
<td>
Niveaustufe
</td>
<td>
level
</td>
</tr>
<tr class="liste0">
<td>
Niveaustufen:
</td>
<td>
levels
</td>
</tr>
<tr class="liste1">
<td>
Note
</td>
<td>
grade
</td>
</tr>
<tr class="liste0">
<td>
Organisation der LV
</td>
<td>
course organization
</td>
</tr>
<tr class="liste1">
<td>
Personenkennzeichen
</td>
<td>
personal identification number
</td>
</tr>
<tr class="liste0">
<td>
Pflichtveranstaltung
</td>
<td>
required course
</td>
</tr>
<tr class="liste1">
<td>
Pr&auml;sentation
</td>
<td>
presentation
</td>
</tr>
<tr class="liste0">
<td>
Programmverantwortlicher
</td>
<td>
Program Director
</td>
</tr>
<tr class="liste1">
<td>
Projektarbeit
</td>
<td>
project work
</td>
</tr>
<tr class="liste0">
<td>
Pr&uuml;fung
</td>
<td>
examination
</td>
</tr>
<tr class="liste1">
<td>
Pr&uuml;fungsmodalit&auml;ten
</td>
<td>
exam procedure
</td>
</tr>
<tr class="liste0">
<td>
Pr&uuml;fungsordnung
</td>
<td>
examination regulation
</td>
</tr>
<tr class="liste1">
<td>
Rektor
</td>
<td>
rector
</td>
</tr>
<tr class="liste0">
<td>
Schriftliche Pr&uuml;fung
</td>
<td>
written examination
</td>
</tr>
<tr class="liste1">
<td>
Semester
</td>
<td>
semester
</td>
</tr>
<tr class="liste0">
<td>
Seminar
</td>
<td>
seminar
</td>
</tr>
<!-- beg. neu 26.12.2009 seq -->
<tr class="liste1">
<td>
Stellv. Studiengangsleiter
</td>
<td>
Deputy Program Director
</td>
</tr>
<tr class="liste0">
<td>
AssistentIn
</td>
<td>
Administrative Assistant
</td>
</tr>
<tr class="liste1">
<td>
ECTS-Leistungspunkte
</td>
<td>
ECTS credits
</td>
</tr>
<tr class="liste0">
<td>
Semesterwochenstunden
</td>
<td>
Semester periods per week (SP/W)
</td>
</tr>
<!-- end neu 26.12.2009 seq -->
<tr class="liste1">
<td>
Sommersemester
</td>
<td>
summer semester / spring semester
</td>
</tr>
<tr class="liste0">
<td>
Spezialisten
</td>
<td>
specialists
</td>
</tr>
<tr class="liste1">
<td>
Studiengang
</td>
<td>
degree program
</td>
</tr>
<tr class="liste0">
<td>
StudiengangssprecherIn
</td>
<td>
program representative
</td>
</tr>
<tr class="liste1">
<td>
StudiengangsleiterIn
</td>
<td>
program director
</td>
</tr>
<tr class="liste0">
<td>
Studienjahr
</td>
<td>
academic year
</td>
</tr>
<tr class="liste1">
<td>
Studienplan
</td>
<td>
curriculum
</td>
</tr>
<tr class="liste0">
<td>
Studienplatz
</td>
<td>
study place
</td>
</tr>
<tr class="liste1">
<td>
Studierendenvertretung
</td>
<td>
student council
</td>
</tr>
<tr class="liste0">
<td>
Teilgebiet
</td>
<td>
segment
</td>
</tr>
<tr class="liste1">
<td>
Test
</td>
<td>
test
</td>
</tr>
<tr class="liste0">
<td>
Titel der Lehrveranstaltung
</td>
<td>
course title
</td>
</tr>
<tr class="liste1">
<td>
&Uuml;bung (einfache, mit Anleitung)
</td>
<td>
exercise</font>
</td>
</tr>
<tr class="liste0">
<td>
&Uuml;bung (im Sinne einer LV)
</td>
<td>
practice
session </td>
</tr>
<tr class="liste1">
<td>
&Uuml;bung (im Sinne &uuml;ben)
</td>
<td>
practice
</td>
</tr>
<tr class="liste0">
<td>
Unterricht
</td>
<td>
instruction
</td>
</tr>
<tr class="liste1">
<td>
Vollzeit
</td>
<td>
full-time
</td>
</tr>
<tr class="liste0">
<td>
Voraussetzungen (f&uuml;r LVs)
</td>
<td>
requirements
</td>
</tr>
<tr class="liste1">
<td>
Vorlesung
</td>
<td>
lecture
</td>
</tr>
<tr class="liste0">
<td>
Vortragender
</td>
<td>
lecturer
</td>
</tr>
<tr class="liste1">
<td>
Wintersemester
</td>
<td>
autumn semester / winter semester
</td>
</tr>
<tr class="liste0">
<td>
Zeugnis
</td>
<td>
certificate
</td>
</tr>
<!-- beg. neu 26.12.2009 seq -->
<tr class="liste1">
<td>
Unterrichtssprache
</td>
<td>
Language of instruction
</td>
</tr>
<tr class="liste0">
<td>
Bewerbung
</td>
<td>
application
</td>
</tr>
<tr class="liste1">
<td>
Zugangsvorraussetzungen
</td>
<td>
admission requirements
</td>
</tr>
<tr class="liste0">
<td>
Matura
</td>
<td>
Secondary School diploma
</td>
</tr>
<tr class="liste1">
<td>
Auslandssemester
</td>
<td>
exchange semester
</td>
</tr>
<tr class="liste0">
<td>
Fachhochschule Technikum Wien
</td>
<td>
University of Applied Sciences Technikum Wien (UAS Technikum Wien)
</td>
</tr>
<tr class="liste1">
<td>
Institut für
</td>
<td>
department of
</td>
</tr>
<tr class="liste0">
<td>
Senat
</td>
<td>
Senate
</td>
</tr>
<!-- end neu 26.12.2009 seq -->
</table>
</td></tr></table>
</body></html>
+25 -14
View File
@@ -200,20 +200,26 @@ else
$stsemdatumbis = $stsem_obj->ende;
$qry = "SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
tbl_zeugnisnote.note
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz
FROM public.tbl_prestudentstatus
WHERE prestudent_id=tbl_student.prestudent_id
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
tbl_zeugnisnote.note,tbl_mobilitaet.mobilitaetstyp_kurzbz
FROM
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
if($lehreinheit_id!='')
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER);
@@ -243,6 +249,10 @@ else
$inc.=' (ar)';
$note='ar';
}
if($elem->mobilitaetstyp_kurzbz !='') //dd-Program
{
$inc.=' (dd)';
}
else
$note='';
$worksheet->write($lines,1,$elem->uid);
@@ -295,6 +305,7 @@ else
$worksheet->write(++$lines,0,'(i) ... Incoming');
$worksheet->write(++$lines,0,'(o) ... Outgoing');
$worksheet->write(++$lines,0,'(ar) ... '.$p->t('anwesenheitsliste/angerechnet'));
$worksheet->write(++$lines,0,'(dd) ... Double Degree Program');
$worksheet->setColumn(0, 0, 5);
$worksheet->setColumn(0, 1, 16);
+36 -10
View File
@@ -104,12 +104,12 @@ $fieldheadings = array(
if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung'))
{
$za_simple = 0;
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'FuE', 'Lehre', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
$activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'FuE','FuEallg', 'Lehre', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe', 'Weiterbildung', 'LVEntwicklung');
}
else
{
$za_simple = 1;
$activities = array('Admin', 'FuE','Lehre', 'Pause', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe');
$activities = array('Admin', 'FuE','FuEallg','Lehre', 'Pause', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe', 'Weiterbildung', 'LVEntwicklung');
}
$activities_str = "'".implode("','", $activities)."'";
@@ -669,7 +669,7 @@ echo '
function checkPausenblock()
{
var sel = $("#aktivitaet").val();
var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design"];
var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design", "LVEntwicklung", "Weiterbildung", "FuEallg"];
if (activities.includes(sel))
showPausenblock();
else
@@ -719,6 +719,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);
@@ -1440,8 +1444,10 @@ if ($projekt->getProjekteMitarbeiter($user, true))
if($result = $db->db_query($qry))
{
echo '<SELECT name="aktivitaet" id="aktivitaet" onChange="checkPausenblock()">';
/*
if ($za_simple == 0)
echo '<OPTION value="">-- '.$p->t('zeitaufzeichnung/keineAuswahl').' --</OPTION>';
*/
//else
// echo '<OPTION value="Arbeit">Arbeit</OPTION>';
while($row = $db->db_fetch_object($result))
@@ -2255,9 +2261,6 @@ function getZeitaufzeichnung($user, $von, $bis)
* Exportiert Zeitaufzeichnungsdaten als CSV
* @param $data Zeitaufzeichnungsdaten
* @param string $delimiter CSV-Trennzeichen
* @param $fieldheadings Namen der Spaltenüberschriften
* @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple)
* @param $uid Id des Users für CSV-Filenamen "zeitaufzeichnung_uid"
*/
function exportProjectOverviewAsCSV($user, $delimiter = ',')
{
@@ -2279,6 +2282,7 @@ function exportProjectOverviewAsCSV($user, $delimiter = ',')
function getDataForProjectOverviewCSV($user)
{
$db = new basis_db();
$projects_of_user = new projekt();
$projects = $projects_of_user->getProjekteListForMitarbeiter($user);
@@ -2286,10 +2290,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;
@@ -2299,7 +2305,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)
@@ -2312,14 +2326,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;
}
?>
@@ -755,7 +755,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
+6
View File
@@ -413,6 +413,12 @@ if(!$error)
}
if(!$error)
{
//Check, ob OE aktiv ist, sonst Hinweis ausgeben
$oe = new organisationseinheit($_POST['oe_kurzbz']);
if ($oe->aktiv === false)
{
$errormsg = 'ACHTUNG: Die Organisationseinheit ist inaktiv. Änderungen wurden gespeichert.';
}
$benutzerfunktion->oe_kurzbz = $_POST['oe_kurzbz'];
$benutzerfunktion->semester = $_POST['semester'];
$benutzerfunktion->fachbereich_kurzbz = $_POST['fachbereich_kurzbz'];
+2
View File
@@ -328,6 +328,8 @@ function FunktionDetailSpeichern(kopie)
}
else
{
if(val.dbdml_errormsg!='' && val.dbdml_errormsg!='unknown')
alert(val.dbdml_errormsg);
FunktionBezeichnungChanged=false;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
FunktionenSelectID=val.dbdml_data;
File diff suppressed because it is too large Load Diff
+101 -71
View File
@@ -149,12 +149,22 @@ function onselectProjekt()
var beginn=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" ));
var ende=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" ));
var budget=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#budget" ));
var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" ));
var aufwand_pt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwand_pt" ));
var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" ));
var aufwand_pt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwand_pt" ));
var anzahl_ma=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anzahl_ma" ));
var aufwandstyp_kurzbz=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwandstyp_kurzbz" ));
//Daten den Feldern zuweisen
var zeitaufzeichnung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnung" ));
if (!zeitaufzeichnung)
{
zeitaufzeichnung='Nein';
}
else
{
zeitaufzeichnung='Ja';
}
//Daten den Feldern zuweisen
document.getElementById('textbox-projekt-detail-projekt_kurzbz').value=projekt_kurzbz;
//document.getElementById('menulist-projekt-detail-oe_kurzbz').value=oe_kurzbz;
@@ -166,9 +176,14 @@ function onselectProjekt()
document.getElementById('textbox-projekt-detail-ende').value=ende;
document.getElementById('textbox-projekt-detail-budget').value=budget;
document.getElementById('textbox-projekt-detail-farbe').value=farbe;
document.getElementById('checkbox-projekt-detail-neu').checked=false;
document.getElementById('textbox-projekt-anzahl_ma').value=anzahl_ma;
document.getElementById('checkbox-projekt-detail-neu').checked=false;
document.getElementById('textbox-projekt-anzahl_ma').value=anzahl_ma;
document.getElementById('textbox-projekt-aufwand_pt').value=aufwand_pt;
if(zeitaufzeichnung=='Nein')
document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked=false;
else
document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked=true;
MenulistSelectItemOnValue('menulist-projekt-detail-aufwandstyp', aufwandstyp_kurzbz);
@@ -197,12 +212,13 @@ function saveProjektDetail()
beginn = document.getElementById('textbox-projekt-detail-beginn').iso;
ende = document.getElementById('textbox-projekt-detail-ende').iso;
budget = document.getElementById('textbox-projekt-detail-budget').value;
farbe = document.getElementById('textbox-projekt-detail-farbe').value;
farbe = document.getElementById('textbox-projekt-detail-farbe').value;
neu = document.getElementById('checkbox-projekt-detail-neu').checked;
aufwandstyp_kurzbz = MenulistGetSelectedValue('menulist-projekt-detail-aufwandstyp');
anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value;
aufwandstyp_kurzbz = MenulistGetSelectedValue('menulist-projekt-detail-aufwandstyp');
anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value;
aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value;
zeitaufzeichnung = document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked;
var soapBody = new SOAPObject("saveProjekt");
//soapBody.appendChild(new SOAPObject("username")).val('joe');
//soapBody.appendChild(new SOAPObject("passwort")).val('waschl');
@@ -217,14 +233,28 @@ function saveProjektDetail()
projekt.appendChild(new SOAPObject("ende")).val(ende);
projekt.appendChild(new SOAPObject("budget")).val(budget);
projekt.appendChild(new SOAPObject("farbe")).val(farbe);
projekt.appendChild(new SOAPObject("aufwandstyp_kurzbz")).val(aufwandstyp_kurzbz);
projekt.appendChild(new SOAPObject("anzahl_ma")).val(anzahl_ma);
projekt.appendChild(new SOAPObject("aufwandstyp_kurzbz")).val(aufwandstyp_kurzbz);
projekt.appendChild(new SOAPObject("anzahl_ma")).val(anzahl_ma);
projekt.appendChild(new SOAPObject("aufwand_pt")).val(aufwand_pt);
if(zeitaufzeichnung)
{
projekt.appendChild(new SOAPObject("zeitaufzeichnung")).val('true');
}
else
{
projekt.appendChild(new SOAPObject("zeitaufzeichnung")).val('false');
}
if(neu)
{
projekt.appendChild(new SOAPObject("neu")).val('true');
else
}
else
{
projekt.appendChild(new SOAPObject("neu")).val('false');
}
soapBody.appendChild(projekt);
var sr = new SOAPRequest("saveProjekt",soapBody);
@@ -342,9 +372,9 @@ function ProjektDetailReset()
document.getElementById('textbox-projekt-detail-beschreibung').value='';
document.getElementById('textbox-projekt-detail-beginn').value='';
document.getElementById('textbox-projekt-detail-ende').value='';
document.getElementById('textbox-projekt-detail-budget').value='';
document.getElementById('textbox-projekt-anzahl_ma').value='';
document.getElementById('textbox-projekt-aufwand_pt').value='';
document.getElementById('textbox-projekt-detail-budget').value='';
document.getElementById('textbox-projekt-anzahl_ma').value='';
document.getElementById('textbox-projekt-aufwand_pt').value='';
document.getElementById('textbox-projekt-detail-projektwuerdigkeit').value='';
}
@@ -362,7 +392,7 @@ function ProjektDisableFields(val)
document.getElementById('textbox-projekt-detail-budget').disabled=val;
document.getElementById('textbox-projekt-detail-farbe').disabled=val;
document.getElementById('button-projekt-detail-speichern').disabled=val;
document.getElementById('menulist-projekt-detail-aufwandstyp').disabled=val;
document.getElementById('menulist-projekt-detail-aufwandstyp').disabled=val;
document.getElementById('textbox-projekt-anzahl_ma').disabled=val;
document.getElementById('textbox-projekt-aufwand_pt').disabled=val;
}
@@ -385,65 +415,65 @@ function ProjektNeu()
document.getElementById('textbox-projekt-detail-projekt_kurzbz').disabled=false;
document.getElementById('checkbox-projekt-detail-neu').checked=true;
document.getElementById('caption-projekt-detail').label='Neues Projekt';
document.getElementById('textbox-projekt-detail-farbe').value='#FF0000';
document.getElementById('textbox-projekt-anzahl_ma').disabled=false;
document.getElementById('textbox-projekt-detail-farbe').value='#FF0000';
document.getElementById('textbox-projekt-anzahl_ma').disabled=false;
document.getElementById('textbox-projekt-aufwand_pt').disabled=false;
//Detail Tab auswaehlen
document.getElementById('tabs-projekt-main').selectedItem=document.getElementById('tab-projekt-detail');
}
function makeProjektAnalyse(){
var ergebnis_el = document.getElementById('textbox-projekt-detail-projektwuerdigkeit');
ergebnis_el.value="";
var anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value;
var aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value;
var budget = document.getElementById('textbox-projekt-detail-budget').value;
function makeProjektAnalyse(){
var ergebnis_el = document.getElementById('textbox-projekt-detail-projektwuerdigkeit');
ergebnis_el.value="";
var anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value;
var aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value;
var budget = document.getElementById('textbox-projekt-detail-budget').value;
var beginn = document.getElementById('textbox-projekt-detail-beginn').value;
var ende = document.getElementById('textbox-projekt-detail-ende').value;
if (!anzahl_ma || !aufwand_pt || !budget || !beginn || !ende)
{
ergebnis_el.value = 'Angaben unvollständig';
}
else
{
var beginn_arr = beginn.split(".");
var ende_arr = ende.split(".");
var date1 = new Date(beginn_arr[2],beginn_arr[1],beginn_arr[0]);
var date2 = new Date(ende_arr[2],ende_arr[1],ende_arr[0]);
var dauerTage = parseInt((date2 - date1) / (1000 * 60 * 60 * 24));
var punkte_gesamt = 0;
var projekttyp = '';
if (aufwand_pt < 10) punkte_gesamt += 1;
else if (aufwand_pt <= 50) punkte_gesamt += 4;
else if (aufwand_pt <= 250) punkte_gesamt += 8;
else punkte_gesamt += 8;
if (anzahl_ma < 3) punkte_gesamt += 1;
else if (anzahl_ma <= 5) punkte_gesamt += 3;
else if (anzahl_ma <= 20) punkte_gesamt += 6;
else punkte_gesamt += 9;
if (budget < 5000) punkte_gesamt += 1;
else if (budget <= 25000) punkte_gesamt += 2;
else if (budget <= 500000) punkte_gesamt += 4;
else punkte_gesamt += 6;
if (dauerTage < 30) punkte_gesamt += 0;
else if (dauerTage <= 90) punkte_gesamt += 4;
else if (dauerTage <= 360) punkte_gesamt += 5;
else punkte_gesamt += 7;
if (punkte_gesamt <= 8) projekttyp = 'Vorhaben';
else if (punkte_gesamt <= 15) projekttyp = 'Kleinprojekt';
else if (punkte_gesamt <= 30) projekttyp = 'Projekt';
else projekttyp = 'Großrojekt';
ergebnis_el.value = projekttyp;
}
}
var ende = document.getElementById('textbox-projekt-detail-ende').value;
if (!anzahl_ma || !aufwand_pt || !budget || !beginn || !ende)
{
ergebnis_el.value = 'Angaben unvollständig';
}
else
{
var beginn_arr = beginn.split(".");
var ende_arr = ende.split(".");
var date1 = new Date(beginn_arr[2],beginn_arr[1],beginn_arr[0]);
var date2 = new Date(ende_arr[2],ende_arr[1],ende_arr[0]);
var dauerTage = parseInt((date2 - date1) / (1000 * 60 * 60 * 24));
var punkte_gesamt = 0;
var projekttyp = '';
if (aufwand_pt < 10) punkte_gesamt += 1;
else if (aufwand_pt <= 50) punkte_gesamt += 4;
else if (aufwand_pt <= 250) punkte_gesamt += 8;
else punkte_gesamt += 8;
if (anzahl_ma < 3) punkte_gesamt += 1;
else if (anzahl_ma <= 5) punkte_gesamt += 3;
else if (anzahl_ma <= 20) punkte_gesamt += 6;
else punkte_gesamt += 9;
if (budget < 5000) punkte_gesamt += 1;
else if (budget <= 25000) punkte_gesamt += 2;
else if (budget <= 500000) punkte_gesamt += 4;
else punkte_gesamt += 6;
if (dauerTage < 30) punkte_gesamt += 0;
else if (dauerTage <= 90) punkte_gesamt += 4;
else if (dauerTage <= 360) punkte_gesamt += 5;
else punkte_gesamt += 7;
if (punkte_gesamt <= 8) projekttyp = 'Vorhaben';
else if (punkte_gesamt <= 15) projekttyp = 'Kleinprojekt';
else if (punkte_gesamt <= 30) projekttyp = 'Projekt';
else projekttyp = 'Großrojekt';
ergebnis_el.value = projekttyp;
}
}
function ProjektPrintStatusbericht()
{
@@ -164,6 +164,15 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<spacer />
</hbox>
</row>
<row>
<label value="Zeitaufzeichnung" control="checkbox-projekt-detail-zeitaufzeichnung"/>
<hbox>
<checkbox id="checkbox-projekt-detail-zeitaufzeichnung"/>
<spacer />
</hbox>
</row>
</rows>
</grid>
<hbox>
+30 -3
View File
@@ -161,7 +161,16 @@ function onselectTreeProjektphase()
var budget=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#budget" ));
var personentage=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#personentage" ));
var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" ));
var zeitaufzeichnung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnung" ));
if (!zeitaufzeichnung)
{
zeitaufzeichnung='Nein';
}
else
{
zeitaufzeichnung='Ja';
}
//alert(typ);
//Daten den Feldern zuweisen
@@ -180,6 +189,11 @@ function onselectTreeProjektphase()
document.getElementById('textbox-projektphase-detail-personentage').value=personentage;
document.getElementById('textbox-projektphase-detail-farbe').value=farbe;
document.getElementById('checkbox-projektphase-detail-neu').checked=false;
if(zeitaufzeichnung=='Nein')
document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked=false;
else
document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked=true;
MenulistSelectItemOnValue('menulist-projektphase-detail-projektphase_fk', projektphase_fk);
MenulistSelectItemOnValue('menulist-projektphase-detail-ressource', ressource_id);
@@ -233,6 +247,7 @@ function saveProjektphaseDetail()
var personentage = document.getElementById('textbox-projektphase-detail-personentage').value;
var farbe = document.getElementById('textbox-projektphase-detail-farbe').value;
var neu = document.getElementById('checkbox-projektphase-detail-neu').checked;
var zeitaufzeichnung = document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked;
var soapBody = new SOAPObject("saveProjektphase");
//soapBody.appendChild(new SOAPObject("username")).val('joe');
@@ -251,10 +266,22 @@ function saveProjektphaseDetail()
phase.appendChild(new SOAPObject("budget")).val(budget);
phase.appendChild(new SOAPObject("personentage")).val(personentage);
phase.appendChild(new SOAPObject("farbe")).val(farbe);
if(neu)
phase.appendChild(new SOAPObject("neu")).val('true');
if(zeitaufzeichnung)
{
phase.appendChild(new SOAPObject("zeitaufzeichnung")).val('true');
}
else
{
phase.appendChild(new SOAPObject("zeitaufzeichnung")).val('false');
}
if(neu)
{
phase.appendChild(new SOAPObject("neu")).val('true');
}
else
{
phase.appendChild(new SOAPObject("neu")).val('false');
}
phase.appendChild(new SOAPObject("user")).val(getUsername());
soapBody.appendChild(phase);
@@ -143,6 +143,15 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<spacer />
</hbox>
</row>
<row>
<label value="Zeitaufzeichnung" control="checkbox-projektphase-detail-zeitaufzeichnung"/>
<hbox>
<checkbox id="checkbox-projektphase-detail-zeitaufzeichnung"/>
<spacer />
</hbox>
</row>
</rows>
</grid>
<hbox>
+1 -1
View File
@@ -237,7 +237,7 @@ $worksheet->write($zeile,++$spalte,"Fixangestellt", $format_bold);
$maxlength[$spalte]=10;
$worksheet->write($zeile,++$spalte,"Vorjahrslektor", $format_bold);
$maxlength[$spalte]=12;
$worksheet->write($zeile,++$spalte,"Wunschlektor", $format_bold);
$worksheet->write($zeile,++$spalte,"Lektor*in bestätigt", $format_bold);
$maxlength[$spalte]=12;
$worksheet->write($zeile,++$spalte,"Bezeichnung", $format_bold);
$maxlength[$spalte]=25;
+4
View File
@@ -428,6 +428,8 @@ if(!$error)
$student->geburtsnation = $_POST['geburtsnation'];
$student->sprache = $_POST['sprache'];
$student->matrikelnr = $_POST['matrikelnummer'];
if (isset($_POST['bpk']))
$student->bpk = $_POST['bpk'];
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = $user;
@@ -577,6 +579,8 @@ if(!$error)
$person->geburtsnation = $_POST['geburtsnation'];
$person->sprache = $_POST['sprache'];
$person->matr_nr = $_POST['matr_nr'];
if (isset($_POST['bpk']))
$person->bpk = $_POST['bpk'];
$person->updateamum = date('Y-m-d H:i:s');
$person->updatevon = $user;
+6 -2
View File
@@ -31,7 +31,9 @@ require_once('../../include/variable.class.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
$user=get_uid();
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$variable = new variable();
if(!$variable->loadVariables($user))
@@ -72,7 +74,9 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label value="Zugangscode" control="student-detail-zugangscode"/>
<label id="label-student-detail-link_bewerbungstool" hidden="true" value=""></label>
<label class="text-link" href="#" id="label-student-detail-zugangscode" value="" onclick="window.open(document.getElementById('label-student-detail-link_bewerbungstool').value)"/>
<?php $hideBpk = $rechte->isBerechtigt('student/bpk') ? '':' hidden="true"'; ?>
<label value="BPK" control="student-detail-textbox-bpk"<?php echo $hideBpk; ?>/>
<hbox><textbox id="student-detail-textbox-bpk" disabled="true" maxlength="28" size="50"<?php echo $hideBpk; ?>/></hbox>
</row>
<row>
<label value="Anrede" control="student-detail-textbox-anrede"/>
+6
View File
@@ -704,6 +704,7 @@ function StudentDetailReset()
document.getElementById('student-detail-menulist-sprache').value='German';
document.getElementById('student-detail-textbox-matrikelnummer').value='';
document.getElementById('student-detail-textbox-matr_nr').value='';
document.getElementById('student-detail-textbox-bpk').value='';
document.getElementById('student-detail-image').src='';
}
@@ -742,6 +743,7 @@ function StudentDetailDisableFields(val)
document.getElementById('student-detail-textbox-alias').disabled=val;
document.getElementById('student-detail-button-save').disabled=val;
document.getElementById('student-detail-textbox-matr_nr').disabled=val;
document.getElementById('student-detail-textbox-bpk').disabled=val;
}
// ****
@@ -779,6 +781,7 @@ function StudentDetailSave()
gruppe = document.getElementById('student-detail-textbox-gruppe').value;
alias = document.getElementById('student-detail-textbox-alias').value;
matr_nr = document.getElementById('student-detail-textbox-matr_nr').value;
bpk = document.getElementById('student-detail-textbox-bpk').value;
//Wenn es noch kein Student ist, dann wird die Studiengang_kz vom Prestudent genommen
if(studiengang_kz=='')
@@ -836,6 +839,7 @@ function StudentDetailSave()
req.add('gruppe', gruppe);
req.add('alias', alias);
req.add('matr_nr',matr_nr);
req.add('bpk',bpk);
var response = req.executePOST();
@@ -1084,6 +1088,7 @@ function StudentAuswahl()
matr_nr=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#matr_nr" ));
zugangscode=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zugangscode" ));
link_bewerbungstool=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#link_bewerbungstool" ));
bpk=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bpk" ));
//Bei Incoming wird das Menue zur Statusaenderung deaktiviert
if(status=='Incoming')
@@ -1130,6 +1135,7 @@ function StudentAuswahl()
document.getElementById('student-detail-textbox-matr_nr').value=matr_nr;
document.getElementById('label-student-detail-zugangscode').value=zugangscode;
document.getElementById('label-student-detail-link_bewerbungstool').value=link_bewerbungstool;
document.getElementById('student-detail-textbox-bpk').value=bpk;
//PreStudent Daten holen
+4 -4
View File
@@ -183,7 +183,7 @@ function StudentProjektarbeitTreeLoad(uid)
tree.builder.addListener(StudentProjektarbeitTreeListener);
StudentProjektarbeitDisableFields(false);
// Wenn Vertragsdetails angezeigt werden
if (projektarbeit_vertragsdetails_anzeigen) {
//Reset attributes
@@ -398,7 +398,7 @@ function StudentProjektarbeitAuswahl()
//Lehrveranstaltung DropDown laden
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&withlv="+lehrveranstaltung_id+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = LvDropDown.database.GetDataSources();
@@ -652,11 +652,11 @@ function StudentProjektarbeitNeu()
StudentProjektarbeitResetFields();
StudentProjektarbeitDetailDisableFields(false);
StudentProjektbetreuerDisableFields(true);
var stg_kz = document.getElementById('student-detail-menulist-studiengang_kz').value;
var student_uid = document.getElementById('student-detail-textbox-uid').value;
//Lehrveranstaltung DropDown laden
var LvDropDown = document.getElementById('student-projektarbeit-menulist-lehrveranstaltung');
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?stg_kz='+stg_kz+"&projektarbeit=true&"+gettimestamp();
url='<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?uid='+student_uid+"&projektarbeit=true&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = LvDropDown.database.GetDataSources();
+200
View File
@@ -0,0 +1,200 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Harald Bamberger <harald.bamberger@technikum-wien.at>
*/
require_once(dirname(__DIR__) . '/basis_db.class.php');
/**
* Description of covidhelper
*
* @author bambi
*/
class CovidHelper extends basis_db
{
const STATUS_OK = 1;
const STATUS_NOTOK = 0;
const STATUS_UNKNOWN = -1;
const STATUS_NOTSET = -2;
const TITLE_OK = 'Nachweis gültig';
const TITLE_NOTOK = 'Nachweis ungültig';
const TITLE_UNKNOWN = 'Nachweis unbekannt';
const DB_SCHEMA = 'public';
const DB_TABLE = 'tbl_person';
const DB_UDFNAME = 'udf_3gvalid';
protected $isUdfDefined;
protected $uids;
protected $covidstatus;
public function __construct()
{
parent::__construct();
$this->uids = array();
$this->covidstatus = array();
$this->isUdfDefined = false;
$this->checkIfUdfValuesAreDefined();
}
public function isUdfDefined()
{
return $this->isUdfDefined;
}
public function fetchCovidStatus(array $uids)
{
$this->uids = $uids;
$this->covidstatus = array();
$this->fetchCovidValidStatus();
}
public function getIconHtml($uid)
{
$html = '';
$status = isset($this->covidstatus[$uid]) ? $this->covidstatus[$uid] : self::STATUS_NOTSET;
switch ($status)
{
case self::STATUS_OK:
$html = '<i title="' . $this->getTitle($uid) . '" class="fa fa-check-circle" aria-hidden="true" style="color: green; margin-right: .5em;"></i>';
break;
case self::STATUS_NOTOK:
case self::STATUS_UNKNOWN:
$html = '<i title="' . $this->getTitle($uid) . '" class="fa fa-times-circle" aria-hidden="true" style="color: red; margin-right: .5em;"></i>';
break;
/*
case self::STATUS_UNKNOWN:
$html = '<i title="' . $this->getTitle($uid) . '" class="fa fa-question-circle" aria-hidden="true" style="color: grey; margin-right: .5em;"></i>';
break;
*/
default:
$html = '';
break;
}
return $html;
}
public function getBootstrapClass($uid)
{
$class = '';
$status = isset($this->covidstatus[$uid]) ? $this->covidstatus[$uid] : self::STATUS_NOTSET;
switch ($status)
{
case self::STATUS_OK:
$class = 'success';
break;
case self::STATUS_NOTOK:
case self::STATUS_UNKNOWN:
$class = 'danger';
break;
/*
case self::STATUS_UNKNOWN:
$class = 'warning';
break;
*/
default:
$class = '';
break;
}
return $class;
}
public function getTitle($uid)
{
$title = '';
$status = isset($this->covidstatus[$uid]) ? $this->covidstatus[$uid] : self::STATUS_NOTSET;
switch ($status)
{
case self::STATUS_OK:
$title = self::TITLE_OK;
break;
case self::STATUS_NOTOK:
case self::STATUS_UNKNOWN:
$title = self::TITLE_NOTOK;
break;
/*
case self::STATUS_UNKNOWN:
$title = self::TITLE_UNKNOWN;
break;
*/
default:
$title = '';
break;
}
return $title;
}
public function getCovidStatus()
{
return $this->covidstatus;
}
protected function fetchCovidValidStatus()
{
if( !($this->isUdfDefined && is_array($this->uids) && (count($this->uids) > 0)) )
{
return;
}
$sql = <<<EOSQL
SELECT b.uid, CASE
WHEN (p."udf_values" -> 'udf_3gvalid')::text::date >= CURRENT_DATE::text::date THEN 1
WHEN (p."udf_values" -> 'udf_3gvalid')::text::date < CURRENT_DATE::text::date THEN 0
ELSE -1
END AS covidvalid
FROM tbl_person p
JOIN tbl_benutzer b ON b.person_id = p.person_id AND b.uid IN ({$this->implode4SQL($this->uids)})
EOSQL;
$this->covidstatus = array();
if( $this->db_query($sql) )
{
while( false !== ($row = $this->db_fetch_object()) )
{
$this->covidstatus[$row->uid] = $row->covidvalid;
}
} else {
$this->errormsg = "Fehler in der Abfrage des Covidstatus.";
}
}
public function checkIfUdfValuesAreDefined()
{
$sql = 'SELECT count(name) AS "udfdefined" '
. 'FROM "system"."tbl_udf", jsonb_to_recordset("jsons") AS items(name text) '
. 'WHERE "schema" = \'' . self::DB_SCHEMA . '\' '
. 'AND "table" = \'' . self::DB_TABLE . '\' '
. 'AND "name" = \'' . self::DB_UDFNAME . '\'';
if ( $this->db_query($sql) )
{
if ($row = $this->db_fetch_object())
{
$this->isUdfDefined = ($row->udfdefined > 0) ? true : false;
}
else
{
$this->errormsg = "Fehler in der Abfrage beim Pruefen der UDFs. Kein Datensatz gefunden.";
$this->isUdfDefined = false;
}
}
else
{
$this->errormsg = "Fehler in der Abfrage beim Pruefen der UDFs.";
$this->isUdfDefined = false;
}
}
}
+1 -1
View File
@@ -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).";";
+295
View File
@@ -0,0 +1,295 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Harald Bamberger <harald.bamberger@technikum-wien.at>
* Manfred Kindl <manfred.kindl@technikum-wien.at>
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheitgruppe.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/lehreinheitmitarbeiter.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/erhalter.class.php');
require_once('../../../include/datum.class.php');
/**
* Description of lehrelisthelper
*
* @author bambi
*/
class LehreListHelper
{
protected $db;
protected $studiensemester;
protected $lvid;
protected $lv;
protected $lehreinheit;
protected $stg;
protected $arr_lehrende;
protected $studentuids;
protected $data;
protected $gruppen_string;
protected $lehrende_string;
protected $raum_string;
public function __construct(basis_db $db, $studiensemester, $lvid,
lehrveranstaltung $lv, studiengang $stg, $lehreinheit='')
{
$this->db = $db;
$this->studiensemester = $studiensemester;
$this->lvid = $lvid;
$this->lv = $lv;
$this->lehreinheit = $lehreinheit;
$this->stg = $stg;
$this->arr_lehrende = array();
$this->studentuids = array();
$this->data = array();
$this->gruppen_string = '';
$this->lehrende_string = '';
$this->raum_string = '';
$this->loadMemberGroups();
$this->loadPlannedRooms();
$this->initData();
$this->loadLehrende();
$this->loadStudierende();
}
public function getData()
{
return $this->data;
}
public function getStudentUids()
{
return $this->studentuids;
}
public function getArr_Lehrende()
{
return $this->arr_lehrende;
}
public function getLehrende_String()
{
return $this->lehrende_string;
}
protected function loadMemberGroups()
{
// Teilnehmende Gruppen laden
$qry = "SELECT DISTINCT ON(kuerzel, semester, verband, gruppe, gruppe_kurzbz)
UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel,
semester,
verband,
gruppe,
gruppe_kurzbz
FROM campus.vw_lehreinheit
WHERE lehrveranstaltung_id=".$this->db->db_add_param($this->lvid, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db->db_add_param($this->studiensemester);
if($this->lehreinheit!='')
$qry.=" AND lehreinheit_id=".$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
$this->gruppen_string = '';
if($result = $this->db->db_query($qry))
{
while($row = $this->db->db_fetch_object($result))
{
if($this->gruppen_string!='')
$this->gruppen_string.=', ';
if($row->gruppe_kurzbz=='')
$this->gruppen_string.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe);
else
$this->gruppen_string.=$row->gruppe_kurzbz;
}
}
}
protected function loadPlannedRooms()
{
// Verplante Räume laden
$qry = "SELECT distinct(ort_kurzbz)
FROM lehre.tbl_stundenplan
WHERE lehreinheit_id in
(
SELECT lehreinheit_id
FROM campus.vw_lehreinheit
WHERE lehrveranstaltung_id = ".$this->db->db_add_param($this->lvid, FHC_INTEGER)."
AND studiensemester_kurzbz = ".$this->db->db_add_param($this->studiensemester)."
)";
if($this->lehreinheit!='')
$qry.= " AND tbl_stundenplan.lehreinheit_id = ".$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
$this->raum_string = '';
if($result = $this->db->db_query($qry))
{
while($row = $this->db->db_fetch_object($result))
{
if($this->raum_string!='')
$this->raum_string.=', ';
if($row->ort_kurzbz!='')
$this->raum_string.=$row->ort_kurzbz;
}
}
}
protected function initData()
{
$studiengang_bezeichnung=$this->stg->bezeichnung;
$this->stg->getAllTypes();
$this->data = array(
'gruppen'=>$this->gruppen_string,
'bezeichnung'=>$this->lv->bezeichnung,
'lehrveranstaltung_id'=>$this->lv->lehrveranstaltung_id,
'studiengang'=>$studiengang_bezeichnung,
'studiengang_kz'=>$this->lv->studiengang_kz,
'typ'=>$this->stg->studiengang_typ_arr[$this->stg->typ],
'ects'=>$this->lv->ects,
'sprache'=>$this->lv->sprache,
'studiensemester'=>$this->studiensemester,
'semester'=>$this->lv->semester,
'orgform'=>$this->lv->orgform_kurzbz,
'raum'=>$this->raum_string,
);
}
protected function loadLehrende()
{
//Lehrende der LV laden und in ein Array schreiben
$lehrende = new lehreinheitmitarbeiter();
$lehrende->getMitarbeiterLV($this->lvid, $this->studiensemester, $this->lehreinheit);
$this->arr_lehrende = array();
if (isset($lehrende->result))
{
foreach($lehrende->result AS $row)
{
$this->data[]=array('lehrende'=>array('uid'=>$row->uid,'name'=>$row->vorname.' '.$row->nachname));
$this->arr_lehrende[]=mb_strtoupper($row->uid);
$this->lehrende_string .= (strlen($this->lehrende_string) > 0)
? ', ' . $row->vorname . ' ' . $row->nachname
: $row->vorname . ' ' . $row->nachname;
}
}
}
protected function loadStudierende()
{
//Studierende der LV laden und in ein Array schreiben
$qry = 'SELECT
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, public.tbl_student.student_uid,
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
(SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student,
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang, tbl_mobilitaet.mobilitaetstyp_kurzbz
FROM
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN lehre.tbl_note USING (note)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz)
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id='.$this->db->db_add_param($this->lvid, FHC_INTEGER).' AND
vw_student_lehrveranstaltung.studiensemester_kurzbz='.$this->db->db_add_param($this->studiensemester);
if($this->lehreinheit!='')
$qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$this->db->db_add_param($this->lehreinheit, FHC_INTEGER);
$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC';
$stsem_obj = new studiensemester();
$stsem_obj->load($this->studiensemester);
$stsemdatumvon = $stsem_obj->start;
$stsemdatumbis = $stsem_obj->ende;
$erhalter = new erhalter();
$erhalter->getAll();
$a_o_kz = '9'.sprintf("%03s", $erhalter->result[0]->erhalter_kz); //Stg_Kz AO-Studierende auslesen (9005 fuer FHTW)
$anzahl_studierende = 0;
$datum = new datum();
$zusatz = '';
$this->studentuids = array();
if($result = $this->db->db_query($qry))
{
while($row = $this->db->db_fetch_object($result))
{
if($row->status!='Abbrecher' && $row->status!='Unterbrecher')
{
$anzahl_studierende++;
if($row->status=='Incoming') //Incoming
$zusatz='(i)';
else
$zusatz='';
if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing
$zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')';
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
if($row->mitarbeiter_uid!='') //mitarbeiter
$zusatz.='(ma)';
if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende
$zusatz.='(a.o.)';
if($row->mobilitaetstyp_kurzbz !='') //Double Degree Student
$zusatz.='(d.d.)';
//$zusatz.='test';
$this->studentuids[] = $row->student_uid;
$this->data[]=array('student'=>array(
'uid' => $row->student_uid,
'vorname'=>$row->vorname,
'nachname'=>$row->nachname,
'personenkennzeichen'=>trim($row->matrikelnr),
'matr_nr'=>$row->matr_nr,
'semester'=>$row->semester,
'verband'=>trim($row->verband),
'gruppe'=>trim($row->gruppe),
'zusatz'=>$zusatz,
'studiengang_kurzbz'=>$row->kurzbzlang,
'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz
));
}
}
//Anzahl Studierende in Array $data (an erster Stelle) einfuegen
$this->data = array_reverse($this->data, true);
$this->data['anzahl_studierende'] = $anzahl_studierende;
$this->data = array_reverse($this->data, true);
}
}
}
+1143 -1142
View File
File diff suppressed because it is too large Load Diff
+43 -4
View File
@@ -1,5 +1,5 @@
<?php
/* Copyright (C) 2006 fhcomplete.org
/* Copyright (C) 2021 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
@@ -16,9 +16,10 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Stefan Puraner <puraner@technikum-wien.at>
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>,
* Stefan Puraner <puraner@technikum-wien.at> and
* Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
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
+49
View File
@@ -1090,6 +1090,55 @@ class mitarbeiter extends benutzer
return $return;
}
/**
* Gibt UID des letzten Vorgesetzten zurück
* @param string $uid Mitarbeiter.
* @return uid letzter Vorgesetzter
*/
public function getLastVorgesetzter($uid = null)
{
$return = false;
if (is_null($uid))
$uid = $this->uid;
$qry = "SELECT
uid as vorgesetzter
FROM
public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung' AND
(datum_von is null OR datum_von<=now()) AND
(datum_bis is null OR datum_bis>=now()) AND
oe_kurzbz in (SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)."
ORDER BY datum_von DESC
LIMIT 1
);
";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
if ($row->vorgesetzter != '')
{
$return = $this->vorgesetzter = $row->vorgesetzter;
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage!';
$return = false;
}
}
}
return $return;
}
/**
* Gibt ein Array mit den UIDs der aktiv beschäftigten Untergebenen zurueck
* @param string $uid UID.
+13 -2
View File
@@ -24,6 +24,7 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/datum.class.php');
require_once(dirname(__FILE__).'/udf.class.php');
class person extends basis_db
{
@@ -64,6 +65,7 @@ class person extends basis_db
public $foto_sperre = false; // boolean
public $matr_nr; //varchar(32)
public $bpk; //varchar(255)
public $udf_values; //json
/**
* Konstruktor - Uebergibt die Connection und laedt optional eine Person
@@ -84,6 +86,8 @@ class person extends basis_db
**/
public function load($personId)
{
$udf = new UDF();
//person_id auf gueltigkeit pruefen
if (is_numeric($personId) && $personId != '')
{
@@ -91,8 +95,11 @@ class person extends basis_db
gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id,
geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre,
matr_nr, bpk
FROM public.tbl_person
matr_nr, bpk";
if ($hasUDF = $udf->personHasUDF())
$qry .= ", udf_values ";
$qry .= "FROM public.tbl_person
WHERE person_id = " . $this->db_add_param($personId, FHC_INTEGER);
if (!$this->db_query($qry))
@@ -135,6 +142,10 @@ class person extends basis_db
$this->foto_sperre = $this->db_parse_bool($row->foto_sperre);
$this->matr_nr = $row->matr_nr;
$this->bpk = $row->bpk;
if ($hasUDF)
{
$this->udf_values = $row->udf_values;
}
}
else
{
+2 -2
View File
@@ -32,12 +32,12 @@ class basis_db extends db
//Connection Herstellen
if (DB_CONNECT_PERSISTENT)
{
if(!basis_db::$db_conn = pg_pconnect($conn_str))
if(!basis_db::$db_conn = @pg_pconnect($conn_str))
die('Fehler beim Oeffnen der Datenbankverbindung');
}
else
{
if(!basis_db::$db_conn = pg_connect($conn_str))
if(!basis_db::$db_conn = @pg_connect($conn_str))
die('Fehler beim Oeffnen der Datenbankverbindung');
}
}
+9
View File
@@ -26,6 +26,7 @@ require_once(dirname(__FILE__).'/log.class.php');
require_once(dirname(__FILE__).'/phrasen.class.php');
require_once(dirname(__FILE__).'/globals.inc.php');
require_once(dirname(__FILE__).'/sprache.class.php');
require_once(dirname(__FILE__).'/udf.class.php');
$sprache = getSprache();
$lang = new sprache();
@@ -73,6 +74,7 @@ class prestudent extends person
public $priorisierung = null;
public $foerderrelevant = null;
public $standort_code = null;
public $udf_values = null;
public $status_kurzbz;
public $studiensemester_kurzbz;
@@ -1413,6 +1415,9 @@ class prestudent extends person
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
ORDER BY prestudent_id";
$udf = new UDF();
$hasUDF = $udf->prestudentHasUDF();
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -1455,6 +1460,10 @@ class prestudent extends person
$obj->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz;
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$obj->priorisierung = $row->priorisierung;
if ($hasUDF)
{
$obj->udf_values = $row->udf_values;
}
$this->result[] = $obj;
}
+181 -99
View File
@@ -45,8 +45,10 @@ class projekt extends basis_db
public $updatevon; // string
public $budget;
public $farbe;
public $anzahl_ma; // integer
public $aufwand_pt; // integer
public $anzahl_ma; // integer
public $aufwand_pt; // integer
public $zeitaufzeichnung; //bool
public $sap_project_id;
/**
@@ -70,8 +72,10 @@ class projekt extends basis_db
{
$qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
if ($this->db_query($qry)) {
if ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->projekt_kurzbz = $row->projekt_kurzbz;
$this->nummer = $row->nummer;
$this->titel = $row->titel;
@@ -83,6 +87,7 @@ class projekt extends basis_db
$this->farbe = $row->farbe;
$this->anzahl_ma = $row->anzahl_ma;
$this->aufwand_pt = $row->aufwand_pt;
$this->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
return true;
}
@@ -119,8 +124,10 @@ class projekt extends basis_db
$qry .= ' AND oe_kurzbz=' . $this->db_add_param($oe);
$qry .= ' ORDER BY oe_kurzbz;';
if ($this->db_query($qry)) {
while ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$obj = new projekt();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
@@ -135,6 +142,7 @@ class projekt extends basis_db
$obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
$obj->anzahl_ma = $row->anzahl_ma;
$obj->aufwand_pt = $row->aufwand_pt;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
@@ -160,9 +168,11 @@ class projekt extends basis_db
if (!is_null($oe))
$qry .= " AND oe_kurzbz=" . $this->db_add_param($oe);
$qry .= ' ORDER BY oe_kurzbz;';
//echo $qry;
if ($this->db_query($qry)) {
while ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$obj = new projekt();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
@@ -176,6 +186,7 @@ class projekt extends basis_db
$obj->farbe = $row->farbe;
$obj->anzahl_ma = $row->anzahl_ma;
$obj->aufwand_pt = $row->aufwand_pt;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
@@ -188,7 +199,6 @@ class projekt extends basis_db
}
}
/**
* Laedt die Projeke einer Organisationseinheit
* @param string $oe Organisationseinheit.
@@ -200,9 +210,11 @@ class projekt extends basis_db
if (!is_null($oe))
$qry .= " WHERE oe_kurzbz=" . $this->db_add_param($oe);
$qry .= ' ORDER BY oe_kurzbz;';
//echo $qry;
if ($this->db_query($qry)) {
while ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$obj = new projekt();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
@@ -217,6 +229,7 @@ class projekt extends basis_db
$obj->aufwandstyp_kurzbz = $row->aufwandstyp_kurzbz;
$obj->anzahl_ma = $row->anzahl_ma;
$obj->aufwand_pt = $row->aufwand_pt;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
@@ -236,21 +249,26 @@ class projekt extends basis_db
protected function validate()
{
//Gesamtlaenge pruefen
if ($this->projekt_kurzbz == null) {
if ($this->projekt_kurzbz == null)
{
$this->errormsg = 'Projekt kurzbz darf nicht NULL sein!';
}
if ($this->oe_kurzbz == null) {
if ($this->oe_kurzbz == null)
{
$this->errormsg = 'OE kurbz darf nicht NULL sein!';
}
if (mb_strlen($this->projekt_kurzbz) > 16) {
if (mb_strlen($this->projekt_kurzbz) > 16)
{
$this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein';
return false;
}
if (mb_strlen($this->nummer) > 8) {
if (mb_strlen($this->nummer) > 8)
{
$this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein';
return false;
}
if (mb_strlen($this->titel) > 256) {
if (mb_strlen($this->titel) > 256)
{
$this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein';
return false;
}
@@ -275,49 +293,55 @@ class projekt extends basis_db
if ($new == null)
$new = $this->new;
if ($new) {
if ($new)
{
//Neuen Datensatz einfuegen
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES(' .
$this->db_add_param($this->projekt_kurzbz) . ', ' .
$this->db_add_param($this->nummer) . ', ' .
$this->db_add_param($this->titel) . ', ' .
$this->db_add_param($this->beschreibung) . ', ' .
$this->db_add_param($this->beginn) . ', ' .
$this->db_add_param($this->ende) . ', ' .
$this->db_add_param($this->budget) . ', ' .
$this->db_add_param($this->farbe) . ', ' .
$this->db_add_param($this->oe_kurzbz) . ',' .
$this->db_add_param($this->aufwand_pt) . ',' .
$this->db_add_param($this->anzahl_ma) . ',' .
$this->db_add_param($this->aufwandstyp_kurzbz) . ');';
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz, zeitaufzeichnung) VALUES('.
$this->db_add_param($this->projekt_kurzbz).', '.
$this->db_add_param($this->nummer).', '.
$this->db_add_param($this->titel).', '.
$this->db_add_param($this->beschreibung).', '.
$this->db_add_param($this->beginn).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->budget).', '.
$this->db_add_param($this->farbe).', '.
$this->db_add_param($this->oe_kurzbz).','.
$this->db_add_param($this->aufwand_pt).','.
$this->db_add_param($this->anzahl_ma).','.
$this->db_add_param($this->aufwandstyp_kurzbz).', '.
$this->db_add_param($this->zeitaufzeichnung,FHC_BOOLEAN).');';
}
else
{
//Updaten des bestehenden Datensatzes
$qry = 'UPDATE fue.tbl_projekt SET ' .
'projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ', ' .
'nummer=' . $this->db_add_param($this->nummer) . ', ' .
'titel=' . $this->db_add_param($this->titel) . ', ' .
'beschreibung=' . $this->db_add_param($this->beschreibung) . ', ' .
'beginn=' . $this->db_add_param($this->beginn) . ', ' .
'ende=' . $this->db_add_param($this->ende) . ', ' .
'budget=' . $this->db_add_param($this->budget) . ', ' .
'farbe=' . $this->db_add_param($this->farbe) . ', ' .
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ', ' .
'anzahl_ma=' . $this->db_add_param($this->anzahl_ma) . ', ' .
'aufwand_pt=' . $this->db_add_param($this->aufwand_pt) . ', ' .
'aufwandstyp_kurzbz=' . $this->db_add_param($this->aufwandstyp_kurzbz) . ' ' .
'WHERE projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ';';
$qry = 'UPDATE fue.tbl_projekt SET '.
'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
'nummer='.$this->db_add_param($this->nummer).', '.
'titel='.$this->db_add_param($this->titel).', '.
'beschreibung='.$this->db_add_param($this->beschreibung).', '.
'beginn='.$this->db_add_param($this->beginn).', '.
'ende='.$this->db_add_param($this->ende).', '.
'budget='.$this->db_add_param($this->budget).', '.
'farbe='.$this->db_add_param($this->farbe).', '.
'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '.
'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '.
'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '.
'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).', '.
'zeitaufzeichnung='.$this->db_add_param($this->zeitaufzeichnung,FHC_BOOLEAN).' '.
'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';';
}
if ($this->db_query($qry)) {
if ($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Daten';
$this->getErrorMsg();
var_dump($this->getErrorMsg());
$this->errormsg = $this->getErrorMsg();
return false;
}
}
@@ -331,7 +355,8 @@ class projekt extends basis_db
{
$qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
if ($this->db_query($qry)) {
if ($this->db_query($qry))
{
return true;
}
else
@@ -365,29 +390,33 @@ class projekt extends basis_db
)";
if ($projektphasen == true)
{
$qry .= "UNION
SELECT DISTINCT
tbl_projekt.*
FROM
fue.tbl_projektphase
JOIN fue.tbl_projekt USING (projekt_kurzbz)
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
WHERE
(
(
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
AND (tbl_projekt.ende + 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);
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 ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$obj = new projekt();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
@@ -397,6 +426,7 @@ class projekt extends basis_db
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->oe_kurzbz = $row->oe_kurzbz;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
@@ -410,7 +440,7 @@ class projekt extends basis_db
}
/**
* Liefert Ein Array mit Porjekten von allen Projekten des Mitarbeiters mit UID.
* Liefert Ein Array mit Projekten von allen Projekten des Mitarbeiters mit UID.
* Optional auch mit den Zuteilungen zu Projektphasen.
* @param string $mitarbeiter_uid MitarbeiterUID.
* @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
@@ -419,44 +449,91 @@ 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
";
}
if ($result = $this->db_query($qry)) {
while ($row = $this->db_fetch_object($result)) {
$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))
{
$obj = new projekt();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
@@ -466,6 +543,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;
@@ -486,8 +565,10 @@ class projekt extends basis_db
join wawi.tbl_projekt_bestellung USING (projekt_kurzbz)
where bestellung_id= " . $this->db_add_param($bestellung_id);
if ($this->db_query($qry)) {
if ($row = $this->db_fetch_object()) {
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
$this->projekt_kurzbz = $row->projekt_kurzbz;
$this->nummer = $row->nummer;
$this->titel = $row->titel;
@@ -499,6 +580,7 @@ class projekt extends basis_db
$this->farbe = $row->farbe;
$this->anzahl_ma = $row->anzahl_ma;
$this->aufwand_pt = $row->aufwand_pt;
$this->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
return true;
}
@@ -548,7 +630,7 @@ class projekt extends basis_db
}
catch (Exception $e)
{
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
}
}
+91 -69
View File
@@ -19,7 +19,7 @@
* Karl Burkhart <burkhart@technikum-wien.at>
*/
/**
* Klasse projekttask
* Klasse projektphase
* @create 2011-05-23
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
@@ -48,6 +48,8 @@ class projektphase extends basis_db
public $insertvon; // bigint
public $updateamum; // timestamp
public $updatevon; // bigint
public $zeitaufzeichnung; // bool
public $project_task_id;
/**
@@ -92,7 +94,7 @@ class projektphase extends basis_db
$this->start = $row->start;
$this->ende = $row->ende;
$this->personentage = $row->personentage;
$this->farbe = $row->farbe;
$this->farbe = $row->farbe;
$this->budget = $row->budget;
$this->ressource_id = $row->ressource_id;
$this->ressource_bezeichnung = $row->ressource_bezeichnung;
@@ -100,6 +102,7 @@ class projektphase extends basis_db
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
return true;
}
else
@@ -134,7 +137,6 @@ class projektphase extends basis_db
WHERE p.projektphase_fk=tasks.projektphase_fk
) SELECT *
FROM tasks) and projektphase_id not in (".$this->db_add_param($projektphase_id, FHC_INTEGER).")";
//echo "\n".$qry."\n";
if($this->db_query($qry))
{
@@ -151,17 +153,18 @@ class projektphase extends basis_db
$obj->start = $row->start;
$obj->ende = $row->ende;
//$obj->personentage = $row->personentage;
$obj->farbe = $row->farbe;
$obj->farbe = $row->farbe;
$obj->budget = $row->budget;
$obj->ressource_id = $row->ressource_id;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
//var_dump($this->result);
return true;
}
else
@@ -183,7 +186,6 @@ class projektphase extends basis_db
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
//echo "\n".$qry."\n";
if(!is_null($foreignkey))
$qry .= " and projektphase_fk is NULL";
@@ -205,7 +207,7 @@ class projektphase extends basis_db
$obj->start = $row->start;
$obj->ende = $row->ende;
//$obj->personentage = $row->personentage;
$obj->farbe = $row->farbe;
$obj->farbe = $row->farbe;
$obj->budget = $row->budget;
$obj->ressource_id = $row->ressource_id;
$obj->ressource_bezeichnung = $row->ressource_bezeichnung;
@@ -213,10 +215,10 @@ class projektphase extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
//var_dump($this->result);
return true;
}
else
@@ -226,22 +228,22 @@ class projektphase extends basis_db
}
}
/**
* Lädt alle Unterphasen zu einem Projekt
* @param type $phase_id
* @return boolean
*/
public function getAllUnterphasen($phase_id)
{
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichung
/**
* Lädt alle Unterphasen zu einem Projekt
* @param type $phase_id
* @return boolean
*/
public function getAllUnterphasen($phase_id)
{
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichung
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER);
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new projektphase();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new projektphase();
$obj->projekt_kurzbz = $row->projekt_kurzbz;
$obj->projektphase_id = $row->projektphase_id;
@@ -252,7 +254,7 @@ class projektphase extends basis_db
$obj->start = $row->start;
$obj->ende = $row->ende;
//$obj->personentage = $row->personentage;
$obj->farbe = $row->farbe;
$obj->farbe = $row->farbe;
$obj->budget = $row->budget;
$obj->ressource_id = $row->ressource_id;
$obj->ressource_bezeichnung = $row->ressource_bezeichnung;
@@ -260,17 +262,18 @@ class projektphase extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->zeitaufzeichnung = $this->db_parse_bool($row->zeitaufzeichnung);
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = "Fehler beim laden der Daten";
return false;
}
}
}
return true;
}
else
{
$this->errormsg = "Fehler beim Laden der Daten";
return false;
}
}
/**
* Prueft die Variablen auf Gueltigkeit
@@ -319,22 +322,22 @@ class projektphase extends basis_db
if($new)
{
//Neuen Datensatz einfuegen
$qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ,
beschreibung, start, ende, budget, ressource_id, insertvon, insertamum, updatevon, updateamum, farbe, personentage) VALUES ('.
$this->db_add_param($this->projekt_kurzbz).', '.
$this->db_add_param($this->projektphase_fk).', '.
$this->db_add_param($this->bezeichnung).', '.
$this->db_add_param($this->typ).', '.
$this->db_add_param($this->beschreibung).', '.
$this->db_add_param($this->start).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->budget).', '.
$this->db_add_param($this->ressource_id).', '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).', now(), '.
$this->db_add_param($this->farbe).', '.
$this->db_add_param($this->personentage).' );';
beschreibung, start, ende, budget, ressource_id, insertvon, insertamum, updatevon, updateamum, farbe, personentage, zeitaufzeichnung) VALUES ('.
$this->db_add_param($this->projekt_kurzbz).', '.
$this->db_add_param($this->projektphase_fk).', '.
$this->db_add_param($this->bezeichnung).', '.
$this->db_add_param($this->typ).', '.
$this->db_add_param($this->beschreibung).', '.
$this->db_add_param($this->start).', '.
$this->db_add_param($this->ende).', '.
$this->db_add_param($this->budget).', '.
$this->db_add_param($this->ressource_id).', '.
$this->db_add_param($this->insertvon).', now(), '.
$this->db_add_param($this->updatevon).', now(), '.
$this->db_add_param($this->farbe).', '.
$this->db_add_param($this->personentage).', '.
$this->db_add_param($this->zeitaufzeichnung,FHC_BOOLEAN).');';
}
else
{
@@ -349,11 +352,12 @@ class projektphase extends basis_db
'start='.$this->db_add_param($this->start).', '.
'ende='.$this->db_add_param($this->ende).', '.
'budget='.$this->db_add_param($this->budget).', '.
'ressource_id='.$this->db_add_param($this->ressource_id).', '.
'farbe='.$this->db_add_param($this->farbe).', '.
'ressource_id='.$this->db_add_param($this->ressource_id).', '.
'farbe='.$this->db_add_param($this->farbe).', '.
'personentage='.$this->db_add_param($this->personentage).', '.
'updateamum= now(), '.
'updatevon='.$this->db_add_param($this->updatevon).' '.
'updatevon='.$this->db_add_param($this->updatevon).', '.
'zeitaufzeichnung='.$this->db_add_param($this->zeitaufzeichnung,FHC_BOOLEAN).' '.
'WHERE projektphase_id='.$this->db_add_param($this->projektphase_id, FHC_INTEGER).';';
}
@@ -528,7 +532,7 @@ class projektphase extends basis_db
* gibt den Fortschritt der Phase in Prozent zurück --> Phasen die auf die übergebene Phase zeigen werden berücksichtigt
* @param $projektphase_id
*/
public function getFortschritt($projektphase_id)
public function getFortschritt($projektphase_id)
{
$qry = "Select * from fue.tbl_projektphase phase
join fue.tbl_projekttask task using(projektphase_id)
@@ -685,26 +689,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 +749,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;
-687
View File
@@ -1,687 +0,0 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
//
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
// +----------------------------------------------------------------------+
//
// $Id: HTMLSax3.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
//
/**
* Main parser components
* @package XML_HTMLSax3
* @version $Id: HTMLSax3.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
*/
/**
* Required classes
*/
if (!defined('XML_HTMLSAX3')) {
define('XML_HTMLSAX3', 'XML/');
}
require_once(XML_HTMLSAX3 . 'HTMLSax3/States.php');
require_once(XML_HTMLSAX3 . 'HTMLSax3/Decorators.php');
/**
* Base State Parser
* @package XML_HTMLSax3
* @access protected
* @abstract
*/
class XML_HTMLSax3_StateParser {
/**
* Instance of user front end class to be passed to callbacks
* @var XML_HTMLSax3
* @access private
*/
var $htmlsax;
/**
* User defined object for handling elements
* @var object
* @access private
*/
var $handler_object_element;
/**
* User defined open tag handler method
* @var string
* @access private
*/
var $handler_method_opening;
/**
* User defined close tag handler method
* @var string
* @access private
*/
var $handler_method_closing;
/**
* User defined object for handling data in elements
* @var object
* @access private
*/
var $handler_object_data;
/**
* User defined data handler method
* @var string
* @access private
*/
var $handler_method_data;
/**
* User defined object for handling processing instructions
* @var object
* @access private
*/
var $handler_object_pi;
/**
* User defined processing instruction handler method
* @var string
* @access private
*/
var $handler_method_pi;
/**
* User defined object for handling JSP/ASP tags
* @var object
* @access private
*/
var $handler_object_jasp;
/**
* User defined JSP/ASP handler method
* @var string
* @access private
*/
var $handler_method_jasp;
/**
* User defined object for handling XML escapes
* @var object
* @access private
*/
var $handler_object_escape;
/**
* User defined XML escape handler method
* @var string
* @access private
*/
var $handler_method_escape;
/**
* User defined handler object or NullHandler
* @var object
* @access private
*/
var $handler_default;
/**
* Parser options determining parsing behavior
* @var array
* @access private
*/
var $parser_options = array();
/**
* XML document being parsed
* @var string
* @access private
*/
var $rawtext;
/**
* Position in XML document relative to start (0)
* @var int
* @access private
*/
var $position;
/**
* Length of the XML document in characters
* @var int
* @access private
*/
var $length;
/**
* Array of state objects
* @var array
* @access private
*/
var $State = array();
/**
* Constructs XML_HTMLSax3_StateParser setting up states
* @var XML_HTMLSax3 instance of user front end class
* @access protected
*/
function XML_HTMLSax3_StateParser (& $htmlsax) {
$this->htmlsax = & $htmlsax;
$this->State[XML_HTMLSAX3_STATE_START] = new XML_HTMLSax3_StartingState();
$this->State[XML_HTMLSAX3_STATE_CLOSING_TAG] = new XML_HTMLSax3_ClosingTagState();
$this->State[XML_HTMLSAX3_STATE_TAG] = new XML_HTMLSax3_TagState();
$this->State[XML_HTMLSAX3_STATE_OPENING_TAG] = new XML_HTMLSax3_OpeningTagState();
$this->State[XML_HTMLSAX3_STATE_PI] = new XML_HTMLSax3_PiState();
$this->State[XML_HTMLSAX3_STATE_JASP] = new XML_HTMLSax3_JaspState();
$this->State[XML_HTMLSAX3_STATE_ESCAPE] = new XML_HTMLSax3_EscapeState();
}
/**
* Moves the position back one character
* @access protected
* @return void
*/
function unscanCharacter() {
$this->position -= 1;
}
/**
* Moves the position forward one character
* @access protected
* @return void
*/
function ignoreCharacter() {
$this->position += 1;
}
/**
* Returns the next character from the XML document or void if at end
* @access protected
* @return mixed
*/
function scanCharacter() {
if ($this->position < $this->length) {
return $this->rawtext{$this->position++};
}
}
/**
* Returns a string from the current position to the next occurance
* of the supplied string
* @param string string to search until
* @access protected
* @return string
*/
function scanUntilString($string) {
$start = $this->position;
$this->position = strpos($this->rawtext, $string, $start);
if ($this->position === FALSE) {
$this->position = $this->length;
}
return substr($this->rawtext, $start, $this->position - $start);
}
/**
* Returns a string from the current position until the first instance of
* one of the characters in the supplied string argument
* @param string string to search until
* @access protected
* @return string
* @abstract
*/
function scanUntilCharacters($string) {}
/**
* Moves the position forward past any whitespace characters
* @access protected
* @return void
* @abstract
*/
function ignoreWhitespace() {}
/**
* Begins the parsing operation, setting up any decorators, depending on
* parse options invoking _parse() to execute parsing
* @param string XML document to parse
* @access protected
* @return void
*/
function parse($data) {
if ($this->parser_options['XML_OPTION_TRIM_DATA_NODES']==1) {
$decorator = new XML_HTMLSax3_Trim(
$this->handler_object_data,
$this->handler_method_data);
$this->handler_object_data =& $decorator;
$this->handler_method_data = 'trimData';
}
if ($this->parser_options['XML_OPTION_CASE_FOLDING']==1) {
$open_decor = new XML_HTMLSax3_CaseFolding(
$this->handler_object_element,
$this->handler_method_opening,
$this->handler_method_closing);
$this->handler_object_element =& $open_decor;
$this->handler_method_opening ='foldOpen';
$this->handler_method_closing ='foldClose';
}
if ($this->parser_options['XML_OPTION_LINEFEED_BREAK']==1) {
$decorator = new XML_HTMLSax3_Linefeed(
$this->handler_object_data,
$this->handler_method_data);
$this->handler_object_data =& $decorator;
$this->handler_method_data = 'breakData';
}
if ($this->parser_options['XML_OPTION_TAB_BREAK']==1) {
$decorator = new XML_HTMLSax3_Tab(
$this->handler_object_data,
$this->handler_method_data);
$this->handler_object_data =& $decorator;
$this->handler_method_data = 'breakData';
}
if ($this->parser_options['XML_OPTION_ENTITIES_UNPARSED']==1) {
$decorator = new XML_HTMLSax3_Entities_Unparsed(
$this->handler_object_data,
$this->handler_method_data);
$this->handler_object_data =& $decorator;
$this->handler_method_data = 'breakData';
}
if ($this->parser_options['XML_OPTION_ENTITIES_PARSED']==1) {
$decorator = new XML_HTMLSax3_Entities_Parsed(
$this->handler_object_data,
$this->handler_method_data);
$this->handler_object_data =& $decorator;
$this->handler_method_data = 'breakData';
}
// Note switched on by default
if ($this->parser_options['XML_OPTION_STRIP_ESCAPES']==1) {
$decorator = new XML_HTMLSax3_Escape_Stripper(
$this->handler_object_escape,
$this->handler_method_escape);
$this->handler_object_escape =& $decorator;
$this->handler_method_escape = 'strip';
}
$this->rawtext = $data;
$this->length = strlen($data);
$this->position = 0;
$this->_parse();
}
/**
* Performs the parsing itself, delegating calls to a specific parser
* state
* @param constant state object to parse with
* @access protected
* @return void
*/
function _parse($state = XML_HTMLSAX3_STATE_START) {
do {
$state = $this->State[$state]->parse($this);
} while ($state != XML_HTMLSAX3_STATE_STOP &&
$this->position < $this->length);
}
}
/**
* Parser for PHP Versions below 4.3.0. Uses a slower parsing mechanism than
* the equivalent PHP 4.3.0+ subclass of StateParser
* @package XML_HTMLSax3
* @access protected
* @see XML_HTMLSax3_StateParser_Gtet430
*/
class XML_HTMLSax3_StateParser_Lt430 extends XML_HTMLSax3_StateParser {
/**
* Constructs XML_HTMLSax3_StateParser_Lt430 defining available
* parser options
* @var XML_HTMLSax3 instance of user front end class
* @access protected
*/
function XML_HTMLSax3_StateParser_Lt430(& $htmlsax) {
parent::XML_HTMLSax3_StateParser($htmlsax);
$this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
$this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
$this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
$this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
$this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
$this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
$this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
}
/**
* Returns a string from the current position until the first instance of
* one of the characters in the supplied string argument
* @param string string to search until
* @access protected
* @return string
*/
function scanUntilCharacters($string) {
$startpos = $this->position;
while ($this->position < $this->length && strpos($string, $this->rawtext{$this->position}) === FALSE) {
$this->position++;
}
return substr($this->rawtext, $startpos, $this->position - $startpos);
}
/**
* Moves the position forward past any whitespace characters
* @access protected
* @return void
*/
function ignoreWhitespace() {
while ($this->position < $this->length &&
strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) {
$this->position++;
}
}
/**
* Begins the parsing operation, setting up the unparsed XML entities
* decorator if necessary then delegating further work to parent
* @param string XML document to parse
* @access protected
* @return void
*/
function parse($data) {
parent::parse($data);
}
}
/**
* Parser for PHP Versions equal to or greater than 4.3.0. Uses a faster
* parsing mechanism than the equivalent PHP < 4.3.0 subclass of StateParser
* @package XML_HTMLSax3
* @access protected
* @see XML_HTMLSax3_StateParser_Lt430
*/
class XML_HTMLSax3_StateParser_Gtet430 extends XML_HTMLSax3_StateParser {
/**
* Constructs XML_HTMLSax3_StateParser_Gtet430 defining available
* parser options
* @var XML_HTMLSax3 instance of user front end class
* @access protected
*/
function XML_HTMLSax3_StateParser_Gtet430(& $htmlsax) {
parent::XML_HTMLSax3_StateParser($htmlsax);
$this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
$this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
$this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
$this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
$this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
$this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
$this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
}
/**
* Returns a string from the current position until the first instance of
* one of the characters in the supplied string argument.
* @param string string to search until
* @access protected
* @return string
*/
function scanUntilCharacters($string) {
$startpos = $this->position;
$length = strcspn($this->rawtext, $string, $startpos);
$this->position += $length;
return substr($this->rawtext, $startpos, $length);
}
/**
* Moves the position forward past any whitespace characters
* @access protected
* @return void
*/
function ignoreWhitespace() {
$this->position += strspn($this->rawtext, " \n\r\t", $this->position);
}
/**
* Begins the parsing operation, setting up the parsed and unparsed
* XML entity decorators if necessary then delegating further work
* to parent
* @param string XML document to parse
* @access protected
* @return void
*/
function parse($data) {
parent::parse($data);
}
}
/**
* Default NullHandler for methods which were not set by user
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_NullHandler {
/**
* Generic handler method which does nothing
* @access protected
* @return void
*/
function DoNothing() {
}
}
/**
* User interface class. All user calls should only be made to this class
* @package XML_HTMLSax3
* @access public
*/
class XML_HTMLSax3 {
/**
* Instance of concrete subclass of XML_HTMLSax3_StateParser
* @var XML_HTMLSax3_StateParser
* @access private
*/
var $state_parser;
/**
* Constructs XML_HTMLSax3 selecting concrete StateParser subclass
* depending on PHP version being used as well as setting the default
* NullHandler for all callbacks<br />
* <b>Example:</b>
* <pre>
* $myHandler = & new MyHandler();
* $parser = new XML_HTMLSax3();
* $parser->set_object($myHandler);
* $parser->set_option('XML_OPTION_CASE_FOLDING');
* $parser->set_element_handler('myOpenHandler','myCloseHandler');
* $parser->set_data_handler('myDataHandler');
* $parser->parser($xml);
* </pre>
* @access public
*/
function XML_HTMLSax3() {
if (version_compare(phpversion(), '4.3', 'ge')) {
$this->state_parser = new XML_HTMLSax3_StateParser_Gtet430($this);
} else {
$this->state_parser = new XML_HTMLSax3_StateParser_Lt430($this);
}
$nullhandler = new XML_HTMLSax3_NullHandler();
$this->set_object($nullhandler);
$this->set_element_handler('DoNothing', 'DoNothing');
$this->set_data_handler('DoNothing');
$this->set_pi_handler('DoNothing');
$this->set_jasp_handler('DoNothing');
$this->set_escape_handler('DoNothing');
}
/**
* Sets the user defined handler object. Returns a PEAR Error
* if supplied argument is not an object.
* @param object handler object containing SAX callback methods
* @access public
* @return mixed
*/
function set_object(&$object) {
if ( is_object($object) ) {
$this->state_parser->handler_default =& $object;
return true;
} else {
require_once('PEAR.php');
PEAR::raiseError('XML_HTMLSax3::set_object requires '.
'an object instance');
}
}
/**
* Sets a parser option. By default all options are switched off.
* Returns a PEAR Error if option is invalid<br />
* <b>Available options:</b>
* <ul>
* <li>XML_OPTION_TRIM_DATA_NODES: trim whitespace off the beginning
* and end of data passed to the data handler</li>
* <li>XML_OPTION_LINEFEED_BREAK: linefeeds result in additional data
* handler calls</li>
* <li>XML_OPTION_TAB_BREAK: tabs result in additional data handler
* calls</li>
* <li>XML_OPTION_ENTITIES_UNPARSED: XML entities are returned as
* seperate data handler calls in unparsed form</li>
* <li>XML_OPTION_ENTITIES_PARSED: (PHP 4.3.0+ only) XML entities are
* returned as seperate data handler calls and are parsed with
* PHP's html_entity_decode() function</li>
* <li>XML_OPTION_STRIP_ESCAPES: strips out the -- -- comment markers
* or CDATA markup inside an XML escape, if found.</li>
* </ul>
* To get HTMLSax to behave in the same way as the native PHP SAX parser,
* using it's default state, you need to switch on XML_OPTION_LINEFEED_BREAK,
* XML_OPTION_ENTITIES_PARSED and XML_OPTION_CASE_FOLDING
* @param string name of parser option
* @param int (optional) 1 to switch on, 0 for off
* @access public
* @return boolean
*/
function set_option($name, $value=1) {
if ( array_key_exists($name,$this->state_parser->parser_options) ) {
$this->state_parser->parser_options[$name] = $value;
return true;
} else {
require_once('PEAR.php');
PEAR::raiseError('XML_HTMLSax3::set_option('.$name.') illegal');
}
}
/**
* Sets the data handler method which deals with the contents of XML
* elements.<br />
* The handler method must accept two arguments, the first being an
* instance of XML_HTMLSax3 and the second being the contents of an
* XML element e.g.
* <pre>
* function myDataHander(& $parser,$data){}
* </pre>
* @param string name of method
* @access public
* @return void
* @see set_object
*/
function set_data_handler($data_method) {
$this->state_parser->handler_object_data =& $this->state_parser->handler_default;
$this->state_parser->handler_method_data = $data_method;
}
/**
* Sets the open and close tag handlers
* <br />The open handler method must accept three arguments; the parser,
* the tag name and an array of attributes e.g.
* <pre>
* function myOpenHander(& $parser,$tagname,$attrs=array()){}
* </pre>
* The close handler method must accept two arguments; the parser and
* the tag name e.g.
* <pre>
* function myCloseHander(& $parser,$tagname){}
* </pre>
* @param string name of open method
* @param string name of close method
* @access public
* @return void
* @see set_object
*/
function set_element_handler($opening_method, $closing_method) {
$this->state_parser->handler_object_element =& $this->state_parser->handler_default;
$this->state_parser->handler_method_opening = $opening_method;
$this->state_parser->handler_method_closing = $closing_method;
}
/**
* Sets the processing instruction handler method e.g. for PHP open
* and close tags<br />
* The handler method must accept three arguments; the parser, the
* PI target and data inside the PI
* <pre>
* function myPIHander(& $parser,$target, $data){}
* </pre>
* @param string name of method
* @access public
* @return void
* @see set_object
*/
function set_pi_handler($pi_method) {
$this->state_parser->handler_object_pi =& $this->state_parser->handler_default;
$this->state_parser->handler_method_pi = $pi_method;
}
/**
* Sets the XML escape handler method e.g. for comments and doctype
* declarations<br />
* The handler method must accept two arguments; the parser and the
* contents of the escaped section
* <pre>
* function myEscapeHander(& $parser, $data){}
* </pre>
* @param string name of method
* @access public
* @return void
* @see set_object
*/
function set_escape_handler($escape_method) {
$this->state_parser->handler_object_escape =& $this->state_parser->handler_default;
$this->state_parser->handler_method_escape = $escape_method;
}
/**
* Sets the JSP/ASP markup handler<br />
* The handler method must accept two arguments; the parser and
* body of the JASP tag
* <pre>
* function myJaspHander(& $parser, $data){}
* </pre>
* @param string name of method
* @access public
* @return void
* @see set_object
*/
function set_jasp_handler ($jasp_method) {
$this->state_parser->handler_object_jasp =& $this->state_parser->handler_default;
$this->state_parser->handler_method_jasp = $jasp_method;
}
/**
* Returns the current string position of the "cursor" inside the XML
* document
* <br />Intended for use from within a user defined handler called
* via the $parser reference e.g.
* <pre>
* function myDataHandler(& $parser,$data) {
* echo( 'Current position: '.$parser->get_current_position() );
* }
* </pre>
* @access public
* @return int
* @see get_length
*/
function get_current_position() {
return $this->state_parser->position;
}
/**
* Returns the string length of the XML document being parsed
* @access public
* @return int
*/
function get_length() {
return $this->state_parser->length;
}
/**
* Start parsing some XML
* @param string XML document
* @access public
* @return void
*/
function parse($data) {
$this->state_parser->parse($data);
}
}
?>
-363
View File
@@ -1,363 +0,0 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
//
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
// +----------------------------------------------------------------------+
//
// $Id: Decorators.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
//
/**
* Decorators for dealing with parser options
* @package XML_HTMLSax3
* @version $Id: Decorators.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
* @see XML_HTMLSax3::set_option
*/
/**
* Trims the contents of element data from whitespace at start and end
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Trim {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_Trim
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_Trim(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Trims the data
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function trimData(&$parser, $data) {
$data = trim($data);
if ($data != '') {
$this->orig_obj->{$this->orig_method}($parser, $data);
}
}
}
/**
* Coverts tag names to upper case
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_CaseFolding {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original open handler method
* @var string
* @access private
*/
var $orig_open_method;
/**
* Original close handler method
* @var string
* @access private
*/
var $orig_close_method;
/**
* Constructs XML_HTMLSax3_CaseFolding
* @param object handler object being decorated
* @param string original open handler method
* @param string original close handler method
* @access protected
*/
function XML_HTMLSax3_CaseFolding(&$orig_obj, $orig_open_method, $orig_close_method) {
$this->orig_obj =& $orig_obj;
$this->orig_open_method = $orig_open_method;
$this->orig_close_method = $orig_close_method;
}
/**
* Folds up open tag callbacks
* @param XML_HTMLSax3
* @param string tag name
* @param array tag attributes
* @access protected
*/
function foldOpen(&$parser, $tag, $attrs=array(), $empty = FALSE) {
$this->orig_obj->{$this->orig_open_method}($parser, strtoupper($tag), $attrs, $empty);
}
/**
* Folds up close tag callbacks
* @param XML_HTMLSax3
* @param string tag name
* @access protected
*/
function foldClose(&$parser, $tag, $empty = FALSE) {
$this->orig_obj->{$this->orig_close_method}($parser, strtoupper($tag), $empty);
}
}
/**
* Breaks up data by linefeed characters, resulting in additional
* calls to the data handler
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Linefeed {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_LineFeed
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_LineFeed(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Breaks the data up by linefeeds
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function breakData(&$parser, $data) {
$data = explode("\n",$data);
foreach ( $data as $chunk ) {
$this->orig_obj->{$this->orig_method}($parser, $chunk);
}
}
}
/**
* Breaks up data by tab characters, resulting in additional
* calls to the data handler
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Tab {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_Tab
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_Tab(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Breaks the data up by linefeeds
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function breakData(&$parser, $data) {
$data = explode("\t",$data);
foreach ( $data as $chunk ) {
$this->orig_obj->{$this->orig_method}($this, $chunk);
}
}
}
/**
* Breaks up data by XML entities and parses them with html_entity_decode(),
* resulting in additional calls to the data handler<br />
* Requires PHP 4.3.0+
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Entities_Parsed {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_Entities_Parsed
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_Entities_Parsed(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Breaks the data up by XML entities
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function breakData(&$parser, $data) {
$data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
foreach ( $data as $chunk ) {
$chunk = html_entity_decode($chunk,ENT_NOQUOTES);
$this->orig_obj->{$this->orig_method}($this, $chunk);
}
}
}
/**
* Compatibility with older PHP versions
*/
if (version_compare(phpversion(), '4.3', '<') && !function_exists('html_entity_decode') ) {
function html_entity_decode($str, $style=ENT_NOQUOTES) {
return strtr($str,
array_flip(get_html_translation_table(HTML_ENTITIES,$style)));
}
}
/**
* Breaks up data by XML entities but leaves them unparsed,
* resulting in additional calls to the data handler<br />
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Entities_Unparsed {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_Entities_Unparsed
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_Entities_Unparsed(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Breaks the data up by XML entities
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function breakData(&$parser, $data) {
$data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
foreach ( $data as $chunk ) {
$this->orig_obj->{$this->orig_method}($this, $chunk);
}
}
}
/**
* Strips the HTML comment markers or CDATA sections from an escape.
* If XML_OPTIONS_FULL_ESCAPES is on, this decorator is not used.<br />
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_Escape_Stripper {
/**
* Original handler object
* @var object
* @access private
*/
var $orig_obj;
/**
* Original handler method
* @var string
* @access private
*/
var $orig_method;
/**
* Constructs XML_HTMLSax3_Entities_Unparsed
* @param object handler object being decorated
* @param string original handler method
* @access protected
*/
function XML_HTMLSax3_Escape_Stripper(&$orig_obj, $orig_method) {
$this->orig_obj =& $orig_obj;
$this->orig_method = $orig_method;
}
/**
* Breaks the data up by XML entities
* @param XML_HTMLSax3
* @param string element data
* @access protected
*/
function strip(&$parser, $data) {
// Check for HTML comments first
if ( substr($data,0,2) == '--' ) {
$patterns = array(
'/^\-\-/', // Opening comment: --
'/\-\-$/', // Closing comment: --
);
$data = preg_replace($patterns,'',$data);
// Check for XML CDATA sections (note: don't do both!)
} else if ( substr($data,0,1) == '[' ) {
$patterns = array(
'/^\[.*CDATA.*\[/s', // Opening CDATA
'/\].*\]$/s', // Closing CDATA
);
$data = preg_replace($patterns,'',$data);
}
$this->orig_obj->{$this->orig_method}($this, $data);
}
}
?>
-287
View File
@@ -1,287 +0,0 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
//
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
// | Authors: Many @ Sitepointforums Advanced PHP Forums |
// +----------------------------------------------------------------------+
//
// $Id: States.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
//
/**
* Parsing states.
* @package XML_HTMLSax3
* @version $Id: States.php,v 1.1 2007/07/20 17:16:35 claudiucristea Exp $
*/
/**
* Define parser states
*/
define('XML_HTMLSAX3_STATE_STOP', 0);
define('XML_HTMLSAX3_STATE_START', 1);
define('XML_HTMLSAX3_STATE_TAG', 2);
define('XML_HTMLSAX3_STATE_OPENING_TAG', 3);
define('XML_HTMLSAX3_STATE_CLOSING_TAG', 4);
define('XML_HTMLSAX3_STATE_ESCAPE', 6);
define('XML_HTMLSAX3_STATE_JASP', 7);
define('XML_HTMLSAX3_STATE_PI', 8);
/**
* StartingState searches for the start of any XML tag
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_StartingState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_TAG
* @access protected
*/
function parse(&$context) {
$data = $context->scanUntilString('<');
if ($data != '') {
$context->handler_object_data->
{$context->handler_method_data}($context->htmlsax, $data);
}
$context->IgnoreCharacter();
return XML_HTMLSAX3_STATE_TAG;
}
}
/**
* Decides which state to move one from after StartingState
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_TagState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant the next state to move into
* @access protected
*/
function parse(&$context) {
switch($context->ScanCharacter()) {
case '/':
return XML_HTMLSAX3_STATE_CLOSING_TAG;
break;
case '?':
return XML_HTMLSAX3_STATE_PI;
break;
case '%':
return XML_HTMLSAX3_STATE_JASP;
break;
case '!':
return XML_HTMLSAX3_STATE_ESCAPE;
break;
default:
$context->unscanCharacter();
return XML_HTMLSAX3_STATE_OPENING_TAG;
}
}
}
/**
* Dealing with closing XML tags
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_ClosingTagState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_START
* @access protected
*/
function parse(&$context) {
$tag = $context->scanUntilCharacters('/>');
if ($tag != '') {
$char = $context->scanCharacter();
if ($char == '/') {
$char = $context->scanCharacter();
if ($char != '>') {
$context->unscanCharacter();
}
}
$context->handler_object_element->
{$context->handler_method_closing}($context->htmlsax, $tag, FALSE);
}
return XML_HTMLSAX3_STATE_START;
}
}
/**
* Dealing with opening XML tags
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_OpeningTagState {
/**
* Handles attributes
* @param string attribute name
* @param string attribute value
* @return void
* @access protected
* @see XML_HTMLSax3_AttributeStartState
*/
function parseAttributes(&$context) {
$Attributes = array();
$context->ignoreWhitespace();
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
while ($attributename != '') {
$attributevalue = NULL;
$context->ignoreWhitespace();
$char = $context->scanCharacter();
if ($char == '=') {
$context->ignoreWhitespace();
$char = $context->ScanCharacter();
if ($char == '"') {
$attributevalue= $context->scanUntilString('"');
$context->IgnoreCharacter();
} else if ($char == "'") {
$attributevalue = $context->scanUntilString("'");
$context->IgnoreCharacter();
} else {
$context->unscanCharacter();
$attributevalue =
$context->scanUntilCharacters("> \n\r\t");
}
} else if ($char !== NULL) {
$attributevalue = NULL;
$context->unscanCharacter();
}
$Attributes[$attributename] = $attributevalue;
$context->ignoreWhitespace();
$attributename = $context->scanUntilCharacters("=/> \n\r\t");
}
return $Attributes;
}
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_START
* @access protected
*/
function parse(&$context) {
$tag = $context->scanUntilCharacters("/> \n\r\t");
if ($tag != '') {
$this->attrs = array();
$Attributes = $this->parseAttributes($context);
$char = $context->scanCharacter();
if ($char == '/') {
$char = $context->scanCharacter();
if ($char != '>') {
$context->unscanCharacter();
}
$context->handler_object_element->
{$context->handler_method_opening}($context->htmlsax, $tag,
$Attributes, TRUE);
$context->handler_object_element->
{$context->handler_method_closing}($context->htmlsax, $tag,
TRUE);
} else {
$context->handler_object_element->
{$context->handler_method_opening}($context->htmlsax, $tag,
$Attributes, FALSE);
}
}
return XML_HTMLSAX3_STATE_START;
}
}
/**
* Deals with XML escapes handling comments and CDATA correctly
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_EscapeState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_START
* @access protected
*/
function parse(&$context) {
$char = $context->ScanCharacter();
if ($char == '-') {
$char = $context->ScanCharacter();
if ($char == '-') {
$context->unscanCharacter();
$context->unscanCharacter();
$text = $context->scanUntilString('-->');
$text .= $context->scanCharacter();
$text .= $context->scanCharacter();
} else {
$context->unscanCharacter();
$text = $context->scanUntilString('>');
}
} else if ( $char == '[') {
$context->unscanCharacter();
$text = $context->scanUntilString(']>');
$text.= $context->scanCharacter();
} else {
$context->unscanCharacter();
$text = $context->scanUntilString('>');
}
$context->IgnoreCharacter();
if ($text != '') {
$context->handler_object_escape->
{$context->handler_method_escape}($context->htmlsax, $text);
}
return XML_HTMLSAX3_STATE_START;
}
}
/**
* Deals with JASP/ASP markup
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_JaspState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_START
* @access protected
*/
function parse(&$context) {
$text = $context->scanUntilString('%>');
if ($text != '') {
$context->handler_object_jasp->
{$context->handler_method_jasp}($context->htmlsax, $text);
}
$context->IgnoreCharacter();
$context->IgnoreCharacter();
return XML_HTMLSAX3_STATE_START;
}
}
/**
* Deals with XML processing instructions
* @package XML_HTMLSax3
* @access protected
*/
class XML_HTMLSax3_PiState {
/**
* @param XML_HTMLSax3_StateParser subclass
* @return constant XML_HTMLSAX3_STATE_START
* @access protected
*/
function parse(&$context) {
$target = $context->scanUntilCharacters(" \n\r\t");
$data = $context->scanUntilString('?>');
if ($data != '') {
$context->handler_object_pi->
{$context->handler_method_pi}($context->htmlsax, $target, $data);
}
$context->IgnoreCharacter();
$context->IgnoreCharacter();
return XML_HTMLSAX3_STATE_START;
}
}
?>
-671
View File
@@ -1,671 +0,0 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* SafeHTML Parser
*
* PHP versions 4 and 5
*
* @category HTML
* @package SafeHTML
* @author Roman Ivanov <thingol@mail.ru>
* @copyright 2004-2005 Roman Ivanov
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
* @version 1.3.7
* @link http://pixel-apes.com/safehtml/
*/
/**
* This package requires HTMLSax3 package
*/
define("XML_HTMLSAX3", '');
require_once(XML_HTMLSAX3 . 'HTMLSax3.php');
/**
*
* SafeHTML Parser
*
* This parser strips down all potentially dangerous content within HTML:
* <ul>
* <li>opening tag without its closing tag</li>
* <li>closing tag without its opening tag</li>
* <li>any of these tags: "base", "basefont", "head", "html", "body", "applet",
* "object", "iframe", "frame", "frameset", "script", "layer", "ilayer", "embed",
* "bgsound", "link", "meta", "style", "title", "blink", "xml" etc.</li>
* <li>any of these attributes: on*, data*, dynsrc</li>
* <li>javascript:/vbscript:/about: etc. protocols</li>
* <li>expression/behavior etc. in styles</li>
* <li>any other active content</li>
* </ul>
* It also tries to convert code to XHTML valid, but htmltidy is far better
* solution for this task.
*
* <b>Example:</b>
* <pre>
* $parser =& new SafeHTML();
* $result = $parser->parse($doc);
* </pre>
*
* @category HTML
* @package SafeHTML
* @author Roman Ivanov <thingol@mail.ru>
* @copyright 1997-2005 Roman Ivanov
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
* @version Release: @package_version@
* @link http://pear.php.net/package/SafeHTML
*/
class SafeHTML
{
/**
* Storage for resulting HTML output
*
* @var string
* @access private
*/
var $_xhtml = '';
/**
* Array of counters for each tag
*
* @var array
* @access private
*/
var $_counter = array();
/**
* Stack of unclosed tags
*
* @var array
* @access private
*/
var $_stack = array();
/**
* Array of counters for tags that must be deleted with all content
*
* @var array
* @access private
*/
var $_dcCounter = array();
/**
* Stack of unclosed tags that must be deleted with all content
*
* @var array
* @access private
*/
var $_dcStack = array();
/**
* Stores level of list (ol/ul) nesting
*
* @var int
* @access private
*/
var $_listScope = 0;
/**
* Stack of unclosed list tags
*
* @var array
* @access private
*/
var $_liStack = array();
/**
* Array of prepared regular expressions for protocols (schemas) matching
*
* @var array
* @access private
*/
var $_protoRegexps = array();
/**
* Array of prepared regular expressions for CSS matching
*
* @var array
* @access private
*/
var $_cssRegexps = array();
/**
* List of single tags ("<tag />")
*
* @var array
* @access public
*/
var $singleTags = array('area', 'br', 'img', 'input', 'hr', 'wbr', );
/**
* List of dangerous tags (such tags will be deleted)
*
* @var array
* @access public
*/
var $deleteTags = array(
'applet', 'base', 'basefont', 'bgsound', 'blink', 'body',
'embed', 'frame', 'frameset', 'head', 'html', 'ilayer',
'iframe', 'layer', 'link', 'meta', 'object', 'style',
'title', 'script',
);
/**
* List of dangerous tags (such tags will be deleted, and all content
* inside this tags will be also removed)
*
* @var array
* @access public
*/
var $deleteTagsContent = array('script', 'style', 'title', 'xml', );
/**
* Type of protocols filtering ('white' or 'black')
*
* @var string
* @access public
*/
var $protocolFiltering = 'white';
/**
* List of "dangerous" protocols (used for blacklist-filtering)
*
* @var array
* @access public
*/
var $blackProtocols = array(
'about', 'chrome', 'data', 'disk', 'hcp',
'help', 'javascript', 'livescript', 'lynxcgi', 'lynxexec',
'ms-help', 'ms-its', 'mhtml', 'mocha', 'opera',
'res', 'resource', 'shell', 'vbscript', 'view-source',
'vnd.ms.radio', 'wysiwyg',
);
/**
* List of "safe" protocols (used for whitelist-filtering)
*
* @var array
* @access public
*/
var $whiteProtocols = array(
'ed2k', 'file', 'ftp', 'gopher', 'http', 'https',
'irc', 'mailto', 'news', 'nntp', 'telnet', 'webcal',
'xmpp', 'callto',
);
/**
* List of attributes that can contain protocols
*
* @var array
* @access public
*/
var $protocolAttributes = array(
'action', 'background', 'codebase', 'dynsrc', 'href', 'lowsrc', 'src',
);
/**
* List of dangerous CSS keywords
*
* Whole style="" attribute will be removed, if parser will find one of
* these keywords
*
* @var array
* @access public
*/
var $cssKeywords = array(
'absolute', 'behavior', 'behaviour', 'content', 'expression',
'fixed', 'include-source', 'moz-binding',
);
/**
* List of tags that can have no "closing tag"
*
* @var array
* @access public
* @deprecated XHTML does not allow such tags
*/
var $noClose = array();
/**
* List of block-level tags that terminates paragraph
*
* Paragraph will be closed when this tags opened
*
* @var array
* @access public
*/
var $closeParagraph = array(
'address', 'blockquote', 'center', 'dd', 'dir', 'div',
'dl', 'dt', 'h1', 'h2', 'h3', 'h4',
'h5', 'h6', 'hr', 'isindex', 'listing', 'marquee',
'menu', 'multicol', 'ol', 'p', 'plaintext', 'pre',
'table', 'ul', 'xmp',
);
/**
* List of table tags, all table tags outside a table will be removed
*
* @var array
* @access public
*/
var $tableTags = array(
'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
'thead', 'tr',
);
/**
* List of list tags
*
* @var array
* @access public
*/
var $listTags = array('dir', 'menu', 'ol', 'ul', 'dl', );
/**
* List of dangerous attributes
*
* @var array
* @access public
*/
var $attributes = array('dynsrc', 'id', 'name', );
/**
* List of allowed "namespaced" attributes
*
* @var array
* @access public
*/
var $attributesNS = array('xml:lang', );
/**
* Constructs class
*
* @access public
*/
function SafeHTML()
{
//making regular expressions based on Proto & CSS arrays
foreach ($this->blackProtocols as $proto) {
$preg = "/[\s\x01-\x1F]*";
for ($i=0; $i<strlen($proto); $i++) {
$preg .= $proto{$i} . "[\s\x01-\x1F]*";
}
$preg .= ":/i";
$this->_protoRegexps[] = $preg;
}
foreach ($this->cssKeywords as $css) {
$this->_cssRegexps[] = '/' . $css . '/i';
}
return true;
}
/**
* Handles the writing of attributes - called from $this->_openHandler()
*
* @param array $attrs array of attributes $name => $value
* @return boolean
* @access private
*/
function _writeAttrs ($attrs)
{
if (is_array($attrs)) {
foreach ($attrs as $name => $value) {
$name = strtolower($name);
if (strpos($name, 'on') === 0) {
continue;
}
if (strpos($name, 'data') === 0) {
continue;
}
if (in_array($name, $this->attributes)) {
continue;
}
if (!preg_match("/^[a-z0-9]+$/i", $name)) {
if (!in_array($name, $this->attributesNS))
{
continue;
}
}
if (($value === TRUE) || (is_null($value))) {
$value = $name;
}
if ($name == 'style') {
// removes insignificant backslahes
$value = str_replace("\\", '', $value);
// removes CSS comments
while (1)
{
$_value = preg_replace("!/\*.*?\*/!s", '', $value);
if ($_value == $value) break;
$value = $_value;
}
// replace all & to &amp;
$value = str_replace('&amp;', '&', $value);
$value = str_replace('&', '&amp;', $value);
foreach ($this->_cssRegexps as $css) {
if (preg_match($css, $value)) {
continue 2;
}
}
foreach ($this->_protoRegexps as $proto) {
if (preg_match($proto, $value)) {
continue 2;
}
}
}
$tempval = preg_replace('/&#(\d+);?/me', "chr('\\1')", $value); //"'
$tempval = preg_replace('/&#x([0-9a-f]+);?/mei', "chr(hexdec('\\1'))", $tempval);
if ((in_array($name, $this->protocolAttributes)) &&
(strpos($tempval, ':') !== false))
{
if ($this->protocolFiltering == 'black') {
foreach ($this->_protoRegexps as $proto) {
if (preg_match($proto, $tempval)) continue 2;
}
} else {
$_tempval = explode(':', $tempval);
$proto = $_tempval[0];
if (!in_array($proto, $this->whiteProtocols)) {
continue;
}
}
}
$value = str_replace("\"", "&quot;", $value);
$this->_xhtml .= ' ' . $name . '="' . $value . '"';
}
}
return true;
}
/**
* Opening tag handler - called from HTMLSax
*
* @param object $parser HTML Parser
* @param string $name tag name
* @param array $attrs tag attributes
* @return boolean
* @access private
*/
function _openHandler(&$parser, $name, $attrs)
{
$name = strtolower($name);
if (in_array($name, $this->deleteTagsContent)) {
array_push($this->_dcStack, $name);
$this->_dcCounter[$name] = isset($this->_dcCounter[$name]) ? $this->_dcCounter[$name]+1 : 1;
}
if (count($this->_dcStack) != 0) {
return true;
}
if (in_array($name, $this->deleteTags)) {
return true;
}
if (!preg_match("/^[a-z0-9]+$/i", $name)) {
if (preg_match("!(?:\@|://)!i", $name)) {
$this->_xhtml .= '&lt;' . $name . '&gt;';
}
return true;
}
if (in_array($name, $this->singleTags)) {
$this->_xhtml .= '<' . $name;
$this->_writeAttrs($attrs);
$this->_xhtml .= ' />';
return true;
}
// TABLES: cannot open table elements when we are not inside table
if ((isset($this->_counter['table'])) && ($this->_counter['table'] <= 0)
&& (in_array($name, $this->tableTags)))
{
return true;
}
// PARAGRAPHS: close paragraph when closeParagraph tags opening
if ((in_array($name, $this->closeParagraph)) && (in_array('p', $this->_stack))) {
$this->_closeHandler($parser, 'p');
}
// LISTS: we should close <li> if <li> of the same level opening
if ($name == 'li' && count($this->_liStack) &&
$this->_listScope == $this->_liStack[count($this->_liStack)-1])
{
$this->_closeHandler($parser, 'li');
}
// LISTS: we want to know on what nesting level of lists we are
if (in_array($name, $this->listTags)) {
$this->_listScope++;
}
if ($name == 'li') {
array_push($this->_liStack, $this->_listScope);
}
$this->_xhtml .= '<' . $name;
$this->_writeAttrs($attrs);
$this->_xhtml .= '>';
array_push($this->_stack,$name);
$this->_counter[$name] = isset($this->_counter[$name]) ? $this->_counter[$name]+1 : 1;
return true;
}
/**
* Closing tag handler - called from HTMLSax
*
* @param object $parsers HTML parser
* @param string $name tag name
* @return boolean
* @access private
*/
function _closeHandler(&$parser, $name)
{
$name = strtolower($name);
if (isset($this->_dcCounter[$name]) && ($this->_dcCounter[$name] > 0) &&
(in_array($name, $this->deleteTagsContent)))
{
while ($name != ($tag = array_pop($this->_dcStack))) {
$this->_dcCounter[$tag]--;
}
$this->_dcCounter[$name]--;
}
if (count($this->_dcStack) != 0) {
return true;
}
if ((isset($this->_counter[$name])) && ($this->_counter[$name] > 0)) {
while ($name != ($tag = array_pop($this->_stack))) {
$this->_closeTag($tag);
}
$this->_closeTag($name);
}
return true;
}
/**
* Closes tag
*
* @param string $tag tag name
* @return boolean
* @access private
*/
function _closeTag($tag)
{
if (!in_array($tag, $this->noClose)) {
$this->_xhtml .= '</' . $tag . '>';
}
$this->_counter[$tag]--;
if (in_array($tag, $this->listTags)) {
$this->_listScope--;
}
if ($tag == 'li') {
array_pop($this->_liStack);
}
return true;
}
/**
* Character data handler - called from HTMLSax
*
* @param object $parser HTML parser
* @param string $data textual data
* @return boolean
* @access private
*/
function _dataHandler(&$parser, $data)
{
if (count($this->_dcStack) == 0) {
$this->_xhtml .= $data;
}
return true;
}
/**
* Escape handler - called from HTMLSax
*
* @param object $parser HTML parser
* @param string $data comments or other type of data
* @return boolean
* @access private
*/
function _escapeHandler(&$parser, $data)
{
return true;
}
/**
* Returns the XHTML document
*
* @return string Processed (X)HTML document
* @access public
*/
function getXHTML ()
{
while ($tag = array_pop($this->_stack)) {
$this->_closeTag($tag);
}
return $this->_xhtml;
}
/**
* Clears current document data
*
* @return boolean
* @access public
*/
function clear()
{
$this->_xhtml = '';
return true;
}
/**
* Main parsing fuction
*
* @param string $doc HTML document for processing
* @return string Processed (X)HTML document
* @access public
*/
function parse($doc)
{
// Save all '<' symbols
$doc = preg_replace("/<(?=[^a-zA-Z\/\!\?\%])/", '&lt;', $doc);
// Web documents shouldn't contains \x00 symbol
$doc = str_replace("\x00", '', $doc);
// Opera6 bug workaround
$doc = str_replace("\xC0\xBC", '&lt;', $doc);
// UTF-7 encoding ASCII decode
$doc = $this->repackUTF7($doc);
// Instantiate the parser
$parser= new XML_HTMLSax3();
// Set up the parser
$parser->set_object($this);
$parser->set_element_handler('_openHandler','_closeHandler');
$parser->set_data_handler('_dataHandler');
$parser->set_escape_handler('_escapeHandler');
$parser->parse($doc);
return $this->getXHTML();
}
/**
* UTF-7 decoding fuction
*
* @param string $str HTML document for recode ASCII part of UTF-7 back to ASCII
* @return string Decoded document
* @access private
*/
function repackUTF7($str)
{
return preg_replace_callback('!\+([0-9a-zA-Z/]+)\-!', array($this, 'repackUTF7Callback'), $str);
}
/**
* Additional UTF-7 decoding fuction
*
* @param string $str String for recode ASCII part of UTF-7 back to ASCII
* @return string Recoded string
* @access private
*/
function repackUTF7Callback($str)
{
$str = base64_decode($str[1]);
$str = preg_replace_callback('/^((?:\x00.)*)((?:[^\x00].)+)/', array($this, 'repackUTF7Back'), $str);
return preg_replace('/\x00(.)/', '$1', $str);
}
/**
* Additional UTF-7 encoding fuction
*
* @param string $str String for recode ASCII part of UTF-7 back to ASCII
* @return string Recoded string
* @access private
*/
function repackUTF7Back($str)
{
return $str[1].'+'.rtrim(base64_encode($str[2]), '=').'-';
}
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* c-hanging-comment-ender-p: nil
* End:
*/
?>
+1 -1
View File
@@ -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!='')
{
+1 -1
View File
@@ -571,7 +571,7 @@ class student extends benutzer
{
$qry = "SELECT tbl_student.* FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid)
WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER);
if($studiengang_kz != '')
{
$qry .= " AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
+1
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['anwesenheitsliste/studiensemesterIstUngueltig']='Studiensemester ist ungueltig';
$this->phrasen['anwesenheitsliste/anwesenheitslisten']='Anwesenheitslisten';
$this->phrasen['anwesenheitsliste/covidstatuslisten']='Nachweislisten';
$this->phrasen['anwesenheitsliste/notenlisten']='Notenlisten';
$this->phrasen['anwesenheitsliste/notenliste']='Notenliste';
$this->phrasen['anwesenheitsliste/anwesenheitslistenMitBildern']='Fotolisten';
+2 -1
View File
@@ -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';
+1
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['anwesenheitsliste/studiensemesterIstUngueltig']='No valid semester';
$this->phrasen['anwesenheitsliste/anwesenheitslisten']='Attendance lists';
$this->phrasen['anwesenheitsliste/covidstatuslisten']='verification lists';
$this->phrasen['anwesenheitsliste/notenlisten']='Grade lists';
$this->phrasen['anwesenheitsliste/notenliste']='Grade list';
$this->phrasen['anwesenheitsliste/anwesenheitslistenMitBildern']='Picture lists';
+1
View File
@@ -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';
+15 -3
View File
@@ -28,7 +28,6 @@
.drag-and-drop-fields-span {
border: 1px solid black;
border-radius: 7px;
/*margin-left: 3px;*/
margin-right: 6px;
margin-bottom: 10px;
padding: 5px 10px;
@@ -130,7 +129,20 @@
color: green;
}
#dragAndDropFieldsArea
{
#dragAndDropFieldsArea {
display: inline-table !important;
}
.margin-left-25 {
margin-left: 25%;
}
.up-down-border {
border-top-width: 1px;
border-top-color: #ddd;
border-top-style: solid;
border-bottom-width: 1px;
border-bottom-color: #ddd;
border-bottom-style: solid;
}
+103 -81
View File
@@ -5,7 +5,7 @@
* @author
* @copyright Copyright (c) 2016 fhcomplete.org
* @license GPLv3
* @link https://fhcomplete.org
* @link https://fhcomplete.org
* @since Version 1.0.0
*/
@@ -54,7 +54,7 @@ var FHC_AjaxClient = {
* ajaxCallParameters is an object
*/
ajaxCallGet: function(remoteController, controllerParameters, ajaxCallParameters) {
FHC_AjaxClient._ajaxCall(remoteController, controllerParameters, HTTP_GET_METHOD, ajaxCallParameters);
FHC_AjaxClient._ajaxCall(remoteController, controllerParameters, HTTP_GET_METHOD, ajaxCallParameters);
},
/**
@@ -63,7 +63,7 @@ var FHC_AjaxClient = {
* ajaxCallParameters is an object
*/
ajaxCallPost: function(remoteController, controllerParameters, ajaxCallParameters) {
FHC_AjaxClient._ajaxCall(remoteController, controllerParameters, HTTP_POST_METHOD, ajaxCallParameters);
FHC_AjaxClient._ajaxCall(remoteController, controllerParameters, HTTP_POST_METHOD, ajaxCallParameters);
},
/**
@@ -72,13 +72,13 @@ var FHC_AjaxClient = {
isSuccess: function(response) {
var isSuccess = false;
if (jQuery.type(response) == "object" && response.hasOwnProperty(CODE) && response.hasOwnProperty(RESPONSE))
{
if (response.error == SUCCESS)
{
isSuccess = true;
}
}
if (jQuery.type(response) == "object" && response.hasOwnProperty(CODE) && response.hasOwnProperty(RESPONSE))
{
if (response.error == SUCCESS)
{
isSuccess = true;
}
}
return isSuccess;
},
@@ -96,8 +96,8 @@ var FHC_AjaxClient = {
hasData: function(response) {
var hasData = false;
if (FHC_AjaxClient.isSuccess(response))
{
if (FHC_AjaxClient.isSuccess(response))
{
if ((jQuery.type(response.retval) == "object" && !jQuery.isEmptyObject(response.retval))
|| (jQuery.isArray(response.retval) && response.retval.length > 0)
|| (jQuery.type(response.retval) == "string" && response.retval.trim() != "")
@@ -105,7 +105,7 @@ var FHC_AjaxClient = {
{
hasData = true;
}
}
}
return hasData;
},
@@ -116,10 +116,10 @@ var FHC_AjaxClient = {
getData: function(response) {
var data = null;
if (FHC_AjaxClient.hasData(response))
{
if (FHC_AjaxClient.hasData(response))
{
data = response.retval;
}
}
return data;
},
@@ -130,10 +130,10 @@ var FHC_AjaxClient = {
getError: function(response) {
var error = "Generic error";
if (jQuery.type(response) == "object" && !jQuery.isEmptyObject(response) && response.hasOwnProperty(RESPONSE))
{
if (jQuery.type(response) == "object" && !jQuery.isEmptyObject(response) && response.hasOwnProperty(RESPONSE))
{
error = response.retval;
}
}
return error;
},
@@ -145,9 +145,9 @@ var FHC_AjaxClient = {
var code = 1; // Generic error
if (jQuery.type(response) == "object" && response.hasOwnProperty(CODE))
{
code = response.error;
}
{
code = response.error;
}
return code;
},
@@ -178,20 +178,20 @@ var FHC_AjaxClient = {
* Retrives parameters from URL query string (HTTP GET parameters)
*/
getUrlParameter: function(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split("&"),
sParameterName,
i;
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split("&"),
sParameterName,
i;
for (var i = 0; i < sURLVariables.length; i++)
for (var i = 0; i < sURLVariables.length; i++)
{
sParameterName = sURLVariables[i].split("=");
sParameterName = sURLVariables[i].split("=");
if (sParameterName[0] === sParam)
if (sParameterName[0] === sParam)
{
return sParameterName[1];
}
}
return sParameterName[1];
}
}
},
//------------------------------------------------------------------------------------------------------------------
@@ -259,7 +259,7 @@ var FHC_AjaxClient = {
// Call the error callback saved in _errorCallback property
// NOTE: this is not referred to FHC_AjaxClient but to the ajax object
this._errorCallback(jqXHR, textStatus, errorThrown);
this._errorCallback(jqXHR, textStatus, errorThrown);
},
/**
@@ -279,6 +279,14 @@ var FHC_AjaxClient = {
}
FHC_AjaxClient._hideVeil(); // finally hide the veil
// If was required a page reload then do it!
if (this._reloadPage === true)
{
// NOTE: to avoid any conflict with other ajaxs calls
// Otherwise some browsers (eg. firefox) can prompt an error
$(document).ajaxStop(function() { location.reload(); });
}
},
/**
@@ -336,14 +344,14 @@ var FHC_AjaxClient = {
* Instantiate a new object and copy in it the properties from the parameter
*/
_cpObjProps: function(obj) {
var returnObj = {};
var returnObj = {};
for (var prop in obj)
{
returnObj[prop] = obj[prop];
}
for (var prop in obj)
{
returnObj[prop] = obj[prop];
}
return returnObj;
return returnObj;
},
/**
@@ -384,9 +392,9 @@ var FHC_AjaxClient = {
*
* @param controllerParameters
* Example: {
* name1: value,
* name2: value,
* files: $(selector)[0].files --> this is the FileList
* name1: value,
* name2: value,
* files: $(selector)[0].files --> this is the FileList
* }
* @returns {boolean}
* @private
@@ -402,10 +410,6 @@ var FHC_AjaxClient = {
return true;
}
}
/*
return Object.values(controllerParameters)
.some((value) => value instanceof FileList === true);
*/
},
/**
@@ -454,7 +458,7 @@ var FHC_AjaxClient = {
*/
_checkAndGenerateAjaxParams: function(remoteController, controllerParameters, type, ajaxCallParameters) {
var valid = true; // by default they are ok (we want to trust you, please do not betray it)
var valid = true; // by default they are ok (we want to trust you, please do not betray it)
// Returned parameters
var ajaxParameters = {
@@ -464,28 +468,28 @@ var FHC_AjaxClient = {
};
// remoteController must be a NON-empty string
if (typeof remoteController == "string" && remoteController.trim() != "")
{
// Is it possible to generate the URL
if ((url = FHC_AjaxClient._generateRouterURI(remoteController)) != null)
{
ajaxParameters.url = url;
}
else // but it could fail
{
console.error("FHC_JS_DATA_STORAGE_OBJECT is not present");
valid = false;
}
}
if (typeof remoteController == "string" && remoteController.trim() != "")
{
// Is it possible to generate the URL
if ((url = FHC_AjaxClient._generateRouterURI(remoteController)) != null)
{
ajaxParameters.url = url;
}
else // but it could fail
{
console.error("FHC_JS_DATA_STORAGE_OBJECT is not present");
valid = false;
}
}
else // otherwise is NOT possible to generate the URL
{
console.error("Invalid remoteController parameter");
valid = false;
valid = false;
}
// controllerParameters must be an object
if (typeof controllerParameters == "object")
{
// controllerParameters must be an object
if (typeof controllerParameters == "object")
{
// If controllerParameters contains uploaded file(s) as FileList
if (controllerParameters !== null && FHC_AjaxClient._hasFileList(controllerParameters))
{
@@ -511,19 +515,18 @@ var FHC_AjaxClient = {
// so the variable data is saved also in _data and it will be used later
ajaxParameters.data = data;
ajaxParameters._data = data;
}
}
else
{
console.error("Invalid controller parameters, must be an object");
valid = false;
}
// Checks if ajaxCallParameters is an object
if (typeof ajaxCallParameters == "object")
{
if (typeof ajaxCallParameters == "object")
{
// If present, errorCallback must be a function
if (ajaxCallParameters.hasOwnProperty("errorCallback"))
if (ajaxCallParameters.hasOwnProperty("errorCallback"))
{
if (typeof ajaxCallParameters.errorCallback == "function")
{
@@ -535,7 +538,7 @@ var FHC_AjaxClient = {
console.error("Invalid errorCallback, it must be a function");
valid = false;
}
}
}
else // if is not given then call the default errorCallback
{
ajaxParameters._errorCallback = FHC_AjaxClient._defaultErrorCallback; // save as property the callback error
@@ -543,8 +546,8 @@ var FHC_AjaxClient = {
}
// If present, successCallback must be a function
if (ajaxCallParameters.hasOwnProperty("successCallback"))
{
if (ajaxCallParameters.hasOwnProperty("successCallback"))
{
if (typeof ajaxCallParameters.successCallback == "function")
{
ajaxParameters._successCallback = ajaxCallParameters.successCallback; // save as property the callback success
@@ -555,11 +558,11 @@ var FHC_AjaxClient = {
console.error("Invalid successCallback, it must be a function");
valid = false;
}
}
}
// If present, completeCallback must be a function
if (ajaxCallParameters.hasOwnProperty("completeCallback"))
{
if (ajaxCallParameters.hasOwnProperty("completeCallback"))
{
if (typeof ajaxCallParameters.completeCallback == "function")
{
ajaxParameters._completeCallback = ajaxCallParameters.completeCallback; // save as property the callback complete
@@ -569,7 +572,7 @@ var FHC_AjaxClient = {
console.error("Invalid completeCallback, it must be a function");
valid = false;
}
}
}
// If present, veilTimeout must be a number and cannot be less then 0 or greater then 60000
if (ajaxCallParameters.hasOwnProperty("veilTimeout") && typeof ajaxCallParameters.veilTimeout == "number")
@@ -595,6 +598,24 @@ var FHC_AjaxClient = {
ajaxParameters.beforeSend = FHC_AjaxClient._showVeil;
}
// If present reloadPage has to be a boolean
if (ajaxCallParameters.hasOwnProperty("reloadPage"))
{
if (typeof ajaxCallParameters.reloadPage != "boolean")
{
console.error("Invalid reloadPage parameter, must be a boolean");
valid = false;
}
else
{
ajaxParameters._reloadPage = ajaxCallParameters.reloadPage;
}
}
else // not present
{
ajaxParameters._reloadPage = false;
}
// Function to call after the ajax call is ended, is it here because it must be always called
ajaxParameters.complete = FHC_AjaxClient._onComplete;
}
@@ -604,7 +625,7 @@ var FHC_AjaxClient = {
ajaxParameters = null;
}
return ajaxParameters;
return ajaxParameters;
},
/**
@@ -622,9 +643,10 @@ var FHC_AjaxClient = {
var ajaxParameters = FHC_AjaxClient._checkAndGenerateAjaxParams(remoteController, controllerParameters, type, ajaxCallParameters);
// Checks the given parameters if they are present and are valid
if (ajaxParameters != null)
{
$.ajax(ajaxParameters); // ajax call
}
if (ajaxParameters != null)
{
$.ajax(ajaxParameters); // ajax call
}
}
};
+86 -31
View File
@@ -46,11 +46,12 @@ function sideMenuHook()
filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
reloadPage: true,
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
{
console.log(FHC_AjaxClient.getError(data));
console.error(FHC_AjaxClient.getError(data));
}
else
{
@@ -141,7 +142,7 @@ var FHC_FilterWidget = {
if (FHC_AjaxClient.isError(data))
{
console.log(FHC_AjaxClient.getError(data));
console.error(FHC_AjaxClient.getError(data));
}
else
{
@@ -157,7 +158,7 @@ var FHC_FilterWidget = {
if (FHC_AjaxClient.isError(data))
{
console.log(FHC_AjaxClient.getError(data));
console.error(FHC_AjaxClient.getError(data));
}
else
{
@@ -174,6 +175,7 @@ var FHC_FilterWidget = {
$("#addField").html("<option value=''>" + FHC_PhrasesLib.t("ui", "bitteEintragWaehlen") + "</option>");
$("#appliedFilters").html("");
$("#addFilter").html("<option value=''>" + FHC_PhrasesLib.t("ui", "bitteEintragWaehlen") + "</option>");
FHC_FilterWidget._toggleApplySaveButtons(false);
// If the choosen dataset representation is tablesorter
if (FHC_FilterWidget._datasetRepresentation == DATASET_REP_TABLESORTER)
@@ -218,7 +220,7 @@ var FHC_FilterWidget = {
}
else
{
console.log(FHC_AjaxClient.getError(data));
console.error(FHC_AjaxClient.getError(data));
}
}
}
@@ -290,6 +292,8 @@ var FHC_FilterWidget = {
$(".remove-selected-field").off("click");
$("#addField").off("change");
$(".applied-filter-operation").off("change");
$(".applied-filter-condition").off("keyup");
$(".applied-filter-option").off("change");
$(".remove-applied-filter").off("click");
$("#addFilter").off("change");
$("#applyFilter").off("click");
@@ -314,6 +318,8 @@ var FHC_FilterWidget = {
$(".remove-selected-field").click(FHC_FilterWidget._revomeSelectedFieldsEvent); // Click event on the "X" link
$("#addField").change(FHC_FilterWidget._addFieldEvent); // Change event on the fields drop-down to add new fields
$(".applied-filter-operation").change(FHC_FilterWidget._appliedFiltersOperationsEvent); // Change event on the operation drop-down
$(".applied-filter-condition").keyup(FHC_FilterWidget._appliedFiltersConditionsEvent); // Change event on the conditions fields
$(".applied-filter-option").change(FHC_FilterWidget._appliedFiltersOptionsEvent); // Change event on the operation drop-down
$(".remove-applied-filter").click(FHC_FilterWidget._removeAppliedFiltersEvent); // Click event to the "X" button to remove an applied filter
$("#addFilter").change(FHC_FilterWidget._addFilterEvent); // Click event on the applied filters drop-down to add a new filter to the dataset
$("#applyFilter").click(FHC_FilterWidget._applyFilterEvent); // Click event on the applied filters drop-down to apply filters to the dataset
@@ -456,6 +462,22 @@ var FHC_FilterWidget = {
$(this).parent().parent().find(".applied-filter-condition").prop("disabled", false);
$(this).parent().parent().find(".applied-filter-option").prop("disabled", false);
}
FHC_FilterWidget._toggleApplySaveButtons(true);
},
/**
* Event function used by the applied filter conditions
*/
_appliedFiltersConditionsEvent: function(event) {
FHC_FilterWidget._toggleApplySaveButtons(true);
},
/**
* Event function used by the applied filter options
*/
_appliedFiltersOptionsEvent: function(event) {
FHC_FilterWidget._toggleApplySaveButtons(true);
},
/**
@@ -481,43 +503,53 @@ var FHC_FilterWidget = {
* Event function used by the apply filter button
* The given parameter is used to decide if the page is going to be reloaded
*/
_applyFilterEvent: function(reload = true) {
_applyFilterEvent: function() {
var isValid = true;
var appliedFilters = [];
var appliedFiltersOperations = [];
var appliedFiltersConditions = [];
var appliedFiltersOptions = [];
// Get all the data from the filter form and fill the arrays
$("#appliedFilters > div").each(function(i, e) {
appliedFilters.push($(this).find(".hidden-field-name").val());
appliedFiltersOperations.push($(this).find(".applied-filter-operation").val());
appliedFiltersConditions.push($(this).find(".applied-filter-condition:enabled").val());
// Checks if the conditions are filled by the user
if ($(this).find(".applied-filter-condition:enabled").length > 0
&& $(this).find(".applied-filter-condition:enabled").val().trim() != '')
{
appliedFiltersConditions.push($(this).find(".applied-filter-condition:enabled").val());
}
else // otherwise mark the empty conditions in red
{
$(this).find(".applied-filter-condition:enabled").css("border", "1px solid red");
isValid = false;
}
appliedFiltersOptions.push($(this).find(".applied-filter-option:enabled").val());
});
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/applyFilters",
{
appliedFilters: appliedFilters,
appliedFiltersOperations: appliedFiltersOperations,
appliedFiltersConditions: appliedFiltersConditions,
appliedFiltersOptions: appliedFiltersOptions,
filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
if (reload === true)
{
if (isValid)
{
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/applyFilters",
{
appliedFilters: appliedFilters,
appliedFiltersOperations: appliedFiltersOperations,
appliedFiltersConditions: appliedFiltersConditions,
appliedFiltersOptions: appliedFiltersOptions,
filterUniqueId: FHC_FilterWidget.getFilterUniqueIdPrefix()
},
{
successCallback: function(data, textStatus, jqXHR) {
FHC_FilterWidget._failOrReload(data, textStatus, jqXHR);
}
else
{
console.log(FHC_AjaxClient.getError(data));
}
}
}
);
);
}
},
/**
@@ -586,9 +618,6 @@ var FHC_FilterWidget = {
if ($("#customFilterDescription").val() != "")
{
// Apply the filter before saving it, without reloading the page
FHC_FilterWidget._applyFilterEvent(false);
FHC_AjaxClient.ajaxCallPost(
"widgets/Filters/saveCustomFilter",
{
@@ -597,7 +626,12 @@ var FHC_FilterWidget = {
},
{
successCallback: function(data, textStatus, jqXHR) {
FHC_FilterWidget._failOrReload(data);
// If an error occurred then log it
if (FHC_AjaxClient.isError(data)) console.error(data);
// In any case tries to apply the filter
FHC_FilterWidget._applyFilterEvent();
}
}
);
@@ -754,6 +788,7 @@ var FHC_FilterWidget = {
var html = "";
// If integer type
if (metaData.type.toLowerCase().indexOf("int") >= 0)
{
if (appliedFilter.condition == null) appliedFilter.condition = 0;
@@ -770,7 +805,11 @@ var FHC_FilterWidget = {
html += " <input type='numbe' value='" + appliedFilter.condition + "' class='form-control applied-filter-condition'>";
html += "</span>";
}
if (metaData.type.toLowerCase().indexOf("varchar") >= 0 || metaData.type.toLowerCase() == "text")
// If text, varchar or char type
if (metaData.type.toLowerCase().indexOf("varchar") >= 0
|| metaData.type.toLowerCase().indexOf("text") >= 0
|| metaData.type.toLowerCase().indexOf("bpchar") >= 0)
{
if (appliedFilter.condition == null) appliedFilter.condition = "";
@@ -784,6 +823,8 @@ var FHC_FilterWidget = {
html += " <input type='text' value='" + appliedFilter.condition + "' class='form-control applied-filter-condition'>";
html += "</span>";
}
// If boolean type
if (metaData.type.toLowerCase().indexOf("bool") >= 0)
{
html = "<span>";
@@ -796,6 +837,8 @@ var FHC_FilterWidget = {
html += " <input type='hidden' value='" + appliedFilter.condition + "' class='form-control applied-filter-condition'>";
html += "</span>";
}
// If timestamp or date type
if (metaData.type.toLowerCase().indexOf("timestamp") >= 0 || metaData.type.toLowerCase().indexOf("date") >= 0)
{
var classOperation = "form-control applied-filter-condition";
@@ -843,6 +886,9 @@ var FHC_FilterWidget = {
return html;
},
/**
* It renders the dataset with a tablesorter, puvotUI or a tabulator
*/
_renderDataset: function(data) {
// If the choosen dataset representation is tablesorter then...
@@ -1265,6 +1311,14 @@ var FHC_FilterWidget = {
{
FHC_FilterWidget._hideOptions = data.hideOptions;
}
},
/**
* Enable/disable the apply and save buttons
*/
_toggleApplySaveButtons(addedNewFilterOption) {
$("#applyFilter").prop("disabled", addedNewFilterOption != true);
$("#saveCustomFilterButton").prop("disabled", addedNewFilterOption === true);
}
};
@@ -1276,3 +1330,4 @@ $(document).ready(function() {
FHC_FilterWidget.display();
});
+17 -17
View File
@@ -30,8 +30,8 @@ $(document).ready(function ()
newRowHtml += "</td>";
newRowHtml += "<td><input type='text' name='studierendenbeitrag' id='input_studierendenbeitrag_"+nextOehbeitragId+"' class='form-control' placeholder='0,00'></td>"+
"<td><input type='text' name='versicherung' id='input_versicherung_"+nextOehbeitragId+"' class='form-control' placeholder='0,00'></td>"+
"<td><button class='btn btn-default' id='addOeh_"+nextOehbeitragId+"'>Speichern</button>&nbsp;" +
" <button class='btn btn-default' id='delete_"+nextOehbeitragId+"'>Entfernen</button></td>"+
"<td><button class='btn btn-default' id='addOeh_"+nextOehbeitragId+"'>"+FHC_PhrasesLib.t('ui', 'speichern')+"</button>&nbsp;" +
" <button class='btn btn-default' id='delete_"+nextOehbeitragId+"'>"+FHC_PhrasesLib.t('ui', 'entfernen')+"</button></td>"+
"</tr>";
$("#oehbeitraegeTbl tbody").prepend(newRowHtml);
@@ -67,7 +67,7 @@ $(document).ready(function ()
Oehbeitrag.newBeitragId++;
}
else
FHC_DialogLib.alertInfo("ÖH-Beiträge für alle Studiensemester festgelegt");
FHC_DialogLib.alertInfo(FHC_PhrasesLib.t('oehbeitrag', 'oehbeitraegeFestgelegt'));
}
Oehbeitrag.getValidStudiensemester(callback);
@@ -106,7 +106,7 @@ var Oehbeitrag = {
Oehbeitrag._formatDateToGerman(oehbeitrag.von_datum) + '/' + oehbeitrag.von_studiensemester_kurzbz +
'&nbsp;<i class="fa fa-edit editVonStudiensemester" id="edit_von_studiensemester_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td id="cell_bis_studiensemester_kurzbz_' + oehbeitrag.oehbeitrag_id + '">' + (oehbeitrag.bis_studiensemester_kurzbz == null ? 'unbeschr&aumlnkt' :
'<td id="cell_bis_studiensemester_kurzbz_' + oehbeitrag.oehbeitrag_id + '">' + (oehbeitrag.bis_studiensemester_kurzbz == null ? FHC_PhrasesLib.t('global', 'unbeschraenkt') :
Oehbeitrag._formatDateToGerman(oehbeitrag.bis_datum) + '/' + oehbeitrag.bis_studiensemester_kurzbz) +
'&nbsp;<i class="fa fa-edit editBisStudiensemester" id="edit_bis_studiensemester_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
@@ -117,8 +117,8 @@ var Oehbeitrag = {
'&nbsp;<i class="fa fa-edit editVersicherung" id="edit_versicherung_' + oehbeitrag.oehbeitrag_id + '"></i>'+
'</td>' +
'<td>' +
'<button class="btn btn-default editBtn" id="edit_'+oehbeitrag.oehbeitrag_id+'">Bearbeiten</button>' +
'&nbsp;<button class="btn btn-default deleteBtn" id="delete_'+oehbeitrag.oehbeitrag_id+'">L&ouml;schen</button>' +
'<button class="btn btn-default editBtn" id="edit_'+oehbeitrag.oehbeitrag_id+'">'+FHC_PhrasesLib.t('ui', 'bearbeiten')+'</button>' +
'&nbsp;<button class="btn btn-default deleteBtn" id="delete_'+oehbeitrag.oehbeitrag_id+'">'+FHC_PhrasesLib.t('ui', 'loeschen')+'</button>' +
'</td>' +
'</tr>';
}
@@ -133,7 +133,7 @@ var Oehbeitrag = {
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Holen der Öhbeiträge');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerHolenOehbeitraege'));
}
}
);
@@ -150,7 +150,7 @@ var Oehbeitrag = {
successCallback: callback,
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Holen der Semester');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerHolenSemester'));
}
}
);
@@ -173,12 +173,12 @@ var Oehbeitrag = {
}
else
{
FHC_DialogLib.alertError('Fehler beim Hinzufügen des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerHinzufuegenOehbeitrag'));
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Hinzufügen des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerHinzufuegenOehbeitrag'));
}
}
);
@@ -205,12 +205,12 @@ var Oehbeitrag = {
}
else
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerAktualisierenOehbeitrag'));
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerAktualisierenOehbeitrag'));
}
}
);
@@ -259,12 +259,12 @@ var Oehbeitrag = {
}
else
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerAktualisierenOehbeitrag'));
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Aktualisieren des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerAktualisierenOehbeitrag'));
}
}
);
@@ -283,12 +283,12 @@ var Oehbeitrag = {
}
else
{
FHC_DialogLib.alertError('Fehler beim Löschen des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerLoeschenOehbeitrag'));
}
},
errorCallback: function()
{
FHC_DialogLib.alertError('Fehler beim Löschen des Öhbeitrags');
FHC_DialogLib.alertError(FHC_PhrasesLib.t('oehbeitrag', 'fehlerLoeschenOehbeitrag'));
}
}
);
@@ -310,7 +310,7 @@ var Oehbeitrag = {
Oehbeitrag._makeFieldEditable(id, 'bis_studiensemester_kurzbz', 'semester');
Oehbeitrag._makeFieldEditable(id, 'studierendenbeitrag');
Oehbeitrag._makeFieldEditable(id, 'versicherung');
$(this).after("&nbsp;<button class='btn btn-default saveBtn' id='save_"+oehbeitrag_id+"'>Speichern</button>");
$(this).after("&nbsp;<button class='btn btn-default saveBtn' id='save_"+oehbeitrag_id+"'>"+FHC_PhrasesLib.t('ui', 'speichern')+"</button>");
$(this).remove();
$("#delete_" + oehbeitrag_id).remove();
@@ -378,6 +378,11 @@ var InfocenterDetails = {
if (FHC_AjaxClient.hasData(data))
{
var engdate = $.datepicker.parseDate("yy-mm-dd", FHC_AjaxClient.getData(data)[0]);
if (engdate.getDate() === 31)
engdate.setDate(engdate.getDate() - 1);
engdate.setMonth(engdate.getMonth() + 3);
var gerdate = $.datepicker.formatDate("dd.mm.yy", engdate);
$("#postponedate").val(gerdate);
}
@@ -49,6 +49,11 @@ var InfocenterPersonDataset = {
'<select class="form-control auswahlAbsageStg" style="width:auto; float:left;">' +
'<option value="null" selected="selected"> Studiengang </option>' +
'</select>' +
'<select class="form-control auswahlAbsageAbgeschickt" style="width:auto; float:left;">' +
'<option value="null" selected="selected"> Bewerbung abgeschickt? </option>' +
'<option value="true"> Ja </option>' +
'<option value="false"> Nein </option>' +
'</select>' +
'<button class="btn btn-default auswahlAbsageBtn" style="float:left"> Absage </button>';
InfocenterPersonDataset.getAbsageData();
@@ -57,7 +62,7 @@ var InfocenterPersonDataset = {
'<i class="fa fa-chevron-left"></i>' +
'</button>&nbsp;' +
infocenter_studiensemester +
'&nbsp;<button class="btn btn-default btn-sm incStudiensemester">' +
'&nbsp;<button class="btn btn-default btn-xs incStudiensemester">' +
'<i class="fa fa-chevron-right"></i>' +
'</button>';
@@ -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) {
+19 -16
View File
@@ -11,21 +11,21 @@ var IssuesDataset = {
{
let auswahlStatus =
'<div class="input-group">' +
'<select class="form-control d-inline auswahlStatus">' +
'<option value="resolved"> Behoben </option>' +
'<option value="inProgress"> in Bearbeitung </option>' +
'<option value="new"> Neu </option>' +
'</select>' +
'<span class="input-group-btn">' +
'<button class="btn btn-default setStatus">Status für Ausgew&auml;hlte setzen</button>' +
'</span>' +
'<select class="form-control d-inline auswahlStatus">' +
'<option value="resolved">'+FHC_PhrasesLib.t("fehlermonitoring", "behoben")+'</option>' +
'<option value="inProgress">'+FHC_PhrasesLib.t("fehlermonitoring", "inBearbeitung")+'</option>' +
'<option value="new">'+FHC_PhrasesLib.t("ui", "neu")+'</option>' +
'</select>' +
'<span class="input-group-btn">' +
'<button class="btn btn-default setStatus">'+FHC_PhrasesLib.t("fehlermonitoring", "statusFuerAusgewaehlteSetzen")+'</button>' +
'</span>' +
'</div>';
let selectAllHtml =
'<a href="javascript:void(0)" class="selectAll">' +
'<i class="fa fa-check"></i>&nbsp;Alle</a>&nbsp;&nbsp;' +
'<i class="fa fa-check"></i>&nbsp;'+FHC_PhrasesLib.t("ui", "alle")+'</a>&nbsp;&nbsp;' +
'<a href="javascript:void(0)" class="unselectAll">' +
'<i class="fa fa-times"></i>&nbsp;Keinen</a>&nbsp;&nbsp;&nbsp;&nbsp;';
'<i class="fa fa-times"></i>&nbsp;'+FHC_PhrasesLib.t("ui", "keinen")+'</a>&nbsp;&nbsp;&nbsp;&nbsp;';
let issuescount = 0;
@@ -42,7 +42,7 @@ var IssuesDataset = {
if (issuescount > 0)
{
var countHtml = issuescount + " Fehler";
var countHtml = issuescount + " "+FHC_PhrasesLib.t("fehlermonitoring", "meldungen");
// Count Records after Filtering
$("#filterTableDataset").bind("filterEnd", function() {
@@ -86,10 +86,10 @@ var IssuesDataset = {
let issue_ids_sel = $("#filterTableDataset input:checked[name=issue_id\\[\\]]");
if(status_kurzbz.length <= 0)
return FHC_DialogLib.alertInfo("Bitte wählen Sie den Status aus.");
return FHC_DialogLib.alertInfo(FHC_PhrasesLib.t("fehlermonitoring", "bitteStatusWaehlen"));
if(issue_ids_sel.length <= 0)
return FHC_DialogLib.alertInfo("Bitte wählen Sie die Fehler aus.");
return FHC_DialogLib.alertInfo(FHC_PhrasesLib.t("fehlermonitoring", "bitteFehlerWaehlen"));
let issue_ids = [];
@@ -107,17 +107,20 @@ var IssuesDataset = {
{
successCallback: function(data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data))
FHC_DialogLib.alertError("Fehler beim Status &Auml;ndern: " + FHC_AjaxClient.getError(data));
FHC_DialogLib.alertError(
FHC_PhrasesLib.t("fehlermonitoring", "statusAendernFehler") + ": "
+ FHC_AjaxClient.getError(data)
);
else if (FHC_AjaxClient.hasData(data))
{
FHC_FilterWidget.reloadDataset();
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data));
}
else
FHC_DialogLib.alertError("Unbekannter Fehler beim Status &Auml;ndern");
FHC_DialogLib.alertError(FHC_PhrasesLib.t("fehlermonitoring", "statusAendernUnbekannterFehler"));
},
errorCallback: function(jqXHR, textStatus, errorThrown) {
FHC_DialogLib.alertError("Fehler beim Status &Auml;ndern: " + textStatus);
FHC_DialogLib.alertError(FHC_PhrasesLib.t("fehlermonitoring", "statusAendernFehler") + ": " + textStatus);
}
}
);
+2 -2
View File
@@ -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)
?>
</RDF:Seq>
</RDF:RDF>
</RDF:RDF>
+1
View File
@@ -72,6 +72,7 @@ for ($i=0;$i<count($projekt_obj->result);$i++)
<PROJEKT:anzahl_ma>'.$projekt->anzahl_ma.'</PROJEKT:anzahl_ma>
<PROJEKT:aufwand_pt>'.$projekt->aufwand_pt.'</PROJEKT:aufwand_pt>
<PROJEKT:aufwandstyp_kurzbz>'.$projekt->aufwandstyp_kurzbz.'</PROJEKT:aufwandstyp_kurzbz>
<PROJEKT:zeitaufzeichnung>'.$projekt->zeitaufzeichnung.'</PROJEKT:zeitaufzeichnung>
</RDF:Description>'."\n";
$sequenz.='<RDF:li RDF:resource="'.$rdf_url.$projekt->projekt_kurzbz.'" />'."\n";
+12 -5
View File
@@ -61,9 +61,10 @@ if($projektphase_id != '')
$oRdf->obj[$i]->setAttribut('fortschritt',$ergebnis);
$oRdf->obj[$i]->setAttribut('personentage',$phase->personentage);
$oRdf->obj[$i]->setAttribut('farbe',$phase->farbe);
$oRdf->obj[$i]->setAttribut('typ',$phase->typ);
$oRdf->obj[$i]->setAttribut('typ',$phase->typ);
$oRdf->obj[$i]->setAttribut('ressource_id',$phase->ressource_id);
$oRdf->obj[$i]->setAttribut('zeitaufzeichnung',$phase->zeitaufzeichnung);
if($phase->projektphase_fk!='')
$oRdf->addSequence($phase->projektphase_id, $phase->projektphase_fk);
else
@@ -94,7 +95,8 @@ if($projektphase_id != '')
$oRdf->obj[$idx]->setAttribut('personentage', '');
$oRdf->obj[$idx]->setAttribut('farbe', '');
$oRdf->obj[$idx]->setAttribut('typ', '');
$oRdf->obj[$idx]->setAttribut('zeitaufzeichnung','');
$oRdf->addSequence('opt');
}
@@ -113,7 +115,8 @@ if($projektphase_id != '')
$oRdf->obj[$idx]->setAttribut('personentage', $phase->personentage);
$oRdf->obj[$idx]->setAttribut('farbe', $phase->farbe);
$oRdf->obj[$idx]->setAttribut('typ', $phase->typ);
$oRdf->obj[$idx]->setAttribut('zeitaufzeichnung',$phase->zeitaufzeichnung);
$oRdf->addSequence($phase->projektphase_id);
}
@@ -163,7 +166,8 @@ else
$oRdf->obj[$idx]->setAttribut('beginn','');
$oRdf->obj[$idx]->setAttribut('ende','');
$oRdf->obj[$idx]->setAttribut('typ','organisationseinheit');
$oRdf->obj[$idx]->setAttribut('zeitaufzeichnung','');
$oRdf->addSequence($projekt->oe_kurzbz);
$lastOE=$currentOE;
@@ -184,6 +188,8 @@ else
$oRdf->obj[$idx]->setAttribut('beginn',$datum_obj->formatDatum($projekt->beginn,'d.m.Y'));
$oRdf->obj[$idx]->setAttribut('ende',$datum_obj->formatDatum($projekt->ende,'d.m.Y'));
$oRdf->obj[$idx]->setAttribut('typ','projekt');
$oRdf->obj[$idx]->setAttribut('zeitaufzeichnung',$projekt->zeitaufzeichnung);
$oRdf->addSequence($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz, $projekt->oe_kurzbz);
@@ -223,6 +229,7 @@ else
$oRdf->obj[$idx]->setAttribut('typ',strtolower($projektphase->typ));
$oRdf->obj[$idx]->setAttribut('ressource_bezeichnung',$projektphase->ressource_bezeichnung);
$oRdf->obj[$idx]->setAttribut('ressource_id',$projektphase->ressource_id);
$oRdf->obj[$idx]->setAttribut('zeitaufzeichnung',$projektphase->zeitaufzeichnung);
if (!is_null($projektphase->projektphase_fk))
$oRdf->addSequence($projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_id, $projekt->oe_kurzbz.'/'.$projekt->projekt_kurzbz.'/'.$projektphase->projektphase_fk);
else
+14 -3
View File
@@ -214,6 +214,7 @@ function draw_content_liste($row)
<STUDENT:status_datum_iso><![CDATA['.$datum_obj->formatDatum($prestudent->datum,'Y-m-d').']]></STUDENT:status_datum_iso>
<STUDENT:status_bestaetigung_iso><![CDATA['.($prestudent->bestaetigtam!=''?$datum_obj->formatDatum($prestudent->bestaetigtam,'Y-m-d'):'-').']]></STUDENT:status_bestaetigung_iso>
<STUDENT:zugangscode><![CDATA['.$row->zugangscode.']]></STUDENT:zugangscode>
<STUDENT:bpk><![CDATA['.$row->bpk.']]></STUDENT:bpk>
<STUDENT:anmerkungen>'.($row->anmerkungen==''?'&#xA0;':'<![CDATA['.$row->anmerkungen.']]>').'</STUDENT:anmerkungen>
<STUDENT:anmerkungpre>'.($row->anmerkung==''?'&#xA0;':'<![CDATA['.$row->anmerkung.']]>').'</STUDENT:anmerkungpre>
@@ -330,6 +331,7 @@ function draw_content($row)
<STUDENT:mail_intern><![CDATA['.(isset($row->uid)?$row->uid.'@'.DOMAIN:'').']]></STUDENT:mail_intern>
<STUDENT:zugangscode><![CDATA['.$row->zugangscode.']]></STUDENT:zugangscode>
<STUDENT:link_bewerbungstool><![CDATA['.CIS_ROOT.'addons/bewerbung/cis/registration.php?code='.$row->zugangscode.'&emailAdresse='.$mail_privat.']]></STUDENT:link_bewerbungstool>
<STUDENT:bpk><![CDATA['.$row->bpk.']]></STUDENT:bpk>
<STUDENT:aktiv><![CDATA['.$aktiv.']]></STUDENT:aktiv>
<STUDENT:uid><![CDATA['.(isset($row->uid)?$row->uid:'').']]></STUDENT:uid>
@@ -441,6 +443,7 @@ function draw_empty_content()
<STUDENT:mail_intern><![CDATA[]]></STUDENT:mail_intern>
<STUDENT:zugangscode><![CDATA[]]></STUDENT:zugangscode>
<STUDENT:link_bewerbungstool><![CDATA[]]></STUDENT:link_bewerbungstool>
<STUDENT:bpk><![CDATA[]]></STUDENT:bpk>
<STUDENT:aktiv><![CDATA[]]></STUDENT:aktiv>
<STUDENT:uid><![CDATA[]]></STUDENT:uid>
@@ -608,7 +611,7 @@ if($xmlformat=='rdf')
AS email_privat,
(SELECT rt_gesamtpunkte as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte,
tbl_prestudent.dual as dual, tbl_prestudent.reihungstest_id, tbl_prestudent.anmeldungreihungstest, p.matr_nr,
tbl_prestudent.gsstudientyp_kurzbz, tbl_prestudent.aufnahmegruppe_kurzbz, tbl_prestudent.priorisierung, p.zugangscode
tbl_prestudent.gsstudientyp_kurzbz, tbl_prestudent.aufnahmegruppe_kurzbz, tbl_prestudent.priorisierung, p.zugangscode, p.bpk
FROM
public.tbl_student
JOIN public.tbl_benutzer ON (student_uid=uid)
@@ -764,8 +767,16 @@ if($xmlformat=='rdf')
}
else
{
// String aufsplitten und Sonderzeichen entfernen
$searchItems = explode(' ',TRIM(str_replace(',', '', $filter),' !.?'));
// Sonderzeichen entfernen und String aufsplitten
// Replace commas with whitespace
$filter = str_replace(',', ' ', $filter);
// Replace multiple whitespaces with just one
$filter = preg_replace('/\s/', ' ', $filter);
// Trim whitespaces and special characters from the string
$filter = trim($filter,' !.?');
// Explode string
$searchItems = explode(' ',$filter);
$kriterienliste = array("#email","#name","#pid","#preid","#tel", "#ref");
$suchkriterium = '';
+15 -2
View File
@@ -68,14 +68,27 @@ function saveProjekt($username, $passwort, $projekt)
$projektNew->budget = $projekt->budget;
$projektNew->farbe = $projekt->farbe;
$projektNew->oe_kurzbz = $projekt->oe_kurzbz;
$projektNew->aufwandstyp_kurzbz = $projekt->aufwandstyp_kurzbz;
$projektNew->aufwandstyp_kurzbz = $projekt->aufwandstyp_kurzbz;
$projektNew->anzahl_ma = $projekt->anzahl_ma;
$projektNew->aufwand_pt = $projekt->aufwand_pt;
$projektNew->aufwand_pt = $projekt->aufwand_pt;
if($projekt->zeitaufzeichnung=='true')
{
$projektNew->zeitaufzeichnung = true;
}
else
{
$projektNew->zeitaufzeichnung = false;
}
if($projekt->neu=='true')
{
$projektNew->new = true;
}
else
{
$projektNew->new = false;
}
if($projektNew->save())
return $projektNew->projekt_kurzbz;
+1
View File
@@ -30,6 +30,7 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:part name="farbe" type="xsd:string"></wsdl:part>
<wsdl:part name="oe_kurzbz" type="xsd:string"></wsdl:part>
<wsdl:part name="neu" type="xsd:string"></wsdl:part>
<wsdl:part name="zeitaufzeichnung" type="xsd:string"></wsdl:part>
<wsdl:part name="aufwandstyp_kurzbz" type="xsd:string"></wsdl:part>
</xsd:all>
</xsd:complexType>
+17 -4
View File
@@ -70,8 +70,8 @@ function saveProjektphase($username, $passwort, $phase)
$projektphase->projektphase_id=$phase->projektphase_id;
$projektphase->projekt_kurzbz=$phase->projekt_kurzbz;
$projektphase->projektphase_fk=$phase->projektphase_fk;
$projektphase->bezeichnung = $phase->bezeichnung;
$projektphase->typ = $phase->typ;
$projektphase->bezeichnung = $phase->bezeichnung;
$projektphase->typ = $phase->typ;
$projektphase->ressource_id = $phase->ressource_id;
$projektphase->beschreibung = $phase->beschreibung;
$projektphase->start = $phase->start;
@@ -82,10 +82,23 @@ function saveProjektphase($username, $passwort, $phase)
$projektphase->updatevon = $user;
$projektphase->updateamum = date('Y-m-d H:i:s');
if($phase->neu=='true')
$projektphase->new = true;
if($phase->zeitaufzeichnung=='true')
{
$projektphase->zeitaufzeichnung = true;
}
else
{
$projektphase->zeitaufzeichnung = false;
}
if($phase->neu=='true')
{
$projektphase->new = true;
}
else
{
$projektphase->new = false;
}
if($projektphase->save())
return $projektphase->projektphase_id;
+3 -2
View File
@@ -24,8 +24,8 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:part name="projektphase_id" type="xsd:string"></wsdl:part>
<wsdl:part name="projekt_kurzbz" type="xsd:string"></wsdl:part>
<wsdl:part name="projektphase_fk" type="xsd:string"></wsdl:part>
<wsdl:part name="bezeichnung" type="xsd:string"></wsdl:part>
<wsdl:part name="typ" type="xsd:string"></wsdl:part>
<wsdl:part name="bezeichnung" type="xsd:string"></wsdl:part>
<wsdl:part name="typ" type="xsd:string"></wsdl:part>
<wsdl:part name="ressource_id" type="xsd:string"></wsdl:part>
<wsdl:part name="beschreibung" type="xsd:string"></wsdl:part>
<wsdl:part name="start" type="xsd:string"></wsdl:part>
@@ -35,6 +35,7 @@ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:part name="farbe" type="xsd:string"></wsdl:part>
<wsdl:part name="user" type="xsd:string"></wsdl:part>
<wsdl:part name="neu" type="xsd:boolean"></wsdl:part>
<wsdl:part name="zeitaufzeichnung" type="xsd:string"></wsdl:part>
</xsd:all>
</xsd:complexType>
File diff suppressed because one or more lines are too long
-288
View File
@@ -1,288 +0,0 @@
<?php
/**
* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/**
* Dieses Script versendet automatisch Mails an Accounts die Deaktiviert wurden.
* und informiert die Benutzer ueber die Folgen der Deaktivierung
*/
require_once(dirname(__FILE__).'/../config/vilesci.config.inc.php');
require_once(dirname(__FILE__).'/../include/basis_db.class.php');
require_once(dirname(__FILE__).'/../include/mail.class.php');
$db = new basis_db();
$text = '';
$wochen_zum_entfernen = 1;
// Alle die vor einer Woche inaktiv gesetzt wurden darueber informieren
$qry = "SELECT uid,
(SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid = uid) as mitarbeiter
FROM public.tbl_benutzer
WHERE aktiv = false
AND updateaktivam = CURRENT_DATE - interval '".$wochen_zum_entfernen." week'";
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
if ($row->mitarbeiter != '')
{
// Mitarbeiter
$message = "Dies ist eine automatische Nachricht!\n";
$message .= "\n";
$message .= "Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz deaktiviert wurde.
Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht. \n\n";
$message .= "Sollte innerhalb von 12 Monaten nach der Deaktivierung keine neuerliche Aktivierung Ihres
Benutzerdatensatzes erfolgen, dann werden automatisch auch\n";
$message .= " - Ihr Account, \n";
$message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n";
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: ";
$message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen,
können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.";
}
else
{
// Student
$message = "Dies ist eine automatische Nachricht!\n";
$message .= "\n";
$message .= "Wir möchten Sie darauf aufmerksam machen, dass Ihr Benutzerdatensatz deaktiviert wurde.
Durch diese Deaktivierung wurden Sie auch aus allen Email-Verteilern gelöscht.\n";
$message .= "\n";
$message .= "Sollte innerhalb von 6 Monaten (für Studierende) bzw. 3 Wochen (für AbbrecherInnen) nach der
Deaktivierung keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch\n";
$message .= " - Ihr Account,\n";
$message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n";
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien\n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen,
können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
}
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! '.$row->uid, $message);
if ($mail->send())
$text .= "Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
else
$text .= "Fehler beim Senden des Mails an $to: ".$message;
}
}
// Letzte Warnung vor Accountloeschung verschicken
// Abbrecher
$qry = "SELECT uid
FROM public.tbl_benutzer
JOIN public.tbl_student ON(uid=student_uid)
WHERE aktiv = false
AND updateaktivam = CURRENT_DATE - interval '".DEL_ABBRECHER_WEEKS." week'
AND get_rolle_prestudent (prestudent_id, NULL) = 'Abbrecher'";
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
$message = "Dies ist eine automatische Nachricht!\n";
$message .= "\n";
$message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_ABBRECHER_WEEKS > 1?DEL_ABBRECHER_WEEKS." Wochen ":"einer Woche ")."deaktiviert!
Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen, dann werden automatisch auch\n";
$message .= " - Ihr Account,\n";
$message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n";
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, sich umgehend mit Ihrer
Studiengangsassistenz in Verbindung zu setzen.\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen,
können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message);
if ($mail->send())
$text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
else
$text .= "Fehler beim Senden des Mails an $to: ".$message;
}
}
// Abbrecher an Bibliothek melden wenn diese inaktiv gesetzt wurden
$qry = "SELECT uid,
vorname,
nachname,
titelpre,
titelpost
FROM public.tbl_benutzer
JOIN public.tbl_student ON (uid = student_uid)
JOIN public.tbl_person USING (person_id)
WHERE tbl_benutzer.aktiv = false
AND tbl_benutzer.updateaktivam = (CURRENT_DATE - '1 day'::interval)::date
AND get_rolle_prestudent (prestudent_id, NULL) = 'Abbrecher'";
if ($result = $db->db_query($qry))
{
if ($db->db_num_rows($result) > 0)
{
$message = "Dies ist eine automatische Nachricht!\n\n";
$message .= "Die folgenden Studierenden wurden als Abbrecher eingetragen:\n\n";
while ($row = $db->db_fetch_object($result))
{
$message .= trim($row->titelpre.' '.$row->vorname.' '.$row->nachname.' '.$row->titelpost).' ( '.$row->uid.'@'.DOMAIN." )\n";
}
$message .= "\nMit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien \n";
$to = 'wienerro@technikum-wien.at, astfaell@technikum-wien.at, olensky@technikum-wien.at';
$mail = new mail($to, 'no-reply@'.DOMAIN, 'Abbrecher Information', $message);
if ($mail->send())
$text .= "Abbrecher Infomail an $to verschickt\n";
else
$text .= "Fehler beim Senden des Mails an $to: ".$message;
}
}
// Studenten
$qry = "SELECT uid
FROM public.tbl_benutzer
JOIN public.tbl_student ON (uid=student_uid)
WHERE aktiv = false
AND updateaktivam = CURRENT_DATE - interval '".DEL_STUDENT_WEEKS." week'
AND get_rolle_prestudent (prestudent_id, NULL) <> 'Abbrecher'";
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
$message = "Dies ist eine automatische Nachricht!\n";
$message .= "\n";
$message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_STUDENT_WEEKS > 1?DEL_STUDENT_WEEKS." Wochen ":"einer Woche ").
"deaktiviert! Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen,
dann werden automatisch auch\n";
$message .= " - Ihr Account,\n";
$message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n";
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
sich umgehend mit Ihrer Studiengangsassistenz in Verbindung zu setzen.\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen,
können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message);
if ($mail->send())
$text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
else
$text .= "Fehler beim Versenden des Abbrecher Infomails an $to !\n";
}
}
// Mitarbeiter
$qry = "SELECT uid
FROM public.tbl_benutzer
JOIN public.tbl_mitarbeiter ON (uid = mitarbeiter_uid)
WHERE aktiv = false
AND updateaktivam = CURRENT_DATE - interval '".DEL_MITARBEITER_WEEKS." week' ";
if ($result = $db->db_query($qry))
{
while ($row = $db->db_fetch_object($result))
{
$message = "Dies ist eine automatische Nachricht!\n";
$message .= "\n";
$message .= "ACHTUNG: Ihr Benutzerdatensatz wurde vor ".(DEL_MITARBEITER_WEEKS > 1?DEL_MITARBEITER_WEEKS." Wochen ":"einer Woche ").
"deaktiviert! Sollte innerhalb der nächsten Tage keine neuerliche Aktivierung Ihres Benutzerdatensatzes erfolgen,
dann werden automatisch auch\n";
$message .= " - Ihr Account,\n";
$message .= " - Ihre Mailbox (inkl. aller E-Mails) und\n";
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten,
sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: ";
$message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
$message .= "Fachhochschule Technikum Wien\n";
$message .= "Höchstädtplatz 6\n";
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen,
können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to, 'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message);
if ($mail->send())
$text .= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
else
$text .= "Fehler beim Versenden des Abbrecher Infomails an $to !\n";
}
}
echo $text;
?>
+151 -17
View File
@@ -51,7 +51,7 @@ if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants
}
}
if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars LIMIT 1"))
if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1"))
{
// CREATE OR REPLACE VIEW public.vw_msg_vars and grants privileges
$qry = '
@@ -1725,6 +1725,34 @@ 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 '<strong>system.tbl_person_lock Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo '<br> UPDATE Recht fuer system.tbl_person_lock fuer vilesci user gesetzt <br>';
}
}
// SELECT Berechtigung fuer web User erteilen fuer tbl_mobilitaet
if($result = @$db->db_query("SELECT * FROM information_schema.role_table_grants WHERE table_name='tbl_mobilitaet' AND table_schema='bis' AND grantee='web' AND privilege_type='SELECT'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "GRANT SELECT ON bis.tbl_mobilitaet TO web;";
if(!$db->db_query($qry))
echo '<strong>bis.tbl_mobilitaet Berechtigungen: '.$db->db_last_error().'</strong><br>';
else
echo '<br>SELECT Recht fuer bis.tbl_mobilitaet fuer web user gesetzt <br>';
}
}
/**
* Kommentare fuer Datenbanktabellen
@@ -2072,6 +2100,28 @@ if (!$result = @$db->db_query("SELECT projekt_id FROM fue.tbl_projekt LIMIT 1"))
}
// add column zeitaufzeichnung to fue.tbl_project
if (!$result = @$db->db_query("SELECT zeitaufzeichnung FROM fue.tbl_projekt LIMIT 1"))
{
$qry = "ALTER TABLE fue.tbl_projekt ADD COLUMN zeitaufzeichnung BOOLEAN NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>fue.tbl_projekt '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte zeitaufzeichnung zu fue.tbl_projekt hinzugefügt';
}
// add column zeitaufzeichnung to fue.tbl_projectphase
if (!$result = @$db->db_query("SELECT zeitaufzeichnung FROM fue.tbl_projektphase LIMIT 1"))
{
$qry = "ALTER TABLE fue.tbl_projektphase ADD COLUMN zeitaufzeichnung BOOLEAN NOT NULL DEFAULT true;";
if(!$db->db_query($qry))
echo '<strong>fue.tbl_projektphase '.$db->db_last_error().'</strong><br>';
else
echo '<br>Spalte zeitaufzeichnung zu fue.tbl_projektphase hinzugefügt';
}
// Extension Schema
if ($result = $db->db_query("SELECT schema_name FROM information_schema.schemata WHERE schema_name='extension'"))
{
@@ -2710,7 +2760,7 @@ if($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS
}
// Spalte Zugangscode zu vw_msg_vars hinzufügen
if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars LIMIT 1'))
if(!$result = @$db->db_query('SELECT "Zugangscode" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1'))
{
$qry = '
CREATE OR REPLACE VIEW public.vw_msg_vars AS (
@@ -3777,7 +3827,7 @@ if(!$result = @$db->db_query("SELECT orgform_kurzbz FROM public.tbl_bankverbindu
}
// iban, bic und weitere Variablen zu vw_msg_vars hinzufügen
if(!$result = @$db->db_query('SELECT "IBAN Studiengang", "BIC Studiengang", "Studiengangskennzahl", "Einstiegssemester", "Einstiegsstudiensemester", "Vorname Studiengangsassistenz", "Nachname Studiengangsassistenz", "Durchwahl Studiengangsassistenz", "Alias Studiengangsassistenz", "Relative Prio" FROM public.vw_msg_vars LIMIT 1'))
if(!$result = @$db->db_query('SELECT "IBAN Studiengang", "BIC Studiengang", "Studiengangskennzahl", "Einstiegssemester", "Einstiegsstudiensemester", "Vorname Studiengangsassistenz", "Nachname Studiengangsassistenz", "Durchwahl Studiengangsassistenz", "Alias Studiengangsassistenz", "Relative Prio" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1'))
{
$qry = '
CREATE OR REPLACE VIEW public.vw_msg_vars AS (
@@ -4143,7 +4193,63 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM public.tbl_st
if(!$db->db_query($qry))
echo '<strong>Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'</strong><br>';
else
echo 'bis.tbl_studiengangstyp: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen<br>';
echo '<br> bis.tbl_studiengangstyp: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen<br>';
}
}
// Add type "p" to Studiengangstyp
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'p';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('p', 'PhD',NULL,'{PhD,PhD}');";
if (!$db->db_query($qry))
echo '<strong>system.tbl_webservicetyp '.$db->db_last_error().'</strong><br>';
else
echo '<br> public.tbl_studiengangstyp: Added type "p"<br>';
}
}
// Add type "l" to Studiengangstyp
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'l';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('l', 'Lehrgang',NULL,'{Lehrgang,Course}');";
if (!$db->db_query($qry))
echo '<strong>system.tbl_webservicetyp '.$db->db_last_error().'</strong><br>';
else
echo '<br> public.tbl_studiengangstyp: Added type "l"<br>';
}
}
// Add type "d" to Studiengangstyp
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'd';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('d', 'Diplom',NULL,'{Diplom,Diploma}');";
if (!$db->db_query($qry))
echo '<strong>system.tbl_webservicetyp '.$db->db_last_error().'</strong><br>';
else
echo '<br> public.tbl_studiengangstyp: Added type "d"<br>';
}
}
// Add type "w" to Studiengangstyp
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_studiengangstyp WHERE typ = 'w';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_studiengangstyp(typ,bezeichnung,beschreibung,bezeichnung_mehrsprachig) VALUES('w', 'Weiterbildung',NULL,'{Weiterbildung,Further education}');";
if (!$db->db_query($qry))
echo '<strong>system.tbl_webservicetyp '.$db->db_last_error().'</strong><br>';
else
echo '<br> public.tbl_studiengangstyp: Added type "w"<br>';
}
}
@@ -4250,7 +4356,7 @@ if (!$result = @$db->db_query("SELECT ba1code_bis FROM bis.tbl_beschaeftigungsar
}
// Orgform DE und Orform EN zu vw_msg_vars hinzufügen
if(!$result = @$db->db_query('SELECT "Orgform DE", "Orgform EN" FROM public.vw_msg_vars LIMIT 1'))
if(!$result = @$db->db_query('SELECT "Orgform DE", "Orgform EN" FROM public.vw_msg_vars WHERE person_id=-1 LIMIT 1'))
{
$qry = '
CREATE OR REPLACE VIEW public.vw_msg_vars AS (
@@ -5242,14 +5348,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_issue_status LIMIT 1;"))
else
echo '<br>system.tbl_issue_status: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;
// GRANT SELECT ON TABLE system.tbl_issue_status TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_issue_status TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue_status '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_issue_status';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue_status TO vilesci;
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue_status TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue_status TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue_status '.$db->db_last_error().'</strong><br>';
@@ -5278,14 +5384,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehlertyp LIMIT 1;"))
else
echo '<br>system.tbl_fehlertyp: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_bisstandort TO web;
// GRANT SELECT ON TABLE system.tbl_fehlertyp TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_fehlertyp TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehlertyp '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehlertyp';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_bisstandort TO vilesci;
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehlertyp TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehlertyp TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehlertyp '.$db->db_last_error().'</strong><br>';
@@ -5328,14 +5434,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehler LIMIT 1;"))
else
echo '<br>system.tbl_fehler: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
// GRANT SELECT ON TABLE system.tbl_fehler TO web;
$qry = 'GRANT SELECT, UPDATE ON TABLE system.tbl_fehler TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehler';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler '.$db->db_last_error().'</strong><br>';
@@ -5386,14 +5492,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_fehler_zustaendigkeiten L
else
echo '<br>system.tbl_fehler_zustaendigkeiten: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
// GRANT SELECT ON TABLE system.tbl_fehler_zustaendigkeiten TO web;
$qry = 'GRANT SELECT ON TABLE system.tbl_fehler_zustaendigkeiten TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler_zustaendigkeiten '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_fehler_zustaendigkeiten';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler_zustaendigkeiten TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_fehler_zustaendigkeiten TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_fehler_zustaendigkeiten '.$db->db_last_error().'</strong><br>';
@@ -5464,14 +5570,14 @@ if(!$result = @$db->db_query("SELECT 1 FROM system.tbl_issue LIMIT 1;"))
else
echo '<br>system.tbl_issue: Tabelle hinzugefuegt';
// GRANT SELECT ON TABLE bis.tbl_issue TO web;
// GRANT SELECT ON TABLE system.tbl_issue TO web;
$qry = 'GRANT SELECT, UPDATE ON TABLE system.tbl_issue TO web;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on system.tbl_issue';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE bis.tbl_issue TO vilesci;
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_issue TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>system.tbl_issue '.$db->db_last_error().'</strong><br>';
@@ -5493,6 +5599,34 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
// Add permission to manage bpk in FAS
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'student/bpk';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('student/bpk', 'BPK verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo '<br>system.tbl_berechtigung: Added permission for student/bpk';
}
}
// Add index to campus.tbl_zeitaufzeichnung.uid
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_zeitaufzeichnung_uid'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "CREATE INDEX idx_tbl_zeitaufzeichnung_uid ON campus.tbl_zeitaufzeichnung USING btree (uid)";
if (! $db->db_query($qry))
echo '<strong>Indizes: ' . $db->db_last_error() . '</strong><br>';
else
echo 'Index fuer campus.tbl_zeitaufzeichnung.uid hinzugefuegt<br>';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -5588,8 +5722,8 @@ $tabellen=array(
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
"fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"),
"fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"),
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz"),
"fue.tbl_projektphase" => array("projektphase_id","projekt_kurzbz","projektphase_fk","bezeichnung","typ","beschreibung","start","ende","budget","insertamum","insertvon","updateamum","updatevon","personentage","farbe","ressource_id"),
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz","zeitaufzeichnung"),
"fue.tbl_projektphase" => array("projektphase_id","projekt_kurzbz","projektphase_fk","bezeichnung","typ","beschreibung","start","ende","budget","insertamum","insertvon","updateamum","updatevon","personentage","farbe","ressource_id","zeitaufzeichnung"),
"fue.tbl_projekttask" => array("projekttask_id","projektphase_id","bezeichnung","beschreibung","aufwand","mantis_id","insertamum","insertvon","updateamum","updatevon","projekttask_fk","erledigt","ende","ressource_id","scrumsprint_id"),
"fue.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung"),
"fue.tbl_projekt_dokument" => array("projekt_dokument_id","projektphase_id","projekt_kurzbz","dms_id"),
File diff suppressed because it is too large Load Diff
+32 -2
View File
@@ -347,7 +347,8 @@ $filters = array(
{"name": "vorname"},
{"name": "nachname"},
{"name": "svnr"},
{"name": "ersatzkennzeichen"}
{"name": "ersatzkennzeichen"},
{"name": "mitarbeiter"}
],
"filters": []
}
@@ -471,6 +472,30 @@ $filters = array(
',
'oe_kurzbz' => null,
),
array(
'app' => 'infocenter',
'dataset_name' => 'abgewiesen',
'filter_kurzbz' => 'InfoCenterAbgewiesenAlle',
'description' => '{Alle}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "Abgewiesen - Alle",
"columns": [
{"name": "PersonID"},
{"name": "PreStudentID"},
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"}
],
"filters": []
}
',
'oe_kurzbz' => null,
),
array(
'app' => 'budget',
'dataset_name' => 'budgetoverview',
@@ -866,7 +891,7 @@ $filters = array(
'default_filter' => true,
'filter' => '
{
"name": "Alle offenen Fehler",
"name": "Alle offenen Fehler, hauptzuständig",
"columns": [
{"name": "Datum"},
{"name": "Inhalt"},
@@ -880,6 +905,11 @@ $filters = array(
"name": "Fehlerstatus",
"operation": "ncontains",
"condition": "behoben"
},
{
"name": "Hauptzuständig",
"operation": "contains",
"condition": "Ja"
}
]
}
+912 -9
View File
@@ -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',
@@ -1577,6 +1597,27 @@ $phrases = array(
)
),
array(
'app' => 'core',
'category' => 'filter',
'phrase' => 'filterApply',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Filtern',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Apply',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'filter',
@@ -2140,6 +2181,26 @@ $phrases = array(
)
)
),
array(
'app' => 'core',
'category' => 'person',
'phrase' => 'matrikelnummer',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Matrikelnummer',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Matriculation number',
'description' => '',
'insertvon' => 'system'
)
)
),
//**************** CORE/lehre
array(
@@ -12560,13 +12621,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,18 +12641,18 @@ 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'
)
)
),
),
array(
'app' => 'core',
'category' => 'eucovidqr',
@@ -12631,7 +12692,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'eucovidqr',
@@ -12671,7 +12732,7 @@ array(
'insertvon' => 'system'
)
)
),
),
array(
'app' => 'core',
'category' => 'eucovidqr',
@@ -12680,13 +12741,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 +12833,848 @@ 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',
'category' => 'oehbeitrag',
'phrase' => 'oehbeitragsVerwaltung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "ÖH-Beitragsverwaltung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Student Union Fee Management",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'oehbeitragHinzufuegen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Neuen ÖH-Beitrag hinzufügen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Add new student union fee",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'gueltigVon',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "gültig von",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "valid from",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'gueltigBis',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "gültig bis",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "valid to",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'studierendenbetrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "studierendenbetrag",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "student amount",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'versicherungsbetrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "versicherungsbetrag",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "insurance amount",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'aktion',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Aktion",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "action",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'bearbeiten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Bearbeiten",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Edit",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'unbeschraenkt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "unbeschränkt",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "unlimited",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'oehbeitraegeFestgelegt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "ÖH-Beiträge für alle Studiensemester festgelegt",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "show menu",
'description' => 'Student union fees set for all semesters',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'fehlerHolenOehbeitraege',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Holen der Öhbeiträge",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when getting student union fees",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'fehlerHolenSemester',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Holen der Semester",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when getting semester",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'fehlerHinzufuegenOehbeitrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Hinzufügen des ÖH-Beitrags",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when adding student union fee",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'fehlerAktualisierenOehbeitrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Aktualisieren des ÖH-Beitrags",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when updating student union fee",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'oehbeitrag',
'phrase' => 'fehlerLoeschenOehbeitrag',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Löschen des ÖH-Beitrags",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when deleting student union fee",
'description' => '',
'insertvon' => 'system'
)
)
),
//******************* Issue/Fehler Monitoring
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlerMonitoring',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler Monitoring",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error Monitoring",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'keinen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Keinen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "None",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'statusFuerAusgewaehlteSetzen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Status für Ausgewählte setzen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Set state for selected",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'meldungen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Meldungen",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "messages",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'behoben',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Behoben",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Resolved",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'inBearbeitung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "In Bearbeitung",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "In progress",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'inhalt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Inhalt",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Content",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'inhaltExtern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Inhalt extern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "External content",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlerstatus',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlerstatus",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error state",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlercode',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlercode",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error code",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlercodeExtern',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlercode extern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "External error code",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlertyp',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlertyp",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error type",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'verarbeitetVon',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Verarbeitet von",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Processed by",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'verarbeitetAm',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Verarbeitet am",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Processed on",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'global',
'phrase' => 'applikation',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Applikation",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "application",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'fehlertypcode',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehlertypcode",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error type code",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'statuscode',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Statuscode",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "State code",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'hauptzustaendig',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Hauptzuständig",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Main responsibility",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'bitteStatusWaehlen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Bitte wählen Sie den Status aus.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Please select the state.",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'bitteFehlerWaehlen',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Bitte wählen Sie die Fehler aus.",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Please select the errors.",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'statusAendernFehler',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Fehler beim Status Ändern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Error when changing state",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'fehlermonitoring',
'phrase' => 'statusAendernUnbekannterFehler',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Unbekannter Fehler beim Status Ändern",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Unknown error when changing state",
'description' => '',
'insertvon' => 'system'
)
)
)
);
+52 -24
View File
@@ -38,6 +38,7 @@ if(!$rechte->isBerechtigt('student/stammdaten', null, 'suid'))
die('Sie haben keine Berechtigung für diese Seite');
$error_log='';
$error_log_hinweis='';
$error_log1='';
$error_log_all="";
$fehler='';
@@ -242,29 +243,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."')";
@@ -302,7 +311,7 @@ if($result = $db->db_query($qry))
//Vergleich der letzten 6 Stellen der SVNR mit Geburtsdatum - ausser bei 01.01. und 01.07.
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
{
$error_log.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$row->gebdatum.") nicht";
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$row->gebdatum.") nicht";
}
//Vergleich der letzten 6 Stellen des Ersatzkennzeichen mit Geburtsdatum
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
@@ -379,9 +388,9 @@ if($result = $db->db_query($qry))
}
}
}
/*if($row->bpk == '' || $row->bpk == null)
if($row->bpk == '' || $row->bpk == null)
{
$error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
@@ -395,7 +404,7 @@ if($result = $db->db_query($qry))
{
$error_log.=(!empty($error_log) ? ', ' : ''). "bPK ist nicht 28 Zeichen lang";
}
}*/
}
if ($zustell_plz == '' || $zustell_plz == null)
{
@@ -474,6 +483,7 @@ if($result = $db->db_query($qry))
{
$error_log='';
$error_log1='';
$error_log_hinweis='';
continue;
}
$aktstatus=$rowstatus->status_kurzbz;
@@ -520,6 +530,7 @@ if($result = $db->db_query($qry))
{
$error_log='';
$error_log1='';
$error_log_hinweis='';
continue;
}
$aktstatus=$rowstatus->status_kurzbz;
@@ -580,6 +591,11 @@ if($result = $db->db_query($qry))
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$error_log1;
}
if($error_log_hinweis != '')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$error_log_hinweis = '';
}
$zaehl++;
$v.="\n";
$error_log='';
@@ -588,6 +604,13 @@ if($result = $db->db_query($qry))
}
else
{
if($error_log_hinweis != '')
{
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): </u>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$error_log_hinweis = '';
}
$anzahl_gemeldet++;
$tabelle.='<tr><td>'.$row->student_uid.'</td><td>'.$row->nachname.'</td><td>'.$row->vorname.'</td><td>'.$row->matrikelnr.'</td></tr>';
@@ -620,15 +643,19 @@ if($result = $db->db_query($qry))
$datei.="
<SVNR>".$row->svnr."</SVNR>";
}
if($row->ersatzkennzeichen!='')
// Ersatzkennzeichen nur inkludieren wenn svnr nicht gesetzt
if($row->ersatzkennzeichen!='' && $row->svnr == null)
{
$datei.="
<ErsKz>".$row->ersatzkennzeichen."</ErsKz>";
}
/*$datei.="
<bPK>".$row->bpk."</bPK>
";*/
if($row->bpk != '' && $row->bpk != null)
{
$datei.="
<bPK>".$row->bpk."</bPK>
";
}
$datei.="
<StaatsangehoerigkeitCode>".$row->staatsbuergerschaft."</StaatsangehoerigkeitCode>
@@ -648,7 +675,8 @@ if($result = $db->db_query($qry))
}
$datei.="
<eMailAdresse>". $email. "</eMailAdresse>
<eMailAdresse>". $email_privat. "</eMailAdresse>
<eMailAdresseBE>". $email. "</eMailAdresseBE>
<ZugangCode>".$row->zgv_code."</ZugangCode>
<ZugangDatum>".date("dmY", $datumobj->mktime_fromdate($row->zgvdatum))."</ZugangDatum>";
+240 -116
View File
@@ -50,10 +50,10 @@ if(!$rechte->isBerechtigt('student/stammdaten',null,'suid') && !$rechte->isBerec
die('Sie haben keine Berechtigung für diese Seite');
$error_log='';
$error_log_hinweis='';
$error_log1='';
$error_log_all="";
$error_log_io = ''; // error log fuer plausichecks von incomings/outgoings
$stgart='';
$fehler='';
$maxsemester=0;
$v='';
@@ -105,6 +105,8 @@ $student_data=array();
$datum_obj = new datum();
//Beginn- und Endedatum des aktuellen Semesters
// Update 07.12.2021 kindlm: scheint nicht verwendet zu werden
/*
$qry="SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($ssem).";";
if($result = $db->db_query($qry))
{
@@ -113,7 +115,8 @@ if($result = $db->db_query($qry))
$beginn=$row->start;
$ende=$row->ende;
}
}
}*/
//Ermittlung aktuelles und letztes BIS-Meldedatum
if(mb_strstr($ssem,"WS"))
{
@@ -129,6 +132,13 @@ else
{
die('Ung&uuml;ltiges Studiensemester!');
}
//Wenn bisdatum als GET-Parameter übergeben wird, dieses Datum nehmen
if (isset($_GET['bisdatum']))
{
$bisdatum = $_GET['bisdatum'];
}
//ausgewaehlter Studiengang
if(isset($_GET['stg_kz']))
{
@@ -145,7 +155,7 @@ derzeit fuer alle Studierende der gleiche Standort
ToDo: Standort sollte pro Student konfigurierbar sein.
*/
$standortcode='22';
if(in_array($stg_kz,array('265','268','761','760','266','267','764','269','400','794','795','786','859')))
if(in_array($stg_kz,array('265','268','761','760','266','267','764','269','400','794','795','786','859','871')))
$standortcode='14'; // Pinkafeld
elseif(in_array($stg_kz,array('639','640','263','743','364','635','402','401','725','264','271','781')))
$standortcode='3'; // Eisenstadt
@@ -177,75 +187,46 @@ $kodex_studstatuscode_array['Unterbrecher']=2;
$kodex_studstatuscode_array['Absolvent'] =3;
$kodex_studstatuscode_array['Abbrecher'] =4;
//Studiengangsdaten auslesen
$stg_obj = new studiengang();
if($stg_obj->load($stg_kz))
{
$maxsemester=$stg_obj->max_semester;
if($maxsemester==0)
{
echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
exit;
}
$erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
switch($stg_obj->typ)
{
case 'b': $stgart=1; break;
case 'm': $stgart=2; break;
case 'd': $stgart=3; break;
case 'e': $stgart=4; break;
default: die('<h2>Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein</h2>'); break;
}
// DoubleDegree Studierende werden per Default aus BB gemeldet.
// Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
if($stg_obj->orgform_kurzbz=='VZ')
$orgform_code_array['DDP']=$orgform_code_array['VZ'];
$orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
$orgform_kurzbz=$stg_obj->orgform_kurzbz;
}
else
die('Fehler:'.$stg_obj->errormsg);
//Ausgabe aktiver Studenten, die nicht gemeldet werden
$qry_akt="
SELECT
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
WHERE
bismelden=FALSE
AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
AND tbl_prestudent.prestudent_id NOT IN
(
SELECT prestudent_id
FROM public.tbl_prestudentstatus
WHERE
tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
)
ORDER BY student_uid, nachname, vorname
";
if($result_akt = $db->db_query($qry_akt))
if ($stg_kz != 'alleBaMa')
{
while($row_akt = $db->db_fetch_object($result_akt))
$qry_akt = "
SELECT
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
WHERE
bismelden=FALSE
AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
AND tbl_prestudent.prestudent_id NOT IN
(
SELECT prestudent_id
FROM public.tbl_prestudentstatus
WHERE
tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
)
ORDER BY student_uid, nachname, vorname
";
if ($result_akt = $db->db_query($qry_akt))
{
$v.="<u><b>Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."'</u></b> hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!! <br>\n";
$anzahl_fehler++;
while ($row_akt = $db->db_fetch_object($result_akt))
{
$v .= "<u><b>Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."'</u></b> hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!! <br>\n";
$anzahl_fehler++;
}
}
}
if ($stg_kz != 'alleBaMa')
{
//Incoming ohne I/O Datensatz anzeigen
$qry_in="
$qry_in = "
SELECT
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
FROM
@@ -260,16 +241,16 @@ $qry_in="
AND (status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid))
ORDER BY student_uid, nachname, vorname
";
if($result_in = $db->db_query($qry_in))
{
while($row_in = $db->db_fetch_object($result_in))
if ($result_in = $db->db_query($qry_in))
{
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): </u>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Es fehlt der I/O-Datensatz\n\n";
$anzahl_fehler++;
while ($row_in = $db->db_fetch_object($result_in))
{
$v .= "<u>Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): </u>\n";
$v .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Es fehlt der I/O-Datensatz\n\n";
$anzahl_fehler++;
}
}
}
//Hauptselect
// An der FHTW können nur die Incomings ausgelesen werden, wenn die stg_kz 10006 übergeben wird
if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
@@ -291,6 +272,34 @@ if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
ORDER BY student_uid, nachname, vorname
";
}
// Wenn "alleBaMa" als $stg_kz übergeben wird, wird ein großes XML mit allen Studiengängen geladen
elseif ($stg_kz == 'alleBaMa')
{
$qry="
SELECT
DISTINCT ON(tbl_student.studiengang_kz, matrikelnr, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat
FROM
public.tbl_student
JOIN public.tbl_benutzer ON(student_uid=uid)
JOIN public.tbl_person USING (person_id)
JOIN public.tbl_prestudent USING (prestudent_id)
JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
WHERE
bismelden=TRUE
AND tbl_studiengang.typ IN ('b','m')
AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
AND (status_kurzbz='Student' OR status_kurzbz='Outgoing'
OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent'
OR status_kurzbz='Abbrecher' OR status_kurzbz='Unterbrecher'))
OR ((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($psem).") AND (status_kurzbz='Absolvent'
OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>".$db->db_add_param($bisprevious).")
OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>=".$db->db_add_param($bisprevious).")
OR (tbl_bisio.von<=".$db->db_add_param($bisdatum)." AND (tbl_bisio.bis>=".$db->db_add_param($bisdatum)." OR tbl_bisio.bis IS NULL))
)))
ORDER BY tbl_student.studiengang_kz, matrikelnr, nachname, vorname
";
}
else
{
$qry="
@@ -320,25 +329,72 @@ else
if($result = $db->db_query($qry))
{
$header ="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Erhalter>
<ErhKz>".$erhalter."</ErhKz>
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
<StudierendenBewerberMeldung>
<Studiengang>
<StgKz>".$stg_kz."</StgKz>";
$datei .= $header;
$dateiNurBewerber .= $header;
$stg_kz_index = '';
while($row = $db->db_fetch_object($result))
{
$datei.= GenerateXMLStudentBlock($row);
if ($row->studiengang_kz != $stg_kz_index)
{
//Studiengangsdaten auslesen
$stg_obj = new studiengang();
if($stg_obj->load($row->studiengang_kz))
{
$maxsemester = $stg_obj->max_semester;
if($maxsemester == 0)
{
echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
exit;
}
$erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
switch($stg_obj->typ)
{
case 'b': $stgart = 1; break;
case 'm': $stgart = 2; break;
case 'd': $stgart = 3; break;
case 'e': $stgart = 4; break;
default: die('<h2>Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein</h2>'); break;
}
// DoubleDegree Studierende werden per Default aus BB gemeldet.
// Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
if($stg_obj->orgform_kurzbz == 'VZ')
$orgform_code_array['DDP'] = $orgform_code_array['VZ'];
$orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
$orgform_kurzbz = $stg_obj->orgform_kurzbz;
}
else
die('Fehler:'.$stg_obj->errormsg);
// Header am Beginn rausschreiben
if ($stg_kz_index == '')
{
$header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Erhalter>
<ErhKz>".$erhalter."</ErhKz>
<MeldeDatum>".date("dmY", $datumobj->mktime_fromdate($bisdatum))."</MeldeDatum>
<StudierendenBewerberMeldung>";
$datei .= $header;
$dateiNurBewerber .= $header;
}
if ($stg_kz_index != '' && $row->studiengang_kz != $stg_kz_index)
{
$datei .= "
</Studiengang>";
}
$stg_kz_index = $row->studiengang_kz;
$datei .= "
<Studiengang>
<StgKz>".$row->studiengang_kz."</StgKz>";
}
$datei .= GenerateXMLStudentBlock($row);
}
//Bewerberblock bei Ausserordentlichen nicht anzeigen
if($stg_kz!=('9'.$erhalter))
/*if($stg_kz!=('9'.$erhalter))
{
$stg_obj = new studiengang();
@@ -359,7 +415,7 @@ if($result = $db->db_query($qry))
$datei.=$bewerberBlock;
$dateiNurBewerber.=$bewerberBlock;
}
}
}*/
}
$footer="
@@ -392,26 +448,26 @@ echo ' </head>
{
$("#t1").tablesorter(
{
sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
widgets: ["zebra", "filter", "stickyHeaders"],
widgetOptions : { filter_functions:
{
// Add select menu to this column
widgetOptions : { filter_functions:
{
// Add select menu to this column
4 : {
"Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
"Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
"Absolvent" : function(e, n, f, i, $r, c, data) { return /Absolvent/.test(e); },
"Diplomand" : function(e, n, f, i, $r, c, data) { return /Diplomand/.test(e); },
"Incoming" : function(e, n, f, i, $r, c, data) { return /Incoming/.test(e); },
"Student" : function(e, n, f, i, $r, c, data) { return /Student/.test(e); },
"Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
"Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
}
}
}
}
}
});
$("#t2").tablesorter(
{
sortList: [[0,0],[1,0]],
widgets: ["zebra", "filter", "stickyHeaders"]
sortList: [[0,0],[1,0]],
widgets: ["zebra", "filter", "stickyHeaders"]
});
});
</script>
@@ -420,6 +476,7 @@ if ($rechte->isBerechtigt('admin'))
{
echo '<form name="frm_studiengang" action='.$_SERVER['PHP_SELF'].' method="GET">';
echo 'Studiengang: <SELECT name="stg_kz" onchange="document.frm_studiengang.submit()">';
echo '<OPTION value="alleBaMa" '.($stg_kz == 'alleBaMa' ? 'selected' : '').'>Alle Bachelor und Master</OPTION>';
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', true);
$types = new studiengang();
@@ -427,6 +484,10 @@ if ($rechte->isBerechtigt('admin'))
$typ = '';
foreach ($studiengang->result AS $row)
{
if ($row->typ != 'b' && $row->typ != 'm' && $row->typ != 'd' && $row->typ != 'e')
{
continue;
}
if ($row->studiengang_kz == $stg_kz)
{
$selected = 'selected';
@@ -452,10 +513,17 @@ if ($rechte->isBerechtigt('admin'))
echo '</select>';
echo '</form>';
}
$studiengang = new studiengang($stg_kz);
$typ = new studiengang($stg_kz);
$typ->getStudiengangTyp($studiengang->typ);
echo "<H1>BIS - Studentendaten werden &uuml;berpr&uuml;ft! Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."</H1>\n";
if ($stg_kz != 'alleBaMa')
{
$studiengang = new studiengang($stg_kz);
$typ = new studiengang($stg_kz);
$typ->getStudiengangTyp($studiengang->typ);
echo "<H1>BIS - Studentendaten werden &uuml;berpr&uuml;ft. Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."</H1>\n";
}
else
{
echo "<H1>BIS - Studentendaten aller Bachelor- und Master-Studiengänge werden überprüft.</H1>\n";
}
echo "<H2>Nicht plausible BIS-Daten (f&uuml;r Meldung ".$db->convert_html_chars($ssem)."): </H2><br>";
echo nl2br($v."\n\n");
@@ -683,6 +751,7 @@ function GenerateXMLStudentBlock($row)
global $kodex_studientyp_array, $kodex_studstatuscode_array;
global $stg_kz;
$error_log='';
$error_log_hinweis='';
$error_log1='';
$error_log_io = '';
$datei = '';
@@ -758,6 +827,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."')";
@@ -792,7 +884,7 @@ function GenerateXMLStudentBlock($row)
}
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
{
$error_log.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
$error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enth&auml;lt Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
}
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
{
@@ -822,9 +914,9 @@ function GenerateXMLStudentBlock($row)
{
$error_log.=(!empty($error_log)?', ':'')."Heimat-Nation ('".$nation."')";
}
/*if($row->bpk == '' || $row->bpk == null)
if($row->bpk == '' || $row->bpk == null)
{
$error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
$error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
{
@@ -837,7 +929,7 @@ function GenerateXMLStudentBlock($row)
{
$error_log.=(!empty($error_log) ? ', ' : ''). "bPK ist nicht 28 Zeichen lang";
}
}*/
}
if (!$ausserordentlich && !$incoming)
{
if ($zustell_plz == '' || $zustell_plz == null)
@@ -961,6 +1053,15 @@ function GenerateXMLStudentBlock($row)
else if($rowstatus->status_kurzbz=="Abbrecher" )
{
$status=4;
// Checken, ob der Student Abbrecher vor der Meldung war und noch nie gemeldet wurde
$qryAbbrecher = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id = ".$db->db_add_param($row->prestudent_id)." AND status_kurzbz='Student' AND datum <=".$db->db_add_param($bisprevious);
if($resultAbbrecher = $db->db_query($qryAbbrecher))
{
if ($db->db_num_rows($resultAbbrecher) == 0)
{
//$error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen";
}
}
}
else
{
@@ -1217,6 +1318,11 @@ function GenerateXMLStudentBlock($row)
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$error_log1;
}
if($error_log_hinweis != '')
{
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n";
$error_log_hinweis = '';
}
$anzahl_fehler++;
$v.="\n";
$error_log='';
@@ -1224,7 +1330,14 @@ function GenerateXMLStudentBlock($row)
return '';
}
else
{
if($error_log_hinweis != '')
{
$v.="<u>Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): </u>\n";
$v.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: grey'>".$error_log_hinweis." (Nicht BIS-Relevant)</span>\n\n";
$error_log_hinweis = '';
}
$datei .= "
<StudentIn>
<PersKz>" . trim($row->matrikelnr) . "</PersKz>";
@@ -1263,15 +1376,19 @@ function GenerateXMLStudentBlock($row)
$datei .= "
<SVNR>" . $row->svnr . "</SVNR>";
}
if ($row->ersatzkennzeichen != '')
// Ersatzkennzeichen nur inkludieren wenn svnr nicht gesetzt
if ($row->ersatzkennzeichen != '' && $row->svnr == null)
{
$datei .= "
<ErsKz>" . $row->ersatzkennzeichen . "</ErsKz>";
}
/*$datei .= "
<bPK>" . $row->bpk . "</bPK>
";*/
if($row->bpk != '' && $row->bpk != null)
{
$datei.="
<bPK>".$row->bpk."</bPK>";
}
$datei .= "
<StaatsangehoerigkeitCode>" . $row->staatsbuergerschaft . "</StaatsangehoerigkeitCode>
@@ -1280,14 +1397,11 @@ function GenerateXMLStudentBlock($row)
<HeimatStrasse><![CDATA[" . $strasse . "]]></HeimatStrasse>
<HeimatNation>" . $nation . "</HeimatNation>";
if (!$ausserordentlich && !$incoming)
{
$datei .= "
$datei .= "
<ZustellPLZ>" . $zustell_plz . "</ZustellPLZ>
<ZustellGemeinde>" . $zustell_gemeinde . "</ZustellGemeinde>
<ZustellStrasse>" . $zustell_strasse . "</ZustellStrasse>
<ZustellNation>" . $zustell_nation . "</ZustellNation>";
}
if ($co_name != '')
{
@@ -1296,11 +1410,16 @@ function GenerateXMLStudentBlock($row)
";
}
if ($email_privat != '')
{
$datei .= "
<eMailAdresse>" . $email_privat . "</eMailAdresse>";
}
if ($email != '')
{
$datei .= "
<eMailAdresse>" . $email . "</eMailAdresse>
";
<eMailAdresseBE>" . $email . "</eMailAdresseBE>";
}
if(!$ausserordentlich)
@@ -1414,6 +1533,11 @@ function GenerateXMLStudentBlock($row)
$bisio_zweck->getZweck($rowio->bisio_id);
$zweck_code_arr = array();
// Es muss immer mindestens 1 Aufenthaltszweck geben
if (count($bisio_zweck->result) == 0)
{
$error_log_io .= (!empty($error_log_io) ? ', ' : ''). "Es muss mindestens ein Aufenthaltszweck eingetragen sein";
}
// Bei Incomings...
if ($aktstatus == 'Incoming')
{
@@ -1531,12 +1655,12 @@ function GenerateXMLStudentBlock($row)
if ($aktstatus != 'Incoming' && $rowio->ects_erworben != '')
{
$datei.="
<ECTSerworben>".$rowio->ects_erworben."</ECTSerworben>";
<ECTSerworben>".round($rowio->ects_erworben)."</ECTSerworben>";
}
if ($aktstatus != 'Incoming' && $rowio->ects_angerechnet != '')
{
$datei.="
<ECTSangerechnet>".$rowio->ects_angerechnet."</ECTSangerechnet>";
<ECTSangerechnet>".round($rowio->ects_angerechnet)."</ECTSangerechnet>";
}
foreach ($aufenthaltfoerderung_code_arr as $aufenthaltfoerderung_code)
{
@@ -396,6 +396,13 @@ if ($type == 'save')
$gruppe = new gruppe();
if ($gruppe->load($gruppe_kurzbz))
{
if(!preg_match('/^[A-Z0-9a-z\-\_]*$/', $_POST['kurzBzNeu']) ||
!preg_match('/^[A-Z0-9a-z\-\_]*$/', $_POST['bezeichnung']))
{
echo "<span class='error'>Bitte verwenden Sie für die Kurzbezeichnung/Bezeichnung keine Sonderzeichen oder Umlaute</span>";
return;
}
$gruppe->bezeichnung = $_POST['bezeichnung'];
if ($admin)
{
@@ -432,6 +439,12 @@ if ($type == 'save')
$lvb = new lehrverband();
if ($lvb->load($studiengang_kz, $semester, $verband, $gruppe))
{
if(!preg_match('/^[A-Z0-9a-z\-\_]*$/', $_POST['bezeichnung']))
{
echo "<span class='error'>Bitte verwenden Sie für die Bezeichnung keine Sonderzeichen oder Umlaute</span>";
return;
}
$lvb->bezeichnung = $_POST['bezeichnung'];
if ($admin)
+107 -1
View File
@@ -42,6 +42,7 @@ require_once ('../../include/kontakt.class.php');
require_once ('../../include/dokument.class.php');
require_once ('../../include/reihungstest.class.php');
require_once ('../../include/pruefling.class.php');
require_once ('../../include/udf.class.php');
if (! $db = new basis_db())
@@ -54,6 +55,7 @@ $rechte->getBerechtigungen($uid);
if (! $rechte->isBerechtigt('basis/person', null, 'suid'))
die($rechte->errormsg);
$udf = new UDF();
$msg_info = array();
$msg_error = array();
$msg_warning = array();
@@ -283,6 +285,40 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
if ($doppelteReihungstestzuordnung === false)
$sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$personUDF = $udf->personHasUDF();
if ($personUDF)
{
$udfToKeep = json_decode($personToKeep_obj->udf_values, true);
$udfToDelete = json_decode($personToDelete_obj->udf_values, true);
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
$udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
if ($udfToKeep != $udfToDelete)
{
foreach ($udfToDelete as $key => $udfValue)
{
if (!array_key_exists($key, $udfToKeep))
{
$udfToKeep[$key] = $udfValue;
}
elseif ($udfToKeep[$key] !== $udfValue && !is_null($udfValue))
{
if (is_null($udfToKeep[$key]))
$udfToKeep[$key] = $udfValue;
else
{
$msg_error[] = 'Beide Personen haben unterschiedliche Werte in den UDFs und können nicht zusammengelegt werden.<br>
Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
$error = true;
break;
}
}
}
}
}
if ($error == false)
{
// Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen
@@ -437,6 +473,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$sql_query_upd1 .= "UPDATE system.tbl_filters SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE system.tbl_log SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE system.tbl_issue SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= $alma_query_upd;
@@ -456,6 +493,9 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
// BPK erst setzen, wenn nur mehr eine Person vorhanden ist
$sql_query_upd1 .= "UPDATE public.tbl_person SET bpk=" . $db->db_add_param($bpk, FHC_STRING) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
if ($personUDF)
$sql_query_upd1 .= "UPDATE public.tbl_person SET udf_values=" . $db->db_add_param(json_encode($udfToKeep)) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
if ($db->db_query($sql_query_upd1))
{
$msg_info[] = "Update Query:";
@@ -730,9 +770,10 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
usort($prestudenten->result, "sortPrestudents");
$prestudentUDF = $udf->prestudentHasUDF();
$prestudentenArray = array();
$kontaktLoeschArray = array();
foreach ($prestudenten->result AS $row)
foreach ($prestudenten->result AS $key => $row)
{
$prestudentenArray[] = array(
'prestudent_id' => $row->prestudent_id,
@@ -753,6 +794,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
'zgvmanation' => $row->zgvmanation,
'studiengang_typ' => $row->studiengang_typ
);
if ($prestudentUDF)
$prestudentenArray[$key] = array_merge($prestudentenArray[$key], array('udf_values' => $row->udf_values));
}
/*
@@ -793,6 +836,48 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$i++;
continue;
}
//Wenn die UDF values nicht zusammengeführt werden können, wird mit dem nächsten weitergemacht und eine Warnung ausgegeben
if ($prestudentUDF)
{
$udfError = false;
$udfToKeep = json_decode($prestudentenArray[$previousKey]['udf_values'], true);;
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
$udfToDelete = json_decode($value['udf_values'], true);
$udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
if ($udfToKeep != $udfToDelete)
{
foreach ($udfToDelete as $udfKey => $udfValue)
{
if (!array_key_exists($udfKey, $udfToKeep))
{
$udfToKeep[$udfKey] = $udfValue;
}
elseif ($udfToKeep[$udfKey] !== $udfValue && !is_null($udfValue))
{
if (is_null($udfToKeep[$udfKey]))
$udfToKeep[$udfKey] = $udfValue;
else
{
$warningList['udfUnklar'][$i][1] = $prestudentId;
$warningList['udfUnklar'][$i][2] = $value['prestudent_id'];
$i++;
$udfError = true;
break;
}
}
}
}
$prestudentenArray[$previousKey]['udf_values'] = json_encode($udfToKeep);
if ($udfError)
continue;
}
// Wenn der Status gleich ist, wird auf bestätigt-datum geprüft
if ($status_kurzbz == $value['status_kurzbz'])
{
@@ -894,6 +979,11 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$zgvmadatum = $value['zgvmadatum'];
$zgvmanation = $value['zgvmanation'];
$previousKey = $key;
if ($prestudentUDF)
{
$udfToKeep = json_decode($value['udf_values'], true);
$udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
}
}
// Messages in $msg_warning schreiben
@@ -934,6 +1024,22 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
}
}
$msg_warning[] = $messageOutput;
$messageOutput = '';
if(isset($warningList['udfUnklar']))
{
foreach ($warningList['udfUnklar'] as $key => $value) {
$messageOutput .= '<div>Bei folgenden PreStudenten sind die UDFs widersprüchlich oder unklar:<br>';
foreach ($value as $presstudentid)
{
$messageOutput .= '&nbsp;&nbsp;&nbsp;&nbsp;'.$presstudentid.'<br>';
}
$messageOutput .= '</div>';
}
}
$msg_warning[] = $messageOutput;
//Wenn Prüfling auf zu löschenden Prestudenten zeigt und ggf auf bleibenden umhängen.

Some files were not shown because too many files have changed in this diff Show More