mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Merge branch 'master' into feature-245/LvTeilKopieren
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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 *
|
||||
$query = "
|
||||
SELECT *
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE
|
||||
(ende > ?::date AND start < ?::date)
|
||||
OR start = ?::date
|
||||
OR ende = ?::date
|
||||
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';
|
||||
}
|
||||
}
|
||||
@@ -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ü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ü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 .')
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)';
|
||||
|
||||
@@ -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,8 +208,10 @@ 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,
|
||||
$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
|
||||
@@ -209,8 +219,10 @@ else
|
||||
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)
|
||||
(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
|
||||
@@ -218,9 +230,10 @@ else
|
||||
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
|
||||
|
||||
if($elem->bisio_id != '' && $elem->status != 'Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis == '')
|
||||
&& $elem->von < $stsemdatumbis && (anzahlTage($elem->von, $elem->bis) >= 30))
|
||||
$inc.=' (o)';
|
||||
|
||||
if($elem->note==6) //angerechnet
|
||||
$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++;
|
||||
}
|
||||
|
||||
@@ -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> </td>';
|
||||
else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
|
||||
$content_table .= '<td> </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
|
||||
|
||||
+572
-121
@@ -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,22 +55,185 @@ $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')
|
||||
// Personendaten
|
||||
$person = new benutzer();
|
||||
if(!$person->load($uid))
|
||||
die($person->errormsg);
|
||||
|
||||
$ma = new mitarbeiter($uid);
|
||||
$fixangestellt = $ma->fixangestellt;
|
||||
|
||||
// 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']))
|
||||
{
|
||||
$selbstverwaltete_pause = ($_GET['selbstverwaltete-pause-akt'] == 'yes') ? true : false;
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $akt_ss->studiensemester_kurzbz;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $akt_ss->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
}
|
||||
else if (!$zeitaufzeichnung_gd->save())
|
||||
{
|
||||
echo $zeitaufzeichnung_gd->errormsg;
|
||||
}
|
||||
|
||||
}
|
||||
if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
{
|
||||
$selbstverwaltete_pause = ($_GET['selbstverwaltete-pause'] == 'yes') ? true : false;
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$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->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
}
|
||||
else if (!$zeitaufzeichnung_gd->save())
|
||||
{
|
||||
echo $zeitaufzeichnung_gd->errormsg;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 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++)
|
||||
@@ -83,83 +252,169 @@ if (isset($type) && $type=='save')
|
||||
$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, $stunde, $t))
|
||||
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;
|
||||
}
|
||||
|
||||
$zw = new zeitwunsch();
|
||||
if(!$zw->loadPerson($uid))
|
||||
die($zw->errormsg);
|
||||
/**
|
||||
* 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;
|
||||
|
||||
|
||||
// Personendaten
|
||||
$person = new benutzer();
|
||||
if(!$person->load($uid))
|
||||
die($person->errormsg);
|
||||
|
||||
$ma = new mitarbeiter($uid);
|
||||
$fixangestellt = $ma->fixangestellt;
|
||||
|
||||
// Nächstes Studiensemester
|
||||
$ss = new Studiensemester();
|
||||
$ss->getNextStudiensemester();
|
||||
$next_ss = $ss->studiensemester_kurzbz;
|
||||
$current_ss = $ss->getakt();
|
||||
|
||||
// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern
|
||||
if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
|
||||
/**
|
||||
* Init ZWG Objekt zum Erstellen einer neuen ZWG
|
||||
*/
|
||||
function insertZWG($uid, $von, $bis)
|
||||
{
|
||||
$selbstverwaltete_pause = ($_GET['selbstverwaltete-pause-akt'] == 'yes') ? true : false;
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $current_ss;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $current_ss);
|
||||
if ($za_gd->uid)
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = true;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->von = $von;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->insertvon = $uid;
|
||||
if ($zwg->save())
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
return $zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else if (!$zeitaufzeichnung_gd->save())
|
||||
else
|
||||
{
|
||||
echo $zeitaufzeichnung_gd->errormsg;
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
|
||||
}
|
||||
if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Updaten einer bestehenden ZWG
|
||||
*/
|
||||
function updateZWG($uid, $zwg_id, $bis)
|
||||
{
|
||||
$selbstverwaltete_pause = ($_GET['selbstverwaltete-pause'] == 'yes') ? true : false;
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = false;
|
||||
$zwg->zeitwunsch_gueltigkeit_id = $zwg_id;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->updatevon = $uid;
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $next_ss);
|
||||
if ($za_gd->uid)
|
||||
if (!$zwg->save())
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
}
|
||||
else if (!$zeitaufzeichnung_gd->save())
|
||||
{
|
||||
echo $zeitaufzeichnung_gd->errormsg;
|
||||
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;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -168,8 +423,10 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
<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,78 +451,178 @@ 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 '<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 '</h3><br><br><input type="submit" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
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 '<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 '</h3><br><br><input type="submit" name="submit" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
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')?>
|
||||
</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>';
|
||||
|
||||
// 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). '">';
|
||||
|
||||
// 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' : '';
|
||||
|
||||
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>';
|
||||
|
||||
// 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++)
|
||||
{
|
||||
@@ -276,9 +633,8 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
|
||||
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
|
||||
}
|
||||
|
||||
echo '</TR>';
|
||||
|
||||
echo '</tr>';
|
||||
// Tabelle Zellen
|
||||
for ($j=1; $j<7; $j++)
|
||||
{
|
||||
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
|
||||
@@ -287,41 +643,129 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
if (isset($wunsch[$j][$i+1]))
|
||||
$index=$wunsch[$j][$i+1];
|
||||
else
|
||||
$index=1;
|
||||
//$id='bgcolor';
|
||||
//$id.=$index+3;
|
||||
$index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden
|
||||
|
||||
$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>';
|
||||
|
||||
echo '
|
||||
</TABLE><br>
|
||||
<INPUT type="hidden" name="uid" value="'.$uid.'">
|
||||
<INPUT type="submit" name="Abschicken" value="'.$p->t('global/speichern').'">
|
||||
';
|
||||
// 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
|
||||
|
||||
if($zw->updateamum!='')
|
||||
echo '<div class="row">';
|
||||
|
||||
echo '<div class="col-xs-9">';
|
||||
// Radiobuttons aendern / kopieren
|
||||
$radioChangeChecked = is_null($selected_past_ss) ? 'checked' : '';
|
||||
$radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : '';
|
||||
|
||||
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 '<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>';
|
||||
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>
|
||||
|
||||
</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>
|
||||
|
||||
<h2><?php echo $p->t('zeitwunsch/erklärung');?>:</h2>
|
||||
|
||||
<?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>
|
||||
<TABLE class="table table-condensed table-default table-bordered" align=center>
|
||||
<TR>
|
||||
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
|
||||
<TH>
|
||||
@@ -329,13 +773,13 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[5]; ?>">
|
||||
<DIV align="right">2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[6]; ?>">
|
||||
<DIV align="right">1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
|
||||
@@ -347,28 +791,35 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
<TD>keine Bedeutung</TD>
|
||||
</TR>-->
|
||||
<TR>
|
||||
<TD>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[2]; ?>">
|
||||
<DIV align="right">-1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[1]; ?>">
|
||||
<DIV align="right">-2</DIV>
|
||||
</TD>
|
||||
<TD> <?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>
|
||||
</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>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -254,4 +254,13 @@ 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')));
|
||||
?>
|
||||
|
||||
+4
-1
@@ -239,7 +239,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 "
|
||||
@@ -934,6 +934,9 @@ foreach($addon_obj->result as $addon)
|
||||
oncommand="studiensemesterChange('', 1)"
|
||||
/>
|
||||
</statusbarpanel>
|
||||
<statusbarpanel>
|
||||
<toolbarbutton id="statusbarpanel-semester-aktuell" label="Aktuelles Studiensemester" oncommand="getStudiensemesterAktuell()"/>
|
||||
</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">
|
||||
|
||||
@@ -120,6 +120,10 @@ echo "<?xml-stylesheet href=\"".APP_ROOT."content/bindings.css\" type=\"text/css
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#studiengang_kz" onclick="LehrveranstaltungNotenTreeSort()"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="lehrveranstaltung-noten-tree-verband" label="Verband" flex="2" hidden="true" persist="hidden, width, ordinal"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#verband" />
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="lehrveranstaltung-noten-tree-studiengang_kz_lv" label="LehrveranstaltungStudiengang_kz" flex="1" hidden="true" persist="hidden, width, ordinal"
|
||||
class="sortDirectionIndicator"
|
||||
sort="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#studiengang_kz_lv" onclick="LehrveranstaltungNotenTreeSort()"/>
|
||||
@@ -151,6 +155,7 @@ echo "<?xml-stylesheet href=\"".APP_ROOT."content/bindings.css\" type=\"text/css
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#lehrveranstaltung_id"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#studiengang"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#studiengang_kz"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#verband"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#studiengang_kz_lv"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#student_semester"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/zeugnisnote/rdf#punkte"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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();" />
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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);
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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";
|
||||
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;
|
||||
|
||||
@@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,9 +878,13 @@ class lehrstunde extends basis_db
|
||||
if ($anz_zs!=0)
|
||||
{
|
||||
$row = $this->db_fetch_object($erg_zs);
|
||||
|
||||
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,8 +1159,11 @@ class lehrstunde extends basis_db
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Einholen der Stundenplandaten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+104
-24
@@ -37,6 +37,8 @@ class zeitwunsch extends basis_db
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
public $zeitwunsch_id;
|
||||
public $zeitwunsch_gueltigkeit_id;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
@@ -121,7 +123,7 @@ class zeitwunsch extends basis_db
|
||||
if($this->new)
|
||||
{
|
||||
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
|
||||
insertamum, insertvon, updateamum, updatevon) VALUES('.
|
||||
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).','.
|
||||
@@ -129,7 +131,8 @@ class zeitwunsch extends basis_db
|
||||
$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->updatevon).','.
|
||||
$this->db_add_param($this->zeitwunsch_gueltigkeit_id).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -140,7 +143,8 @@ class zeitwunsch extends basis_db
|
||||
" 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 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))
|
||||
@@ -155,15 +159,70 @@ class zeitwunsch extends basis_db
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch einer Person laden
|
||||
* 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
|
||||
* @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("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid)))
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
@@ -177,6 +236,8 @@ class zeitwunsch extends basis_db
|
||||
$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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,13 +250,19 @@ class zeitwunsch extends basis_db
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
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);
|
||||
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))
|
||||
{
|
||||
@@ -204,6 +271,8 @@ class zeitwunsch extends basis_db
|
||||
}
|
||||
else
|
||||
{
|
||||
// Zeitsperren negativ (-3) gewichten.
|
||||
// Ausnahme: positive Zeitsperren: diese positiv (4) gewichten.
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
@@ -213,20 +282,21 @@ class zeitwunsch extends basis_db
|
||||
//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;
|
||||
$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]=-3;
|
||||
$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]=-3;
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
@@ -235,7 +305,7 @@ class zeitwunsch extends basis_db
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
@@ -245,16 +315,19 @@ class zeitwunsch extends basis_db
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Zeitwunsch der Personen in Lehreinheiten laden
|
||||
* @param $le_id LehreinheitID Array
|
||||
* @param $datum
|
||||
* @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
|
||||
* @return true oder false
|
||||
*/
|
||||
public function loadZwLE($le_id,$datum=null)
|
||||
public function loadZwLE($le_id, $datum = null)
|
||||
{
|
||||
//$this->init();
|
||||
// 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 ';
|
||||
@@ -265,7 +338,11 @@ class zeitwunsch extends basis_db
|
||||
|
||||
// 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';
|
||||
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))
|
||||
@@ -289,7 +366,7 @@ class zeitwunsch extends basis_db
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
@@ -311,20 +388,20 @@ class zeitwunsch extends basis_db
|
||||
//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;
|
||||
$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]=-3;
|
||||
$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]=-3;
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
@@ -333,7 +410,7 @@ class zeitwunsch extends basis_db
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
@@ -346,17 +423,19 @@ class zeitwunsch extends basis_db
|
||||
* 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, $stunde, $tag)
|
||||
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 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)
|
||||
@@ -371,4 +450,5 @@ class zeitwunsch extends basis_db
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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']= "Änderungen zurücksetzen";
|
||||
|
||||
$this->phrasen['global/username']='Username';
|
||||
$this->phrasen['global/vorname']='Vorname';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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ültig im: ";
|
||||
$this->phrasen['zeitwunsch/erklaerungstext']="Sie können Ihren Zeitwunsch direkt in der Tabelle bearbeiten oder einen Zeitwunsch eines vergangenen Studiensemester kopieren.<br>
|
||||
<br><b>Solange Sie keine Änderungen vornehmen, <u>wird Ihr Zeitwunsch immer ins nächste Studiensemester übernommen.</u></b>";
|
||||
$this->phrasen['zeitwunsch/werteAuf1setzen']="Alle Werte auf 1 setzen";
|
||||
$this->phrasen['zeitwunsch/kopierenText']="Wählen Sie rechts das gewünschte Studiensemester aus.
|
||||
Der Zeitwunsch wird dann <u>automatisch</u> in die Tabelle übernommen.<br>
|
||||
Nehmen Sie gegebenenfalls Änderungen vor und klicken danach auf 'Speichern'.";
|
||||
$this->phrasen['zeitwunsch/kopieren']= "ändern";
|
||||
$this->phrasen['zeitwunsch/aendern']= "kopieren von früherem Studiensemester ";
|
||||
$this->phrasen['zeitwunsch/stundenBereitsVerplant']='Stunden für %s bereits verplant';
|
||||
$this->phrasen['zeitwunsch/fuer']='Zeitwunsch für %s  ';
|
||||
$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 Änderung <a href="mailto:%s">per Mail</a> mit den betroffenen Studiengängen ab.<br>
|
||||
Möchten Sie trotzdem ohne Abstimmung bzw. nach bereits erfolgter Abstimmung fortsetzen?';
|
||||
$this->phrasen['zeitwunsch/bearbeitungAktivieren']='Bearbeitung aktivieren';
|
||||
$this->phrasen['zeitwunsch/kompetenzfeldWirdInformiert']= 'INFO: Kompetenzfeld wird über die Änderung per Mail informiert';
|
||||
?>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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  ';
|
||||
$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';
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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='';
|
||||
@@ -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>';
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ function draw_content($row)
|
||||
<PROJEKTBETREUER:faktor><![CDATA['.$row->faktor.']]></PROJEKTBETREUER:faktor>
|
||||
<PROJEKTBETREUER:name><![CDATA['.$row->name.']]></PROJEKTBETREUER:name>
|
||||
<PROJEKTBETREUER:punkte><![CDATA['.$row->punkte.']]></PROJEKTBETREUER:punkte>
|
||||
<PROJEKTBETREUER:stunden><![CDATA['.number_format($row->stunden,1).']]></PROJEKTBETREUER:stunden>
|
||||
<PROJEKTBETREUER:stunden><![CDATA['.(float)$row->stunden.']]></PROJEKTBETREUER:stunden>
|
||||
<PROJEKTBETREUER:stundensatz><![CDATA['.$row->stundensatz.']]></PROJEKTBETREUER:stundensatz>
|
||||
<PROJEKTBETREUER:betreuerart_kurzbz><![CDATA['.$row->betreuerart_kurzbz.']]></PROJEKTBETREUER:betreuerart_kurzbz>
|
||||
<PROJEKTBETREUER:vertrag_id><![CDATA['.$row->vertrag_id.']]></PROJEKTBETREUER:vertrag_id>
|
||||
|
||||
+1
-3
@@ -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;
|
||||
|
||||
|
||||
@@ -118,6 +118,7 @@ foreach ($obj->result as $row)
|
||||
<NOTE:student_vorname><![CDATA['.$benutzer->vorname.']]></NOTE:student_vorname>
|
||||
<NOTE:studiengang><![CDATA['.(isset($stg_arr[$benutzer->studiengang_kz])?$stg_arr[$benutzer->studiengang_kz]:'').']]></NOTE:studiengang>
|
||||
<NOTE:studiengang_kz><![CDATA['.$benutzer->studiengang_kz.']]></NOTE:studiengang_kz>
|
||||
<NOTE:verband><![CDATA['.$benutzer->verband.']]></NOTE:verband>
|
||||
<NOTE:studiengang_lv><![CDATA['.$stg_arr[$lv_obj->studiengang_kz].']]></NOTE:studiengang_lv>
|
||||
<NOTE:studiengang_kz_lv><![CDATA['.$lv_obj->studiengang_kz.']]></NOTE:studiengang_kz_lv>
|
||||
<NOTE:semester_lv><![CDATA['.$lv_obj->semester.']]></NOTE:semester_lv>
|
||||
|
||||
@@ -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;
|
||||
|
||||
+150
-2
@@ -5940,7 +5940,6 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_tbl_zeita
|
||||
echo 'Index fuer campus.tbl_zeitaufzeichnung.uid hinzugefuegt<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Change size of wawi.tbl_kostenstelle.kostenstelle_nr from character varying(4) to character varying(6)
|
||||
if ($result = $db->db_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='wawi' AND TABLE_NAME='tbl_kostenstelle' AND COLUMN_NAME = 'kostenstelle_nr' AND character_maximum_length < 6"))
|
||||
{
|
||||
@@ -5965,6 +5964,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 +6098,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 +6218,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"),
|
||||
|
||||
@@ -1026,7 +1026,9 @@ $filters = array(
|
||||
{"name": "nachname"},
|
||||
{"name": "matrikelnummer"},
|
||||
{"name": "studiengang"},
|
||||
{"name": "studiensemester"}
|
||||
{"name": "studiensemester"},
|
||||
{"name": "last_status"},
|
||||
{"name": "bismelden"}
|
||||
],
|
||||
"filters": []
|
||||
}
|
||||
|
||||
@@ -1554,6 +1554,26 @@ $phrases = array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'geloescht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Gelöscht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Deleted',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
@@ -12353,6 +12373,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',
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
}
|
||||
@@ -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
|
||||
*/
|
||||
}
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
$I = new AcceptanceTester($scenario);
|
||||
$I->wantTo('CIS Startseite Testen');
|
||||
//$I->amOnPage('/cis/index.html');
|
||||
//$I->see('Powered by FH Complete');
|
||||
?>
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new AcceptanceTester($scenario);
|
||||
$I->wantTo('Test the Search-Feature of VileSci');
|
||||
$I->amOnPage('/vilesci/personen/suche.php');
|
||||
$I->lookForwardTo('Personensuche');
|
||||
$I->seeElement('input[name="searchstr"]');
|
||||
$I->seeElement('input[type=submit][value=Suchen]');
|
||||
$I->fillField('searchstr', 'Vicenta');
|
||||
$I->click('Suchen');
|
||||
$I->see('McKenzie');
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
$I = new AcceptanceTester($scenario);
|
||||
$I->wantTo('test the Startpage of VileSci');
|
||||
|
||||
$I->wantTo('test this over vilesci/index.php');
|
||||
$I->amOnPage('/vilesci/index.php');
|
||||
$I->See('This application works only with');
|
||||
$I->seeElement('#frameset-vilesci');
|
||||
|
||||
$I->wantTo('and now over index.ci.php');
|
||||
$I->amOnPage('/index.ci.php');
|
||||
$I->See('This application works only with');
|
||||
$I->seeElement('#frameset-vilesci');
|
||||
|
||||
$I->wantTo('test the top menu');
|
||||
$I->amOnPage('/vilesci/top.php');
|
||||
$I->seeElement('.logo');
|
||||
|
||||
$I->wantTo('test the left nav-frame');
|
||||
$I->amOnPage('/vilesci/left.php');
|
||||
$I->seeElement('.left_nav');
|
||||
|
||||
$I->wantTo('test the main-frame');
|
||||
$I->amOnPage('/vilesci/main.php');
|
||||
$I->seeElement('img');
|
||||
?>
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php
|
||||
// Here you can initialize variables that will be available to your tests
|
||||
@@ -1,20 +0,0 @@
|
||||
class_name: ApiTester
|
||||
modules:
|
||||
enabled:
|
||||
- Db
|
||||
- REST:
|
||||
# API URL
|
||||
url: 'http://admin:1q2w3@test.fhcomplete.org/build/index.ci.php/api/'
|
||||
# Can also be a framework module name
|
||||
depends: PhpBrowser
|
||||
# Limits PhpBrowser to JSON or XML
|
||||
part: Json
|
||||
config:
|
||||
Db:
|
||||
dsn: 'pgsql:host=localhost;port=5432;dbname=fhctest'
|
||||
user: 'fhcomplete'
|
||||
password: 'fhcomplete'
|
||||
dump: _data/dump.sql
|
||||
populate: true
|
||||
cleanup: false
|
||||
reconnect: false
|
||||
@@ -1,2 +0,0 @@
|
||||
<?php
|
||||
// Here you can initialize variables that will be available to your tests
|
||||
@@ -1,178 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Recursively finds all files in the given folder
|
||||
*/
|
||||
function lstFiles($dir, $lst = null)
|
||||
{
|
||||
$retLst = array();
|
||||
|
||||
if ($lst == null)
|
||||
$lst = scandir($dir);
|
||||
|
||||
$lst = array_diff($lst, array('..', '.'));
|
||||
|
||||
foreach ($lst as $el)
|
||||
{
|
||||
if (is_dir($dir.'/'.$el))
|
||||
{
|
||||
$retLst = array_merge($retLst, lstFiles($dir.'/'.$el, scandir($dir.'/'.$el)));
|
||||
}
|
||||
else
|
||||
{
|
||||
array_push($retLst, $dir.'/'.$el);
|
||||
}
|
||||
}
|
||||
|
||||
return $retLst;
|
||||
}
|
||||
|
||||
// Get a list of every file present in the given folder
|
||||
$lstFiles = lstFiles('../../../../application/controllers/api/v1');
|
||||
|
||||
// Automatically detects the line ending character
|
||||
ini_set('auto_detect_line_endings', true);
|
||||
// Gets the template of the header of the test file
|
||||
if (($fileTplHead = file_get_contents('./template_head.tpl')) === false)
|
||||
die('Problems loading template_head.tpl');
|
||||
// Gets the template of the body of the test file
|
||||
if (($fileTplCall = file_get_contents('./template_call.tpl')) === false)
|
||||
die('Problems loading template_call.tpl');
|
||||
|
||||
// Loops the list of files
|
||||
foreach($lstFiles as $file)
|
||||
{
|
||||
// Open the file for reading
|
||||
if (($fileHandle = fopen($file, 'r')) !== false)
|
||||
{
|
||||
$name = ''; // Name of the test
|
||||
$functions = array(); // List of functions
|
||||
$functionsCounter = -1; // Functions counter
|
||||
|
||||
// Reads from the file line by line
|
||||
while (($line = fgets($fileHandle, 4096)) !== false)
|
||||
{
|
||||
// Drops the spaces at the beginning and at the and of the line
|
||||
$line = trim($line);
|
||||
|
||||
// If it is the line that declare the class
|
||||
if (strpos($line, 'class') !== false)
|
||||
{
|
||||
$name = explode(' ', $line)[1];
|
||||
}
|
||||
|
||||
// If it is a line that declare a function
|
||||
if (strpos($line, 'public function get') !== false)
|
||||
{
|
||||
$functionsCounter++;
|
||||
$functions[$functionsCounter] = array();
|
||||
$functions[$functionsCounter]['name'] = trim(preg_replace('/^get/i', ' ', explode(' ', $line)[2]));
|
||||
$functions[$functionsCounter]['name'] = trim(str_replace('()', ' ', $functions[$functionsCounter]['name']));
|
||||
$functions[$functionsCounter]['parameters'] = array();
|
||||
}
|
||||
|
||||
// If it is a line that get a parameter
|
||||
if (strpos($line, 'this->get') !== false)
|
||||
{
|
||||
$parameters = explode('\'', $line);
|
||||
if (count($parameters) >= 2)
|
||||
{
|
||||
$functions[$functionsCounter]['parameters'][] = $parameters[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$parameters = explode('"', $line);
|
||||
if (count($parameters) >= 2)
|
||||
{
|
||||
$functions[$functionsCounter]['parameters'][] = $parameters[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fileHandle); // Closing the file pointer is always a good thing
|
||||
|
||||
// Gets the path of the api
|
||||
$apiPath = trim(str_replace('../../../../application/controllers/api/', ' ', $file));
|
||||
$apiPath = substr($apiPath, 0, strrpos($apiPath, '/') + 1);
|
||||
// Prefix of the test file name given by the parent folder
|
||||
$namePrefix = trim(str_replace('v1/', ' ', $apiPath));
|
||||
$namePrefix = ucfirst(trim(str_replace('/', ' ', $namePrefix)));
|
||||
|
||||
// If if is not a fake
|
||||
if (trim($name) != '')
|
||||
{
|
||||
// Where to create the test files
|
||||
$testDir = './v1/';
|
||||
// If the test file is not already present
|
||||
if (!file_exists($testDir.$namePrefix.$name.'Cept.php'))
|
||||
{
|
||||
// Create and open the test file for writing
|
||||
if (($fileTestHandle = fopen($testDir.$namePrefix.$name.'Cept.php', 'w')) !== false)
|
||||
{
|
||||
// Lst of function to place in the header
|
||||
$strLstFunctions = '';
|
||||
for($i = 0; $i < count($functions); $i++)
|
||||
{
|
||||
$function = $functions[$i];
|
||||
if ($i == 0)
|
||||
{
|
||||
$strLstFunctions .= $apiPath.$name.'/'.': ';
|
||||
}
|
||||
|
||||
$strLstFunctions .= $function['name'];
|
||||
|
||||
if ($i < count($functions) - 1)
|
||||
{
|
||||
$strLstFunctions .= ' ';
|
||||
}
|
||||
}
|
||||
|
||||
// Create the test file header using the template
|
||||
$strToWrite = str_replace('_CALL_', $strLstFunctions, $fileTplHead);
|
||||
// Writes the header into the test file
|
||||
if (fwrite($fileTestHandle, $strToWrite."\n") === false)
|
||||
{
|
||||
echo 'Error!!!';
|
||||
}
|
||||
|
||||
// For every function create a call
|
||||
foreach($functions as $function)
|
||||
{
|
||||
// Gets a list of parameters
|
||||
$strLstParameters = '';
|
||||
for($i = 0; $i < count($function['parameters']); $i++)
|
||||
{
|
||||
$parameter = $function['parameters'][$i];
|
||||
$strLstParameters .= '"'.$parameter.'" => "1"';
|
||||
if ($i < count($function['parameters']) - 1)
|
||||
{
|
||||
$strLstParameters .= ", ";
|
||||
}
|
||||
}
|
||||
// Create the call using the template
|
||||
$strToWrite = str_replace('_CALL_', $apiPath.$name.'/'.$function['name'], $fileTplCall);
|
||||
$strToWrite = str_replace('_PARAMETERS_', $strLstParameters, $strToWrite);
|
||||
// Write it into the test file
|
||||
if (fwrite($fileTestHandle, $strToWrite."\n") === false)
|
||||
{
|
||||
echo 'Error!!!';
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fileTestHandle); // As usual
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "Error opening file: ".$testDir.$name.'Cept.php'."\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $testDir.$name."Cept.php is already present\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,5 +0,0 @@
|
||||
$I->sendGET("_CALL_", array(_PARAMETERS_));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,6 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call _CALL_");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Aufteilung/: Aufteilung");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Aufteilung/Aufteilung", array("aufteilung_id" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Bestelldetail/: Bestelldetail");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Bestelldetail/Bestelldetail", array("bestelldetail_id" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Bestelldetailtag/: Bestelldetailtag");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Bestelldetailtag/Bestelldetailtag", array("bestelldetail_id" => "1", "tag" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Bestellstatus/: Bestellstatus");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Bestellstatus/Bestellstatus", array("bestellstatus_kurzbz" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Bestellung/: Bestellung");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Bestellung/Bestellung", array("bestellung_id" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Bestellungtag/: Bestellungtag");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Bestellungtag/Bestellungtag", array("bestellung_id" => "1", "tag" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Buchung/: Buchung");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Buchung/Buchung", array("buchung_id" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Buchungstyp/: Buchungstyp");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Buchungstyp/Buchungstyp", array("buchungstyp_kurzbz" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Budget/: Budget");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Budget/Budget", array("kostenstelle_id" => "1", "geschaeftsjahr_kurzbz" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
$I = new ApiTester($scenario);
|
||||
$I->wantTo("Test API call v1/accounting/Konto/: Konto");
|
||||
$I->amHttpAuthenticated("admin", "1q2w3");
|
||||
$I->haveHttpHeader("FHC-API-KEY", "testapikey@fhcomplete.org");
|
||||
$I->sendGET("v1/accounting/Konto/Konto", array("konto_id" => "1"));
|
||||
$I->seeResponseCodeIs(200);
|
||||
$I->seeResponseIsJson();
|
||||
$I->seeResponseContainsJson(["error" => 0]);
|
||||
$I->wait();
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user