mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Merge branch 'master' into feature-18473/UrlaubstoolKeinEintragBeiVorhandenerZeitaufzeichnung
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
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -125,9 +125,9 @@ class InfoCenter extends Auth_Controller
|
||||
'zgvStatusUpdate' => 'lehre/zgvpruefung:rw',
|
||||
'saveAbsage' => 'infocenter:rw',
|
||||
'saveFreigabe' => 'infocenter:rw',
|
||||
'getNotiz' => 'infocenter:r',
|
||||
'getNotiz' => array('infocenter:r', 'lehre/zgvpruefung:r'),
|
||||
'saveNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
'updateNotiz' => 'infocenter:rw',
|
||||
'updateNotiz' => array('infocenter:rw', 'lehre/zgvpruefung:rw'),
|
||||
'reloadZgvPruefungen' => 'infocenter:r',
|
||||
'reloadMessages' => 'infocenter:r',
|
||||
'reloadDoks' => 'infocenter:r',
|
||||
|
||||
@@ -4,6 +4,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class ZGVUeberpruefung extends Auth_Controller
|
||||
{
|
||||
const BERECHTIGUNG_KURZBZ = 'lehre/zgvpruefung';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
@@ -12,14 +14,15 @@ class ZGVUeberpruefung extends Auth_Controller
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'lehre/zgvpruefung:r',
|
||||
'getZgvStatusByPrestudent' => 'lehre/zgvpruefung:r'
|
||||
'index' => self::BERECHTIGUNG_KURZBZ.':r',
|
||||
'getZgvStatusByPrestudent' => self::BERECHTIGUNG_KURZBZ.':r'
|
||||
)
|
||||
);
|
||||
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
|
||||
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
|
||||
|
||||
$this->load->library('WidgetLib');
|
||||
$this->load->library('PermissionLib');
|
||||
|
||||
$this->setControllerId();
|
||||
$this->loadPhrases(
|
||||
@@ -31,7 +34,14 @@ class ZGVUeberpruefung extends Auth_Controller
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('system/infocenter/infocenterZgvUeberpruefung.php');
|
||||
$oeKurzbz = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_KURZBZ);
|
||||
|
||||
if (!$oeKurzbz)
|
||||
show_error('Keine Berechtigung.');
|
||||
|
||||
$data['oeKurz'] = $oeKurzbz;
|
||||
|
||||
$this->load->view('system/infocenter/infocenterZgvUeberpruefung.php', $data);
|
||||
}
|
||||
|
||||
public function getZgvStatusByPrestudent()
|
||||
|
||||
@@ -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
|
||||
@@ -581,7 +581,7 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($person_id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get latest ZGV Bezeichnung of Prestudent.
|
||||
*
|
||||
@@ -593,19 +593,19 @@ class Prestudent_model extends DB_Model
|
||||
{
|
||||
show_error('Prestudent_id is not numeric.');
|
||||
}
|
||||
|
||||
|
||||
$language_index = getUserLanguage() == 'German' ? 0 : 1;
|
||||
|
||||
|
||||
$this->addSelect('
|
||||
COALESCE(
|
||||
array_to_json(zgvmaster.bezeichnung::varchar[])->>' . $language_index . ',
|
||||
array_to_json(zgv.bezeichnung::varchar[])->>' . $language_index . '
|
||||
) AS bezeichnung'
|
||||
);
|
||||
|
||||
|
||||
$this->addJoin('bis.tbl_zgv zgv', 'zgv_code', 'LEFT');
|
||||
$this->addJoin('bis.tbl_zgvmaster zgvmaster', 'zgvmas_code', 'LEFT');
|
||||
|
||||
|
||||
return $this->loadWhere(array(
|
||||
'prestudent_id' => $prestudent_id
|
||||
));
|
||||
@@ -618,8 +618,9 @@ class Prestudent_model extends DB_Model
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE ps.person_id = ?
|
||||
AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ?
|
||||
AND UPPER(so.studiengangkurzbzlang || ':' || sp.orgform_kurzbz) = ?
|
||||
AND pss.studiensemester_kurzbz = ?
|
||||
AND";
|
||||
|
||||
@@ -629,7 +630,7 @@ class Prestudent_model extends DB_Model
|
||||
$query .= " NOT EXISTS";
|
||||
|
||||
$query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss
|
||||
JOIN public.tbl_prestudent sps USING(prestudent_id)
|
||||
JOIN public.tbl_prestudent sps USING(prestudent_id)
|
||||
WHERE sps.prestudent_id = ps.prestudent_id
|
||||
AND spss.bewerbung_abgeschicktamum IS NOT NULL)";
|
||||
|
||||
|
||||
@@ -42,6 +42,34 @@ class Projektbetreuer_model extends DB_Model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Betreuer of a certain Type of a Projektarbeit.
|
||||
* Returns one row for each person.
|
||||
* @param int $projektarbeit_id
|
||||
* @param string $betreuerart_kurzbz
|
||||
* @return array success with number of Betreuer or error
|
||||
*/
|
||||
public function getBetreuerOfProjektarbeit($projektarbeit_id, $betreuerart_kurzbz)
|
||||
{
|
||||
$qry = "SELECT DISTINCT ON (pers.person_id) pers.person_id, betreuerart_kurzbz, vorname, nachname,
|
||||
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
|
||||
anrede, titelpre, titelpost, gebdatum, geschlecht, pa.projekttyp_kurzbz,
|
||||
ben.uid, ben.alias, ma.personalnummer, mitarbeiter_uid, student_uid
|
||||
FROM lehre.tbl_projektarbeit pa
|
||||
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
|
||||
JOIN public.tbl_person pers USING (person_id)
|
||||
LEFT JOIN public.tbl_benutzer ben USING (person_id)
|
||||
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
|
||||
WHERE ben.aktiv
|
||||
AND projektarbeit_id = ?
|
||||
AND betreuerart_kurzbz = ?
|
||||
ORDER BY pers.person_id, CASE WHEN ma.mitarbeiter_uid IS NULL THEN 1 ELSE 0 END, /*Mitarbeiter account first*/
|
||||
CASE WHEN ben.uid IS NULL THEN 1 ELSE 0 END, /*user with account first*/
|
||||
ben.insertamum";
|
||||
|
||||
return $this->execQuery($qry, array($projektarbeit_id, $betreuerart_kurzbz));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Projektbetreuer data by authentification token
|
||||
* @param $zugangstoken
|
||||
@@ -60,4 +88,83 @@ class Projektbetreuer_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, array($zugangstoken));
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt Zweitbegutachter einer Projektarbeit mit Mail.
|
||||
* @param $erstbegutachter_person_id int person_id des Erstbegutachters
|
||||
* @param $projektarbeit_id int
|
||||
* @param $student_uid string uid des Studenten der Arbeit abgibt
|
||||
* @return object | bool
|
||||
*/
|
||||
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid)
|
||||
{
|
||||
$qry_betr = "SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
|
||||
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
|
||||
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum
|
||||
FROM lehre.tbl_projektbetreuer betr
|
||||
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
|
||||
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
|
||||
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
|
||||
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
|
||||
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
|
||||
WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
|
||||
AND betr.projektarbeit_id = ?
|
||||
AND parb.student_uid = ?
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM lehre.tbl_projektbetreuer
|
||||
WHERE person_id = ?
|
||||
AND betreuerart_kurzbz = 'Erstbegutachter'
|
||||
AND projektarbeit_id = betr.projektarbeit_id
|
||||
)
|
||||
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
|
||||
ORDER BY betr.insertamum DESC
|
||||
LIMIT 1";
|
||||
|
||||
return $this->execQuery($qry_betr, array($projektarbeit_id, $student_uid, $erstbegutachter_person_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert neuen Token für externen Zweitbetreuer.
|
||||
* @param int $zweitbegutachter_person_id
|
||||
* @param int $projektarbeit_id
|
||||
* @return array
|
||||
*/
|
||||
public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id)
|
||||
{
|
||||
$betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
LEFT JOIN public.tbl_benutzer USING(person_id)
|
||||
WHERE projektarbeit_id = ?
|
||||
AND tbl_projektbetreuer.person_id = ?
|
||||
AND betreuerart_kurzbz = 'Zweitbegutachter'
|
||||
LIMIT 1";
|
||||
|
||||
$betreueruidres = $this->execQuery($betreuerUidQry, array($projektarbeit_id, $zweitbegutachter_person_id));
|
||||
|
||||
if (!hasData($betreueruidres))
|
||||
return error('Zweitbegutachter nicht gefunden');
|
||||
|
||||
$row_betr = getData($betreueruidres)[0];
|
||||
|
||||
if (!isset($row_betr->uid))
|
||||
{
|
||||
do {
|
||||
$token = generateToken(16);
|
||||
$qry_tokencheck = $this->load(array('zugangstoken' => $token));
|
||||
} while(hasData($qry_tokencheck));
|
||||
|
||||
$result = $this->update(
|
||||
array('projektarbeit_id' => $projektarbeit_id,
|
||||
'person_id' => $row_betr->person_id,
|
||||
'betreuerart_kurzbz' => 'Zweitbegutachter'),
|
||||
array('zugangstoken' => $token,
|
||||
'zugangstoken_gueltigbis' => date('Y-m-d', strtotime('+1 year')))
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return success("Account vorhanden, kein Token benötigt");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -495,11 +495,12 @@ class Studiengang_model extends DB_Model
|
||||
|
||||
public function getStudiengaengeWithOrgForm($typ, $semester)
|
||||
{
|
||||
$query = "SELECT DISTINCT (UPPER(sg.typ || sg.kurzbz || ':' || sp.orgform_kurzbz)) AS Studiengang
|
||||
$query = "SELECT DISTINCT (UPPER(so.studiengangkurzbzlang || ':' || sp.orgform_kurzbz)) AS Studiengang
|
||||
FROM public.tbl_studiengang sg
|
||||
JOIN lehre.tbl_studienordnung USING (studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING (studienordnung_id)
|
||||
JOIN lehre.tbl_studienplan_semester spsem USING (studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE sp.aktiv = TRUE AND sg.aktiv = TRUE AND sg.typ IN ?
|
||||
AND spsem.studiensemester_kurzbz = ?
|
||||
ORDER BY Studiengang";
|
||||
|
||||
@@ -13,6 +13,20 @@ class Studiensemester_model extends DB_Model
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get actual Studiensemester.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAkt()
|
||||
{
|
||||
return $this->loadWhere(array(
|
||||
'start <= ' => 'NOW()',
|
||||
'ende >= ' => 'NOW()'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// Get next study semester
|
||||
public function getNext()
|
||||
{
|
||||
@@ -167,15 +181,13 @@ class Studiensemester_model extends DB_Model
|
||||
if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d')))
|
||||
return success(array());
|
||||
|
||||
$query = "SELECT *
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE
|
||||
(ende > ?::date AND start < ?::date)
|
||||
OR start = ?::date
|
||||
OR ende = ?::date
|
||||
ORDER BY start DESC";
|
||||
$query = "
|
||||
SELECT *
|
||||
FROM public.tbl_studiensemester
|
||||
WHERE ( ?::date < ende AND ?::date > start )
|
||||
ORDER BY start DESC";
|
||||
|
||||
return $this->execQuery($query, array($from, $to, $from, $to));
|
||||
return $this->execQuery($query, array($from, $to));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,4 +61,98 @@ class Stundenplandev_model extends DB_Model
|
||||
|
||||
return $this->execQuery($qry, $parametersArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Stundenplan data.
|
||||
*
|
||||
* @param null $lehrveranstaltung_id
|
||||
* @param null $studiensemester_kurzbz
|
||||
* @param null $lehreinheit_id
|
||||
* @param null $mitarbeiter_uid
|
||||
* @param null $student_uid
|
||||
* @param false $nurBevorstehende If true, only future data is retrieved.
|
||||
* @return array|false|stdClass|null
|
||||
*/
|
||||
public function getStundenplanData($lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
|
||||
{
|
||||
$params = array();
|
||||
|
||||
$qry = "SELECT
|
||||
stpl.datum, min(stpl.stunde) as stundevon, max(stpl.stunde) as stundebis,
|
||||
stpl.lehreinheit_id, lehrfach.bezeichnung as lehrfach_bezeichnung,
|
||||
array_agg(
|
||||
CASE WHEN gruppe_kurzbz is not null THEN gruppe_kurzbz
|
||||
ELSE (SELECT UPPER(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=stpl.studiengang_kz) || COALESCE(stpl.semester,'0') || COALESCE(stpl.verband,'') || COALESCE(stpl.gruppe,'')
|
||||
END) as gruppen, array_agg(mitarbeiter_uid) as lektoren,
|
||||
array_agg(ort_kurzbz) as orte,
|
||||
array_agg(titel) as titel
|
||||
FROM
|
||||
lehre.tbl_stundenplandev as stpl
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
WHERE ";
|
||||
|
||||
if ($lehrveranstaltung_id != '')
|
||||
{
|
||||
$qry.="
|
||||
lehreinheit_id IN (
|
||||
SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
|
||||
WHERE lehrveranstaltung_id = ?
|
||||
AND studiensemester_kurzbz = ?
|
||||
)";
|
||||
|
||||
$params[]= $lehrveranstaltung_id;
|
||||
$params[]= $studiensemester_kurzbz;
|
||||
|
||||
}
|
||||
elseif ($lehreinheit_id!='')
|
||||
{
|
||||
$qry.=" lehreinheit_id = ?";
|
||||
|
||||
$params[]= $lehreinheit_id;
|
||||
}
|
||||
elseif ($mitarbeiter_uid != '')
|
||||
{
|
||||
$qry.= "
|
||||
mitarbeiter_uid = ?
|
||||
AND lehreinheit_id IN (
|
||||
SELECT lehreinheit_id
|
||||
FROM lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
WHERE mitarbeiter_uid = ?
|
||||
AND studiensemester_kurzbz IN ( ? )
|
||||
)";
|
||||
$params[] = $mitarbeiter_uid;
|
||||
$params[] = $mitarbeiter_uid;
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
elseif ($student_uid != '')
|
||||
{
|
||||
$qry.="
|
||||
lehreinheit_id IN (
|
||||
SELECT lehreinheit_id
|
||||
FROM campus.vw_student_lehrveranstaltung
|
||||
WHERE uid = ?
|
||||
AND studiensemester_kurzbz = ?
|
||||
)";
|
||||
|
||||
$params[] = $student_uid;
|
||||
$params[] = $studiensemester_kurzbz;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
if($nurBevorstehende)
|
||||
{
|
||||
$qry.= " AND stpl.datum >= NOW()::date ";
|
||||
}
|
||||
|
||||
$qry.= "
|
||||
GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id
|
||||
";
|
||||
|
||||
return $this->execQuery($qry, $params);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,47 @@ class Zeitsperre_model extends DB_Model
|
||||
$this->pk = 'zeitsperre_id';
|
||||
}
|
||||
|
||||
/**
|
||||
* Save or update Zeitsperre.
|
||||
*
|
||||
* @param $zeitsperretyp_kurzbz
|
||||
* @param $mitarbeiter_uid
|
||||
* @param $vonDatum
|
||||
* @param $bisDatum
|
||||
* @param null $vonStunde
|
||||
* @param null $bisStunde
|
||||
* @param null $bezeichnung
|
||||
* @param null $vertretung_uid
|
||||
* @param null $erreichbarkeit_kurzbz
|
||||
* @param null $freigabeamum
|
||||
* @param null $freigabevon
|
||||
* @return array
|
||||
*/
|
||||
public function save($zeitsperretyp_kurzbz, $mitarbeiter_uid, $vonDatum, $bisDatum,
|
||||
$vonStunde = null, $bisStunde = null, $bezeichnung = null, $vertretung_uid = null,
|
||||
$erreichbarkeit_kurzbz = null, $freigabeamum = null, $freigabevon = null)
|
||||
{
|
||||
return $this->insert(array(
|
||||
'zeitsperretyp_kurzbz' => $zeitsperretyp_kurzbz,
|
||||
'mitarbeiter_uid' => $mitarbeiter_uid,
|
||||
'vondatum' => $vonDatum,
|
||||
'bisdatum' => $bisDatum,
|
||||
'vonstunde' => $vonStunde,
|
||||
'bisstunde' => $bisStunde,
|
||||
'bezeichnung' => $bezeichnung,
|
||||
'vertretung_uid' => $vertretung_uid,
|
||||
'insertvon' => getAuthUID(),
|
||||
'insertamum' => (new DateTime())->format('Y-m-d H:i:s'),
|
||||
'erreichbarkeit_kurzbz' => $erreichbarkeit_kurzbz,
|
||||
'freigabeamum' => $freigabeamum,
|
||||
'freigabevon' => $freigabevon
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete Zeitsperre.
|
||||
* @return array|stdClass|null
|
||||
*/
|
||||
public function deleteEntriesForCurrentDay()
|
||||
{
|
||||
$today = date('Y-m-d');
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
class Zeitwunsch_gueltigkeit_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'campus.tbl_zeitwunsch_gueltigkeit';
|
||||
$this->pk = 'zeitwunsch_gueltigkeit_id';
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,14 @@ class Variablenname_model extends DB_Model
|
||||
) sem
|
||||
WHERE start > now()
|
||||
LIMIT 1;',
|
||||
'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1'
|
||||
'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1;',
|
||||
'projektuebersicht_studiensemester' => 'SELECT studiensemester_kurzbz FROM (
|
||||
SELECT DISTINCT ON (studienjahr_kurzbz) start, studiensemester_kurzbz
|
||||
FROM public.tbl_studiensemester
|
||||
ORDER BY studienjahr_kurzbz, start
|
||||
) sem
|
||||
WHERE start > now()
|
||||
LIMIT 1;'
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,7 +26,8 @@ $this->load->view(
|
||||
'neu',
|
||||
'maxZeichen',
|
||||
'errorBestaetigungFehlt',
|
||||
'systemfehler'
|
||||
'systemfehler',
|
||||
'errorDokumentZuGross'
|
||||
),
|
||||
'anrechnung' => array(
|
||||
'deadlineUeberschritten',
|
||||
@@ -179,7 +180,7 @@ $this->load->view(
|
||||
<div class="form-inline panel-body">
|
||||
<div class="form-group">
|
||||
<input type="file" id="requestAnrechnung-uploadfile"
|
||||
name="uploadfile" accept=".pdf" size="50"
|
||||
name="uploadfile" accept=".pdf" size="50" data-maxsize="<?php echo (int)ini_get('upload_max_filesize') * 1024 ?>"
|
||||
required>
|
||||
</div>
|
||||
<span id="requestAnrechnung-uploadTooltip" data-toggle="tooltip" data-placement="right"
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Zeitverfuegbarkeit verwalten',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'momentjs' => true,
|
||||
'ajaxlib' => true,
|
||||
'tabulator' => true,
|
||||
'tablewidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'phrases' => array(
|
||||
'global' => array(
|
||||
'bis',
|
||||
'notiz'
|
||||
),
|
||||
'ui' => array(
|
||||
'systemfehler',
|
||||
'keineDatenVorhanden',
|
||||
'von',
|
||||
'bitteWaehlen',
|
||||
'speichern',
|
||||
'loeschen',
|
||||
'abbrechen'
|
||||
),
|
||||
'lehre' => array(
|
||||
'lektor'
|
||||
)
|
||||
),
|
||||
'widgets' => true,
|
||||
'dialoglib' => true,
|
||||
'customJSs' => array(
|
||||
'public/js/bootstrapper.js',
|
||||
'public/js/lehre/lvplanung/zverfueg.js'
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
|
||||
<!-- title -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12 page-header">
|
||||
<h3>Zeitverfü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 .')
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
|
||||
$LOGDATA_NAME_PARKED = '\'Parked\'';
|
||||
$LOGDATA_NAME_ONHOLD = '\'Onhold\'';
|
||||
$LOGTYPE_KURZBZ = '\'Processstate\'';
|
||||
@@ -137,11 +137,12 @@
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
-- AND pss.bestaetigtam IS NULL
|
||||
@@ -162,11 +163,12 @@
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND pss.bestaetigtam IS NULL
|
||||
@@ -214,11 +216,12 @@
|
||||
LIMIT 1
|
||||
) AS "AnzahlStgNichtAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
|
||||
AND pss.bewerbung_abgeschicktamum IS NULL
|
||||
AND ps.person_id = p.person_id
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
|
||||
$REJECTED_STATUS = '\'Abgewiesener\'';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
@@ -106,11 +106,12 @@ $query = '
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || sp.orgform_kurzbz)), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
@@ -128,11 +129,12 @@ $query = '
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
|
||||
|
||||
AND ps.person_id = p.person_id
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\', \'Access code sent\', \'Personal data saved\'';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
$ORG_NAME = '\'InfoCenter\'';
|
||||
@@ -85,11 +85,12 @@ $query = '
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || sp.orgform_kurzbz)), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(so.studiengangkurzbzlang) || \':\' || sp.orgform_kurzbz), \', \')
|
||||
FROM public.tbl_prestudentstatus pss
|
||||
JOIN public.tbl_prestudent ps USING(prestudent_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
|
||||
@@ -4,11 +4,6 @@ $APP = '\'infocenter\'';
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
|
||||
|
||||
$uid = get_uid();
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($uid);
|
||||
$oeKurz = $rechte->getOEkurzbz('lehre/zgvpruefung');
|
||||
$oeKurz = '\''. implode('\',\'', $oeKurz) . '\'';
|
||||
|
||||
$query = '
|
||||
|
||||
@@ -120,21 +120,28 @@ if(!$projektarbeit_obj->load($projektarbeit_id))
|
||||
$titel = $projektarbeit_obj->titel;
|
||||
$student_uid = $projektarbeit_obj->student_uid;
|
||||
|
||||
// paarbeit sollte nur ab SS2021 online bewertet werden
|
||||
$qry_sem="SELECT 1
|
||||
FROM lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
||||
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
|
||||
LIMIT 1";
|
||||
$result_sem=$db->db_query($qry_sem);
|
||||
$num_rows_sem = $db->db_num_rows($result_sem);
|
||||
if($num_rows_sem < 0)
|
||||
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
|
||||
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
|
||||
|
||||
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br> ";
|
||||
}
|
||||
|
||||
// Endupload sollte vor Benotung durchgeführt worden sein
|
||||
$qry_endupload="SELECT 1
|
||||
FROM campus.tbl_paabgabe
|
||||
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND paabgabetyp_kurzbz='end'
|
||||
AND abgabedatum IS NOT NULL
|
||||
LIMIT 1";
|
||||
$result_endupload=$db->db_query($qry_endupload);
|
||||
$num_rows_endupload = $db->db_num_rows($result_endupload);
|
||||
if($num_rows_endupload < 0)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerErmittelnEnduploadProjektarbeit')."</font><br> ";
|
||||
}
|
||||
|
||||
// Zweitbegutachter holen
|
||||
if($betreuerart=="Erstbegutachter")
|
||||
{
|
||||
@@ -457,7 +464,11 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam))
|
||||
$htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
|
||||
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
|
||||
$htmlstr .= "<td width=10% align=center>";
|
||||
if ($num_rows_sem >= 1)
|
||||
|
||||
$semester_benotbar = $num_rows_sem >= 1;
|
||||
$endupload_vorhanden = $num_rows_endupload >= 1;
|
||||
|
||||
if ($semester_benotbar && $endupload_vorhanden)
|
||||
{
|
||||
$htmlstr .= "<form action='../../../index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung' title='Benotungsformular' target='_blank' method='GET'>";
|
||||
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
|
||||
@@ -466,9 +477,10 @@ if ($num_rows_sem >= 1)
|
||||
}
|
||||
else
|
||||
{
|
||||
$quick_info = !$semester_benotbar ? $p->t('abgabetool/aeltereParbeitBenoten') : $p->t('abgabetool/keinEnduploadErfolgt');
|
||||
$htmlstr .= "<form action='javascript:void(0);'>";
|
||||
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$p->t('abgabetool/aeltereParbeitBenoten')."'
|
||||
alt='".$p->t('abgabetool/aeltereParbeitBenoten')."' disabled>";
|
||||
$htmlstr .= "<input type='submit' value='".$p->t('abgabetool/benoten')."' title='".$quick_info."'
|
||||
alt='".$quick_info."' disabled>";
|
||||
$htmlstr .= "</form>";
|
||||
}
|
||||
$htmlstr .= "</td>";
|
||||
|
||||
@@ -423,18 +423,9 @@ if($command=="update" && $error!=true)
|
||||
}
|
||||
else
|
||||
{
|
||||
// paarbeit sollte nur ab SS2021 online bewertet werden
|
||||
$qry_sem="SELECT 1
|
||||
FROM lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
||||
WHERE projektarbeit_id=".$db->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2021')::date
|
||||
LIMIT 1";
|
||||
|
||||
$result_sem=$db->db_query($qry_sem);
|
||||
$num_rows_sem = $db->db_num_rows($result_sem);
|
||||
if($num_rows_sem < 0)
|
||||
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
|
||||
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
|
||||
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br> ";
|
||||
}
|
||||
|
||||
@@ -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,27 +208,32 @@ else
|
||||
$stsemdatumvon = $stsem_obj->start;
|
||||
$stsemdatumbis = $stsem_obj->ende;
|
||||
|
||||
$qry = "SELECT
|
||||
distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
|
||||
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
|
||||
tbl_zeugnisnote.note,tbl_mobilitaet.mobilitaetstyp_kurzbz,
|
||||
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN '1' ELSE '' END) as doubledegree
|
||||
FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
|
||||
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
|
||||
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
|
||||
$qry = "
|
||||
SELECT
|
||||
distinct on(nachname, vorname, person_id)
|
||||
vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid,
|
||||
tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe,
|
||||
(SELECT status_kurzbz
|
||||
FROM public.tbl_prestudentstatus
|
||||
WHERE prestudent_id=tbl_student.prestudent_id
|
||||
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
|
||||
tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von,
|
||||
tbl_zeugnisnote.note,tbl_mobilitaet.mobilitaetstyp_kurzbz,
|
||||
(CASE WHEN bis.tbl_mobilitaet.studiensemester_kurzbz = vw_student_lehrveranstaltung.studiensemester_kurzbz THEN '1' ELSE '' END) as doubledegree,
|
||||
tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung
|
||||
FROM
|
||||
campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid)
|
||||
JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid)
|
||||
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
|
||||
LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
|
||||
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
|
||||
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
|
||||
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
|
||||
LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id)
|
||||
LEFT JOIN lehre.tbl_note USING(note)
|
||||
WHERE
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
|
||||
vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
|
||||
vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
|
||||
AND vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";";
|
||||
|
||||
if($lehreinheit_id!='')
|
||||
$qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER);
|
||||
@@ -243,18 +256,22 @@ else
|
||||
$inc=' (i)';
|
||||
else
|
||||
$inc='';
|
||||
if($elem->bisio_id!='' && $elem->status!='Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis=='') && $elem->von < $stsemdatumbis) //Outgoing
|
||||
$inc.=' (o)';
|
||||
|
||||
if($elem->note==6) //angerechnet
|
||||
if($elem->bisio_id != '' && $elem->status != 'Incoming' && ($elem->bis > $stsemdatumvon || $elem->bis == '')
|
||||
&& $elem->von < $stsemdatumbis && (anzahlTage($elem->von, $elem->bis) >= 30))
|
||||
$inc.=' (o)';
|
||||
|
||||
$note = $elem->note;
|
||||
|
||||
if($elem->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen
|
||||
{
|
||||
$inc.=' (ar)';
|
||||
$note='ar';
|
||||
$inc.= '('. $elem->anmerkung. ')';
|
||||
$note = $elem->anmerkung;
|
||||
}
|
||||
|
||||
if ($elem->mobilitaetstyp_kurzbz !='' && $elem->doubledegree == 1) //dd-Program
|
||||
{
|
||||
$inc.=' (d.d.)';
|
||||
$inc .=' (d.d.)';
|
||||
}
|
||||
|
||||
$worksheet->write($lines,1,$elem->uid);
|
||||
@@ -262,7 +279,7 @@ else
|
||||
$worksheet->write($lines,3,$elem->vorname);
|
||||
$worksheet->write($lines,4,'="'.$elem->semester.$elem->verband.$elem->gruppe.'"');
|
||||
$worksheet->write($lines,5,'="'.trim($elem->matrikelnr).'"',$format_highlight);
|
||||
$worksheet->write($lines,6,$note,$format_highlight);
|
||||
$worksheet->write($lines,6, $note, $format_highlightright);
|
||||
$i++;
|
||||
$lines++;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
+637
-186
@@ -18,6 +18,7 @@
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
* Cristina Hainberger <hainberg@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* @brief bietet die Moeglichkeit zur Anzeige und
|
||||
@@ -29,10 +30,15 @@ require_once('../../../include/globals.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/zeitwunsch.class.php');
|
||||
require_once('../../../include/zeitwunsch_gueltigkeit.class.php');
|
||||
require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/studiengang.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung_gd.class.php');
|
||||
require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/lehrveranstaltung.class.php');
|
||||
require_once('../../../include/lehreinheit.class.php');
|
||||
require_once('../../../include/lehrstunde.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/sprache.class.php');
|
||||
|
||||
@@ -49,63 +55,27 @@ $uid = get_uid();
|
||||
if(!check_lektor($uid))
|
||||
die($p->t('global/keineBerechtigungFuerDieseSeite'));
|
||||
|
||||
|
||||
$PHP_SELF = $_SERVER['PHP_SELF'];
|
||||
|
||||
if(isset($_GET['type']))
|
||||
$type=$_GET['type'];
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
// Nächstes Studiensemester
|
||||
$next_ss = new Studiensemester();
|
||||
$next_ss->getNextStudiensemester();
|
||||
|
||||
// Aktuelles Studiensemester
|
||||
$akt_ss = new Studiensemester();
|
||||
$akt_ss->load($akt_ss->getAkt());
|
||||
|
||||
// Dropdown: Aktuelles/naechstes Studiensemester zum Bearbeiten
|
||||
$selected_ss = (isset($_GET['stsem']) && is_string($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester
|
||||
|
||||
// Dropdown: Vergangene Studiensemester zum Kopieren
|
||||
$selected_past_ss = (isset($_GET['pastStsem']) && is_string($_GET['pastStsem'])) ? $_GET['pastStsem'] : null; // Default: null
|
||||
|
||||
//Stundentabelleholen
|
||||
if(! $result_stunde=$db->db_query('SELECT * FROM lehre.tbl_stunde ORDER BY stunde'))
|
||||
die($db->db_last_error());
|
||||
$num_rows_stunde=$db->db_num_rows($result_stunde);
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($type) && $type=='save')
|
||||
{
|
||||
$zw = new zeitwunsch();
|
||||
|
||||
for ($t=1;$t<7;$t++)
|
||||
{
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
$var='wunsch'.$t.'_'.$i;
|
||||
if(!isset($_POST[$var]))
|
||||
continue;
|
||||
$gewicht=$_POST[$var];
|
||||
$stunde=$i+1;
|
||||
|
||||
$zw->mitarbeiter_uid = $uid;
|
||||
$zw->stunde = $stunde;
|
||||
$zw->tag = $t;
|
||||
$zw->gewicht = $gewicht;
|
||||
$zw->updateamum = date('Y-m-d H:i:s');
|
||||
$zw->updatevon = $uid;
|
||||
|
||||
if (!$zw->exists($uid, $stunde, $t))
|
||||
{
|
||||
$zw->new = true;
|
||||
$zw->insertamum = date('Y-m-d H:i:s');
|
||||
$zw->insertvon = $uid;
|
||||
}
|
||||
else
|
||||
$zw->new = false;
|
||||
|
||||
if(!$zw->save())
|
||||
echo $zw->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$zw = new zeitwunsch();
|
||||
if(!$zw->loadPerson($uid))
|
||||
die($zw->errormsg);
|
||||
|
||||
$wunsch = $zw->zeitwunsch;
|
||||
|
||||
|
||||
// Personendaten
|
||||
$person = new benutzer();
|
||||
if(!$person->load($uid))
|
||||
@@ -114,11 +84,10 @@ if(!$person->load($uid))
|
||||
$ma = new mitarbeiter($uid);
|
||||
$fixangestellt = $ma->fixangestellt;
|
||||
|
||||
// Nächstes Studiensemester
|
||||
$ss = new Studiensemester();
|
||||
$ss->getNextStudiensemester();
|
||||
$next_ss = $ss->studiensemester_kurzbz;
|
||||
$current_ss = $ss->getakt();
|
||||
// Check, ob Bearbeitung des ZW gesperrt ist.
|
||||
// Gesperrt, wenn Lektor bereits zugewiesene LVs hat.
|
||||
// Sperre in jeden Fall aufgehoben, wenn ein ZW kopiert wird. (denn ist eine eventuelle Sperre bereits manuell aufgehoben worden)
|
||||
$isGesperrt = checkIsVerplant($uid, $selected_ss) && is_null($selected_past_ss); // boolean
|
||||
|
||||
// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern
|
||||
if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
|
||||
@@ -127,10 +96,10 @@ if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt']))
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $current_ss;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $akt_ss->studiensemester_kurzbz;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $current_ss);
|
||||
$za_gd->load($uid, $akt_ss->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
@@ -147,10 +116,10 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
|
||||
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
|
||||
$zeitaufzeichnung_gd->uid = $uid;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss;
|
||||
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss->studiensemester_kurzbz;
|
||||
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
|
||||
$za_gd = new Zeitaufzeichnung_gd();
|
||||
$za_gd->load($uid, $next_ss);
|
||||
$za_gd->load($uid, $next_ss->studiensemester_kurzbz);
|
||||
if ($za_gd->uid)
|
||||
{
|
||||
echo 'Bereits eingetragen';
|
||||
@@ -162,14 +131,302 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
|
||||
}
|
||||
|
||||
// Zeitwuensche speichern
|
||||
if (isset($_GET['type']) && $_GET['type'] == 'save')
|
||||
{
|
||||
// Letzte Zeitwunschgueltigkeit (ZWG) holen
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 1);
|
||||
$lastZwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft
|
||||
$lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false;
|
||||
$zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird
|
||||
|
||||
// Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden
|
||||
if (is_null($lastZwg))
|
||||
{
|
||||
// Wenn ZW fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn mindestens eine ZWG vorhanden
|
||||
if (!is_null($lastZwg))
|
||||
{
|
||||
// Wenn Zeitwunsch fuer naechstes Studiensemester ist
|
||||
if ($selected_ss == $next_ss->studiensemester_kurzbz)
|
||||
{
|
||||
// Wenn naechstes Studiensemester schon eine eigene ZWG hat
|
||||
if ($lastZwgStartsNextSemester)
|
||||
{
|
||||
// Nur Zeitwunsch dieser ZWG updaten
|
||||
$zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
|
||||
// Wenn naechstes Studiensemester keine eigene ZWG hat
|
||||
if (!$lastZwgStartsNextSemester)
|
||||
{
|
||||
// Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester
|
||||
updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende);
|
||||
|
||||
// Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen
|
||||
$zw_zwg_id = insertZWG($uid, $next_ss->start, null);
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn Zeitwunsch fuer aktuelles Studiensemester ist
|
||||
if ($selected_ss == $akt_ss->studiensemester_kurzbz)
|
||||
{
|
||||
/**
|
||||
* Check, ob aktuelles Studiensemester eine ZWG hat.
|
||||
* Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das
|
||||
* aktuelle Studiensemester noch keine ZWG.
|
||||
* */
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz);
|
||||
$akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null;
|
||||
|
||||
// Keine ZWG fuer aktuelles Studiensemester vorhanden.
|
||||
// Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN
|
||||
if (is_null($akt_ss_zwg))
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende);
|
||||
}
|
||||
|
||||
// ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER
|
||||
if ((!is_null($akt_ss_zwg)))
|
||||
{
|
||||
// Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten
|
||||
// Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird.
|
||||
if ((new DateTime($akt_ss_zwg->von))->format('Y-m-d') == (new Datetime())->format('Y-m-d'))
|
||||
{
|
||||
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis);
|
||||
|
||||
$zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen:
|
||||
// -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist)
|
||||
// -> sonst ist bis null
|
||||
$zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis);
|
||||
|
||||
// Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern
|
||||
// NOTE: MUSS nach dem insert sein
|
||||
updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime('yesterday'))->format('Y-m-d H:i:s'));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Insert Zeitwunsch mit Zeitwunsch ZWG ID
|
||||
if (is_numeric($zw_zwg_id))
|
||||
{
|
||||
$zw = new zeitwunsch();
|
||||
|
||||
for ($t=1;$t<7;$t++)
|
||||
{
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
$var='wunsch'.$t.'_'.$i;
|
||||
if(!isset($_POST[$var]))
|
||||
continue;
|
||||
$gewicht=$_POST[$var];
|
||||
$stunde=$i+1;
|
||||
|
||||
$zw->mitarbeiter_uid = $uid;
|
||||
$zw->stunde = $stunde;
|
||||
$zw->tag = $t;
|
||||
$zw->gewicht = $gewicht;
|
||||
$zw->updateamum = date('Y-m-d H:i:s');
|
||||
$zw->updatevon = $uid;
|
||||
$zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id;
|
||||
|
||||
if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t))
|
||||
{
|
||||
$zw->new = true;
|
||||
$zw->insertamum = date('Y-m-d H:i:s');
|
||||
$zw->insertvon = $uid;
|
||||
}
|
||||
else
|
||||
{
|
||||
$zw->new = false;
|
||||
}
|
||||
|
||||
if(!$zw->save())
|
||||
echo $zw->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre
|
||||
// deaktiviert. Bearbeitungssperre wird gesetzt, wenn isGesperrt true ist. Deshalb hier mit false überschreiben.
|
||||
$isGesperrt = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunschgueltigkeit fuer Tabelle holen.
|
||||
* Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt.
|
||||
* Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen:
|
||||
* 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch)
|
||||
* 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester
|
||||
* 3: Default: Nächstes Studiensemesters
|
||||
*/
|
||||
$zwg = new zeitwunsch_gueltigkeit();
|
||||
$tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss;
|
||||
$zwg->getByStudiensemester($uid, $tmp_ss);
|
||||
$zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW
|
||||
|
||||
/**
|
||||
* Zeitwunsch fuer Tabelle holen
|
||||
* Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer
|
||||
* */
|
||||
$zw = new zeitwunsch();
|
||||
if (!$zw->loadByZWG($uid, $zwg_id))
|
||||
{
|
||||
die($zw->errormsg);
|
||||
}
|
||||
$wunsch = $zw->zeitwunsch;
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Erstellen einer neuen ZWG
|
||||
*/
|
||||
function insertZWG($uid, $von, $bis)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = true;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->von = $von;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->insertvon = $uid;
|
||||
if ($zwg->save())
|
||||
{
|
||||
return $zwg->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Init ZWG Objekt zum Updaten einer bestehenden ZWG
|
||||
*/
|
||||
function updateZWG($uid, $zwg_id, $bis)
|
||||
{
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->new = false;
|
||||
$zwg->zeitwunsch_gueltigkeit_id = $zwg_id;
|
||||
$zwg->mitarbeiter_uid = $uid;
|
||||
$zwg->bis = $bis;
|
||||
$zwg->updatevon = $uid;
|
||||
|
||||
if (!$zwg->save())
|
||||
{
|
||||
die($zwg->errormsg);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check, ob Lektor bereits zugewiesene LVs hat
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return bool|void
|
||||
*/
|
||||
function checkIsVerplant($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$lstd = new Lehrstunde();
|
||||
if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true))
|
||||
{
|
||||
die($lstd->errormsg);
|
||||
}
|
||||
|
||||
return empty($lstd->result) ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Studiengaenge of STG assigend to LVs, to which lector is alredy assigend in
|
||||
* the given Studiensemester.
|
||||
*
|
||||
* @param $uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return array|void
|
||||
*/
|
||||
function getStgOfVerplant($uid, $studiensemester_kurzbz)
|
||||
{
|
||||
$stg_arr = array(); // Mail data for Studiengang
|
||||
|
||||
// Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit
|
||||
$lstd = new Lehrstunde();
|
||||
if (!$lstd->getStundenplanData(
|
||||
'stundenplandev',
|
||||
null,
|
||||
$studiensemester_kurzbz,
|
||||
null,
|
||||
$uid,
|
||||
null,
|
||||
true)) //...but only from now on
|
||||
{
|
||||
die($lstd->errormsg);
|
||||
}
|
||||
|
||||
// Loop through Stundenplan entries
|
||||
foreach ($lstd->result as $row)
|
||||
{
|
||||
// Get LE of Stundenplan entry
|
||||
$le = new Lehreinheit($row->lehreinheit_id);
|
||||
|
||||
// GET LV by LE of Stundenplan entry
|
||||
$lv = new Lehrveranstaltung($le->lehrveranstaltung_id);
|
||||
|
||||
// Build Studiengang array
|
||||
$stg_arr[] = $lv->studiengang_kz;
|
||||
}
|
||||
|
||||
// Make Studiengang array unique
|
||||
return array_unique($stg_arr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Studiengang eMail Addresses.
|
||||
* @param $stgKz_arr // Studiengang Kennzeichen Array
|
||||
* @return array
|
||||
*/
|
||||
function getStgMail($stgKz_arr)
|
||||
{
|
||||
$stgMail_arr = array();
|
||||
foreach($stgKz_arr as $stgKz)
|
||||
{
|
||||
$stg = new Studiengang($stgKz);
|
||||
$stgMail_arr[]= $stg->email;
|
||||
}
|
||||
return $stgMail_arr;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $p->t('zeitwunsch/zeitwunsch');?></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link href="../../../skin/flexcrollstyles.css" rel="stylesheet" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/twbs/bootstrap/dist/js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
// Pruefen ob nur die erlaubten Werte verwendet wurden
|
||||
function checkvalues()
|
||||
@@ -194,181 +451,375 @@ if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
$(function() {
|
||||
// Bearbeitung deaktivieren, wenn Lektor zugewiesene LV im Studiensemester hat
|
||||
const isGesperrt = $('input[name=isGesperrt]').val();
|
||||
if (isGesperrt == 'true')
|
||||
{
|
||||
$('input[name=radioZWG]').attr("disabled", true);
|
||||
$('input[name=submit]').attr("disabled", true);
|
||||
}
|
||||
|
||||
// Bearbeitung aktivieren, wenn Lektor Aktivierungslink klickt
|
||||
$('#bearbeitung-aktivieren').click(function(){
|
||||
$('input[name=radioZWG]').attr("disabled", false);
|
||||
$('input[name=submit]').attr("disabled", false);
|
||||
|
||||
$('#divChangeZWG').removeClass('hidden');
|
||||
$('#divisGesperrt').addClass('hidden');
|
||||
});
|
||||
|
||||
// Bei Wechsel von Studiensemester die Seite mit GET params neu laden
|
||||
$('#stsem').change(function(){
|
||||
let studiensemester = $('option:selected', this).val();
|
||||
|
||||
window.location = '?stsem=' + studiensemester;
|
||||
});
|
||||
|
||||
// Bei Wechsel zwischen Zeitwunsch aendern / kopieren
|
||||
$("input[name='radioZWG']").change(function(){
|
||||
if ($(this).val() == 'copy')
|
||||
{
|
||||
$('#divCopyZWG').removeClass('hidden');
|
||||
$('#divChangeZWG').addClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#divCopyZWG').addClass('hidden');
|
||||
$('#divChangeZWG').removeClass('hidden');
|
||||
}
|
||||
});
|
||||
|
||||
// Bei Wahl von vergangenem Studiensemester die Seite mit GET params neu laden
|
||||
$('#pastStsem').change(function(){
|
||||
let stsem = $('#stsem option:selected').val()
|
||||
let pastStsem = $('option:selected', this).val();
|
||||
|
||||
window.location = '?stsem='+ stsem + '&pastStsem=' + pastStsem;
|
||||
});
|
||||
|
||||
// Alle Werte ind Zeitwunschtabelle auf 1 setzen
|
||||
$('#empty-table').click(function(){
|
||||
$('#table-zeitwunsch tr td input').each(function() {
|
||||
$(this)
|
||||
.val(1)
|
||||
.parent().css('background-color', '#CCFFCC');
|
||||
});
|
||||
})
|
||||
|
||||
// Aenderungen in Zeitwunschtabelle zurücknehmen -> Seite neu laden
|
||||
$('#reload-table').click(function(){
|
||||
let studiensemester = $('option:selected', '#stsem').val();
|
||||
window.location = '?stsem=' + studiensemester;
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="flexcroll" style="outline: none;">
|
||||
<table>
|
||||
<table class="table">
|
||||
<?php if($fixangestellt && (defined('CIS_ZEITWUNSCH_GD') && CIS_ZEITWUNSCH_GD)): ?>
|
||||
<!--Erklärung zu Pausen bei geteilten Arbeitszeiten-->
|
||||
<tr>
|
||||
<td>
|
||||
<h1>Zustimmung zur Verplanung in geteilter Arbeitszeit</h1>
|
||||
<h3>Zustimmung zur Verplanung in geteilter Arbeitszeit</h3>
|
||||
|
||||
<form action="">
|
||||
<p>
|
||||
<?php
|
||||
echo $p->t('zeitwunsch/geteilteArbeitszeit');
|
||||
echo '<br><br>';
|
||||
$gd = new zeitaufzeichnung_gd();
|
||||
$gd->load($uid, $current_ss);
|
||||
$gd->load($uid, $akt_ss->studiensemester_kurzbz);
|
||||
if ( ! $gd->uid )
|
||||
{
|
||||
echo '<br><br><h3>Zustimmung für '.$current_ss.': ';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
|
||||
echo '</h3><br><br><input type="submit" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
|
||||
echo '<div class="radio">';
|
||||
echo '<b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': ';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="yes">ja';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause-akt" value="no">nein';
|
||||
echo '</label>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
|
||||
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit-akt" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
|
||||
echo '<br><br><h3>Zustimmung für '.$current_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
|
||||
echo '<br><br><b>Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
|
||||
}
|
||||
$gd = new zeitaufzeichnung_gd();
|
||||
$gd->load($uid, $next_ss);
|
||||
$gd->load($uid, $next_ss->studiensemester_kurzbz);
|
||||
if ( ! $gd->uid )
|
||||
{
|
||||
echo '<h3>Zustimmung für '.$next_ss.': ';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
|
||||
echo '</h3><br><br><input type="submit" name="submit" value="'.$p->t('global/speichern').'" style="float: right"><br>';
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-lg-3 col-md-4 col-xs-4">';
|
||||
echo '<div class="radio">';
|
||||
echo '<b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': ';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
|
||||
echo '</label>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-2 col-md-3 col-xs-4">';
|
||||
echo '</b><input type="submit" class="btn btn-default btn-block" name="submit" value="'.$p->t('global/speichern').'" style="float: right">';
|
||||
echo '</div>';
|
||||
|
||||
echo '<div class="col-lg-7 col-md-5 col-xs-4">';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
|
||||
echo '<h3>Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
|
||||
echo '<br><b>Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</b>';
|
||||
}
|
||||
//var_dump($gd);
|
||||
?>
|
||||
|
||||
</p>
|
||||
</form>
|
||||
<br><hr>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr>
|
||||
<td>
|
||||
<h1><?php echo $p->t('zeitwunsch/zeitwunsch');?></h1>
|
||||
<!--Auskommentiert von Kindl, da sich der Hilfetext nicht vom Anleitungtext auf der Seite unterscheidet
|
||||
<td class="ContentHeader" align="right">
|
||||
<A onclick="window.open('zeitwunsch_help.php','Hilfe', 'height=320,width=480,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=yes,toolbar=no,location=no,menubar=no,dependent=yes');" class="hilfe" target="_blank">
|
||||
<font class="ContentHeader">
|
||||
<?php echo $p->t('zeitwunsch/help')?>
|
||||
</font>
|
||||
</A>
|
||||
</td>-->
|
||||
<?php
|
||||
echo "<h2>".$p->t('zeitwunsch/zeitwunschVon')." $person->titelpre $person->vorname $person->nachname $person->titelpost<br/></h2>";
|
||||
echo $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster')."<br/><br/>";
|
||||
echo '<FORM name="zeitwunsch" method="post" action="zeitwunsch.php?type=save" onsubmit="return checkvalues()">
|
||||
<TABLE>
|
||||
<TR>';
|
||||
|
||||
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
|
||||
for ($i=0;$i<$num_rows_stunde; $i++)
|
||||
{
|
||||
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
|
||||
$beginn=substr($beginn,0,5);
|
||||
$ende=$db->db_result($result_stunde,$i,'"ende"');
|
||||
$ende=substr($ende,0,5);
|
||||
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
|
||||
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
|
||||
}
|
||||
// FORM Begin
|
||||
echo '<form name="zeitwunsch" method="post" action="zeitwunsch.php?stsem='. $selected_ss. '&type=save" onsubmit="return checkvalues()">';
|
||||
echo '<input type="hidden" name="uid" value="'. $uid. '">';
|
||||
echo '<input type="hidden" name="isGesperrt" value="'. json_encode($isGesperrt). '">';
|
||||
|
||||
echo '</TR>';
|
||||
// Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester
|
||||
$next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
|
||||
$akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : '';
|
||||
|
||||
for ($j=1; $j<7; $j++)
|
||||
{
|
||||
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
if (isset($wunsch[$j][$i+1]))
|
||||
$index=$wunsch[$j][$i+1];
|
||||
else
|
||||
$index=1;
|
||||
//$id='bgcolor';
|
||||
//$id.=$index+3;
|
||||
$bgcolor=$cfgStdBgcolor[$index+3];
|
||||
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
|
||||
}
|
||||
echo '</TR>';
|
||||
}
|
||||
echo '<h3>'. $p->t('zeitwunsch/gueltigIm');
|
||||
echo '<SELECT name="stsem" id="stsem">';
|
||||
echo '<OPTION value="'.$next_ss->studiensemester_kurzbz.'"'. $next_ss_selected. '>'. $next_ss->studiensemester_kurzbz.'</OPTION>';
|
||||
echo '<OPTION value="'.$akt_ss->studiensemester_kurzbz.'"'. $akt_ss_selected. '>'. $akt_ss->studiensemester_kurzbz.'</OPTION>';
|
||||
echo '</SELECT>';
|
||||
echo '</h3><br>';
|
||||
|
||||
echo '
|
||||
</TABLE><br>
|
||||
<INPUT type="hidden" name="uid" value="'.$uid.'">
|
||||
<INPUT type="submit" name="Abschicken" value="'.$p->t('global/speichern').'">
|
||||
';
|
||||
// Tabelle Zeitwunsch-Semesterplan
|
||||
echo '<table id="table-zeitwunsch" class="table table-default table-condensed table-bordered">';
|
||||
// Tabelle Kopfzeile
|
||||
echo '<tr>';
|
||||
echo '<th>'.$p->t('global/stunde').'<br>'.$p->t('global/beginn').'<br>'.$p->t('global/ende').'</th>';
|
||||
for ($i=0;$i<$num_rows_stunde; $i++)
|
||||
{
|
||||
$beginn=$db->db_result($result_stunde,$i,'"beginn"');
|
||||
$beginn=substr($beginn,0,5);
|
||||
$ende=$db->db_result($result_stunde,$i,'"ende"');
|
||||
$ende=substr($ende,0,5);
|
||||
$stunde=$db->db_result($result_stunde,$i,'"stunde"');
|
||||
echo "<th><div align=\"center\">$stunde<br>$beginn<br>$ende</div></th>";
|
||||
}
|
||||
echo '</tr>';
|
||||
// Tabelle Zellen
|
||||
for ($j=1; $j<7; $j++)
|
||||
{
|
||||
echo '<TR><TD>'.$tagbez[$lang->index][$j].'</TD>';
|
||||
for ($i=0;$i<$num_rows_stunde;$i++)
|
||||
{
|
||||
if (isset($wunsch[$j][$i+1]))
|
||||
$index=$wunsch[$j][$i+1];
|
||||
else
|
||||
$index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden
|
||||
|
||||
if($zw->updateamum!='')
|
||||
{
|
||||
echo '<font size="x-small">'.$p->t('zeitwunsch/letzteAenderung').': '.$datum_obj->formatDatum($zw->updateamum,'d.m.Y H:i:s').' '.$p->t('zeitwunsch/von').' '.$zw->updatevon.'</font>';
|
||||
}
|
||||
?>
|
||||
$bgcolor=$cfgStdBgcolor[$index+3];
|
||||
echo '<TD style="padding-left: 5px; padding-right:5px;" align="center" bgcolor="'.$bgcolor.'"><INPUT align="right" type="text" name="wunsch'.$j.'_'.$i.'" size="1" maxlength="2" value="'.$index.'"></TD>';
|
||||
}
|
||||
echo '</TR>';
|
||||
}
|
||||
echo '</table>';
|
||||
|
||||
</FORM>
|
||||
// Zeitwunsch aendern / kopieren
|
||||
echo '<div class="row">';
|
||||
echo '<div class="col-xs-12">';
|
||||
echo '<span>'. $p->t('zeitwunsch/erklaerungstext'). '</span><br>';
|
||||
echo '<hr>';
|
||||
echo '</div>'; // end col-xs-12
|
||||
echo '</div>'; // end row
|
||||
|
||||
<br>
|
||||
echo '<div class="row">';
|
||||
|
||||
<h2><?php echo $p->t('zeitwunsch/erklärung');?>:</h2>
|
||||
echo '<div class="col-xs-9">';
|
||||
// Radiobuttons aendern / kopieren
|
||||
$radioChangeChecked = is_null($selected_past_ss) ? 'checked' : '';
|
||||
$radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : '';
|
||||
|
||||
<?php
|
||||
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
|
||||
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
|
||||
?>
|
||||
</a>
|
||||
<P><?php echo $p->t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!<BR><BR>
|
||||
</P>
|
||||
<TABLE align=center>
|
||||
<TR>
|
||||
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
|
||||
<TH>
|
||||
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
|
||||
</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<!--<TR>
|
||||
<TD>
|
||||
<DIV align="right">0</DIV>
|
||||
</TD>
|
||||
<TD>keine Bedeutung</TD>
|
||||
</TR>-->
|
||||
<TR>
|
||||
<TD>
|
||||
<DIV align="right">-1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>
|
||||
<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>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
echo '<div class="radio">';
|
||||
echo '<span class="text-uppercase"><b>'.$p->t('zeitwunsch/fuer', array($selected_ss)). '</b></span>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<b><input type="radio" name="radioZWG" id="radioChangeZWG" value="change" '. $radioChangeChecked. '> '. $p->t('zeitwunsch/kopieren'). '</b>';
|
||||
echo '</label>';
|
||||
echo '<label class="radio-inline">';
|
||||
echo '<b><input type="radio" name="radioZWG" id="radioCopyZWG" value="copy" '. $radioCopyChecked. '> '. $p->t('zeitwunsch/aendern'). '</b>';
|
||||
echo '</label>';
|
||||
if ($isGesperrt)
|
||||
{
|
||||
echo '<span class="label label-danger valign-top">'.$p->t('zeitwunsch/stundenBereitsVerplant', array($selected_ss)). '</span>';
|
||||
}
|
||||
echo '</div>';
|
||||
echo '</div>'; // end col-xs-9
|
||||
|
||||
echo '<div class="col-xs-3" class="pull-left">';
|
||||
echo '<span><small><a id="empty-table" style="cursor: pointer">'. $p->t('zeitwunsch/werteAuf1setzen'). '</a></small></span><br>';
|
||||
echo '<span><small><a id="reload-table" style="cursor: pointer">'. $p->t('global/aenderungenZuruecksetzen'). '</a></small></span><br><br>';
|
||||
echo '</div>'; // end col-xs-3
|
||||
|
||||
$divChangeHidden = !is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
|
||||
$divCopyHidden = is_null($selected_past_ss) || $isGesperrt ? 'hidden' : '';
|
||||
$divisGesperrtHidden = $isGesperrt ? '' : 'hidden';
|
||||
|
||||
echo '<div id="divChangeZWG" class="'. $divChangeHidden . '">';
|
||||
echo '<div class="col-xs-8 col-lg-7">';
|
||||
echo '<span>' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .'</span>';
|
||||
echo '</div>'; // end col
|
||||
echo '<div class="col-xs-1 col-lg-2">';
|
||||
// BLANK
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divChangeZWG
|
||||
|
||||
echo '<div id="divCopyZWG" class="'. $divCopyHidden . '">';
|
||||
echo '<div class="col-xs-7">';
|
||||
echo '<span>' . $p->t('zeitwunsch/kopierenText') .'</span>';
|
||||
echo '</div>'; // end col
|
||||
|
||||
$studiensemester = new Studiensemester();
|
||||
$tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz;
|
||||
$studiensemester->load($tmp_ss);
|
||||
|
||||
$zwg = new Zeitwunsch_gueltigkeit();
|
||||
$zwg->getByUID($uid, 4, true, $studiensemester->ende);
|
||||
$past_zwg_arr = $zwg->result;
|
||||
echo '<div class="col-xs-2">';
|
||||
echo '<select name="pastStsem" id="pastStsem" class="form form-control">';
|
||||
echo '<OPTION value="">-- '. $p->t("global/bitteWaehlen").' --</OPTION>';
|
||||
foreach($past_zwg_arr as $row)
|
||||
{
|
||||
$selected = $row->studiensemester_kurzbz == $selected_past_ss ? 'selected' : '';
|
||||
echo '<option value="'. $row->studiensemester_kurzbz. '" '. $selected. '>'. $row->studiensemester_kurzbz. '</option>';
|
||||
}
|
||||
echo '</select>';
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divCopyZWG
|
||||
|
||||
echo '<div id="divisGesperrt" class="'. $divisGesperrtHidden . '">';
|
||||
|
||||
// Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist
|
||||
$stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss);
|
||||
$stgMail_arr = getStgMail($stgKzOfVerplant_arr);
|
||||
|
||||
echo '<div class="col-xs-9">';
|
||||
echo '<div class="panel panel-danger">';
|
||||
echo '<div class="panel-body">';
|
||||
echo '<span class="text-danger"><b>'. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': </b></span>';
|
||||
echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, implode($stgMail_arr, '; '))). '
|
||||
<a id="bearbeitung-aktivieren" style="cursor:pointer;">'. $p->t("zeitwunsch/bearbeitungAktivieren"). '</a><br>
|
||||
<span><b>'. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . '</b></span>
|
||||
</span>';
|
||||
echo '</div>'; // end panel heading
|
||||
echo '</div>'; // end panel
|
||||
echo '</div>'; // end col
|
||||
echo '</div>'; // end divisGesperrt
|
||||
|
||||
// Speichern - Button
|
||||
echo '<div class="col-xs-3">';
|
||||
echo '<input class="btn btn-default" style="width: 200px;" type="submit" name="submit" value="'.$p->t('global/speichern').'">';
|
||||
echo '</div>';
|
||||
|
||||
echo '</div>'; // end row
|
||||
echo '<hr>';
|
||||
?>
|
||||
</form>
|
||||
|
||||
<!-- Zeitwunsch Erklaerung -->
|
||||
<div class="row">
|
||||
<div class="col-xs-9">
|
||||
<span><b><?php echo $p->t('zeitwunsch/folgendePunkteSindZuBeachten');?>:</b></span>
|
||||
<UL class="unordered-list">
|
||||
<LI><?php echo $p->t('zeitwunsch/verwendenSieDenWertNur');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/sperrenSieNurTermine');?></LI>
|
||||
<LI><?php echo $p->t('zeitwunsch/esSolltenFuerJedeStunde');?></LI>
|
||||
</UL><br>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<br>
|
||||
<TABLE class="table table-condensed table-default table-bordered" align=center>
|
||||
<TR>
|
||||
<TH><B><?php echo $p->t('zeitwunsch/wert');?></B></TH>
|
||||
<TH>
|
||||
<DIV align="center"><B><?php echo $p->t('zeitwunsch/bedeutung');?></B></DIV>
|
||||
</TH>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[5]; ?>">
|
||||
<DIV align="right">2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierMoechteIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[6]; ?>">
|
||||
<DIV align="right">1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierKannIchUnterrichten');?></TD>
|
||||
</TR>
|
||||
<!--<TR>
|
||||
<TD>
|
||||
<DIV align="right">0</DIV>
|
||||
</TD>
|
||||
<TD>keine Bedeutung</TD>
|
||||
</TR>-->
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[2]; ?>">
|
||||
<DIV align="right">-1</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/nurInNotfaellen');?></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD style="background-color: <?php echo $cfgStdBgcolor[1]; ?>">
|
||||
<DIV align="right">-2</DIV>
|
||||
</TD>
|
||||
<TD> <?php echo $p->t('zeitwunsch/hierAufGarKeinenFall');?></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Zeitsperre -->
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4><?php echo $p->t('zeitsperre/zeitsperren');?>:</h4>
|
||||
<?php
|
||||
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
|
||||
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
|
||||
?></a>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -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
@@ -249,9 +249,18 @@ define('BIS_FUNKTIONSCODE_6_ARR', array(
|
||||
'Team'
|
||||
));
|
||||
|
||||
// Standortcode fuer Lehrgaenge
|
||||
define('BIS_STANDORTCODE_LEHRGAENGE', '0');
|
||||
// Standortcode fuer Lehrgaenge - Obsolete da Standort nun aus DB geholt wird
|
||||
//define('BIS_STANDORTCODE_LEHRGAENGE', '0');
|
||||
|
||||
// bPk Abfrage
|
||||
define('BPK_FUER_ALLE_BENUTZER_ABFRAGEN', false);
|
||||
|
||||
// Bei folgenden Buchungstypen wird ein Anlegen geprüft ob bereits ein Eintrag für diesen Typ vorhanden ist im selben
|
||||
// Semester und ggf ein Hinweis ausgegeben
|
||||
define('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK', serialize(
|
||||
array('StudiengebuehrAnzahlung', 'Studiengebuehr', 'StudiengebuehrRestzahlung', 'OEH')
|
||||
));
|
||||
|
||||
// Spezialnoten die am Zeunigs und Diplomasupplement ignoriert werden
|
||||
define('ZEUGNISNOTE_NICHT_ANZEIGEN',serialize(array('iar', 'nz')));
|
||||
?>
|
||||
|
||||
@@ -172,7 +172,7 @@ var LeLvbgrpDDObserver=
|
||||
|
||||
if(lehreinheit_id=='')
|
||||
{
|
||||
alert('Eine Gruppe kann nur zu einer Lehreinheit hinzugefügt werden. Nicht aber zu einer Lehrveranstaltung');
|
||||
alert('Eine Gruppe kann nur zu einem LV-Teil hinzugefügt werden, nicht aber zu einer Lehrveranstaltung');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -26,6 +26,7 @@ require_once('../include/benutzerberechtigung.class.php');
|
||||
require_once('../include/studiensemester.class.php');
|
||||
require_once('../include/variable.class.php');
|
||||
require_once('../include/addon.class.php');
|
||||
require_once('../include/datum.class.php');
|
||||
|
||||
$user=get_uid();
|
||||
|
||||
@@ -45,6 +46,8 @@ if(!$variable->loadVariables($user))
|
||||
$rechte = new benutzerberechtigung();
|
||||
$rechte->getBerechtigungen($user);
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
if(!$rechte->isBerechtigt('basis/fas'))
|
||||
die('Sie haben keine Berechtigung für diese Seite');
|
||||
|
||||
@@ -239,7 +242,7 @@ foreach($addon_obj->result as $addon)
|
||||
<menupopup id="menu-properties-popup">
|
||||
<?php
|
||||
$stsemobj = new studiensemester();
|
||||
$stsemobj->getAll();
|
||||
$stsemobj->getAll('desc');
|
||||
foreach ($stsemobj->studiensemester as $stsem)
|
||||
{
|
||||
echo "
|
||||
@@ -248,6 +251,7 @@ foreach($addon_obj->result as $addon)
|
||||
label = '$stsem->studiensemester_kurzbz'
|
||||
type = 'radio'
|
||||
command = 'menu-properties-studiensemester:command'
|
||||
tooltiptext = '(".$datum_obj->formatDatum($stsem->start, "d.m.Y")." - ".$datum_obj->formatDatum($stsem->ende, "d.m.Y").")'
|
||||
checked = ".($variable->variable->semester_aktuell==$stsem->studiensemester_kurzbz?"'true' ":"'false'")." />";
|
||||
}
|
||||
?>
|
||||
@@ -934,6 +938,9 @@ foreach($addon_obj->result as $addon)
|
||||
oncommand="studiensemesterChange('', 1)"
|
||||
/>
|
||||
</statusbarpanel>
|
||||
<statusbarpanel id="statusbarpanel-panel-semester-aktuell">
|
||||
<toolbarbutton id="statusbarpanel-semester-aktuell" label="Aktuelles Studiensemester" oncommand="setStudiensemesterAktuell()"/>
|
||||
</statusbarpanel>
|
||||
<statusbarpanel id="statusbarpanel-db_table" label="<?php echo DB_NAME; ?>"/>
|
||||
<statusbarpanel id="statusbarpanel-text" label="<?php echo htmlspecialchars($error_msg); ?>" flex="4" crop="right" />
|
||||
<statusbarpanel id="progress-panel" class="statusbarpanel-progress">
|
||||
|
||||
@@ -493,6 +493,14 @@ if(!$error)
|
||||
$variable->name = 'semester_aktuell';
|
||||
$variable->wert = $studiensemester_kurzbz;
|
||||
}
|
||||
elseif(isset($_POST['stsem_aktuell']))
|
||||
{
|
||||
$stsem = new studiensemester();
|
||||
$studiensemester_kurzbz = $stsem->getakt();
|
||||
|
||||
$variable->name = 'semester_aktuell';
|
||||
$variable->wert = $studiensemester_kurzbz;
|
||||
}
|
||||
elseif(isset($_POST['kontofilterstg']))
|
||||
{
|
||||
$variable->name = 'kontofilterstg';
|
||||
|
||||
@@ -216,14 +216,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -507,14 +507,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -731,14 +731,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -838,14 +838,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -954,14 +954,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
// Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert
|
||||
@@ -1055,14 +1055,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
// Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert
|
||||
@@ -1180,14 +1180,14 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
@@ -1234,7 +1234,7 @@ if(!$error)
|
||||
else
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen';
|
||||
$errormsg = 'Bitte zuerst einen LV-Teil auswaehlen';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1265,19 +1265,19 @@ if(!$error)
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Lehreinheit wurde nicht gefunden';
|
||||
$errormsg = 'LV-Teil wurde nicht gefunden';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
{
|
||||
$leDAO=new lehreinheit();
|
||||
$leDAO = new lehreinheit();
|
||||
if ($_POST['do']=='create' || ($_POST['do']=='update'))
|
||||
{
|
||||
if($_POST['do']=='update')
|
||||
@@ -1286,7 +1286,7 @@ if(!$error)
|
||||
{
|
||||
$return = false;
|
||||
$error = true;
|
||||
$errormsg = 'Fehler beim Laden der Lehreinheit';
|
||||
$errormsg = 'Fehler beim Laden des LV-Teils';
|
||||
}
|
||||
|
||||
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
|
||||
@@ -1388,6 +1388,118 @@ if(!$error)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($_POST['do']=='copy')
|
||||
{
|
||||
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'sui')
|
||||
&& !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'sui')
|
||||
&& !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'sui'))
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
$errormsg = 'Keine Berechtigung';
|
||||
}
|
||||
|
||||
if(!$leDAO->load($_POST['lehreinheit_id']))
|
||||
{
|
||||
$return = false;
|
||||
$error = true;
|
||||
$errormsg = 'Fehler beim Laden des LV-Teils';
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
{
|
||||
// Neue Lehreinheit anlegen
|
||||
$leDAO->new = true;
|
||||
$leDAO->unr = '';
|
||||
$leDAO->updateamum = date('Y-m-d H:i:s');
|
||||
$leDAO->updatevon = $user;
|
||||
$leDAO->insertamum = date('Y-m-d H:i:s');
|
||||
$leDAO->insertvon = $user;
|
||||
|
||||
if ($leDAO->save())
|
||||
{
|
||||
// Wenn Art "alle" oder "gruppen" ist, werden auch alle Lehreinheitgruppe kopiert
|
||||
if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'gruppen'))
|
||||
{
|
||||
$legruppe = new lehreinheitgruppe();
|
||||
$legruppe->getLehreinheitgruppe($_POST['lehreinheit_id']);
|
||||
|
||||
if (count($legruppe->lehreinheitgruppe) > 0)
|
||||
{
|
||||
foreach ($legruppe->lehreinheitgruppe as $row)
|
||||
{
|
||||
$legruppe_new = new lehreinheitgruppe();
|
||||
$legruppe_new->lehreinheit_id = $leDAO->lehreinheit_id;
|
||||
$legruppe_new->studiengang_kz = $row->studiengang_kz;
|
||||
$legruppe_new->semester = $row->semester;
|
||||
$legruppe_new->verband = $row->verband;
|
||||
$legruppe_new->gruppe = $row->gruppe;
|
||||
$legruppe_new->gruppe_kurzbz = $row->gruppe_kurzbz;
|
||||
$legruppe_new->updateamum = date('Y-m-d H:i:s');
|
||||
$legruppe_new->updatevon = $user;
|
||||
$legruppe_new->insertamum = date('Y-m-d H:i:s');
|
||||
$legruppe_new->insertvon = $user;
|
||||
|
||||
if (!$legruppe_new->save(true))
|
||||
{
|
||||
$errormsg = 'Fehler beim Kopieren der Gruppe: '.$legruppe_new->errormsg;
|
||||
$return = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Wenn Art "alle" oder "lektoren" ist, werden auch alle Lehreinheitmitarbeiter kopiert
|
||||
if(isset($_POST['art']) && ($_POST['art'] == 'alle' || $_POST['art'] == 'lektoren'))
|
||||
{
|
||||
$lema = new lehreinheitmitarbeiter();
|
||||
$lema->getLehreinheitmitarbeiter($_POST['lehreinheit_id']);
|
||||
|
||||
if (count($lema->lehreinheitmitarbeiter) > 0)
|
||||
{
|
||||
foreach ($lema->lehreinheitmitarbeiter as $row)
|
||||
{
|
||||
$lema_new = new lehreinheitmitarbeiter();
|
||||
$lema_new->lehreinheit_id = $leDAO->lehreinheit_id;
|
||||
$lema_new->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$lema_new->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz;
|
||||
$lema_new->semesterstunden = $row->semesterstunden;
|
||||
$lema_new->planstunden = $row->planstunden;
|
||||
$lema_new->stundensatz = $row->stundensatz;
|
||||
$lema_new->faktor = $row->faktor;
|
||||
$lema_new->anmerkung = $row->anmerkung;
|
||||
$lema_new->bismelden = $row->bismelden;
|
||||
$lema_new->updateamum = date('Y-m-d H:i:s');
|
||||
$lema_new->updatevon = $user;
|
||||
$lema_new->insertamum = date('Y-m-d H:i:s');
|
||||
$lema_new->insertvon = $user;
|
||||
$lema_new->ext_id = $row->ext_id;
|
||||
$lema_new->vertrag_id = $row->vertrag_id;
|
||||
|
||||
if (!$lema_new->save(true))
|
||||
{
|
||||
$errormsg = 'Fehler beim Kopieren der MitarbeiterInnen: '.$lema_new->errormsg;
|
||||
$return = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = $leDAO->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($_POST['do']=='delete') //Lehreinheit loeschen
|
||||
{
|
||||
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
|
||||
@@ -1409,7 +1521,7 @@ if(!$error)
|
||||
if($db->db_num_rows()>0)
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!';
|
||||
$errormsg = 'Dieser LV-Teil ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1420,7 +1532,7 @@ if(!$error)
|
||||
else
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg;
|
||||
$errormsg = 'Fehler beim Loeschen des LV-Teils '.$leDAO->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1795,13 +1907,13 @@ if(!$error)
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Gruppe passt nicht zur Lehreinheit';
|
||||
$errormsg = 'Gruppe passt nicht zum LV-Teil';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Gruppe passt nicht zur Lehreinheit';
|
||||
$errormsg = 'Gruppe passt nicht zum LV-Teil';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -521,7 +521,7 @@ function LeDelete()
|
||||
}
|
||||
|
||||
//Abfrage ob wirklich geloescht werden soll
|
||||
if (confirm('Wollen Sie diese Lehreinheit wirklich loeschen?'))
|
||||
if (confirm('Wollen Sie diesen LV-Teil wirklich loeschen?'))
|
||||
{
|
||||
//Script zum loeschen der Lehreinheit aufrufen
|
||||
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
|
||||
@@ -541,6 +541,52 @@ function LeDelete()
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * LV-Teile kopieren
|
||||
// ****
|
||||
function LeCopy(art)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('lehrveranstaltung-tree');
|
||||
|
||||
if (tree.currentIndex==-1)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
//Ausgewaehlte LV-Teile holen
|
||||
var col = tree.columns ? tree.columns["lehrveranstaltung-treecol-lehreinheit_id"] : "lehrveranstaltung-treecol-lehreinheit_id";
|
||||
var lehreinheit_id = tree.view.getCellText(tree.currentIndex,col);
|
||||
if(lehreinheit_id == '')
|
||||
{
|
||||
alert('Lehreinheit_id konnte nicht ermittelt werden');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
alert(e);
|
||||
return false;
|
||||
}
|
||||
|
||||
//Script zum kopieren des LV-Teils aufrufen
|
||||
var req = new phpRequest('lvplanung/lehrveranstaltungDBDML.php','','');
|
||||
|
||||
req.add('type','lehreinheit');
|
||||
req.add('do','copy');
|
||||
req.add('art',art);
|
||||
req.add('lehreinheit_id',lehreinheit_id);
|
||||
var response = req.executePOST();
|
||||
|
||||
var val = new ParseReturnValue(response)
|
||||
if(!val.dbdml_return)
|
||||
alert(val.dbdml_errormsg)
|
||||
|
||||
LvTreeRefresh();
|
||||
LeDetailReset();
|
||||
LeDetailDisableFields(true);
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Leert alle Eingabe- und Auswahlfelder
|
||||
// ****
|
||||
@@ -2673,7 +2719,7 @@ function LeMitarbeiterGesamtkosten()
|
||||
/*
|
||||
* Oeffnet alle Subtrees
|
||||
*/
|
||||
function LvTreeOpenAllSubtrees()
|
||||
function LvTreeOpenAllSubtrees(art)
|
||||
{
|
||||
var tree=document.getElementById('lehrveranstaltung-tree');
|
||||
|
||||
@@ -2682,10 +2728,21 @@ function LvTreeOpenAllSubtrees()
|
||||
else
|
||||
return false;
|
||||
|
||||
for(var i=items-1;i>=0;i--)
|
||||
if (art == 'aus')
|
||||
{
|
||||
if(!tree.view.isContainerOpen(i))
|
||||
tree.view.toggleOpenState(i);
|
||||
for(var i=items-1;i>=0;i--)
|
||||
{
|
||||
if(!tree.view.isContainerOpen(i))
|
||||
tree.view.toggleOpenState(i);
|
||||
}
|
||||
}
|
||||
else if (art == 'ein')
|
||||
{
|
||||
for(var i=items-1;i>=0;i--)
|
||||
{
|
||||
if(tree.view.isContainerOpen(i))
|
||||
tree.view.toggleOpenState(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,13 +54,21 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
<vbox id="LehrveranstaltungEditor" flex="1" uid="" stg_kz="">
|
||||
<popupset>
|
||||
<menupopup id="lehrveranstaltung-tree-popup">
|
||||
<menu id="lehrveranstaltung-tree-popup-lehreinheit-kopieren" label="LV-Teil kopieren">
|
||||
<menupopup id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-popup">
|
||||
<menuitem label="Alles" oncommand="LeCopy('alle');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-alle" hidden="false"/>
|
||||
<menuitem label="Nur LV-Teil" oncommand="LeCopy('lvteil');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-lvteil" hidden="false"/>
|
||||
<menuitem label="Nur mit Gruppen" oncommand="LeCopy('gruppen');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-gruppen" hidden="false"/>
|
||||
<menuitem label="Nur mit Lehrenden" oncommand="LeCopy('lektoren');" id="lehrveranstaltung-tree-popup-lehreinheit-kopieren-lektoren" hidden="false"/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
<menuitem label="Entfernen" oncommand="LeDelete();" id="lehrveranstaltung-tree-popup-entf" disabled="false"/>
|
||||
</menupopup>
|
||||
</popupset>
|
||||
<toolbox>
|
||||
<toolbar id="lehrveranstaltung-nav-toolbar">
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-neu" label="Neuer LV-Teil" oncommand="LeNeu();" disabled="true" image="../skin/images/NeuDokument.png" tooltiptext="Neue Lehreinheit anlegen" />
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-del" label="Loeschen" oncommand="LeDelete();" disabled="true" image="../skin/images/DeleteIcon.png" tooltiptext="Lehreinheiten löschen"/>
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-neu" label="Neuer LV-Teil" oncommand="LeNeu();" disabled="true" image="../skin/images/NeuDokument.png" tooltiptext="Neuen LV-Teil anlegen" />
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-del" label="Loeschen" oncommand="LeDelete();" disabled="true" image="../skin/images/DeleteIcon.png" tooltiptext="LV-Teil löschen"/>
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-refresh" label="Aktualisieren" oncommand="LvTreeRefresh()" disabled="false" image="../skin/images/refresh.png" tooltiptext="Liste neu laden"/>
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-lehrauftrag" label="Lehrauftrag" oncommand="LvCreateLehrauftrag()" disabled="false" image="../skin/images/person.gif" tooltiptext="Lehrauftrag ausdrucken" hidden="true"/>
|
||||
|
||||
@@ -82,7 +90,8 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
<textbox id="lehrveranstaltung-toolbar-textbox-suche" control="lehrveranstaltung-toolbar-button-search" onkeypress="LehrveranstaltungSearchFieldKeyPress(event)" style="width: 300px" />
|
||||
<button id="lehrveranstaltung-toolbar-button-search" oncommand="LehrveranstaltungSuche()" label="Suchen"/>
|
||||
<spacer flex="1" />
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Aufklappen" tooltiptext="Klappt die Untermenüs auf - mehrmaliges klicken möglich um weiter aufzuklappen" oncommand="LvTreeOpenAllSubtrees()" disabled="false" image="../skin/images/tree-diagramm.png" />
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Aufklappen" tooltiptext="Klappt die Untermenüs auf - mehrmaliges klicken möglich um weiter aufzuklappen" oncommand="LvTreeOpenAllSubtrees('aus')" disabled="false" image="../skin/images/tree-diagramm.png" />
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-opensubtrees" label="Alles Einklappen" tooltiptext="Klappt alle Untermenüs ein" oncommand="LvTreeOpenAllSubtrees('ein')" disabled="false" image="../skin/images/modul.png" />
|
||||
</toolbar>
|
||||
</toolbox>
|
||||
|
||||
|
||||
@@ -247,6 +247,10 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/stpl-details-overlay.xul
|
||||
/>
|
||||
|
||||
</row>
|
||||
<row>
|
||||
<label value="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#zeitverfuegbarkeit"
|
||||
tooltiptext="rdf:http://www.technikum-wien.at/lehreinheit-lvplan/rdf#lektor hat in diesem Studiensemester verfügbare Zeiten" class="tempus_lektor_verfuegbarezeit"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -86,7 +86,7 @@ echo '
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Lehreinheit</title>
|
||||
<title>LV-Teil</title>
|
||||
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
|
||||
<style>
|
||||
table td
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -247,7 +247,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Lehreinheit" control="student-io-menulist-lehreinheit"/>
|
||||
<label value="LV-Teil" control="student-io-menulist-lehreinheit"/>
|
||||
<menulist id="student-io-menulist-lehreinheit" disabled="true"
|
||||
datasources="rdf:null" flex="1"
|
||||
ref="http://www.technikum-wien.at/lehreinheit/liste" >
|
||||
|
||||
@@ -1079,7 +1079,7 @@ function StudentAuswahl()
|
||||
StudentGesamtNotenTreeloaded=false;
|
||||
|
||||
stsem = getStudiensemester();
|
||||
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'prestudent_id': prestudent_id,
|
||||
'studiensemester_kurzbz': stsem
|
||||
@@ -1188,18 +1188,18 @@ function StudentAuswahl()
|
||||
zgvort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvort" ));
|
||||
zgvnation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvnation" ));
|
||||
zgvdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdatum" ));
|
||||
zgv_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgv_erfuellt" ));
|
||||
zgv_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgv_erfuellt" ));
|
||||
zgvmaster_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_code" ));
|
||||
zgvmasterort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmaort" ));
|
||||
zgvmasternation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmanation" ));
|
||||
zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" ));
|
||||
zgvmasterdatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmadatum" ));
|
||||
zgvmas_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvmas_erfuellt" ));
|
||||
zgvdoktor_code = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_code" ));
|
||||
zgvdoktorort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktorort" ));
|
||||
zgvdoktornation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktornation" ));
|
||||
zgvdoktordatum = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktordatum" ));
|
||||
zgvdoktor_erfuellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zgvdoktor_erfuellt" ));
|
||||
|
||||
|
||||
aufnahmeschluessel = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufnahmeschluessel" ));
|
||||
facheinschlberuf = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#facheinschlberuf" ));
|
||||
bismelden = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#bismelden" ));
|
||||
@@ -1221,7 +1221,7 @@ function StudentAuswahl()
|
||||
if(zgv_erfuellt=='t')
|
||||
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=true;
|
||||
else
|
||||
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=false;
|
||||
document.getElementById('student-prestudent-checkbox-zgverfuellt').checked=false;
|
||||
document.getElementById('student-prestudent-menulist-zgvmastercode').value=zgvmaster_code;
|
||||
document.getElementById('student-prestudent-textbox-zgvmasterort').value=zgvmasterort;
|
||||
MenulistSelectItemOnValue('student-prestudent-menulist-zgvmasternation', zgvmasternation);
|
||||
@@ -1229,7 +1229,7 @@ function StudentAuswahl()
|
||||
if(zgvmas_erfuellt=='t')
|
||||
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=true;
|
||||
else
|
||||
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=false;
|
||||
document.getElementById('student-prestudent-checkbox-zgvmaserfuellt').checked=false;
|
||||
document.getElementById('student-prestudent-menulist-zgvdoktorcode').value=zgvdoktor_code;
|
||||
document.getElementById('student-prestudent-textbox-zgvdoktorort').value=zgvdoktorort;
|
||||
MenulistSelectItemOnValue('student-prestudent-menulist-zgvdoktornation', zgvdoktornation);
|
||||
@@ -1598,7 +1598,7 @@ function StudentAuswahl()
|
||||
}
|
||||
|
||||
// ***** KONTAKTE *****
|
||||
document.getElementById('student-kontakt').setAttribute('src','kontakt.xul.php?person_id='+person_id);
|
||||
document.getElementById('student-kontakt').setAttribute('src','kontakt.xul.php?person_id='+person_id+'&'+gettimestamp());
|
||||
|
||||
// ***** Betriebsmittel *****
|
||||
document.getElementById('student-betriebsmittel').setAttribute('src','betriebsmitteloverlay.xul.php?person_id='+person_id+'&uid='+uid);
|
||||
@@ -1773,7 +1773,7 @@ function StudentPrestudentDisableFields(val)
|
||||
document.getElementById('student-prestudent-textbox-zgvort').disabled=val;
|
||||
document.getElementById('student-prestudent-menulist-zgvnation').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-zgvdatum').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-zgverfuellt').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-zgverfuellt').disabled=val;
|
||||
document.getElementById('student-prestudent-menulist-zgvmastercode').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-zgvmasterort').disabled=val;
|
||||
document.getElementById('student-prestudent-menulist-zgvmasternation').disabled=val;
|
||||
@@ -1784,7 +1784,7 @@ function StudentPrestudentDisableFields(val)
|
||||
document.getElementById('student-prestudent-menulist-zgvdoktornation').disabled=val;
|
||||
document.getElementById('student-prestudent-textbox-zgvdoktordatum').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').disabled=val;
|
||||
|
||||
|
||||
document.getElementById('student-prestudent-menulist-aufnahmeschluessel').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-facheinschlberuf').disabled=val;
|
||||
document.getElementById('student-prestudent-checkbox-bismelden').disabled=val;
|
||||
@@ -1852,7 +1852,7 @@ function StudentPrestudentSave()
|
||||
zgvort = document.getElementById('student-prestudent-textbox-zgvort').value;
|
||||
zgvnation = document.getElementById('student-prestudent-menulist-zgvnation').value;
|
||||
zgvdatum = document.getElementById('student-prestudent-textbox-zgvdatum').value;
|
||||
zgv_erfuellt = document.getElementById('student-prestudent-checkbox-zgverfuellt').checked;
|
||||
zgv_erfuellt = document.getElementById('student-prestudent-checkbox-zgverfuellt').checked;
|
||||
zgvmaster_code = document.getElementById('student-prestudent-menulist-zgvmastercode').value;
|
||||
zgvmasterort = document.getElementById('student-prestudent-textbox-zgvmasterort').value;
|
||||
zgvmasternation = document.getElementById('student-prestudent-menulist-zgvmasternation').value;
|
||||
@@ -1863,7 +1863,7 @@ function StudentPrestudentSave()
|
||||
zgvdoktornation = document.getElementById('student-prestudent-menulist-zgvdoktornation').value;
|
||||
zgvdoktordatum = document.getElementById('student-prestudent-textbox-zgvdoktordatum').value;
|
||||
zgvdoktor_erfuellt = document.getElementById('student-prestudent-checkbox-zgvdoktorerfuellt').checked;
|
||||
|
||||
|
||||
aufnahmeschluessel = document.getElementById('student-prestudent-menulist-aufnahmeschluessel').value;
|
||||
facheinschlberuf = document.getElementById('student-prestudent-checkbox-facheinschlberuf').checked;
|
||||
bismelden = document.getElementById('student-prestudent-checkbox-bismelden').checked;
|
||||
@@ -1912,7 +1912,7 @@ function StudentPrestudentSave()
|
||||
req.add('zgvort', zgvort);
|
||||
req.add('zgvnation', zgvnation);
|
||||
req.add('zgvdatum', ConvertDateToISO(zgvdatum));
|
||||
req.add('zgv_erfuellt', zgv_erfuellt);
|
||||
req.add('zgv_erfuellt', zgv_erfuellt);
|
||||
req.add('zgvmas_code', zgvmaster_code);
|
||||
req.add('zgvmaort', zgvmasterort);
|
||||
req.add('zgvmanation', zgvmasternation);
|
||||
@@ -1923,7 +1923,7 @@ function StudentPrestudentSave()
|
||||
req.add('zgvdoktornation', zgvdoktornation);
|
||||
req.add('zgvdoktordatum', ConvertDateToISO(zgvdoktordatum));
|
||||
req.add('zgvdoktor_erfuellt', zgvdoktor_erfuellt);
|
||||
|
||||
|
||||
req.add('aufnahmeschluessel', aufnahmeschluessel);
|
||||
req.add('facheinschlberuf', facheinschlberuf);
|
||||
req.add('bismelden', bismelden);
|
||||
@@ -2680,10 +2680,10 @@ function StudentKontoFilter()
|
||||
// ****
|
||||
// * Generiert eine student.rdf URI
|
||||
// ****
|
||||
function buildStudentRDFURI(queryparams, tree)
|
||||
function buildStudentRDFURI(queryparams, tree)
|
||||
{
|
||||
var baseurl = "<?php echo APP_ROOT; ?>rdf/student.rdf.php";
|
||||
if ( typeof tree !== "undefined" )
|
||||
if ( typeof tree !== "undefined" )
|
||||
{
|
||||
var col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform";
|
||||
queryparams.orgform = tree.view.getCellText(tree.currentIndex,col);
|
||||
@@ -2694,19 +2694,19 @@ function buildStudentRDFURI(queryparams, tree)
|
||||
// ****
|
||||
// * Generiert aus einer BasisURL und einem Dictionary von Parametern eine URI
|
||||
// ****
|
||||
function _buildURI(baseurl, queryparams)
|
||||
function _buildURI(baseurl, queryparams)
|
||||
{
|
||||
var str = [];
|
||||
var url = baseurl;
|
||||
for (var p in queryparams)
|
||||
for (var p in queryparams)
|
||||
{
|
||||
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
|
||||
if ( queryparams.hasOwnProperty(p) && queryparams[p].length > 0 )
|
||||
{
|
||||
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(queryparams[p]));
|
||||
}
|
||||
}
|
||||
var querystring = str.join("&");
|
||||
if ( querystring.length > 0 )
|
||||
if ( querystring.length > 0 )
|
||||
{
|
||||
url = url + '?' + querystring + '&' + gettimestamp();
|
||||
}
|
||||
@@ -2741,12 +2741,12 @@ function StudentKontoFilterStudenten(filter)
|
||||
var gruppe = getTreeCellText(tree, 'gruppe', tree.currentIndex);
|
||||
var typ = getTreeCellText(tree, 'typ', tree.currentIndex);
|
||||
var stsem = getTreeCellText(tree, 'stsem', tree.currentIndex);
|
||||
|
||||
|
||||
if(stsem=='')
|
||||
stsem = getStudiensemester();
|
||||
if(typ=='')
|
||||
typ='student';
|
||||
|
||||
|
||||
var url = buildStudentRDFURI({
|
||||
'studiengang_kz': stg_kz,
|
||||
'semester': sem,
|
||||
@@ -2758,9 +2758,9 @@ function StudentKontoFilterStudenten(filter)
|
||||
'filter2': filter,
|
||||
'buchungstyp': buchungstyp
|
||||
}, tree);
|
||||
|
||||
|
||||
console.log(url);
|
||||
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
@@ -2831,7 +2831,7 @@ function StudentKontoFilterBuchungstyp()
|
||||
'typ': typ,
|
||||
'filter2': 'buchungstyp;' + filter
|
||||
}, tree);
|
||||
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
@@ -3085,6 +3085,20 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
|
||||
return false;
|
||||
}
|
||||
|
||||
var tocheck = <?php echo (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK') && FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK) ? 'true' : 'false' ?>;
|
||||
|
||||
var exists = false;
|
||||
|
||||
if (tocheck)
|
||||
{
|
||||
exists = StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz);
|
||||
}
|
||||
if (exists)
|
||||
{
|
||||
if(!confirm('Die Buchung ist bereits vorhanden. Trotzdem fortfahren?'))
|
||||
return false;
|
||||
}
|
||||
|
||||
req.add('type', 'neuebuchung');
|
||||
|
||||
req.add('person_ids', person_ids);
|
||||
@@ -3116,6 +3130,28 @@ function StudentKontoNeuSpeichern(dialog, person_ids, studiengang_kz)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// ****
|
||||
// * Prüft ob die Buchung bereits vorhanden ist
|
||||
// ****
|
||||
function StudentCheckBuchung(person_ids, studiensemester_kurzbz, buchungstyp_kurzbz, studiengang_kz)
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
var url = '<?php echo APP_ROOT ?>content/student/studentDBDML.php';
|
||||
var req = new phpRequest(url,'','');
|
||||
req.add('type', 'checkbuchung');
|
||||
|
||||
req.add('person_ids', person_ids);
|
||||
req.add('studiensemester_kurzbz', studiensemester_kurzbz);
|
||||
req.add('buchungstyp_kurzbz', buchungstyp_kurzbz);
|
||||
req.add('studiengang_kz', studiengang_kz);
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
var val = new ParseReturnValue(response);
|
||||
|
||||
return(val.dbdml_return);
|
||||
}
|
||||
|
||||
// *****
|
||||
// * Druckt eine Zahlungsbestaetigung aus
|
||||
@@ -5617,7 +5653,7 @@ function StudentSuche()
|
||||
var url = buildStudentRDFURI({
|
||||
'filter': filter
|
||||
});
|
||||
|
||||
|
||||
var treeStudent=document.getElementById('student-tree');
|
||||
|
||||
try
|
||||
|
||||
@@ -585,7 +585,7 @@ function StudentProjektarbeitSpeichern()
|
||||
|
||||
if(lehreinheit_id=='')
|
||||
{
|
||||
alert('Bitte eine Lehreinheit Auswaehlen');
|
||||
alert('Bitte einen LV-Teil auswaehlen');
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Lehreinheit" control="student-projektarbeit-menulist-lehreinheit"/>
|
||||
<label value="LV-Teil" control="student-projektarbeit-menulist-lehreinheit"/>
|
||||
<menulist id="student-projektarbeit-menulist-lehreinheit" disabled="true"
|
||||
datasources="rdf:null" flex="1"
|
||||
style="max-width: 600px"
|
||||
@@ -492,7 +492,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
</template>
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<row id="student-projektbetreuer-textbox-punkte-row">
|
||||
<label value="Punkte" control="student-projektbetreuer-textbox-punkte"/>
|
||||
<textbox id="student-projektbetreuer-textbox-punkte" disabled="true" maxlength="6"/>
|
||||
</row>
|
||||
|
||||
@@ -172,7 +172,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</menulist>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Lehreinheit" control="student-pruefung-menulist-lehreinheit"/>
|
||||
<label value="LV-Teil" control="student-pruefung-menulist-lehreinheit"/>
|
||||
<menulist id="student-pruefung-menulist-lehreinheit" disabled="true"
|
||||
datasources="rdf:null" flex="1" style="max-width: 600px"
|
||||
ref="http://www.technikum-wien.at/lehreinheit/liste" >
|
||||
|
||||
@@ -375,6 +375,69 @@ function getStudiensemesterVariable()
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Setzt das aktuelle Studiensemester
|
||||
// ****
|
||||
function setStudiensemesterAktuell()
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
// Request absetzen
|
||||
|
||||
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
|
||||
|
||||
var req = new phpRequest(url,'','');
|
||||
|
||||
req.add('type', 'variablechange');
|
||||
req.add('stsem_aktuell', 'stsem_aktuell');
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
var val = new ParseReturnValue(response)
|
||||
|
||||
if (!val.dbdml_return)
|
||||
{
|
||||
if(val.dbdml_errormsg=='')
|
||||
alert(response)
|
||||
else
|
||||
alert(val.dbdml_errormsg)
|
||||
}
|
||||
else
|
||||
{
|
||||
//Statusbar setzen
|
||||
document.getElementById("statusbarpanel-text").label = "Studiensemester erfolgreich geaendert";
|
||||
document.getElementById("statusbarpanel-semester").label = val.dbdml_data;
|
||||
//Menue setzen
|
||||
var items = document.getElementsByTagName('menuitem');
|
||||
|
||||
for(i in items)
|
||||
{
|
||||
if(items[i].label==val.dbdml_data && items[i].id=='menu-properies-studiensemester-name')
|
||||
{
|
||||
items[i].setAttribute('checked',true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//MitarbeiterDetailStudiensemester_id = dbdml_errormsg;
|
||||
//Ansichten Refreshen
|
||||
try
|
||||
{
|
||||
StudentTreeRefresh();
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
|
||||
try
|
||||
{
|
||||
LvTreeRefresh();
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Laedt das Undo Menue Neu
|
||||
// ****
|
||||
|
||||
@@ -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";
|
||||
return false;
|
||||
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
|
||||
{
|
||||
$this->errormsg = "Kollision (Zeitsperre): $row->zeitsperre_id|$row->mitarbeiter_uid|$row->zeitsperretyp_kurzbz|$row->bezeichnung|$row->vondatum/$row->vonstunde-$row->bisdatum/$row->bisstunde - $row->vertretung_uid";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -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,8 +878,12 @@ class lehrstunde extends basis_db
|
||||
if ($anz_zs!=0)
|
||||
{
|
||||
$row = $this->db_fetch_object($erg_zs);
|
||||
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
|
||||
return true;
|
||||
|
||||
if ($row->zeitsperretyp_kurzbz != 'ZVerfueg')
|
||||
{
|
||||
$this->errormsg="Kollision (Zeitsperre): $row->zeitsperre_id|$row->lektor|$row->zeitsperretyp_kurzbz - $row->vondatum/$row->vonstunde|$row->bisdatum/$row->bisstunde";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1060,7 +1066,19 @@ class lehrstunde extends basis_db
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null)
|
||||
/**
|
||||
* Holt Studenplandaten.
|
||||
*
|
||||
* @param $db_stpl_table
|
||||
* @param null $lehrveranstaltung_id
|
||||
* @param null $studiensemester_kurzbz
|
||||
* @param null $lehreinheit_id
|
||||
* @param null $mitarbeiter_uid
|
||||
* @param null $student_uid
|
||||
* @param false $nurBevorstehende Wenn true, dann werden nur bevorstehende LVs abgefragt.
|
||||
* @return bool
|
||||
*/
|
||||
public function getStundenplanData($db_stpl_table, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null, $lehreinheit_id=null, $mitarbeiter_uid=null, $student_uid=null, $nurBevorstehende = false)
|
||||
{
|
||||
|
||||
$qry = "SELECT
|
||||
@@ -1112,6 +1130,11 @@ class lehrstunde extends basis_db
|
||||
else
|
||||
return false;
|
||||
|
||||
if($nurBevorstehende)
|
||||
{
|
||||
$qry.= " AND datum >= NOW()::date ";
|
||||
}
|
||||
|
||||
$qry.="GROUP BY stpl.datum, stpl.unr, stpl.lehreinheit_id, lehrfach.bezeichnung
|
||||
ORDER BY stpl.datum, min(stpl.stunde), stpl.unr, stpl.lehreinheit_id";
|
||||
|
||||
@@ -1136,7 +1159,10 @@ class lehrstunde extends basis_db
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Einholen der Stundenplandaten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -469,5 +469,39 @@ class projektarbeit extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
|
||||
* @param $projektarbeit_id
|
||||
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
|
||||
*/
|
||||
public function projektarbeitIsCurrent($projektarbeit_id)
|
||||
{
|
||||
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
|
||||
$qry="SELECT 1
|
||||
FROM lehre.tbl_projektarbeit
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
|
||||
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND tbl_studiensemester.start::date >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = 'SS2022')::date
|
||||
LIMIT 1";
|
||||
|
||||
$result_sem=$this->db_query($qry);
|
||||
|
||||
if (!$result_sem)
|
||||
{
|
||||
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
|
||||
return -1;
|
||||
}
|
||||
|
||||
$num_rows = $this->db_num_rows($result_sem);
|
||||
|
||||
if ($num_rows < 0)
|
||||
{
|
||||
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
|
||||
}
|
||||
|
||||
return $num_rows;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+454
-374
@@ -1,374 +1,454 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class zeitwunsch extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $zeitwunsch;
|
||||
|
||||
//Tabellenspalten
|
||||
public $stunde; // smalint
|
||||
public $mitarbeiter_uid; // varchar(32)
|
||||
public $tag; // smalint
|
||||
public $gewicht; // smalint
|
||||
public $min_stunde;
|
||||
public $max_stunde;
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialisierung
|
||||
*
|
||||
*/
|
||||
private function init()
|
||||
{
|
||||
// Stundenraster abfragen
|
||||
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_object();
|
||||
$this->min_stunde=$row->min_stunde;
|
||||
$this->max_stunde=$row->max_stunde;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
if(mb_strlen($this->mitarbeiter_uid)>32)
|
||||
{
|
||||
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
|
||||
return false;
|
||||
}
|
||||
if($this->mitarbeiter_uid == '')
|
||||
{
|
||||
$this->errormsg = 'UID muss angegeben werden';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->stunde))
|
||||
{
|
||||
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->gewicht))
|
||||
{
|
||||
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->tag))
|
||||
{
|
||||
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert einen Zeitwunsch in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
|
||||
* angelegt, ansonsten der Datensatz upgedated
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
if($this->new)
|
||||
{
|
||||
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
|
||||
insertamum, insertvon, updateamum, updatevon) VALUES('.
|
||||
$this->db_add_param($this->mitarbeiter_uid).','.
|
||||
$this->db_add_param($this->tag, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->stunde, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->insertamum).','.
|
||||
$this->db_add_param($this->insertvon).','.
|
||||
$this->db_add_param($this->updateamum).','.
|
||||
$this->db_add_param($this->updatevon).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
|
||||
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
|
||||
' updateamum='.$this->db_add_param($this->updateamum).', '.
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
|
||||
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
|
||||
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch einer Person laden
|
||||
* @param uid
|
||||
* @param datum
|
||||
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
|
||||
*/
|
||||
public function loadPerson($uid,$datum=null)
|
||||
{
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query("SELECT * FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid=".$this->db_add_param($uid)))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Zeitwunsch der Personen in Lehreinheiten laden
|
||||
* @param $le_id LehreinheitID Array
|
||||
* @param $datum
|
||||
* @return true oder false
|
||||
*/
|
||||
public function loadZwLE($le_id,$datum=null)
|
||||
{
|
||||
//$this->init();
|
||||
// SUB-Select fuer LVAs
|
||||
$sql_query_leid='';
|
||||
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
|
||||
for ($i=0;$i<count($le_id);$i++)
|
||||
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
|
||||
$sql_query_leid=mb_substr($sql_query_leid,3);
|
||||
$sql_query_le.=$sql_query_leid;
|
||||
|
||||
// Schlechteste Zeitwuensche holen
|
||||
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
|
||||
FROM campus.tbl_zeitwunsch WHERE mitarbeiter_uid IN ('.$sql_query_le.') GROUP BY tag,stunde';
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
while($row = $this->db_fetch_object())
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
|
||||
// ***********************************************************
|
||||
// Zeitsperren fuer die aktuelle Woche holen
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid IN ($sql_query_le)
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]=-3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob bereits ein Zeitwunsch eingetragen ist
|
||||
*
|
||||
* @param $uid
|
||||
* @param $stunde
|
||||
* @param $tag
|
||||
* @return true wenn vorhanden sonst false
|
||||
*/
|
||||
function exists($uid, $stunde, $tag)
|
||||
{
|
||||
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
|
||||
AND tag=".$this->db_add_param($tag, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()>0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class zeitwunsch extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $zeitwunsch;
|
||||
|
||||
//Tabellenspalten
|
||||
public $stunde; // smalint
|
||||
public $mitarbeiter_uid; // varchar(32)
|
||||
public $tag; // smalint
|
||||
public $gewicht; // smalint
|
||||
public $min_stunde;
|
||||
public $max_stunde;
|
||||
public $insertamum;
|
||||
public $insertvon;
|
||||
public $updateamum;
|
||||
public $updatevon;
|
||||
public $zeitwunsch_id;
|
||||
public $zeitwunsch_gueltigkeit_id;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialisierung
|
||||
*
|
||||
*/
|
||||
private function init()
|
||||
{
|
||||
// Stundenraster abfragen
|
||||
$sql='SELECT min(stunde) AS min_stunde,max(stunde) AS max_stunde FROM lehre.tbl_stunde;';
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$row=$this->db_fetch_object();
|
||||
$this->min_stunde=$row->min_stunde;
|
||||
$this->max_stunde=$row->max_stunde;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
if(mb_strlen($this->mitarbeiter_uid)>32)
|
||||
{
|
||||
$this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein.';
|
||||
return false;
|
||||
}
|
||||
if($this->mitarbeiter_uid == '')
|
||||
{
|
||||
$this->errormsg = 'UID muss angegeben werden';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->stunde))
|
||||
{
|
||||
$this->errormsg = 'Stunde muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->gewicht))
|
||||
{
|
||||
$this->errormsg = 'Gewicht muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
if(!is_numeric($this->tag))
|
||||
{
|
||||
$this->errormsg = 'Tag muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert einen Zeitwunsch in die Datenbank
|
||||
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
|
||||
* angelegt, ansonsten der Datensatz upgedated
|
||||
* @return true wenn erfolgreich, false im Fehlerfall
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
//Variablen auf Gueltigkeit pruefen
|
||||
if(!$this->validate())
|
||||
return false;
|
||||
|
||||
if($this->new)
|
||||
{
|
||||
$qry = 'INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht,
|
||||
insertamum, insertvon, updateamum, updatevon, zeitwunsch_gueltigkeit_id) VALUES('.
|
||||
$this->db_add_param($this->mitarbeiter_uid).','.
|
||||
$this->db_add_param($this->tag, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->stunde, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->gewicht, FHC_INTEGER).','.
|
||||
$this->db_add_param($this->insertamum).','.
|
||||
$this->db_add_param($this->insertvon).','.
|
||||
$this->db_add_param($this->updateamum).','.
|
||||
$this->db_add_param($this->updatevon).','.
|
||||
$this->db_add_param($this->zeitwunsch_gueltigkeit_id).');';
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = 'UPDATE campus.tbl_zeitwunsch SET'.
|
||||
' gewicht='.$this->db_add_param($this->gewicht, FHC_INTEGER).', '.
|
||||
' updateamum='.$this->db_add_param($this->updateamum).', '.
|
||||
' updatevon='.$this->db_add_param($this->updatevon).
|
||||
" WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid, FHC_STRING, false)."
|
||||
AND tag=".$this->db_add_param($this->tag, FHC_INTEGER)."
|
||||
AND stunde=".$this->db_add_param($this->stunde, FHC_INTEGER). "
|
||||
AND zeitwunsch_gueltigkeit_id=".$this->db_add_param($this->zeitwunsch_gueltigkeit_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Speichern des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch einer Person zu bestimmter Zeitwunschgueltigkeit laden
|
||||
* @param $uid
|
||||
* @param $zeitwunsch_gueltigkeit_id
|
||||
* @return boolean
|
||||
*/
|
||||
public function loadByZWG($uid, $zeitwunsch_gueltigkeit_id)
|
||||
{
|
||||
$qry = '
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid = ' . $this->db_add_param($uid) . '
|
||||
AND zeitwunsch_gueltigkeit_id = ' . $this->db_add_param($zeitwunsch_gueltigkeit_id) . '
|
||||
ORDER BY tag, stunde
|
||||
';
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde] = $row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->zeitwunsch_id = $row->zeitwunsch_id;
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Alle Zeitwuensche einer Person laden.
|
||||
* Um auf einen Zeitwunsch einer bestimmten Zeit, also innerhalb einer bestimmten Zeitwunschgueltigkeit
|
||||
* zu beschraenken, kann ein Datum mitgegeben werden.
|
||||
* @param uid
|
||||
* @param datum UNIX timestamp, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
|
||||
* @return boolean Ergebnis steht in Array $zeitwunsch wenn true
|
||||
*/
|
||||
public function loadPerson($uid,$datum=null)
|
||||
{
|
||||
// Default datum: jetzt
|
||||
if (is_null($datum))
|
||||
{
|
||||
$datum = time();
|
||||
}
|
||||
|
||||
$qry = "
|
||||
SELECT *
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid=". $this->db_add_param($uid). "
|
||||
AND ". $this->db_add_param(date('Y-m-d', $datum)). " BETWEEN von AND COALESCE(bis,'2999-01-01');
|
||||
";
|
||||
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->zeitwunsch_id = $row->zeitwunsch_id;
|
||||
$this->zeitwunsch_gueltigkeit_id = $row->zeitwunsch_gueltigkeit_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start). "
|
||||
-- Negative Zeitsperren sollen im Plan eine positive Zeitsperre 'ZVerfueg' overrulen
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN zeitsperretyp_kurzbz = 'ZVerfueg' THEN 1
|
||||
ELSE 2
|
||||
END;";
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg=$this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Zeitsperren negativ (-3) gewichten.
|
||||
// Ausnahme: positive Zeitsperren: diese positiv (4) gewichten.
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j] = $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeitwunsch der Personen in Lehreinheiten laden
|
||||
* @param $le_id LehreinheitID Array
|
||||
* @param $datum UNIX timestamp Datum, um Zeitwunsch mit richtiger Zeitwunschgueltigkeit zu ermitteln
|
||||
* @return true oder false
|
||||
*/
|
||||
public function loadZwLE($le_id, $datum = null)
|
||||
{
|
||||
// Default datum: jetzt
|
||||
if (is_null($datum))
|
||||
{
|
||||
$datum = time();
|
||||
}
|
||||
// SUB-Select fuer LVAs
|
||||
$sql_query_leid='';
|
||||
$sql_query_le='SELECT DISTINCT mitarbeiter_uid FROM campus.vw_lehreinheit WHERE ';
|
||||
for ($i=0;$i<count($le_id);$i++)
|
||||
$sql_query_leid.=" OR lehreinheit_id=".$this->db_add_param($le_id[$i], FHC_INTEGER);
|
||||
$sql_query_leid=mb_substr($sql_query_leid,3);
|
||||
$sql_query_le.=$sql_query_leid;
|
||||
|
||||
// Schlechteste Zeitwuensche holen
|
||||
$sql_query='SELECT tag,stunde,min(gewicht) AS gewicht
|
||||
FROM campus.tbl_zeitwunsch
|
||||
JOIN campus.tbl_zeitwunsch_gueltigkeit zwg USING (zeitwunsch_gueltigkeit_id)
|
||||
WHERE zwg.mitarbeiter_uid IN ('.$sql_query_le.')
|
||||
AND '. $this->db_add_param(date('Y-m-d', $datum)). ' BETWEEN von AND COALESCE(bis,\'2999-01-01\')
|
||||
GROUP BY tag,stunde;';
|
||||
|
||||
// Zeitwuensche abfragen
|
||||
if(!$this->db_query($sql_query))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
else
|
||||
while($row = $this->db_fetch_object())
|
||||
$this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht;
|
||||
|
||||
// ***********************************************************
|
||||
// Zeitsperren fuer die aktuelle Woche holen
|
||||
|
||||
if (!is_null($datum))
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
$start=date('Y-m-d',$beginn);
|
||||
$ende=date('Y-m-d',jump_day($beginn,7));
|
||||
|
||||
// Zeitsperren abfragen
|
||||
$sql="
|
||||
SELECT
|
||||
zeitsperretyp_kurzbz, vondatum,vonstunde,bisdatum,bisstunde
|
||||
FROM
|
||||
campus.tbl_zeitsperre
|
||||
WHERE
|
||||
mitarbeiter_uid IN ($sql_query_le)
|
||||
AND vondatum<=".$this->db_add_param($ende)."
|
||||
AND bisdatum>=".$this->db_add_param($start);
|
||||
|
||||
if(!$this->db_query($sql))
|
||||
{
|
||||
$this->errormsg = $this->db_last_error();
|
||||
return false;
|
||||
}
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$beginn=montag($datum);
|
||||
for ($i=1;$i<=7;$i++)
|
||||
{
|
||||
$date_iso=date('Y-m-d',$beginn);
|
||||
//echo "\n".$date_iso."\n".$row->vondatum."\n";
|
||||
if ($date_iso>$row->vondatum && $date_iso<$row->bisdatum)
|
||||
for ($j=$this->min_stunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
if ($date_iso==$row->vondatum && $date_iso<$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$this->max_stunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso>$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$this->min_stunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
if ($date_iso==$row->vondatum && $date_iso==$row->bisdatum)
|
||||
{
|
||||
if (is_null($row->vonstunde))
|
||||
$row->vonstunde=$this->min_stunde;
|
||||
if (is_null($row->bisstunde))
|
||||
$row->bisstunde=$this->max_stunde;
|
||||
for ($j=$row->vonstunde;$j<=$row->bisstunde;$j++)
|
||||
$this->zeitwunsch[$i][$j]= $row->zeitsperretyp_kurzbz == 'ZVerfueg' ? 4 : -3;
|
||||
}
|
||||
$beginn=jump_day($beginn,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob bereits ein Zeitwunsch eingetragen ist
|
||||
*
|
||||
* @param $uid
|
||||
* @param $zwg_id
|
||||
* @param $stunde
|
||||
* @param $tag
|
||||
* @return true wenn vorhanden sonst false
|
||||
*/
|
||||
function exists($uid, $zwg_id, $stunde, $tag)
|
||||
{
|
||||
$qry = "SELECT 1 FROM campus.tbl_zeitwunsch
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
AND stunde=".$this->db_add_param($stunde, FHC_INTEGER)."
|
||||
AND tag=".$this->db_add_param($tag, FHC_INTEGER). "
|
||||
AND zeitwunsch_gueltigkeit_id = ".$this->db_add_param($zwg_id, FHC_INTEGER);
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($this->db_num_rows()>0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg='Fehler beim Abfragen des Zeitwunsches';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
$this->phrasen['abgabetool/abgabetool']='Abgabetool';
|
||||
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Projektarbeit für älteres Semester, bitte Word-Formular zur Benotung verwenden!';
|
||||
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Endupload ist noch nicht erfolgt';
|
||||
$this->phrasen['abgabetool/typ']='Typ';
|
||||
$this->phrasen['abgabetool/titel']='Titel';
|
||||
$this->phrasen['abgabetool/betreuerart']='Betreuerart';
|
||||
@@ -89,4 +90,5 @@ $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für
|
||||
$this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen';
|
||||
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter';
|
||||
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Zweitbegutachter';
|
||||
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Fehler beim Ermitteln des Enduplaods der Projektarbeit';
|
||||
?>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -61,7 +61,7 @@ $this->phrasen['testtool/einfuehrungsText']='
|
||||
<h1 style="white-space: normal">Herzlich Willkommen zum Reihungstest</h1>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=142964" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=142976" alt="Einfuehrungsvideo" style="border: 1px solid lightgray; border-radius: 10px; width:350px;"></a>
|
||||
<br><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=143926" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Bachelor</b>-Leitfaden zum Ablauf des Reihungstests</a><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=207694" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Bachelor</b>-Leitfaden zum Ablauf des Reihungstests</a><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=143928" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Master</b>-Leitfaden zum Ablauf des Reihungstests</a>
|
||||
<br><br>
|
||||
Unter dem folgenden Link können Sie die korrekte Darstellung des Reihungstests testen:<br><br>
|
||||
@@ -71,7 +71,7 @@ $this->phrasen['testtool/einfuehrungsText']='
|
||||
<h1 style="white-space: normal">Welcome to the placement test</h1>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=145596" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=142977" alt="Einfuehrungsvideo" style="border: 1px solid lightgray; border-radius: 10px; width:350px;"></a>
|
||||
<br><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=143927" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Bachelor</b>-Guideline for placement test</a><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=207696" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Bachelor</b>-Guideline for placement test</a><br>
|
||||
<a href="'.APP_ROOT.'cms/dms.php?id=143930" target="_blank"><img src="'.APP_ROOT.'cms/dms.php?id=46&version=1"> <b>Master</b>-Guideline for placement test</a>
|
||||
<br><br>
|
||||
Under the following link you can test the correct display of the placement test:<br><br>
|
||||
|
||||
@@ -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';
|
||||
?>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
$this->phrasen['abgabetool/abgabetool']='Submission tool';
|
||||
$this->phrasen['abgabetool/aeltereParbeitBenoten']='Thesis handed in for older semester, please use word form for assessment!';
|
||||
$this->phrasen['abgabetool/keinEnduploadErfolgt']='Final version not uploaded yet';
|
||||
$this->phrasen['abgabetool/typ']='Type';
|
||||
$this->phrasen['abgabetool/titel']='Title';
|
||||
$this->phrasen['abgabetool/betreuerart']='Supervisor type';
|
||||
@@ -89,4 +90,5 @@ $this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no
|
||||
$this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download';
|
||||
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='First-/Assessor';
|
||||
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Second Assessor';
|
||||
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Error when getting endupload of project work';
|
||||
?>
|
||||
|
||||
@@ -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='';
|
||||
@@ -63,7 +65,7 @@ if (isset($_GET['sem']))
|
||||
else
|
||||
$sem=0;
|
||||
if (isset($_GET['lektor']))
|
||||
$lektor=$_GET['lektor'];
|
||||
$lektor=$_GET['lektor'];
|
||||
else
|
||||
$lektor=$uid;
|
||||
if (isset($_GET['ver']))
|
||||
@@ -136,6 +138,14 @@ if (!$error_msg)
|
||||
die ('Fehler bei Methode getLehreinheitLVPL(): '.$lehreinheit->errormsg);
|
||||
$lva=$lehreinheit->lehreinheiten;
|
||||
$rdf_url='http://www.technikum-wien.at/lehreinheit-lvplan/';
|
||||
|
||||
// Positive Zeitsperre 'Zeitverfuegbarkeit' holen
|
||||
$ss = new Studiensemester($studiensemester);
|
||||
|
||||
$zeitsperre = new Zeitsperre();
|
||||
$zeitsperre->getVonBis($lektor, $ss->start, $ss->ende, 'ZVerfueg');
|
||||
|
||||
$zeitverfuegbarkeit = count($zeitsperre->result) > 0 ? 'Zeit verfügbar' : '';
|
||||
?>
|
||||
|
||||
<RDF:RDF
|
||||
@@ -395,6 +405,7 @@ if ($anz>0)
|
||||
<LVA:anzahl_notizen>'.$anzahl_notizen.'</LVA:anzahl_notizen>
|
||||
<LVA:lehreinheit_id>'.$l->lehreinheit_id[0].'</LVA:lehreinheit_id>
|
||||
<LVA:vertragsstatus>'.$vertragsstatus.'</LVA:vertragsstatus>
|
||||
<LVA:zeitverfuegbarkeit>'. $zeitverfuegbarkeit. '</LVA:zeitverfuegbarkeit>
|
||||
</RDF:Description>
|
||||
</RDF:li>';
|
||||
}
|
||||
|
||||
+1
-3
@@ -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;
|
||||
|
||||
|
||||
@@ -20,6 +20,12 @@ label.tempus_vertrag_info
|
||||
font-size: x-small
|
||||
}
|
||||
|
||||
label.tempus_lektor_verfuegbarezeit
|
||||
{
|
||||
font-weight: bold;
|
||||
color: green;
|
||||
}
|
||||
|
||||
label.kalenderwoche
|
||||
{
|
||||
font-size: medium;
|
||||
|
||||
+164
-1
@@ -3418,6 +3418,20 @@ if ($result = @$db->db_query("SELECT 1 FROM public.tbl_variablenname WHERE name
|
||||
}
|
||||
}
|
||||
|
||||
// Add new name type in public.tbl_variablenname
|
||||
if ($result = @$db->db_query("SELECT 1 FROM public.tbl_variablenname WHERE name = 'projektuebersicht_studiensemester';"))
|
||||
{
|
||||
if ($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO public.tbl_variablenname(name, defaultwert) VALUES('projektuebersicht_studiensemester', null);";
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>public.tbl_variablenname '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'public.tbl_variablenname: Added name "projektuebersicht_studiensemester"<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add column projektphase_id to tbl_zeitaufzeichnung
|
||||
if(!$result = @$db->db_query("SELECT projektphase_id FROM campus.tbl_zeitaufzeichnung LIMIT 1"))
|
||||
{
|
||||
@@ -5965,6 +5979,126 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI
|
||||
echo '<br>Added column behebung_parameter to table system.tbl_issue';
|
||||
}
|
||||
|
||||
// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data
|
||||
if($result = $db->db_query("SELECT * FROM information_schema.tables WHERE table_schema LIKE 'campus' AND table_name = 'tbl_zeitwunsch_gueltigkeit'"))
|
||||
{
|
||||
if ($db->db_fetch_object($result) == false)
|
||||
{
|
||||
$qry = "
|
||||
CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
|
||||
(
|
||||
zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
|
||||
mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
|
||||
von DATE,
|
||||
bis DATE,
|
||||
insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
|
||||
insertvon CHARACTER VARYING(32),
|
||||
updateamum TIMESTAMP WITHOUT TIME ZONE,
|
||||
updatevon CHARACTER VARYING(32)
|
||||
);
|
||||
|
||||
CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
-- Add Primary Key
|
||||
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
|
||||
ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
|
||||
|
||||
-- Add Permissions
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
|
||||
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
|
||||
GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
|
||||
|
||||
-- Initial data migration
|
||||
INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
|
||||
(
|
||||
mitarbeiter_uid,
|
||||
von,
|
||||
bis,
|
||||
insertamum,
|
||||
insertvon,
|
||||
updateamum,
|
||||
updatevon
|
||||
)
|
||||
SELECT * FROM
|
||||
(
|
||||
-- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
|
||||
SELECT DISTINCT mitarbeiter_uid,
|
||||
(SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
|
||||
NULL::DATE AS \"ende\",
|
||||
NOW(),
|
||||
'system',
|
||||
NOW(),
|
||||
'system'
|
||||
FROM campus.tbl_zeitwunsch
|
||||
ORDER BY mitarbeiter_uid
|
||||
) AS init_data
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch
|
||||
if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_zeitwunsch' AND column_name IN ('zeitwunsch_id', 'zeitwunsch_gueltigkeit_id')"))
|
||||
{
|
||||
if ($db->db_num_rows($result) <> 2)
|
||||
{
|
||||
$qry = "
|
||||
ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
|
||||
|
||||
-- Add primary key and foreign key
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_id INTEGER;
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_gueltigkeit_id INTEGER;
|
||||
|
||||
-- Add comments
|
||||
COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
|
||||
COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
|
||||
|
||||
CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
|
||||
UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
|
||||
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
|
||||
ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
|
||||
UPDATE campus.tbl_zeitwunsch
|
||||
SET zeitwunsch_gueltigkeit_id = (
|
||||
SELECT zeitwunsch_gueltigkeit_id
|
||||
FROM campus.tbl_zeitwunsch_gueltigkeit zwg
|
||||
WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
|
||||
);
|
||||
|
||||
-- Set primary key and foreign key NOT NULL
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
|
||||
ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
|
||||
|
||||
-- Set permissions
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
|
||||
GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
|
||||
";
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitwunsch: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo '<br>campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
|
||||
}
|
||||
}
|
||||
|
||||
// Add index beschreibung to system.tbl_webservicelog
|
||||
if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservicelog_beschreibung'"))
|
||||
{
|
||||
@@ -5979,6 +6113,34 @@ if ($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_webservic
|
||||
}
|
||||
}
|
||||
|
||||
// Insert postive Zeitsperre 'Zeitverfuegbarkeit' to tbl_zeitsperretyp
|
||||
if($result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitsperretyp WHERE zeitsperretyp_kurzbz = 'ZVerfueg';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO campus.tbl_zeitsperretyp(zeitsperretyp_kurzbz, beschreibung) VALUES('ZVerfueg', 'Zeitverfügbarkeit');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>campus.tbl_zeitsperretyp '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'campus.tbl_zeitsperretyp: Added value \'ZVerfueg\'<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// Add permission to administrate zeitverfuegbarkeiten
|
||||
if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'lehre/zeitverfuegbarkeit';"))
|
||||
{
|
||||
if($db->db_num_rows($result) == 0)
|
||||
{
|
||||
$qry = "INSERT INTO system.tbl_berechtigung(berechtigung_kurzbz, beschreibung) VALUES('lehre/zeitverfuegbarkeit', 'Zeitverfuegbarkeit verwalten');";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>system.tbl_berechtigung '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo ' system.tbl_berechtigung: Added permission for lehre/zeitverfuegbarkeit<br>';
|
||||
}
|
||||
}
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -6071,7 +6233,8 @@ $tabellen=array(
|
||||
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
|
||||
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
|
||||
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
|
||||
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),
|
||||
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon", "zeitwunsch_id", "zeitwunsch_gueltigkeit_id"),
|
||||
"campus.tbl_zeitwunsch_gueltigkeit" => array("zeitwunsch_gueltigkeit_id","mitarbeiter_uid","von","bis","insertamum","insertvon", "updateamum","updatevon"),
|
||||
"fue.tbl_aktivitaet" => array("aktivitaet_kurzbz","beschreibung","sort"),
|
||||
"fue.tbl_aufwandstyp" => array("aufwandstyp_kurzbz","bezeichnung"),
|
||||
"fue.tbl_projekt" => array("projekt_kurzbz","nummer","titel","beschreibung","beginn","ende","oe_kurzbz","budget","farbe","aufwandstyp_kurzbz","ressource_id","anzahl_ma","aufwand_pt","projekt_id","projekttyp_kurzbz","zeitaufzeichnung"),
|
||||
|
||||
@@ -1011,6 +1011,33 @@ $filters = array(
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'dataset_name' => 'projektuebersicht',
|
||||
'filter_kurzbz' => 'alleProjekte',
|
||||
'description' => '{Projektübersicht}',
|
||||
'sort' => 1,
|
||||
'default_filter' => true,
|
||||
'filter' => '
|
||||
{
|
||||
"name": "Projektübersicht",
|
||||
"columns": [
|
||||
{"name": "ProjectWorkID"},
|
||||
{"name": "ErstNachname"},
|
||||
{"name": "ErstAbgeschickt"},
|
||||
{"name": "ZweitNachname"},
|
||||
{"name": "ZweitAbgeschickt"},
|
||||
{"name": "StudentNachname"},
|
||||
{"name": "Note"},
|
||||
{"name": "Abgabedatum"},
|
||||
{"name": "Studiengang"},
|
||||
{"name": "Kommissionsmitglieder"}
|
||||
],
|
||||
"filters": []
|
||||
}
|
||||
',
|
||||
'oe_kurzbz' => null,
|
||||
),
|
||||
array(
|
||||
'app' => 'dvuh',
|
||||
'dataset_name' => 'storno',
|
||||
|
||||
+658
-41
@@ -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',
|
||||
@@ -8695,18 +8715,58 @@ Any unusual occurrences
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheckUnauffaellig',
|
||||
'phrase' => 'titelDerArbeit',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Plagiatscheck ist unauffällig.',
|
||||
'text' => 'Titel',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The plagiarism check reveals nothing of note.',
|
||||
'text' => 'Title of ',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheckBeschreibung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The plagiarism check has been carried out and confirms that the central content of the paper has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheckBeschreibungMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Plagiatscheck wurde durchgeführt und bestätigt, dass der zentrale Inhalt der Arbeit im erforderlichen Ausmaß eigenständig verfasst wurde (vgl. Satzungsteil Studienrechtliche Bestimmungen / Prüfungsordnung, § 18 Abs. 2 und 3).',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The plagiarism check has been carried out and confirms that the central content of the thesis has been written independently to the required extent (cf. part of the Statutes on Studies Act Provisions / Examination Regulations, § 18 Para. 2 and 3).',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -8806,7 +8866,7 @@ Any unusual occurrences
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The subject was handled in a suitable manner for a master thesis (well-structured, meaningful research questions or tasks, etc.)',
|
||||
'text' => 'The subject was handled in a suitable manner for a Master\'s thesis (well-structured, meaningful research questions or tasks, etc.)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -8840,13 +8900,13 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Lösungsansatz ist dem Stand der Technik entsprechend argumentiert und zeigt ein adäquates Problemverständnis.',
|
||||
'text' => 'Der Lösungsansatz ist für das Thema geeignet und entspricht dem Stand der Technik.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The approach to the solution is argued according to the state of the art and shows an adequate understanding of the problem.',
|
||||
'text' => 'The approach to the solution is suitable for the topic and corresponds to the state of the art.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -8880,13 +8940,33 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die methodische Vorgangsweise ist in Bezug auf die Ausrichtung der Arbeit (technisch-ingenieurwissenschaftlich, sozial-wirtschaftswissenschaftlich…) angemessen, gut begründet und wird korrekt umgesetzt.',
|
||||
'text' => 'Das Vorgehen ist in Bezug auf die fachspezifische Ausrichtung der Arbeit angemessen, anhand der Fachliteratur begründet und korrekt umgesetzt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The methodological approach is appropriate, well-founded and correctly implemented in relation to the orientation of the work (technical-engineering, socio-economic…).',
|
||||
'text' => 'The procedure is appropriate in relation to the subject-specific orientation of the paper, justified on the basis of the specialist literature and correctly implemented.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'methodeTextMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Das Vorgehen ist in Bezug auf die fachspezifische Ausrichtung der Arbeit angemessen, anhand der Fachliteratur begründet und korrekt umgesetzt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The procedure is appropriate in relation to the subject-specific orientation of the thesis, justified on the basis of the specialist literature and correctly implemented.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -8920,33 +9000,13 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Frage- bzw. Aufgabenstellungen wurden zielführend beantwortet; die Ergebnisse werden diskutiert.',
|
||||
'text' => 'Die Ergebnisse werden im Lichte der Fragestellung interpretiert und kritisch diskutiert im Hinblick auf ihren Mehrwert für Forschung und/oder Berufspraxis. Visualisierungen unterstützen die Argumentation.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The research questions or the tasks were answered in a manner appropriate with the objectives; the results are discussed.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'ereignisseDiskussionTextMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Forschungsfrage(n) wurde(n) zielführend beantwortet; die Ergebnisse werden kritisch diskutiert und liefern einen Mehrwert für Forschung und/oder Berufspraxis.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The research question(s) was (were) answered in a manner appropriate with the objectives; the results are examined critically and provide added value for research and / or professional practice.',
|
||||
'text' => 'The results are interpreted in the light of the research question and critically discussed with regard to their added value for research and/or professional practice. Visualisations support the argumentation.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -8977,6 +9037,26 @@ Any unusual occurrences
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'eigenstaendigkeitText',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Arbeit wurde in selbständiger Arbeitsweise (z.B. eigenständige Lösung der Fragestellungen und aufgetretener Probleme) verfasst.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The paper was written in an independent way (e.g. independent solutions to the questions and problems that occurred)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'eigenstaendigkeitTextMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
@@ -9020,13 +9100,33 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Arbeit ist schlüssig aufgebaut und gut strukturiert.',
|
||||
'text' => 'Die Arbeit ist schlüssig strukturiert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The thesis is coherently arranged and well structured.',
|
||||
'text' => 'The paper is structured coherently.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'strukturTextMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die Arbeit ist schlüssig strukturiert.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The thesis is structured coherently.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9060,13 +9160,13 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Der Stil entspricht einer wissenschaftlichen Arbeit. Die Arbeit ist flüssig lesbar und weist eine klare, eindeutige und gendergerechte Sprache auf.',
|
||||
'text' => 'Rechtschreibung und Grammatik sind korrekt. Die Verwendung von Fachsprache ist angemessen. Die Anforderungen an gendergerechte Sprache sind nach den geltenden Richtlinien umgesetzt.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The style is suitable for a piece of scientific work. The thesis is easy to read and has a clear, unambiguous and gender-appropriate language.',
|
||||
'text' => 'Spelling and grammar are correct. The use of technical language is appropriate. The requirements for gender-appropriate language are implemented according to the applicable guidelines.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9140,13 +9240,33 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Die verwendeten Quellen sind passend, aktuell und werden ausreichend variiert.',
|
||||
'text' => 'Quellen und Literatur sind für die wissenschaftliche Auseinandersetzung mit dem Thema der Arbeit relevant, geben den aktuellen Stand der Forschung wieder und decken das Thema ab.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'The sources used are appropriate, current and sufficiently varied.',
|
||||
'text' => 'Sources and literature are relevant for the scientific discussion of the topic of the paper, reflect the current state of the art and cover the topic.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'literaturTextMaster',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Quellen und Literatur sind für die wissenschaftliche Auseinandersetzung mit dem Thema der Arbeit relevant, geben den aktuellen Stand der Forschung wieder und decken das Thema ab.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Sources and literature are relevant for the scientific discussion of the topic of the thesis, reflect the current state of the art and cover the topic.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9360,13 +9480,33 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%%, ist die %s insgesamt als negativ zu beurteilen.',
|
||||
'text' => 'Liegt die Punkteanzahl bei den Kriterien "1 - 5" oder "6 - 10" in Summe unter 50%, ist die {0} insgesamt als negativ zu beurteilen.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50%% in total, the %s is to be assessed as negative overall.',
|
||||
'text' => 'If the number of points for the criteria "1 - 5" or "6 - 10" is below 50% in total, the {0} is to be assessed as negative overall.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'notenschluesselHinweisNullPunkteEinKriterium',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Falls ein Kriterium mit 0 Punkten bewertet wird, ist die {0} insgesamt als negativ zu beurteilen.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'If a criterion is assessed with 0 points, the {0} is to be assessed as negative overall.',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9560,13 +9700,13 @@ Any unusual occurrences
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Ist die Arbeit gut strukturiert?',
|
||||
'text' => 'Ist die Arbeit schlüssig strukturiert?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Is the thesis well structured?',
|
||||
'text' => 'Is the thesis structured coherently?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9586,7 +9726,7 @@ Any unusual occurrences
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 's the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?',
|
||||
'text' => 'Is the structure understandable in terms of content and is it coherent in relation to the topic ("red thread")?',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
@@ -9792,6 +9932,443 @@ Any unusual occurrences
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'projektarbeitsbeurteilungUebersicht',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Projektarbeitsbeurteilungsübersicht',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Projekt Work Assessment Overview',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'abgabedatum',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Abgabe - Datum',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Upload - Date',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'freischaltung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Freischaltung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Activation',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'resendToken',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Token an Zweit-Begutachter*in senden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Send token to Second Assessor',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'freischalten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Freischalten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Unlock',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'kommissionellePruefungHinweis',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Dies ist eine im Rahmen einer kommissionellen Wiederholungsprüfung vorgelegte Bachelorarbeit. Die Beurteilung erfolgt erst im Anschluss an eine Abstimmung der Mitglieder des Prüfungssenats.',
|
||||
'description' => '',
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'This is a Bachelor\'s thesis submitted within the frame of a committee re-sit examination. The assessment only takes place after a vote of the members of the examination commission.',
|
||||
'description' => '',
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'kommissionMailSenden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Infomail an Mitglieder des Prüfungssenats senden',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Send infomail to members of the examination committee',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'kommissionMailGesendet',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Mail an Mitglieder des Prüfungssenats gesendet',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Sent mail to members of the examination committee',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'kommissionMailFehler',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Senden der Mail an Prüfungssenat',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error when sending mail to commission members',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'zweitbetreuerBewertungFehlt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Absenden erst nach Abschluss der Bewertung durch Zweitbegutachter*in möglich',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Sending only possible after completion of assessment by Second Assessor',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'nichtErfuellt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'nicht erfüllt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'not fulfilled',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'mindestanforderungErfuellt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Mindestanforderung erfüllt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'minimum requirement fulfilled',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'inWeitenTeilenErfuellt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'in weiten Teilen erfüllt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'fulfilled for the most part',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'vollstaendigErfuellt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'vollständig erfüllt',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'fully fulfilled',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'kommissionsmitglieder',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Mitglieder Prüfungssenat',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Members of the examination commission',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheckNichtGesetzt',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Plagiatscheck auffällig, negative Beurteilung',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Plagiarism check not passed, negative assessment',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'titelBearbeiten',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Titel bearbeiten',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Edit title',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'titelGespeichert',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Titel gespeichert',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Title saved',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'titelSpeichernFehler',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Fehler beim Speichern des Titels',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Error when saving title',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheckHinweisNegativeBeurteilung',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => '(Bei Plagiat wird die Arbeit negativ bewertet.)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => '(Plagiarism leads to a negative grade.)',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'plagiatscheck',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Plagiatscheck',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Plagiarism check',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'projektarbeitsbeurteilung',
|
||||
'category' => 'projektarbeitsbeurteilung',
|
||||
'phrase' => 'betreuernote',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => 'Betreuernote',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'Assessor grade',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'anrechnung',
|
||||
@@ -12353,6 +12930,46 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'errorDokumentZuGross',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Dokument zu groß",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "Document maximum size exceeded",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
'phrase' => 'errorUploadFehltOderZuGross',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Dokument fehlt oder zu groß",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => "Document missing or maximum size exceeded",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'ui',
|
||||
|
||||
@@ -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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user