Merge branch 'master' into feature-18473/UrlaubstoolKeinEintragBeiVorhandenerZeitaufzeichnung

This commit is contained in:
Andreas Österreicher
2022-04-29 10:58:06 +02:00
406 changed files with 7183 additions and 12740 deletions
+10
View File
@@ -71,6 +71,16 @@ $config['navigation_header'] = array(
'lehre/lehrauftrag_erteilen:r'
)
),
'zverfueg' => array(
'link' => site_url('lehre/lvplanung/AdminZeitverfuegbarkeit'),
'description' => 'Zeitverfügbarkeit',
'expand' => true,
'sort' => 45,
'requiredPermissions' => array(
'lehre/zeitverfuegbarkeit:rw',
'lehre/zeitverfuegbarkeit:rw'
)
),
'zgvueberpruefung' => array(
'link' => site_url('system/infocenter/ZGVUeberpruefung'),
'description' => 'ZGV Überprüfung',
+310 -1
View File
@@ -19,7 +19,7 @@
*/
if (!defined('BASEPATH')) exit('No direct script access allowed');
class LVPlanJob extends CLI_Controller
class LVPlanJob extends JOB_Controller
{
/**
* Initialize LVPlanJob Class
@@ -149,4 +149,313 @@ class LVPlanJob extends CLI_Controller
echo "Failed ".$fail."\n";
}
}
/**
* Send Mail to STGL, Kompetenzfeld and LV Planung about todays updated Zeitwuensche.
* STGL gets list only of lectors who updated future assigend courses concerning their STG.
* Kompetenzleitung gets list only of lectors who updated future assigend courses concerning their KF.
* LVPlanung gets list of lectors who updated future assigend courses.
*/
public function mailUpdatedZeitwuensche()
{
// Load models
$this->load->model('ressource/Stundenplandev_model', 'StundenplandevModel');
$this->load->model('organisation/Studiensemester_model', 'StundiensemesterModel');
$this->load->model('education/Lehreinheit_model', 'LehreinheitModel');
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
$this->load->model('person/Person_model', 'PersonModel');
// Load libs
$this->load->library('MailLib');
// Load helpers
$this->load->helper('hlp_sancho_helper');
// Start Log Message
$this->logInfo('Mail updated Zeitwuensche started.');
// Get all lectors, who updated their Zeitwunsch today
$db = new DB_Model();
$result = $db->execReadOnlyQuery('
SELECT
zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz
FROM
campus.tbl_zeitwunsch_gueltigkeit zwg
JOIN lehre.tbl_stundenplandev stpl
ON(
stpl.mitarbeiter_uid=zwg.mitarbeiter_uid
AND stpl.datum BETWEEN zwg.von AND COALESCE(zwg.bis, \'2999-12-31\')
AND (zwg.insertamum::date = (NOW()-\'1 days\'::interval)::date
OR
zwg.updateamum::date = (NOW()-\'1 days\'::interval)::date)
AND stpl.datum > now()
)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
GROUP BY
zwg.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.oe_kurzbz
');
if (!hasData($result))
{
return; // No updated Zeitwuensche today
}
$uidByStg_arr = array(); // Mail data for Studiengang
$uidByOe_arr = array(); // Mail data for Kompetenzfeld
$uid_arr = array(); // Mail data for Kompetenzfeld
// Loop through lectors, who updated their Zeitwunsch today
$changed_arr = getData($result);
foreach ($changed_arr as $row)
{
// Add unique lector array
if (!in_array($row->mitarbeiter_uid, $uid_arr))
{
$uid_arr[]= $row->mitarbeiter_uid;
}
// Build unique Studiengang array
if (!array_key_exists($row->studiengang_kz, $uidByStg_arr))
{
$uidByStg_arr[$row->studiengang_kz] = array($row->mitarbeiter_uid);
}
elseif (!in_array($row->mitarbeiter_uid, $uidByStg_arr[$row->studiengang_kz]))
{
$uidByStg_arr[$row->studiengang_kz][]= $row->mitarbeiter_uid;
}
// Build unique Kompetenzfeld array
if (!array_key_exists($row->oe_kurzbz, $uidByOe_arr))
{
$uidByOe_arr[$row->oe_kurzbz] = array($row->mitarbeiter_uid);
}
elseif (!in_array($row->mitarbeiter_uid, $uidByOe_arr[$row->oe_kurzbz]))
{
$uidByOe_arr[$row->oe_kurzbz][]= $row->mitarbeiter_uid;
}
}
// Send mail to STG Assistenz
$result = $this->_sendMailToStg($uidByStg_arr);
if (isError($result))
{
$this->logError(getError($result));
}
// Send mail to Kompetenzfeld Leitung
$result = $this->_sendMailToKF($uidByOe_arr);
if (isError($result))
{
$this->logError(getError($result));
}
// Send mail to LV Planung
$result = $this->_sendMailToLvPlanung($uid_arr);
if (isError($result))
{
$this->logError(getError($result));
}
// End Log Message
$this->logInfo('Mail updated Zeitwuensche ended.');
}
/**
* Send Mail to STGL Assistance about lectors, who teach LV assigend to the STG, and who updated Zeitwuensche.
*
* @param $data_arr
* @param $stg_bezeichnung
*/
private function _sendMailToStg($data_arr)
{
foreach ($data_arr as $stg_kurzbz => $uid_arr)
{
// Get STG eMail
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$result = $this->StudiengangModel->load($stg_kurzbz);
$stgMail = $result->retval[0]->email;
$lektorenTabelle = '
<table><thead>
<tr>
<th style="text-align:left">Name</th>
<th style="text-align:left">UID</th>
</tr>
</thead><tbody>
';
foreach($uid_arr as $uid)
{
$person = $this->PersonModel->getByUid($uid);
$lektorenTabelle.= '
<tr>
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
<td style="text-align:left">['. $uid. ']</td>
</tr>
';
}
$lektorenTabelle.= '</tbody></table>';
$contentData_arr = array(
'datentabelle' => $lektorenTabelle
);
// Send mail
if (!sendSanchoMail(
'ZeitwunschUpdateMail',
$contentData_arr,
$stgMail,
'Änderung von Zeitwünschen',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
))
{
$errorReceiverUid_arr[]= $stgMail;
}
}
if (isset($errorReceiverUid_arr))
{
return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ','));
}
return success();
}
/**
* Send Mail to Kompetenzfeld about lectors, who teach LV assigend to the Kompetenzfeld, and who updated Zeitwuensche.
*
* @param $data_arr
* @param $stg_bezeichnung
*/
private function _sendMailToKF($data_arr)
{
// Send mail to Komepetenzfeld Leitung
foreach ($data_arr as $oe_kurzbz => $uid_arr)
{
// Get KF Leitung eMail
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$result = $this->BenutzerfunktionModel->getBenutzerFunktionen(
'Leitung',
$oe_kurzbz,
$activeoeonly = true,
$activebenonly = true
);
if(isSuccess($result) && hasData($result))
{
$empfaenger = array();
foreach(getData($result) as $row)
$empfaenger[] = $row->uid. '@'. DOMAIN;
$kfMail = implode(',',$empfaenger);
$lektorenTabelle = '
<table><thead>
<tr>
<th style="text-align:left">Name</th>
<th style="text-align:left">UID</th>
</tr>
</thead><tbody>
';
foreach($uid_arr as $uid)
{
$person = $this->PersonModel->getByUid($uid);
$lektorenTabelle.= '
<tr>
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
<td style="text-align:left">['. $uid. ']</td>
</tr>
';
}
$lektorenTabelle.= '</tbody></table>';
$contentData_arr = array(
'datentabelle' => $lektorenTabelle
);
// Send mail
if (!sendSanchoMail(
'ZeitwunschUpdateMail',
$contentData_arr,
$kfMail,
'Änderung von Zeitwünschen',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
))
{
$errorReceiverUid_arr[]= $kfMail;
}
}
}
if (isset($errorReceiverUid_arr))
{
return error('Mail updated Zeitwuensche could not be sent to :'. implode($errorReceiverUid_arr, ','));
}
return success();
}
/**
* Send Mail to LV Planung about all lectors who updated Zeitwuensche.
*
* @param $data_arr
* @param $stg_bezeichnung
*/
private function _sendMailToLvPlanung($data_arr)
{
$lektorenTabelle = '
<table><thead>
<tr>
<th style="text-align:left">Name</th>
<th style="text-align:left">UID</th>
</tr>
</thead><tbody>
';
foreach($data_arr as $lector)
{
$person = $this->PersonModel->getByUid($lector);
$lektorenTabelle.= '
<tr>
<td style="text-align:left">'. getData($person)[0]->vorname. ' '. getData($person)[0]->nachname. '</td>
<td style="text-align:left">['. $lector. ']</td>
</tr>
';
}
$lektorenTabelle.= '</tbody></table>';
$contentData_arr = array(
'datentabelle' => $lektorenTabelle
);
// Send mail
if (!sendSanchoMail(
'ZeitwunschUpdateMail',
$contentData_arr,
MAIL_LVPLAN,
'Änderung von Zeitwünschen',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
))
{
$errorReceiver = MAIL_LVPLAN;
}
if (isset($errorReceiver))
{
return error('Mail updated Zeitwuensche could not be sent to :'. $errorReceiver);
}
return success();
}
}
@@ -119,7 +119,7 @@ class requestAnrechnung extends Auth_Controller
// Validate data
if (empty($_FILES['uploadfile']['name']))
{
return $this->outputJsonError($this->p->t('ui', 'errorUploadFehlt'));
return $this->outputJsonError($this->p->t('ui', 'errorUploadFehltOderZuGross'));
}
if (isEmptyString($begruendung_id) ||
@@ -0,0 +1,310 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
*
*/
class AdminZeitverfuegbarkeit extends Auth_Controller
{
const BERECHTIGUNG_ZEITVERFUEGBARKEIT = 'lehre/zeitverfuegbarkeit';
private $_uid; // uid of the logged user
public function __construct()
{
// Set required permissions
parent::__construct(
array(
'index' => 'lehre/zeitverfuegbarkeit:rw',
'saveZeitverfuegbarkeit' => 'lehre/zeitverfuegbarkeit:rw',
'deleteZeitverfuegbarkeit' => 'lehre/zeitverfuegbarkeit:rw'
)
);
// Load models
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
$this->load->model('person/Person_model', 'PersonModel');
$this->load->model('ressource/Zeitsperre_model', 'ZeitsperreModel');
// Load libraries
$this->load->library('PermissionLib');
$this->load->library('AuthLib');
$this->load->library('WidgetLib');
// Load helpers
$this->load->helper('array');
// Load language phrases
$this->loadPhrases(
array(
'global',
'ui',
'lehre'
)
);
$this->_setAuthUID(); // sets property uid
$this->setControllerId(); // sets the controller id
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
public function index()
{
// Get Studiengaenge the user is entitled for
$result = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_ZEITVERFUEGBARKEIT);
$studiengang_kz_arr = !isEmptyArray($result) ? $result : array();
// Get lectors of that Studiengaenge
$result = $this->_getLehreinheitmitarbeiterByStg($studiengang_kz_arr);
$lektor_arr = hasData($result) ? getData($result) : array();
// Get available Stundenplan Stunden
$result = $this->_getStunden();
$stunde_arr = hasData($result) ? getData($result) : array();
// Get actual Studiensemester to set min-limit Datepicker
$result = $this->StudiensemesterModel->getAkt();
$studsemStart = hasData($result) ? getData($result)[0]->start : '';
$view_data = array(
'studiengang_kz_arr' => $studiengang_kz_arr,
'lektor_arr' => $lektor_arr,
'stunde_arr' => $stunde_arr,
'studsemStart' => $studsemStart
);
$this->load->view('lehre/lvplanung/adminZeitverfuegbarkeit.php', $view_data);
}
/**
* Save or update Zeitverfuegbarkeit.
*/
public function saveZeitverfuegbarkeit()
{
$zeitsperre_id = $this->input->post('zeitsperre_id');
$mitarbeiter_uid = $this->input->post('mitarbeiter_uid');
$zeitsperretyp_kurzbz = $this->input->post('zeitsperretyp_kurzbz');
$bezeichnung = $this->input->post('bezeichnung');
$vonDatum = $this->input->post('vondatum');
$vonStunde = isEmptyString($this->input->post('vonstunde')) ? null : $this->input->post('vonstunde');
$bisDatum = $this->input->post('bisdatum');
$bisStunde = isEmptyString($this->input->post('bisstunde')) ? null : $this->input->post('bisstunde');
$result = $this->_validate($this->input->post());
if (isSuccess($result))
{
if (is_numeric($zeitsperre_id))
{
$result = $this->ZeitsperreModel->update(
$zeitsperre_id,
array(
'vondatum' => $vonDatum,
'vonstunde' => $vonStunde,
'bisdatum' => $bisDatum,
'bisstunde' => $bisStunde,
'bezeichnung' => $bezeichnung
)
);
}
else
{
$result = $this->ZeitsperreModel->save(
$zeitsperretyp_kurzbz,
$mitarbeiter_uid,
$vonDatum,
$bisDatum,
$vonStunde,
$bisStunde,
$bezeichnung
);
}
}
if (isError($result))
{
$this->terminateWithJsonError(getError($result));
}
$zeitsperre_id = getData($result);
// Success response to AJAX
$this->outputJsonSuccess(array(
'zeitsperre_id' => $zeitsperre_id,
'msg' => $this->p->t('ui', 'gespeichert')
));
}
/**
* Delete Zeitverfuegbarkeit.
*/
public function deleteZeitverfuegbarkeit()
{
$zeitsperre_id = $this->input->post('zeitsperre_id');
if (!is_numeric($zeitsperre_id))
{
$this->terminateWithJsonError('Wählen Sie einen Lehrenden aus der Zeitverfügbarkeit-Tabelle aus.');
}
// Load Zeitsperre
$result = $this->ZeitsperreModel->load($zeitsperre_id);
$delZsp = getData($result)[0];
// Delete
$result = $this->ZeitsperreModel->delete($zeitsperre_id);
if (isError($result))
{
$this->terminateWithJsonError(getError($result));
}
// Store Deletion query
$delQry = $this->db->last_query();
// Log deletion
$this->_logDeletion($delZsp, $delQry);
$this->outputJsonSuccess(array('msg' => $this->p->t('ui', 'geloescht')));
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
/**
* Get all lectors that are assigend to Lehreinheiten in actual or future semester.
*
* @param $studiengang_kz_arr Restrict only to given stg-
* @return mixed
*/
private function _getLehreinheitmitarbeiterByStg($studiengang_kz_arr)
{
$this->MitarbeiterModel->addSelect('lema.mitarbeiter_uid, nachname, vorname');
$this->MitarbeiterModel->addDistinct('lema.mitarbeiter_uid');
$this->MitarbeiterModel->addJoin('lehre.tbl_lehreinheitmitarbeiter lema', 'tbl_mitarbeiter.mitarbeiter_uid = lema.mitarbeiter_uid');
$this->MitarbeiterModel->addJoin('public.tbl_benutzer b', 'lema.mitarbeiter_uid = b.uid');
$this->MitarbeiterModel->addJoin('public.tbl_person p', 'person_id');
$this->MitarbeiterModel->addJoin('lehre.tbl_lehreinheit le', 'lehreinheit_id');
$this->MitarbeiterModel->addJoin('lehre.tbl_lehrveranstaltung lv', 'lehrveranstaltung_id');
$this->MitarbeiterModel->addJoin('public.tbl_studiensemester ss', 'studiensemester_kurzbz');
$this->MitarbeiterModel->addOrder('lema.mitarbeiter_uid');
// Return lektoren assigned to actual or future lehreinheiten
return $this->MitarbeiterModel->loadWhere('
lv.studiengang_kz IN (' . implode(', ', $studiengang_kz_arr) . ')
AND b.aktiv
AND personalnummer > 0
AND NOW() <= ss.ende'
);
}
/**
* Get all available Stunden of Stundentabelle.
*
* @return mixed
*/
private function _getStunden()
{
$this->load->model('ressource/Stunde_model', 'StundeModel');
$this->StundeModel->addOrder('stunde');
return $this->StundeModel->load();
}
/**
* Validaton checks performed on post data.
*
* @param $post
* @return array|stdClass
* @throws Exception
*/
private function _validate($post)
{
if (isEmptyString($post['mitarbeiter_uid']))
{
return (error('LektorIn fehlt'));
}
if (isEmptyString($post['bezeichnung']))
{
return (error('Notiz fehlt'));
}
if (isEmptyString($post['vondatum']))
{
return error('Startdatum fehlt');
}
if (isEmptyString($post['bisdatum']))
{
return error('Endedatum fehlt');
}
if (new DateTime($post['bisdatum']) < new DateTime($post['vondatum']))
{
return error('Endedatum darf nicht VOR dem Startdatum liegen');
}
// Check bisstunde not after vonstunde within same day
if (new DateTime($post['bisdatum']) == new DateTime($post['vondatum']))
{
if (is_numeric($post['vonstunde']) && is_numeric($post['bisstunde'])
&& $post['bisstunde'] < $post['vonstunde'])
{
return error('Am gleichen Tag darf Endstunde nicht VOR der Startstunde liegen');
}
}
// Check dates are > then start of actual Studiensemester
$result = $this->StudiensemesterModel->getAkt();
$studsemStart = hasData($result) ? getData($result)[0]->start : '';
if (new DateTime($post['vondatum']) < new DateTime($studsemStart) ||
new DateTime($post['bisdatum']) < new DateTime($studsemStart))
{
return error('Start- und Endedatum können nur für das aktuelle oder künftige Studiensemester geplant werden');
}
return success();
}
/**
* Log information of deleted Zeitsperre into log table.
*
* @param $delZsp object of deleted Zeitsperre
* @param $delQry string of performed delete query
* @return mixed
* @throws Exception
*/
private function _logDeletion($delZsp, $delQry)
{
$beschreibung = 'Zeitverfügbarkeitlöschung '
. $delZsp->mitarbeiter_uid. ' '
. (new DateTime($delZsp->vondatum))->format('d.m.Y')
. (is_null($delZsp->vonstunde) ? '(*)' : '('. $delZsp->vonstunde. ')')
. '-'
. (new DateTime($delZsp->bisdatum))->format('d.m.Y')
. (is_null($delZsp->bisstunde) ? '(*)' : '('. $delZsp->bisstunde. ')')
. '';
$this->load->model('system/Log_model', 'LogModel');
return $this->LogModel->insert(array(
'mitarbeiter_uid' => $this->_uid,
'beschreibung' => substr($beschreibung, 0, 64),
'sql' => $delQry
));
}
}
@@ -125,9 +125,9 @@ class InfoCenter extends Auth_Controller
'zgvStatusUpdate' => 'lehre/zgvpruefung:rw',
'saveAbsage' => 'infocenter:rw',
'saveFreigabe' => 'infocenter:rw',
'getNotiz' => 'infocenter:r',
'getNotiz' => array('infocenter:r', 'lehre/zgvpruefung:r'),
'saveNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
'updateNotiz' => 'infocenter:rw',
'updateNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
'reloadZgvPruefungen' => 'infocenter:r',
'reloadMessages' => 'infocenter:r',
'reloadDoks' => 'infocenter:r',
@@ -4,6 +4,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
class ZGVUeberpruefung extends Auth_Controller
{
const BERECHTIGUNG_KURZBZ = 'lehre/zgvpruefung';
/**
* Constructor
*/
@@ -12,14 +14,15 @@ class ZGVUeberpruefung extends Auth_Controller
// Set required permissions
parent::__construct(
array(
'index' => 'lehre/zgvpruefung:r',
'getZgvStatusByPrestudent' => 'lehre/zgvpruefung:r'
'index' => self::BERECHTIGUNG_KURZBZ.':r',
'getZgvStatusByPrestudent' => self::BERECHTIGUNG_KURZBZ.':r'
)
);
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
$this->load->library('WidgetLib');
$this->load->library('PermissionLib');
$this->setControllerId();
$this->loadPhrases(
@@ -31,7 +34,14 @@ class ZGVUeberpruefung extends Auth_Controller
public function index()
{
$this->load->view('system/infocenter/infocenterZgvUeberpruefung.php');
$oeKurzbz = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_KURZBZ);
if (!$oeKurzbz)
show_error('Keine Berechtigung.');
$data['oeKurz'] = $oeKurzbz;
$this->load->view('system/infocenter/infocenterZgvUeberpruefung.php', $data);
}
public function getZgvStatusByPrestudent()
+1 -1
View File
@@ -74,7 +74,7 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm
$body = _parseMailContent('Sancho_Mail_Template', $layout);
// Send mail
$ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true);
return $ci->maillib->send($from, $to, $subject, $body, $alias = '', $cc, $bcc, $altMessage = '', $bulk = true, $autogenerated = true);
}
/**
+9 -8
View File
@@ -560,7 +560,7 @@ class Prestudent_model extends DB_Model
o.bezeichnung,
(CASE
WHEN sg.typ = \'b\' THEN ps.prestudent_id
WHEN sg.typ = \'m\' THEN p.prestudent_id
WHEN sg.typ = \'m\' THEN ps.prestudent_id
ELSE NULL
END) AS prestudent_id
FROM public.tbl_prestudent p
@@ -581,7 +581,7 @@ class Prestudent_model extends DB_Model
return $this->execQuery($query, array($person_id));
}
/**
* Get latest ZGV Bezeichnung of Prestudent.
*
@@ -593,19 +593,19 @@ class Prestudent_model extends DB_Model
{
show_error('Prestudent_id is not numeric.');
}
$language_index = getUserLanguage() == 'German' ? 0 : 1;
$this->addSelect('
COALESCE(
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $language_index . ',
array_to_json(zgv.bezeichnung::varchar[])->>' . $language_index . '
) AS bezeichnung'
);
$this->addJoin('bis.tbl_zgv zgv', 'zgv_code', 'LEFT');
$this->addJoin('bis.tbl_zgvmaster zgvmaster', 'zgvmas_code', 'LEFT');
return $this->loadWhere(array(
'prestudent_id' => $prestudent_id
));
@@ -618,8 +618,9 @@ class Prestudent_model extends DB_Model
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE ps.person_id = ?
AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ?
AND UPPER(so.studiengangkurzbzlang || ':' || sp.orgform_kurzbz) = ?
AND pss.studiensemester_kurzbz = ?
AND";
@@ -629,7 +630,7 @@ class Prestudent_model extends DB_Model
$query .= " NOT EXISTS";
$query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss
JOIN public.tbl_prestudent sps USING(prestudent_id)
JOIN public.tbl_prestudent sps USING(prestudent_id)
WHERE sps.prestudent_id = ps.prestudent_id
AND spss.bewerbung_abgeschicktamum IS NOT NULL)";
@@ -42,6 +42,34 @@ class Projektbetreuer_model extends DB_Model
}
}
/**
* Gets Betreuer of a certain Type of a Projektarbeit.
* Returns one row for each person.
* @param int $projektarbeit_id
* @param string $betreuerart_kurzbz
* @return array success with number of Betreuer or error
*/
public function getBetreuerOfProjektarbeit($projektarbeit_id, $betreuerart_kurzbz)
{
$qry = "SELECT DISTINCT ON (pers.person_id) pers.person_id, betreuerart_kurzbz, vorname, nachname,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
anrede, titelpre, titelpost, gebdatum, geschlecht, pa.projekttyp_kurzbz,
ben.uid, ben.alias, ma.personalnummer, mitarbeiter_uid, student_uid
FROM lehre.tbl_projektarbeit pa
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
JOIN public.tbl_person pers USING (person_id)
LEFT JOIN public.tbl_benutzer ben USING (person_id)
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
WHERE ben.aktiv
AND projektarbeit_id = ?
AND betreuerart_kurzbz = ?
ORDER BY pers.person_id, CASE WHEN ma.mitarbeiter_uid IS NULL THEN 1 ELSE 0 END, /*Mitarbeiter account first*/
CASE WHEN ben.uid IS NULL THEN 1 ELSE 0 END, /*user with account first*/
ben.insertamum";
return $this->execQuery($qry, array($projektarbeit_id, $betreuerart_kurzbz));
}
/**
* Get Projektbetreuer data by authentification token
* @param $zugangstoken
@@ -60,4 +88,83 @@ class Projektbetreuer_model extends DB_Model
return $this->execQuery($qry, array($zugangstoken));
}
/**
* Holt Zweitbegutachter einer Projektarbeit mit Mail.
* @param $erstbegutachter_person_id int person_id des Erstbegutachters
* @param $projektarbeit_id int
* @param $student_uid string uid des Studenten der Arbeit abgibt
* @return object | bool
*/
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid)
{
$qry_betr = "SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum
FROM lehre.tbl_projektbetreuer betr
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
AND betr.projektarbeit_id = ?
AND parb.student_uid = ?
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ?
AND betreuerart_kurzbz = 'Erstbegutachter'
AND projektarbeit_id = betr.projektarbeit_id
)
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
ORDER BY betr.insertamum DESC
LIMIT 1";
return $this->execQuery($qry_betr, array($projektarbeit_id, $student_uid, $erstbegutachter_person_id));
}
/**
* Generiert neuen Token für externen Zweitbetreuer.
* @param int $zweitbegutachter_person_id
* @param int $projektarbeit_id
* @return array
*/
public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id)
{
$betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id
FROM lehre.tbl_projektbetreuer
JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_benutzer USING(person_id)
WHERE projektarbeit_id = ?
AND tbl_projektbetreuer.person_id = ?
AND betreuerart_kurzbz = 'Zweitbegutachter'
LIMIT 1";
$betreueruidres = $this->execQuery($betreuerUidQry, array($projektarbeit_id, $zweitbegutachter_person_id));
if (!hasData($betreueruidres))
return error('Zweitbegutachter nicht gefunden');
$row_betr = getData($betreueruidres)[0];
if (!isset($row_betr->uid))
{
do {
$token = generateToken(16);
$qry_tokencheck = $this->load(array('zugangstoken' => $token));
} while(hasData($qry_tokencheck));
$result = $this->update(
array('projektarbeit_id' => $projektarbeit_id,
'person_id' => $row_betr->person_id,
'betreuerart_kurzbz' => 'Zweitbegutachter'),
array('zugangstoken' => $token,
'zugangstoken_gueltigbis' => date('Y-m-d', strtotime('+1 year')))
);
return $result;
}
else
return success("Account vorhanden, kein Token benötigt");
}
}
@@ -495,11 +495,12 @@ class Studiengang_model extends DB_Model
public function getStudiengaengeWithOrgForm($typ, $semester)
{
$query = "SELECT DISTINCT (UPPER(sg.typ || sg.kurzbz || ':' || sp.orgform_kurzbz)) AS Studiengang
$query = "SELECT DISTINCT (UPPER(so.studiengangkurzbzlang || ':' || sp.orgform_kurzbz)) AS Studiengang
FROM public.tbl_studiengang sg
JOIN lehre.tbl_studienordnung USING (studiengang_kz)
JOIN lehre.tbl_studienplan sp USING (studienordnung_id)
JOIN lehre.tbl_studienplan_semester spsem USING (studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE sp.aktiv = TRUE AND sg.aktiv = TRUE AND sg.typ IN ?
AND spsem.studiensemester_kurzbz = ?
ORDER BY Studiengang";
@@ -13,6 +13,20 @@ class Studiensemester_model extends DB_Model
$this->hasSequence = false;
}
/**
* Get actual Studiensemester.
*
* @return array
*/
public function getAkt()
{
return $this->loadWhere(array(
'start <= ' => 'NOW()',
'ende >= ' => 'NOW()'
)
);
}
// Get next study semester
public function getNext()
{
@@ -167,15 +181,13 @@ class Studiensemester_model extends DB_Model
if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d')))
return success(array());
$query = "SELECT *
FROM public.tbl_studiensemester
WHERE
(ende > ?::date AND start < ?::date)
OR start = ?::date
OR ende = ?::date
ORDER BY start DESC";
$query = "
SELECT *
FROM public.tbl_studiensemester
WHERE ( ?::date < ende AND ?::date > start )
ORDER BY start DESC";
return $this->execQuery($query, array($from, $to, $from, $to));
return $this->execQuery($query, array($from, $to));
}
/**
@@ -61,4 +61,98 @@ class Stundenplandev_model extends DB_Model
return $this->execQuery($qry, $parametersArray);
}
/**
* Get Stundenplan data.
*
* @param null $lehrveranstaltung_id
* @param null $studiensemester_kurzbz
* @param null $lehreinheit_id
* @param null $mitarbeiter_uid
* @param null $student_uid
* @param false $nurBevorstehende If true, only future data is retrieved.
* @return array|false|stdClass|null
*/
public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
{
$params = array();
$qry = "SELECT
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
array_agg(
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
array_agg(ort_kurzbz) as orte,
array_agg(titel) as titel
FROM
lehre.tbl_stundenplandev as stpl
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
WHERE ";
if ($lehrveranstaltung_id != '')
{
$qry.="
lehreinheit_id IN (
SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id = ?
AND studiensemester_kurzbz = ?
)";
$params[]= $lehrveranstaltung_id;
$params[]= $studiensemester_kurzbz;
}
elseif ($lehreinheit_id!='')
{
$qry.=" lehreinheit_id = ?";
$params[]= $lehreinheit_id;
}
elseif ($mitarbeiter_uid != '')
{
$qry.= "
mitarbeiter_uid = ?
AND lehreinheit_id IN (
SELECT lehreinheit_id
FROM lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
WHERE mitarbeiter_uid = ?
AND studiensemester_kurzbz IN ( ? )
)";
$params[] = $mitarbeiter_uid;
$params[] = $mitarbeiter_uid;
$params[] = $studiensemester_kurzbz;
}
elseif ($student_uid != '')
{
$qry.="
lehreinheit_id IN (
SELECT lehreinheit_id
FROM campus.vw_student_lehrveranstaltung
WHERE uid = ?
AND studiensemester_kurzbz = ?
)";
$params[] = $student_uid;
$params[] = $studiensemester_kurzbz;
}
else
return false;
if($nurBevorstehende)
{
$qry.= " AND stpl.datum >= NOW()::date ";
}
$qry.= "
GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id
";
return $this->execQuery($qry, $params);
}
}
@@ -12,6 +12,47 @@ class Zeitsperre_model extends DB_Model
$this->pk = 'zeitsperre_id';
}
/**
* Save or update Zeitsperre.
*
* @param $zeitsperretyp_kurzbz
* @param $mitarbeiter_uid
* @param $vonDatum
* @param $bisDatum
* @param null $vonStunde
* @param null $bisStunde
* @param null $bezeichnung
* @param null $vertretung_uid
* @param null $erreichbarkeit_kurzbz
* @param null $freigabeamum
* @param null $freigabevon
* @return array
*/
public function save($zeitsperretyp_kurzbz, $mitarbeiter_uid, $vonDatum, $bisDatum,
$vonStunde = null, $bisStunde = null, $bezeichnung = null, $vertretung_uid = null,
$erreichbarkeit_kurzbz = null, $freigabeamum = null, $freigabevon = null)
{
return $this->insert(array(
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
'mitarbeiter_uid' => $mitarbeiter_uid,
'vondatum' => $vonDatum,
'bisdatum' => $bisDatum,
'vonstunde' => $vonStunde,
'bisstunde' => $bisStunde,
'bezeichnung' => $bezeichnung,
'vertretung_uid' => $vertretung_uid,
'insertvon' => getAuthUID(),
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
'freigabeamum' => $freigabeamum,
'freigabevon' => $freigabevon
));
}
/**
* Delete Zeitsperre.
* @return array|stdClass|null
*/
public function deleteEntriesForCurrentDay()
{
$today = date('Y-m-d');
@@ -0,0 +1,14 @@
<?php
class Zeitwunsch_gueltigkeit_model extends DB_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
$this->dbTable = 'campus.tbl_zeitwunsch_gueltigkeit';
$this->pk = 'zeitwunsch_gueltigkeit_id';
}
}
@@ -12,7 +12,14 @@ class Variablenname_model extends DB_Model
) sem
WHERE start > now()
LIMIT 1;',
'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1'
'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1;',
'projektuebersicht_studiensemester' => 'SELECT studiensemester_kurzbz FROM (
SELECT DISTINCT ON (studienjahr_kurzbz) start, studiensemester_kurzbz
FROM public.tbl_studiensemester
ORDER BY studienjahr_kurzbz, start
) sem
WHERE start > now()
LIMIT 1;'
);
/**
@@ -26,7 +26,8 @@ $this->load->view(
'neu',
'maxZeichen',
'errorBestaetigungFehlt',
'systemfehler'
'systemfehler',
'errorDokumentZuGross'
),
'anrechnung' => array(
'deadlineUeberschritten',
@@ -179,7 +180,7 @@ $this->load->view(
<div class="form-inline panel-body">
<div class="form-group">
<input type="file" id="requestAnrechnung-uploadfile"
name="uploadfile" accept=".pdf" size="50"
name="uploadfile" accept=".pdf" size="50" data-maxsize="<?php echo (int)ini_get('upload_max_filesize') * 1024 ?>"
required>
</div>
<span id="requestAnrechnung-uploadTooltip" data-toggle="tooltip" data-placement="right"
@@ -0,0 +1,166 @@
<?php
$this->load->view(
'templates/FHC-Header',
array(
'title' => 'Zeitverfuegbarkeit verwalten',
'jquery' => true,
'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'momentjs' => true,
'ajaxlib' => true,
'tabulator' => true,
'tablewidget' => true,
'navigationwidget' => true,
'sbadmintemplate' => true,
'phrases' => array(
'global' => array(
'bis',
'notiz'
),
'ui' => array(
'systemfehler',
'keineDatenVorhanden',
'von',
'bitteWaehlen',
'speichern',
'loeschen',
'abbrechen'
),
'lehre' => array(
'lektor'
)
),
'widgets' => true,
'dialoglib' => true,
'customJSs' => array(
'public/js/bootstrapper.js',
'public/js/lehre/lvplanung/zverfueg.js'
)
)
);
?>
<body>
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
<div id="page-wrapper">
<div class="container-fluid">
<!-- title -->
<div class="row">
<div class="col-lg-12 page-header">
<h3>Zeitverf&uuml;gbarkeiten verwalten<small> | Punktuelle Zeitverfügbarkeiten von Lehrenden für die LV-Planung verwalten</small></h3>
</div>
</div>
<!-- form -->
<div class="row">
<div class="col-lg-12">
<form id="form-zeitverfuegbarkeit" class="form-horizontal">
<input type="hidden" id="studsemStart" value="<?php echo $studsemStart ?>">
<input type="hidden" id="zeitsperre_id" name="zeitsperre_id" value="">
<div class="form-group">
<label for="mitarbeiter_uid" class="col-sm-1 control-label">LektorIn: </label>
<div class="col-sm-3">
<select id="mitarbeiter_uid" name="mitarbeiter_uid" class="form-control select-w500" required>
<option value="" >
<?php echo $this->p->t('ui', 'bitteWaehlen'); ?>
</option>
<?php foreach ($lektor_arr as $lektor) : ?>
<option value="<?php echo $lektor->mitarbeiter_uid ?>">
<?php echo $lektor->nachname. ' '. $lektor->vorname ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group">
<label for="zverfueg" class="col-sm-1 control-label">Grund: </label>
<div class="col-sm-3">
<input type="text" id="zeitsperretyp_kurzbz" value="Zeitverf&uuml;gbarkeit" name="zeitsperretyp_kurzbz" readonly />
</div>
</div>
<div class="form-group">
<label for="bezeichnung" class="col-sm-1 control-label">Notiz: </label>
<div class="col-sm-3">
<textarea type="" id="bezeichnung" name="bezeichnung" value="" required></textarea>
</div>
</div>
<div class="form-group">
<label for="vondatum" class="col-sm-1 control-label">Von: </label>
<div class="col-sm-3">
<input type="date" id="vondatum" name="vondatum" class="form-control zverfueg-datepicker" required>
</div>
<label for="vonstunde" class="col-sm-1 control-label">Stunde (inkl.): </label>
<div class="col-sm-3">
<select id="vonstunde" name="vonstunde" class="form-control select-w500">
<option value="" >*</option>
<?php foreach ($stunde_arr as $stunde) : ?>
<option value="<?php echo $stunde->stunde ?>">
<?php echo $stunde->stunde.
' ['.
(new DateTime($stunde->beginn))->format('H:i'). ' - '.
(new DateTime($stunde->ende))->format('H:i').
']' ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group">
<label for="bisdatum" class="col-sm-1 control-label">Bis: </label>
<div class="col-sm-3">
<input type="date" id="bisdatum" name="bisdatum" class="form-control zverfueg-datepicker" required>
</div>
<label for="bisstunde" class="col-sm-1 control-label">Stunde (inkl.): </label>
<div class="col-sm-3">
<select id="bisstunde" name="bisstunde" class="form-control select-w500">
<option value="" >*</option>
<?php foreach ($stunde_arr as $stunde) : ?>
<option value="<?php echo $stunde->stunde ?>">
<?php echo $stunde->stunde.
' ['.
(new DateTime($stunde->beginn))->format('H:i'). ' - '.
(new DateTime($stunde->ende))->format('H:i').
']' ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="col-sm-8">
<button type="submit" id="btn-save" class="btn btn-primary btn-w200 pull-right">
<?php echo ucfirst($this->p->t('ui', 'speichern')); ?>
</button>
<button type="button" id="btn-delete" class="btn btn-danger btn-w200 btn-mr5 pull-right" disabled
data-toggle="tooltip" data-placement="right"
title="Zum Löschen LektorIn aus Tabelle wählen">
<?php echo ucfirst($this->p->t('ui', 'loeschen')); ?>
</button>
<button type="reset" id="btn-break" class="btn btn-default btn-w200 btn-mr5 pull-right">
<?php echo ucfirst($this->p->t('ui', 'abbrechen')); ?>
</button>
</div>
</form>
</div>
</div>
<!-- data table -->
<div class="row">
<div class="col-lg-12">
<?php $this->load->view('lehre/lvplanung/adminZeitverfuegbarkeitData.php'); ?>
</div>
</div>
</div><!-- end container -->
</div><!-- end page-wrapper -->
<br>
</body>
<?php $this->load->view('templates/FHC-Footer'); ?>
@@ -0,0 +1,70 @@
<?php
$STUDIENGANG_KZ_ARR = $studiengang_kz_arr; // stg the user is entitled to administrate
$qry = '
SELECT * FROM (
SELECT DISTINCT ON (zeitsperre_id, zsp.mitarbeiter_uid) zeitsperre_id, zsp.mitarbeiter_uid,
concat_ws(\' \', nachname, vorname) AS "lektor",
vondatum, vonstunde, bisdatum, bisstunde, zsp.bezeichnung
FROM public.tbl_person
JOIN public.tbl_benutzer b USING (person_id)
JOIN public.tbl_mitarbeiter ma ON (ma.mitarbeiter_uid = b.uid)
JOIN lehre.tbl_lehreinheitmitarbeiter lema ON (lema.mitarbeiter_uid = b.uid)
JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id)
JOIN public.tbl_studiensemester ss USING (studiensemester_kurzbz)
JOIN campus.tbl_zeitsperre zsp ON zsp.mitarbeiter_uid = lema.mitarbeiter_uid
WHERE lv.studiengang_kz IN ('. implode (',', $STUDIENGANG_KZ_ARR). ')
AND b.aktiv
AND zsp.vondatum >= ss.start
AND zeitsperretyp_kurzbz = \'ZVerfueg\'
ORDER BY zeitsperre_id, zsp.mitarbeiter_uid
) as tmp
ORDER BY vondatum DESC
';
$filterWidgetArray = array(
'query' => $qry,
'tableUniqueId' => 'adminZeitverfuegbarkeit',
'requiredPermissions' => 'lehre/zeitverfuegbarkeit',
'datasetRepresentation' => 'tabulator',
'columnsAliases' => array(
'ZeitsperreID',
'UID',
ucfirst($this->p->t('lehre', 'lektor')),
ucfirst($this->p->t('ui', 'von')),
'VonStunde',
ucfirst($this->p->t('global', 'bis')),
'BisStunde',
ucfirst($this->p->t('global', 'notiz'))
),
'datasetRepOptions' => '{
layout: "fitColumns", // fit columns to width of table
autoResize: false, // prevent auto resizing of table (false to allow adapting table size when cols are (de-)activated
headerFilterPlaceholder: " ",
index: "zeitsperre_id", // assign specific column as unique id (important for row indexing)
selectable: 1, // allow row selection
tableWidgetHeader: false,
rowSelected: function(row) {
func_rowSelected(row);
},
rowDeselected: function(row) {
func_rowDeselected(row);
}
}', // tabulator properties
'datasetRepFieldsDefs' => '{
zeitsperre_id: {visible:false},
mitarbeiter_uid: {visible: true, headerFilter:"input"},
lektor: {visible: true, headerFilter:"input"},
vondatum: {visible: true, headerFilter:"input"},
vonstunde: {visible: true, headerFilter:"input"},
bisdatum: {visible: true, headerFilter:"input"},
bisstunde: {visible: true, headerFilter:"input"},
bezeichnung: {visible: true, headerFilter:"input"}
}', // col properties
);
echo $this->widgetlib->widget('TableWidget', $filterWidgetArray);
?>
@@ -65,7 +65,7 @@
if (!isset($formalReadonly)) :
?>
<td>
<input type="checkbox" class="form-check-input prchbox"
<input type="checkbox" class="form-check-input prchbox" autocomplete="off"
id="prchkbx_<?php echo $dokument->akte_id ?>" <?php echo $geprueft ?>>
<span id="formalgeprueftam_<?php echo $dokument->akte_id ?>">
<?php echo isset($dokument->formal_geprueft_amum) ? date_format(date_create($dokument->formal_geprueft_amum), 'd.m.Y') : ''; ?>
@@ -14,7 +14,7 @@ $query = '
ps.prestudent_id AS "PreStudentID",
p.vorname AS "Vorname",
p.nachname AS "Nachname",
sg.kurzbzlang as "Studiengang",
so.studiengangkurzbzlang as "Studiengang",
pss.insertamum AS "AbgewiesenAm",
(
SELECT l.zeitpunkt
@@ -43,6 +43,8 @@ $query = '
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_person p USING(person_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .'
AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND (sg.typ IN ('. $STUDIENGANG_TYP .')
@@ -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\', \'Interessent rejected\', \'Attempt to register with existing mailadress\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
$LOGDATA_NAME_PARKED = '\'Parked\'';
$LOGDATA_NAME_ONHOLD = '\'Onhold\'';
$LOGTYPE_KURZBZ = '\'Processstate\'';
@@ -137,11 +137,12 @@
LIMIT 1
) AS "AnzahlAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NOT NULL
-- AND pss.bestaetigtam IS NULL
@@ -162,11 +163,12 @@
LIMIT 1
) AS "StgAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NULL
AND pss.bestaetigtam IS NULL
@@ -214,11 +216,12 @@
LIMIT 1
) AS "AnzahlStgNichtAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
AND pss.bewerbung_abgeschicktamum IS NULL
AND ps.person_id = p.person_id
@@ -5,7 +5,7 @@
$INTERESSENT_STATUS = '\'Interessent\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
$REJECTED_STATUS = '\'Abgewiesener\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
@@ -106,11 +106,12 @@ $query = '
LIMIT 1
) AS "AnzahlAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || sp.orgform_kurzbz)), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NOT NULL
AND ps.person_id = p.person_id
@@ -128,11 +129,12 @@ $query = '
LIMIT 1
) AS "StgAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
AND ps.person_id = p.person_id
@@ -5,7 +5,7 @@
$INTERESSENT_STATUS = '\'Interessent\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
$ORG_NAME = '\'InfoCenter\'';
@@ -85,11 +85,12 @@ $query = '
LIMIT 1
) AS "AnzahlAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || sp.orgform_kurzbz)), \', \')
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NOT NULL
AND ps.person_id = p.person_id
@@ -4,11 +4,6 @@ $APP = '\'infocenter\'';
$INTERESSENT_STATUS = '\'Interessent\'';
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$oeKurz = $rechte->getOEkurzbz('lehre/zgvpruefung');
$oeKurz = '\''. implode('\',\'', $oeKurz) . '\'';
$query = '
+26 -14
View File
@@ -120,21 +120,28 @@ if(!$projektarbeit_obj->load($projektarbeit_id))
$titel = $projektarbeit_obj->titel;
$student_uid = $projektarbeit_obj->student_uid;
// paarbeit sollte nur ab SS2021 online bewertet werden
$qry_sem="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
LIMIT 1";
$result_sem=$db->db_query($qry_sem);
$num_rows_sem = $db->db_num_rows($result_sem);
if($num_rows_sem < 0)
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
// Endupload sollte vor Benotung durchgeführt worden sein
$qry_endupload="SELECT 1
FROM campus.tbl_paabgabe
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND paabgabetyp_kurzbz='end'
AND abgabedatum IS NOT NULL
LIMIT 1";
$result_endupload=$db->db_query($qry_endupload);
$num_rows_endupload = $db->db_num_rows($result_endupload);
if($num_rows_endupload < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerErmittelnEnduploadProjektarbeit')."</font><br>&nbsp;";
}
// Zweitbegutachter holen
if($betreuerart=="Erstbegutachter")
{
@@ -457,7 +464,11 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam))
$htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
$htmlstr .= "<td width=10% align=center>";
if ($num_rows_sem >= 1)
$semester_benotbar = $num_rows_sem >= 1;
$endupload_vorhanden = $num_rows_endupload >= 1;
if ($semester_benotbar && $endupload_vorhanden)
{
$htmlstr .= "<form action='../../../index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung' title='Benotungsformular' target='_blank' method='GET'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
@@ -466,9 +477,10 @@ if ($num_rows_sem >= 1)
}
else
{
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
$htmlstr .= "<form action='javascript:void(0);'>";
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$p->t('abgabetool/aeltereParbeitBenoten')."'
alt='".$p->t('abgabetool/aeltereParbeitBenoten')."' disabled>";
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$quick_info."'
alt='".$quick_info."' disabled>";
$htmlstr .= "</form>";
}
$htmlstr .= "</td>";
+3 -12
View File
@@ -423,18 +423,9 @@ if($command=="update" && $error!=true)
}
else
{
// paarbeit sollte nur ab SS2021 online bewertet werden
$qry_sem="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
LIMIT 1";
$result_sem=$db->db_query($qry_sem);
$num_rows_sem = $db->db_num_rows($result_sem);
if($num_rows_sem < 0)
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
+3 -2
View File
@@ -224,8 +224,9 @@ if ($result = $db->db_query($qry)) {
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->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '') && $row->von < $stsemdatumbis
&& (anzahlTage($row->von, $row->bis) >= 30)) //Outgoing
$zusatz .= '(o)(ab '. $datum->formatDatum($row->von, 'd.m.Y'). ')';
if ($row->note == 6) //angerechnet
$zusatz .= '(ar)';
+44 -27
View File
@@ -38,6 +38,8 @@ require_once('../../../include/phrasen.class.php');
$uid = get_uid();
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -112,6 +114,12 @@ else
$format_highlight->setBorder(1);
$format_highlight->setBorderColor('white');
$format_highlightright=& $workbook->addFormat();
$format_highlightright->setFgColor(15);
$format_highlightright->setBorder(1);
$format_highlightright->setBorderColor('white');
$format_highlightright->setAlign('right');
$format_border_bottom =& $workbook->addFormat();
$format_border_bottom ->setBottom(2);
$format_border_bottom->setBold();
@@ -200,27 +208,32 @@ else
$stsemdatumvon = $stsem_obj->start;
$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,tbl_mobilitaet.mobilitaetstyp_kurzbz,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN '1' ELSE '' END) as doubledegree
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)
$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,tbl_mobilitaet.mobilitaetstyp_kurzbz,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN '1' ELSE '' END) as doubledegree,
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung
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)
LEFT JOIN lehre.tbl_note USING(note)
WHERE
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
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,18 +256,22 @@ else
$inc=' (i)';
else
$inc='';
if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing
$inc.=' (o)';
if($elem->note==6) //angerechnet
if($elem->bisio_id != '' && $elem->status != 'Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis == '')
&& $elem->von < $stsemdatumbis && (anzahlTage($elem->von, $elem->bis) >= 30))
$inc.=' (o)';
$note = $elem->note;
if($elem->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
{
$inc.=' (ar)';
$note='ar';
$inc.= '('. $elem->anmerkung. ')';
$note = $elem->anmerkung;
}
if ($elem->mobilitaetstyp_kurzbz !='' && $elem->doubledegree == 1) //dd-Program
{
$inc.=' (d.d.)';
$inc .=' (d.d.)';
}
$worksheet->write($lines,1,$elem->uid);
@@ -262,7 +279,7 @@ else
$worksheet->write($lines,3,$elem->vorname);
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
$worksheet->write($lines,6,$note,$format_highlight);
$worksheet->write($lines,6, $note, $format_highlightright);
$i++;
$lines++;
}
+15 -10
View File
@@ -266,14 +266,14 @@ function showHideBezeichnungDropDown()
if (dd.options[dd.selectedIndex].value == 'DienstV')
{
var str = '<select name="bezeichnung" class="dd_breit">';
str += '<option value="Eheschließung">a) Eigene Eheschließung</option>';
str += '<option value="Geburt eigenes Kind">b) Geburt eines Kindes der Ehefrau/Lebensgefährtin</option>';
str += '<option value="Heirat Kind/Geschwister">c) Eheschließung eines Kindes/eigener Geschwister</option>';
str += '<option value="Eigene Sponsion/Promotion">d) Teilnahme an eigener Sponsion/Promotion</option>';
str += '<option value="Lebensbedr. Erkrankung P/K/E">e) Lebensbedrohliche Erkrankung Partner/Kinder/Eltern</option>';
str += '<option value="Ableben P/K/E">f) Ableben Partner/Kinder/Elternteil</option>';
str += '<option value="Bestattung G/S/G">g) Teilnahme an Bestattung Geschwister/Schwiegereltern/eigener Großeltern</option>';
str += '<option value="Wohnungswechsel">h) Wohnungswechsel in eigenen Haushalt</option>';
str += '<option value="Eheschließung">a) Eigene Eheschließung (3 Tage)</option>';
str += '<option value="Geburt eigenes Kind">b) Geburt eines Kindes der Ehefrau/Lebensgefährtin (2 Tage)</option>';
str += '<option value="Heirat Kind/Geschwister">c) Eheschließung eines Kindes/eigener Geschwister (1 Tag)</option>';
str += '<option value="Eigene Sponsion/Promotion">d) Teilnahme an eigener Sponsion/Promotion (1 Tag)</option>';
str += '<option value="Lebensbedr. Erkrankung P/K/E">e) Lebensbedrohliche Erkrankung Partner/Kinder/Eltern (3 Tage)</option>';
str += '<option value="Ableben P/K/E">f) Ableben Partner/Kinder/Elternteil (3 Tage)</option>';
str += '<option value="Bestattung G/S/G">g) Teilnahme an Bestattung Geschwister/Schwiegereltern/eigener Großeltern (1 Tag)</option>';
str += '<option value="Wohnungswechsel">h) Wohnungswechsel in eigenen Haushalt (2 Tage)</option>';
str += '<option value="Bundesheer">i) Einberufung Bundesheer</option>';
str += '</select>';
@@ -690,7 +690,7 @@ if(count($zeit->result)>0)
<td>".(isset($row_vertretung->kurzbz)?$row_vertretung->kurzbz:'')."</td>
<td>".(isset($erreichbarkeit_arr[$row->erreichbarkeit])?$erreichbarkeit_arr[$row->erreichbarkeit]:'')."</td>
<td align='center'>".($row->freigabeamum!=''?'Ja':'')."</td>";
if ($row->zeitsperretyp_kurzbz == 'DienstV')
if ($row->zeitsperretyp_kurzbz == 'DienstV' || $row->zeitsperretyp_kurzbz == 'ZVerfueg')
$content_table .= '<td>&nbsp;</td>';
else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
$content_table .= '<td>&nbsp;</td>';
@@ -702,7 +702,7 @@ if(count($zeit->result)>0)
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id&informSupervisor=True' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
elseif($row->zeitsperretyp_kurzbz!='Urlaub')
elseif($row->zeitsperretyp_kurzbz!='Urlaub' && $row->zeitsperretyp_kurzbz != 'ZVerfueg')
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
@@ -762,6 +762,11 @@ if($result = $db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
if ($row->zeitsperretyp_kurzbz === 'ZVerfueg')
{
continue;
}
if($zeitsperre->zeitsperretyp_kurzbz == $row->zeitsperretyp_kurzbz)
$content_form.= "<OPTION value='$row->zeitsperretyp_kurzbz' selected>$row->beschreibung</OPTION>";
else
+637 -186
View File
@@ -18,6 +18,7 @@
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Cristina Hainberger <hainberg@technikum-wien.at>
*/
/**
* @brief bietet die Moeglichkeit zur Anzeige und
@@ -29,10 +30,15 @@ require_once('../../../include/globals.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/zeitwunsch.class.php');
require_once('../../../include/zeitwunsch_gueltigkeit.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/zeitaufzeichnung_gd.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/lehrstunde.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/sprache.class.php');
@@ -49,63 +55,27 @@ $uid = get_uid();
if(!check_lektor($uid))
die($p->t('global/keineBerechtigungFuerDieseSeite'));
$PHP_SELF = $_SERVER['PHP_SELF'];
if(isset($_GET['type']))
$type=$_GET['type'];
$datum_obj = new datum();
// Nächstes Studiensemester
$next_ss = new Studiensemester();
$next_ss->getNextStudiensemester();
// Aktuelles Studiensemester
$akt_ss = new Studiensemester();
$akt_ss->load($akt_ss->getAkt());
// Dropdown: Aktuelles/naechstes Studiensemester zum Bearbeiten
$selected_ss = (isset($_GET['stsem']) && is_string($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester
// Dropdown: Vergangene Studiensemester zum Kopieren
$selected_past_ss = (isset($_GET['pastStsem']) && is_string($_GET['pastStsem'])) ? $_GET['pastStsem'] : null; // Default: null
//Stundentabelleholen
if(! $result_stunde=$db->db_query('SELECT * FROM lehre.tbl_stunde ORDER BY stunde'))
die($db->db_last_error());
$num_rows_stunde=$db->db_num_rows($result_stunde);
// Zeitwuensche speichern
if (isset($type) && $type=='save')
{
$zw = new zeitwunsch();
for ($t=1;$t<7;$t++)
{
for ($i=0;$i<$num_rows_stunde;$i++)
{
$var='wunsch'.$t.'_'.$i;
if(!isset($_POST[$var]))
continue;
$gewicht=$_POST[$var];
$stunde=$i+1;
$zw->mitarbeiter_uid = $uid;
$zw->stunde = $stunde;
$zw->tag = $t;
$zw->gewicht = $gewicht;
$zw->updateamum = date('Y-m-d H:i:s');
$zw->updatevon = $uid;
if (!$zw->exists($uid, $stunde, $t))
{
$zw->new = true;
$zw->insertamum = date('Y-m-d H:i:s');
$zw->insertvon = $uid;
}
else
$zw->new = false;
if(!$zw->save())
echo $zw->errormsg;
}
}
}
$zw = new zeitwunsch();
if(!$zw->loadPerson($uid))
die($zw->errormsg);
$wunsch = $zw->zeitwunsch;
// Personendaten
$person = new benutzer();
if(!$person->load($uid))
@@ -114,11 +84,10 @@ if(!$person->load($uid))
$ma = new mitarbeiter($uid);
$fixangestellt = $ma->fixangestellt;
// Nächstes Studiensemester
$ss = new Studiensemester();
$ss->getNextStudiensemester();
$next_ss = $ss->studiensemester_kurzbz;
$current_ss = $ss->getakt();
// Check, ob Bearbeitung des ZW gesperrt ist.
// Gesperrt, wenn Lektor bereits zugewiesene LVs hat.
// Sperre in jeden Fall aufgehoben, wenn ein ZW kopiert wird. (denn ist eine eventuelle Sperre bereits manuell aufgehoben worden)
$isGesperrt = checkIsVerplant($uid, $selected_ss) && is_null($selected_past_ss); // boolean
// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern
if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
@@ -127,10 +96,10 @@ if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
$zeitaufzeichnung_gd->uid = $uid;
$zeitaufzeichnung_gd->studiensemester_kurzbz = $current_ss;
$zeitaufzeichnung_gd->studiensemester_kurzbz = $akt_ss->studiensemester_kurzbz;
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
$za_gd = new Zeitaufzeichnung_gd();
$za_gd->load($uid, $current_ss);
$za_gd->load($uid, $akt_ss->studiensemester_kurzbz);
if ($za_gd->uid)
{
echo 'Bereits eingetragen';
@@ -147,10 +116,10 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
$zeitaufzeichnung_gd->uid = $uid;
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss;
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss->studiensemester_kurzbz;
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
$za_gd = new Zeitaufzeichnung_gd();
$za_gd->load($uid, $next_ss);
$za_gd->load($uid, $next_ss->studiensemester_kurzbz);
if ($za_gd->uid)
{
echo 'Bereits eingetragen';
@@ -162,14 +131,302 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
}
// Zeitwuensche speichern
if (isset($_GET['type']) && $_GET['type'] == 'save')
{
// Letzte Zeitwunschgueltigkeit (ZWG) holen
$zwg = new Zeitwunsch_gueltigkeit();
$zwg->getByUID($uid, 1);
$lastZwg = !empty($zwg->result) ? $zwg->result[0] : null;
// Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft
$lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false;
$zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird
// Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden
if (is_null($lastZwg))
{
// Wenn ZW fuer naechstes Studiensemester ist
if ($selected_ss == $next_ss->studiensemester_kurzbz)
{
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
}
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
{
// Neue ZWG setzen: von = now(), bis offen lassen
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null);
}
}
// Wenn mindestens eine ZWG vorhanden
if (!is_null($lastZwg))
{
// Wenn Zeitwunsch fuer naechstes Studiensemester ist
if ($selected_ss == $next_ss->studiensemester_kurzbz)
{
// Wenn naechstes Studiensemester schon eine eigene ZWG hat
if ($lastZwgStartsNextSemester)
{
// Nur Zeitwunsch dieser ZWG updaten
$zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id;
}
// Wenn naechstes Studiensemester keine eigene ZWG hat
if (!$lastZwgStartsNextSemester)
{
// Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester
updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende);
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
}
}
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
{
/**
* Check, ob aktuelles Studiensemester eine ZWG hat.
* Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das
* aktuelle Studiensemester noch keine ZWG.
* */
$zwg = new Zeitwunsch_gueltigkeit();
$zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz);
$akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null;
// Keine ZWG fuer aktuelles Studiensemester vorhanden.
// Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN
if (is_null($akt_ss_zwg))
{
// Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende);
}
// ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER
if ((!is_null($akt_ss_zwg)))
{
// Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten
// Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird.
if ((new DateTime($akt_ss_zwg->von))->format('Y-m-d') == (new Datetime())->format('Y-m-d'))
{
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis);
$zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id;
}
else
{
// Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen:
// -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist)
// -> sonst ist bis null
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis);
// Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern
// NOTE: MUSS nach dem insert sein
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime('yesterday'))->format('Y-m-d H:i:s'));
}
}
}
}
// Insert Zeitwunsch mit Zeitwunsch ZWG ID
if (is_numeric($zw_zwg_id))
{
$zw = new zeitwunsch();
for ($t=1;$t<7;$t++)
{
for ($i=0;$i<$num_rows_stunde;$i++)
{
$var='wunsch'.$t.'_'.$i;
if(!isset($_POST[$var]))
continue;
$gewicht=$_POST[$var];
$stunde=$i+1;
$zw->mitarbeiter_uid = $uid;
$zw->stunde = $stunde;
$zw->tag = $t;
$zw->gewicht = $gewicht;
$zw->updateamum = date('Y-m-d H:i:s');
$zw->updatevon = $uid;
$zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id;
if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t))
{
$zw->new = true;
$zw->insertamum = date('Y-m-d H:i:s');
$zw->insertvon = $uid;
}
else
{
$zw->new = false;
}
if(!$zw->save())
echo $zw->errormsg;
}
}
}
// Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre
// deaktiviert. Bearbeitungssperre wird gesetzt, wenn isGesperrt true ist. Deshalb hier mit false überschreiben.
$isGesperrt = false;
}
/**
* Zeitwunschgueltigkeit fuer Tabelle holen.
* Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt.
* Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen:
* 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch)
* 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester
* 3: Default: Nächstes Studiensemesters
*/
$zwg = new zeitwunsch_gueltigkeit();
$tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss;
$zwg->getByStudiensemester($uid, $tmp_ss);
$zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW
/**
* Zeitwunsch fuer Tabelle holen
* Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer
* */
$zw = new zeitwunsch();
if (!$zw->loadByZWG($uid, $zwg_id))
{
die($zw->errormsg);
}
$wunsch = $zw->zeitwunsch;
/**
* Init ZWG Objekt zum Erstellen einer neuen ZWG
*/
function insertZWG($uid, $von, $bis)
{
$zwg = new Zeitwunsch_gueltigkeit();
$zwg->new = true;
$zwg->mitarbeiter_uid = $uid;
$zwg->von = $von;
$zwg->bis = $bis;
$zwg->insertvon = $uid;
if ($zwg->save())
{
return $zwg->zeitwunsch_gueltigkeit_id;
}
else
{
die($zwg->errormsg);
}
}
/**
* Init ZWG Objekt zum Updaten einer bestehenden ZWG
*/
function updateZWG($uid, $zwg_id, $bis)
{
$zwg = new Zeitwunsch_gueltigkeit();
$zwg->new = false;
$zwg->zeitwunsch_gueltigkeit_id = $zwg_id;
$zwg->mitarbeiter_uid = $uid;
$zwg->bis = $bis;
$zwg->updatevon = $uid;
if (!$zwg->save())
{
die($zwg->errormsg);
}
return;
}
/**
* Check, ob Lektor bereits zugewiesene LVs hat
* @param $uid
* @param $studiensemester_kurzbz
* @return bool|void
*/
function checkIsVerplant($uid, $studiensemester_kurzbz)
{
$lstd = new Lehrstunde();
if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true))
{
die($lstd->errormsg);
}
return empty($lstd->result) ? false : true;
}
/**
* Get Studiengaenge of STG assigend to LVs, to which lector is alredy assigend in
* the given Studiensemester.
*
* @param $uid
* @param $studiensemester_kurzbz
* @return array|void
*/
function getStgOfVerplant($uid, $studiensemester_kurzbz)
{
$stg_arr = array(); // Mail data for Studiengang
// Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit
$lstd = new Lehrstunde();
if (!$lstd->getStundenplanData(
'stundenplandev',
null,
$studiensemester_kurzbz,
null,
$uid,
null,
true)) //...but only from now on
{
die($lstd->errormsg);
}
// Loop through Stundenplan entries
foreach ($lstd->result as $row)
{
// Get LE of Stundenplan entry
$le = new Lehreinheit($row->lehreinheit_id);
// GET LV by LE of Stundenplan entry
$lv = new Lehrveranstaltung($le->lehrveranstaltung_id);
// Build Studiengang array
$stg_arr[] = $lv->studiengang_kz;
}
// Make Studiengang array unique
return array_unique($stg_arr);
}
/**
* Get Studiengang eMail Addresses.
* @param $stgKz_arr // Studiengang Kennzeichen Array
* @return array
*/
function getStgMail($stgKz_arr)
{
$stgMail_arr = array();
foreach($stgKz_arr as $stgKz)
{
$stg = new Studiengang($stgKz);
$stgMail_arr[]= $stg->email;
}
return $stgMail_arr;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $p->t('zeitwunsch/zeitwunsch');?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link href="../../../skin/flexcrollstyles.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
<script type="text/javascript">
// Pruefen ob nur die erlaubten Werte verwendet wurden
function checkvalues()
@@ -194,181 +451,375 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
else
return true;
}
$(function() {
// Bearbeitung deaktivieren, wenn Lektor zugewiesene LV im Studiensemester hat
const isGesperrt = $('input[name=isGesperrt]').val();
if (isGesperrt == 'true')
{
$('input[name=radioZWG]').attr("disabled", true);
$('input[name=submit]').attr("disabled", true);
}
// Bearbeitung aktivieren, wenn Lektor Aktivierungslink klickt
$('#bearbeitung-aktivieren').click(function(){
$('input[name=radioZWG]').attr("disabled", false);
$('input[name=submit]').attr("disabled", false);
$('#divChangeZWG').removeClass('hidden');
$('#divisGesperrt').addClass('hidden');
});
// Bei Wechsel von Studiensemester die Seite mit GET params neu laden
$('#stsem').change(function(){
let studiensemester = $('option:selected', this).val();
window.location = '?stsem=' + studiensemester;
});
// Bei Wechsel zwischen Zeitwunsch aendern / kopieren
$("input[name='radioZWG']").change(function(){
if ($(this).val() == 'copy')
{
$('#divCopyZWG').removeClass('hidden');
$('#divChangeZWG').addClass('hidden');
}
else
{
$('#divCopyZWG').addClass('hidden');
$('#divChangeZWG').removeClass('hidden');
}
});
// Bei Wahl von vergangenem Studiensemester die Seite mit GET params neu laden
$('#pastStsem').change(function(){
let stsem = $('#stsem option:selected').val()
let pastStsem = $('option:selected', this).val();
window.location = '?stsem='+ stsem + '&pastStsem=' + pastStsem;
});
// Alle Werte ind Zeitwunschtabelle auf 1 setzen
$('#empty-table').click(function(){
$('#table-zeitwunsch tr td input').each(function() {
$(this)
.val(1)
.parent().css('background-color', '#CCFFCC');
});
})
// Aenderungen in Zeitwunschtabelle zurücknehmen -> Seite neu laden
$('#reload-table').click(function(){
let studiensemester = $('option:selected', '#stsem').val();
window.location = '?stsem=' + studiensemester;
})
});
</script>
</head>
<body>
<div class="flexcroll" style="outline: none;">
<table>
<table class="table">
<?php if($fixangestellt && (defined('CIS_ZEITWUNSCH_GD') && CIS_ZEITWUNSCH_GD)): ?>
<!--Erklärung zu Pausen bei geteilten Arbeitszeiten-->
<tr>
<td>
<h1>Zustimmung zur Verplanung in geteilter Arbeitszeit</h1>
<h3>Zustimmung zur Verplanung in geteilter Arbeitszeit</h3>
<form action="">
<p>
<?php
echo $p->t('zeitwunsch/geteilteArbeitszeit');
echo '<br><br>';
$gd = new zeitaufzeichnung_gd();
$gd->load($uid, $current_ss);
$gd->load($uid, $akt_ss->studiensemester_kurzbz);
if ( ! $gd->uid )
{
echo '<br><br><h3>Zustimmung für '.$current_ss.': ';
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
echo '</h3><br><br><input type="submit" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
echo '<div class="row">';
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
echo '<div class="radio">';
echo '<b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': ';
echo '<label class="radio-inline">';
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
echo '</label>';
echo '<label class="radio-inline">';
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
echo '</label>';
echo '</div>';
echo '</div>';
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
echo '</div>';
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
echo '</div>';
echo '</div>';
}
else
{
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
echo '<br><br><h3>Zustimmung für '.$current_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
echo '<br><br><b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
}
$gd = new zeitaufzeichnung_gd();
$gd->load($uid, $next_ss);
$gd->load($uid, $next_ss->studiensemester_kurzbz);
if ( ! $gd->uid )
{
echo '<h3>Zustimmung für '.$next_ss.': ';
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
echo '</h3><br><br><input type="submit" name="submit" value="'.$p->t('global/speichern').'" style="float: right"><br>';
echo '<div class="row">';
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
echo '<div class="radio">';
echo '<b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': ';
echo '<label class="radio-inline">';
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
echo '</label>';
echo '<label class="radio-inline">';
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
echo '</label>';
echo '</div>';
echo '</div>';
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit" value="'.$p->t('global/speichern').'" style="float: right">';
echo '</div>';
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
echo '</div>';
echo '</div>';
}
else
{
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
echo '<h3>Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
echo '<br><b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
}
//var_dump($gd);
?>
</p>
</form>
<br><hr>
</td>
</tr>
<?php endif; ?>
<tr>
<td>
<h1><?php echo $p->t('zeitwunsch/zeitwunsch');?></h1>
<!--Auskommentiert von Kindl, da sich der Hilfetext nicht vom Anleitungtext auf der Seite unterscheidet
<td class="ContentHeader" align="right">
<A onclick="window.open('zeitwunsch_help.php','Hilfe', 'height=320,width=480,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');" class="hilfe" target="_blank">
<font class="ContentHeader">
<?php echo $p->t('zeitwunsch/help')?>&nbsp;
</font>
</A>
</td>-->
<?php
echo "<h2>".$p->t('zeitwunsch/zeitwunschVon')." $person->titelpre $person->vorname $person->nachname $person->titelpost<br/></h2>";
echo $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster')."<br/><br/>";
echo '<FORM name="zeitwunsch" method="post" action="zeitwunsch.php?type=save" onsubmit="return checkvalues()">
<TABLE>
<TR>';
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
for ($i=0;$i<$num_rows_stunde; $i++)
{
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
$beginn=substr($beginn,0,5);
$ende=$db->db_result($result_stunde,$i,'"ende"');
$ende=substr($ende,0,5);
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
}
// FORM Begin
echo '<form name="zeitwunsch" method="post" action="zeitwunsch.php?stsem='. $selected_ss. '&type=save" onsubmit="return checkvalues()">';
echo '<input type="hidden" name="uid" value="'. $uid. '">';
echo '<input type="hidden" name="isGesperrt" value="'. json_encode($isGesperrt). '">';
echo '</TR>';
// Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester
$next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
$akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
for ($j=1; $j<7; $j++)
{
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
for ($i=0;$i<$num_rows_stunde;$i++)
{
if (isset($wunsch[$j][$i+1]))
$index=$wunsch[$j][$i+1];
else
$index=1;
//$id='bgcolor';
//$id.=$index+3;
$bgcolor=$cfgStdBgcolor[$index+3];
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
}
echo '</TR>';
}
echo '<h3>'. $p->t('zeitwunsch/gueltigIm');
echo '<SELECT name="stsem" id="stsem">';
echo '<OPTION value="'.$next_ss->studiensemester_kurzbz.'"'. $next_ss_selected. '>'. $next_ss->studiensemester_kurzbz.'</OPTION>';
echo '<OPTION value="'.$akt_ss->studiensemester_kurzbz.'"'. $akt_ss_selected. '>'. $akt_ss->studiensemester_kurzbz.'</OPTION>';
echo '</SELECT>';
echo '</h3><br>';
echo '
</TABLE><br>
<INPUT type="hidden" name="uid" value="'.$uid.'">
<INPUT type="submit" name="Abschicken" value="'.$p->t('global/speichern').'">
';
// Tabelle Zeitwunsch-Semesterplan
echo '<table id="table-zeitwunsch" class="table table-default table-condensed table-bordered">';
// Tabelle Kopfzeile
echo '<tr>';
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
for ($i=0;$i<$num_rows_stunde; $i++)
{
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
$beginn=substr($beginn,0,5);
$ende=$db->db_result($result_stunde,$i,'"ende"');
$ende=substr($ende,0,5);
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
}
echo '</tr>';
// Tabelle Zellen
for ($j=1; $j<7; $j++)
{
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
for ($i=0;$i<$num_rows_stunde;$i++)
{
if (isset($wunsch[$j][$i+1]))
$index=$wunsch[$j][$i+1];
else
$index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden
if($zw->updateamum!='')
{
echo '<font size="x-small">'.$p->t('zeitwunsch/letzteAenderung').': '.$datum_obj->formatDatum($zw->updateamum,'d.m.Y H:i:s').' '.$p->t('zeitwunsch/von').' '.$zw->updatevon.'</font>';
}
?>
$bgcolor=$cfgStdBgcolor[$index+3];
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
}
echo '</TR>';
}
echo '</table>';
</FORM>
// Zeitwunsch aendern / kopieren
echo '<div class="row">';
echo '<div class="col-xs-12">';
echo '<span>'. $p->t('zeitwunsch/erklaerungstext'). '</span><br>';
echo '<hr>';
echo '</div>'; // end col-xs-12
echo '</div>'; // end row
<br>
echo '<div class="row">';
<h2><?php echo $p->t('zeitwunsch/erklärung');?>:</h2>
echo '<div class="col-xs-9">';
// Radiobuttons aendern / kopieren
$radioChangeChecked = is_null($selected_past_ss) ? 'checked' : '';
$radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : '';
<?php
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
?>
</a>
<P><?php echo $p->t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!<BR><BR>
</P>
<TABLE align=center>
<TR>
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
<TH>
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
</TH>
</TR>
<TR>
<TD>
<DIV align="right">2</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
</TR>
<TR>
<TD>
<DIV align="right">1</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
</TR>
<!--<TR>
<TD>
<DIV align="right">0</DIV>
</TD>
<TD>keine Bedeutung</TD>
</TR>-->
<TR>
<TD>
<DIV align="right">-1</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
</TR>
<TR>
<TD>
<DIV align="right">-2</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierAufGarKeinenFall');?></TD>
</TR>
</TABLE>
<h2><?php echo $p->t('zeitwunsch/folgendePunkteSindZuBeachten');?>:</h2>
<OL>
<LI><?php echo $p->t('zeitwunsch/verwendenSieDenWertNur');?></LI>
<LI><?php echo $p->t('zeitwunsch/sperrenSieNurTermine');?></LI>
<LI><?php echo $p->t('zeitwunsch/esSolltenFuerJedeStunde');?></LI>
</OL>
<P><?php echo $p->t('lvplan/fehlerUndFeedback');?> <A class="Item" href="mailto:<?php echo MAIL_LVPLAN;?>"><?php echo $p->t('lvplan/lvKoordinationsstelle');?></A>.</P>
</td>
</tr>
</table>
</div>
echo '<div class="radio">';
echo '<span class="text-uppercase"><b>'.$p->t('zeitwunsch/fuer', array($selected_ss)). '</b></span>';
echo '<label class="radio-inline">';
echo '<b><input type="radio" name="radioZWG" id="radioChangeZWG" value="change" '. $radioChangeChecked. '> '. $p->t('zeitwunsch/kopieren'). '</b>';
echo '</label>';
echo '<label class="radio-inline">';
echo '<b><input type="radio" name="radioZWG" id="radioCopyZWG" value="copy" '. $radioCopyChecked. '> '. $p->t('zeitwunsch/aendern'). '</b>';
echo '</label>';
if ($isGesperrt)
{
echo '<span class="label label-danger valign-top">'.$p->t('zeitwunsch/stundenBereitsVerplant', array($selected_ss)). '</span>';
}
echo '</div>';
echo '</div>'; // end col-xs-9
echo '<div class="col-xs-3" class="pull-left">';
echo '<span><small><a id="empty-table" style="cursor: pointer">'. $p->t('zeitwunsch/werteAuf1setzen'). '</a></small></span><br>';
echo '<span><small><a id="reload-table" style="cursor: pointer">'. $p->t('global/aenderungenZuruecksetzen'). '</a></small></span><br><br>';
echo '</div>'; // end col-xs-3
$divChangeHidden = !is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
$divCopyHidden = is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
$divisGesperrtHidden = $isGesperrt ? '' : 'hidden';
echo '<div id="divChangeZWG" class="'. $divChangeHidden . '">';
echo '<div class="col-xs-8 col-lg-7">';
echo '<span>' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .'</span>';
echo '</div>'; // end col
echo '<div class="col-xs-1 col-lg-2">';
// BLANK
echo '</div>'; // end col
echo '</div>'; // end divChangeZWG
echo '<div id="divCopyZWG" class="'. $divCopyHidden . '">';
echo '<div class="col-xs-7">';
echo '<span>' . $p->t('zeitwunsch/kopierenText') .'</span>';
echo '</div>'; // end col
$studiensemester = new Studiensemester();
$tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz;
$studiensemester->load($tmp_ss);
$zwg = new Zeitwunsch_gueltigkeit();
$zwg->getByUID($uid, 4, true, $studiensemester->ende);
$past_zwg_arr = $zwg->result;
echo '<div class="col-xs-2">';
echo '<select name="pastStsem" id="pastStsem" class="form form-control">';
echo '<OPTION value="">-- '. $p->t("global/bitteWaehlen").' --</OPTION>';
foreach($past_zwg_arr as $row)
{
$selected = $row->studiensemester_kurzbz == $selected_past_ss ? 'selected' : '';
echo '<option value="'. $row->studiensemester_kurzbz. '" '. $selected. '>'. $row->studiensemester_kurzbz. '</option>';
}
echo '</select>';
echo '</div>'; // end col
echo '</div>'; // end divCopyZWG
echo '<div id="divisGesperrt" class="'. $divisGesperrtHidden . '">';
// Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist
$stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss);
$stgMail_arr = getStgMail($stgKzOfVerplant_arr);
echo '<div class="col-xs-9">';
echo '<div class="panel panel-danger">';
echo '<div class="panel-body">';
echo '<span class="text-danger"><b>'. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': </b></span>';
echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, implode($stgMail_arr, '; '))). '
<a id="bearbeitung-aktivieren" style="cursor:pointer;">'. $p->t("zeitwunsch/bearbeitungAktivieren"). '</a><br>
<span><b>'. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . '</b></span>
</span>';
echo '</div>'; // end panel heading
echo '</div>'; // end panel
echo '</div>'; // end col
echo '</div>'; // end divisGesperrt
// Speichern - Button
echo '<div class="col-xs-3">';
echo '<input class="btn btn-default" style="width: 200px;" type="submit" name="submit" value="'.$p->t('global/speichern').'">';
echo '</div>';
echo '</div>'; // end row
echo '<hr>';
?>
</form>
<!-- Zeitwunsch Erklaerung -->
<div class="row">
<div class="col-xs-9">
<span><b><?php echo $p->t('zeitwunsch/folgendePunkteSindZuBeachten');?>:</b></span>
<UL class="unordered-list">
<LI><?php echo $p->t('zeitwunsch/verwendenSieDenWertNur');?></LI>
<LI><?php echo $p->t('zeitwunsch/sperrenSieNurTermine');?></LI>
<LI><?php echo $p->t('zeitwunsch/esSolltenFuerJedeStunde');?></LI>
</UL><br>
</div>
<div class="col-xs-3">
<br>
<TABLE class="table table-condensed table-default table-bordered" align=center>
<TR>
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
<TH>
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
</TH>
</TR>
<TR>
<TD style="background-color: <?php echo $cfgStdBgcolor[5]; ?>">
<DIV align="right">2</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
</TR>
<TR>
<TD style="background-color: <?php echo $cfgStdBgcolor[6]; ?>">
<DIV align="right">1</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
</TR>
<!--<TR>
<TD>
<DIV align="right">0</DIV>
</TD>
<TD>keine Bedeutung</TD>
</TR>-->
<TR>
<TD style="background-color: <?php echo $cfgStdBgcolor[2]; ?>">
<DIV align="right">-1</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
</TR>
<TR>
<TD style="background-color: <?php echo $cfgStdBgcolor[1]; ?>">
<DIV align="right">-2</DIV>
</TD>
<TD>&nbsp;&nbsp;<?php echo $p->t('zeitwunsch/hierAufGarKeinenFall');?></TD>
</TR>
</TABLE>
</div>
</div>
<!-- Zeitsperre -->
<div class="row">
<div class="col-xs-12">
<h4><?php echo $p->t('zeitsperre/zeitsperren');?>:</h4>
<?php
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
?></a>
</div>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>
+7
View File
@@ -313,5 +313,12 @@
},
"config": {
"bin-dir": "vendor/bin"
},
"require-dev": {
"squizlabs/php_codesniffer": "3.6.*",
"phpmd/phpmd": "2.*",
"phpmetrics/phpmetrics": "2.*",
"sebastian/phpcpd": "3.*"
}
}
Generated
+1112 -8
View File
File diff suppressed because it is too large Load Diff
+11 -2
View File
@@ -249,9 +249,18 @@ define('BIS_FUNKTIONSCODE_6_ARR', array(
'Team'
));
// Standortcode fuer Lehrgaenge
define('BIS_STANDORTCODE_LEHRGAENGE', '0');
// Standortcode fuer Lehrgaenge - Obsolete da Standort nun aus DB geholt wird
//define('BIS_STANDORTCODE_LEHRGAENGE', '0');
// bPk Abfrage
define('BPK_FUER_ALLE_BENUTZER_ABFRAGEN', false);
// Bei folgenden Buchungstypen wird ein Anlegen geprüft ob bereits ein Eintrag für diesen Typ vorhanden ist im selben
// Semester und ggf ein Hinweis ausgegeben
define('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK', serialize(
array('StudiengebuehrAnzahlung', 'Studiengebuehr', 'StudiengebuehrRestzahlung', 'OEH')
));
// Spezialnoten die am Zeunigs und Diplomasupplement ignoriert werden
define('ZEUGNISNOTE_NICHT_ANZEIGEN',serialize(array('iar', 'nz')));
?>
+1 -1
View File
@@ -172,7 +172,7 @@ var LeLvbgrpDDObserver=
if(lehreinheit_id=='')
{
alert('Eine Gruppe kann nur zu einer Lehreinheit hinzugefügt werden. Nicht aber zu einer Lehrveranstaltung');
alert('Eine Gruppe kann nur zu einem LV-Teil hinzugefügt werden, nicht aber zu einer Lehrveranstaltung');
return false;
}
+8 -1
View File
@@ -26,6 +26,7 @@ require_once('../include/benutzerberechtigung.class.php');
require_once('../include/studiensemester.class.php');
require_once('../include/variable.class.php');
require_once('../include/addon.class.php');
require_once('../include/datum.class.php');
$user=get_uid();
@@ -45,6 +46,8 @@ if(!$variable->loadVariables($user))
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$datum_obj = new datum();
if(!$rechte->isBerechtigt('basis/fas'))
die('Sie haben keine Berechtigung für diese Seite');
@@ -239,7 +242,7 @@ foreach($addon_obj->result as $addon)
<menupopup id="menu-properties-popup">
<?php
$stsemobj = new studiensemester();
$stsemobj->getAll();
$stsemobj->getAll('desc');
foreach ($stsemobj->studiensemester as $stsem)
{
echo "
@@ -248,6 +251,7 @@ foreach($addon_obj->result as $addon)
label = '$stsem->studiensemester_kurzbz'
type = 'radio'
command = 'menu-properties-studiensemester:command'
tooltiptext = '(".$datum_obj->formatDatum($stsem->start, "d.m.Y")." - ".$datum_obj->formatDatum($stsem->ende, "d.m.Y").")'
checked = ".($variable->variable->semester_aktuell==$stsem->studiensemester_kurzbz?"'true' ":"'false'")." />";
}
?>
@@ -934,6 +938,9 @@ foreach($addon_obj->result as $addon)
oncommand="studiensemesterChange('', 1)"
/>
</statusbarpanel>
<statusbarpanel id="statusbarpanel-panel-semester-aktuell">
<toolbarbutton id="statusbarpanel-semester-aktuell" label="Aktuelles Studiensemester" oncommand="setStudiensemesterAktuell()"/>
</statusbarpanel>
<statusbarpanel id="statusbarpanel-db_table" label="<?php echo DB_NAME; ?>"/>
<statusbarpanel id="statusbarpanel-text" label="<?php echo htmlspecialchars($error_msg); ?>" flex="4" crop="right" />
<statusbarpanel id="progress-panel" class="statusbarpanel-progress">
+8
View File
@@ -493,6 +493,14 @@ if(!$error)
$variable->name = 'semester_aktuell';
$variable->wert = $studiensemester_kurzbz;
}
elseif(isset($_POST['stsem_aktuell']))
{
$stsem = new studiensemester();
$studiensemester_kurzbz = $stsem->getakt();
$variable->name = 'semester_aktuell';
$variable->wert = $studiensemester_kurzbz;
}
elseif(isset($_POST['kontofilterstg']))
{
$variable->name = 'kontofilterstg';
+135 -23
View File
@@ -216,14 +216,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
@@ -507,14 +507,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
@@ -731,14 +731,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
@@ -838,14 +838,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
@@ -954,14 +954,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
// Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert
@@ -1055,14 +1055,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
// Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert
@@ -1180,14 +1180,14 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
@@ -1234,7 +1234,7 @@ if(!$error)
else
{
$return = false;
$errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen';
$errormsg = 'Bitte zuerst einen LV-Teil auswaehlen';
}
}
}
@@ -1265,19 +1265,19 @@ if(!$error)
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehreinheit wurde nicht gefunden';
$errormsg = 'LV-Teil wurde nicht gefunden';
}
if(!$error)
{
$leDAO=new lehreinheit();
$leDAO = new lehreinheit();
if ($_POST['do']=='create' || ($_POST['do']=='update'))
{
if($_POST['do']=='update')
@@ -1286,7 +1286,7 @@ if(!$error)
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Laden der Lehreinheit';
$errormsg = 'Fehler beim Laden des LV-Teils';
}
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
@@ -1388,6 +1388,118 @@ if(!$error)
}
}
}
else if ($_POST['do']=='copy')
{
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'sui')
&& !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'sui')
&& !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'sui'))
{
$error = true;
$return = false;
$errormsg = 'Keine Berechtigung';
}
if(!$leDAO->load($_POST['lehreinheit_id']))
{
$return = false;
$error = true;
$errormsg = 'Fehler beim Laden des LV-Teils';
}
if(!$error)
{
// Neue Lehreinheit anlegen
$leDAO->new = true;
$leDAO->unr = '';
$leDAO->updateamum = date('Y-m-d H:i:s');
$leDAO->updatevon = $user;
$leDAO->insertamum = date('Y-m-d H:i:s');
$leDAO->insertvon = $user;
if ($leDAO->save())
{
// Wenn Art "alle" oder "gruppen" ist, werden auch alle Lehreinheitgruppe kopiert
if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'gruppen'))
{
$legruppe = new lehreinheitgruppe();
$legruppe->getLehreinheitgruppe($_POST['lehreinheit_id']);
if (count($legruppe->lehreinheitgruppe) > 0)
{
foreach ($legruppe->lehreinheitgruppe as $row)
{
$legruppe_new = new lehreinheitgruppe();
$legruppe_new->lehreinheit_id = $leDAO->lehreinheit_id;
$legruppe_new->studiengang_kz = $row->studiengang_kz;
$legruppe_new->semester = $row->semester;
$legruppe_new->verband = $row->verband;
$legruppe_new->gruppe = $row->gruppe;
$legruppe_new->gruppe_kurzbz = $row->gruppe_kurzbz;
$legruppe_new->updateamum = date('Y-m-d H:i:s');
$legruppe_new->updatevon = $user;
$legruppe_new->insertamum = date('Y-m-d H:i:s');
$legruppe_new->insertvon = $user;
if (!$legruppe_new->save(true))
{
$errormsg = 'Fehler beim Kopieren der Gruppe: '.$legruppe_new->errormsg;
$return = false;
}
else
{
$return = true;
}
}
}
}
// Wenn Art "alle" oder "lektoren" ist, werden auch alle Lehreinheitmitarbeiter kopiert
if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'lektoren'))
{
$lema = new lehreinheitmitarbeiter();
$lema->getLehreinheitmitarbeiter($_POST['lehreinheit_id']);
if (count($lema->lehreinheitmitarbeiter) > 0)
{
foreach ($lema->lehreinheitmitarbeiter as $row)
{
$lema_new = new lehreinheitmitarbeiter();
$lema_new->lehreinheit_id = $leDAO->lehreinheit_id;
$lema_new->mitarbeiter_uid = $row->mitarbeiter_uid;
$lema_new->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz;
$lema_new->semesterstunden = $row->semesterstunden;
$lema_new->planstunden = $row->planstunden;
$lema_new->stundensatz = $row->stundensatz;
$lema_new->faktor = $row->faktor;
$lema_new->anmerkung = $row->anmerkung;
$lema_new->bismelden = $row->bismelden;
$lema_new->updateamum = date('Y-m-d H:i:s');
$lema_new->updatevon = $user;
$lema_new->insertamum = date('Y-m-d H:i:s');
$lema_new->insertvon = $user;
$lema_new->ext_id = $row->ext_id;
$lema_new->vertrag_id = $row->vertrag_id;
if (!$lema_new->save(true))
{
$errormsg = 'Fehler beim Kopieren der MitarbeiterInnen: '.$lema_new->errormsg;
$return = false;
}
else
{
$return = true;
}
}
}
}
$return = true;
}
else
{
$return = false;
$errormsg = $leDAO->errormsg;
}
}
}
else if ($_POST['do']=='delete') //Lehreinheit loeschen
{
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
@@ -1409,7 +1521,7 @@ if(!$error)
if($db->db_num_rows()>0)
{
$return = false;
$errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!';
$errormsg = 'Dieser LV-Teil ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!';
}
else
{
@@ -1420,7 +1532,7 @@ if(!$error)
else
{
$return = false;
$errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg;
$errormsg = 'Fehler beim Loeschen des LV-Teils '.$leDAO->errormsg;
}
}
}
@@ -1795,13 +1907,13 @@ if(!$error)
}
else
{
$errormsg = 'Gruppe passt nicht zur Lehreinheit';
$errormsg = 'Gruppe passt nicht zum LV-Teil';
$return = false;
}
}
else
{
$errormsg = 'Gruppe passt nicht zur Lehreinheit';
$errormsg = 'Gruppe passt nicht zum LV-Teil';
$return = false;
}
}
@@ -521,7 +521,7 @@ function LeDelete()
}
//Abfrage ob wirklich geloescht werden soll
if (confirm('Wollen Sie diese Lehreinheit wirklich loeschen?'))
if (confirm('Wollen Sie diesen LV-Teil wirklich loeschen?'))
{
//Script zum loeschen der Lehreinheit aufrufen
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
@@ -541,6 +541,52 @@ function LeDelete()
}
}
// ****
// * LV-Teile kopieren
// ****
function LeCopy(art)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var tree = document.getElementById('lehrveranstaltung-tree');
if (tree.currentIndex==-1)
return;
try
{
//Ausgewaehlte LV-Teile holen
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehreinheit_id"] : "lehrveranstaltung-treecol-lehreinheit_id";
var lehreinheit_id = tree.view.getCellText(tree.currentIndex,col);
if(lehreinheit_id == '')
{
alert('Lehreinheit_id konnte nicht ermittelt werden');
return false;
}
}
catch(e)
{
alert(e);
return false;
}
//Script zum kopieren des LV-Teils aufrufen
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
req.add('type','lehreinheit');
req.add('do','copy');
req.add('art',art);
req.add('lehreinheit_id',lehreinheit_id);
var response = req.executePOST();
var val = new ParseReturnValue(response)
if(!val.dbdml_return)
alert(val.dbdml_errormsg)
LvTreeRefresh();
LeDetailReset();
LeDetailDisableFields(true);
}
// ****
// * Leert alle Eingabe- und Auswahlfelder
// ****
@@ -2673,7 +2719,7 @@ function LeMitarbeiterGesamtkosten()
/*
* Oeffnet alle Subtrees
*/
function LvTreeOpenAllSubtrees()
function LvTreeOpenAllSubtrees(art)
{
var tree=document.getElementById('lehrveranstaltung-tree');
@@ -2682,10 +2728,21 @@ function LvTreeOpenAllSubtrees()
else
return false;
for(var i=items-1;i>=0;i--)
if (art == 'aus')
{
if(!tree.view.isContainerOpen(i))
tree.view.toggleOpenState(i);
for(var i=items-1;i>=0;i--)
{
if(!tree.view.isContainerOpen(i))
tree.view.toggleOpenState(i);
}
}
else if (art == 'ein')
{
for(var i=items-1;i>=0;i--)
{
if(tree.view.isContainerOpen(i))
tree.view.toggleOpenState(i);
}
}
}
@@ -54,13 +54,21 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
<vbox id="LehrveranstaltungEditor" flex="1" uid="" stg_kz="">
<popupset>
<menupopup id="lehrveranstaltung-tree-popup">
<menu id="lehrveranstaltung-tree-popup-lehreinheit-kopieren" label="LV-Teil kopieren">
<menupopup id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-popup">
<menuitem label="Alles" oncommand="LeCopy('alle');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-alle" hidden="false"/>
<menuitem label="Nur LV-Teil" oncommand="LeCopy('lvteil');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-lvteil" hidden="false"/>
<menuitem label="Nur mit Gruppen" oncommand="LeCopy('gruppen');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-gruppen" hidden="false"/>
<menuitem label="Nur mit Lehrenden" oncommand="LeCopy('lektoren');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-lektoren" hidden="false"/>
</menupopup>
</menu>
<menuitem label="Entfernen" oncommand="LeDelete();" id="lehrveranstaltung-tree-popup-entf" disabled="false"/>
</menupopup>
</popupset>
<toolbox>
<toolbar id="lehrveranstaltung-nav-toolbar">
<toolbarbutton id="lehrveranstaltung-toolbar-neu" label="Neuer LV-Teil" oncommand="LeNeu();" disabled="true" image="../skin/images/NeuDokument.png" tooltiptext="Neue Lehreinheit anlegen" />
<toolbarbutton id="lehrveranstaltung-toolbar-del" label="Loeschen" oncommand="LeDelete();" disabled="true" image="../skin/images/DeleteIcon.png" tooltiptext="Lehreinheiten löschen"/>
<toolbarbutton id="lehrveranstaltung-toolbar-neu" label="Neuer LV-Teil" oncommand="LeNeu();" disabled="true" image="../skin/images/NeuDokument.png" tooltiptext="Neuen LV-Teil anlegen" />
<toolbarbutton id="lehrveranstaltung-toolbar-del" label="Loeschen" oncommand="LeDelete();" disabled="true" image="../skin/images/DeleteIcon.png" tooltiptext="LV-Teil löschen"/>
<toolbarbutton id="lehrveranstaltung-toolbar-refresh" label="Aktualisieren" oncommand="LvTreeRefresh()" disabled="false" image="../skin/images/refresh.png" tooltiptext="Liste neu laden"/>
<toolbarbutton id="lehrveranstaltung-toolbar-lehrauftrag" label="Lehrauftrag" oncommand="LvCreateLehrauftrag()" disabled="false" image="../skin/images/person.gif" tooltiptext="Lehrauftrag ausdrucken" hidden="true"/>
@@ -82,7 +90,8 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
<textbox id="lehrveranstaltung-toolbar-textbox-suche" control="lehrveranstaltung-toolbar-button-search" onkeypress="LehrveranstaltungSearchFieldKeyPress(event)" style="width: 300px" />
<button id="lehrveranstaltung-toolbar-button-search" oncommand="LehrveranstaltungSuche()" label="Suchen"/>
<spacer flex="1" />
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Aufklappen" tooltiptext="Klappt die Untermenüs auf - mehrmaliges klicken möglich um weiter aufzuklappen" oncommand="LvTreeOpenAllSubtrees()" disabled="false" image="../skin/images/tree-diagramm.png" />
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Aufklappen" tooltiptext="Klappt die Untermenüs auf - mehrmaliges klicken möglich um weiter aufzuklappen" oncommand="LvTreeOpenAllSubtrees('aus')" disabled="false" image="../skin/images/tree-diagramm.png" />
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Alles Einklappen" tooltiptext="Klappt alle Untermenüs ein" oncommand="LvTreeOpenAllSubtrees('ein')" disabled="false" image="../skin/images/modul.png" />
</toolbar>
</toolbox>
@@ -247,6 +247,10 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
/>
</row>
<row>
<label value="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#zeitverfuegbarkeit"
tooltiptext="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#lektor hat in diesem Studiensemester verfügbare Zeiten" class="tempus_lektor_verfuegbarezeit"/>
</row>
</rows>
</grid>
+2 -2
View File
@@ -681,12 +681,12 @@ while ($begin<=$ende)
{
$wunsch=new zeitwunsch();
if ($type=='lektor')
if ($wunsch->loadPerson($pers_uid,$datum))
if ($wunsch->loadPerson($pers_uid,montag($datum)))
$zeitwunsch=$wunsch->zeitwunsch;
else
$error_msg.=$wunsch->errormsg;
if ($aktion=='lva_single_search' || $aktion=='lva_multi_search')
if ($wunsch->loadZwLE($lva_id,$datum))
if ($wunsch->loadZwLE($lva_id,montag($datum)))
$zeitwunsch=$wunsch->zeitwunsch;
else
$error_msg.=$wunsch->errormsg;
+1 -1
View File
@@ -86,7 +86,7 @@ echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Lehreinheit</title>
<title>LV-Teil</title>
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<style>
table td
+15
View File
@@ -2272,6 +2272,21 @@ if(!$error)
$errormsg = 'Fehlerhafte Parameteruebergabe';
}
}
elseif(isset($_POST['type']) && $_POST['type']=='checkbuchung')
{
$person_ids = explode(';',$_POST['person_ids']);
$exists = false;
if (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK') && (in_array($_POST['buchungstyp_kurzbz'], unserialize(FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK))))
{
$konto = new konto();
$exists = $konto->checkDoppelteBuchung($person_ids, $_POST['studiensemester_kurzbz'], $_POST['buchungstyp_kurzbz']);
}
if($exists)
$return = true;
else
$return = false;
}
elseif(isset($_POST['type']) && $_POST['type']=='neuebuchung')
{
//Speichert eine neue Buchung
+1 -1
View File
@@ -247,7 +247,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</menulist>
</row>
<row>
<label value="Lehreinheit" control="student-io-menulist-lehreinheit"/>
<label value="LV-Teil" control="student-io-menulist-lehreinheit"/>
<menulist id="student-io-menulist-lehreinheit" disabled="true"
datasources="rdf:null" flex="1"
ref="http://www.technikum-wien.at/lehreinheit/liste" >
+61 -25
View File
@@ -1079,7 +1079,7 @@ function StudentAuswahl()
StudentGesamtNotenTreeloaded=false;
stsem = getStudiensemester();
var url = buildStudentRDFURI({
'prestudent_id': prestudent_id,
'studiensemester_kurzbz': stsem
@@ -1188,18 +1188,18 @@ function StudentAuswahl()
zgvort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvort" ));
zgvnation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvnation" ));
zgvdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdatum" ));
zgv_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgv_erfuellt" ));
zgv_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgv_erfuellt" ));
zgvmaster_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_code" ));
zgvmasterort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmaort" ));
zgvmasternation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmanation" ));
zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" ));
zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" ));
zgvmas_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_erfuellt" ));
zgvdoktor_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_code" ));
zgvdoktorort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktorort" ));
zgvdoktornation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktornation" ));
zgvdoktordatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktordatum" ));
zgvdoktor_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_erfuellt" ));
aufnahmeschluessel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufnahmeschluessel" ));
facheinschlberuf = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#facheinschlberuf" ));
bismelden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bismelden" ));
@@ -1221,7 +1221,7 @@ function StudentAuswahl()
if(zgv_erfuellt=='t')
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=true;
else
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=false;
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=false;
document.getElementById('student-prestudent-menulist-zgvmastercode').value=zgvmaster_code;
document.getElementById('student-prestudent-textbox-zgvmasterort').value=zgvmasterort;
MenulistSelectItemOnValue('student-prestudent-menulist-zgvmasternation', zgvmasternation);
@@ -1229,7 +1229,7 @@ function StudentAuswahl()
if(zgvmas_erfuellt=='t')
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=true;
else
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=false;
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=false;
document.getElementById('student-prestudent-menulist-zgvdoktorcode').value=zgvdoktor_code;
document.getElementById('student-prestudent-textbox-zgvdoktorort').value=zgvdoktorort;
MenulistSelectItemOnValue('student-prestudent-menulist-zgvdoktornation', zgvdoktornation);
@@ -1598,7 +1598,7 @@ function StudentAuswahl()
}
// ***** KONTAKTE *****
document.getElementById('student-kontakt').setAttribute('src','kontakt.xul.php?person_id='+person_id);
document.getElementById('student-kontakt').setAttribute('src','kontakt.xul.php?person_id='+person_id+'&'+gettimestamp());
// ***** Betriebsmittel *****
document.getElementById('student-betriebsmittel').setAttribute('src','betriebsmitteloverlay.xul.php?person_id='+person_id+'&uid='+uid);
@@ -1773,7 +1773,7 @@ function StudentPrestudentDisableFields(val)
document.getElementById('student-prestudent-textbox-zgvort').disabled=val;
document.getElementById('student-prestudent-menulist-zgvnation').disabled=val;
document.getElementById('student-prestudent-textbox-zgvdatum').disabled=val;
document.getElementById('student-prestudent-checkbox-zgverfuellt').disabled=val;
document.getElementById('student-prestudent-checkbox-zgverfuellt').disabled=val;
document.getElementById('student-prestudent-menulist-zgvmastercode').disabled=val;
document.getElementById('student-prestudent-textbox-zgvmasterort').disabled=val;
document.getElementById('student-prestudent-menulist-zgvmasternation').disabled=val;
@@ -1784,7 +1784,7 @@ function StudentPrestudentDisableFields(val)
document.getElementById('student-prestudent-menulist-zgvdoktornation').disabled=val;
document.getElementById('student-prestudent-textbox-zgvdoktordatum').disabled=val;
document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').disabled=val;
document.getElementById('student-prestudent-menulist-aufnahmeschluessel').disabled=val;
document.getElementById('student-prestudent-checkbox-facheinschlberuf').disabled=val;
document.getElementById('student-prestudent-checkbox-bismelden').disabled=val;
@@ -1852,7 +1852,7 @@ function StudentPrestudentSave()
zgvort = document.getElementById('student-prestudent-textbox-zgvort').value;
zgvnation = document.getElementById('student-prestudent-menulist-zgvnation').value;
zgvdatum = document.getElementById('student-prestudent-textbox-zgvdatum').value;
zgv_erfuellt = document.getElementById('student-prestudent-checkbox-zgverfuellt').checked;
zgv_erfuellt = document.getElementById('student-prestudent-checkbox-zgverfuellt').checked;
zgvmaster_code = document.getElementById('student-prestudent-menulist-zgvmastercode').value;
zgvmasterort = document.getElementById('student-prestudent-textbox-zgvmasterort').value;
zgvmasternation = document.getElementById('student-prestudent-menulist-zgvmasternation').value;
@@ -1863,7 +1863,7 @@ function StudentPrestudentSave()
zgvdoktornation = document.getElementById('student-prestudent-menulist-zgvdoktornation').value;
zgvdoktordatum = document.getElementById('student-prestudent-textbox-zgvdoktordatum').value;
zgvdoktor_erfuellt = document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').checked;
aufnahmeschluessel = document.getElementById('student-prestudent-menulist-aufnahmeschluessel').value;
facheinschlberuf = document.getElementById('student-prestudent-checkbox-facheinschlberuf').checked;
bismelden = document.getElementById('student-prestudent-checkbox-bismelden').checked;
@@ -1912,7 +1912,7 @@ function StudentPrestudentSave()
req.add('zgvort', zgvort);
req.add('zgvnation', zgvnation);
req.add('zgvdatum', ConvertDateToISO(zgvdatum));
req.add('zgv_erfuellt', zgv_erfuellt);
req.add('zgv_erfuellt', zgv_erfuellt);
req.add('zgvmas_code', zgvmaster_code);
req.add('zgvmaort', zgvmasterort);
req.add('zgvmanation', zgvmasternation);
@@ -1923,7 +1923,7 @@ function StudentPrestudentSave()
req.add('zgvdoktornation', zgvdoktornation);
req.add('zgvdoktordatum', ConvertDateToISO(zgvdoktordatum));
req.add('zgvdoktor_erfuellt', zgvdoktor_erfuellt);
req.add('aufnahmeschluessel', aufnahmeschluessel);
req.add('facheinschlberuf', facheinschlberuf);
req.add('bismelden', bismelden);
@@ -2680,10 +2680,10 @@ function StudentKontoFilter()
// ****
// * Generiert eine student.rdf URI
// ****
function buildStudentRDFURI(queryparams, tree)
function buildStudentRDFURI(queryparams, tree)
{
var baseurl = "<?php echo APP_ROOT; ?>rdf/student.rdf.php";
if ( typeof tree !== "undefined" )
if ( typeof tree !== "undefined" )
{
var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
queryparams.orgform = tree.view.getCellText(tree.currentIndex,col);
@@ -2694,19 +2694,19 @@ function buildStudentRDFURI(queryparams, tree)
// ****
// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI
// ****
function _buildURI(baseurl, queryparams)
function _buildURI(baseurl, queryparams)
{
var str = [];
var url = baseurl;
for (var p in queryparams)
for (var p in queryparams)
{
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
{
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p]));
}
}
var querystring = str.join("&");
if ( querystring.length > 0 )
if ( querystring.length > 0 )
{
url = url + '?' + querystring + '&' + gettimestamp();
}
@@ -2741,12 +2741,12 @@ function StudentKontoFilterStudenten(filter)
var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex);
var typ = getTreeCellText(tree, 'typ', tree.currentIndex);
var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex);
if(stsem=='')
stsem = getStudiensemester();
if(typ=='')
typ='student';
var url = buildStudentRDFURI({
'studiengang_kz': stg_kz,
'semester': sem,
@@ -2758,9 +2758,9 @@ function StudentKontoFilterStudenten(filter)
'filter2': filter,
'buchungstyp': buchungstyp
}, tree);
console.log(url);
var treeStudent=document.getElementById('student-tree');
try
@@ -2831,7 +2831,7 @@ function StudentKontoFilterBuchungstyp()
'typ': typ,
'filter2': 'buchungstyp;' + filter
}, tree);
var treeStudent=document.getElementById('student-tree');
try
@@ -3085,6 +3085,20 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
return false;
}
var tocheck = <?php echo (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK') && FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK) ? 'true' : 'false' ?>;
var exists = false;
if (tocheck)
{
exists = StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz);
}
if (exists)
{
if(!confirm('Die Buchung ist bereits vorhanden. Trotzdem fortfahren?'))
return false;
}
req.add('type', 'neuebuchung');
req.add('person_ids', person_ids);
@@ -3116,6 +3130,28 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
return true;
}
}
// ****
// * Prüft ob die Buchung bereits vorhanden ist
// ****
function StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'checkbuchung');
req.add('person_ids', person_ids);
req.add('studiensemester_kurzbz', studiensemester_kurzbz);
req.add('buchungstyp_kurzbz', buchungstyp_kurzbz);
req.add('studiengang_kz', studiengang_kz);
var response = req.executePOST();
var val = new ParseReturnValue(response);
return(val.dbdml_return);
}
// *****
// * Druckt eine Zahlungsbestaetigung aus
@@ -5617,7 +5653,7 @@ function StudentSuche()
var url = buildStudentRDFURI({
'filter': filter
});
var treeStudent=document.getElementById('student-tree');
try
+1 -1
View File
@@ -585,7 +585,7 @@ function StudentProjektarbeitSpeichern()
if(lehreinheit_id=='')
{
alert('Bitte eine Lehreinheit Auswaehlen');
alert('Bitte einen LV-Teil auswaehlen');
return false;
}
@@ -244,7 +244,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
</menulist>
</row>
<row>
<label value="Lehreinheit" control="student-projektarbeit-menulist-lehreinheit"/>
<label value="LV-Teil" control="student-projektarbeit-menulist-lehreinheit"/>
<menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true"
datasources="rdf:null" flex="1"
style="max-width: 600px"
@@ -492,7 +492,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
</template>
</menulist>
</row>
<row>
<row id="student-projektbetreuer-textbox-punkte-row">
<label value="Punkte" control="student-projektbetreuer-textbox-punkte"/>
<textbox id="student-projektbetreuer-textbox-punkte" disabled="true" maxlength="6"/>
</row>
@@ -172,7 +172,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</menulist>
</row>
<row>
<label value="Lehreinheit" control="student-pruefung-menulist-lehreinheit"/>
<label value="LV-Teil" control="student-pruefung-menulist-lehreinheit"/>
<menulist id="student-pruefung-menulist-lehreinheit" disabled="true"
datasources="rdf:null" flex="1" style="max-width: 600px"
ref="http://www.technikum-wien.at/lehreinheit/liste" >
+63
View File
@@ -375,6 +375,69 @@ function getStudiensemesterVariable()
}
}
// ****
// * Setzt das aktuelle Studiensemester
// ****
function setStudiensemesterAktuell()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
var req = new phpRequest(url,'','');
req.add('type', 'variablechange');
req.add('stsem_aktuell', 'stsem_aktuell');
var response = req.executePOST();
var val = new ParseReturnValue(response)
if (!val.dbdml_return)
{
if(val.dbdml_errormsg=='')
alert(response)
else
alert(val.dbdml_errormsg)
}
else
{
//Statusbar setzen
document.getElementById("statusbarpanel-text").label = "Studiensemester erfolgreich geaendert";
document.getElementById("statusbarpanel-semester").label = val.dbdml_data;
//Menue setzen
var items = document.getElementsByTagName('menuitem');
for(i in items)
{
if(items[i].label==val.dbdml_data && items[i].id=='menu-properies-studiensemester-name')
{
items[i].setAttribute('checked',true);
break;
}
}
//MitarbeiterDetailStudiensemester_id = dbdml_errormsg;
//Ansichten Refreshen
try
{
StudentTreeRefresh();
}
catch(e)
{}
try
{
LvTreeRefresh();
}
catch(e)
{}
}
return true;
}
// ****
// * Laedt das Undo Menue Neu
// ****
+23
View File
@@ -334,6 +334,29 @@ function onLektorSelect(event)
}
}
function LektorFunktionLoadZeitwunschAdminUrl(){
var treeLektor = document.getElementById('tree-lektor');
var col = treeLektor.columns ? treeLektor.columns["uid"] : "uid";
try
{
var uid = treeLektor.view.getCellText(treeLektor.currentIndex,col);
}
catch(e)
{
}
if (uid == '' || uid == undefined)
{
alert('LektorIn auswählen, um Zeitwünsche einsehen zu können.');
return;
}
else
{
window.open('<?php echo APP_ROOT ?>vilesci/personen/zeitwunsch.php?uid=' + uid);
}
}
function loadURL(event)
{
var contentFrame = document.getElementById('contentFrame');
+2
View File
@@ -186,6 +186,8 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-semester-overlay.xu
<vbox id="vbox-main">
<popupset>
<menupopup id="fasoverlay-lektor-tree-popup">
<menuitem label="Zeitwünsche einsehen" oncommand="LektorFunktionLoadZeitwunschAdminUrl();" />
<menuseparator />
<menuitem label="Mail senden" oncommand="LektorFunktionMail();" />
<menuseparator />
<menuitem label="Entfernen" oncommand="LektorFunktionDel();" />
-26
View File
@@ -53,8 +53,6 @@ class adresse extends basis_db
public $rechnungsadresse=false; // boolean
public $anmerkung; // string
public $co_name;
public $adressentyp;
public $bezeichnung;
public $bezeichnung_mehrsprachig;
/**
@@ -523,29 +521,5 @@ class adresse extends basis_db
}
return true;
}
public function getAdressentyp()
{
$qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new adresse();
$obj->adressentyp = $row->adressentyp_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+41
View File
@@ -0,0 +1,41 @@
<?php
require_once(dirname(__FILE__) . '/basis_db.class.php');
class adressentyp extends basis_db {
public $result = array();
public $adressentyp;
public $bezeichnung;
public function __construct()
{
parent::__construct();
}
public function getAll()
{
$qry = "SELECT * FROM public.tbl_adressentyp ORDER BY sort";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new adressentyp();
$obj->adressentyp = $row->adressentyp_kurzbz;
$obj->bezeichnung = $row->bezeichnung;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+14
View File
@@ -1182,4 +1182,18 @@ function generateUniqueToken($length = 64)
return $token;
}
/**
* Berechnet die Anzahl von ganzen Tagen zwischen zwei Daten
* @param string $date1 Datum im Format '2022-02-22'.
* @param string $date2 Datum im Format '2022-04-22'.
* @return Anzahl der Tage
*/
function anzahlTage($date1, $date2)
{
$date1_ts = strtotime($date1);
$date2_ts = strtotime($date2);
$diff = $date2_ts - $date1_ts;
return round($diff / 86400);
}
?>
+8 -7
View File
@@ -2,13 +2,14 @@
// Hintergrundfarben fuer Tabellen beim Zeitwunsch
global $cfgStdBgcolor;
$cfgStdBgcolor=array();
$cfgStdBgcolor[0]="#CC0000";
$cfgStdBgcolor[1]="#FF2200";
$cfgStdBgcolor[2]="#FF9922";
$cfgStdBgcolor[3]="#FFFF55";
$cfgStdBgcolor[4]="#C0ECC3";
$cfgStdBgcolor[5]="#48FA66";
$cfgStdBgcolor[6]="#CCFFCC";
$cfgStdBgcolor[0]="#CC0000"; // rot
$cfgStdBgcolor[1]="#FF2200"; // hellrot
$cfgStdBgcolor[2]="#FF9922"; // orange
$cfgStdBgcolor[3]="#FFFF55"; // gelb
$cfgStdBgcolor[4]="#C0ECC3"; // hellgrün mittel
$cfgStdBgcolor[5]="#48FA66"; // dunkelgrün mittel
$cfgStdBgcolor[6]="#CCFFCC"; // hellgrün heller
$cfgStdBgcolor[7]="#59b359 "; // dunkelgrün dunkler
// Mehrsprachige Wochentage
global $tagbez;
+40 -9
View File
@@ -553,31 +553,38 @@ class konto extends basis_db
/**
* Überprüft, ob das Konto einer Person ausgeglichen ist, oder ob noch Zahlungen offen sind
* @param $person_id ID der Person, die geprüft werden soll
* @return true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist
* @param int $person_id ID der Person, die geprüft werden soll.
* @param bool $aktuelleBuchungenOnly True, wenn nur Zahlungen mit Buchungsdatum <= aktuelles Datum berücksichtigt werden sollen.
* @return boolean true wenn ausgeglichen, false wenn Zahlungen offen, false mit errormsg wenn ein Fehler aufgetreten ist
*/
public function checkKontostand($person_id)
public function checkKontostand($person_id, $aktuelleBuchungenOnly = false)
{
$qry="SELECT sum(betrag) as summe FROM public.tbl_konto WHERE person_id=".$this->db_add_param($person_id);
if($result=$this->db_query($qry))
$qry = "SELECT sum(betrag) as summe
FROM public.tbl_konto
WHERE person_id=".$this->db_add_param($person_id);
if($aktuelleBuchungenOnly)
$qry .= " AND buchungsdatum <= now()";
if ($result = $this->db_query($qry))
{
if($row=$this->db_fetch_object())
if ($row = $this->db_fetch_object())
{
if($row->summe>=0)
if ($row->summe >= 0)
return true;
else
return false;
}
else
{
$this->errormsg = "Fehler beim Holen der Daten";
return false;
$this->errormsg="Fehler beim Holen der Daten";
}
}
else
{
$this->errormsg = "Fehler bei der Datenbankabfrage";
return false;
$this->errormsg="Fehler bei der Datenbankabfrage";
}
}
@@ -957,6 +964,30 @@ class konto extends basis_db
return false;
}
}
public function checkDoppelteBuchung($person_ids, $stsem, $typ)
{
$qry = "SELECT betrag
FROM public.tbl_konto
JOIN public.tbl_benutzer benutzer USING(person_id)
WHERE person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
GROUP BY buchungsnr";
if ($result = $this->db_query($qry))
{
if ($this->db_num_rows($result) > 0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
return false;
}
}
}
?>
+5 -2
View File
@@ -681,8 +681,11 @@ class lehreinheit extends basis_db
else
{
$row=$this->db_fetch_object($erg_zs);
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
return false;
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
{
$this->errormsg = "Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
return false;
}
}
}
return true;
+14 -6
View File
@@ -202,9 +202,12 @@ class LehreListHelper
$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,
(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,
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang,
tbl_mobilitaet.mobilitaetstyp_kurzbz, tbl_zeugnisnote.note,
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN 1 ELSE 0 END) as doubledegree
FROM
campus.vw_student_lehrveranstaltung
@@ -212,7 +215,9 @@ class LehreListHelper
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_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)
@@ -254,8 +259,10 @@ class LehreListHelper
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').')';
//Outgoing
if($row->bisio_id != '' && $row->status != 'Incoming' && ($row->bis > $stsemdatumvon || $row->bis == '')
&& $row->von < $stsemdatumbis && (anzahlTage($row->von, $row->bis) >= 30))
$zusatz .= '(o)(ab '.$datum->formatDatum($row->von, 'd.m.Y').')';
if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
$zusatz.= '('. $row->anmerkung. ')';
@@ -281,7 +288,8 @@ class LehreListHelper
'gruppe'=>trim($row->gruppe),
'zusatz'=>$zusatz,
'studiengang_kurzbz'=>$row->kurzbzlang,
'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz
'mobilitaetstyp_kurzbz'=>$row->mobilitaetstyp_kurzbz,
'note'=>$row->note
));
}
}
+29 -3
View File
@@ -34,6 +34,8 @@ require_once(dirname(__FILE__).'/variable.class.php');
class lehrstunde extends basis_db
{
public $result = array();
public $stundenplan_id; /// @brief ID in der Datenbank
public $lehreinheit_id; /// @brief id der Lehreinheit in der DB
public $unr; // @brief Unterrichtsnummer
@@ -876,8 +878,12 @@ class lehrstunde extends basis_db
if ($anz_zs!=0)
{
$row = $this->db_fetch_object($erg_zs);
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
return true;
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
{
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
return true;
}
}
return false;
}
@@ -1060,7 +1066,19 @@ class lehrstunde extends basis_db
return $result;
}
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
/**
* Holt Studenplandaten.
*
* @param $db_stpl_table
* @param null $lehrveranstaltung_id
* @param null $studiensemester_kurzbz
* @param null $lehreinheit_id
* @param null $mitarbeiter_uid
* @param null $student_uid
* @param false $nurBevorstehende Wenn true, dann werden nur bevorstehende LVs abgefragt.
* @return bool
*/
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
{
$qry = "SELECT
@@ -1112,6 +1130,11 @@ class lehrstunde extends basis_db
else
return false;
if($nurBevorstehende)
{
$qry.= " AND datum >= NOW()::date ";
}
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
@@ -1136,7 +1159,10 @@ class lehrstunde extends basis_db
return true;
}
else
{
$this->errormsg = 'Fehler beim Einholen der Stundenplandaten';
return false;
}
}
}
+23 -4
View File
@@ -834,11 +834,26 @@ class prestudent extends person
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
if($stg_obj->typ=='m')
$qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null AND a.zgvmas_erfuellt = 't'";
{
$qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null";
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
$qry .= " AND a.zgvmas_erfuellt = 't'";
}
elseif($stg_obj->typ=='p')
$qry.=" AND a.rolle='Interessent' AND a.zgvdoktor_code is not null AND a.zgvdoktor_erfuellt = 't'";
{
$qry.=" AND a.rolle='Interessent' AND a.zgvdoktor_code is not null";
if (defined('ZGV_DOKTOR_ANZEIGEN') && ZGV_DOKTOR_ANZEIGEN)
$qry .= " AND a.zgvdoktor_erfuellt = 't'";
}
else
$qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null AND a.zgv_erfuellt = 't'";
{
$qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null";
if (defined('ZGV_ERFUELLT_ANZEIGEN') && ZGV_ERFUELLT_ANZEIGEN)
$qry .= " AND a.zgv_erfuellt = 't'";
}
break;
case "reihungstestangemeldet":
$qry.="
@@ -2489,10 +2504,14 @@ class prestudent extends person
$qry = "SELECT
UPPER(tbl_studiengang.typ || tbl_studiengang.kurzbz) as kuerzel
FROM
public.tbl_prestudent
public.tbl_prestudent pt
JOIN public.tbl_prestudentstatus USING (prestudent_id)
JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE person_id = ".$this->db_add_param($person_id, FHC_INTEGER)."
AND NOT EXISTS
(SELECT * FROM public.tbl_prestudentstatus ps
WHERE ps.prestudent_id = pt.prestudent_id
AND status_kurzbz = 'Abbrecher' )
AND status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
AND typ in ('b','m','d')
ORDER BY status_kurzbz ASC
+34
View File
@@ -469,5 +469,39 @@ class projektarbeit extends basis_db
return false;
}
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
*/
public function projektarbeitIsCurrent($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date
LIMIT 1";
$result_sem=$this->db_query($qry);
if (!$result_sem)
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
$num_rows = $this->db_num_rows($result_sem);
if ($num_rows < 0)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $num_rows;
}
}
?>
+3 -1
View File
@@ -1235,7 +1235,9 @@ class wochenplan extends basis_db
if (isset($wunsch[$i][$j]))
{
$index=$wunsch[$i][$j];
if ($index==-3)
// Negative und positive Zeitsperren beruecksichtigen
if ($index==-3 || $index == 4)
{
//Wenn eine Zeitsperre eingetragen ist, dann diese im Tooltiptext anzeigen
$zeitsperre = new zeitsperre();
+55
View File
@@ -537,5 +537,60 @@ class zeitsperre extends basis_db
return $this->bisdatum;
}
/**
* Liefert die Zeitsperren eines Users innerhalb einer bestimmten Zeitspanne.
* Einschränkung nach Zeitsperrentyp möglich.
*
* @param $uid
* @param $von string Datum im Format YYYY-MM-DD
* @param $bis string Datum im Format YYYY-MM-DD
* @param null $zeitsperretyp_kurzbz
* @return bool
*/
public function getVonBis($uid, $von, $bis, $zeitsperretyp_kurzbz = null)
{
$qry = '
SELECT
zeitsperre_id, zeitsperretyp_kurzbz, vondatum, vonstunde, bisdatum, bisstunde
FROM
campus.tbl_zeitsperre
LEFT JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
WHERE
mitarbeiter_uid = '. $this->db_add_param($uid). '
AND (
(vondatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
OR
(bisdatum BETWEEN '.$this->db_add_param($von).' AND '.$this->db_add_param($bis).')
)';
if (!is_null($zeitsperretyp_kurzbz))
{
$qry.= '
AND zeitsperretyp_kurzbz = '. $this->db_add_param($zeitsperretyp_kurzbz);
}
if (!$this->db_query($qry))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
while($row = $this->db_fetch_object())
{
$obj = new stdClass();
$obj->zeitsperre_id = $row->zeitsperre_id;
$obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
$obj->vondatum = $row->vondatum;
$obj->vonstunde = $row->vonstunde;
$obj->bisdatum = $row->bisdatum;
$obj->bisstunde = $row->bisstunde;
$this->result[]= $obj;
}
return true;
}
}
}
?>
+454 -374
View File
@@ -1,374 +1,454 @@
<?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(dirname(__FILE__).'/basis_db.class.php');
class zeitwunsch extends basis_db
{
public $new; // boolean
public $zeitwunsch;
//Tabellenspalten
public $stunde; // smalint
public $mitarbeiter_uid; // varchar(32)
public $tag; // smalint
public $gewicht; // smalint
public $min_stunde;
public $max_stunde;
public $insertamum;
public $insertvon;
public $updateamum;
public $updatevon;
/**
* Konstruktor
*/
public function __construct()
{
parent::__construct();
$this->init();
}
/**
* Initialisierung
*
*/
private function init()
{
// Stundenraster abfragen
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
if(!$this->db_query($sql))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
$row=$this->db_fetch_object();
$this->min_stunde=$row->min_stunde;
$this->max_stunde=$row->max_stunde;
}
return true;
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if(mb_strlen($this->mitarbeiter_uid)>32)
{
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
return false;
}
if($this->mitarbeiter_uid == '')
{
$this->errormsg = 'UID muss angegeben werden';
return false;
}
if(!is_numeric($this->stunde))
{
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->gewicht))
{
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->tag))
{
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
return false;
}
return true;
}
/**
* Speichert einen Zeitwunsch in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($this->new)
{
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
insertamum, insertvon, updateamum, updatevon) VALUES('.
$this->db_add_param($this->mitarbeiter_uid).','.
$this->db_add_param($this->tag, FHC_INTEGER).','.
$this->db_add_param($this->stunde, FHC_INTEGER).','.
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).');';
}
else
{
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
' updateamum='.$this->db_add_param($this->updateamum).', '.
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER);
}
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
return false;
}
}
/**
* Zeitwunsch einer Person laden
* @param uid
* @param datum
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
*/
public function loadPerson($uid,$datum=null)
{
// Zeitwuensche abfragen
if(!$this->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid)))
{
$this->errormsg = $this->db_last_error();
return false;
}
else
{
while ($row = $this->db_fetch_object())
{
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
}
}
if (!is_null($datum))
{
$beginn=montag($datum);
$start=date('Y-m-d',$beginn);
$ende=date('Y-m-d',jump_day($beginn,7));
// Zeitsperren abfragen
$sql="
SELECT
vondatum,vonstunde,bisdatum,bisstunde
FROM
campus.tbl_zeitsperre
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
AND vondatum<=".$this->db_add_param($ende)."
AND bisdatum>=".$this->db_add_param($start);
if(!$this->db_query($sql))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
while($row = $this->db_fetch_object())
{
$beginn=montag($datum);
for ($i=1;$i<=7;$i++)
{
$date_iso=date('Y-m-d',$beginn);
//echo "\n".$date_iso."\n".$row->vondatum."\n";
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
$beginn=jump_day($beginn,1);
}
}
}
}
return true;
}
/**
* Zeitwunsch der Personen in Lehreinheiten laden
* @param $le_id LehreinheitID Array
* @param $datum
* @return true oder false
*/
public function loadZwLE($le_id,$datum=null)
{
//$this->init();
// SUB-Select fuer LVAs
$sql_query_leid='';
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
for ($i=0;$i<count($le_id);$i++)
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
$sql_query_leid=mb_substr($sql_query_leid,3);
$sql_query_le.=$sql_query_leid;
// Schlechteste Zeitwuensche holen
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid IN ('.$sql_query_le.') GROUP BY tag,stunde';
// Zeitwuensche abfragen
if(!$this->db_query($sql_query))
{
$this->errormsg = $this->db_last_error();
return false;
}
else
while($row = $this->db_fetch_object())
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
// ***********************************************************
// Zeitsperren fuer die aktuelle Woche holen
if (!is_null($datum))
{
$beginn=montag($datum);
$start=date('Y-m-d',$beginn);
$ende=date('Y-m-d',jump_day($beginn,7));
// Zeitsperren abfragen
$sql="
SELECT
vondatum,vonstunde,bisdatum,bisstunde
FROM
campus.tbl_zeitsperre
WHERE
mitarbeiter_uid IN ($sql_query_le)
AND vondatum<=".$this->db_add_param($ende)."
AND bisdatum>=".$this->db_add_param($start);
if(!$this->db_query($sql))
{
$this->errormsg = $this->db_last_error();
return false;
}
while($row = $this->db_fetch_object())
{
$beginn=montag($datum);
for ($i=1;$i<=7;$i++)
{
$date_iso=date('Y-m-d',$beginn);
//echo "\n".$date_iso."\n".$row->vondatum."\n";
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]=-3;
}
$beginn=jump_day($beginn,1);
}
}
}
return true;
}
/**
* Prueft ob bereits ein Zeitwunsch eingetragen ist
*
* @param $uid
* @param $stunde
* @param $tag
* @return true wenn vorhanden sonst false
*/
function exists($uid, $stunde, $tag)
{
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
AND tag=".$this->db_add_param($tag, FHC_INTEGER);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
return false;
}
}
}
?>
<?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(dirname(__FILE__).'/basis_db.class.php');
class zeitwunsch extends basis_db
{
public $new; // boolean
public $zeitwunsch;
//Tabellenspalten
public $stunde; // smalint
public $mitarbeiter_uid; // varchar(32)
public $tag; // smalint
public $gewicht; // smalint
public $min_stunde;
public $max_stunde;
public $insertamum;
public $insertvon;
public $updateamum;
public $updatevon;
public $zeitwunsch_id;
public $zeitwunsch_gueltigkeit_id;
/**
* Konstruktor
*/
public function __construct()
{
parent::__construct();
$this->init();
}
/**
* Initialisierung
*
*/
private function init()
{
// Stundenraster abfragen
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
if(!$this->db_query($sql))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
$row=$this->db_fetch_object();
$this->min_stunde=$row->min_stunde;
$this->max_stunde=$row->max_stunde;
}
return true;
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if(mb_strlen($this->mitarbeiter_uid)>32)
{
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
return false;
}
if($this->mitarbeiter_uid == '')
{
$this->errormsg = 'UID muss angegeben werden';
return false;
}
if(!is_numeric($this->stunde))
{
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->gewicht))
{
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->tag))
{
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
return false;
}
return true;
}
/**
* Speichert einen Zeitwunsch in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save()
{
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($this->new)
{
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
insertamum, insertvon, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES('.
$this->db_add_param($this->mitarbeiter_uid).','.
$this->db_add_param($this->tag, FHC_INTEGER).','.
$this->db_add_param($this->stunde, FHC_INTEGER).','.
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->zeitwunsch_gueltigkeit_id).');';
}
else
{
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
' updateamum='.$this->db_add_param($this->updateamum).', '.
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER). "
AND zeitwunsch_gueltigkeit_id=".$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
}
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
return false;
}
}
/**
* Zeitwunsch einer Person zu bestimmter Zeitwunschgueltigkeit laden
* @param $uid
* @param $zeitwunsch_gueltigkeit_id
* @return boolean
*/
public function loadByZWG($uid, $zeitwunsch_gueltigkeit_id)
{
$qry = '
SELECT *
FROM campus.tbl_zeitwunsch
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
WHERE zwg.mitarbeiter_uid = ' . $this->db_add_param($uid) . '
AND zeitwunsch_gueltigkeit_id = ' . $this->db_add_param($zeitwunsch_gueltigkeit_id) . '
ORDER BY tag, stunde
';
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$this->zeitwunsch[$row->tag][$row->stunde] = $row->gewicht;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->zeitwunsch_id = $row->zeitwunsch_id;
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
}
return true;
}
else
{
$this->errormsg = $this->db_last_error();
return false;
}
}
/**
* Alle Zeitwuensche einer Person laden.
* Um auf einen Zeitwunsch einer bestimmten Zeit, also innerhalb einer bestimmten Zeitwunschgueltigkeit
* zu beschraenken, kann ein Datum mitgegeben werden.
* @param uid
* @param datum UNIX timestamp, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
*/
public function loadPerson($uid,$datum=null)
{
// Default datum: jetzt
if (is_null($datum))
{
$datum = time();
}
$qry = "
SELECT *
FROM campus.tbl_zeitwunsch
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
WHERE zwg.mitarbeiter_uid=". $this->db_add_param($uid). "
AND ". $this->db_add_param(date('Y-m-d', $datum)). " BETWEEN von AND COALESCE(bis,'2999-01-01');
";
// Zeitwuensche abfragen
if(!$this->db_query($qry))
{
$this->errormsg = $this->db_last_error();
return false;
}
else
{
while ($row = $this->db_fetch_object())
{
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->zeitwunsch_id = $row->zeitwunsch_id;
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
}
}
if (!is_null($datum))
{
$beginn=montag($datum);
$start=date('Y-m-d',$beginn);
$ende=date('Y-m-d',jump_day($beginn,7));
// Zeitsperren abfragen
$sql="
SELECT
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
FROM
campus.tbl_zeitsperre
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
AND vondatum<=".$this->db_add_param($ende)."
AND bisdatum>=".$this->db_add_param($start). "
-- Negative Zeitsperren sollen im Plan eine positive Zeitsperre 'ZVerfueg' overrulen
ORDER BY
CASE
WHEN zeitsperretyp_kurzbz = 'ZVerfueg' THEN 1
ELSE 2
END;";
if(!$this->db_query($sql))
{
$this->errormsg=$this->db_last_error();
return false;
}
else
{
// Zeitsperren negativ (-3) gewichten.
// Ausnahme: positive Zeitsperren: diese positiv (4) gewichten.
while($row = $this->db_fetch_object())
{
$beginn=montag($datum);
for ($i=1;$i<=7;$i++)
{
$date_iso=date('Y-m-d',$beginn);
//echo "\n".$date_iso."\n".$row->vondatum."\n";
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
$beginn=jump_day($beginn,1);
}
}
}
}
return true;
}
/**
* Zeitwunsch der Personen in Lehreinheiten laden
* @param $le_id LehreinheitID Array
* @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
* @return true oder false
*/
public function loadZwLE($le_id, $datum = null)
{
// Default datum: jetzt
if (is_null($datum))
{
$datum = time();
}
// SUB-Select fuer LVAs
$sql_query_leid='';
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
for ($i=0;$i<count($le_id);$i++)
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
$sql_query_leid=mb_substr($sql_query_leid,3);
$sql_query_le.=$sql_query_leid;
// Schlechteste Zeitwuensche holen
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
FROM campus.tbl_zeitwunsch
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
WHERE zwg.mitarbeiter_uid IN ('.$sql_query_le.')
AND '. $this->db_add_param(date('Y-m-d', $datum)). ' BETWEEN von AND COALESCE(bis,\'2999-01-01\')
GROUP BY tag,stunde;';
// Zeitwuensche abfragen
if(!$this->db_query($sql_query))
{
$this->errormsg = $this->db_last_error();
return false;
}
else
while($row = $this->db_fetch_object())
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
// ***********************************************************
// Zeitsperren fuer die aktuelle Woche holen
if (!is_null($datum))
{
$beginn=montag($datum);
$start=date('Y-m-d',$beginn);
$ende=date('Y-m-d',jump_day($beginn,7));
// Zeitsperren abfragen
$sql="
SELECT
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
FROM
campus.tbl_zeitsperre
WHERE
mitarbeiter_uid IN ($sql_query_le)
AND vondatum<=".$this->db_add_param($ende)."
AND bisdatum>=".$this->db_add_param($start);
if(!$this->db_query($sql))
{
$this->errormsg = $this->db_last_error();
return false;
}
while($row = $this->db_fetch_object())
{
$beginn=montag($datum);
for ($i=1;$i<=7;$i++)
{
$date_iso=date('Y-m-d',$beginn);
//echo "\n".$date_iso."\n".$row->vondatum."\n";
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
{
if (is_null($row->vonstunde))
$row->vonstunde=$this->min_stunde;
if (is_null($row->bisstunde))
$row->bisstunde=$this->max_stunde;
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
}
$beginn=jump_day($beginn,1);
}
}
}
return true;
}
/**
* Prueft ob bereits ein Zeitwunsch eingetragen ist
*
* @param $uid
* @param $zwg_id
* @param $stunde
* @param $tag
* @return true wenn vorhanden sonst false
*/
function exists($uid, $zwg_id, $stunde, $tag)
{
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
AND tag=".$this->db_add_param($tag, FHC_INTEGER). "
AND zeitwunsch_gueltigkeit_id = ".$this->db_add_param($zwg_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
return false;
}
}
}
?>
+271
View File
@@ -0,0 +1,271 @@
<?php
require_once(dirname(__FILE__). '/basis_db.class.php');
class zeitwunsch_gueltigkeit extends basis_db
{
public $new; // boolean
public $result = array();
public $zeitwunsch_gueltigkeit_id; // integer
public $mitarbeiter_uid; // varchar 32
public $von; // date
public $bis; // date
public $insertamum; // timestamp
public $insertvon; // varchar 32
public $updateamum; // timestamp
public $updatevon; // varchar 32
public $studiensemester_kurzbz;
public $start;
public $ende;
public function __construct($zeitwunsch_gueltigkeit_id = null)
{
parent::__construct();
if (!is_null($zeitwunsch_gueltigkeit_id))
{
$this->load($zeitwunsch_gueltigkeit_id);
}
}
/**
* Ladet eine Zeitwunschgueltigkeit.
* @param $zeitwunsch_gueltigkeit_id
* @return bool
*/
public function load($zeitwunsch_gueltigkeit_id)
{
if (!is_numeric($zeitwunsch_gueltigkeit_id))
{
$this->errormsg = 'Wrong parameter zeitwunsch_gueltigkeit_id.';
return false;
}
$qry = '
SELECT *, studiensemester_kurzbz, start, ende
FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
WHERE zeitwunsch_gueltigkeit_id = '.$this->db_add_param($zeitwunsch_gueltigkeit_id). '
AND (von < ende AND COALESCE(bis, \'2999-12-31\'::date ) > start)
ORDER BY start ASC
LIMIT 1
';
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
$this->von = $row->von;
$this->bis = $row->bis;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->start = $row->start;
$this->ende = $row->ende;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
/**
* Speichert eine Zeitwunschgueltigkeit
*/
public function save()
{
if($this->new)
{
$qry = '
INSERT INTO campus.tbl_zeitwunsch_gueltigkeit (mitarbeiter_uid, von, bis, insertvon)
VALUES ('.
$this->db_add_param($this->mitarbeiter_uid).', '.
$this->db_add_param($this->von).', '.
$this->db_add_param($this->bis).', '.
$this->db_add_param($this->insertvon). ')
RETURNING zeitwunsch_gueltigkeit_id;
';
}
else
{
$qry = '
UPDATE campus.tbl_zeitwunsch_gueltigkeit SET'.
' bis = '. $this->db_add_param($this->bis). ', '.
' updateamum = NOW(), '.
' updatevon = '.$this->db_add_param($this->updatevon).
' WHERE zeitwunsch_gueltigkeit_id = ' .$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
}
if($result = $this->db_query($qry))
{
// Wenn neuer Eintrag
if ($this->new)
{
if($row = $this->db_fetch_object($result))
{
// ZWG ID des neuen ZWG Eintrags zurueckgeben
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
}
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Zeitwunschgueltigkeit';
return false;
}
}
/**
* Ladet Zeitwunschgueltigkeiten einer UID mitsamt den zugehoerigen Studiensemestern.
* @param $uid
* @param numeric $limit limit = null liefert alle ZWG; limit = 1 liefert die letztgueltige Zeitwunsch-Gueltigkeit.
* @param bool $activeOnly Wenn während des laufenden Semesters der Zeitwunsch geaendert werden, werden mehrere ZWG im Semester hinterlegt.
* true liefert pro Studiensemester nur die letztgueltigen ZWG;
* false liefert alle ZWG pro Studiensemester
* @param string $bis string date, z.B. 2022-01-31
* @return bool
*/
public function getByUID($uid, $limit = null, $activeOnly = true, $bis = null)
{
$qry = '
WITH basic_select AS (
SELECT *,
row_number() over (PARTITION BY studiensemester_kurzbz ORDER BY von DESC) r
FROM campus.tbl_zeitwunsch_gueltigkeit, public.tbl_studiensemester
WHERE mitarbeiter_uid = ' . $this->db_add_param($uid);
// Wenn Bis-Datum angegeben
if (!is_null($bis))
{
// Zeitwuensche nur bis zum angegebenen Bis-Datum
$qry.= '
AND (von < ende AND '. $this->db_add_param($bis). '::date > start))
';
}
// Wenn kein Bis-Datum angegeben ist
else
{
// Zeitwuensche bis zum Semesterende des chronologisch letzten Zeitwunsches (also der ZWG, wo bis NULL ist)
$qry.= '
AND (von < ende AND COALESCE(bis, (SELECT ende FROM public.tbl_studiensemester WHERE von BETWEEN start AND ende)) > start))';
}
$qry.= '
SELECT *
FROM basic_select
';
// Wenn nur aktive Zeitwunschgueltigkeiten angezeigt werden sollen
if ($activeOnly)
{
$qry.= ' WHERE r = 1';
}
$qry.= ' ORDER BY von DESC, start DESC';
// Wenn Limit angegeben
if (!is_null($limit))
{
$qry.= ' LIMIT '.$this->db_add_param($limit);
}
if ($result = $this->db_query($qry))
{
$this->result = array();
while ($row = $this->db_fetch_object($result))
{
$obj = new StdClass();
$obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->start = $row->start;
$obj->ende = $row->ende;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[]= $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
/**
* Ladet Zeitwunschgueltigkeiten einer UID und eines bestimmten Semesters (defaultmaeßig nur die letztgueltige)
* @param $uid
* @param $studiensemester_kurzbz
* @param null $limit limit = null liefert alle ZWG des Studiensemesters; limit = 1 liefert die letztgueltige ZWG.
* @return bool
*/
public function getByStudiensemester($uid, $studiensemester_kurzbz, $limit = 1)
{
$qry = '
WITH studiensemester AS
(
SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = '.$this->db_add_param($studiensemester_kurzbz). '
)
SELECT zwg.*, studiensemester_kurzbz, start, ende
FROM campus.tbl_zeitwunsch_gueltigkeit zwg, studiensemester ss
WHERE zwg.mitarbeiter_uid = '.$this->db_add_param($uid). '
AND (zwg.von < ss.ende AND COALESCE(zwg.bis, ss.ende) >= ss.start)
ORDER BY von DESC, bis DESC
';
// Wenn Limit angegeben
if (!is_null($limit))
{
// Ausgabe limitieren
$qry.= 'LIMIT '.$this->db_add_param($limit);
}
if ($result = $this->db_query($qry))
{
$this->result = array();
while ($row = $this->db_fetch_object($result))
{
$obj = new StdClass();
$obj->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
$obj->von = $row->von;
$obj->bis = $row->bis;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->start = $row->start;
$obj->ende = $row->ende;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[]= $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
+5 -1
View File
@@ -256,7 +256,7 @@ class zeugnisnote extends basis_db
* $studiensemester_kurzbz
* @return true wenn ok, false wenn Fehler
*/
public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz)
public function getZeugnisnoten($lehrveranstaltung_id, $student_uid, $studiensemester_kurzbz, $nichtAnzeigen = null)
{
$where='';
if($lehrveranstaltung_id!=null)
@@ -265,6 +265,8 @@ class zeugnisnote extends basis_db
$where.=" AND uid=".$this->db_add_param($student_uid);
if($studiensemester_kurzbz!=null)
$where.=" AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if ($nichtAnzeigen != null)
$where.=" AND tbl_note.anmerkung NOT IN (".$this->db_implode4SQL($nichtAnzeigen).")";
$where2='';
if($lehrveranstaltung_id!=null)
$where2.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
@@ -272,6 +274,8 @@ class zeugnisnote extends basis_db
$where2.=" AND student_uid=".$this->db_add_param($student_uid);
if($studiensemester_kurzbz!=null)
$where2.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if ($nichtAnzeigen != null)
$where2.=" AND tbl_note.anmerkung NOT IN (".$this->db_implode4SQL($nichtAnzeigen).")";
$qry = "SELECT vw_student_lehrveranstaltung.lehrveranstaltung_id, uid,
vw_student_lehrveranstaltung.studiensemester_kurzbz, note, punkte, uebernahmedatum, benotungsdatum,
+2
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Abgabetool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Endupload ist noch nicht erfolgt';
$this->phrasen['abgabetool/typ']='Typ';
$this->phrasen['abgabetool/titel']='Titel';
$this->phrasen['abgabetool/betreuerart']='Betreuerart';
@@ -89,4 +90,5 @@ $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für
$this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Zweitbegutachter';
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Fehler beim Ermitteln des Enduplaods der Projektarbeit';
?>
+1
View File
@@ -66,6 +66,7 @@ $this->phrasen['global/pdfExport']='PDF Export';
$this->phrasen['global/und']='und';
$this->phrasen['global/oder']='oder';
$this->phrasen['global/faelligAm']='Fällig am';
$this->phrasen['global/aenderungenZuruecksetzen']= "&Auml;nderungen zur&uuml;cksetzen";
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='Vorname';
+1
View File
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Lehrverbände';
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Übersicht der Lehrverbände';
$this->phrasen['lvplan/fehlerUndFeedback']='Feedback geben';
$this->phrasen['lvplan/lvKoordinationsstelle']='LV-Koordinationsstelle';
$this->phrasen['lvplan/lvPlanung']='LV-Planung';
$this->phrasen['lvplan/reservierungen']='Reservierungen';
$this->phrasen['lvplan/reservierungWurdeGeloescht']='Reservierung wurde geloescht';
$this->phrasen['lvplan/alleReservierungen']='Alle Reservierungen';
+2 -2
View File
@@ -61,7 +61,7 @@ $this->phrasen['testtool/einfuehrungsText']='
<h1 style="white-space: normal">Herzlich Willkommen zum Reihungstest</h1>
<a href="'.APP_ROOT.'cms/dms.php?id=142964" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=142976" alt="Einfuehrungsvideo" style="border: 1px solid lightgray; border-radius: 10px; width:350px;"></a>
<br><br>
<a href="'.APP_ROOT.'cms/dms.php?id=143926" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Bachelor</b>-Leitfaden zum Ablauf des Reihungstests</a><br>
<a href="'.APP_ROOT.'cms/dms.php?id=207694" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Bachelor</b>-Leitfaden zum Ablauf des Reihungstests</a><br>
<a href="'.APP_ROOT.'cms/dms.php?id=143928" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Master</b>-Leitfaden zum Ablauf des Reihungstests</a>
<br><br>
Unter dem folgenden Link können Sie die korrekte Darstellung des Reihungstests testen:<br><br>
@@ -71,7 +71,7 @@ $this->phrasen['testtool/einfuehrungsText']='
<h1 style="white-space: normal">Welcome to the placement test</h1>
<a href="'.APP_ROOT.'cms/dms.php?id=145596" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=142977" alt="Einfuehrungsvideo" style="border: 1px solid lightgray; border-radius: 10px; width:350px;"></a>
<br><br>
<a href="'.APP_ROOT.'cms/dms.php?id=143927" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Bachelor</b>-Guideline for placement test</a><br>
<a href="'.APP_ROOT.'cms/dms.php?id=207696" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Bachelor</b>-Guideline for placement test</a><br>
<a href="'.APP_ROOT.'cms/dms.php?id=143930" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1">&nbsp;<b>Master</b>-Guideline for placement test</a>
<br><br>
Under the following link you can test the correct display of the placement test:<br><br>
+19 -1
View File
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Es duerfen nur die Werte -
$this->phrasen['zeitwunsch/zeitwunsch']='Zeitwunsch';
$this->phrasen['zeitwunsch/help']='HELP';
$this->phrasen['zeitwunsch/zeitwunschVon']='Zeitwünsche von';
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein.';
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']="Tragen Sie in dieses Normwochenraster Ihre Verfügbarkeit in einer durchschnittlichen Arbeitswoche ein. Klicken Sie danach auf 'Speichern'";
$this->phrasen['zeitwunsch/letzteAenderung']='Letzte Änderung';
$this->phrasen['zeitwunsch/von']='von';
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='Das Formular zum Eintragen der Zeitsperren finden Sie %s hier';
$this->phrasen['zeitwunsch/erklärung']='Erklärung';
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Bitte kontrollieren/ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Bitte erstellen / ändern Sie Ihre Zeitwünsche und klicken Sie anschließend auf "Speichern"';
$this->phrasen['zeitwunsch/wert']='Wert';
$this->phrasen['zeitwunsch/bedeutung']='Bedeutung';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten';
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Erklärung';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die';
$this->phrasen['zeitwunsch/profil']='Profil';
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
$this->phrasen['zeitwunsch/gueltigIm']="Mein Zeitwunsch g&uuml;ltig im: ";
$this->phrasen['zeitwunsch/erklaerungstext']="Sie k&ouml;nnen Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.<br>
<br><b>Solange Sie keine &Auml;nderungen vornehmen, <u>wird Ihr Zeitwunsch immer ins n&auml;chste Studiensemester &uuml;bernommen.</u></b>";
$this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen";
$this->phrasen['zeitwunsch/kopierenText']="W&auml;hlen Sie rechts das gew&uuml;nschte Studiensemester aus.
Der Zeitwunsch wird dann <u>automatisch</u> in die Tabelle &uuml;bernommen.<br>
Nehmen Sie gegebenenfalls &Auml;nderungen vor und klicken danach auf 'Speichern'.";
$this->phrasen['zeitwunsch/kopieren']= "&auml;ndern";
$this->phrasen['zeitwunsch/aendern']= "kopieren von fr&uuml;herem Studiensemester&emsp;";
$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant';
$this->phrasen['zeitwunsch/fuer']='Zeitwunsch f&uuml;r %s &ensp;';
$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Bearbeitung deaktiviert';
$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='Ihnen wurden im %s bereits Lehrveranstaltung(en) zugeteilt.<br>
Bitte stimmen Sie sich vor einer &Auml;nderung <a href="mailto:%s">per Mail</a> mit den betroffenen Studieng&auml;ngen ab.<br>
M&ouml;chten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?';
$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren';
$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird &uuml;ber die &Auml;nderung per Mail informiert';
?>
+2
View File
@@ -1,6 +1,7 @@
<?php
$this->phrasen['abgabetool/abgabetool']='Submission tool';
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Final version not uploaded yet';
$this->phrasen['abgabetool/typ']='Type';
$this->phrasen['abgabetool/titel']='Title';
$this->phrasen['abgabetool/betreuerart']='Supervisor type';
@@ -89,4 +90,5 @@ $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no
$this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='First-/Assessor';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Second Assessor';
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Error when getting endupload of project work';
?>
+1
View File
@@ -65,6 +65,7 @@ $this->phrasen['global/drucken']='Print';
$this->phrasen['global/und']='and';
$this->phrasen['global/oder']='or';
$this->phrasen['global/faelligAm']='Due on';
$this->phrasen['global/aenderungenZuruecksetzen']= "Reset changes";
$this->phrasen['global/username']='Username';
$this->phrasen['global/vorname']='First Name';
+1
View File
@@ -21,6 +21,7 @@ $this->phrasen['lvplan/lehrverbaende']='Teaching Groups';
$this->phrasen['lvplan/uebersichtDerLehrverbaende']='Overview of Teaching Groups';
$this->phrasen['lvplan/fehlerUndFeedback']='Send Feedback';
$this->phrasen['lvplan/lvKoordinationsstelle']='Course-Coordination Office';
$this->phrasen['lvplan/lvPlanung']='Course-Planning Office';
$this->phrasen['lvplan/reservierungen']='Reservations';
$this->phrasen['lvplan/reservierungWurdeGeloescht'] = 'Reservation successfully deleted';
$this->phrasen['lvplan/alleReservierungen']='All reservations';
+19 -1
View File
@@ -3,12 +3,13 @@ $this->phrasen['zeitwunsch/falscheWerteEingetragen']='Invalid input. Only the va
$this->phrasen['zeitwunsch/zeitwunsch']='Preferred teaching time';
$this->phrasen['zeitwunsch/help']='HELP';
$this->phrasen['zeitwunsch/zeitwunschVon']='Preferred teaching times for';
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid.';
$this->phrasen['zeitwunsch/tragenSieInDiesesNormwochenraster']='Enter your availability for an average week in this standard week grid and click "Save"';
$this->phrasen['zeitwunsch/letzteAenderung']='Last Update';
$this->phrasen['zeitwunsch/von']='from';
$this->phrasen['zeitwunsch/formularZumEintragenDerZeitsperren']='The form for entering times when you are unavailable to teach can be found %s here';
$this->phrasen['zeitwunsch/erklärung']='Explanation';
$this->phrasen['zeitwunsch/kontrollierenSieIhreZeitwuensche']='Please check/change your preferred teaching times and click "Save"';
$this->phrasen['zeitwunsch/erstellenSieIhreZeitwuensche']='Please enter / change your preferred teaching times and click "Save"';
$this->phrasen['zeitwunsch/wert']='Value';
$this->phrasen['zeitwunsch/bedeutung']='Meaning';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time';
@@ -23,4 +24,21 @@ $this->phrasen['zeitwunsch/erklaerung']='Explanation';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the ';
$this->phrasen['zeitwunsch/profil']='Profile';
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
$this->phrasen['zeitwunsch/gueltigIm']="My preferred times valid in: ";
$this->phrasen['zeitwunsch/erklaerungstext']="You can edit your preferred times directly in the table or copy a your preferred times from a previous semester.<br>
<b>As long as you do not make any changes, your preferred times will be carried over to the next study semester.</b>";
$this->phrasen['zeitwunsch/werteAuf1setzen']="Set all values to 1";
$this->phrasen['zeitwunsch/kopierenText']="Select the desired semester on the right.
Your preferred time of that semester is then <u> automatically </u> transferred to the table.<br>
Make changes if necessary and then click on 'Save'.";
$this->phrasen['zeitwunsch/kopieren']= "change";
$this->phrasen['zeitwunsch/aendern']= "copy from a previous semester";
$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Hours already scheduled for %s';
$this->phrasen['zeitwunsch/fuer']='Preferred time for %s &ensp;';
$this->phrasen['zeitwunsch/bearbeitungDeaktiviert']='Editing disabled';
$this->phrasen['zeitwunsch/bearbeitungDeaktiviertText']='You have already been assigned to course(s) in %s.</span><br>
Please agree <a href="mailto:%s">per Mail</a> with the degree programs concerned, before making a change.<br>
Would you still like to continue without agreement or after having agreed?';
$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Enable editing';
$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: The field of competence will be informed of your changes by email';
?>
-127
View File
@@ -1,127 +0,0 @@
# Globally valid entries
build_settings:
ignore: # Ignores vendor and tests folders
- "vendor"
- "tests"
pgsql: # PostgreSQL connection parameters
host: "localhost;dbname=template1" # Connects to the template1 database to be able to drop database fhcomplete
user: "fhcomplete"
pass: "fhcomplete"
setup: # First!
pgsql: # Close previous connections to database -> drop database -> create database
- "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'fhcomplete';"
- "DROP DATABASE IF EXISTS fhcomplete;"
- "CREATE DATABASE fhcomplete;"
composer: # Run composer to install all the required 3rd party software
shell:
# Install addons
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Abrechnung.git %BUILD_PATH%/addons/abrechnung"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Asterisk.git %BUILD_PATH%/addons/asterisk"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Aufnahme.git %BUILD_PATH%/addons/aufnahme"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Bewerbung.git %BUILD_PATH%/addons/bewerbung"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-CaseTime.git %BUILD_PATH%/addons/casetime"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LDAP.git %BUILD_PATH%/addons/ldap"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Lehrmittel.git %BUILD_PATH%/addons/lehrmittel"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LV-Evaluierung.git %BUILD_PATH%/addons/lvevaluierung"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-LVInfo.git %BUILD_PATH%/addons/lvinfo"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Kompetenzen.git %BUILD_PATH%/addons/kompetenzen"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Moodle.git %BUILD_PATH%/addons/moodle"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Reports.git %BUILD_PATH%/addons/reports"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Studiengangsverwaltung.git %BUILD_PATH%/addons/studiengangsverwaltung"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-Textbausteine.git %BUILD_PATH%/addons/textbausteine"
- "git clone --quiet https://github.com/FH-Complete/FHC-AddOn-WaWi.git %BUILD_PATH%/addons/wawi"
# Copy addons configs
- "cp -R /var/www/configs/fhc/abrechnung/* %BUILD_PATH%/addons/abrechnung"
- "cp -R /var/www/configs/fhc/asterisk/* %BUILD_PATH%/addons/asterisk"
- "cp -R /var/www/configs/fhc/bewerbung/* %BUILD_PATH%/addons/bewerbung"
- "cp -R /var/www/configs/fhc/casetime/* %BUILD_PATH%/addons/casetime"
- "cp -R /var/www/configs/fhc/lehrmittel/* %BUILD_PATH%/addons/lehrmittel"
- "cp -R /var/www/configs/fhc/lvinfo/* %BUILD_PATH%/addons/lvinfo"
- "cp -R /var/www/configs/fhc/reports/* %BUILD_PATH%/addons/reports"
- "cp -R /var/www/configs/fhc/wawi/* %BUILD_PATH%/addons/wawi"
# Copy core configs and .htaccess
- "cp -R /var/www/configs/fhc/configs/* ./config"
- "cp /var/www/configs/fhc/configs/.htaccess ./cis/private/"
- "cp /var/www/configs/fhc/configs/.htaccess ./content"
- "cp /var/www/configs/fhc/configs/.htaccess ./rdf"
- "cp /var/www/configs/fhc/configs/.htaccess ./system"
- "cp /var/www/configs/fhc/configs/.htaccess ./vilesci"
# Create core directories
- "mkdir documents"
- "mkdir documents/csv_import"
- "mkdir documents/dms"
- "mkdir documents/import"
- "mkdir documents/benotungstool"
- "mkdir paabgabe"
# Copy codeigniter configs
- "mkdir ./application/config/development"
- "cp -R /var/www/configs/ci/* ./application/config/development"
# Clone extensions
- "git clone --quiet https://github.com/FH-Complete/FHC-Core-MobilityOnline.git /tmp/FHC-Core-MobilityOnline"
- "git clone --quiet https://github.com/FH-Complete/FHC-Core-Budget.git /tmp/FHC-Core-Budget"
- "git clone --quiet https://github.com/FH-Complete/FHC-Core-DSMS.git /tmp/FHC-Core-DSMS"
- "git clone --quiet https://github.com/FH-Complete/FHC-Core-Nextcloud.git /tmp/FHC-Core-Nextcloud"
# Create extensions archives
- "tar cfzP /tmp/FHC-Core-MobilityOnline.tgz /tmp/FHC-Core-MobilityOnline/"
- "tar cfzP /tmp/FHC-Core-Budget.tgz /tmp/FHC-Core-Budget/"
- "tar cfzP /tmp/FHC-Core-DSMS.tgz /tmp/FHC-Core-DSMS/"
- "tar cfzP /tmp/FHC-Core-Nextcloud.tgz /tmp/FHC-Core-Nextcloud/"
# Install extensions
#- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-MobilityOnline /tmp/FHC-Core-MobilityOnline.tgz"
#- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-Budget /tmp/FHC-Core-Budget.tgz"
#- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-DSMS /tmp/FHC-Core-DSMS.tgz"
#- "php index.ci.php system/extensions/CLI_Manager uploadExtension FHC-Core-Nextcloud /tmp/FHC-Core-Nextcloud.tgz"
# Remove temporary files
- "rm -fR /tmp/FHC-Core-MobilityOnline*"
- "rm -fR /tmp/FHC-Core-Budget*"
- "rm -fR /tmp/FHC-Core-DSMS*"
- "rm -fR /tmp/FHC-Core-Nextcloud*"
# Change files permissions
- "chmod -R 0770 *"
- "find . -type f -exec chmod 0644 {} \\;"
# Create a symlink to the current build folder
- "ln -s %BUILD_PATH% ../fhcomplete"
test: # Run tests
php_parallel_lint: # Lint cannot fail!
php_mess_detector: # Mess detector
rules:
- "unusedcode"
- "codesize"
- "design"
allow_failures: true
php_cpd: # Copy/paste detector
ignore:
- "rdf"
- "config"
- "locale"
- "application/config"
- "application/views"
# Global ignore is overwritten by the specific one
- "vendor"
- "tests"
allow_failures: true
php_code_sniffer: # Code sniffer
standard: "tests/codesniffer/FHComplete"
ignore:
- "rdf"
- "locale"
- "application/views"
allowed_warnings: -1 # Warnings are ignored for a successful build
allow_failures: true
#codeception: # Codeception
# config: "tests/codeception/"
# path: "tests/codeception/_output/"
# allow_failures: true
failure: # On failure
email: # Send an email to warn the team
default_mailto_address: systementwicklung@technikum-wien.at
complete: # Last!
pgsql: # Close previous connections to database -> drop database
- "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'fhcomplete';"
- "DROP DATABASE IF EXISTS fhcomplete;"
shell: # Remove the previously created symlink
- "rm ../fhcomplete"
@@ -3,6 +3,8 @@ const ANRECHNUNGSTATUS_REJECTED = 'rejected';
const HERKUNFT_DER_KENNTNISSE_MAX_LENGTH = 125;
$(function(){
const uploadMaxFilesize = $('#requestAnrechnung-uploadfile').data('maxsize') ; // in byte
// Set status alert color
requestAnrechnung.setStatusAlertColor();
@@ -26,6 +28,12 @@ $(function(){
// Avoid form redirecting automatically
e.preventDefault();
var fileInput = $('#requestAnrechnung-uploadfile');
if (!requestAnrechnung.fileSizeOk(fileInput, uploadMaxFilesize)) // in byte
{
return FHC_DialogLib.alertWarning(FHC_PhrasesLib.t("ui", "errorDokumentZuGross"));
}
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/apply",
{
@@ -161,5 +169,19 @@ var requestAnrechnung = {
// Disable all form elements
$("#requestAnrechnung-form :input").prop("disabled", true);
},
fileSizeOk: function(fileInput, maxSize){
if (fileInput.get(0).files.length){
var fileSize = fileInput.get(0).files[0].size; // in bytes
if (fileSize > maxSize)
{
return false;
}
return true;
}
}
}
+176
View File
@@ -0,0 +1,176 @@
$(function(){
var studiensemesterStart = $("#studsemStart").val();
Zverfueg.initDatepicker(studiensemesterStart);
$('#form-zeitverfuegbarkeit').submit(function(e){
e.preventDefault();
let zeitsperre_id = this.zeitsperre_id.value;
let mitarbeiter_uid = this.mitarbeiter_uid.value;
let lektor = this.mitarbeiter_uid.options[this.mitarbeiter_uid.selectedIndex].text;
let bezeichnung = this.bezeichnung.value;
let vondatum = this.vondatum.value;
let vonstunde = this.vonstunde.value;
let bisdatum = this.bisdatum.value;
let bisstunde = this.bisstunde.value;
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/saveZeitverfuegbarkeit",
{
zeitsperre_id: zeitsperre_id,
mitarbeiter_uid: mitarbeiter_uid,
bezeichnung: bezeichnung,
zeitsperretyp_kurzbz: 'ZVerfueg',
vondatum: vondatum,
vonstunde: vonstunde,
bisdatum: bisdatum,
bisstunde: bisstunde
},
{
successCallback: function (data, textStatus, jqXHR)
{
if (FHC_AjaxClient.isError(data))
{
FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
}
if (FHC_AjaxClient.hasData(data))
{
if (zeitsperre_id == '')
{
// Add row
$('#tableWidgetTabulator').tabulator('addRow', {
zeitsperre_id: FHC_AjaxClient.getData(data).zeitsperre_id,
mitarbeiter_uid: mitarbeiter_uid,
lektor: lektor,
vondatum: vondatum,
vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
bisdatum: bisdatum,
bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
bezeichnung: bezeichnung
}, true); // true adds new row on top
}
else {
$('#tableWidgetTabulator').tabulator('updateData', [{
zeitsperre_id: zeitsperre_id,
vondatum: vondatum,
vonstunde: $.isNumeric(vonstunde) ? vonstunde : '',
bisdatum: bisdatum,
bisstunde: $.isNumeric(bisstunde) ? bisstunde : '',
bezeichnung: bezeichnung
}]);
}
// Reset form
Zverfueg.resetFormFields();
// Disable form elements
Zverfueg.disableFormElements();
// Display success message
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
}
}
);
})
$('#btn-delete').click(function() {
let zeitsperre_id = $('#zeitsperre_id').val();
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/deleteZeitverfuegbarkeit",
{
zeitsperre_id: zeitsperre_id,
},
{
successCallback: function (data, textStatus, jqXHR) {
if (FHC_AjaxClient.isError(data)) {
FHC_DialogLib.alertWarning(FHC_AjaxClient.getError(data));
}
if (FHC_AjaxClient.hasData(data)) {
// Delete row
let row = $('#tableWidgetTabulator').tabulator('getRow', zeitsperre_id);
row.delete(zeitsperre_id);
// Reset form
Zverfueg.resetFormFields();
// Disable form elements
Zverfueg.disableFormElements();
// Display delete message
FHC_DialogLib.alertSuccess(FHC_AjaxClient.getData(data).msg);
}
},
errorCallback: function (jqXHR, textStatus, errorThrown)
{
FHC_DialogLib.alertError(FHC_PhrasesLib.t("ui", "systemfehler"));
}
});
});
$('#btn-break').click(function () {
Zverfueg.disableFormElements();
})
})
var Zverfueg = {
initDatepicker: function (studiensemesterStart) {
// Prevent opening HTMl date picker
$('input[type=date]').on('click', function(event) {
event.preventDefault();
});
$.datepicker.setDefaults($.datepicker.regional['de']);
$( ".zverfueg-datepicker" ).datepicker({
"dateFormat": "yy-mm-dd",
"minDate": $.datepicker.formatDate('yy-mm-dd', new Date(studiensemesterStart))
});
},
resetFormFields: function(){
$('#form-zeitverfuegbarkeit')
.trigger('reset')
.find('input:hidden[name=zeitsperre_id]').val('')
.find('textarea[name=bezeichnung]').val('');
},
disableFormElements: function (){
$('#btn-delete').prop('disabled', true).tooltip('enable');
$('#mitarbeiter_uid').prop('disabled', false);
},
enableFormElements: function (){
$('#btn-delete').prop('disabled', false).tooltip('disable');
$('#mitarbeiter_uid').prop('disabled', true);
}
}
// TABULATOR FUNCTIONS
// ---------------------------------------------------------------------------------------------------------------------
function func_rowSelected(row){
Zverfueg.enableFormElements();
// Set form fields
$('#zeitsperre_id').val(row.getData().zeitsperre_id);
$('#mitarbeiter_uid').val(row.getData().mitarbeiter_uid);
$('#bezeichnung').val(row.getData().bezeichnung);
$('#vondatum').datepicker('setDate', row.getData().vondatum);
$('#bisdatum').datepicker('setDate', row.getData().bisdatum);
$('#vonstunde').val(row.getData().vonstunde);
$('#bisstunde').val(row.getData().bisstunde);
}
function func_rowDeselected(row){
Zverfueg.resetFormFields();
Zverfueg.disableFormElements();
Zverfueg.resetFormFields();
}
+3 -3
View File
@@ -30,9 +30,9 @@ header("Content-type: application/xhtml+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// DAO
require_once('../config/vilesci.config.inc.php');
require_once('../include/adresse.class.php');
require_once('../include/adressentyp.class.php');
$adresse = new adresse();
$adresse = new adressentyp();
$rdf_url='http://www.technikum-wien.at/adressentyp';
echo '
@@ -44,7 +44,7 @@ echo '
<RDF:Seq about="'.$rdf_url.'/liste">
';
if ($adresse->getAdressentyp())
if ($adresse->getAll())
{
foreach ($adresse->result as $row)
{
+2 -2
View File
@@ -287,7 +287,7 @@ if($prestudent_help->load($prest_id))
$titel_kurzbz = '';
}
if ($prestudent_help->getLastStatus($prest_id, null, 'Student'))
if ($prestudent_help->getLastStatus($prest_id, null))
{
$studienplan_id = $prestudent_help->studienplan_id;
$studienordnung = new studienordnung();
@@ -327,7 +327,7 @@ foreach($prestudent_arr as $prest_id)
$lehrgangstyp = new studiengang();
$lehrgangstyp->loadLehrgangstyp($studiengang->lgartcode);
if ($prestudent->getLastStatus($prestudent->prestudent_id, null, 'Student'))
if ($prestudent->getLastStatus($prestudent->prestudent_id, null))
{
$studienplan_id = $prestudent->studienplan_id;
$studienordnung = new studienordnung();
+17 -1
View File
@@ -649,7 +649,16 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
WHERE
student_uid = ".$db->db_add_param($uid_arr[$i])."
AND zeugnis = true
AND studiensemester_kurzbz in (".$sqlStudent->implode4SQL($aktuellesSemester).")
AND studiensemester_kurzbz in (".$sqlStudent->implode4SQL($aktuellesSemester).")";
if (defined('ZEUGNISNOTE_NICHT_ANZEIGEN'))
{
$qry .="
AND note.anmerkung NOT IN (".$sqlStudent->implode4SQL(unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN)).")
";
};
$qry .= "
AND NOT EXISTS(SELECT 1 FROM bis.tbl_bisio JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id
AND student_uid=".$db->db_add_param($uid_arr[$i])."
@@ -916,6 +925,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
lehrveranstaltung_id = ".$db->db_add_param($row_outgoing->lehrveranstaltung_id)."
AND student_uid = ".$db->db_add_param($uid_arr[$i]);
if (defined('ZEUGNISNOTE_NICHT_ANZEIGEN'))
{
$qry_outgoing_note .= "
AND tbl_note.anmerkung NOT IN (".$db->implode4SQL(unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN)).")
";
};
if($result_outgoing_note = $db->db_query($qry_outgoing_note))
{
if($row_outgoing_note = $db->db_fetch_object($result_outgoing_note))
+12 -1
View File
@@ -40,6 +40,8 @@ require_once('../include/mitarbeiter.class.php');
require_once('../include/zeitaufzeichnung_gd.class.php');
require_once('../include/lehreinheitmitarbeiter.class.php');
require_once('../include/vertrag.class.php');
require_once('../include/studiensemester.class.php');
require_once('../include/zeitsperre.class.php');
$uid=get_uid();
$error_msg='';
@@ -63,7 +65,7 @@ if (isset($_GET['sem']))
else
$sem=0;
if (isset($_GET['lektor']))
$lektor=$_GET['lektor'];
$lektor=$_GET['lektor'];
else
$lektor=$uid;
if (isset($_GET['ver']))
@@ -136,6 +138,14 @@ if (!$error_msg)
die ('Fehler bei Methode getLehreinheitLVPL(): '.$lehreinheit->errormsg);
$lva=$lehreinheit->lehreinheiten;
$rdf_url='http://www.technikum-wien.at/lehreinheit-lvplan/';
// Positive Zeitsperre 'Zeitverfuegbarkeit' holen
$ss = new Studiensemester($studiensemester);
$zeitsperre = new Zeitsperre();
$zeitsperre->getVonBis($lektor, $ss->start, $ss->ende, 'ZVerfueg');
$zeitverfuegbarkeit = count($zeitsperre->result) > 0 ? 'Zeit verfügbar' : '';
?>
<RDF:RDF
@@ -395,6 +405,7 @@ if ($anz>0)
<LVA:anzahl_notizen>'.$anzahl_notizen.'</LVA:anzahl_notizen>
<LVA:lehreinheit_id>'.$l->lehreinheit_id[0].'</LVA:lehreinheit_id>
<LVA:vertragsstatus>'.$vertragsstatus.'</LVA:vertragsstatus>
<LVA:zeitverfuegbarkeit>'. $zeitverfuegbarkeit. '</LVA:zeitverfuegbarkeit>
</RDF:Description>
</RDF:li>';
}
+1 -3
View File
@@ -256,9 +256,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
}
$obj = new zeugnisnote();
$obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid_arr[$i], $studiensemester_kurzbz);
$obj->getZeugnisnoten($lehrveranstaltung_id=null, $uid_arr[$i], $studiensemester_kurzbz, (defined('ZEUGNISNOTE_NICHT_ANZEIGEN')) ? unserialize(ZEUGNISNOTE_NICHT_ANZEIGEN) : null);
$ects_gesamt = $ects_gesamt_positiv = 0;
$prestudent_id = $row->prestudent_id;
+6
View File
@@ -20,6 +20,12 @@ label.tempus_vertrag_info
font-size: x-small
}
label.tempus_lektor_verfuegbarezeit
{
font-weight: bold;
color: green;
}
label.kalenderwoche
{
font-size: medium;
+164 -1
View File
@@ -3418,6 +3418,20 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_variablenname WHERE name
}
}
// Add new name type in public.tbl_variablenname
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_variablenname WHERE name = 'projektuebersicht_studiensemester';"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO public.tbl_variablenname(name, defaultwert) VALUES('projektuebersicht_studiensemester', null);";
if (!$db->db_query($qry))
echo '<strong>public.tbl_variablenname '.$db->db_last_error().'</strong><br>';
else
echo 'public.tbl_variablenname: Added name "projektuebersicht_studiensemester"<br>';
}
}
// Add column projektphase_id to tbl_zeitaufzeichnung
if(!$result = @$db->db_query("SELECT projektphase_id FROM campus.tbl_zeitaufzeichnung LIMIT 1"))
{
@@ -5965,6 +5979,126 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI
echo '<br>Added column behebung_parameter to table system.tbl_issue';
}
// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data
if($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_schema LIKE 'campus' AND table_name = 'tbl_zeitwunsch_gueltigkeit'"))
{
if ($db->db_fetch_object($result) == false)
{
$qry = "
CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
(
zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
von DATE,
bis DATE,
insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
insertvon CHARACTER VARYING(32),
updateamum TIMESTAMP WITHOUT TIME ZONE,
updatevon CHARACTER VARYING(32)
);
CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
-- Add Primary Key
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
-- Add Permissions
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
-- Initial data migration
INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
(
mitarbeiter_uid,
von,
bis,
insertamum,
insertvon,
updateamum,
updatevon
)
SELECT * FROM
(
-- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
SELECT DISTINCT mitarbeiter_uid,
(SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
NULL::DATE AS \"ende\",
NOW(),
'system',
NOW(),
'system'
FROM campus.tbl_zeitwunsch
ORDER BY mitarbeiter_uid
) AS init_data
";
if(!$db->db_query($qry))
echo '<strong>campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'</strong><br>';
else
echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt<br>';
}
}
// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch
if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_zeitwunsch' AND column_name IN ('zeitwunsch_id', 'zeitwunsch_gueltigkeit_id')"))
{
if ($db->db_num_rows($result) <> 2)
{
$qry = "
ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
-- Add primary key and foreign key
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_id INTEGER;
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_gueltigkeit_id INTEGER;
-- Add comments
COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
-- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
UPDATE campus.tbl_zeitwunsch
SET zeitwunsch_gueltigkeit_id = (
SELECT zeitwunsch_gueltigkeit_id
FROM campus.tbl_zeitwunsch_gueltigkeit zwg
WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
);
-- Set primary key and foreign key NOT NULL
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
-- Set permissions
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
";
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitwunsch: ' . $db->db_last_error() . '</strong><br>';
else
echo '<br>campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
}
}
// Add index beschreibung to system.tbl_webservicelog
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservicelog_beschreibung'"))
{
@@ -5979,6 +6113,34 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
}
}
// Insert postive Zeitsperre 'Zeitverfuegbarkeit' to tbl_zeitsperretyp
if($result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitsperretyp WHERE zeitsperretyp_kurzbz = 'ZVerfueg';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO campus.tbl_zeitsperretyp(zeitsperretyp_kurzbz, beschreibung) VALUES('ZVerfueg', 'Zeitverfügbarkeit');";
if(!$db->db_query($qry))
echo '<strong>campus.tbl_zeitsperretyp '.$db->db_last_error().'</strong><br>';
else
echo 'campus.tbl_zeitsperretyp: Added value \'ZVerfueg\'<br>';
}
}
// Add permission to administrate zeitverfuegbarkeiten
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/zeitverfuegbarkeit';"))
{
if($db->db_num_rows($result) == 0)
{
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/zeitverfuegbarkeit', 'Zeitverfuegbarkeit verwalten');";
if(!$db->db_query($qry))
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
else
echo ' system.tbl_berechtigung: Added permission for lehre/zeitverfuegbarkeit<br>';
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -6071,7 +6233,8 @@ $tabellen=array(
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon", "zeitwunsch_id", "zeitwunsch_gueltigkeit_id"),
"campus.tbl_zeitwunsch_gueltigkeit" => array("zeitwunsch_gueltigkeit_id","mitarbeiter_uid","von","bis","insertamum","insertvon", "updateamum","updatevon"),
"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","zeitaufzeichnung"),
+27
View File
@@ -1011,6 +1011,33 @@ $filters = array(
',
'oe_kurzbz' => null,
),
array(
'app' => 'projektarbeitsbeurteilung',
'dataset_name' => 'projektuebersicht',
'filter_kurzbz' => 'alleProjekte',
'description' => '{Projektübersicht}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "Projektübersicht",
"columns": [
{"name": "ProjectWorkID"},
{"name": "ErstNachname"},
{"name": "ErstAbgeschickt"},
{"name": "ZweitNachname"},
{"name": "ZweitAbgeschickt"},
{"name": "StudentNachname"},
{"name": "Note"},
{"name": "Abgabedatum"},
{"name": "Studiengang"},
{"name": "Kommissionsmitglieder"}
],
"filters": []
}
',
'oe_kurzbz' => null,
),
array(
'app' => 'dvuh',
'dataset_name' => 'storno',
+658 -41
View File
@@ -1554,6 +1554,26 @@ $phrases = array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'geloescht',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Gel&ouml;scht',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Deleted',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -8695,18 +8715,58 @@ Any unusual occurrences
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheckUnauffaellig',
'phrase' => 'titelDerArbeit',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Plagiatscheck ist unauffällig.',
'text' => 'Titel',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The plagiarism check reveals nothing of note.',
'text' => 'Title of ',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheckBeschreibung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the paper has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheckBeschreibungMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
'description' => '',
'insertvon' => 'system'
)
@@ -8806,7 +8866,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'The subject was handled in a suitable manner for a master thesis (well-structured, meaningful research questions or tasks, etc.)',
'text' => 'The subject was handled in a suitable manner for a Master\'s thesis (well-structured, meaningful research questions or tasks, etc.)',
'description' => '',
'insertvon' => 'system'
)
@@ -8840,13 +8900,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Lösungsansatz ist dem Stand der Technik entsprechend argumentiert und zeigt ein adäquates Problemverständnis.',
'text' => 'Der Lösungsansatz ist für das Thema geeignet und entspricht dem Stand der Technik.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The approach to the solution is argued according to the state of the art and shows an adequate understanding of the problem.',
'text' => 'The approach to the solution is suitable for the topic and corresponds to the state of the art.',
'description' => '',
'insertvon' => 'system'
)
@@ -8880,13 +8940,33 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die methodische Vorgangsweise ist in Bezug auf die Ausrichtung der Arbeit (technisch-ingenieurwissenschaftlich, sozial-wirtschaftswissenschaftlich…) angemessen, gut begründet und wird korrekt umgesetzt.',
'text' => 'Das Vorgehen ist in Bezug auf die fachspezifische Ausrichtung der Arbeit angemessen, anhand der Fachliteratur begründet und korrekt umgesetzt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The methodological approach is appropriate, well-founded and correctly implemented in relation to the orientation of the work (technical-engineering, socio-economic…).',
'text' => 'The procedure is appropriate in relation to the subject-specific orientation of the paper, justified on the basis of the specialist literature and correctly implemented.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'methodeTextMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Das Vorgehen ist in Bezug auf die fachspezifische Ausrichtung der Arbeit angemessen, anhand der Fachliteratur begründet und korrekt umgesetzt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The procedure is appropriate in relation to the subject-specific orientation of the thesis, justified on the basis of the specialist literature and correctly implemented.',
'description' => '',
'insertvon' => 'system'
)
@@ -8920,33 +9000,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Frage- bzw. Aufgabenstellungen wurden zielführend beantwortet; die Ergebnisse werden diskutiert.',
'text' => 'Die Ergebnisse werden im Lichte der Fragestellung interpretiert und kritisch diskutiert im Hinblick auf ihren Mehrwert für Forschung und/oder Berufspraxis. Visualisierungen unterstützen die Argumentation.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The research questions or the tasks were answered in a manner appropriate with the objectives; the results are discussed.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'ereignisseDiskussionTextMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Forschungsfrage(n) wurde(n) zielführend beantwortet; die Ergebnisse werden kritisch diskutiert und liefern einen Mehrwert für Forschung und/oder Berufspraxis.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The research question(s) was (were) answered in a manner appropriate with the objectives; the results are examined critically and provide added value for research and / or professional practice.',
'text' => 'The results are interpreted in the light of the research question and critically discussed with regard to their added value for research and/or professional practice. Visualisations support the argumentation.',
'description' => '',
'insertvon' => 'system'
)
@@ -8977,6 +9037,26 @@ Any unusual occurrences
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'eigenstaendigkeitText',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Arbeit wurde in selbständiger Arbeitsweise (z.B. eigenständige Lösung der Fragestellungen und aufgetretener Probleme) verfasst.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The paper was written in an independent way (e.g. independent solutions to the questions and problems that occurred)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'eigenstaendigkeitTextMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
@@ -9020,13 +9100,33 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Arbeit ist schlüssig aufgebaut und gut strukturiert.',
'text' => 'Die Arbeit ist schlüssig strukturiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The thesis is coherently arranged and well structured.',
'text' => 'The paper is structured coherently.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'strukturTextMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Arbeit ist schlüssig strukturiert.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The thesis is structured coherently.',
'description' => '',
'insertvon' => 'system'
)
@@ -9060,13 +9160,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Der Stil entspricht einer wissenschaftlichen Arbeit. Die Arbeit ist flüssig lesbar und weist eine klare, eindeutige und gendergerechte Sprache auf.',
'text' => 'Rechtschreibung und Grammatik sind korrekt. Die Verwendung von Fachsprache ist angemessen. Die Anforderungen an gendergerechte Sprache sind nach den geltenden Richtlinien umgesetzt.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The style is suitable for a piece of scientific work. The thesis is easy to read and has a clear, unambiguous and gender-appropriate language.',
'text' => 'Spelling and grammar are correct. The use of technical language is appropriate. The requirements for gender-appropriate language are implemented according to the applicable guidelines.',
'description' => '',
'insertvon' => 'system'
)
@@ -9140,13 +9240,33 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die verwendeten Quellen sind passend, aktuell und werden ausreichend variiert.',
'text' => 'Quellen und Literatur sind für die wissenschaftliche Auseinandersetzung mit dem Thema der Arbeit relevant, geben den aktuellen Stand der Forschung wieder und decken das Thema ab.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The sources used are appropriate, current and sufficiently varied.',
'text' => 'Sources and literature are relevant for the scientific discussion of the topic of the paper, reflect the current state of the art and cover the topic.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'literaturTextMaster',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Quellen und Literatur sind für die wissenschaftliche Auseinandersetzung mit dem Thema der Arbeit relevant, geben den aktuellen Stand der Forschung wieder und decken das Thema ab.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Sources and literature are relevant for the scientific discussion of the topic of the thesis, reflect the current state of the art and cover the topic.',
'description' => '',
'insertvon' => 'system'
)
@@ -9360,13 +9480,33 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%%, ist die %s insgesamt als negativ zu beurteilen.',
'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die {0} insgesamt als negativ zu beurteilen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50%% in total, the %s is to be assessed as negative overall.',
'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50% in total, the {0} is to be assessed as negative overall.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'notenschluesselHinweisNullPunkteEinKriterium',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Falls ein Kriterium mit 0 Punkten bewertet wird, ist die {0} insgesamt als negativ zu beurteilen.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'If a criterion is assessed with 0 points, the {0} is to be assessed as negative overall.',
'description' => '',
'insertvon' => 'system'
)
@@ -9560,13 +9700,13 @@ Any unusual occurrences
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Ist die Arbeit gut strukturiert?',
'text' => 'Ist die Arbeit schlüssig strukturiert?',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Is the thesis well structured?',
'text' => 'Is the thesis structured coherently?',
'description' => '',
'insertvon' => 'system'
)
@@ -9586,7 +9726,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 's the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?',
'text' => 'Is the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?',
'description' => '',
'insertvon' => 'system'
)
@@ -9792,6 +9932,443 @@ Any unusual occurrences
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'projektarbeitsbeurteilungUebersicht',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Projektarbeitsbeurteilungsübersicht',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Projekt Work Assessment Overview',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'abgabedatum',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Abgabe - Datum',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Upload - Date',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'freischaltung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Freischaltung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Activation',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'resendToken',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Token an Zweit-Begutachter*in senden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Send token to Second Assessor',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'freischalten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Freischalten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Unlock',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'kommissionellePruefungHinweis',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Dies ist eine im Rahmen einer kommissionellen Wiederholungsprüfung vorgelegte Bachelorarbeit. Die Beurteilung erfolgt erst im Anschluss an eine Abstimmung der Mitglieder des Prüfungssenats.',
'description' => '',
),
array(
'sprache' => 'English',
'text' => 'This is a Bachelor\'s thesis submitted within the frame of a committee re-sit examination. The assessment only takes place after a vote of the members of the examination commission.',
'description' => '',
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'kommissionMailSenden',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Infomail an Mitglieder des Prüfungssenats senden',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Send infomail to members of the examination committee',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'kommissionMailGesendet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mail an Mitglieder des Prüfungssenats gesendet',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Sent mail to members of the examination committee',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'kommissionMailFehler',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Senden der Mail an Prüfungssenat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error when sending mail to commission members',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'zweitbetreuerBewertungFehlt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Absenden erst nach Abschluss der Bewertung durch Zweitbegutachter*in möglich',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Sending only possible after completion of assessment by Second Assessor',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'nichtErfuellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'nicht erfüllt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'not fulfilled',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'mindestanforderungErfuellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mindestanforderung erfüllt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'minimum requirement fulfilled',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'inWeitenTeilenErfuellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'in weiten Teilen erfüllt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'fulfilled for the most part',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'vollstaendigErfuellt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'vollständig erfüllt',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'fully fulfilled',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'kommissionsmitglieder',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Mitglieder Prüfungssenat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Members of the examination commission',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheckNichtGesetzt',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Plagiatscheck auffällig, negative Beurteilung',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Plagiarism check not passed, negative assessment',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'titelBearbeiten',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Titel bearbeiten',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Edit title',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'titelGespeichert',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Titel gespeichert',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Title saved',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'titelSpeichernFehler',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Speichern des Titels',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error when saving title',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheckHinweisNegativeBeurteilung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => '(Bei Plagiat wird die Arbeit negativ bewertet.)',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => '(Plagiarism leads to a negative grade.)',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'plagiatscheck',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Plagiatscheck',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Plagiarism check',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'betreuernote',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betreuernote',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Assessor grade',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -12353,6 +12930,46 @@ array(
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorDokumentZuGross',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Dokument zu groß",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Document maximum size exceeded",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
'phrase' => 'errorUploadFehltOderZuGross',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => "Dokument fehlt oder zu groß",
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => "Document missing or maximum size exceeded",
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
-2
View File
@@ -1,2 +0,0 @@
<?php
// This is global bootstrap for autoloading
@@ -1,26 +0,0 @@
<?php
/**
* Inherited Methods
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
*
* @SuppressWarnings(PHPMD)
*/
class AcceptanceTester extends \Codeception\Actor
{
use _generated\AcceptanceTesterActions;
/**
* Define custom actions here
*/
}
-39
View File
@@ -1,39 +0,0 @@
<?php
/**
* Inherited Methods
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
*
* @SuppressWarnings(PHPMD)
*/
class ApiTester extends \Codeception\Actor
{
const WAIT = 70000; // 0.07 seconds
use _generated\ApiTesterActions;
/**
* Define custom actions here
*/
public function wait($micro_seconds = null)
{
if (!is_null($micro_seconds))
{
usleep($micro_seconds);
}
else
{
usleep(ApiTester::WAIT);
}
}
}
@@ -1,26 +0,0 @@
<?php
/**
* Inherited Methods
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
*
* @SuppressWarnings(PHPMD)
*/
class FunctionalTester extends \Codeception\Actor
{
use _generated\FunctionalTesterActions;
/**
* Define custom actions here
*/
}
-25
View File
@@ -1,25 +0,0 @@
<?php
/**
* Inherited Methods
* @method void wantToTest($text)
* @method void wantTo($text)
* @method void execute($callable)
* @method void expectTo($prediction)
* @method void expect($prediction)
* @method void amGoingTo($argumentation)
* @method void am($role)
* @method void lookForwardTo($achieveValue)
* @method void comment($description)
* @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
*
* @SuppressWarnings(PHPMD)
*/
class UnitTester extends \Codeception\Actor
{
use _generated\UnitTesterActions;
/**
* Define custom actions here
*/
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,204 +0,0 @@
<?php //[STAMP] e88575298465f35c4ba48944693fdc61
namespace _generated;
// This class was automatically generated by build task
// You should not change it manually as it will be overwritten on next build
// @codingStandardsIgnoreFile
use Codeception\Module\Db;
trait FunctionalTesterActions
{
/**
* @return \Codeception\Scenario
*/
abstract protected function getScenario();
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Inserts an SQL record into a database. This record will be erased after the test.
*
* ``` php
* <?php
* $I->haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com'));
* ?>
* ```
*
* @param string $table
* @param array $data
*
* @return integer $id
* @see \Codeception\Module\Db::haveInDatabase()
*/
public function haveInDatabase($table, $data) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that a row with the given column values exists.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if no such user found.
*
* @param string $table
* @param array $criteria
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::seeInDatabase()
*/
public function canSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that a row with the given column values exists.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if no such user found.
*
* @param string $table
* @param array $criteria
* @see \Codeception\Module\Db::seeInDatabase()
*/
public function seeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that the given number of records were found in the database.
*
* ``` php
* <?php
* $I->seeNumRecords(1, 'users', ['name' => 'davert'])
* ?>
* ```
*
* @param int $expectedNumber Expected number
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::seeNumRecords()
*/
public function canSeeNumRecords($expectedNumber, $table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumRecords', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that the given number of records were found in the database.
*
* ``` php
* <?php
* $I->seeNumRecords(1, 'users', ['name' => 'davert'])
* ?>
* ```
*
* @param int $expectedNumber Expected number
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
* @see \Codeception\Module\Db::seeNumRecords()
*/
public function seeNumRecords($expectedNumber, $table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumRecords', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Effect is opposite to ->seeInDatabase
*
* Asserts that there is no record with the given column values in a database.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if such user was found.
*
* @param string $table
* @param array $criteria
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::dontSeeInDatabase()
*/
public function cantSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Effect is opposite to ->seeInDatabase
*
* Asserts that there is no record with the given column values in a database.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if such user was found.
*
* @param string $table
* @param array $criteria
* @see \Codeception\Module\Db::dontSeeInDatabase()
*/
public function dontSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Fetches a single column value from a database.
* Provide table name, desired column and criteria.
*
* ``` php
* <?php
* $mail = $I->grabFromDatabase('users', 'email', array('name' => 'Davert'));
* ```
*
* @param string $table
* @param string $column
* @param array $criteria
*
* @return mixed
* @see \Codeception\Module\Db::grabFromDatabase()
*/
public function grabFromDatabase($table, $column, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Returns the number of rows in a database
*
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
*
* @return int
* @see \Codeception\Module\Db::grabNumRecords()
*/
public function grabNumRecords($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('grabNumRecords', func_get_args()));
}
}
@@ -1,204 +0,0 @@
<?php //[STAMP] e88575298465f35c4ba48944693fdc61
namespace _generated;
// This class was automatically generated by build task
// You should not change it manually as it will be overwritten on next build
// @codingStandardsIgnoreFile
use Codeception\Module\Db;
trait UnitTesterActions
{
/**
* @return \Codeception\Scenario
*/
abstract protected function getScenario();
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Inserts an SQL record into a database. This record will be erased after the test.
*
* ``` php
* <?php
* $I->haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com'));
* ?>
* ```
*
* @param string $table
* @param array $data
*
* @return integer $id
* @see \Codeception\Module\Db::haveInDatabase()
*/
public function haveInDatabase($table, $data) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('haveInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that a row with the given column values exists.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if no such user found.
*
* @param string $table
* @param array $criteria
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::seeInDatabase()
*/
public function canSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that a row with the given column values exists.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if no such user found.
*
* @param string $table
* @param array $criteria
* @see \Codeception\Module\Db::seeInDatabase()
*/
public function seeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that the given number of records were found in the database.
*
* ``` php
* <?php
* $I->seeNumRecords(1, 'users', ['name' => 'davert'])
* ?>
* ```
*
* @param int $expectedNumber Expected number
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::seeNumRecords()
*/
public function canSeeNumRecords($expectedNumber, $table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumRecords', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Asserts that the given number of records were found in the database.
*
* ``` php
* <?php
* $I->seeNumRecords(1, 'users', ['name' => 'davert'])
* ?>
* ```
*
* @param int $expectedNumber Expected number
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
* @see \Codeception\Module\Db::seeNumRecords()
*/
public function seeNumRecords($expectedNumber, $table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumRecords', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Effect is opposite to ->seeInDatabase
*
* Asserts that there is no record with the given column values in a database.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if such user was found.
*
* @param string $table
* @param array $criteria
* Conditional Assertion: Test won't be stopped on fail
* @see \Codeception\Module\Db::dontSeeInDatabase()
*/
public function cantSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Effect is opposite to ->seeInDatabase
*
* Asserts that there is no record with the given column values in a database.
* Provide table name and column values.
*
* ``` php
* <?php
* $I->dontSeeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));
* ```
* Fails if such user was found.
*
* @param string $table
* @param array $criteria
* @see \Codeception\Module\Db::dontSeeInDatabase()
*/
public function dontSeeInDatabase($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Fetches a single column value from a database.
* Provide table name, desired column and criteria.
*
* ``` php
* <?php
* $mail = $I->grabFromDatabase('users', 'email', array('name' => 'Davert'));
* ```
*
* @param string $table
* @param string $column
* @param array $criteria
*
* @return mixed
* @see \Codeception\Module\Db::grabFromDatabase()
*/
public function grabFromDatabase($table, $column, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromDatabase', func_get_args()));
}
/**
* [!] Method is generated. Documentation taken from corresponding module.
*
* Returns the number of rows in a database
*
* @param string $table Table name
* @param array $criteria Search criteria [Optional]
*
* @return int
* @see \Codeception\Module\Db::grabNumRecords()
*/
public function grabNumRecords($table, $criteria = null) {
return $this->getScenario()->runStep(new \Codeception\Step\Action('grabNumRecords', func_get_args()));
}
}
-27
View File
@@ -1,27 +0,0 @@
actor: Tester
paths:
tests: tests
log: _output
data: _data
helpers: _support
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
modules:
enabled:
- Db:
dsn: 'pgsql:host=localhost;port=5432;dbname=fhctest'
user: 'fhcomplete'
password: 'fhcomplete'
dump: _data/dump.sql
populate: true
cleanup: false
reconnect: false
coverage:
enabled: true
include:
- application/*
exclude:
- application/cache/*
- application/logs/*
@@ -1,21 +0,0 @@
# Codeception Test Suite Configuration
# suite for acceptance tests.
# perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
class_name: AcceptanceTester
modules:
enabled:
- Db
- PhpBrowser:
url: 'http://admin:1q2w3@test.fhcomplete.org/build/'
config:
Db:
dsn: 'pgsql:host=localhost;port=5432;dbname=fhctest'
user: 'fhcomplete'
password: 'fhcomplete'
dump: _data/dump.sql
populate: true
cleanup: false
reconnect: false

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