mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
Merge branch 'master' into feature-12333/Change_legacy_jobs_database_log
This commit is contained in:
@@ -56,7 +56,7 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "^0.4.5",
|
||||
"grunt": "^1.3.0",
|
||||
"grunt-cli": "~0.1.13",
|
||||
"grunt-contrib-clean": "^0.7.0",
|
||||
"grunt-contrib-concat": "^0.5.1",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# FH-Complete
|
||||
|
||||
* [FH-Complete Homepage](https://www.fhcomplete.org)
|
||||
* [Wiki](https://wiki.fhcomplete.org/)
|
||||
* [Wiki](https://wiki.fhcomplete.info/)
|
||||
* [Changelog](CHANGELOG.md)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
$config['infocenter_studiengang_kz'] = '10021, 10027, 10002';
|
||||
@@ -62,6 +62,15 @@ $config['navigation_header'] = array(
|
||||
'lehre/lehrauftrag_bestellen:r',
|
||||
'lehre/lehrauftrag_erteilen:r'
|
||||
)
|
||||
),
|
||||
'zgvueberpruefung' => array(
|
||||
'link' => site_url('system/infocenter/ZGVUeberpruefung'),
|
||||
'description' => 'ZGV Überprüfung',
|
||||
'expand' => true,
|
||||
'sort' => 50,
|
||||
'requiredPermissions' => array(
|
||||
'lehre/zgvpruefung:r'
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
|
||||
@@ -383,8 +383,8 @@ class LehrauftragJob extends JOB_Controller
|
||||
} // Else if UID exists
|
||||
else
|
||||
{
|
||||
// Search if studiensemester exists
|
||||
$ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr, 'studiensemester_kurzbz'));
|
||||
// Search if studiensemester exists inside the existing UID array
|
||||
$ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr[$uid_index], 'studiensemester_kurzbz'));
|
||||
|
||||
// If studiensemester is new, add studiensemester to existing UID
|
||||
if ($ss_index === false)
|
||||
@@ -394,13 +394,6 @@ class LehrauftragJob extends JOB_Controller
|
||||
$data[$i]
|
||||
);
|
||||
}
|
||||
// Else if studiensemester exists
|
||||
else
|
||||
{
|
||||
// Add corresponding data to existing studiensemester of UID
|
||||
$mail_data_arr[$uid_index]['studiensemester_kurbz'][] = $data[$i];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ class Pruefungsprotokoll extends Auth_Controller
|
||||
$nullfields = array('uhrzeit', 'endezeit', 'abschlussbeurteilung_kurzbz', 'protokoll');
|
||||
foreach ($data as $idx => $item)
|
||||
{
|
||||
if (in_array($idx, $nullfields) & $item === '')
|
||||
if (in_array($idx, $nullfields) && $item === '')
|
||||
$data[$idx] = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -270,7 +270,6 @@ class Lehrauftrag extends Auth_Controller
|
||||
private function _sendMail($lehrvertrag_data_arr)
|
||||
{
|
||||
// Cluster data of new lehrvertraege as needed to send mail
|
||||
$lehrvertrag_data_arr = $this->_cluster_newVertragData($lehrvertrag_data_arr);
|
||||
|
||||
foreach ($lehrvertrag_data_arr as $lehrvertrag_data)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,8 @@ class Variables extends Auth_Controller
|
||||
array(
|
||||
'setVar' => 'basis/variable:rw',
|
||||
'getVar' => 'basis/variable:rw',
|
||||
'changeStudiensemesterVar' => 'basis/variable:rw'
|
||||
'changeStudiensemesterVar' => 'basis/variable:rw',
|
||||
'changeStudengangsTypVar' => 'basis/variable:rw'
|
||||
)
|
||||
);
|
||||
|
||||
@@ -50,7 +51,9 @@ class Variables extends Auth_Controller
|
||||
public function getVar()
|
||||
{
|
||||
$name = $this->input->get('name');
|
||||
$this->outputJson($this->VariableModel->getVariables($this->_uid, array($name)));
|
||||
$typ = $this->input->get('typ');
|
||||
|
||||
$this->outputJson($this->VariableModel->getVariables($this->_uid, array($name, $typ)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,6 +69,15 @@ class Variables extends Auth_Controller
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
public function changeStudengangsTypVar()
|
||||
{
|
||||
$name = $this->input->post('name');
|
||||
$change = $this->input->post('change');
|
||||
|
||||
$result = $this->variablelib->changeStudengangsTypVar($this->_uid, $name, $change);
|
||||
$this->outputJson($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the UID of the logged user and checks if it is valid
|
||||
*/
|
||||
|
||||
@@ -12,12 +12,17 @@ class InfoCenter extends Auth_Controller
|
||||
const APP = 'infocenter';
|
||||
const TAETIGKEIT = 'bewerbung';
|
||||
const FREIGABE_MAIL_VORLAGE = 'InfocenterMailFreigabeAssistenz';
|
||||
const ZGVPRUEFUNG_MAIL_VORLAGE = 'InfocenterMailZgvUeberpruefung';
|
||||
const ZGVPRUEFUNG_MAIL_VORLAGE_MASTER = 'InfocenterMailZgvUeberpruefungM';
|
||||
|
||||
const INFOCENTER_URI = 'system/infocenter/InfoCenter'; // URL prefix for this controller
|
||||
const ZGV_UEBERPRUEFUNG_URI = 'system/infocenter/ZGVUeberpruefung';
|
||||
const INDEX_PAGE = 'index';
|
||||
const FREIGEGEBEN_PAGE = 'freigegeben';
|
||||
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
|
||||
const SHOW_DETAILS_PAGE = 'showDetails';
|
||||
const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
|
||||
const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
|
||||
|
||||
const NAVIGATION_PAGE = 'navigation_page';
|
||||
const ORIGIN_PAGE = 'origin_page';
|
||||
@@ -63,13 +68,32 @@ class InfoCenter extends Auth_Controller
|
||||
'name' => 'Note updated',
|
||||
'message' => 'Note with title %s was updated',
|
||||
'success' => null
|
||||
)
|
||||
),
|
||||
'updatezgv' => array(
|
||||
'logtype' => 'Action',
|
||||
'name' => 'ZGV pruefung updated',
|
||||
'message' => 'ZGV with the ID %s was updated to %s',
|
||||
'success' => null
|
||||
),
|
||||
'newzgv' => array(
|
||||
'logtype' => 'Action',
|
||||
'name' => 'ZGV pruefung added',
|
||||
'message' => 'ZGV with the ID %s was added',
|
||||
'success' => null
|
||||
),
|
||||
'updatedoctyp' => array(
|
||||
'logtype' => 'Action',
|
||||
'name' => 'Document type updated',
|
||||
'message' => 'Type of Document %s was updated, set to %s',
|
||||
'success' => null
|
||||
),
|
||||
);
|
||||
|
||||
// Name of Interessentenstatus
|
||||
const INTERESSENTSTATUS = 'Interessent';
|
||||
const ABGEWIESENERSTATUS = 'Abgewiesener';
|
||||
const BEWERBERSTATUS = 'Bewerber';
|
||||
const WARTENDER = 'Wartender';
|
||||
|
||||
// Statusgruende for which no Studiengangsfreigabemessage should be sent
|
||||
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
|
||||
@@ -85,13 +109,18 @@ class InfoCenter extends Auth_Controller
|
||||
'freigegeben' => 'infocenter:r',
|
||||
'reihungstestAbsolviert' => 'infocenter:r',
|
||||
'showDetails' => 'infocenter:r',
|
||||
'showZGVDetails' => 'lehre/zgvpruefung:r',
|
||||
'unlockPerson' => 'infocenter:rw',
|
||||
'saveFormalGeprueft' => 'infocenter:rw',
|
||||
'saveDocTyp' => 'infocenter:rw',
|
||||
'saveNachreichung' => 'infocenter:rw',
|
||||
'getPrestudentData' => 'infocenter:r',
|
||||
'getLastPrestudentWithZgvJson' => 'infocenter:r',
|
||||
'getZgvInfoForPrestudent' => 'infocenter:r',
|
||||
'saveBewPriorisierung' => 'infocenter:rw',
|
||||
'saveZgvPruefung' => 'infocenter:rw',
|
||||
'zgvRueckfragen' => 'infocenter:rw',
|
||||
'zgvStatusUpdate' => 'lehre/zgvpruefung:rw',
|
||||
'saveAbsage' => 'infocenter:rw',
|
||||
'saveFreigabe' => 'infocenter:rw',
|
||||
'getNotiz' => 'infocenter:r',
|
||||
@@ -99,6 +128,7 @@ class InfoCenter extends Auth_Controller
|
||||
'updateNotiz' => 'infocenter:rw',
|
||||
'reloadZgvPruefungen' => 'infocenter:r',
|
||||
'reloadMessages' => 'infocenter:r',
|
||||
'reloadDoks' => 'infocenter:r',
|
||||
'reloadNotizen' => 'infocenter:r',
|
||||
'reloadLogs' => 'infocenter:r',
|
||||
'outputAkteContent' => 'infocenter:r',
|
||||
@@ -108,15 +138,20 @@ class InfoCenter extends Auth_Controller
|
||||
'setOnHold' => 'infocenter:rw',
|
||||
'removeOnHold' => 'infocenter:rw',
|
||||
'getStudienjahrEnd' => 'infocenter:r',
|
||||
'setNavigationMenuArrayJson' => 'infocenter:r'
|
||||
'setNavigationMenuArrayJson' => 'infocenter:r',
|
||||
'getAbsageData' => 'infocenter:r',
|
||||
'saveAbsageForAll' => 'infocenter:rw'
|
||||
)
|
||||
);
|
||||
|
||||
// Loads models
|
||||
$this->load->model('crm/Akte_model', 'AkteModel');
|
||||
$this->load->model('crm/Dokument_model', 'DokumentModel');
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
|
||||
$this->load->model('crm/Statusgrund_model', 'StatusgrundModel');
|
||||
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
|
||||
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
|
||||
$this->load->model('person/Notiz_model', 'NotizModel');
|
||||
$this->load->model('person/Person_model', 'PersonModel');
|
||||
$this->load->model('system/Message_model', 'MessageModel');
|
||||
@@ -178,6 +213,59 @@ class InfoCenter extends Auth_Controller
|
||||
$this->load->view('system/infocenter/infocenterReihungstestAbsolviert.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prestudenten/ZGV übersicht
|
||||
* Holt sich die Informationen zu den ZGV vom Prestudenten und zeigt die dann an
|
||||
*/
|
||||
public function showZGVDetails()
|
||||
{
|
||||
$this->_setNavigationMenuShowDetails(self::SHOW_ZGV_DETAILS_PAGE);
|
||||
|
||||
$prestudent_id = $this->input->get('prestudent_id');
|
||||
|
||||
if (!is_numeric($prestudent_id))
|
||||
show_error('prestudent id is not numeric!');
|
||||
|
||||
$prestudentexists = $this->PrestudentModel->load($prestudent_id);
|
||||
|
||||
if (isError($prestudentexists))
|
||||
show_error(getError($prestudentexists));
|
||||
|
||||
if (!hasData($prestudentexists))
|
||||
show_error('Prestudent does not exist!');
|
||||
|
||||
$zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
|
||||
|
||||
if (isError($zgv))
|
||||
show_error(getError($zgv));
|
||||
|
||||
if (!hasData($zgv))
|
||||
show_error('ZGV has no status.');
|
||||
|
||||
$persondata = $this->_loadPersonData(getData($prestudentexists)[0]->person_id);
|
||||
$prestudent_id = array('prestudent_id' => $prestudent_id);
|
||||
$status = array('status' => getData($zgv)[0]->status);
|
||||
$prestudent_data = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
|
||||
|
||||
$this->DokumentModel->addOrder('bezeichnung');
|
||||
$dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
|
||||
|
||||
$data = array_merge(
|
||||
$persondata,
|
||||
$prestudent_id,
|
||||
$status,
|
||||
$dokumentdata,
|
||||
$prestudent_data
|
||||
);
|
||||
|
||||
$origin_page = $this->input->get(self::ORIGIN_PAGE);
|
||||
|
||||
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
|
||||
$data[self::ORIGIN_PAGE] = $origin_page;
|
||||
$data[self::PREV_FILTER_ID] = $this->input->get(self::PREV_FILTER_ID);
|
||||
|
||||
$this->load->view('system/infocenter/infocenterZgvDetails.php', $data);
|
||||
}
|
||||
/**
|
||||
* Personal details page of the InfoCenter tool
|
||||
* Initialization function, gets person and prestudent data and loads the view with the data
|
||||
@@ -211,9 +299,13 @@ class InfoCenter extends Auth_Controller
|
||||
$persondata = $this->_loadPersonData($person_id);
|
||||
$prestudentdata = $this->_loadPrestudentData($person_id);
|
||||
|
||||
$this->DokumentModel->addOrder('bezeichnung');
|
||||
$dokumentdata = array('dokumententypen' => (getData($this->DokumentModel->load())));
|
||||
|
||||
$data = array_merge(
|
||||
$persondata,
|
||||
$prestudentdata
|
||||
$prestudentdata,
|
||||
$dokumentdata
|
||||
);
|
||||
|
||||
$data[self::FHC_CONTROLLER_ID] = $this->getControllerId();
|
||||
@@ -374,12 +466,18 @@ class InfoCenter extends Auth_Controller
|
||||
$zgvdatum = isEmptyString($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d');
|
||||
$zgvnation_code = $this->input->post('zgvnation') === 'null' ? null : $this->input->post('zgvnation');
|
||||
|
||||
// zgvmasterdata
|
||||
$zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
|
||||
$zgvmaort = $this->input->post('zgvmaort');
|
||||
$zgvmadatum = $this->input->post('zgvmadatum');
|
||||
$zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
|
||||
$zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
|
||||
$prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
|
||||
$prestudentdata = getData($prestudent);
|
||||
|
||||
if ($prestudentdata->studiengangtyp === 'm')
|
||||
{
|
||||
// zgvmasterdata
|
||||
$zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas');
|
||||
$zgvmaort = $this->input->post('zgvmaort');
|
||||
$zgvmadatum = $this->input->post('zgvmadatum');
|
||||
$zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
|
||||
$zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
|
||||
}
|
||||
|
||||
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', self::INTERESSENTSTATUS);
|
||||
|
||||
@@ -395,19 +493,29 @@ class InfoCenter extends Auth_Controller
|
||||
);
|
||||
}
|
||||
|
||||
$prestresult = $this->PrestudentModel->update(
|
||||
$prestudent_id,
|
||||
array(
|
||||
'zgv_code' => $zgv_code,
|
||||
'zgvort' => $zgvort,
|
||||
'zgvdatum' => $zgvdatum,
|
||||
'zgvnation' => $zgvnation_code,
|
||||
$updateArray = array(
|
||||
'zgv_code' => $zgv_code,
|
||||
'zgvort' => $zgvort,
|
||||
'zgvdatum' => $zgvdatum,
|
||||
'zgvnation' => $zgvnation_code,
|
||||
'updateamum' => date('Y-m-d H:i:s')
|
||||
);
|
||||
|
||||
if ($prestudentdata->studiengangtyp === 'm')
|
||||
{
|
||||
$updateMasterArray = array(
|
||||
'zgvmas_code' => $zgvmas_code,
|
||||
'zgvmaort' => $zgvmaort,
|
||||
'zgvmadatum' => $zgvmadatum,
|
||||
'zgvmanation' => $zgvmanation_code,
|
||||
'updateamum' => date('Y-m-d H:i:s')
|
||||
)
|
||||
'zgvmanation' => $zgvmanation_code
|
||||
);
|
||||
|
||||
$updateArray = array_merge($updateArray, $updateMasterArray);
|
||||
}
|
||||
|
||||
$prestresult = $this->PrestudentModel->update(
|
||||
$prestudent_id,
|
||||
$updateArray
|
||||
);
|
||||
|
||||
if (isError($prestresult))
|
||||
@@ -429,15 +537,195 @@ class InfoCenter extends Auth_Controller
|
||||
$this->outputJson($json);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sendet bei einer neuen ZGV Prüfung die Mail raus an den Studiengang
|
||||
*/
|
||||
private function sendZgvMail($mail, $typ){
|
||||
$data = array(
|
||||
'link' => site_url('system/infocenter/ZGVUeberpruefung')
|
||||
);
|
||||
|
||||
$this->load->helper('hlp_sancho');
|
||||
|
||||
sendSanchoMail(
|
||||
($typ === 'm' ? self::ZGVPRUEFUNG_MAIL_VORLAGE_MASTER : self::ZGVPRUEFUNG_MAIL_VORLAGE),
|
||||
$data,
|
||||
$mail,
|
||||
'ZGV Ueberpruefung',
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Der Status von den ZGV wird geupdated
|
||||
*/
|
||||
public function zgvStatusUpdate()
|
||||
{
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$person_id = $this->input->post('person_id');
|
||||
$status = $this->input->post('status');
|
||||
|
||||
if (isEmptyString($prestudent_id) || isEmptyString($person_id) || isEmptyString($status))
|
||||
$this->terminateWithJsonError('Some data is missing');
|
||||
|
||||
$personInfos = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id);
|
||||
|
||||
if (!hasData($personInfos))
|
||||
$this->terminateWithJsonError('Person id nicht gefunden');
|
||||
|
||||
$personInfos = getData($personInfos);
|
||||
|
||||
$zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
|
||||
|
||||
if (!hasData($zgv))
|
||||
$this->terminateWithJsonError('ZGV-Status nicht gefunden');
|
||||
|
||||
$zgv = getData($zgv);
|
||||
|
||||
if ($zgv[0]->status === 'rejected' && $status === 'rejected')
|
||||
$this->terminateWithJsonError('Bereits abgelehnt worden');
|
||||
elseif ($zgv[0]->status === 'accepted' && $status === 'accepted')
|
||||
$this->terminateWithJsonError('Bereits akzeptiert worden');
|
||||
|
||||
$insert = $this->ZGVPruefungStatusModel->insert(
|
||||
array(
|
||||
'zgvpruefung_id' => $zgv[0]->zgvpruefung_id,
|
||||
'status' => $status
|
||||
)
|
||||
);
|
||||
|
||||
$update = $this->ZGVPruefungModel->update(
|
||||
$zgv[0]->zgvpruefung_id,
|
||||
array(
|
||||
'updateamum' => date('Y-m-d H:i:s'),
|
||||
'updatevon' => $this->_uid
|
||||
)
|
||||
);
|
||||
|
||||
if (isError($insert) || isError($update))
|
||||
$this->terminateWithJsonError('Fehler beim Speichern');
|
||||
|
||||
$allZgvs = $this->ZGVPruefungStatusModel->getOpenZgvByPerson($personInfos->person_id, array('pruefung_stg'));
|
||||
$openZgv = false;
|
||||
|
||||
if (hasData($allZgvs))
|
||||
$openZgv = true;
|
||||
|
||||
$this->_log($person_id, 'updatezgv', array($zgv[0]->zgvpruefung_id, $status));
|
||||
|
||||
$this->outputJsonSuccess(
|
||||
array
|
||||
(
|
||||
'msg' => 'Erfolgreich gespeichert',
|
||||
'person_id' => $personInfos->person_id,
|
||||
'openZgv' => $openZgv
|
||||
)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt einen neuen ZGV Status hinzu oder updated einen bestehenden
|
||||
* Falls es erfolgreich war, sendet er die Mail raus
|
||||
*/
|
||||
public function zgvRueckfragen()
|
||||
{
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$person_id = $this->input->post('person_id');
|
||||
|
||||
if (isEmptyString($prestudent_id) || isEmptyString($person_id))
|
||||
$this->terminateWithJsonError('Prestudentid OR/AND Personid missing');
|
||||
|
||||
$zgv = $this->ZGVPruefungStatusModel->getZgvStatusByPrestudent($prestudent_id);
|
||||
|
||||
$data = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
|
||||
$mail = $data['studiengang_mail'];
|
||||
$typ = $data['studiengang_typ'];
|
||||
|
||||
if (hasData($zgv))
|
||||
{
|
||||
$zgv = getData($zgv);
|
||||
|
||||
if ($zgv[0]->status === 'pruefung_stg')
|
||||
$this->terminateWithJsonError('Bereits in Prüfung');
|
||||
|
||||
$insert = $this->ZGVPruefungStatusModel->insert(
|
||||
array(
|
||||
'zgvpruefung_id' => $zgv[0]->zgvpruefung_id,
|
||||
'status' => 'pruefung_stg'
|
||||
)
|
||||
);
|
||||
|
||||
$this->ZGVPruefungModel->update(
|
||||
$zgv[0]->zgvpruefung_id,
|
||||
array(
|
||||
'updateamum' => date('Y-m-d H:i:s'),
|
||||
'updatevon' => $this->_uid
|
||||
)
|
||||
);
|
||||
|
||||
$this->_log($person_id, 'updatezgv', array($zgv[0]->zgvpruefung_id, 'pruefung_stg'));
|
||||
|
||||
if (isSuccess($insert))
|
||||
$this->sendZgvMail($mail, $typ);
|
||||
elseif (isError($insert))
|
||||
$this->terminateWithJsonError('Fehler beim Speichern');
|
||||
}else
|
||||
{
|
||||
$insert = $this->ZGVPruefungModel->insert(
|
||||
array(
|
||||
'prestudent_id' => $prestudent_id,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => $this->_uid
|
||||
)
|
||||
);
|
||||
|
||||
if (isSuccess($insert))
|
||||
{
|
||||
$zgvpruefung_id = $this->ZGVPruefungModel->db->insert_id();
|
||||
$result = $this->ZGVPruefungStatusModel->insert(
|
||||
array(
|
||||
'zgvpruefung_id' => $zgvpruefung_id,
|
||||
'status' => 'pruefung_stg'
|
||||
)
|
||||
);
|
||||
|
||||
$this->_log($person_id, 'newzgv', array($zgvpruefung_id));
|
||||
|
||||
if (isSuccess($result))
|
||||
$this->sendZgvMail($mail, $typ);
|
||||
elseif (isError($result))
|
||||
$this->terminateWithJsonError('Fehler beim Speichern');
|
||||
}
|
||||
}
|
||||
|
||||
$hold = false;
|
||||
if ($this->personloglib->getOnHoldDate($person_id) !== null)
|
||||
$hold = true;
|
||||
|
||||
$this->outputJsonSuccess(
|
||||
array
|
||||
(
|
||||
'msg' => 'Erfolgreich gespeichert',
|
||||
'person_id' => $data['person_id'],
|
||||
'hold' => $hold
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves Absage for Prestudent including the reason for the Absage (statusgrund).
|
||||
* inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status.
|
||||
*/
|
||||
public function saveAbsage()
|
||||
public function saveAbsage($prestudent_id = null, $statusgrund = null)
|
||||
{
|
||||
$json = null;
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
$statusgrund = $this->input->post('statusgrund');
|
||||
if (is_null($prestudent_id))
|
||||
$prestudent_id = $this->input->post('prestudent_id');
|
||||
|
||||
if (is_null($statusgrund))
|
||||
$statusgrund = $this->input->post('statusgrund');
|
||||
|
||||
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
|
||||
|
||||
@@ -446,8 +734,10 @@ class InfoCenter extends Auth_Controller
|
||||
|
||||
if (hasData($lastStatus) && hasData($statusgrresult))
|
||||
{
|
||||
//check if still Interessent and not freigegeben yet
|
||||
if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->retval[0]->bestaetigtam))
|
||||
//check if still Interessent
|
||||
if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS
|
||||
|| $lastStatus->retval[0]->status_kurzbz === self::BEWERBERSTATUS
|
||||
|| $lastStatus->retval[0]->status_kurzbz === self::WARTENDER)
|
||||
{
|
||||
$result = $this->PrestudentstatusModel->insert(
|
||||
array(
|
||||
@@ -744,6 +1034,13 @@ class InfoCenter extends Auth_Controller
|
||||
$this->load->view('system/infocenter/logs.php', array('logs' => $logs));
|
||||
}
|
||||
|
||||
public function reloadDoks($person_id)
|
||||
{
|
||||
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
|
||||
|
||||
$this->load->view('system/infocenter/dokNachzureichend.php', array('dokumente_nachgereicht' => $dokumente_nachgereicht->retval));
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs content of an Akte, sends appropriate headers (so the document can be downloaded)
|
||||
* @param $akte_id
|
||||
@@ -898,6 +1195,117 @@ class InfoCenter extends Auth_Controller
|
||||
$this->outputJsonSuccess('success');
|
||||
}
|
||||
|
||||
public function saveDocTyp($person_id)
|
||||
{
|
||||
$akte_id = $this->input->post('akte_id');
|
||||
$typ = $this->input->post('typ');
|
||||
|
||||
if (!isset($akte_id) || !isset($typ) || !isset($person_id))
|
||||
$this->terminateWithJsonError("Nicht alle sind Parameter übergeben worden");
|
||||
|
||||
$akte = $this->AkteModel->load($akte_id);
|
||||
|
||||
if (!hasData($akte))
|
||||
$this->terminateWithJsonError("Fehler beim Laden der Akte");
|
||||
|
||||
$result = $this->AkteModel->update($akte_id, array('dokument_kurzbz' => $typ));
|
||||
|
||||
if (!isSuccess($result))
|
||||
$this->terminateWithJsonError("Fehler beim Update aufgetreten");
|
||||
|
||||
$dokument = $this->DokumentModel->load($akte->retval[0]->dokument_kurzbz);
|
||||
|
||||
if (!hasData($dokument))
|
||||
$this->terminateWithJsonError("Fehler beim Laden des Dokumententypes");
|
||||
|
||||
$this->_log(
|
||||
$person_id,
|
||||
'updatedoctyp',
|
||||
array(
|
||||
isEmptyString($akte->retval[0]->titel) ? $akte->retval[0]->bezeichnung : $akte->retval[0]->titel,
|
||||
isEmptyString($dokument->retval[0]->bezeichnung) ? $dokument->retval[0]->dokument_kurbz : $dokument->retval[0]->bezeichnung
|
||||
)
|
||||
);
|
||||
|
||||
$this->outputJsonSuccess('success');
|
||||
}
|
||||
|
||||
public function saveNachreichung($person_id)
|
||||
{
|
||||
$nachreichungAm = $this->input->post('nachreichungAm');
|
||||
$nachreichungAnmerkung = empty($this->input->post('nachreichungAnmerkung')) ? NULL : $this->input->post('nachreichungAnmerkung');
|
||||
$typ = $this->input->post('typ');
|
||||
|
||||
$allowedTypes = [
|
||||
'VorlSpB2' => 'SprachB2',
|
||||
'ZgvBaPre' => 'zgv_bakk',
|
||||
'ZgvMaPre' => 'zgv_mast'
|
||||
];
|
||||
|
||||
if (!in_array($typ, array_keys($allowedTypes)))
|
||||
$this->terminateWithJsonError($this->p->t('ui', 'fehlerBeimSpeichern'));
|
||||
|
||||
if (empty($nachreichungAm))
|
||||
$this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
|
||||
|
||||
if (!preg_match('/^\d{2}\.\d{2}\.(\d{2}|\d{4})$/ ', $nachreichungAm))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$ds = explode('.', $nachreichungAm);
|
||||
if (! checkdate($ds[1], $ds[0], $ds[2]))
|
||||
{
|
||||
$this->terminateWithJsonError($this->p->t('infocenter', 'datumUngueltig'));
|
||||
}
|
||||
}
|
||||
|
||||
$nachreichungAm = (date_format(date_create($nachreichungAm), 'Y-m-d'));
|
||||
|
||||
$today = date('Y-m-d H:i:s');
|
||||
|
||||
if($nachreichungAm < $today)
|
||||
$this->terminateWithJsonError($this->p->t('infocenter', 'nachreichDatumNichtVergangenheit'));
|
||||
|
||||
|
||||
$akte = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'dokument_kurzbz' => $allowedTypes[$typ]));
|
||||
|
||||
if (hasData($akte)) {
|
||||
$akte = getData($akte)[0];
|
||||
$this->AkteModel->update(
|
||||
$akte->akte_id,
|
||||
array(
|
||||
'anmerkung' => $nachreichungAnmerkung,
|
||||
'updateamum' => $today,
|
||||
'updatevon' => get_uid(),
|
||||
'nachgereicht' => true,
|
||||
'nachgereicht_am' => $nachreichungAm
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->AkteModel->insert(
|
||||
array(
|
||||
'dokument_kurzbz' => $allowedTypes[$typ],
|
||||
'person_id' => $person_id,
|
||||
'erstelltam' => NULL,
|
||||
'gedruckt' => false,
|
||||
'anmerkung' => $nachreichungAnmerkung,
|
||||
'updateamum' => $today,
|
||||
'updatevon' => get_uid(),
|
||||
'insertamum' => $today,
|
||||
'insertvon' => get_uid(),
|
||||
'uid' => NULL,
|
||||
'nachgereicht' => true,
|
||||
'nachgereicht_am' => $nachreichungAm
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess("Done!");
|
||||
}
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -1058,9 +1466,9 @@ class InfoCenter extends Auth_Controller
|
||||
/**
|
||||
* Define the navigation menu for the showDetails page
|
||||
*/
|
||||
private function _setNavigationMenuShowDetails()
|
||||
private function _setNavigationMenuShowDetails($page = self::SHOW_DETAILS_PAGE)
|
||||
{
|
||||
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.self::SHOW_DETAILS_PAGE));
|
||||
$this->load->library('NavigationLib', array(self::NAVIGATION_PAGE => self::INFOCENTER_URI.'/'.$page));
|
||||
|
||||
$origin_page = $this->input->get(self::ORIGIN_PAGE);
|
||||
|
||||
@@ -1073,6 +1481,8 @@ class InfoCenter extends Auth_Controller
|
||||
{
|
||||
$link = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
|
||||
}
|
||||
if ($origin_page === self::ZGV_UBERPRUEFUNG_PAGE)
|
||||
$link = site_url(self::ZGV_UEBERPRUEFUNG_URI);
|
||||
|
||||
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
|
||||
if (isset($prevFilterId))
|
||||
@@ -1358,6 +1768,8 @@ class InfoCenter extends Auth_Controller
|
||||
|| isset($zgvpruefung->prestudentstatus->bestaetigtam)
|
||||
|| $zgvpruefung->prestudentstatus->status_kurzbz != self::INTERESSENTSTATUS;
|
||||
|
||||
$zgvpruefung->abgewiesener = $zgvpruefung->prestudentstatus->status_kurzbz === self::ABGEWIESENERSTATUS;
|
||||
|
||||
//wether prestudent was freigegeben for RT/Stg
|
||||
$zgvpruefung->isRtFreigegeben = false;
|
||||
$zgvpruefung->isStgFreigegeben = false;
|
||||
@@ -1421,14 +1833,26 @@ class InfoCenter extends Auth_Controller
|
||||
$zgvpruefung->changedown = $this->PrestudentModel->checkPrioChange($zgvpruefung->prestudent_id, $studiensemester, 1);
|
||||
}
|
||||
}
|
||||
$zgvExist = $this->ZGVPruefungModel->loadWhere(array('prestudent_id' => $zgvpruefung->prestudent_id));
|
||||
|
||||
$zgvpruefungen[] = $zgvpruefung;
|
||||
if (isSuccess($zgvExist) && hasData($zgvExist))
|
||||
{
|
||||
$this->ZGVPruefungStatusModel->addOrder('datum', 'DESC');
|
||||
$this->ZGVPruefungStatusModel->addLimit(1);
|
||||
|
||||
$statusZGV = $this->ZGVPruefungStatusModel->loadWhere(array('zgvpruefung_id' => $zgvExist->retval[0]->zgvpruefung_id));
|
||||
|
||||
if (isSuccess($statusZGV) && hasData($statusZGV))
|
||||
$zgvpruefung->statusZGV = $statusZGV->retval[0]->status;
|
||||
}
|
||||
|
||||
$zgvpruefungen[] = $zgvpruefung;
|
||||
}
|
||||
|
||||
$this->_sortPrestudents($zgvpruefungen);
|
||||
|
||||
$abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::ABGEWIESENERSTATUS))->retval;
|
||||
$intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::INTERESSENTSTATUS))->retval;
|
||||
$abwstatusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
|
||||
$intstatusgruende = $this->StatusgrundModel->getStatus(self::INTERESSENTSTATUS)->retval;
|
||||
|
||||
$data = array (
|
||||
'zgvpruefungen' => $zgvpruefungen,
|
||||
@@ -1545,8 +1969,10 @@ class InfoCenter extends Auth_Controller
|
||||
$person_id = $prestudentdata->person_id;
|
||||
$studiengang_kurzbz = $prestudentdata->studiengang;
|
||||
$studiengang_bezeichnung = $prestudentdata->studiengangbezeichnung;
|
||||
$studiengang_mail = $prestudentdata->studiengangmail;
|
||||
$studiengang_typ = $prestudentdata->studiengangtyp;
|
||||
|
||||
return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz, 'studiengang_bezeichnung' => $studiengang_bezeichnung);
|
||||
return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz, 'studiengang_bezeichnung' => $studiengang_bezeichnung, 'studiengang_mail' => $studiengang_mail, 'studiengang_typ' => $studiengang_typ);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1687,4 +2113,45 @@ class InfoCenter extends Auth_Controller
|
||||
$this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
|
||||
}
|
||||
}
|
||||
|
||||
public function getAbsageData()
|
||||
{
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
|
||||
$statusgruende = $this->StatusgrundModel->getStatus(self::ABGEWIESENERSTATUS, true)->retval;
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
$studiengaenge = $this->StudiengangModel->getStudiengaengeWithOrgForm(['b', 'm'], $studienSemester);
|
||||
|
||||
$data = array (
|
||||
'statusgruende' => $statusgruende,
|
||||
'studiengaenge' => $studiengaenge->retval
|
||||
);
|
||||
|
||||
$this->outputJsonSuccess($data);
|
||||
}
|
||||
|
||||
public function saveAbsageForAll()
|
||||
{
|
||||
$statusgrund = $this->input->post('statusgrund');
|
||||
$studiengang = $this->input->post('studiengang');
|
||||
$personen = $this->input->post('personen');
|
||||
$studienSemester = $this->variablelib->getVar('infocenter_studiensemester');
|
||||
|
||||
if ($statusgrund === 'null' || $studiengang === 'null' || empty($personen))
|
||||
$this->terminateWithJsonError("Bitte Statusgrund, Studiengang und Personen auswählen.");
|
||||
|
||||
foreach($personen as $person)
|
||||
{
|
||||
$prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester);
|
||||
|
||||
if(!hasData($prestudent))
|
||||
continue;
|
||||
|
||||
$prestudentData = getData($prestudent);
|
||||
|
||||
$this->saveAbsage($prestudentData[0]->prestudent_id, $statusgrund);
|
||||
}
|
||||
|
||||
$this->outputJsonSuccess("Success");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class ZGVUeberpruefung extends Auth_Controller
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
// Set required permissions
|
||||
parent::__construct(
|
||||
array(
|
||||
'index' => 'lehre/zgvpruefung:r',
|
||||
'getZgvStatusByPrestudent' => 'lehre/zgvpruefung:r'
|
||||
)
|
||||
);
|
||||
$this->load->model('crm/ZGVPruefungStatus_model', 'ZGVPruefungStatusModel');
|
||||
$this->load->model('crm/ZGVPruefung_model', 'ZGVPruefungModel');
|
||||
|
||||
$this->load->library('WidgetLib');
|
||||
|
||||
$this->setControllerId();
|
||||
$this->loadPhrases(
|
||||
array(
|
||||
'infocenter'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('system/infocenter/infocenterZgvUeberpruefung.php');
|
||||
}
|
||||
|
||||
public function getZgvStatusByPrestudent()
|
||||
{
|
||||
$prestudent_id = $this->input->get('prestudent_id');
|
||||
|
||||
$zgvExist = $this->ZGVPruefungModel->loadWhere(array('prestudent_id' => $prestudent_id));
|
||||
|
||||
if (!hasData($zgvExist))
|
||||
$this->terminateWithJsonError('no ZGV exist');
|
||||
|
||||
$status = $this->ZGVPruefungStatusModel->getZgvStatus(getData($zgvExist)[0]->zgvpruefung_id);
|
||||
|
||||
if (!hasData($status))
|
||||
$this->terminateWithJsonError('No status');
|
||||
|
||||
$status = getData($status)[0]->status;
|
||||
|
||||
$this->outputJsonSuccess($status);
|
||||
}
|
||||
}
|
||||
@@ -167,7 +167,7 @@ class LDAPLib
|
||||
}
|
||||
|
||||
// LDAP connection
|
||||
$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER], $ldapConfigs[self::PORT]);
|
||||
$ldapConnection = @ldap_connect($ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]);
|
||||
if ($ldapConnection) // if success
|
||||
{
|
||||
// Sets the LDAP protocol version
|
||||
@@ -220,7 +220,9 @@ class LDAPLib
|
||||
}
|
||||
else // Connection error
|
||||
{
|
||||
return error(ldap_error($ldapConnection));
|
||||
return error(
|
||||
'An error occurred while connecting to the LDAP server: '.$ldapConfigs[self::SERVER].':'.$ldapConfigs[self::PORT]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,6 +100,18 @@ class VariableLib
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function changeStudengangsTypVar($uid, $name, $change)
|
||||
{
|
||||
$result = error('error when setting variable!');
|
||||
|
||||
if (isEmptyString($uid) || isEmptyString($name) || isEmptyString($change))
|
||||
return $result;
|
||||
|
||||
$result = $this->_ci->VariableModel->setVariable($uid, $name, $change);
|
||||
$this->_setVariable($uid, $name);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* "Refreshes" variable value with given name by retrieving current value from db and saving it.
|
||||
* @param $uid
|
||||
|
||||
@@ -612,9 +612,9 @@ class Messages_model extends CI_Model
|
||||
if (!isEmptyString($vorlage_kurzbz))
|
||||
{
|
||||
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
|
||||
$this->VorlagestudiengangModel->addOrder('version','DESC');
|
||||
$this->VorlagestudiengangModel->addOrder('version', 'DESC');
|
||||
|
||||
$getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
|
||||
$getVorlage = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz, 'aktiv' => true));
|
||||
}
|
||||
|
||||
return $getVorlage;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
class Bisioaufenthaltfoerderung_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'bis.tbl_bisio_aufenthaltfoerderung';
|
||||
$this->pk = array('bisio_id', 'aufenthaltfoerderung_code');
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
}
|
||||
@@ -581,4 +581,19 @@ class Prestudent_model extends DB_Model
|
||||
|
||||
return $this->execQuery($query, array($person_id));
|
||||
}
|
||||
|
||||
public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester)
|
||||
{
|
||||
$query = "SELECT ps.prestudent_id
|
||||
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)
|
||||
WHERE ps.person_id = ?
|
||||
AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ?
|
||||
AND pss.studiensemester_kurzbz = ?
|
||||
";
|
||||
|
||||
return $this->execQuery($query, array($person, $studiengang, $studienSemester));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,4 +11,18 @@ class Statusgrund_model extends DB_Model
|
||||
$this->dbTable = "public.tbl_status_grund";
|
||||
$this->pk = "statusgrund_id";
|
||||
}
|
||||
|
||||
public function getStatus($status_kurzbz = null, $aktiv = null)
|
||||
{
|
||||
$this->addOrder('bezeichnung_mehrsprachig');
|
||||
$where = array();
|
||||
if (!is_null($status_kurzbz))
|
||||
$where['status_kurzbz'] = $status_kurzbz;
|
||||
if (!is_null($aktiv))
|
||||
$where['aktiv'] = $aktiv;
|
||||
|
||||
$status = $this->loadWhere($where);
|
||||
|
||||
return success($status->retval);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
|
||||
class ZGVPruefungStatus_model extends DB_Model
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'public.tbl_zgvpruefungstatus_status';
|
||||
$this->pk = 'zgv_pruefung_status_id';
|
||||
$this->hasSequence = true;
|
||||
}
|
||||
|
||||
public function getZgvStatus($zgvpruefung_id)
|
||||
{
|
||||
$this->addOrder('datum', 'DESC');
|
||||
$this->addLimit(1);
|
||||
|
||||
return $this->loadWhere(array('zgvpruefung_id' => $zgvpruefung_id));
|
||||
}
|
||||
|
||||
public function getZgvStatusByPrestudent($prestudent_id)
|
||||
{
|
||||
$this->addJoin('public.tbl_zgvpruefung', 'zgvpruefung_id');
|
||||
$this->addOrder($this->dbTable . '.datum', 'DESC');
|
||||
$this->addLimit(1);
|
||||
return $this->loadWhere(array('prestudent_id' => $prestudent_id));
|
||||
}
|
||||
|
||||
public function getOpenZgvByPerson($person_id, $status)
|
||||
{
|
||||
$query = 'SELECT status.zgvpruefung_id, status.datum, status.status
|
||||
FROM public.tbl_zgvpruefungstatus_status status
|
||||
INNER JOIN
|
||||
(
|
||||
SELECT zgvpruefung_id, max(datum) as MaxDate
|
||||
FROM public.tbl_zgvpruefungstatus_status
|
||||
GROUP BY zgvpruefung_id
|
||||
) sub ON status.zgvpruefung_id = sub.zgvpruefung_id AND status.datum = sub.MaxDate
|
||||
JOIN public.tbl_zgvpruefung ON status.zgvpruefung_id = public.tbl_zgvpruefung.zgvpruefung_id
|
||||
JOIN public.tbl_prestudent USING (prestudent_id)
|
||||
WHERE person_id = ?
|
||||
AND status.status IN ?';
|
||||
|
||||
return $this->execQuery($query, array($person_id, $status));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
|
||||
class ZGVPruefung_model extends DB_Model
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'public.tbl_zgvpruefung';
|
||||
$this->pk = 'zgvpruefung_id';
|
||||
$this->hasSequence = true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -41,4 +41,23 @@ class Projektbetreuer_model extends DB_Model
|
||||
return error ('Incorrect parameter type');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Projektbetreuer data by authentification token
|
||||
* @param $zugangstoken
|
||||
* @return object
|
||||
*/
|
||||
public function getBetreuerByToken($zugangstoken)
|
||||
{
|
||||
$qry = '
|
||||
SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW()
|
||||
ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC
|
||||
LIMIT 1
|
||||
';
|
||||
|
||||
return $this->execQuery($qry, array($zugangstoken));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -481,4 +481,18 @@ class Studiengang_model extends DB_Model
|
||||
|
||||
return $this->loadWhere($condition);
|
||||
}
|
||||
|
||||
public function getStudiengaengeWithOrgForm($typ, $semester)
|
||||
{
|
||||
$query = "SELECT DISTINCT (UPPER(sg.typ || sg.kurzbz || ':' || 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)
|
||||
WHERE sp.aktiv = TRUE AND sg.aktiv = TRUE AND sg.typ IN ?
|
||||
AND spsem.studiensemester_kurzbz = ?
|
||||
ORDER BY Studiengang";
|
||||
|
||||
return $this->execQuery($query, array($typ, $semester));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,11 @@ class Benutzer_model extends DB_Model
|
||||
$this->hasSequence = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets active Benutzer from person_id
|
||||
* @param $person_id
|
||||
* @return object
|
||||
*/
|
||||
public function getFromPersonId($person_id)
|
||||
{
|
||||
return $this->loadWhere(array('person_id' => $person_id, 'aktiv' => true));
|
||||
|
||||
@@ -154,9 +154,11 @@ class Notiz_model extends DB_Model
|
||||
{
|
||||
// Join with the table public.tbl_notizzuordnung using notiz_id
|
||||
$this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
|
||||
$this->addOrder('insertamum', 'DESC');
|
||||
$this->addJoin('public.tbl_prestudent', 'prestudent_id', 'LEFT');
|
||||
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
|
||||
$this->addOrder('public.tbl_notiz.insertamum', 'DESC');
|
||||
|
||||
return $this->loadWhere(array('person_id' => $person_id, 'titel LIKE' => $titel));
|
||||
return $this->loadWhere(array('public.tbl_notizzuordnung.person_id' => $person_id, 'titel LIKE' => $titel));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,7 +11,8 @@ class Variablenname_model extends DB_Model
|
||||
ORDER BY studienjahr_kurzbz, start
|
||||
) sem
|
||||
WHERE start > now()
|
||||
LIMIT 1;'
|
||||
LIMIT 1;',
|
||||
'infocenter_studiensgangtyp' => 'SELECT infocenter_studiensgangtyp FROM public.tbl_variablenname LIMIT 1'
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -189,7 +189,7 @@ $this->load->view(
|
||||
|
||||
<div class="col-xs-4 col-md-offset-0 col-md-4">
|
||||
<div class="input-group">
|
||||
<input id="username" type="hidden" autocomplete="username" value=""><!-- this is to prevent Chrome autofilling a random input field with the username-->
|
||||
<input id="username" autocomplete="username" style="position: absolute; opacity: 0;"><!-- this is to prevent Chrome autofilling a random input field with the username-->
|
||||
<input id="password" type="password" autocomplete="new-password" class="form-control" placeholder="CIS-<?php echo ucfirst($this->p->t('password', 'password')); ?>">
|
||||
<span class="input-group-btn">
|
||||
<button id="accept-lehrauftraege" class="btn btn-primary pull-right"><?php echo ucfirst($this->p->t('global', 'lehrauftraegeAnnehmen')); ?></button>
|
||||
|
||||
@@ -32,7 +32,7 @@ SELECT
|
||||
erteilt,
|
||||
akzeptiert,
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -48,7 +48,7 @@ SELECT
|
||||
)
|
||||
) AS "bestellt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -64,7 +64,7 @@ SELECT
|
||||
)
|
||||
) AS "erteilt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -241,7 +241,7 @@ FROM
|
||||
\'Betreuung\' AS "typ",
|
||||
(betreuerart_kurzbz || \' \' ||
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
PUBLIC.tbl_person
|
||||
JOIN PUBLIC.tbl_benutzer USING (person_id)
|
||||
|
||||
@@ -34,7 +34,7 @@ SELECT
|
||||
erteilt,
|
||||
akzeptiert,
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -50,7 +50,7 @@ SELECT
|
||||
)
|
||||
) AS "bestellt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -66,7 +66,7 @@ SELECT
|
||||
)
|
||||
) AS "erteilt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -128,7 +128,7 @@ FROM
|
||||
(
|
||||
SELECT
|
||||
/* lehrauftraege also planned with dummies, therefore personalnummer is needed */
|
||||
ma.personalnummer,
|
||||
(ma.personalnummer::text),
|
||||
lema.lehreinheit_id,
|
||||
lv.lehrveranstaltung_id,
|
||||
lv.bezeichnung AS "lv_bezeichnung",
|
||||
@@ -240,7 +240,7 @@ FROM
|
||||
pa.lehreinheit_id,
|
||||
lv.lehrveranstaltung_id,
|
||||
lv.bezeichnung AS "lv_bezeichnung",
|
||||
pa.projektarbeit_id AS "projektarbeit_id",
|
||||
(pa.projektarbeit_id::text) AS "projektarbeit_id",
|
||||
le.studiensemester_kurzbz,
|
||||
stg.studiengang_kz,
|
||||
upper(stg.typ || stg.kurzbz) AS "stg_typ_kurzbz",
|
||||
@@ -249,7 +249,7 @@ FROM
|
||||
\'Betreuung\' AS "typ",
|
||||
(betreuerart_kurzbz || \' \' ||
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
PUBLIC.tbl_person
|
||||
JOIN PUBLIC.tbl_benutzer USING (person_id)
|
||||
@@ -268,7 +268,7 @@ FROM
|
||||
ELSE (oe.organisationseinheittyp_kurzbz ||
|
||||
\' \' || oe.bezeichnung)
|
||||
END AS "lv_oe_kurzbz",
|
||||
(nachname || \' \' || vorname) AS "lektor",
|
||||
(vorname || \' \' || nachname) AS "lektor",
|
||||
TRUNC(pb.stunden, 1) AS "stunden",
|
||||
TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag",
|
||||
vertrag_id,
|
||||
|
||||
@@ -14,7 +14,7 @@ $query = '
|
||||
datum AS "storniert",
|
||||
(
|
||||
SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
|
||||
@@ -65,7 +65,7 @@ SELECT
|
||||
erteilt,
|
||||
akzeptiert,
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -81,7 +81,7 @@ SELECT
|
||||
)
|
||||
) AS "bestellt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -97,7 +97,7 @@ SELECT
|
||||
)
|
||||
) AS "erteilt_von",
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
public.tbl_person
|
||||
JOIN public.tbl_benutzer benutzer USING (person_id)
|
||||
@@ -281,7 +281,7 @@ FROM
|
||||
\'Betreuung\' AS "typ",
|
||||
(betreuerart_kurzbz || \' \' ||
|
||||
(SELECT
|
||||
vorname || \' \' || nachname
|
||||
nachname || \' \' || vorname
|
||||
FROM
|
||||
PUBLIC.tbl_person
|
||||
JOIN PUBLIC.tbl_benutzer USING (person_id)
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
name="period" value="today"><?php echo $this->p->t('ui','heute'); ?></button>
|
||||
<button type="submit" class="btn btn-default <?php echo $period == 'lastWeek' ? 'active' : ''?>"
|
||||
name="period" value="lastWeek"><?php echo $this->p->t('ui','letzteWoche'); ?></button>
|
||||
<button type="submit" class="btn btn-default <?php echo $period == 'upcoming' ? 'active' : ''?>"
|
||||
name="period" value="upcoming"><?php echo $this->p->t('ui','zukuenftige'); ?></button>
|
||||
<button type="submit" class="btn btn-default <?php echo $period == 'all' ? 'active' : ''?>"
|
||||
name="period" value="all"><?php echo $this->p->t('ui','alle'); ?></button>
|
||||
</div>
|
||||
|
||||
@@ -19,9 +19,10 @@ FROM
|
||||
WHERE
|
||||
vorsitz='".$UID."'
|
||||
AND (
|
||||
'". $PERIOD. "' = 'today' AND datum = NOW()::date OR
|
||||
'". $PERIOD. "' = 'lastWeek' AND datum = (NOW() - interval '1 week')::date OR
|
||||
'". $PERIOD. "' = 'all' AND datum >= '2020-05-27'
|
||||
('". $PERIOD. "' = 'today' AND datum = NOW()::date) OR
|
||||
('". $PERIOD. "' = 'lastWeek' AND datum >= (NOW() - interval '1 week')::date AND datum < NOW()::date) OR
|
||||
('". $PERIOD. "' = 'upcoming' AND datum > NOW()::date) OR
|
||||
('". $PERIOD. "' = 'all' AND datum >= '2020-05-27')
|
||||
)
|
||||
ORDER BY datum, nachname, vorname
|
||||
";
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<div class="modal fade absageModalForAll"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="absageModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-hidden="true">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title"
|
||||
id="absageModalLabel"><?php echo $this->p->t('infocenter', 'absageBestaetigen') ?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<?php echo $this->p->t('infocenter', 'absageBestaetigenTxt') ?>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal">
|
||||
<?php echo $this->p->t('ui', 'abbrechen') ?>
|
||||
</button>
|
||||
<button class="btn btn-primary saveAbsage" id="saveAbsageForAll">
|
||||
<?php echo $this->p->t('infocenter', 'interessentAbweisen') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
@@ -15,6 +15,7 @@
|
||||
<?php echo date_format(date_create($notiz->insertamum), 'd.m.Y H:i:s') ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php (!isset($notiz->kurzbzlang)) ?: print_r('(' . nl2br($notiz->kurzbzlang) . ') - ') ?>
|
||||
<?php echo nl2br($notiz->text) ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php if (count($dokumente_nachgereicht) > 0): ?>
|
||||
<br/>
|
||||
<p><?php echo ucfirst($this->p->t('infocenter','nachzureichendeDokumente')) ?></p>
|
||||
<table id="nachgdoctable" class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('global','typ')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','nachzureichenAm')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','ausstellungsnation')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('global','anmerkung')) ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($dokumente_nachgereicht as $dokument):
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $dokument->dokument_bezeichnung ?></td>
|
||||
<td>
|
||||
<?php echo isset($dokument->nachgereicht_am) ? date_format(date_create($dokument->nachgereicht_am), 'd.m.Y') : ''; ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $dokument->langtext ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $dokument->anmerkung; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
@@ -6,7 +6,10 @@
|
||||
<th><?php echo ucfirst($this->p->t('global','typ')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('global','uploaddatum')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','ausstellungsnation')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','formalGeprueft')) ?></th>
|
||||
<?php
|
||||
if (!isset($formalReadonly))
|
||||
echo "<th>" . ucfirst($this->p->t('infocenter','formalGeprueft')) . "</th>"
|
||||
?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -18,50 +21,59 @@
|
||||
<td>
|
||||
<a href="outputAkteContent/<?php echo $dokument->akte_id ?>"><?php echo isEmptyString($dokument->titel) ? $dokument->bezeichnung : $dokument->titel ?></a>
|
||||
</td>
|
||||
<td><?php echo $dokument->dokument_bezeichnung ?></td>
|
||||
<td>
|
||||
<select class="aktenid" id="aktenid_<?php echo $dokument->akte_id?>" <?php echo (isset($formalReadonly) ? 'disabled' : '') ?>>
|
||||
<?php
|
||||
foreach($dokumententypen as $dokumenttyp)
|
||||
echo "<option " . ($dokumenttyp->bezeichnung === $dokument->dokument_bezeichnung ? 'selected' : '') . " value = " . $dokumenttyp->dokument_kurzbz . ">" . $dokumenttyp->bezeichnung . "</option>"
|
||||
?>
|
||||
</select>
|
||||
|
||||
<div class="row">
|
||||
<button class="nachreichungInfos hidden" id="nachreichungInfos_<?php echo $dokument->akte_id?>"><?php echo ucfirst($this->p->t('infocenter','dokumentWirdNachgereicht')) ?></button>
|
||||
</div>
|
||||
|
||||
<div class="nachreichungInputs hidden" id="nachreichungInputs_<?php echo $dokument->akte_id?>">
|
||||
<div class="row">
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control nachreichungAnmerkung" id="nachreichungAnmerkung_<?php echo $dokument->akte_id?>" maxlength="128" placeholder="Institution des Ausstellers (zB: TGM Wien)">
|
||||
<span class="input-group-addon" style="color: grey;">128</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" class="form-control nachreichungAm" id="nachreichungAm_<?php echo $dokument->akte_id?>" autofocus="autofocus" placeholder="tt.mm.jjjj">
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="btn-group pull-right">
|
||||
<input type="button" value="OK" class="btn btn-primary nachreichungSpeichern" id="nachreichungSpeichern_<?php echo $dokument->akte_id?>">
|
||||
<input type="button" value="Abbrechen" class="btn btn-default nachreichungAbbrechen" id="nachreichungAbbrechen_<?php echo $dokument->akte_id?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</td>
|
||||
<td><?php echo date_format(date_create($dokument->erstelltam), 'd.m.Y') ?></td>
|
||||
<td><?php echo $dokument->langtext ?></td>
|
||||
<td>
|
||||
<input type="checkbox" class="form-check-input prchbox"
|
||||
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') : ''; ?>
|
||||
</span>
|
||||
</td>
|
||||
<?php
|
||||
if (!isset($formalReadonly)) :
|
||||
?>
|
||||
<td>
|
||||
<input type="checkbox" class="form-check-input prchbox"
|
||||
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') : ''; ?>
|
||||
</span>
|
||||
</td>
|
||||
<?php endif ?>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if (count($dokumente_nachgereicht) > 0): ?>
|
||||
<br/>
|
||||
<p><?php echo ucfirst($this->p->t('infocenter','nachzureichendeDokumente')) ?></p>
|
||||
<table id="nachgdoctable" class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?php echo ucfirst($this->p->t('global','typ')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','nachzureichenAm')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('infocenter','ausstellungsnation')) ?></th>
|
||||
<th><?php echo ucfirst($this->p->t('global','anmerkung')) ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($dokumente_nachgereicht as $dokument):
|
||||
?>
|
||||
<tr>
|
||||
<td><?php echo $dokument->dokument_bezeichnung ?></td>
|
||||
<td>
|
||||
<?php echo isset($dokument->nachgereicht_am) ? date_format(date_create($dokument->nachgereicht_am), 'd.m.Y') : ''; ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $dokument->langtext ?>
|
||||
</td>
|
||||
<td>
|
||||
<?php echo $dokument->anmerkung; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
@@ -13,6 +13,7 @@
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
@@ -40,6 +41,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/infocenter/infocenterData.php'); ?>
|
||||
<?php $this->load->view('system/infocenter/absageModal.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
<?php
|
||||
|
||||
$this->config->load('infocenter');
|
||||
$APP = '\'infocenter\'';
|
||||
$REJECTED_STATUS = '\'Abgewiesener\'';
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\'b\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\', \'Interessent rejected\'';
|
||||
$LOGDATA_NAME_PARKED = '\'Parked\'';
|
||||
$LOGDATA_NAME_ONHOLD = '\'Onhold\'';
|
||||
$LOGTYPE_KURZBZ = '\'Processstate\'';
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
$ADDITIONAL_STG = '10021,10027';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
|
||||
@@ -213,7 +214,31 @@
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVNation"
|
||||
) AS "ZGVNation",
|
||||
(
|
||||
SELECT ps.zgvmanation
|
||||
FROM public.tbl_prestudent ps
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVMNation",
|
||||
(
|
||||
SELECT tbl_organisationseinheit.bezeichnung
|
||||
FROM public.tbl_benutzerfunktion
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
|
||||
AND tbl_benutzerfunktion.uid = (
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "InfoCenterMitarbeiter"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
@@ -298,7 +323,9 @@
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'gesendet').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'nichtGesendet').')',
|
||||
ucfirst($this->p->t('lehre', 'studiengang')).' ('.$this->p->t('global', 'aktiv').')',
|
||||
'ZGV Nation'
|
||||
'ZGV Nation BA',
|
||||
'ZGV Nation MA',
|
||||
'InfoCenter Mitarbeiter'
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
@@ -380,6 +407,20 @@
|
||||
$datasetRaw->{'ZGVNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'ZGVMNation'} == null)
|
||||
{
|
||||
$datasetRaw->{'ZGVMNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
'public/js/bootstrapper.js',
|
||||
'public/js/tablesort/tablesort.js',
|
||||
'public/js/infocenter/messageList.js',
|
||||
'public/js/infocenter/infocenterDetails.js'
|
||||
'public/js/infocenter/infocenterDetails.js',
|
||||
'public/js/infocenter/zgvUeberpruefung.js',
|
||||
'public/js/infocenter/docUeberpruefung.js'
|
||||
),
|
||||
'phrases' => array(
|
||||
'infocenter' => array(
|
||||
@@ -43,7 +45,13 @@
|
||||
'nichtsZumEntfernen',
|
||||
'fehlerBeimEntfernen',
|
||||
'rueckstelldatumUeberschritten',
|
||||
'parkenZurueckstellenInfo'
|
||||
'parkenZurueckstellenInfo',
|
||||
'zgvInPruefung',
|
||||
'zgvErfuellt',
|
||||
'zgvNichtErfuellt',
|
||||
'zgvErfuelltPruefung',
|
||||
'datumUngueltig',
|
||||
'nachreichDatumNichtVergangenheit'
|
||||
),
|
||||
'ui' => array(
|
||||
'gespeichert',
|
||||
@@ -121,6 +129,9 @@
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php $this->load->view('system/infocenter/dokpruefung.php'); ?>
|
||||
<div id="nachzureichendeDoks">
|
||||
<?php $this->load->view('system/infocenter/dokNachzureichend.php'); ?>
|
||||
</div>
|
||||
</div> <!-- ./panel-body -->
|
||||
</div> <!-- ./panel -->
|
||||
</div> <!-- ./column -->
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
@@ -40,6 +41,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/infocenter/infocenterFreigegebenData.php'); ?>
|
||||
<?php $this->load->view('system/infocenter/absageModal.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<?php
|
||||
|
||||
$this->config->load('infocenter');
|
||||
$APP = '\'infocenter\'';
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\'b\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
|
||||
$REJECTED_STATUS = '\'Abgewiesener\'';
|
||||
$ADDITIONAL_STG = '10021,10027,10002';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
|
||||
@@ -114,6 +115,12 @@
|
||||
sg.studiengang_kz in('.$ADDITIONAL_STG.')
|
||||
)
|
||||
AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM tbl_prestudentstatus spss
|
||||
WHERE spss.prestudent_id = ps.prestudent_id
|
||||
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "StgAbgeschickt",
|
||||
(
|
||||
@@ -210,7 +217,31 @@
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVNation"
|
||||
) AS "ZGVNation",
|
||||
(
|
||||
SELECT ps.zgvmanation
|
||||
FROM public.tbl_prestudent ps
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVMNation",
|
||||
(
|
||||
SELECT tbl_organisationseinheit.bezeichnung
|
||||
FROM public.tbl_benutzerfunktion
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
|
||||
AND tbl_benutzerfunktion.uid = (
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "InfoCenterMitarbeiter"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
@@ -278,7 +309,9 @@
|
||||
'Reihungstest angetreten',
|
||||
'Reihungstest angemeldet',
|
||||
'Reihungstest date',
|
||||
'ZGV Nation'
|
||||
'ZGV Nation BA',
|
||||
'ZGV Nation MA',
|
||||
'InfoCenter Mitarbeiter'
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
@@ -371,6 +404,21 @@
|
||||
{
|
||||
$datasetRaw->{'ZGVNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'ZGVMNation'} == null)
|
||||
{
|
||||
$datasetRaw->{'ZGVMNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'dialoglib' => true,
|
||||
'phrases' => array(
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
@@ -40,6 +41,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/infocenter/infocenterReihungstestAbsolviertData.php'); ?>
|
||||
<?php $this->load->view('system/infocenter/absageModal.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<?php
|
||||
|
||||
$this->config->load('infocenter');
|
||||
$APP = '\'infocenter\'';
|
||||
$INTERESSENT_STATUS = '\'Interessent\'';
|
||||
$STUDIENGANG_TYP = '\'b\'';
|
||||
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
|
||||
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
|
||||
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
|
||||
$ADDITIONAL_STG = '10021,10027';
|
||||
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
|
||||
$STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
|
||||
|
||||
$query = '
|
||||
@@ -83,10 +84,11 @@
|
||||
LIMIT 1
|
||||
) AS "AnzahlAbgeschickt",
|
||||
(
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || sg.orgform_kurzbz)), \', \')
|
||||
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz || \':\' || 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)
|
||||
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
|
||||
AND pss.bewerbung_abgeschicktamum IS NOT NULL
|
||||
AND ps.person_id = p.person_id
|
||||
@@ -166,7 +168,31 @@
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvnation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVNation"
|
||||
) AS "ZGVNation",
|
||||
(
|
||||
SELECT ps.zgvmanation
|
||||
FROM public.tbl_prestudent ps
|
||||
WHERE ps.person_id = p.person_id
|
||||
ORDER BY ps.zgvmanation DESC NULLS LAST, ps.prestudent_id DESC
|
||||
LIMIT 1
|
||||
) AS "ZGVMNation",
|
||||
(
|
||||
SELECT tbl_organisationseinheit.bezeichnung
|
||||
FROM public.tbl_benutzerfunktion
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now())
|
||||
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now())
|
||||
AND tbl_benutzerfunktion.uid = (
|
||||
SELECT l.insertvon
|
||||
FROM system.tbl_log l
|
||||
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
|
||||
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
|
||||
AND l.person_id = p.person_id
|
||||
ORDER BY l.zeitpunkt DESC
|
||||
LIMIT 1
|
||||
)
|
||||
LIMIT 1
|
||||
) AS "InfoCenterMitarbeiter"
|
||||
FROM public.tbl_person p
|
||||
LEFT JOIN (
|
||||
SELECT tpl.person_id,
|
||||
@@ -225,7 +251,9 @@
|
||||
'Reihungstest angetreten',
|
||||
'Reihungstest angemeldet',
|
||||
'Reihungstest Datum',
|
||||
'ZGV Nation'
|
||||
'ZGV Nation BA',
|
||||
'ZGV Nation MA',
|
||||
'InfoCenter Mitarbeiter'
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
@@ -313,6 +341,21 @@
|
||||
{
|
||||
$datasetRaw->{'ZGVNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'ZGVMNation'} == null)
|
||||
{
|
||||
$datasetRaw->{'ZGVMNation'} = '-';
|
||||
}
|
||||
|
||||
if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter')
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja';
|
||||
}
|
||||
else
|
||||
{
|
||||
$datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'InfocenterZgvDetails',
|
||||
'jquery' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'jqueryui' => true,
|
||||
'dialoglib' => true,
|
||||
'ajaxlib' => true,
|
||||
'tablesorter' => true,
|
||||
'tinymce' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'addons' => true,
|
||||
'navigationwidget' => true,
|
||||
'udfs' => true,
|
||||
'widgets' => true,
|
||||
'customCSSs' => array(
|
||||
'public/css/sbadmin2/admintemplate.css',
|
||||
'public/css/sbadmin2/tablesort_bootstrap.css',
|
||||
'public/css/infocenter/infocenterDetails.css'
|
||||
),
|
||||
'customJSs' => array(
|
||||
'public/js/bootstrapper.js',
|
||||
'public/js/tablesort/tablesort.js',
|
||||
'public/js/infocenter/messageList.js',
|
||||
'public/js/infocenter/infocenterDetails.js',
|
||||
'public/js/infocenter/zgvUeberpruefung.js'
|
||||
),
|
||||
'phrases' => array(
|
||||
'infocenter' => array(
|
||||
'notizHinzufuegen',
|
||||
'notizAendern',
|
||||
'nichtsZumEntfernen',
|
||||
'fehlerBeimEntfernen',
|
||||
'zgvInPruefung',
|
||||
'zgvErfuellt',
|
||||
'zgvNichtErfuellt',
|
||||
'zgvErfuelltPruefung'
|
||||
),
|
||||
'ui' => array(
|
||||
'gespeichert',
|
||||
'fehlerBeimSpeichern'
|
||||
),
|
||||
'global' => array(
|
||||
'bis',
|
||||
'zeilen'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
?>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<input type="hidden" id="hiddenpersonid" value="<?php echo $stammdaten->person_id ?>">
|
||||
<input type="hidden" id="studiengangtyp" value="<?php echo $studiengang_typ ?>">
|
||||
<div class="row<?php if ($lockedbyother) echo ' alert-danger' ?>">
|
||||
<div class="col-lg-8">
|
||||
<h3 class="page-header">
|
||||
Infocenter Details: <?php echo $stammdaten->vorname.' '.$stammdaten->nachname ?>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="headerright text-right">
|
||||
<?php
|
||||
if (isset($lockedby)):
|
||||
echo $this->p->t('global', 'wirdBearbeitetVon').': ';
|
||||
echo $lockedby;
|
||||
if ($origin_page == 'index'):
|
||||
$unlockpath = 'unlockPerson/'.$stammdaten->person_id;
|
||||
$unlockpath .= '?fhc_controller_id='.$fhc_controller_id;
|
||||
$unlockpath .= '&filter_id='.$prev_filter_id;
|
||||
?>
|
||||
|
||||
<a href="<?php echo $unlockpath; ?>">
|
||||
<i class="fa fa-sign-out"></i> <?php echo ucfirst($this->p->t('ui', 'freigeben')) ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
<?php else: ?>
|
||||
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading text-center">
|
||||
<h4><?php echo ucfirst($this->p->t('global', 'stammdaten')) ?></h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php
|
||||
$this->load->view('system/infocenter/stammdaten.php'); ?>
|
||||
<?php $this->load->view('system/infocenter/anmerkungenZurBewerbung.php'); ?>
|
||||
</div> <!-- ./panel-body -->
|
||||
</div> <!-- ./panel -->
|
||||
</div> <!-- ./main column -->
|
||||
</div> <!-- ./main row -->
|
||||
</section>
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-primary">
|
||||
<a name="DokPruef"></a><!-- anchor for jumping to the section -->
|
||||
<div class="panel-heading text-center">
|
||||
<h4>
|
||||
<?php echo ucfirst($this->p->t('infocenter', 'dokumentenpruefung')) ?>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<?php $this->load->view('system/infocenter/dokpruefung.php', array('formalReadonly' => true)); ?>
|
||||
<div id="nachzureichendeDoks">
|
||||
<?php $this->load->view('system/infocenter/dokNachzureichend.php'); ?>
|
||||
</div>
|
||||
</div> <!-- ./panel-body -->
|
||||
|
||||
<div class="panel-body zgvBearbeitungButtons" id="zgvBearbeitungButtons_<?php echo $prestudent_id ?>">
|
||||
<button type="button" class="btn btn-default zgvAkzeptieren" id="zgvAkzeptieren_<?php echo $prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'zgvErfuellt') ?>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default zgvAblehnen" id="zgvAblehnen_<?php echo $prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'zgvNichtErfuellt') ?>
|
||||
</button>
|
||||
<?php
|
||||
if ($studiengang_typ === 'm') :
|
||||
?>
|
||||
<button type="button" class="btn btn-default zgvAkzeptierenPruefung" id="zgvAkzeptierenPruefung_<?php echo $prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'zgvErfuelltPruefung') ?>
|
||||
</button>
|
||||
<?php
|
||||
endif;
|
||||
?>
|
||||
<span class="zgvStatusText" id="zgvStatusText_<?php echo $prestudent_id ?>" data-info="need">
|
||||
</span>
|
||||
</div>
|
||||
</div> <!-- ./panel -->
|
||||
</div> <!-- ./column -->
|
||||
</div> <!-- ./row -->
|
||||
</section>
|
||||
<section>
|
||||
<div class="modal fade notizModal" id="notizModal_<?php echo $prestudent_id ?>" tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="notizModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close"
|
||||
data-dismiss="modal"
|
||||
aria-hidden="true">×
|
||||
</button>
|
||||
<h4 class="modal-title"
|
||||
id="notizModalLabel">
|
||||
<?php echo $this->p->t('infocenter', 'notizHinzufuegen') ?>
|
||||
<span id="notizModalStgr_<?php echo $prestudent_id ?>"></span>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="hidden" id="inputStatus_<?php echo $prestudent_id ?>">
|
||||
<div class="form-group">
|
||||
<label for="inputNotizTitelModal"><?php echo ucfirst($this->p->t('global', 'titel')) . ':' ?></label>
|
||||
<input id="inputNotizTitelModal" required type="text" class="form-control"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="inputNotizTextModal"><?php echo ucfirst($this->p->t('global', 'text')) . ':' ?></label>
|
||||
<textarea id="inputNotizTextModal" required class="form-control" rows="3" cols="32"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal"><?php echo $this->p->t('ui', 'abbrechen') ?>
|
||||
</button>
|
||||
<button type="button"
|
||||
class="btn btn-default saveZgvNotiz" id="saveZgvNotiz_<?php echo $prestudent_id ?>">
|
||||
<?php echo $this->p->t('ui', 'speichern') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal-fade -->
|
||||
</section>
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading text-center">
|
||||
<a name="Nachrichten"></a>
|
||||
<h4 class="text-center">
|
||||
<?php echo ucfirst($this->p->t('global', 'nachrichten')) ?>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row" id="messagelist">
|
||||
<?php
|
||||
$this->load->view('system/infocenter/messageList.php', $messages);
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading text-center">
|
||||
<a name="NotizAkt"></a>
|
||||
<h4 class="text-center">
|
||||
<?php echo ucfirst($this->p->t('global', 'notizen'))?>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div id="addnotiz">
|
||||
<?php $this->load->view('system/infocenter/addNotiz.php'); ?>
|
||||
</div>
|
||||
<div id="notizen">
|
||||
<?php $this->load->view('system/infocenter/notizen.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- ./row -->
|
||||
</div> <!-- ./panel-body -->
|
||||
</div> <!-- ./panel -->
|
||||
</div> <!-- ./main column -->
|
||||
</div> <!-- ./main row -->
|
||||
</section>
|
||||
</div> <!-- ./container-fluid-->
|
||||
</div> <!-- ./page-wrapper-->
|
||||
</div> <!-- ./wrapper -->
|
||||
<button id="scrollToTop" title="Go to top"><i class="fa fa-chevron-up"></i></button>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
$this->load->view(
|
||||
'templates/FHC-Header',
|
||||
array(
|
||||
'title' => 'Info Center',
|
||||
'jquery' => true,
|
||||
'jqueryui' => true,
|
||||
'jquerycheckboxes' => true,
|
||||
'bootstrap' => true,
|
||||
'fontawesome' => true,
|
||||
'sbadmintemplate' => true,
|
||||
'tablesorter' => true,
|
||||
'ajaxlib' => true,
|
||||
'filterwidget' => true,
|
||||
'navigationwidget' => true,
|
||||
'phrases' => array(
|
||||
'person' => array('vorname', 'nachname'),
|
||||
'global' => array('mailAnXversandt'),
|
||||
'ui' => array('bitteEintragWaehlen')
|
||||
),
|
||||
'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterZgv.css'),
|
||||
'customJSs' => array('public/js/bootstrapper.js')
|
||||
)
|
||||
);
|
||||
?>
|
||||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<?php echo $this->widgetlib->widget('NavigationWidget'); ?>
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h3 class="page-header">
|
||||
ZGV Überprüfung
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<?php $this->load->view('system/infocenter/infocenterZgvUeberpruefungData.php'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<?php $this->load->view('templates/FHC-Footer'); ?>
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
$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 = '
|
||||
SELECT
|
||||
ps.prestudent_id AS "PreStudentID",
|
||||
p.vorname AS "Vorname",
|
||||
p.nachname AS "Nachname",
|
||||
sg.kurzbzlang AS "Studiengang",
|
||||
zgvstatus.status as "Status"
|
||||
FROM public.tbl_zgvpruefungstatus_status zgvstatus
|
||||
JOIN public.tbl_zgvpruefung zgv USING (zgvpruefung_id)
|
||||
JOIN public.tbl_prestudent ps USING (prestudent_id)
|
||||
JOIN public.tbl_person p USING(person_id)
|
||||
JOIN public.tbl_studiengang sg USING(studiengang_kz)
|
||||
WHERE oe_kurzbz IN ('. $oeKurz .')
|
||||
AND zgvstatus.datum IN (
|
||||
SELECT MAX(zgvstatus.datum)
|
||||
FROM public.tbl_zgvpruefungstatus_status zgvstatus GROUP BY zgvstatus.zgvpruefung_id)
|
||||
ORDER BY ps.prestudent_id
|
||||
';
|
||||
|
||||
$filterWidgetArray = array(
|
||||
'query' => $query,
|
||||
'app' => 'infocenter',
|
||||
'datasetName' => 'zgvUeberpruefung',
|
||||
'filter_id' => $this->input->get('filter_id'),
|
||||
'requiredPermissions' => 'lehre/zgvpruefung',
|
||||
'datasetRepresentation' => 'tablesorter',
|
||||
'additionalColumns' => array('Details'),
|
||||
'hideOptions' => true,
|
||||
'columnsAliases' => array(
|
||||
|
||||
),
|
||||
'formatRow' => function($datasetRaw) {
|
||||
|
||||
/* NOTE: Dont use $this here for PHP Version compatibility */
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s?prestudent_id=%s&origin_page=%s&fhc_controller_id=%s&prev_filter_id=%s">Details</a>',
|
||||
site_url('system/infocenter/InfoCenter/showZGVDetails'),
|
||||
$datasetRaw->{'PreStudentID'},
|
||||
'ZGVUeberpruefung',
|
||||
(isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
|
||||
(isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
|
||||
);
|
||||
|
||||
switch ($datasetRaw->{'Status'})
|
||||
{
|
||||
case 'accepted' :
|
||||
$datasetRaw->{'Status'} = $this->p->t('infocenter', 'zgvErfuellt');
|
||||
break;
|
||||
case 'rejected' :
|
||||
$datasetRaw->{'Status'} = $this->p->t('infocenter', 'zgvNichtErfuellt');
|
||||
break;
|
||||
case 'accepted_pruefung' :
|
||||
$datasetRaw->{'Status'} = $this->p->t('infocenter', 'zgvErfuelltPruefung');
|
||||
break;
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
);
|
||||
|
||||
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
|
||||
?>
|
||||
@@ -259,7 +259,7 @@
|
||||
echo $this->widgetlib->widget(
|
||||
'Zgvmaster_widget',
|
||||
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code),
|
||||
array('name' => 'zgvmas', 'id' => 'zgvmas')
|
||||
array('name' => 'zgvmas', 'id' => 'zgvmas_'.$zgvpruefung->prestudent_id)
|
||||
); ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -272,7 +272,8 @@
|
||||
?>
|
||||
<input type="text" class="form-control"
|
||||
value="<?php echo $zgvpruefung->zgvmaort ?>"
|
||||
name="zgvmaort">
|
||||
name="zgvmaort"
|
||||
id="zgvmaort_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -288,7 +289,8 @@
|
||||
<input type="text"
|
||||
class="dateinput form-control"
|
||||
value="<?php echo $zgvmadatum ?>"
|
||||
name="zgvmadatum">
|
||||
name="zgvmadatum"
|
||||
id="zgvmadatum_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -301,22 +303,31 @@
|
||||
echo $this->widgetlib->widget(
|
||||
'Nation_widget',
|
||||
array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code),
|
||||
array('name' => 'zgvmanation', 'id' => 'zgvmanation')
|
||||
array('name' => 'zgvmanation', 'id' => 'zgvmanation_'.$zgvpruefung->prestudent_id)
|
||||
); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- show only master zgv if master studiengang - end -->
|
||||
<?php endif; ?>
|
||||
<?php if ($infoonly) : ?>
|
||||
<span class="zgvStatusText" id="zgvStatusText_<?php echo $zgvpruefung->prestudent_id ?>" <?php (!(isset($zgvpruefung->statusZGV))) ?: print_r('data-info="need"')?>>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
<?php if (!$infoonly): ?>
|
||||
<div class="row">
|
||||
<div class="col-xs-6 text-left">
|
||||
<div class="col-xs-8 text-left zgvBearbeitungButtons" id="zgvBearbeitungButtons_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<button type="button" class="btn btn-default zgvUebernehmen" id="zgvUebernehmen_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'letzteZgvUebernehmen') ?>
|
||||
</button>
|
||||
<button class="btn btn-default zgvRueckfragen" id="zgvRueckfragen_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'zgvRueckfragen') ?>
|
||||
</button>
|
||||
<span class="zgvStatusText" id="zgvStatusText_<?php echo $zgvpruefung->prestudent_id ?>" <?php (!(isset($zgvpruefung->statusZGV))) ?: print_r('data-info="need"')?>>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<div class="col-xs-4 text-right">
|
||||
<button type="submit" class="btn btn-default saveZgv" id="zgvSpeichern_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('ui', 'speichern') ?>
|
||||
</button>
|
||||
@@ -344,7 +355,7 @@
|
||||
|
||||
<?php
|
||||
//Prestudenten cannot be abgewiesen or freigegeben if already done
|
||||
if (!$infoonly) :
|
||||
if (!$infoonly || (isset($zgvpruefung->prestudentstatus->status_kurzbz) && in_array($zgvpruefung->prestudentstatus->status_kurzbz, ['Bewerber', 'Wartender']))) :
|
||||
?>
|
||||
<div class="panel-footer solidtop">
|
||||
<div class="row">
|
||||
@@ -368,70 +379,36 @@
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="modal fade absageModal" id="absageModal_<?php echo $zgvpruefung->prestudent_id ?>"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="absageModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-hidden="true">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title"
|
||||
id="absageModalLabel"><?php echo $this->p->t('infocenter', 'absageBestaetigen') ?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<?php echo $this->p->t('infocenter', 'absageBestaetigenTxt') ?>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal">
|
||||
<?php echo $this->p->t('ui', 'abbrechen') ?>
|
||||
</button>
|
||||
<button class="btn btn-primary saveAbsage" id="saveAbsage_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'interessentAbweisen') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.column-absage -->
|
||||
<?php
|
||||
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
|
||||
if (isEmptyString($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
|
||||
{
|
||||
$disabled = $disabledStg = 'disabled';
|
||||
$disabledTxt = $disabledStgTxt = $this->p->t('infocenter', 'bewerbungMussAbgeschickt');
|
||||
}
|
||||
<?php
|
||||
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
|
||||
if (isEmptyString($zgvpruefung->prestudentstatus->bewerbung_abgeschicktamum))
|
||||
{
|
||||
$disabled = $disabledStg = 'disabled';
|
||||
$disabledTxt = $disabledStgTxt = $this->p->t('infocenter', 'bewerbungMussAbgeschickt');
|
||||
}
|
||||
|
||||
if ($studiengangtyp !== 'b')
|
||||
{
|
||||
$disabled = 'disabled';
|
||||
$disabledTxt = $this->p->t('infocenter', 'nurBachelorFreigeben');
|
||||
if ($studiengangtyp !== 'b' && $studiengangtyp !== 'm')
|
||||
{
|
||||
$disabled = 'disabled';
|
||||
$disabledTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
|
||||
|
||||
// FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter
|
||||
if (!in_array($studiengang_kz, $fit_programme_studiengaenge))
|
||||
{
|
||||
$disabledStg = 'disabled';
|
||||
$disabledStgTxt = $this->p->t('infocenter', 'nurBachelorFreigeben');
|
||||
}
|
||||
// FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter
|
||||
if (!in_array($studiengang_kz, $fit_programme_studiengaenge))
|
||||
{
|
||||
$disabledStg = 'disabled';
|
||||
$disabledStgTxt = $this->p->t('infocenter', 'nurBachelorMasterFreigeben');
|
||||
}
|
||||
?>
|
||||
}
|
||||
if (!$infoonly) :
|
||||
?>
|
||||
<div class="col-lg-8 text-right">
|
||||
<div class="form-inline">
|
||||
<div class="input-group frgstatusgrselect" id="frgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<select name="frgstatusgrund"
|
||||
class="d-inline float-right"
|
||||
<?php echo $disabledStg ?>
|
||||
<?php echo $disabledStg ?>
|
||||
required>
|
||||
<option value="null"
|
||||
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
|
||||
@@ -441,11 +418,11 @@
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
|
||||
data-toggle="tooltip" title="<?php echo $disabledStgTxt ?>">
|
||||
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
|
||||
</button>
|
||||
</span>
|
||||
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
|
||||
data-toggle="tooltip" title="<?php echo $disabledStgTxt ?>">
|
||||
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="input-group" id="igrfrgbtn">
|
||||
<button type="button" id="freigabebtn_<?php echo $zgvpruefung->prestudent_id ?>" class="btn btn-default freigabebtn" <?php echo $disabled ?>
|
||||
@@ -492,6 +469,7 @@
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</div><!-- /.modal-fade -->
|
||||
<?php endif; ?>
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.panel-footer -->
|
||||
<?php elseif (isset($zgvpruefung->prestudentstatus->status_kurzbz) && $zgvpruefung->prestudentstatus->status_kurzbz === 'Interessent'): ?>
|
||||
@@ -508,9 +486,66 @@
|
||||
</label>
|
||||
</div>
|
||||
</div><!-- /.row -->
|
||||
<div class="row">
|
||||
<div class="col-lg-4 text-left">
|
||||
<div class="input-group" id="absgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<select name="absgstatusgrund"
|
||||
class="d-inline float-right"
|
||||
required>
|
||||
<option value="null"
|
||||
selected="selected"><?php echo ucfirst($this->p->t('infocenter', 'absagegrund')) . '...' ?>
|
||||
</option>
|
||||
<?php foreach ($abwstatusgruende as $statusgrund): ?>
|
||||
<option value="<?php echo $statusgrund->statusgrund_id ?>"><?php echo $statusgrund->bezeichnung_mehrsprachig[0] ?></option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
<span class="input-group-btn">
|
||||
<button type="button"
|
||||
class="btn btn-default absageBtn" id="absagebtn_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('ui', 'absagen') ?>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- /.panel-footer -->
|
||||
<?php endif; //end if infoonly
|
||||
?>
|
||||
|
||||
<?php endif; ?>
|
||||
<div class="modal fade absageModal" id="absageModal_<?php echo $zgvpruefung->prestudent_id ?>"
|
||||
tabindex="-1"
|
||||
role="dialog"
|
||||
aria-labelledby="absageModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-hidden="true">
|
||||
×
|
||||
</button>
|
||||
<h4 class="modal-title"
|
||||
id="absageModalLabel"><?php echo $this->p->t('infocenter', 'absageBestaetigen') ?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<?php echo $this->p->t('infocenter', 'absageBestaetigenTxt') ?>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="modal">
|
||||
<?php echo $this->p->t('ui', 'abbrechen') ?>
|
||||
</button>
|
||||
<button class="btn btn-primary saveAbsage" id="saveAbsage_<?php echo $zgvpruefung->prestudent_id ?>">
|
||||
<?php echo $this->p->t('infocenter', 'interessentAbweisen') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.modal-content -->
|
||||
</div>
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
</div><!-- /.div collapse -->
|
||||
</div><!-- /.panel -->
|
||||
<?php
|
||||
|
||||
@@ -6,7 +6,7 @@ class Nation_widget extends DropdownWidget
|
||||
{
|
||||
// Nation
|
||||
$this->load->model('codex/Nation_model', 'NationModel');
|
||||
$this->NationModel->addOrder('nation_code');
|
||||
$this->NationModel->addOrder('kurztext');
|
||||
|
||||
$this->addSelectToModel($this->NationModel, 'nation_code', 'kurztext');
|
||||
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@
|
||||
</tr>
|
||||
<tr style="height:10%;" >
|
||||
<td align="center" valign="bottom">
|
||||
<div style="color:grey">Powered by <a href="http://www.fhcomplete.org" target="blank">FH Complete</a></div>
|
||||
<div style="color:grey">Powered by <a href="http://www.fhcomplete.info" target="blank">FH Complete</a></div>
|
||||
<br><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ if(isset($_GET['login']))
|
||||
</tr>
|
||||
<tr style="height:10%;" >
|
||||
<td align="center" valign="bottom">
|
||||
<div style="color:grey">Powered by <a href="http://www.fhcomplete.org" target="blank">FH Complete</a></div>
|
||||
<div style="color:grey">Powered by <a href="http://www.fhcomplete.info" target="blank">FH Complete</a></div>
|
||||
<br><br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -35,6 +35,8 @@ require_once('../../../include/datum.class.php');
|
||||
require_once('../../../include/mail.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/projektarbeit.class.php');
|
||||
require_once('../../../include/projektbetreuer.class.php');
|
||||
require_once('../../../include/sancho.inc.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
$db=false;
|
||||
@@ -116,6 +118,68 @@ if($projektarbeit_id==-1)
|
||||
if(!$projektarbeit_obj->load($projektarbeit_id))
|
||||
die('Fehler beim Laden der Projektarbeit');
|
||||
$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)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br> ";
|
||||
}
|
||||
|
||||
// Zweitbegutachter holen
|
||||
if($betreuerart=="Erstbegutachter")
|
||||
{
|
||||
$projektbetreuer = new projektbetreuer();
|
||||
$alleBegutachter = $projektbetreuer->getProjektbetreuer($projektarbeit_id);
|
||||
|
||||
if ($alleBegutachter)
|
||||
{
|
||||
$alleBegutachterResults = $projektbetreuer->result;
|
||||
|
||||
foreach ($alleBegutachterResults as $begutachter)
|
||||
{
|
||||
if ($begutachter->betreuerart_kurzbz == "Erstbegutachter")
|
||||
{
|
||||
$erstbetreuer_id = $begutachter->person_id;
|
||||
$zweitbegutachter = $projektbetreuer->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Mail mit Token an Zweitbegutachter senden
|
||||
if ($zweitbegutachter && $num_rows_sem >= 1 && isset($_GET['zweitbegutachtertoken']))
|
||||
{
|
||||
$qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid);
|
||||
if(!$result_std=$db->db_query($qry_std))
|
||||
{
|
||||
echo "<font color=\"#FF0000\">Student konnte nicht gefunden werden!</font><br> ";
|
||||
}
|
||||
else
|
||||
{
|
||||
$row_std=@$db->db_fetch_object($result_std);
|
||||
$mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std);
|
||||
|
||||
if ($mailres)
|
||||
{
|
||||
echo "<br><span style='color: green; '>".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."</span><br> ";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zweitbegutachter->email."</font><br> ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo '
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
@@ -124,6 +188,39 @@ echo '
|
||||
<title>'.$p->t('abgabetool/abgabetool').'</title>
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<style>
|
||||
#beurteilungheadertable td {
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#beurteilungheadertable form {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Bild statt submit button, styling entfernen*/
|
||||
button[name="zweitbegutachtertoken"] {
|
||||
background: none;
|
||||
color: inherit;
|
||||
border: none;
|
||||
font: inherit;
|
||||
cursor: pointer;
|
||||
outline: inherit;
|
||||
}
|
||||
#zweitbetrmailicon {
|
||||
top: 4px;
|
||||
height: 18px;
|
||||
width: 18px;
|
||||
position: relative;
|
||||
}
|
||||
#tokenmailicon {
|
||||
top: 2px;
|
||||
height: 15px;
|
||||
width: 15px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script language="Javascript">
|
||||
function confdel()
|
||||
@@ -356,25 +453,73 @@ while ($result_nam && $row_nam=$db->db_fetch_object($result_nam))
|
||||
{
|
||||
$studentenname=$row_nam->studnam;
|
||||
}
|
||||
$htmlstr .= "<table width=100%>\n";
|
||||
|
||||
$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><form action='../../../include/".EXT_FKT_PATH."/abgabe_lektor_benotung.php' title='Benotungsformular' target='_blank' method='GET'>";
|
||||
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
|
||||
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
|
||||
$htmlstr .= "<input type='submit' name='note' value='".$p->t('abgabetool/benoten')."'></form></td>";
|
||||
$htmlstr .= "<td width=10% align=center>";
|
||||
if ($num_rows_sem >= 1)
|
||||
{
|
||||
$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";
|
||||
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
|
||||
$htmlstr .= "<input type='submit' name='note' value='".$p->t('abgabetool/benoten')."'></form>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$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 .= "</form>";
|
||||
}
|
||||
$htmlstr .= "</td>";
|
||||
|
||||
if($betreuerart!="Zweitbegutachter")
|
||||
{
|
||||
$htmlstr .= "<td width=10% align=center><form action='https://www1.ephorus.com/' title='ephorus' target='_blank' method='GET'>";
|
||||
$htmlstr .= "<input type='submit' name='ephorus' value='".$p->t('abgabetool/plagiatspruefung')."'></form></td></tr>";
|
||||
$htmlstr .= "<td width=10% align=center><form action='https://technikum-wien.turnitin.com/sso/sp/redwood/saml/5IyfmBr2OcSIaWQTKlFCGj/start' title='plagiatsprüfung' target='_blank' method='GET'>";
|
||||
$htmlstr .= "<input type='submit' name='ephorus' value='".$p->t('abgabetool/plagiatspruefung')."'></form></td>";
|
||||
$htmlstr .= "<td> </td>\n";
|
||||
$htmlstr .= "<td> </td></tr>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlstr .= "<td> </td></tr>";
|
||||
}
|
||||
$htmlstr .= "<tr><td style='font-size:16px'>Titel: <b>".$db->convert_html_chars($titel)."<b></td><td></td><td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
|
||||
$htmlstr .= "<tr><td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td><td></td><td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
|
||||
$htmlstr .= "</tr>\n";
|
||||
if (isset($zweitbegutachter) && $zweitbegutachter) // wenn es Zweitbegutachter gibt
|
||||
{
|
||||
// Zweitbegutachter anzeigen
|
||||
$htmlstr .= "<tr>\n";
|
||||
$htmlstr .= "<td style='font-size:16px'>" . $p->t('abgabetool/zweitBegutachter') . ": <b>" . $zweitbegutachter->voller_name . "</b>";
|
||||
|
||||
// keine Mail -> Fehler anzeigen
|
||||
if (!isset($zweitbegutachter->email))
|
||||
$htmlstr .= " <img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
|
||||
|
||||
// Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
|
||||
if (isset($zweitbegutachter->email) && !isset($zweitbegutachter->uid) && $num_rows_sem >= 1)
|
||||
{
|
||||
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
|
||||
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
|
||||
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='" . $projektarbeit_id . "'>";
|
||||
$htmlstr .= "<input type='hidden' name='betreuerart' value='" . $betreuerart . "'>";
|
||||
$htmlstr .= " <a href='mailto:".$zweitbegutachter->email."'><img id='zweitbetrmailicon' src='../../../skin/images/email.png'
|
||||
title='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "' alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "'/></a>\n";
|
||||
$htmlstr .= " <button type='submit' name='zweitbegutachtertoken' title='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'>
|
||||
<img id='tokenmailicon' src='../../../skin/images/repeat.png' alt='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'/></button>\n";
|
||||
$htmlstr .= "</form>";
|
||||
}
|
||||
|
||||
$htmlstr .= "</td>\n";
|
||||
$htmlstr .= "<td></td>\n";
|
||||
$htmlstr .= "<td></td>\n";
|
||||
$htmlstr .= "</tr>\n";
|
||||
}
|
||||
$htmlstr .= "</table>\n";
|
||||
$htmlstr .= "<table style='width: 100%'><tr>";
|
||||
$htmlstr .= "<td><br><b>".$p->t('abgabetool/abgabetermine').":</b></td>\n";
|
||||
$htmlstr .= "</tr>\n";
|
||||
$htmlstr .= "</table>\n";
|
||||
$htmlstr .= "<br><b>".$p->t('abgabetool/abgabetermine').":</b>\n";
|
||||
$htmlstr .= "<table class='detail' style='padding-top:10px;' >\n";
|
||||
$htmlstr .= "<tr></tr>\n";
|
||||
$htmlstr .= "<tr>
|
||||
@@ -543,4 +688,58 @@ $htmlstr .= "</form>\n";
|
||||
$htmlstr .= "</table>\n";
|
||||
$htmlstr .= "</body></html>\n";
|
||||
echo $htmlstr;
|
||||
|
||||
/**
|
||||
* Mail zum Zweitbegutachter mit Info dass Projektarbeit zur Bewertung bereit ist, inklusive Zugangstoken wenn nötig.
|
||||
* @param object $zweitbegutachter
|
||||
* @param $int erstbegutachter_person_id
|
||||
* @param object $student
|
||||
* @return bool|projektbetreuer|void|null
|
||||
*/
|
||||
function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student)
|
||||
{
|
||||
if (!isset($zweitbegutachter->email) || $zweitbegutachter->email == '')
|
||||
return false;
|
||||
|
||||
// send Mail to 2. Begutachter
|
||||
$projektbetreuer = new projektbetreuer();
|
||||
|
||||
$projektbetreuer->generateZweitbegutachterToken($zweitbegutachter->person_id, $zweitbegutachter->projektarbeit_id);
|
||||
|
||||
if (!$projektbetreuer)
|
||||
return $projektbetreuer;
|
||||
|
||||
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($erstbegutachter_person_id, $zweitbegutachter->projektarbeit_id, $student->uid);
|
||||
|
||||
if ($zweitbetr)
|
||||
{
|
||||
$intern = isset($zweitbetr->uid);
|
||||
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung";
|
||||
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid;
|
||||
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
|
||||
|
||||
$maildata = array();
|
||||
$maildata['geehrt'] = "geehrte".($zweitbegutachter->anrede=="Herr"?"r":"");
|
||||
$maildata['anrede'] = $zweitbegutachter->anrede;
|
||||
$maildata['betreuer_voller_name'] = $zweitbegutachter->voller_name;
|
||||
$maildata['student_anrede'] = $student->anrede;
|
||||
$maildata['student_voller_name'] = trim($student->titelpre." ".$student->vorname." ".$student->nachname." ".$student->titelpost);
|
||||
$maildata['abgabetyp'] = isset($zweitbetr->abgabedatum) ? 'Endabgabe' : 'Abgabe';
|
||||
$maildata['parbeituebersichtlink'] = $intern ? "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>" : "";
|
||||
$maildata['bewertunglink'] = "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>";
|
||||
$maildata['token'] = isset($zweitbetr->zugangstoken) && !$intern ? "<p>Zugangstoken: ".$zweitbetr->zugangstoken."</p>" : "";
|
||||
|
||||
return sendSanchoMail(
|
||||
'ParbeitsbeurteilungEndupload',
|
||||
$maildata,
|
||||
$zweitbetr->email,
|
||||
"Masterarbeitsbetreuung",
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg'
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -99,7 +99,11 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb
|
||||
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
|
||||
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
|
||||
tbl_projektbetreuer.person_id AS betreuer_person_id,
|
||||
tbl_projekttyp.bezeichnung AS prjbez, *
|
||||
tbl_projekttyp.bezeichnung AS prjbez, *,
|
||||
lehre.tbl_projektbetreuer.note as note,
|
||||
public.tbl_benutzer.aktiv as aktiv,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
|
||||
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt
|
||||
FROM lehre.tbl_projektarbeit
|
||||
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
|
||||
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
|
||||
@@ -114,8 +118,6 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb
|
||||
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer'
|
||||
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter')
|
||||
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
|
||||
AND public.tbl_benutzer.aktiv
|
||||
AND lehre.tbl_projektarbeit.note IS NULL
|
||||
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
|
||||
|
||||
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
|
||||
@@ -155,7 +157,29 @@ else
|
||||
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
|
||||
$htmlstr1 .= $zweitbetreuer;
|
||||
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
|
||||
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
|
||||
|
||||
if (is_null($row->note) && $row->aktiv === 't')
|
||||
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
|
||||
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
|
||||
{
|
||||
$htmlstr .= "<td>";
|
||||
|
||||
if (!is_null($row->babgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
|
||||
|
||||
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "/";
|
||||
|
||||
if (!is_null($row->zweitbetreuer_abgeschickt))
|
||||
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
|
||||
|
||||
$htmlstr .= "</td>";
|
||||
} else
|
||||
{
|
||||
$htmlstr .= "<td></td>";
|
||||
}
|
||||
|
||||
|
||||
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
|
||||
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
|
||||
$htmlstr .= " <td align= center>";
|
||||
@@ -192,11 +216,11 @@ echo '
|
||||
<title>Abgabesystem_Studentensicht</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
|
||||
@@ -34,6 +34,8 @@ require_once('../../../include/mail.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/projektarbeit.class.php');
|
||||
require_once('../../../include/projektbetreuer.class.php');
|
||||
require_once('../../../include/sancho.inc.php');
|
||||
|
||||
$anzeigesprache = getSprache();
|
||||
$p = new phrasen($anzeigesprache);
|
||||
@@ -324,7 +326,6 @@ if($command=="update" && $error!=true)
|
||||
{
|
||||
if($row_zd=@$db->db_fetch_object($result_zd))
|
||||
{
|
||||
|
||||
$htmlstr = "<div>".$p->t('abgabetool/betreuer').": <b>".$db->convert_html_chars($betreuer)."</b><br>".$p->t('abgabetool/titel').": <b>".$db->convert_html_chars($titel)."<b><br><br></div>\n";
|
||||
$htmlstr .= "<table class='detail' style='padding-top:10px;'>\n";
|
||||
$htmlstr .= "<tr></tr>\n";
|
||||
@@ -397,7 +398,7 @@ if($command=="update" && $error!=true)
|
||||
echo $p->t('global/dateiNichtErfolgreichHochgeladen');
|
||||
}
|
||||
}
|
||||
//E-Mail an 1.Begutachter
|
||||
//E-Mail an 1.Begutachter und 2.Begutachter senden
|
||||
if($bid!='' && $bid!=NULL)
|
||||
{
|
||||
$qry_betr="SELECT distinct trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as first,
|
||||
@@ -422,15 +423,102 @@ 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)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br> ";
|
||||
}
|
||||
|
||||
$row_std=$db->db_fetch_object($result_std);
|
||||
|
||||
$mail = new mail($row_betr->mitarbeiter_uid."@".DOMAIN, "no-reply@".DOMAIN, "Bachelor-/Masterarbeitsbetreuung",
|
||||
"Sehr geehrte".($row_betr->anrede=="Herr"?"r":"")." ".$row_betr->anrede." ".$row_betr->first."!\n\n".($row_std->anrede)." ".trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost)." hat eine Abgabe vorgenommen.\n\n--------------------------------------------------------------------------\nDies ist ein vom Bachelor-/Masterarbeitsabgabesystem generiertes Info-Mail\nCis->Mein CIS->Projektarbeiten->Bachelor- und Masterarbeitsabgabe\n--------------------------------------------------------------------------");
|
||||
$mail->setReplyTo($user."@".DOMAIN);
|
||||
if(!$mail->send())
|
||||
// 1. Begutachter mail ohne Token
|
||||
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung";
|
||||
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid;
|
||||
$abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe';
|
||||
|
||||
$maildata = array();
|
||||
$maildata['geehrt'] = "geehrte".($row_betr->anrede=="Herr"?"r":"");
|
||||
$maildata['anrede'] = $row_betr->anrede;
|
||||
$maildata['betreuer_voller_name'] = $row_betr->first;
|
||||
$maildata['student_anrede'] = $row_std->anrede;
|
||||
$maildata['student_voller_name'] = trim($row_std->titelpre." ".$row_std->vorname." ".$row_std->nachname." ".$row_std->titelpost);
|
||||
$maildata['abgabetyp'] = $abgabetyp;
|
||||
$maildata['parbeituebersichtlink'] = "<p><a href='".APP_ROOT."cis/private/lehre/abgabe_lektor_frameset.html'>Zur Projektarbeitsübersicht</a></p>";
|
||||
$maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "<p><a href='$mail_fulllink'>Zur Beurteilung der Arbeit</a></p>" : "";
|
||||
$maildata['token'] = "";
|
||||
|
||||
$mailres = sendSanchoMail(
|
||||
'ParbeitsbeurteilungEndupload',
|
||||
$maildata,
|
||||
$row_betr->mitarbeiter_uid."@".DOMAIN,
|
||||
"Bachelor-/Masterarbeitsbetreuung",
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg',
|
||||
$user."@".DOMAIN);
|
||||
|
||||
if(!$mailres)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailBegutachter')."</font><br> ";
|
||||
}
|
||||
|
||||
// 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern
|
||||
if ($paabgabetyp_kurzbz == 'end')
|
||||
{
|
||||
$projektbetreuer = new projektbetreuer();
|
||||
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
|
||||
|
||||
if ($zweitbetr)
|
||||
{
|
||||
$tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id);
|
||||
|
||||
if (!$tokenGenRes)
|
||||
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br> ";
|
||||
|
||||
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
|
||||
|
||||
if (!$zweitbetr)
|
||||
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br> ";
|
||||
|
||||
$intern = isset($zweitbetr->uid);
|
||||
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
|
||||
|
||||
$zweitbetmaildata = array();
|
||||
$zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : "");
|
||||
$zweitbetmaildata['anrede'] = $zweitbetr->anrede;
|
||||
$zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name;
|
||||
$zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
|
||||
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
|
||||
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
|
||||
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
|
||||
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
|
||||
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $zweitbetr->zugangstoken . "</p>" : "";
|
||||
|
||||
$mailres = sendSanchoMail(
|
||||
'ParbeitsbeurteilungEndupload',
|
||||
$zweitbetmaildata,
|
||||
$zweitbetr->email,
|
||||
"Masterarbeitsbetreuung",
|
||||
'sancho_header_min_bw.jpg',
|
||||
'sancho_footer_min_bw.jpg',
|
||||
$user . "@" . DOMAIN
|
||||
);
|
||||
|
||||
if (!$mailres)
|
||||
{
|
||||
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br> ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -12,10 +12,13 @@
|
||||
* 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>,
|
||||
*
|
||||
* Authors:
|
||||
* Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
|
||||
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
|
||||
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
require_once ('../../../../config/cis.config.inc.php');
|
||||
require_once ('../../../../config/global.config.inc.php');
|
||||
@@ -306,6 +309,8 @@ foreach ($noten_obj->result as $row)
|
||||
{
|
||||
if(typeof(typ)=='undefined')
|
||||
typ = 'Termin2';
|
||||
var nn = document.getElementById(uid+"_nn").innerHTML;
|
||||
var vn = document.getElementById(uid+"_vn").innerHTML;
|
||||
var str = " <form name='nachpruefung_form'> <table style='width: 95%'>";
|
||||
str += "<tr><td colspan='2' align='right'><a href='#' onclick='closeDiv();'>X</a></td></tr>";
|
||||
|
||||
@@ -314,7 +319,7 @@ foreach ($noten_obj->result as $row)
|
||||
anlegendiv.style.top = y+"px";
|
||||
var x = getOffset('x'); x = x+300;
|
||||
anlegendiv.style.left = x+"px";
|
||||
str += "<tr><td colspan='2'><b><?php echo $p->t('benotungstool/pruefungAnlegenFuer');?> "+uid+":</b></td></tr>";
|
||||
str += "<tr><td colspan='2'><b><?php echo $p->t('benotungstool/pruefungAnlegenFuer');?> "+nn+" "+vn+":</b></td></tr>";
|
||||
str += "<tr><td><?php echo $p->t('global/datum');?>:</td>";
|
||||
str += "<td><input type='hidden' name='uid' value='"+uid+"'>";
|
||||
str += "<input type='hidden' name='le_id' value='"+lehreinheit_id+"'>";
|
||||
@@ -1166,8 +1171,8 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG
|
||||
$htmlstring .= '<tr class="liste' . ($i % 2) . '">
|
||||
<td><a href="mailto:' . $uid . '@' . DOMAIN . '"><img src="../../../../skin/images/button_mail.gif"></a></td>
|
||||
<td>' . $db->convert_html_chars($uid) . '</td>
|
||||
<td>' . $db->convert_html_chars($data['nachname']) . '</td>
|
||||
<td>' . $db->convert_html_chars($data['vorname']) . '</td>';
|
||||
<td id= '. $uid. "_nn". '>' . $db->convert_html_chars($data['nachname']) . '</td>
|
||||
<td id= '. $uid. "_vn". '>' . $db->convert_html_chars($data['vorname']) . '</td>';
|
||||
|
||||
// Bereits eingetragene Note ermitteln
|
||||
if ($lvgesamtnote = new lvgesamtnote($lvid, $uid, $stsem))
|
||||
|
||||
@@ -39,6 +39,7 @@ require_once('../../include/prestudent.class.php');
|
||||
require_once('../../include/dokument_export.class.php');
|
||||
require_once('../../include/person.class.php');
|
||||
require_once('../../include/webservicelog.class.php');
|
||||
require_once('../../include/projektarbeit.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
@@ -120,7 +121,7 @@ $params = 'xmlformat=xml';
|
||||
|
||||
//Admins duerfen Dokumente anderer Personen drucken
|
||||
if ($rechte->isBerechtigt('admin'))
|
||||
$user = $_GET['uid'];
|
||||
$user = isset($_GET['uid']) ? $_GET['uid'] : $user;
|
||||
|
||||
$params .= '&uid='.$user;
|
||||
if (isset($_GET['person_id']))
|
||||
@@ -139,6 +140,11 @@ if (isset($_GET['all']))
|
||||
$params .= '&all=1';
|
||||
if (isset($_GET['xsl_oe_kurzbz']))
|
||||
$params .= '&xsl_oe_kurzbz='. $_GET['xsl_oe_kurzbz'];
|
||||
if (isset($_GET['projektarbeit_id']))
|
||||
$params .= '&projektarbeit_id='. $_GET['projektarbeit_id'];
|
||||
if (isset($_GET['betreuerart_kurzbz']))
|
||||
$params .= '&betreuerart_kurzbz='. $_GET['betreuerart_kurzbz'];
|
||||
|
||||
|
||||
// Logeintrag bei Download von Zahlungsbestaetigungen
|
||||
if (isset($_GET['xsl']) && $_GET['xsl'] == 'Zahlung')
|
||||
@@ -150,7 +156,7 @@ if (isset($_GET['xsl']) && $_GET['xsl'] == 'Zahlung')
|
||||
$log->request_id = isset($_GET['buchungsnummern']) && !empty($_GET['buchungsnummern']) ? $_GET['buchungsnummern'] : NULL;
|
||||
$log->beschreibung = 'Zahlungsbestaetigungsdownload';
|
||||
$log->request_data = $requestdata;
|
||||
$log->execute_user = $user;
|
||||
$log->execute_user = get_uid();
|
||||
|
||||
$log->save(true);
|
||||
}
|
||||
@@ -183,9 +189,40 @@ if (isset($_GET['output']) && $_GET['output'] != 'pdf')
|
||||
else
|
||||
$output = 'pdf';
|
||||
|
||||
if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung'))
|
||||
{
|
||||
if (!isset($_GET['betreuerart_kurzbz']) || !isset($_GET['person_id']) || !isset($_GET['projektarbeit_id']))
|
||||
die('Fehlerhafte Parameteruebergabe');
|
||||
|
||||
$projektarbeit = new projektarbeit();
|
||||
$projektarbeit->load($_GET['projektarbeit_id']);
|
||||
|
||||
$betreuer = new person();
|
||||
$betreuer->getPersonFromBenutzer($user);
|
||||
|
||||
//Überprüft ob es der Betreuer oder der Student ist
|
||||
if ($betreuer->person_id !== $_GET['person_id'] && $projektarbeit->student_uid !== $user && !$rechte->isBerechtigt('assistenz'))
|
||||
die("<html><body><h3>Sie haben keine Berechtigung für diese Aktion.</h3></body></html>");
|
||||
|
||||
switch ($_GET['betreuerart_kurzbz'])
|
||||
{
|
||||
case 'Begutachter' :
|
||||
$xsl = 'ProjektBeurteilungBA';
|
||||
break;
|
||||
case 'Erstbegutachter' :
|
||||
$xsl = 'ProjektBeurteilungMAErst';
|
||||
break;
|
||||
case 'Zweitbegutachter' :
|
||||
$xsl = 'ProjektBeurteilungMAZweit';
|
||||
break;
|
||||
}
|
||||
|
||||
$allowed = true;
|
||||
}
|
||||
|
||||
|
||||
$konto = new konto();
|
||||
if (((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin'))
|
||||
if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt('admin')) || (isset($allowed) && $allowed === true))
|
||||
{
|
||||
$buchungstypen = array();
|
||||
if (defined("CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN"))
|
||||
|
||||
@@ -44,6 +44,7 @@ require_once('../../../include/addon.class.php');
|
||||
require_once('../../../include/gruppe.class.php');
|
||||
require_once('../../../include/adresse.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/bisverwendung.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
@@ -271,6 +272,22 @@ if (!$ansicht)
|
||||
|
||||
}
|
||||
|
||||
if (!$ansicht)
|
||||
{
|
||||
if ($is_employee)
|
||||
{
|
||||
$verwendung = new bisverwendung();
|
||||
if($verwendung->getLastVerwendung($uid))
|
||||
{
|
||||
if (!$verwendung->hauptberuflich)
|
||||
{
|
||||
echo 'Hauptberuf: '. $verwendung->hauptberuf;
|
||||
}
|
||||
}
|
||||
echo "<br><br>";
|
||||
}
|
||||
}
|
||||
|
||||
if (!$ansicht)
|
||||
{
|
||||
$adresse = new adresse();
|
||||
|
||||
@@ -217,7 +217,7 @@ if ($num_rows > 0)
|
||||
&& CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
|
||||
{
|
||||
$vertrag = new vertrag();
|
||||
if (!$vertrag->isVertragErteiltLV($row->lehrveranstaltung_id, $stdsem, $user))
|
||||
if (!$vertrag->isVertragErteiltLE($row->lehreinheit_id, $stdsem, $uid))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
require_once('../../../include/functions.inc.php');
|
||||
@@ -28,6 +29,13 @@ require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/addon.class.php');
|
||||
require_once('../../../include/mail.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/globals.inc.php');
|
||||
require_once('../../../include/sprache.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p = new phrasen($sprache);
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
@@ -43,16 +51,16 @@ else
|
||||
{
|
||||
//Bis August das aktuelle Jahr anzeigen
|
||||
//Ab September das naechste
|
||||
if(date('m')<9)
|
||||
if (date('m') < 9)
|
||||
$year = date('Y');
|
||||
else
|
||||
$year = date('Y')+1;
|
||||
$year = date('Y') + 1;
|
||||
}
|
||||
|
||||
if(isset($_GET['uid']))
|
||||
$uid=$_GET['uid'];
|
||||
if (isset($_GET['uid']))
|
||||
$uid = $_GET['uid'];
|
||||
else
|
||||
$uid='';
|
||||
$uid = '';
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
@@ -98,50 +106,74 @@ echo '
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
$mitarbeiter->getUntergebene($user);
|
||||
|
||||
if(count($mitarbeiter->untergebene)==0 && !$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid'))
|
||||
if (count($mitarbeiter->untergebene) == 0 && !$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid'))
|
||||
die('Es sind Ihnen keine Mitarbeiter zugeteilt für die sie den Urlaub freigeben dürfen');
|
||||
$untergebene = '';
|
||||
foreach ($mitarbeiter->untergebene as $row)
|
||||
{
|
||||
if($untergebene!='')
|
||||
$untergebene.=',';
|
||||
if ($untergebene != '')
|
||||
$untergebene .= ',';
|
||||
$untergebene .= $db->db_add_param($row);
|
||||
}
|
||||
|
||||
if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid'))
|
||||
if ($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid'))
|
||||
{
|
||||
if($untergebene!='')
|
||||
$untergebene.=',';
|
||||
if ($untergebene != '')
|
||||
$untergebene .= ',';
|
||||
$untergebene .= $db->db_add_param($uid);
|
||||
}
|
||||
$qry = "SELECT * FROM public.tbl_person JOIN public.tbl_benutzer USING(person_id) WHERE uid in($untergebene)";
|
||||
|
||||
$mitarbeiter = array();
|
||||
if($result = $db->db_query($qry))
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
while ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$mitarbeiter[$row->uid]['vorname']=$row->vorname;
|
||||
$mitarbeiter[$row->uid]['nachname']=$row->nachname;
|
||||
$mitarbeiter[$row->uid]['titelpre']=$row->titelpre;
|
||||
$mitarbeiter[$row->uid]['titelpost']=$row->titelpost;
|
||||
$mitarbeiter[$row->uid]['vorname'] = $row->vorname;
|
||||
$mitarbeiter[$row->uid]['nachname'] = $row->nachname;
|
||||
$mitarbeiter[$row->uid]['titelpre'] = $row->titelpre;
|
||||
$mitarbeiter[$row->uid]['titelpost'] = $row->titelpost;
|
||||
}
|
||||
}
|
||||
if($uid!='' && !isset($mitarbeiter[$uid]) && $uid!=$user && !$rechte->isBerechtigt('admin'))
|
||||
if ($uid != '' && !isset($mitarbeiter[$uid]) && $uid != $user && !$rechte->isBerechtigt('admin'))
|
||||
die('Sie haben keine Berechtigung fuer diesen Mitarbeiter');
|
||||
|
||||
//Freigeben eines Urlaubes
|
||||
if(isset($_GET['action']) && $_GET['action']=='freigabe')
|
||||
if (isset($_GET['action']) && $_GET['action'] == 'freigabe')
|
||||
{
|
||||
$zeitsperre = new zeitsperre();
|
||||
if($zeitsperre->load($_GET['id']))
|
||||
if ($zeitsperre->load($_GET['id']))
|
||||
{
|
||||
if(isset($mitarbeiter[$zeitsperre->mitarbeiter_uid]))
|
||||
if (isset($mitarbeiter[$zeitsperre->mitarbeiter_uid]))
|
||||
{
|
||||
$zeitsperre->freigabeamum = date('Y-m-d H:i:s');
|
||||
$zeitsperre->freigabevon = $user;
|
||||
if(!$zeitsperre->save(false))
|
||||
if (!$zeitsperre->save(false))
|
||||
{
|
||||
echo "<b>Fehler bei der Freigabe: $zeitsperre->errormsg</b>";
|
||||
}
|
||||
|
||||
//Bestätigungsmail an Mitarbeiter*in
|
||||
$to = $zeitsperre->mitarbeiter_uid. '@'.DOMAIN;
|
||||
$person = new person();
|
||||
$fullNameVG = $person->getFullNameFromBenutzer($user);
|
||||
$fullNameMA = $person->getFullNameFromBenutzer($zeitsperre->mitarbeiter_uid);
|
||||
$from = 'noreply@'.DOMAIN;
|
||||
$subject = $p->t('urlaubstool/urlaubsfreigabe'). date("d.m.Y", strtotime($zeitsperre->vondatum)). " ".
|
||||
$p->t('urlaubstool/bis'). " ". date("d.m.Y", strtotime($zeitsperre->bisdatum));
|
||||
$text = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n";
|
||||
$text .= $p->t('urlaubstool/urlaubVon')." ".date("d.m.Y", strtotime($zeitsperre->vondatum))." ".
|
||||
$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($zeitsperre->bisdatum));
|
||||
$text .= $p->t('urlaubstool/urlaubBis', array($fullNameVG));
|
||||
$text .= "\n". "\n". $p->t('urlaubstool/sieKoennenDiesenUnterFolgenderAdresseEinsehen');
|
||||
$text .= "\n". APP_ROOT. 'cis/private/profile/urlaubstool.php';
|
||||
|
||||
$mail = new mail($to, $from, $subject, $text);
|
||||
|
||||
if ($mail->send())
|
||||
{
|
||||
echo "<span style='color:green;'>".$p->t('urlaubstool/bestaetigungsmailWurdeVersandt', array($fullNameMA))."</span>";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -152,40 +184,38 @@ if(isset($_GET['action']) && $_GET['action']=='freigabe')
|
||||
{
|
||||
echo '<b>Die Zeitsperre konnte nicht geladen werden</b>';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Monat zeichenen
|
||||
//Monat zeichnen
|
||||
function draw_monat($monat)
|
||||
{
|
||||
global $untergebene, $mitarbeiter, $year, $datum_obj, $uid;
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Fehler beim Oeffnen der Datenbankverbindung');
|
||||
|
||||
echo '<td style="border: 1px solid black; height:100px; width: 30%" valign="top">';
|
||||
echo '<center><b>';
|
||||
echo date('F',mktime(0,0,0,$monat,1,date('Y')));
|
||||
echo " ".($monat>8?$year-1:$year);
|
||||
echo date('F', mktime(0,0,0,$monat,1,date('Y')));
|
||||
echo " ".($monat > 8?$year-1:$year);
|
||||
echo '</b></center>';
|
||||
//Alle Anzeigen bei denen das von- oder bisdatum in dieses monat fallen
|
||||
$qry = "SELECT * FROM campus.tbl_zeitsperre WHERE zeitsperretyp_kurzbz='Urlaub'
|
||||
AND
|
||||
(
|
||||
(date_part('month', vondatum)='$monat' AND date_part('year', vondatum)='".($monat>8?$year-1:$year)."')
|
||||
(date_part('month', vondatum)='$monat' AND date_part('year', vondatum)='".($monat > 8?$year - 1:$year)."')
|
||||
OR
|
||||
(date_part('month', bisdatum)='$monat' AND date_part('year', bisdatum)='".($monat>8?$year-1:$year)."')
|
||||
(date_part('month', bisdatum)='$monat' AND date_part('year', bisdatum)='".($monat > 8?$year - 1:$year)."')
|
||||
)";
|
||||
if($uid=='')
|
||||
$qry.=" AND mitarbeiter_uid in($untergebene)";
|
||||
if($uid == '')
|
||||
$qry.= " AND mitarbeiter_uid in($untergebene)";
|
||||
else
|
||||
$qry.=" AND mitarbeiter_uid=".$db->db_add_param($uid);
|
||||
$qry.= " AND mitarbeiter_uid=". $db->db_add_param($uid);
|
||||
$qry.="ORDER BY vondatum, mitarbeiter_uid";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
if ($result = $db->db_query($qry))
|
||||
{
|
||||
while($row = $db->db_fetch_object($result))
|
||||
while ($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$vertretung = new benutzer($row->vertretung_uid);
|
||||
$freigabe='';
|
||||
@@ -207,7 +237,7 @@ function draw_monat($monat)
|
||||
}
|
||||
|
||||
//Jahr mit Pfeilen zum blaettern anzeigen
|
||||
if($uid!='')
|
||||
if ($uid!='')
|
||||
{
|
||||
echo '<table width="100%"><tr><td style="width:33%">';
|
||||
echo "<a href='".$_SERVER['PHP_SELF']."?year=$year' class='Item'>Alle Mitarbeiter anzeigen</a><br></td>";
|
||||
@@ -232,16 +262,16 @@ echo '<br>';
|
||||
//Tabelle mit den Monaten ausgeben
|
||||
echo '<table cellspacing=0 width="100%" style="border: 1px solid black;"><tr>';
|
||||
$monat=9;
|
||||
for($i=0;$i<12;$i++)
|
||||
for($i = 0;$i < 12;$i++)
|
||||
{
|
||||
if($i%3==0)
|
||||
if ($i%3 == 0)
|
||||
{
|
||||
echo '</tr><tr>';
|
||||
}
|
||||
draw_monat($monat);
|
||||
$monat++;
|
||||
if($monat>12)
|
||||
$monat=1;
|
||||
if ($monat > 12)
|
||||
$monat = 1;
|
||||
}
|
||||
echo '</tr></table>
|
||||
|
||||
|
||||
@@ -464,7 +464,6 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
|
||||
{
|
||||
if($hgfarbe[$i]!='#FFFC7F' && $hgfarbe[$i]!='#bbb' && $hgfarbe[$i]!='#CDDDEE')
|
||||
{
|
||||
|
||||
$hgfarbe[$i]='#E9ECEE';
|
||||
$datensatz[$i]=0;
|
||||
$freigabevon[$i]=$row->freigabevon;
|
||||
@@ -761,11 +760,25 @@ for ($i=0;$i<6;$i++)
|
||||
echo "\n";
|
||||
if(strlen(stristr($tage[$j+7*$i],"."))>0)
|
||||
{
|
||||
echo '<td align="center" valign="center" style="font-size:16px; color:grey; background-color: '.$hgfarbe[$j+7*$i].'">';
|
||||
if($j%6==0 || $j==7)
|
||||
{
|
||||
echo '<td align="center" valign="center" style="font-size:16px; color:grey; background-color:#A5AFB6">';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<td align="center" valign="center" style="font-size:16px; color:grey; background-color: ' . $hgfarbe[$j + 7 * $i] . '">';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<td align="center" valign="center" style="background-color: '.$hgfarbe[$j+7*$i].'">';
|
||||
if($j%6==0 || $j==7)
|
||||
{
|
||||
echo '<td align="center" valign="center" style="font-size:; color:; background-color:#A5AFB6">';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<td align="center" valign="center" style="background-color: ' . $hgfarbe[$j + 7 * $i] . '">';
|
||||
}
|
||||
}
|
||||
if($tage[$j+7*$i]!='')
|
||||
{
|
||||
@@ -781,11 +794,14 @@ for ($i=0;$i<6;$i++)
|
||||
echo '<b>'.$tage[$j+7*$i].'</b><br>';
|
||||
if(strlen(stristr($tage[$j+7*$i],"."))>0)
|
||||
{
|
||||
echo '<input type="checkbox" name="wtag[]" value="'.date("Y-m-d",mktime(0, 0, 0, substr($tage[$j+7*$i],3,2) , substr($tage[$j+7*$i],0,2), substr($tage[$j+7*$i],6,4))).'"></td>';
|
||||
echo '<input type="checkbox" name="wtag[]"
|
||||
value="'.date("Y-m-d",mktime(0, 0, 0, substr($tage[$j+7*$i],3,2) , substr($tage[$j+7*$i],0,2), substr($tage[$j+7*$i],6,4))).'"
|
||||
id="'.date("d.m.Y",mktime(0, 0, 0, substr($tage[$j+7*$i],3,2) , substr($tage[$j+7*$i],0,2), substr($tage[$j+7*$i],6,4))).'"></td>';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<input type="checkbox" name="wtag[]" value="'.date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $tage[$j+7*$i], $jahre[$wjahr])).'"></td>';
|
||||
echo '<input type="checkbox" name="wtag[]" value="'.date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $tage[$j+7*$i], $jahre[$wjahr])).'"
|
||||
id="'.date("d.m.Y",mktime(0, 0, 0, ($wmonat+1) , $tage[$j+7*$i], $jahre[$wjahr])).'"></td>';
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -112,13 +112,14 @@ foreach($addon_obj->result as $addon)
|
||||
// Wenn Seite fertig geladen ist Addons aufrufen
|
||||
echo '
|
||||
<script>
|
||||
let holiDays =[];
|
||||
$( document ).ready(function()
|
||||
{
|
||||
if(typeof addon !== \'undefined\')
|
||||
{
|
||||
for(i in addon)
|
||||
{
|
||||
addon[i].init("cis/private/profile/urlaubstool.php", {uid:\''.$uid.'\'});
|
||||
addon[i].init("cis/private/profile/zeitsperre_resturlaub.php", {uid:\''.$uid.'\', holiDays: holiDays});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,6 +127,7 @@ $( document ).ready(function()
|
||||
changeMonth: true,
|
||||
changeYear: true,
|
||||
dateFormat: "dd.mm.yy",
|
||||
beforeShowDay: setHoliDays
|
||||
});
|
||||
|
||||
$( ".timepicker" ).timepicker({
|
||||
@@ -137,13 +139,31 @@ $( document ).ready(function()
|
||||
});
|
||||
|
||||
});
|
||||
</script>';
|
||||
?>
|
||||
<style>
|
||||
.dd_breit
|
||||
{
|
||||
width:460px;
|
||||
// set holidays function which is configured in beforeShowDay
|
||||
function setHoliDays(date) {
|
||||
for (i = 0; i < holiDays.length; i++) {
|
||||
if (date.getFullYear() == holiDays[i][0]
|
||||
&& date.getMonth() == holiDays[i][1] - 1
|
||||
&& date.getDate() == holiDays[i][2]) {
|
||||
return [true, "holiday", ""];
|
||||
}
|
||||
}
|
||||
return [true, ""];
|
||||
}
|
||||
</script>';
|
||||
|
||||
?>
|
||||
<style type="text/css">
|
||||
.dd_breit
|
||||
{
|
||||
width:460px;
|
||||
}
|
||||
|
||||
.ui-datepicker td.holiday a, .ui-datepicker td.holiday a:hover
|
||||
{
|
||||
background: none #FFEBAF;
|
||||
border: 1px solid #BF5A0C;
|
||||
}
|
||||
</style>
|
||||
<script language="Javascript">
|
||||
function conf_del()
|
||||
@@ -180,7 +200,7 @@ function checkdatum()
|
||||
return false;
|
||||
}
|
||||
|
||||
var Datum, Tag, Monat,Jahr,vonDatum,bisDatum;
|
||||
var Datum, Tag, Monat,Jahr,vonDatum,bisDatum, diff;
|
||||
|
||||
Datum=document.getElementById('vondatum').value;
|
||||
Tag=Datum.substring(0,2);
|
||||
@@ -210,12 +230,23 @@ function checkdatum()
|
||||
|
||||
bisDatum=Jahr+''+Monat+''+Tag;
|
||||
|
||||
diff=bisDatum-vonDatum;
|
||||
|
||||
if (vonDatum>bisDatum)
|
||||
{
|
||||
alert('<?php echo $p->t('zeitsperre/vonDatum');?> '+ document.getElementById('vondatum').value+ ' <?php echo $p->t('zeitsperre/istGroesserAlsBisDatum');?> '+document.getElementById('bisdatum').value);
|
||||
document.getElementById('vondatum').focus();
|
||||
return false;
|
||||
}
|
||||
else if (diff>14)
|
||||
{
|
||||
Check = confirm('<?php echo $p->t('zeitaufzeichnung/zeitraumAuffallendHoch');?>');
|
||||
document.getElementById('bisdatum').focus();
|
||||
if (Check == false)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -254,6 +285,8 @@ function showHideBezeichnungDropDown()
|
||||
document.getElementById('resturlaub').style.visibility = 'visible';
|
||||
else
|
||||
document.getElementById('resturlaub').style.visibility = 'hidden';
|
||||
|
||||
showHideStudeDropDown()
|
||||
}
|
||||
|
||||
function setBisDatum()
|
||||
@@ -261,6 +294,26 @@ function setBisDatum()
|
||||
document.zeitsperre_form.bisdatum.value = document.zeitsperre_form.vondatum.value;
|
||||
}
|
||||
|
||||
function showHideStudeDropDown()
|
||||
{
|
||||
var dd = document.zeitsperre_form.zeitsperretyp_kurzbz;
|
||||
|
||||
if (dd.options[dd.selectedIndex].value == 'ZA'
|
||||
|| dd.options[dd.selectedIndex].value == 'Urlaub'
|
||||
|| dd.options[dd.selectedIndex].value == 'Krank'
|
||||
|| dd.options[dd.selectedIndex].value == 'DienstF'
|
||||
|| dd.options[dd.selectedIndex].value == 'DienstV')
|
||||
{
|
||||
document.getElementById('vonStd').style.visibility = 'hidden';
|
||||
document.getElementById('bisStd').style.visibility = 'hidden';
|
||||
}
|
||||
else
|
||||
{
|
||||
document.getElementById('vonStd').style.visibility = 'visible';
|
||||
document.getElementById('bisStd').style.visibility = 'visible';
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@@ -673,7 +726,7 @@ if($result = $db->db_query($qry))
|
||||
}
|
||||
$content_form.= '</SELECT></td></tr>';
|
||||
$content_form.= '<tr><td>'.$p->t('global/bezeichnung').'</td><td colspan="2"><span id="dienstv_span"><input'.$style.' type="text" size="32" name="bezeichnung" maxlength="32" value="'.$zeitsperre->bezeichnung.'"'.$readonly.'></span></td></tr>';
|
||||
$content_form.= '<tr><td>'.$p->t('global/von').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="vondatum" id="vondatum" value="'.($zeitsperre->vondatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->vondatum)):(!isset($_POST['vondatum'])?date('d.m.Y'):$_POST['vondatum'])).'"'.$readonly.'> <a href="javascript:void(0);" onClick="setBisDatum()">⇓</a></td><td style="text-align:right;"> ';
|
||||
$content_form.= '<tr><td>'.$p->t('global/von').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="vondatum" id="vondatum" value="'.($zeitsperre->vondatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->vondatum)):(!isset($_POST['vondatum'])?date('d.m.Y'):$_POST['vondatum'])).'"'.$readonly.'> <a href="javascript:void(0);" onClick="setBisDatum()">⇓</a></td><td id="vonStd" style="text-align:right;"> ';
|
||||
//dropdown fuer vonstunde
|
||||
$content_form.= $p->t('zeitsperre/stundeInklusive');
|
||||
|
||||
@@ -695,7 +748,7 @@ for($i=0;$i<$num_rows_stunde;$i++)
|
||||
|
||||
$content_form.= "</SELECT></td></tr>";
|
||||
|
||||
$content_form.= '<tr><td>'.$p->t('global/bis').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="bisdatum" id="bisdatum" value="'.($zeitsperre->bisdatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->bisdatum)):(!isset($_POST['bisdatum'])?date('d.m.Y'):$_POST['bisdatum'])).'"'.$readonly.'></td><td style="text-align:right;"> ';
|
||||
$content_form.= '<tr><td>'.$p->t('global/bis').'</td><td><input'.$style.' type="text" '.$class.' size="10" maxlength="10" name="bisdatum" id="bisdatum" value="'.($zeitsperre->bisdatum!=''?date('d.m.Y',$datum_obj->mktime_fromdate($zeitsperre->bisdatum)):(!isset($_POST['bisdatum'])?date('d.m.Y'):$_POST['bisdatum'])).'"'.$readonly.'></td><td id="bisStd" style="text-align:right;"> ';
|
||||
//dropdown fuer bisstunde
|
||||
$content_form.= $p->t('zeitsperre/stundeInklusive');
|
||||
$content_form.= " <SELECT name='bisstunde'$style>\n";
|
||||
@@ -749,12 +802,13 @@ $content_form.= '<td style="text-align:right;">';
|
||||
|
||||
if(isset($_GET['type']) && $_GET['type']=='edit')
|
||||
$content_form.= "<input type='submit' name='submit_zeitsperre' value='".$p->t('global/speichern')."'>";
|
||||
|
||||
else
|
||||
$content_form.= "<input type='submit' name='submit_zeitsperre' value='".$p->t('global/hinzufuegen')."'>";
|
||||
$content_form.= '</td></tr>';
|
||||
|
||||
$content_form .= '<tr><td colspan="3"> </td></tr>';
|
||||
$content_form.= "<tr><td colspan='3' style='color:red'>".$p->t('zeitsperre/achtungEsWerdenAlleEingegebenenTage')."</td></tr>";
|
||||
$content_form.= "<tr><td colspan='3' style='color:#ff0000'>" .$p->t('zeitsperre/achtungEsWerdenAlleEingegebenenTage')."</td></tr>";
|
||||
$content_form.= '</table></form>';
|
||||
|
||||
echo '<table width="100%">';
|
||||
@@ -774,3 +828,4 @@ echo '</table>';
|
||||
</div>
|
||||
<body>
|
||||
</html>
|
||||
<?php echo '<script>showHideStudeDropDown();</script>'; ?>
|
||||
|
||||
@@ -91,20 +91,20 @@ if($aktion!='zip')
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
|
||||
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
|
||||
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
|
||||
<script src="../../../vendor/components/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
|
||||
<link rel="stylesheet" href="../../../include/js/tablesort/table.css" type="text/css">
|
||||
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>';
|
||||
include('../../../include/meta/jquery.php');
|
||||
include('../../../include/meta/jquery-tablesorter.php');
|
||||
echo '
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
$("#t1").tablesorter(
|
||||
{
|
||||
sortList: [[5,0]],
|
||||
widgets: ["zebra"]
|
||||
widgets: ["zebra"],
|
||||
headers: {1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
/* kCopyright (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
|
||||
@@ -114,6 +114,8 @@ else
|
||||
$gesperrt_bis = '2015-08-31';
|
||||
|
||||
$sperrdatum = date('c', strtotime($gesperrt_bis));
|
||||
$datumjetzt = strtotime("+5 weeks");
|
||||
$limitdatum = date('c', $datumjetzt);
|
||||
|
||||
// Uses urlencode to avoid XSS issues
|
||||
$zeitaufzeichnung_id = urlencode(isset($_GET['zeitaufzeichnung_id'])?$_GET['zeitaufzeichnung_id']:'');
|
||||
@@ -166,6 +168,12 @@ if(isset($_POST['export']))
|
||||
}
|
||||
}
|
||||
|
||||
//CSV export für Übersicht zugeteilter Projekte - Konflikt mit normalen HTML headern deshalb weiter vorne
|
||||
if(isset($_POST['projektübersichtexport']))
|
||||
{
|
||||
exportProjectOverviewAsCSV($user, ',');
|
||||
}
|
||||
|
||||
echo '<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
@@ -213,6 +221,7 @@ echo '
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function()
|
||||
{
|
||||
resetProjekt()
|
||||
$( ".datepicker_datum" ).datepicker({
|
||||
changeMonth: true,
|
||||
changeYear: true,
|
||||
@@ -459,6 +468,7 @@ echo '
|
||||
document.getElementById("bis_datum").focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -506,6 +516,12 @@ echo '
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function resetProjekt()
|
||||
{
|
||||
$("#projekt").val("");
|
||||
$("#projektphaseformgroup").hide();
|
||||
}
|
||||
|
||||
function getProjektphasen(projekt_kurzbz)
|
||||
{
|
||||
@@ -535,7 +551,13 @@ echo '
|
||||
var projphasenhtml = "";
|
||||
for (var i = 0; i < json.length; i++)
|
||||
{
|
||||
projphasenhtml += "<option value = \'" + json[i].projektphase_id + "\'>" + json[i].bezeichnung + "<\/option>";
|
||||
projphasenhtml += "<option value = \'" + json[i].projektphase_id + "\'>";
|
||||
projphasenhtml += json[i].bezeichnung;
|
||||
if(json[i].start != \'\' && json[i].ende !=\'\')
|
||||
{
|
||||
projphasenhtml += " ( "+json[i].start+" - "+json[i].ende+" )";
|
||||
}
|
||||
projphasenhtml += "<\/option>";
|
||||
}
|
||||
|
||||
$("#projektphase").append(projphasenhtml);
|
||||
@@ -673,6 +695,25 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
{
|
||||
$zeit = new zeitaufzeichnung();
|
||||
|
||||
$projects_of_user = new projekt();
|
||||
$projects= $projects_of_user->getProjekteListForMitarbeiter($user);
|
||||
$project_kurzbz_array = array();
|
||||
|
||||
$projektph_of_user = new projektphase();
|
||||
$projektphasen = $projektph_of_user->getProjectphaseForMitarbeiter($user);
|
||||
$projectphasen_kurzbz_array = array();
|
||||
|
||||
foreach($projects as $prjct)
|
||||
{
|
||||
array_push($project_kurzbz_array, (string) $prjct->projekt_kurzbz);
|
||||
}
|
||||
foreach ($projektphasen as $pp)
|
||||
{
|
||||
array_push($projectphasen_kurzbz_array, (string) $pp->projektphase_id);
|
||||
}
|
||||
|
||||
$projectphase = new projektphase();
|
||||
|
||||
if ($_FILES['csv']['error'] == 0 && isset($_POST['import']))
|
||||
{
|
||||
$name = $_FILES['csv']['name'];
|
||||
@@ -689,108 +730,134 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$anzahl = 0;
|
||||
$importtage_array = array();
|
||||
$ende_vorher = date('Y-m-d H:i:s');
|
||||
|
||||
while(($data = fgetcsv($handle, 1000, ';', '"')) !== FALSE)
|
||||
{
|
||||
if($data[0] == $user)
|
||||
{
|
||||
if (!isset($data[5]))
|
||||
$data[5] = NULL;
|
||||
if (!isset($data[6]))
|
||||
$data[6] = NULL;
|
||||
if (!isset($data[7]))
|
||||
$data[7] = NULL;
|
||||
if (!isset($data[8]))
|
||||
$data[8] = NULL;
|
||||
if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
||||
//elseif (isset($data[8]) && ( filter_var($data[8], FILTER_VALIDATE_INT) === false ))
|
||||
//{
|
||||
// echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Service ID ist keine Zahl ('.$data[8].')</b></span><br>';
|
||||
//}
|
||||
elseif (checkVals($data[5],$data[6],$data[7],$data[8]))
|
||||
if($data[0] == $user){
|
||||
if(!empty($data[6]) && !in_array($data[6], $project_kurzbz_array) && empty($data[7]))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')</b></span><br>';
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgendem Projekt entweder nicht zugewiesen sind oder das Projekt schon abgeschlossen wurde: ('.$data[6].')</b></span><br>';
|
||||
}
|
||||
elseif(!empty($data[7]) && !in_array($data[7], $projectphasen_kurzbz_array))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da Sie folgender Projektphase entweder nicht zugewiesen sind oder die Projektphase schon abgeschlossen wurde: ('.$data[7].')</b></span><br>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($data[1] == 'LehreIntern')
|
||||
$data[1] = 'Lehre';
|
||||
$zeit->new = true;
|
||||
$zeit->beschreibung = NULL;
|
||||
$zeit->oe_kurzbz_1 = NULL;
|
||||
$zeit->projekt_kurzbz = NULL;
|
||||
$zeit->projektphase_id = NULL;
|
||||
$zeit->service_id = NULL;
|
||||
$vonCSV = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
$bisCSV = $datum->formatDatum($data[3], $format='Y-m-d');
|
||||
$dateVonCSV = new DateTime($vonCSV);
|
||||
$dateBisCSV = new DateTime($bisCSV);
|
||||
|
||||
$zeit->insertamum = date('Y-m-d H:i:s');
|
||||
$zeit->updateamum = date('Y-m-d H:i:s');
|
||||
$zeit->updatevon = $user;
|
||||
$zeit->insertvon = $user;
|
||||
$zeit->uid = $data[0];
|
||||
$zeit->aktivitaet_kurzbz = $data[1];
|
||||
$zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
|
||||
$zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
|
||||
if (isset($data[4]))
|
||||
$zeit->beschreibung = $data[4];
|
||||
if (isset($data[5]))
|
||||
$zeit->oe_kurzbz_1 = $data[5];
|
||||
if (isset($data[6]))
|
||||
$zeit->projekt_kurzbz = $data[6];
|
||||
if (isset($data[7]))
|
||||
$zeit->projektphase_id = $data[7];
|
||||
if (isset($data[8]))
|
||||
$zeit->service_id = $data[8];
|
||||
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
|
||||
if(!in_array($tag, $importtage_array))
|
||||
if (!isset($data[5]))
|
||||
$data[5] = NULL;
|
||||
if (!isset($data[6]))
|
||||
$data[6] = NULL;
|
||||
if (!isset($data[7]))
|
||||
$data[7] = NULL;
|
||||
if (!isset($data[8]))
|
||||
$data[8] = NULL;
|
||||
if ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') < $sperrdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum ('.$data[2].')</b></span><br>';
|
||||
elseif ($datum->formatDatum($data[2], $format='Y-m-d H:i:s') > $limitdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da ('.$data[2].') zu weit in der Zukunft liegt.</b></span><br>';
|
||||
elseif ($dateVonCSV!=$dateBisCSV && $data[1]!="DienstreiseMT")
|
||||
{
|
||||
$importtage_array[] = $tag;
|
||||
$zeit->deleteEntriesForUser($user, $tag);
|
||||
$tag_aktuell = $tag;
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).</b></span><br>';
|
||||
}
|
||||
elseif (empty($data[7]) && !empty($data[6]) && !$projects_of_user->checkProjectInCorrectTime($data[6], $data[2], $data[3]))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt: ('.$data[2].') ('.$data[3].')</b></span><br>';
|
||||
}
|
||||
elseif (!empty($data[7]) && !$projektph_of_user ->checkProjectphaseInCorrectTime($data[7], $data[2], $data[3]))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt: ('.$data[2].') ('.$data[3].')</b></span><br>';
|
||||
}
|
||||
elseif (checkVals($data[5],$data[6],$data[7],$data[8]))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Fehlerhafte Werte ('.$data[2].')</b></span><br>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($ende_vorher < $zeit->start)
|
||||
if ($data[1] == 'LehreIntern')
|
||||
$data[1] = 'Lehre';
|
||||
$zeit->new = true;
|
||||
$zeit->beschreibung = NULL;
|
||||
$zeit->oe_kurzbz_1 = NULL;
|
||||
$zeit->projekt_kurzbz = NULL;
|
||||
$zeit->projektphase_id = NULL;
|
||||
$zeit->service_id = NULL;
|
||||
|
||||
$zeit->insertamum = date('Y-m-d H:i:s');
|
||||
$zeit->updateamum = date('Y-m-d H:i:s');
|
||||
$zeit->updatevon = $user;
|
||||
$zeit->insertvon = $user;
|
||||
$zeit->uid = $data[0];
|
||||
$zeit->aktivitaet_kurzbz = $data[1];
|
||||
$zeit->start = $datum->formatDatum($data[2], $format='Y-m-d H:i:s');
|
||||
$zeit->ende = $datum->formatDatum($data[3], $format='Y-m-d H:i:s');
|
||||
if (isset($data[4]))
|
||||
$zeit->beschreibung = $data[4];
|
||||
if (isset($data[5]))
|
||||
$zeit->oe_kurzbz_1 = $data[5];
|
||||
if (isset($data[6]))
|
||||
$zeit->projekt_kurzbz = $data[6];
|
||||
if (isset($data[7]))
|
||||
$zeit->projektphase_id = $data[7];
|
||||
if (isset($data[8]))
|
||||
$zeit->service_id = $data[8];
|
||||
$tag = $datum->formatDatum($data[2], $format='Y-m-d');
|
||||
|
||||
if(!in_array($tag, $importtage_array))
|
||||
{
|
||||
$pause = new zeitaufzeichnung();
|
||||
$pause->new = true;
|
||||
$pause->insertamum = date('Y-m-d H:i:s');
|
||||
$pause->updateamum = date('Y-m-d H:i:s');
|
||||
$pause->updatevon = $user;
|
||||
$pause->insertvon = $user;
|
||||
$pause->uid = $user;
|
||||
$pause->aktivitaet_kurzbz = 'Pause';
|
||||
$pause->start = $ende_vorher;
|
||||
$pause->ende = $zeit->start;
|
||||
$pause->beschreibung = '';
|
||||
if(!$pause->save())
|
||||
$importtage_array[] = $tag;
|
||||
$zeit->deleteEntriesForUser($user, $tag);
|
||||
$tag_aktuell = $tag;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($ende_vorher < $zeit->start)
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span><br>';
|
||||
$pause = new zeitaufzeichnung();
|
||||
$pause->new = true;
|
||||
$pause->insertamum = date('Y-m-d H:i:s');
|
||||
$pause->updateamum = date('Y-m-d H:i:s');
|
||||
$pause->updatevon = $user;
|
||||
$pause->insertvon = $user;
|
||||
$pause->uid = $user;
|
||||
$pause->aktivitaet_kurzbz = 'Pause';
|
||||
$pause->start = $ende_vorher;
|
||||
$pause->ende = $zeit->start;
|
||||
$pause->beschreibung = '';
|
||||
if(!$pause->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$pause->errormsg.'</b></span><br>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$ende_vorher = $zeit->ende;
|
||||
if($data[2] != $data[3])
|
||||
{
|
||||
/*
|
||||
if ($data[1] == 'LehreExtern')
|
||||
$ende_vorher = $zeit->ende;
|
||||
if($data[2] != $data[3])
|
||||
{
|
||||
$zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2])));
|
||||
$zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3])));
|
||||
}
|
||||
*/
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b>('.$zeit->start.')</span><br>';
|
||||
/*
|
||||
if ($data[1] == 'LehreExtern')
|
||||
{
|
||||
$zeit->start = date('Y-m-d H:i:s', strtotime('+2 seconds', strtotime($data[2])));
|
||||
$zeit->ende = date('Y-m-d H:i:s', strtotime('-2 seconds', strtotime($data[3])));
|
||||
}
|
||||
*/
|
||||
if(!$zeit->save())
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'</b>('.$zeit->start.')</span><br>';
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
}
|
||||
else
|
||||
$anzahl++;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (strpos($data[0],'#') === false)
|
||||
{
|
||||
@@ -812,7 +879,7 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
}
|
||||
}
|
||||
else if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum)
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum</b></span>';
|
||||
echo '<span style="color:#ff0000"><b>' .$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum</b></span>';
|
||||
else if (isset($_POST['save']) || isset($_POST['edit']))
|
||||
{
|
||||
|
||||
@@ -844,7 +911,28 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
|
||||
$zeit->service_id = $service_id;
|
||||
$zeit->kunde_uid = $kunde_uid;
|
||||
$saveerror = 0;
|
||||
if (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit'])))
|
||||
|
||||
if (!$projects_of_user->checkProjectInCorrectTime($projekt_kurzbz, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d')))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektzeitrahmen fällt.</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
elseif ($datum->formatDatum($von, $format='Y-m-d') > $limitdatum || $datum->formatDatum($bis, $format='Y-m-d') > $limitdatum)
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs oder Enddatum zu weit in der Zukunft liegt.</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
elseif (!$projectphase->checkProjectphaseInCorrectTime($projektphase_id, $datum->formatDatum($von, $format='Y-m-d'), $datum->formatDatum($bis, $format='Y-m-d')))
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da angegebenes Anfangs und Enddatum nicht in den Projektphasenzeitrahmen fällt.</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
elseif (abs($von-$bis)>0 && $aktivitaet_kurzbz!="DienstreiseMT")
|
||||
{
|
||||
echo '<span style="color:red"><b>'.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich, da keine Zeitaufzeichnung über mehrere Tage erlaubt ist (ausgenommen Dienstreisen).</b></span><br>';
|
||||
$saveerror = 1;
|
||||
}
|
||||
elseif (isset($_POST['genPause']) && (isset($_POST['save']) || isset($_POST['edit'])))
|
||||
{
|
||||
|
||||
$p_start = $datum->formatDatum($von_pause, $format='Y-m-d H:i:s');
|
||||
@@ -1021,7 +1109,9 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
|
||||
<a href='".$_SERVER['PHP_SELF']."?csvimport=1' style='font-size: larger;'>CSV Import</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
|
||||
|
||||
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>";
|
||||
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
|
||||
|
||||
<a href='".$_SERVER['PHP_SELF']."?projektübersichtexport=1' style='font-size: larger;'>Projektübersichtexport</a>";
|
||||
if($anzprojekte > 0)
|
||||
echo "<a style='font-size: larger; text-decoration: none; cursor: default'> | </a><a href='".$_SERVER['PHP_SELF']."?projektexport=1".($passuid ? '&uid='.$user : '')."' style='font-size: larger;'>".$p->t("zeitaufzeichnung/projektexport")."</a>";
|
||||
echo "</td>
|
||||
@@ -1107,6 +1197,17 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
echo '</form>';
|
||||
}
|
||||
|
||||
if (isset($_GET['projektübersichtexport']))
|
||||
{
|
||||
|
||||
echo '<tr><td colspan="4"><hr></td></tr>';
|
||||
echo '<tr><td>CSV-Export</td>';
|
||||
echo '<td align="right"><input type="submit" value="Projektübersichtexport" name="projektübersichtexport"></td></tr>';
|
||||
echo '<tr><td></td><td colspan="3"></td></tr>';
|
||||
echo '<tr><td colspan="4"><hr></td></tr>';
|
||||
|
||||
}
|
||||
|
||||
//Aktivitaet
|
||||
echo '<tr>';
|
||||
echo '<td>'.$p->t("zeitaufzeichnung/aktivitaet").'</td><td colspan="4">';
|
||||
@@ -1145,7 +1246,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
echo '<tr><td nowrap>'.$p->t("zeitaufzeichnung/organisationseinheiten").'</td>
|
||||
<td colspan="3"><SELECT '.$oestyle.' name="oe_kurzbz_1">';
|
||||
$oe = new organisationseinheit();
|
||||
$oe->getFrequent($user,'180','3',true);
|
||||
$oe->getFrequent($user,'180','3',true, array('oezuordnung', 'fachzuordnung', 'kstzuordnung'));
|
||||
$trennlinie = true;
|
||||
|
||||
echo '<option value="">-- '.$p->t("zeitaufzeichnung/keineAuswahl").' --</option>';
|
||||
@@ -1394,6 +1495,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
|
||||
echo '</table>';
|
||||
}
|
||||
|
||||
echo '</td></tr>';
|
||||
echo '</table>';
|
||||
echo '</form>';
|
||||
@@ -1437,8 +1539,8 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
printTableHeadings($fieldheadings, $za_simple);
|
||||
|
||||
|
||||
$tag=null;
|
||||
$woche=date('W');
|
||||
$tag=null;
|
||||
$woche=date('W');
|
||||
|
||||
$tagessumme='00:00';
|
||||
$pausesumme='00:00';
|
||||
@@ -1458,8 +1560,6 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
{
|
||||
$datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d');
|
||||
|
||||
//echo '<tr><th colspan="13">foo<th></tr>';
|
||||
|
||||
// Nach jedem Tag eine Summenzeile einfuegen
|
||||
if(is_null($tag))
|
||||
$tag = $datumtag;
|
||||
@@ -1532,7 +1632,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
|
||||
$langindex = 1;
|
||||
else
|
||||
$langindex = 2;
|
||||
echo '<b>'.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').'</b> <span id="tag_'.$datum->formatDatum($tag,'d_m_Y').'">'.$zeitsperre_text.'</span>'.$pausefehlt_str;
|
||||
echo '<span style="display: inline-block; width: 130px;"><b>'.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').'</b></span><span id="tag_'.$datum->formatDatum($tag,'d_m_Y').'">'.$zeitsperre_text.'</span>'.$pausefehlt_str;
|
||||
if ($ersumme != '00:00')
|
||||
$erstr = ' (+ '.$ersumme.' ER)';
|
||||
else
|
||||
@@ -1859,4 +1959,75 @@ function getZeitaufzeichnung($user, $von, $bis)
|
||||
return $za;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exportiert Zeitaufzeichnungsdaten als CSV
|
||||
* @param $data Zeitaufzeichnungsdaten
|
||||
* @param string $delimiter CSV-Trennzeichen
|
||||
* @param $fieldheadings Namen der Spaltenüberschriften
|
||||
* @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple)
|
||||
* @param $uid Id des Users für CSV-Filenamen "zeitaufzeichnung_uid"
|
||||
*/
|
||||
function exportProjectOverviewAsCSV($user, $delimiter = ',')
|
||||
{
|
||||
|
||||
$filename = "projektUebersicht_".$user.".csv";
|
||||
header('Content-type: text/csv; charset=utf-8');
|
||||
header('Content-Disposition: attachment; filename='.$filename);
|
||||
|
||||
$file = fopen('php://output', 'w');
|
||||
$towrite = getDataForProjectOverviewCSV($user);
|
||||
foreach ($towrite as $row)
|
||||
{
|
||||
fputcsv($file, $row, $delimiter);
|
||||
}
|
||||
fclose($file);
|
||||
//Abbruch damit HTML markup danach nicht mit exportiert wird
|
||||
exit();
|
||||
}
|
||||
|
||||
function getDataForProjectOverviewCSV($user)
|
||||
{
|
||||
$projects_of_user = new projekt();
|
||||
$projects = $projects_of_user->getProjekteListForMitarbeiter($user);
|
||||
|
||||
$projektphase = new projektphase();
|
||||
if($projektphase->getProjectphaseForMitarbeiter($user))
|
||||
$projektphasen = $projektphase->result;
|
||||
else
|
||||
$projetkphasen = array();
|
||||
|
||||
$csvData = array();
|
||||
|
||||
foreach ($projects as $project)
|
||||
{
|
||||
$titel = $project->titel;
|
||||
$projekt_kurzbz = $project->projekt_kurzbz;
|
||||
$projekt_phase = '';
|
||||
$projekt_phase_id = '';
|
||||
$beginn = $project->beginn;
|
||||
$ende = $project->ende;
|
||||
|
||||
$csvData[] = array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende);
|
||||
}
|
||||
|
||||
foreach ($projektphasen as $prjp)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
$titel = $prjp->projekt_kurzbz;
|
||||
$projekt_kurzbz = $prjp->projekt_kurzbz;
|
||||
$projekt_phase = $prjp->bezeichnung;
|
||||
$projekt_phase_id = $prjp->projektphase_id;
|
||||
$beginn = $prjp->start;
|
||||
$ende = $prjp->ende;
|
||||
|
||||
array_push($csvData, array($titel, $projekt_kurzbz, $projekt_phase, $projekt_phase_id, $beginn, $ende) );
|
||||
}
|
||||
}
|
||||
|
||||
sort($csvData);
|
||||
//headers schreiben
|
||||
array_unshift($csvData, array('PROJEKT', 'PROJEKT KURZBEZEICHNUNG', 'PROJEKTPHASE', 'PROJEKTPHASEN ID', 'START', 'PROJEKT ENDE'));
|
||||
return $csvData;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -90,6 +90,7 @@ $ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$d
|
||||
$projektlines = array();
|
||||
$dayStart = $dayEnd = '';
|
||||
$projektnames = $projektphasenames = $tosubtract = $allpauseranges = array();
|
||||
$projektTiteles = array();
|
||||
$activitiesToSubtract = ['Pause', 'LehreExtern', 'Arztbesuch', 'Behoerde'];//aktivitaetstypen which should be subtracted fromworktime
|
||||
$ztaufdata = $ztauf->result;
|
||||
$totalmonthsum = 0.00;
|
||||
@@ -281,7 +282,15 @@ for ($i = 0; $i < count($ztaufdata); $i++)
|
||||
|
||||
//add new projekt to array with unique projekt names
|
||||
if (!in_array($ztaufrow->projekt_kurzbz, $projektnames))
|
||||
{
|
||||
$projektnames[] = $ztaufrow->projekt_kurzbz;
|
||||
$pt = new projekt();
|
||||
$pt->load($ztaufrow->projekt_kurzbz);
|
||||
if(!empty($pt->titel))
|
||||
$projektTiteles[convertProblemChars($ztaufrow->projekt_kurzbz)] = convertProblemChars($pt->titel);
|
||||
else
|
||||
$projektTiteles[convertProblemChars($ztaufrow->projekt_kurzbz)] = 'kein Titel';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -557,10 +566,21 @@ if ($nrProjects < 1)//no projekts - merge all cells and write notice
|
||||
|
||||
foreach ($projektnames as $projektname)
|
||||
{
|
||||
//Creating a worksheet
|
||||
$worksheet =& $workbook->addWorksheet($projektname);
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
|
||||
$titel = $projektTiteles[convertProblemChars($projektname)];
|
||||
|
||||
if ((strlen($titel)+strlen($projektname)) > 31)
|
||||
{
|
||||
$maxLength = 31;
|
||||
$maxLength = ($maxLength - 3 - strlen($projektname));
|
||||
$titel = substr($titel, 0, $maxLength);
|
||||
$titel.='...';
|
||||
}
|
||||
//Creating a worksheet
|
||||
|
||||
$worksheet =& $workbook->addWorksheet(convertProblemChars($projektname).' ('.$titel.')');
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
$titel = $projektTiteles[convertProblemChars($projektname)];
|
||||
//general options
|
||||
$worksheet->setLandscape();
|
||||
$worksheet->hideGridlines();
|
||||
@@ -686,7 +706,7 @@ foreach ($projektnames as $projektname)
|
||||
$worksheet->write($zeile, $spalte + 1 + $i, '', $format_bold_centered_toprightline);
|
||||
|
||||
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1 + $phasenameslength);
|
||||
$worksheet->write($zeile, $spalte, $projektname, $format_bold_centered_toprightline);
|
||||
$worksheet->write($zeile, $spalte, $projektname.' ('.$titel.')', $format_bold_centered_toprightline);
|
||||
|
||||
for ($i = 0; $i < $phasenameslength; $i++)
|
||||
$worksheet->write($zeile + 1, $spalte + 1 + $i, $phasenames[$i], $format_bold_centered_bottomline);
|
||||
|
||||
@@ -1,26 +1,46 @@
|
||||
<?php
|
||||
|
||||
require_once('../../../config/cis.config.inc.php');
|
||||
/*require_once('../../../include/functions.inc.php');*/
|
||||
require_once('../../../include/functions.inc.php');
|
||||
require_once('../../../include/basis_db.class.php');
|
||||
require_once('../../../include/projektphase.class.php');
|
||||
require_once('../../../include/datum.class.php');
|
||||
|
||||
if (!$db = new basis_db())
|
||||
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
|
||||
//$uid=get_uid();
|
||||
$user = get_uid();
|
||||
|
||||
$datum_obj = new datum();
|
||||
|
||||
if(isset($_GET['projekt_kurzbz'])) // TODO maybe check that phasen only shown if projekt is projekt of logged in user
|
||||
{
|
||||
$projekt_kurzbz = $_GET['projekt_kurzbz'];
|
||||
$projektphase = new projektphase();
|
||||
|
||||
if($projektphase->getProjectphaseForMitarbeiterByKurzBz($user, $projekt_kurzbz))
|
||||
$projektphasen_user = $projektphase->result;
|
||||
else
|
||||
$projektphasen_user = array();
|
||||
|
||||
$pp_user_ids = array();
|
||||
foreach ($projektphasen_user as $pp_user)
|
||||
{
|
||||
array_push($pp_user_ids, $pp_user->projektphase_id);
|
||||
}
|
||||
|
||||
if($projektphase->getProjektphasen($projekt_kurzbz))
|
||||
{
|
||||
$result_obj = array();
|
||||
foreach($projektphase->result as $row)
|
||||
{
|
||||
$item['projektphase_id']=$row->projektphase_id;
|
||||
$item['bezeichnung']=$row->bezeichnung;
|
||||
$result_obj[]=$item;
|
||||
if(in_array($row->projektphase_id, $pp_user_ids))
|
||||
{
|
||||
$item['projektphase_id'] = $row->projektphase_id;
|
||||
$item['bezeichnung'] = $row->bezeichnung;
|
||||
$item['start'] = $datum_obj->formatDatum($row->start, 'd.m.Y');
|
||||
$item['ende'] = $datum_obj->formatDatum($row->ende, 'd.m.Y');
|
||||
$result_obj[] = $item;
|
||||
}
|
||||
}
|
||||
echo json_encode($result_obj);
|
||||
}
|
||||
|
||||
+3
-1
@@ -79,12 +79,14 @@ if($doc->isLocked($id))
|
||||
$dokumente_arr[] .= $row->dokument_kurzbz;
|
||||
|
||||
// An der FHTW wird das vorläufige ZGV Dokument verlangt und kann somit auch heruntergeladen werden
|
||||
// Auch der Inivtation Letter kann von BewerberInnen heruntergeladen werden
|
||||
// Auch der Invitation Letter und die Zeitbestätigung können von BewerberInnen heruntergeladen werden
|
||||
if (CAMPUS_NAME == 'FH Technikum Wien')
|
||||
{
|
||||
$dokumente_arr[] .= 'ZgvBaPre';
|
||||
$dokumente_arr[] .= 'ZgvMaPre';
|
||||
$dokumente_arr[] .= 'InvitLet';
|
||||
$dokumente_arr[] .= 'VorlSpB2';
|
||||
$dokumente_arr[] .= 'ZeitBest';
|
||||
}
|
||||
if ($person_id!=$akte_person || !in_array($akte_dokument_kurzbz, $dokumente_arr))
|
||||
die('Sie haben keinen Zugriff auf dieses Dokument');
|
||||
|
||||
+23
-21
@@ -19,7 +19,7 @@
|
||||
*/
|
||||
/**
|
||||
* Dieses File enthaelt Hilfsklassen zur Anzeige des CMS-Menues
|
||||
*
|
||||
*
|
||||
* mit drawSubmenu($id) wird das enstprechende Menue gezeichnet.
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/../include/functions.inc.php');
|
||||
@@ -30,13 +30,14 @@ $params = array();
|
||||
foreach($_REQUEST as $key=>$value)
|
||||
$params[$key]=$value;
|
||||
|
||||
$user = null;
|
||||
//Parameter fuer Include Addons
|
||||
$includeparams = array();
|
||||
$contentobjects=array();
|
||||
$chldsobject = array();
|
||||
/**
|
||||
* Zeichnet einen Menueeintrag aus dem CMS System
|
||||
*
|
||||
*
|
||||
* @param $content_id
|
||||
*/
|
||||
function drawSubmenu($content_id)
|
||||
@@ -47,16 +48,16 @@ function drawSubmenu($content_id)
|
||||
global $contentobjects;
|
||||
$content = new content();
|
||||
$sprache = getSprache();
|
||||
|
||||
|
||||
// Daten Laden
|
||||
|
||||
|
||||
// Alle Kindelemente des Contents holen
|
||||
$ids = $content->getAllChilds($content_id);
|
||||
|
||||
// Alle vorkommenden Contenteintraege laden
|
||||
// Alle vorkommenden Contenteintraege laden
|
||||
$content->loadArray($ids, $sprache, true);
|
||||
$contentobjects = $content->result;
|
||||
|
||||
|
||||
// Baumstruktur laden
|
||||
$childsobject = $content->getChildArray($content_id);
|
||||
|
||||
@@ -91,7 +92,7 @@ function drawSubmenu1($content_id)
|
||||
drawEntry($contentobj);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -101,12 +102,13 @@ function drawSubmenu1($content_id)
|
||||
*/
|
||||
function drawEntry($item)
|
||||
{
|
||||
global $childsobject;
|
||||
global $childsobject, $user;
|
||||
|
||||
//pruefen ob der Content eine Berechtigung erfordert
|
||||
if($item->locked)
|
||||
{
|
||||
$user = get_uid();
|
||||
if(is_null($user))
|
||||
$user = get_uid();
|
||||
$content = new content();
|
||||
//wenn der User nicht berechtigt ist, dann wird der Eintrag nicht angezeigt
|
||||
if(!$content->berechtigt($item->content_id, $user))
|
||||
@@ -139,7 +141,7 @@ function drawEntry($item)
|
||||
Redirect($item);
|
||||
else
|
||||
DrawLink(APP_ROOT.'cms/content.php?content_id='.$item->content_id,'content',$item->titel);
|
||||
|
||||
|
||||
echo "</li>";
|
||||
}
|
||||
}
|
||||
@@ -155,7 +157,7 @@ function DrawLink($link, $target, $name, $content_id=null, $open=null)
|
||||
{
|
||||
if($target=='')
|
||||
$target='content';
|
||||
|
||||
|
||||
if($open)
|
||||
$class='class="selected"';
|
||||
else
|
||||
@@ -167,7 +169,7 @@ function DrawLink($link, $target, $name, $content_id=null, $open=null)
|
||||
* Redirects sind Links Seiten ausserhalb des CMS
|
||||
* die URL kann Variablen enthalten. Diese werden hier ersetzt.
|
||||
* Danach wird der Link angezeigt.
|
||||
*
|
||||
*
|
||||
* @param $content_id ContentID des Redirects
|
||||
* @param $name Anzeigename des Links
|
||||
* @param $content_id_Submenu ID des Submenues das geoeffnet werden soll (optional)
|
||||
@@ -175,42 +177,42 @@ function DrawLink($link, $target, $name, $content_id=null, $open=null)
|
||||
function Redirect($content, $content_id_Submenu=null)
|
||||
{
|
||||
global $sprache, $params;
|
||||
|
||||
|
||||
$xml = new DOMDocument();
|
||||
if($content->content!='')
|
||||
{
|
||||
$xml->loadXML($content->content);
|
||||
}
|
||||
|
||||
|
||||
if($xml->getElementsByTagName('url')->item(0))
|
||||
$url = $xml->getElementsByTagName('url')->item(0)->nodeValue;
|
||||
else
|
||||
$url='';
|
||||
|
||||
|
||||
//Variablen Ersetzen
|
||||
foreach($params as $key=>$value)
|
||||
{
|
||||
$url = str_replace('$'.$key,addslashes($value),$url);
|
||||
}
|
||||
|
||||
|
||||
if($xml->getElementsByTagName('target')->item(0))
|
||||
$target = $xml->getElementsByTagName('target')->item(0)->nodeValue;
|
||||
else
|
||||
$target='';
|
||||
|
||||
|
||||
DrawLink($url, $target, $content->titel, $content_id_Submenu, $content->menu_open);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bei Content mit Include Templates wird
|
||||
* Bei Content mit Include Templates wird
|
||||
* das entsprechende Menu-Addon geladen und inkludiert
|
||||
*
|
||||
*
|
||||
* @param $content_id
|
||||
*/
|
||||
function IncludeMenuAddon($content)
|
||||
{
|
||||
global $sprache, $includeparams;
|
||||
|
||||
|
||||
$xml = new DOMDocument();
|
||||
if($content->content!='')
|
||||
{
|
||||
@@ -223,6 +225,6 @@ function IncludeMenuAddon($content)
|
||||
if($url!='')
|
||||
{
|
||||
$includeparams['content']=$content;
|
||||
include(dirname(__FILE__).'/menu/'.$url);
|
||||
include(dirname(__FILE__).'/menu/'.$url);
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+9
-9
@@ -681,12 +681,12 @@
|
||||
"version": "0.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/njh/easyrdf.git",
|
||||
"url": "https://github.com/easyrdf/easyrdf.git",
|
||||
"reference": "acd09dfe0555fbcfa254291e433c45fdd4652566"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
|
||||
"url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
|
||||
"reference": "acd09dfe0555fbcfa254291e433c45fdd4652566",
|
||||
"shasum": ""
|
||||
},
|
||||
@@ -796,6 +796,7 @@
|
||||
"faker",
|
||||
"fixtures"
|
||||
],
|
||||
"abandoned": true,
|
||||
"time": "2019-12-12 13:22:17"
|
||||
},
|
||||
{
|
||||
@@ -1321,16 +1322,16 @@
|
||||
},
|
||||
{
|
||||
"name": "phpseclib/phpseclib",
|
||||
"version": "2.0.23",
|
||||
"version": "2.0.31",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpseclib/phpseclib.git",
|
||||
"reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099"
|
||||
"reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c78eb5058d5bb1a183133c36d4ba5b6675dfa099",
|
||||
"reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099",
|
||||
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/233a920cb38636a43b18d428f9a8db1f0a1a08f4",
|
||||
"reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1338,8 +1339,7 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"phing/phing": "~2.7",
|
||||
"phpunit/phpunit": "^4.8.35|^5.7|^6.0",
|
||||
"sami/sami": "~2.0",
|
||||
"phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4",
|
||||
"squizlabs/php_codesniffer": "~2.0"
|
||||
},
|
||||
"suggest": {
|
||||
@@ -1409,7 +1409,7 @@
|
||||
"x.509",
|
||||
"x509"
|
||||
],
|
||||
"time": "2019-09-17 03:41:22"
|
||||
"time": "2021-04-06 13:56:45"
|
||||
},
|
||||
{
|
||||
"name": "rmariuzzo/jquery-checkboxes",
|
||||
|
||||
+1
-1
@@ -95,7 +95,7 @@ foreach($addon_obj->result as $addon)
|
||||
<command id="menu-prefs-stpltable-stundenplan:command" oncommand="stpltableChange('stundenplan');"/>
|
||||
<command id="menu-prefs-stpltable-stundenplandev:command" oncommand="stpltableChange('stundenplandev');"/>
|
||||
<command id="menu-prefs-kontofilterstg:command" oncommand="EinstellungenKontoFilterStgChange();"/>
|
||||
<command id="menu-prefs-number_displayed_past_studiensemester:command" oncommand="variableChangeValue('number_displayed_past_studiensemester');"/>
|
||||
<command id="menu-prefs-number_displayed_past_studiensemester:command" oncommand="variableChangeValueIfNumber('number_displayed_past_studiensemester');"/>
|
||||
<command id="menu-statistic-lehrauftraege:command" oncommand="StatistikPrintLehrauftraege();"/>
|
||||
<command id="menu-statistic-lvplanung:command" oncommand="StatistikPrintLVPlanung();"/>
|
||||
<command id="menu-statistic-lvplanungexcel:command" oncommand="StatistikPrintLVPlanungExcel();"/>
|
||||
|
||||
@@ -1539,7 +1539,7 @@ function OpenAboutDialog()
|
||||
// ****
|
||||
function OpenManual()
|
||||
{
|
||||
window.open('https://wiki.fhcomplete.org/doku.php?','_blank');
|
||||
window.open('https://wiki.fhcomplete.info/','_blank');
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -2099,6 +2099,26 @@ function variableChangeValue(variable)
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Aendert eines Variablenwert nach Überprüfung der Eingabe auf gültigen Wert (kleiner 100)
|
||||
// ****
|
||||
function variableChangeValueIfNumber(variable)
|
||||
{
|
||||
var variablevalue = getvariable(variable);
|
||||
|
||||
if(variablevalue = prompt('Bitte geben Sie den neuen Wert fuer '+variable+' ein', variablevalue))
|
||||
{
|
||||
if ((typeof(parseInt(variablevalue)) === 'number' && variablevalue < 100 ))
|
||||
{
|
||||
variableChange(variable, '', variablevalue);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert(variablevalue + ' ist keine gültige Eingabe! Bitte eine Zahl eingeben!');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Sendet einen Request zum Aendern einer Variable
|
||||
// ****
|
||||
|
||||
@@ -481,9 +481,9 @@ $p = new phrasen($sprache);
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-anmerkung" disabled="true" maxlength="255" width="300" oninput="LeMitarbeiterValueChanged();"/>
|
||||
</row>
|
||||
<row>
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-semesterstunden" control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden" value="Semesterstunden: "/>
|
||||
<label id="lehrveranstaltung-lehreinheitmitarbeiter-label-semesterstunden" control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden" value="Lehrauftragsstunden (LAS): "/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-semesterstunden" disabled="true" maxlength="6" flex="1" oninput="LeMitarbeiterValueChanged();LeMitarbeiterGesamtkosten(); if(parseInt(this.value)) document.getElementById('lehrveranstaltung-lehreinheitmitarbeiter-textbox-planstunden').value= parseInt(this.value)"/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-planstunden" value="Planstunden: "/>
|
||||
<label control="lehrveranstaltung-lehreinheitmitarbeiter-textbox-planstunden" tooltiptext="LVPLS" value="LV-Plan Stunden: "/>
|
||||
<textbox id="lehrveranstaltung-lehreinheitmitarbeiter-textbox-planstunden" disabled="true" maxlength="3" flex="1" oninput="LeMitarbeiterValueChanged();"/>
|
||||
</row>
|
||||
<row>
|
||||
|
||||
@@ -59,7 +59,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/lvplanung/lehrveranstaltungnotenov
|
||||
</popupset>
|
||||
<toolbox>
|
||||
<toolbar id="lehrveranstaltung-nav-toolbar">
|
||||
<toolbarbutton id="lehrveranstaltung-toolbar-neu" label="Neue Lehreinheit" oncommand="LeNeu();" disabled="true" image="../skin/images/NeuDokument.png" tooltiptext="Neue Lehreinheit anlegen" />
|
||||
<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-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"/>
|
||||
|
||||
@@ -174,7 +174,13 @@ if(!$error)
|
||||
elseif($_POST['zeitaufzeichnungspflichtig']=='false')
|
||||
$verwendung->zeitaufzeichnungspflichtig = false;
|
||||
else
|
||||
$verwendung->zeitaufzeichnungspflichtig = '';
|
||||
$verwendung->azgrelevant = '';
|
||||
if($_POST['azgrelevant']=='true')
|
||||
$verwendung->azgrelevant = true;
|
||||
elseif($_POST['azgrelevant']=='false')
|
||||
$verwendung->azgrelevant = false;
|
||||
else
|
||||
$verwendung->azgrelevant = '';
|
||||
|
||||
if($verwendung->save())
|
||||
{
|
||||
|
||||
@@ -1233,6 +1233,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
|
||||
dv_art = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-dv_art').value;
|
||||
inkludierte_lehre = dialog.getElementById('mitarbeiter-verwendung-detail-textbox-inkludierte_lehre').value;
|
||||
zeitaufzeichnungspflichtig = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked;
|
||||
azgrelevant = dialog.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked;
|
||||
|
||||
if(verwendung_code=='1')
|
||||
{
|
||||
@@ -1291,6 +1292,7 @@ function MitarbeiterVerwendungSpeichern(dialog, bisverwendung_id, mitarbeiter_ui
|
||||
req.add('dv_art', dv_art);
|
||||
req.add('inkludierte_lehre', inkludierte_lehre);
|
||||
req.add('zeitaufzeichnungspflichtig', zeitaufzeichnungspflichtig);
|
||||
req.add('azgrelevant', azgrelevant);
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
dv_art = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#dv_art" ));
|
||||
inkludierte_lehre = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#inkludierte_lehre" ));
|
||||
zeitaufzeichnungspflichtig = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnungspflichtig" ));
|
||||
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -87,7 +88,7 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
var predicateNS = "http://www.technikum-wien.at/mitarbeiter/rdf";
|
||||
|
||||
fixangestellt = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#fixangestellt" ));
|
||||
|
||||
azgrelevant = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#azgrelevant" ));
|
||||
//neuer Datensatz wird angelegt
|
||||
MitarbeiterVerwendungDetailNeu='true';
|
||||
|
||||
@@ -112,6 +113,14 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
{
|
||||
zeitaufzeichnungspflichtig='Nein';
|
||||
}
|
||||
if (!azgrelevant)
|
||||
{
|
||||
azgrelevant='Nein';
|
||||
}
|
||||
else
|
||||
{
|
||||
azgrelevant='Ja';
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById('mitarbeiter-verwendung-detail-menulist-beschart1').value=ba1code;
|
||||
@@ -138,7 +147,10 @@ function MitarbeiterVerwendungInit(mitarbeiter_uid, bisverwendung_id)
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=true;
|
||||
else
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig').checked=false;
|
||||
|
||||
if(azgrelevant=='Nein')
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=false;
|
||||
else
|
||||
document.getElementById('mitarbeiter-verwendung-detail-checkbox-azgrelevant').checked=true;
|
||||
MitarbeiterVerwendungDetailToggleHauptberuf();
|
||||
MitarbeiterVerwendungVerwendungChange();
|
||||
}
|
||||
|
||||
@@ -167,6 +167,10 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type
|
||||
<label value="Zeitaufzeichnungspflichtig" control="mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig"/>
|
||||
<checkbox id="mitarbeiter-verwendung-detail-checkbox-zeitaufzeichnungspflichtig"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="AZG-relevant" control="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
|
||||
<checkbox id="mitarbeiter-verwendung-detail-checkbox-azgrelevant"/>
|
||||
</row>
|
||||
<row>
|
||||
<spacer />
|
||||
<hbox>
|
||||
|
||||
@@ -252,7 +252,7 @@ else
|
||||
array('uid', 'stg_kz', 'person_id', 'id', 'prestudent_id', 'buchungsnummern', 'ss', 'abschlusspruefung_id',
|
||||
'typ', 'all', 'preoutgoing_id', 'lvid', 'projekt_kurzbz', 'von', 'bis', 'stundevon', 'stundebis',
|
||||
'sem', 'lehreinheit', 'mitarbeiter_uid', 'studienordnung_id', 'fixangestellt', 'standort',
|
||||
'abrechnungsmonat', 'form')
|
||||
'abrechnungsmonat', 'form', 'projektarbeit_id', 'betreuerart_kurzbz')
|
||||
)
|
||||
)
|
||||
{
|
||||
|
||||
@@ -107,9 +107,9 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/ressource.overlay.xul.php"
|
||||
<vbox id="vbox-main">
|
||||
<tabbox id="tabbox-main" flex="3" orient="vertical">
|
||||
<tabs id="tabs-planner-main" orient="horizontal">
|
||||
<tab id="tab-projekte" label="Projekte" />
|
||||
<tab id="tab-projekte" label="Projekte" selected="true" />
|
||||
<tab id="tab-projektphase" label="Phasen" />
|
||||
<tab id="tab-projekttask" label="Tasks" selected="true" />
|
||||
<tab id="tab-projekttask" label="Tasks"/>
|
||||
<tab id="tab-dokumente" label="Dokumente" />
|
||||
<tab id="tab-ressourceauslastung" label="Ressourcen" />
|
||||
<tab id="tab-bestellung" label="Bestellungen" />
|
||||
@@ -176,7 +176,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/ressource.overlay.xul.php"
|
||||
<treechildren>
|
||||
<treeitem uri="rdf:*">
|
||||
<treerow>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/ressource/rdf#bezeichnung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/ressource/rdf#bezeichnung"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/ressource/rdf#rdf_description"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/ressource/rdf#typ"/>
|
||||
<treecell label="rdf:http://www.technikum-wien.at/ressource/rdf#ressource_id"/>
|
||||
|
||||
@@ -6,76 +6,77 @@ require_once('../../include/functions.inc.php');
|
||||
|
||||
function updateProjektRessource()
|
||||
{
|
||||
if(projekt_ressource_id!='')
|
||||
if(projekt_ressource_id!='')
|
||||
{
|
||||
aufwand = document.getElementById("textbox-ressource-aufwand").value;
|
||||
if (document.getElementById("leitung").selected)
|
||||
funktion_kurzbz = 'Leitung';
|
||||
else
|
||||
funktion_kurzbz = 'Mitarbeiter';
|
||||
|
||||
try
|
||||
{
|
||||
var soapBody = new SOAPObject("saveProjektRessource");
|
||||
var projektRessource = new SOAPObject("projektRessource");
|
||||
|
||||
projektRessource.appendChild(new SOAPObject("projekt_ressource_id")).val(projekt_ressource_id);
|
||||
|
||||
if(projekt_kurzbz != '')
|
||||
{
|
||||
projektRessource.appendChild(new SOAPObject("projektphase_id")).val('');
|
||||
projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val(projekt_kurzbz);
|
||||
var res_binding = window.opener.document.getElementById('box-projekt-ressourcen');
|
||||
}
|
||||
else if(projektphase_id != '')
|
||||
{
|
||||
projektRessource.appendChild(new SOAPObject("projektphase_id")).val(projektphase_id);
|
||||
projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val('');
|
||||
var res_binding = window.opener.document.getElementById('box-projekt-ressource-phase');
|
||||
}
|
||||
|
||||
projektRessource.appendChild(new SOAPObject("ressource_id")).val(ressource_id);
|
||||
projektRessource.appendChild(new SOAPObject("funktion_kurzbz")).val(funktion_kurzbz);
|
||||
projektRessource.appendChild(new SOAPObject("beschreibung")).val(beschreibung);
|
||||
projektRessource.appendChild(new SOAPObject("aufwand")).val(aufwand);
|
||||
|
||||
soapBody.appendChild(projektRessource);
|
||||
|
||||
var sr = new SOAPRequest("saveProjektRessource",soapBody);
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/ressource_projekt.soap.php?"+gettimestamp();
|
||||
|
||||
function mycallb(obj, projekt_kurzbz, projektphase_id)
|
||||
{
|
||||
var ressourcebinding=obj;
|
||||
var projekt = projekt_kurzbz;
|
||||
var phase = projektphase_id;
|
||||
|
||||
this.invoke=function (respObj)
|
||||
{
|
||||
try
|
||||
{
|
||||
var id = respObj.Body[0].saveProjektRessourceResponse[0].message[0].Text;
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
var fehler = respObj.Body[0].Fault[0].faultstring[0].Text;
|
||||
alert('Fehler: '+fehler);
|
||||
return;
|
||||
}
|
||||
// Ressourcen Tree aktualisieren
|
||||
ressourcebinding.LoadRessourceTree(projekt, phase);
|
||||
|
||||
aufwand = document.getElementById("textbox-ressource-aufwand").value;
|
||||
if (document.getElementById("leitung").selected)
|
||||
funktion_kurzbz = 'Leitung';
|
||||
else
|
||||
funktion_kurzbz = 'Mitarbeiter';
|
||||
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
var soapBody = new SOAPObject("saveProjektRessource");
|
||||
var projektRessource = new SOAPObject("projektRessource");
|
||||
|
||||
projektRessource.appendChild(new SOAPObject("projekt_ressource_id")).val(projekt_ressource_id);
|
||||
|
||||
if(projekt_kurzbz != '')
|
||||
{
|
||||
projektRessource.appendChild(new SOAPObject("projektphase_id")).val('');
|
||||
projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val(projekt_kurzbz);
|
||||
}
|
||||
else if(projektphase_id != '')
|
||||
{
|
||||
projektRessource.appendChild(new SOAPObject("projektphase_id")).val(projektphase_id);
|
||||
projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val('');
|
||||
}
|
||||
|
||||
projektRessource.appendChild(new SOAPObject("ressource_id")).val(ressource_id);
|
||||
projektRessource.appendChild(new SOAPObject("funktion_kurzbz")).val(funktion_kurzbz);
|
||||
projektRessource.appendChild(new SOAPObject("beschreibung")).val(beschreibung);
|
||||
projektRessource.appendChild(new SOAPObject("aufwand")).val(aufwand);
|
||||
|
||||
soapBody.appendChild(projektRessource);
|
||||
|
||||
var sr = new SOAPRequest("saveProjektRessource",soapBody);
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/ressource_projekt.soap.php?"+gettimestamp();
|
||||
|
||||
function mycallb(obj)
|
||||
{
|
||||
var me=obj;
|
||||
this.invoke=function (respObj)
|
||||
{
|
||||
try
|
||||
{
|
||||
var id = respObj.Body[0].saveProjektRessourceResponse[0].message[0].Text;
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
var fehler = respObj.Body[0].Fault[0].faultstring[0].Text;
|
||||
alert('Fehler: '+fehler);
|
||||
return;
|
||||
}
|
||||
me.RefreshRessource();
|
||||
}
|
||||
}
|
||||
|
||||
var cb=new mycallb(this);
|
||||
|
||||
//SOAPClient.SendRequest(sr,cb.invoke);
|
||||
SOAPClient.SendRequest(sr);
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
debug("Ressource load failed with exception: "+e);
|
||||
}
|
||||
|
||||
// Popup schließen
|
||||
window.close();
|
||||
}
|
||||
//window.opener.location.reload(false);
|
||||
window.close();
|
||||
}
|
||||
|
||||
// Callback fuer aktualisierung des Trees nach dem Speichern
|
||||
var cb=new mycallb(res_binding, projekt_kurzbz, projektphase_id);
|
||||
SOAPClient.SendRequest(sr,cb.invoke);
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
debug("Ressource load failed with exception: "+e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ require_once('../../config/vilesci.config.inc.php');
|
||||
|
||||
var TaskSelectID=null; //ID des Task Eintrages der nach dem Refresh markiert werden soll
|
||||
var filterErledigt; //Tasks filtern
|
||||
var currentProjektPhaseID;
|
||||
var currentProjektPhaseID;
|
||||
// ********** Observer und Listener ************* //
|
||||
|
||||
// ****
|
||||
@@ -81,13 +81,13 @@ function LoadTasks(projekt_phase_id, filter)
|
||||
{
|
||||
// wenn phase übergeben wurde -> setzte globale variable
|
||||
if(projekt_phase_id != null && projekt_phase_id != '' && typeof optional && "undefined")
|
||||
currentProjektPhaseID = projekt_phase_id;
|
||||
|
||||
currentProjektPhaseID = projekt_phase_id;
|
||||
|
||||
// wenn filter übergeben wurde -> setze globale variable
|
||||
if(filter != null && filter != '' && typeof filter != "undefined")
|
||||
filterErledigt = filter;
|
||||
|
||||
url = "<?php echo APP_ROOT; ?>rdf/projekttask.rdf.php?projektphase_id="+currentProjektPhaseID+"&"+gettimestamp();
|
||||
|
||||
url = "<?php echo APP_ROOT; ?>rdf/projekttask.rdf.php?projektphase_id="+currentProjektPhaseID+"&"+gettimestamp();
|
||||
|
||||
// überprüfe ob filter gesetzt ist
|
||||
if(filterErledigt != null)
|
||||
@@ -100,7 +100,7 @@ function LoadTasks(projekt_phase_id, filter)
|
||||
{
|
||||
treeTask.database.RemoveDataSource(oldDatasources.getNext());
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
datasourceTreeTask.removeXMLSinkObserver(TaskTreeSinkObserver);
|
||||
@@ -108,7 +108,7 @@ function LoadTasks(projekt_phase_id, filter)
|
||||
}
|
||||
catch(e)
|
||||
{}
|
||||
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
datasourceTreeTask = rdfService.GetDataSource(url);
|
||||
datasourceTreeTask.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
@@ -116,7 +116,7 @@ function LoadTasks(projekt_phase_id, filter)
|
||||
treeTask.database.AddDataSource(datasourceTreeTask);
|
||||
datasourceTreeTask.addXMLSinkObserver(TaskTreeSinkObserver);
|
||||
treeTask.builder.addListener(TaskTreeListener);
|
||||
|
||||
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
@@ -153,7 +153,7 @@ function RessourceTaskLoad(menulist, id)
|
||||
datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
||||
menulist.database.AddDataSource(datasource);
|
||||
menulist.builder.rebuild();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ function TaskTreeRefresh()
|
||||
//markierte Lehreinheit global speichern damit diese LE nach dem
|
||||
//refresh wieder markiert werden kann.
|
||||
var tree = document.getElementById('projekttask-tree');
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
TaskSelectID = getTreeCellText(tree, "projekttask-treecol-projekttask_id", tree.currentIndex);
|
||||
@@ -187,7 +187,7 @@ function TaskNeu()
|
||||
var tasktree=document.getElementById('projekttask-tree');
|
||||
tasktree.view.selection.clearSelection();
|
||||
tree = document.getElementById('tree-projektmenue');
|
||||
|
||||
|
||||
//Projektphase_id holen
|
||||
var projektphase_id = getTreeCellText(tree, "treecol-projektmenue-projekt_phase_id", tree.currentIndex);
|
||||
|
||||
@@ -199,12 +199,12 @@ function TaskNeu()
|
||||
//Details zuruecksetzen
|
||||
TaskDetailReset();
|
||||
TaskDisableFields(false);
|
||||
|
||||
|
||||
document.getElementById('textbox-projekttaskdetail-projektphase_id').value=projektphase_id;
|
||||
document.getElementById('caption-projekttask-detail').label='Neuer Task';
|
||||
|
||||
|
||||
//Detail Tab auswaehlen
|
||||
document.getElementById('projekttask-tabs').selectedItem=document.getElementById('projekttask-tab-detail');
|
||||
document.getElementById('projekttask-tabs').selectedItem=document.getElementById('projekttask-tab-detail');
|
||||
}
|
||||
// ****
|
||||
// * Selectiert die Lektorzuordnung nachdem der Tree
|
||||
@@ -222,7 +222,7 @@ function TaskTreeSelectTask()
|
||||
{
|
||||
//id der row holen
|
||||
id = getTreeCellText(tree, "projekttask-treecol-projekttask_id", i);
|
||||
|
||||
|
||||
//wenn dies die zu selektierende Zeile
|
||||
if(TaskSelectID==id)
|
||||
{
|
||||
@@ -264,7 +264,7 @@ function TaskDelete()
|
||||
var soapBody = new SOAPObject("deleteProjekttask");
|
||||
soapBody.appendChild(new SOAPObject("projekttask_id")).val(id);
|
||||
var sr = new SOAPRequest("deleteProjekttask",soapBody);
|
||||
|
||||
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
|
||||
SOAPClient.SendRequest(sr, clb_deleteProjekttask);
|
||||
}
|
||||
@@ -285,7 +285,7 @@ function clb_deleteProjekttask(respObj)
|
||||
return;
|
||||
}
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
|
||||
TaskSelectID='';
|
||||
datasourceTreeTask.Refresh(false); //non blocking
|
||||
SetStatusBarText('Eintrag wurde entfernt');
|
||||
@@ -332,7 +332,7 @@ function showProjekttaskParsedown()
|
||||
|
||||
//Werte holen
|
||||
projekttask_id = document.getElementById('textbox-projekttaskdetail-projekttask_id').value;
|
||||
|
||||
|
||||
if(!isNaN(projekttask_id) && projekttask_id != '')
|
||||
{
|
||||
window.open("projekt/parsedown.php?projekttask_id="+projekttask_id,"Projekttask"+projekttask_id);
|
||||
@@ -355,15 +355,15 @@ function saveProjekttaskDetail()
|
||||
aufwand = document.getElementById('textbox-projekttask-detail-aufwand').value;
|
||||
mantis_id = document.getElementById('textbox-projekttask-detail-mantis_id').value;
|
||||
scrumsprint_id = document.getElementById('textbox-projekttask-detail-scrumsprint_id').value;
|
||||
ressource_id = MenulistGetSelectedValue('textbox-projekttask-detail-ressource');
|
||||
ressource_id = MenulistGetSelectedValue('textbox-projekttask-detail-ressource');
|
||||
ende = document.getElementById('textbox-projekttask-detail-ende').iso;
|
||||
|
||||
|
||||
if(!isNaN(projektphase_id) && projektphase_id != '')
|
||||
{
|
||||
var soapBody = new SOAPObject("saveProjekttask");
|
||||
//soapBody.appendChild(new SOAPObject("username")).val('joe');
|
||||
//soapBody.appendChild(new SOAPObject("passwort")).val('waschl');
|
||||
|
||||
|
||||
var task = new SOAPObject("task");
|
||||
task.appendChild(new SOAPObject("projekttask_id")).val(projekttask_id);
|
||||
task.appendChild(new SOAPObject("projektphase_id")).val(projektphase_id);
|
||||
@@ -376,9 +376,9 @@ function saveProjekttaskDetail()
|
||||
task.appendChild(new SOAPObject("ressource_id")).val(ressource_id);
|
||||
task.appendChild(new SOAPObject("ende")).val(ende);
|
||||
soapBody.appendChild(task);
|
||||
|
||||
|
||||
var sr = new SOAPRequest("saveProjekttask",soapBody);
|
||||
|
||||
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
|
||||
SOAPClient.SendRequest(sr, clb_saveProjekttask);
|
||||
}else
|
||||
@@ -402,7 +402,7 @@ function clb_saveProjekttask(respObj)
|
||||
}
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
document.getElementById('textbox-projekttaskdetail-projekttask_id').value=id;
|
||||
|
||||
|
||||
TaskSelectID=id;
|
||||
datasourceTreeTask.Refresh(false); //non blocking
|
||||
SetStatusBarText('Daten wurden gespeichert');
|
||||
@@ -415,7 +415,7 @@ function clb_saveProjekttask(respObj)
|
||||
// ****
|
||||
function onselectProjekttask()
|
||||
{
|
||||
|
||||
|
||||
// Trick 17 (sonst gibt's ein Permission denied)
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var tree = document.getElementById('projekttask-tree');
|
||||
@@ -445,12 +445,12 @@ function onselectProjekttask()
|
||||
alert(e);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
var req = new phpRequest('../rdf/projekttask.rdf.php','','');
|
||||
req.add('projekttask_id',id);
|
||||
|
||||
var response = req.execute();
|
||||
|
||||
|
||||
// Datasource holen
|
||||
var dsource=parseRDFString(response, 'http://www.technikum-wien.at/projekttask/alle-projekttasks');
|
||||
|
||||
@@ -472,7 +472,7 @@ function onselectProjekttask()
|
||||
var scrumsprint_id=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#scrumsprint_id" ));
|
||||
var ressource_id=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ressource_id" ));
|
||||
var ende=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" ));
|
||||
|
||||
|
||||
//Daten den Feldern zuweisen
|
||||
var menulist = document.getElementById('textbox-projekttask-detail-ressource');
|
||||
RessourceTaskLoad(menulist, projektphase_id);
|
||||
@@ -486,17 +486,17 @@ function onselectProjekttask()
|
||||
document.getElementById('textbox-projekttask-detail-scrumsprint_id').value=scrumsprint_id;
|
||||
MenulistSelectItemOnValue('textbox-projekttask-detail-ressource', ressource_id);
|
||||
//document.getElementById('textbox-projekttask-detail-ressource').value=ressource_id;
|
||||
|
||||
|
||||
//Notizen zu eines Tasks Laden
|
||||
notiz = document.getElementById('box-projekttask-notizen');
|
||||
notiz.LoadNotizTree('','',projekttask_id,'','','','', '','');
|
||||
|
||||
|
||||
//Mantis Tab reset
|
||||
document.getElementById('textbox-projekttask-mantis-issue_summary').value=bezeichnung;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_description').value=beschreibung;
|
||||
//document.getElementById('textbox-projekttask-mantis-issue_project_id').value='1';
|
||||
//document.getElementById('textbox-projekttask-mantis-issue_category').value='General';
|
||||
|
||||
|
||||
document.getElementById('textbox-projekttask-mantis-mantis_id').value='';
|
||||
document.getElementById('textbox-projekttask-mantis-issue_view_state_id').value='';
|
||||
document.getElementById('textbox-projekttask-mantis-issue_view_state_name').value='';
|
||||
@@ -525,9 +525,9 @@ function onselectProjekttask()
|
||||
document.getElementById('textbox-projekttask-mantis-issue_due_date').value='';
|
||||
document.getElementById('textbox-projekttask-mantis-issue_steps_to_reproduce').value='';
|
||||
document.getElementById('textbox-projekttask-mantis-issue_additional_information').value='';
|
||||
|
||||
|
||||
//Mantis
|
||||
if (mantis_id!='')
|
||||
if (false && mantis_id!='')
|
||||
{
|
||||
var req = new phpRequest('../rdf/mantis.rdf.php','','');
|
||||
req.add('issue_id',mantis_id);
|
||||
@@ -539,7 +539,7 @@ function onselectProjekttask()
|
||||
getService(Components.interfaces.nsIRDFService);
|
||||
subject = rdfService.GetResource("http://www.technikum-wien.at/mantis/" + mantis_id);
|
||||
predicateNS = "http://www.technikum-wien.at/mantis/rdf";
|
||||
|
||||
|
||||
//Daten holen
|
||||
var issue_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_id" ));
|
||||
var issue_summary=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_summary" ));
|
||||
@@ -571,12 +571,12 @@ function onselectProjekttask()
|
||||
var issue_tags_name=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_tags_name" ));
|
||||
var issue_resolution_id=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_resolution_id" ));
|
||||
var issue_resolution_name=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_resolution_name" ));
|
||||
var issue_due_date=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_due_date" ));
|
||||
var issue_due_date=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_due_date" ));
|
||||
var issue_steps_to_reproduce=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_steps_to_reproduce" ));
|
||||
var issue_additional_information=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#issue_additional_information" ));
|
||||
|
||||
ProjekttaskLoadCategories(issue_project_id);
|
||||
|
||||
|
||||
//Daten den Feldern zuweisen
|
||||
document.getElementById('textbox-projekttask-mantis-mantis_id').value=mantis_id;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_summary').value=issue_summary;
|
||||
@@ -610,18 +610,18 @@ function onselectProjekttask()
|
||||
document.getElementById('textbox-projekttask-mantis-issue_due_date').value=issue_due_date;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_steps_to_reproduce').value=issue_steps_to_reproduce;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_additional_information').value=issue_additional_information;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_tags').value=issue_tags_name;
|
||||
document.getElementById('textbox-projekttask-mantis-issue_tags').value=issue_tags_name;
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
// * Beim Aendern des Mantis Projekts werden die zugehoerigen
|
||||
// * Beim Aendern des Mantis Projekts werden die zugehoerigen
|
||||
// * Kategorien geladen
|
||||
// ****
|
||||
function ProjekttaskMantisProjektChange()
|
||||
{
|
||||
project_id=document.getElementById('menulist-projekttask-mantis-issue_project_id').value;
|
||||
|
||||
|
||||
if(project_id!='')
|
||||
ProjekttaskLoadCategories(project_id);
|
||||
}
|
||||
@@ -645,10 +645,10 @@ function ProjekttaskLoadCategories(project_id)
|
||||
}
|
||||
//Refresh damit die entfernten DS auch wirklich entfernt werden
|
||||
menulist.builder.rebuild();
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
|
||||
var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
|
||||
var datasource = rdfService.GetDataSourceBlocking(url);
|
||||
|
||||
|
||||
datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
|
||||
datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
|
||||
menulist.database.AddDataSource(datasource);
|
||||
@@ -696,7 +696,7 @@ function saveProjekttaskMantis()
|
||||
var issue_steps_to_reproduce=document.getElementById('textbox-projekttask-mantis-issue_steps_to_reproduce').value;
|
||||
var issue_additional_information=document.getElementById('textbox-projekttask-mantis-issue_additional_information').value;
|
||||
var issue_tags = document.getElementById('textbox-projekttask-mantis-issue_tags').value;
|
||||
|
||||
|
||||
var soapBody = new SOAPObject("saveMantis");
|
||||
soapBody.appendChild(new SOAPObject("projekttask_id")).val(projekttask_id);
|
||||
soapBody.appendChild(new SOAPObject("mantis_id")).val(mantis_id);
|
||||
@@ -731,25 +731,25 @@ function saveProjekttaskMantis()
|
||||
soapBody.appendChild(new SOAPObject("issue_due_date")).val(issue_due_date);
|
||||
soapBody.appendChild(new SOAPObject("issue_steps_to_reproduce")).val(issue_steps_to_reproduce);
|
||||
soapBody.appendChild(new SOAPObject("issue_additional_information")).val(issue_additional_information);
|
||||
|
||||
|
||||
var sr = new SOAPRequest("saveMantis",soapBody);
|
||||
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
|
||||
SOAPClient.SendRequest(sr, clb_saveProjekttaskMantis);
|
||||
|
||||
|
||||
// Tags speichern
|
||||
if(mantis_id != '')
|
||||
{
|
||||
var soapBody = new SOAPObject("saveTagsForIssue");
|
||||
soapBody.appendChild(new SOAPObject("mantis_id")).val(mantis_id);
|
||||
soapBody.appendChild(new SOAPObject("issue_tags")).val(issue_tags);
|
||||
soapBody.appendChild(new SOAPObject("issue_tags")).val(issue_tags);
|
||||
|
||||
var sr = new SOAPRequest("saveTagsForIssue",soapBody);
|
||||
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
|
||||
SOAPClient.SendRequest(sr, clb_saveProjekttaskMantis);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// ****
|
||||
@@ -779,7 +779,7 @@ function ProjekttaskUpdateErledigt(event)
|
||||
var col = new Object();
|
||||
var childElt = new Object();
|
||||
//Tree holen
|
||||
var tree = event.currentTarget;
|
||||
var tree = event.currentTarget;
|
||||
//Treecol ermitteln in die geklickt wurde
|
||||
tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, childElt);
|
||||
//abbrechen wenn auf Header oder Scrollbar geklickt wurde
|
||||
@@ -798,7 +798,7 @@ function ProjekttaskUpdateErledigt(event)
|
||||
newval='false';
|
||||
else
|
||||
newval='true';
|
||||
|
||||
|
||||
var soapBody = new SOAPObject("setErledigt");
|
||||
//soapBody.appendChild(new SOAPObject("username")).val('joe');
|
||||
//soapBody.appendChild(new SOAPObject("passwort")).val('waschl');
|
||||
@@ -807,8 +807,8 @@ function ProjekttaskUpdateErledigt(event)
|
||||
|
||||
var sr = new SOAPRequest("setErledigt",soapBody);
|
||||
SOAPClient.Proxy="<?php echo APP_ROOT;?>soap/projekttask.soap.php?"+gettimestamp();
|
||||
|
||||
SOAPClient.SendRequest(sr,function (respObj)
|
||||
|
||||
SOAPClient.SendRequest(sr,function (respObj)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@ require_once('../../config/vilesci.config.inc.php');
|
||||
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
|
||||
echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/projekttaskdetail.overlay.xul.php"?>';
|
||||
echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/mantisdetail.overlay.xul.php"?>';
|
||||
|
||||
?>
|
||||
<overlay id="ProjekttaskOverlay"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
@@ -154,12 +154,12 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/projekt/mantisdetail.overlay.xul.p
|
||||
<tabbox id="projekttask-tabbox" flex="3" orient="vertical">
|
||||
<tabs orient="horizontal" id="projekttask-tabs">
|
||||
<tab id="projekttask-tab-detail" label="Details" />
|
||||
<tab id="projekttask-tab-mantis" label="Mantis" />
|
||||
|
||||
<tab id="projekttask-tab-notizen" label="Notizen" />
|
||||
</tabs>
|
||||
<tabpanels id="projekttask-tabpanels-main" flex="1">
|
||||
<vbox id="box-projekttask-detail" />
|
||||
<vbox id="box-projekttask-mantis" />
|
||||
|
||||
<box class="Notiz" id="box-projekttask-notizen"/>
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
|
||||
@@ -64,7 +64,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<toolbarbutton id="toolbarbutton-ressource-projekt-drucken" label="Drucken" oncommand="foo = window.open('<?php echo APP_ROOT; ?>content/projekt/ressourcenauslastung.php?typ=projekt');foo.print();" image="../skin/images/drucken.png" tooltiptext="Drucken"/>
|
||||
</toolbar>
|
||||
</toolbox>
|
||||
<iframe id="iframe-ressource-projekt" flex="5" src="<?php echo APP_ROOT; ?>content/projekt/ressourcenauslastung.php?typ=projekt" />
|
||||
<iframe id="iframe-ressource-projekt" flex="5" src="<?php echo APP_ROOT; ?>content/projekt/ressourcenauslastung.php?empty" />
|
||||
</vbox>
|
||||
<vbox>
|
||||
<toolbox>
|
||||
@@ -89,4 +89,4 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
</vbox>
|
||||
</overlay>
|
||||
</overlay>
|
||||
|
||||
@@ -259,16 +259,19 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
<method name="DeleteRessource">
|
||||
<method name="DeleteRessource">
|
||||
<parameter name="ressource_id"/>
|
||||
<body>
|
||||
<body>
|
||||
<![CDATA[
|
||||
//debug('Refresh Notiz');
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
try
|
||||
{
|
||||
var col = tree.columns.getColumnFor(document.getAnonymousElementByAttribute(this ,'anonid', 'treecol-ressource-projekt_ressource_id'));
|
||||
var projekt_ressource_id = tree.view.getCellText(tree.currentIndex, col);
|
||||
var projekt_kurzbz = this.getAttribute('projekt_kurzbz');
|
||||
var projektphase_id = this.getAttribute('projektphase_id');
|
||||
//var projekt_ressource_id = this.getAttribute('projekt_ressource_id');
|
||||
|
||||
var soapBody = new SOAPObject("deleteProjektRessource");
|
||||
//soapBody.appendChild(new SOAPObject("username")).val('joe');
|
||||
@@ -286,6 +289,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
|
||||
projektRessource.appendChild(new SOAPObject("projekt_kurzbz")).val('');
|
||||
}
|
||||
projektRessource.appendChild(new SOAPObject("ressource_id")).val(ressource_id);
|
||||
projektRessource.appendChild(new SOAPObject("projekt_ressource_id")).val(projekt_ressource_id);
|
||||
soapBody.appendChild(projektRessource);
|
||||
|
||||
var sr = new SOAPRequest("deleteProjektRessource",soapBody);
|
||||
|
||||
@@ -34,7 +34,12 @@ $datum = date('Y-m-d',$timestamp);
|
||||
$endetimestamp = jump_week($timestamp,$showweeks);
|
||||
$endedatum = date('Y-m-d',$endetimestamp);
|
||||
|
||||
if(isset($_GET['projekt_kurzbz']) && $_GET['projekt_kurzbz']!='')
|
||||
if(isset($_GET['empty']))
|
||||
{
|
||||
echo '<br><br><br>';
|
||||
exit;
|
||||
}
|
||||
elseif(isset($_GET['projekt_kurzbz']) && $_GET['projekt_kurzbz']!='')
|
||||
{
|
||||
$projekt_kurzbz=$_GET['projekt_kurzbz'];
|
||||
}
|
||||
@@ -60,9 +65,10 @@ else
|
||||
$anzahl_warnung = 6;
|
||||
}
|
||||
|
||||
|
||||
foreach($ressource->result as $row)
|
||||
{
|
||||
$ressource_arr[]=$row->bezeichnung;
|
||||
}
|
||||
|
||||
$ressource_arr = array_unique($ressource_arr);
|
||||
|
||||
@@ -117,7 +123,7 @@ foreach($ressource_arr as $bezeichnung)
|
||||
$beistrich=false;
|
||||
$start = $datum_obj->mktime_fromdate($row->start);
|
||||
$ende = $datum_obj->mktime_fromdate($row->ende);
|
||||
if($row->bezeichnung == $bezeichnung
|
||||
if($row->bezeichnung == $bezeichnung
|
||||
&& ($row->start=='' || $start<=$timestamp_kw)
|
||||
&& ($row->ende=='' || $ende>=$timestamp_kw)
|
||||
)
|
||||
@@ -156,10 +162,10 @@ foreach($ressource_arr as $bezeichnung)
|
||||
if($beistrich)
|
||||
$title.=', ';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
$title = mb_substr($title,0,-1);
|
||||
|
||||
|
||||
$htmlrow.='<td title="'.$title.'" align="center">';
|
||||
if($anzahl>=$anzahl_warnung)
|
||||
$htmlrow.='<span class="warning">'.$anzahl.($typ!='projekt'?'/'.$aufwandssumme:'').'</span>';
|
||||
@@ -173,6 +179,7 @@ foreach($ressource_arr as $bezeichnung)
|
||||
ob_flush();
|
||||
}
|
||||
|
||||
echo ' </table>';
|
||||
echo '
|
||||
</body>
|
||||
</html>';
|
||||
|
||||
@@ -1733,6 +1733,7 @@ else
|
||||
$content .= "</tr>";
|
||||
|
||||
$content .= '</tfoot></table>';
|
||||
$content .= "\n";
|
||||
}
|
||||
|
||||
//Aufsplittungen für Mischformen holen
|
||||
@@ -1744,28 +1745,32 @@ else
|
||||
{
|
||||
if ($db->db_num_rows($result) > 0)
|
||||
{
|
||||
$content .= "<br><br><h2>Aufsplittung Mischformen</h2><br>";
|
||||
$content .= "\n<table class='liste table-autosort:0 table-stripeclass:alternate table-autostripe'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='table-sortable:default'>Studiengang</th>";
|
||||
$content .= "<br><br>";
|
||||
$content .= "<h2>Aufsplittung Mischformen</h2><br>";
|
||||
$content .= "\n<table class='liste table-autosort:0 table-stripeclass:alternate table-autostripe'>";
|
||||
$content .= "\n<thead>";
|
||||
$content .= "\n<tr>";
|
||||
$content .= "\n<th class='table-sortable:default'>Studiengang</th>";
|
||||
foreach ($studenttypes as $heading)
|
||||
{
|
||||
$content .= "<th colspan=".$noOrgformen.">$heading</th>";
|
||||
$content .= "\n<th colspan=".$noOrgformen.">$heading</th>";
|
||||
}
|
||||
$content .= "</tr><tr><th> </th>";
|
||||
$content .= "\n</tr>";
|
||||
$content .= "\n<tr>\n<th></th>";
|
||||
|
||||
//orgformheadings (VZ, BB,...) ausgeben
|
||||
for ($i = 0; $i < $noStudenttypes; $i++)
|
||||
{
|
||||
foreach ($orgform_arr as $row_orgform)
|
||||
{
|
||||
$content .= "<th align='center' class='table-sortable:numeric'>";
|
||||
$content .= "\n<th align='center' class='table-sortable:numeric' nowrap>";
|
||||
$content .= $row_orgform;
|
||||
$content .= "</th>";
|
||||
}
|
||||
}
|
||||
$content .= "</tr></thead><tbody>";
|
||||
$content .= "\n</tr>";
|
||||
$content .= "\n</thead>";
|
||||
$content .= "\n<tbody>";
|
||||
|
||||
$sumarr = array();
|
||||
|
||||
@@ -1773,13 +1778,13 @@ else
|
||||
{
|
||||
$content .= "\n";
|
||||
$content .= '<tr>';
|
||||
$content .= "<td>".mb_strtoupper($row->typ.$row->kurzbz)." ($row->kurzbzlang)</td>";
|
||||
$content .= "\n<td>".mb_strtoupper($row->typ.$row->kurzbz)." ($row->kurzbzlang)</td>";
|
||||
foreach ($studenttypes as $key => $value)
|
||||
{
|
||||
foreach ($orgform_arr as $row_orgform)
|
||||
{
|
||||
$fullAlias = $key."_".mb_strtolower($row_orgform);
|
||||
$content .= "<td align='center'>";
|
||||
$content .= "\n<td align='center' nowrap>";
|
||||
$content .= $row->{$fullAlias};
|
||||
$content .= "</td>";
|
||||
//Summe berechnen
|
||||
@@ -1794,14 +1799,15 @@ else
|
||||
}
|
||||
}
|
||||
}
|
||||
$content .= "</tr>";
|
||||
$content .= "\n</tr>";
|
||||
|
||||
$content .= "\n";
|
||||
$content .= '</tbody><tfoot style="font-weight: bold;"><tr>';
|
||||
$content .= "<td>Summe</td>";
|
||||
$content .= "</tbody>";
|
||||
$content .= '<tfoot style="font-weight: bold;"><tr>';
|
||||
$content .= "\n<td>Summe</td>";
|
||||
foreach ($sumarr as $sum)
|
||||
{
|
||||
$content .= "<td align='center'>".$sum."</td>";
|
||||
$content .= "\n<td align='center'>".$sum."</td>";
|
||||
}
|
||||
$content .= "</tfoot></tr>";
|
||||
$content .= '</table>';
|
||||
|
||||
@@ -365,7 +365,6 @@ if(!$error)
|
||||
$error = true;
|
||||
$errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang';
|
||||
}
|
||||
|
||||
//Studentendaten speichern
|
||||
if(!$error)
|
||||
{
|
||||
@@ -377,7 +376,15 @@ if(!$error)
|
||||
$errormsg = 'Fehler beim Laden:'.$student->errormsg;
|
||||
$error = true;
|
||||
}
|
||||
$datum = new datum();
|
||||
|
||||
$gebdatum = $_POST['geburtsdatum'];
|
||||
if($gebdatum!='' && !$datum->checkDatum($gebdatum))
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = 'Geburtsdatum ist nicht korrekt.';
|
||||
$error = true;
|
||||
}
|
||||
if(!$error)
|
||||
{
|
||||
$student->uid = $_POST['uid'];
|
||||
@@ -2296,8 +2303,12 @@ if(!$error)
|
||||
{
|
||||
$dokumente = explode(';',$_POST['dokumente']);
|
||||
$errormsg = '';
|
||||
$sonst = 0;
|
||||
foreach ($dokumente as $dokument_kurzbz)
|
||||
{
|
||||
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
|
||||
continue;
|
||||
|
||||
if($dokument_kurzbz!='')
|
||||
{
|
||||
$dok = new dokument();
|
||||
@@ -2308,6 +2319,8 @@ if(!$error)
|
||||
$dok->insertamum = date('Y-m-d H:i:s');
|
||||
$dok->insertvon = $user;
|
||||
$dok->new = true;
|
||||
if ($dokument_kurzbz === 'Sonst')
|
||||
$sonst++;
|
||||
|
||||
if(!$dok->save())
|
||||
{
|
||||
@@ -2501,8 +2514,13 @@ if(!$error)
|
||||
{
|
||||
$dokumente = explode(';',$_POST['dokumente']);
|
||||
$errormsg = '';
|
||||
$sonst = 0;
|
||||
|
||||
foreach ($dokumente as $dokument_kurzbz)
|
||||
{
|
||||
if ($dokument_kurzbz === 'Sonst' && $sonst !== 0)
|
||||
continue;
|
||||
|
||||
if($dokument_kurzbz!='')
|
||||
{
|
||||
$dok = new dokument();
|
||||
@@ -2514,6 +2532,11 @@ if(!$error)
|
||||
{
|
||||
$errormsg .= "Fehler bei $dokument_kurzbz: $dok->errormsg\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($dokument_kurzbz === 'Sonst')
|
||||
$sonst++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -151,7 +151,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem value="rdf:http://www.technikum-wien.at/mobilitaetsprogramm/rdf#mobilitaetsprogramm_code"
|
||||
label="rdf:http://www.technikum-wien.at/mobilitaetsprogramm/rdf#kurzbz"
|
||||
label="rdf:http://www.technikum-wien.at/mobilitaetsprogramm/rdf#kurzbz - rdf:http://www.technikum-wien.at/mobilitaetsprogramm/rdf#beschreibung"
|
||||
uri="rdf:*"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
|
||||
@@ -892,7 +892,13 @@ function StudentProjektbetreuerAuswahl()
|
||||
document.getElementById('student-projektbetreuer-checkbox-neu').checked=false;
|
||||
|
||||
var gesamtkosten = StudentProjektbetreuerGesamtkosten();
|
||||
|
||||
|
||||
|
||||
if (document.getElementById('student-projektbetreuer-button-beurteilung'))
|
||||
{
|
||||
checkBeurteilung();
|
||||
}
|
||||
|
||||
// Wenn Vertragsdetails angezeigt werden
|
||||
if (projektarbeit_vertragsdetails_anzeigen) {
|
||||
//Reset attributes
|
||||
@@ -1122,6 +1128,12 @@ function StudentProjektbetreuerDetailDisableFields(val)
|
||||
document.getElementById('student-projektbetreuer-button-speichern').disabled=val;
|
||||
document.getElementById('student-projektbetreuer-button-neueperson').disabled=val;
|
||||
document.getElementById('student-projektbetreuer-button-kontaktdaten').disabled=val;
|
||||
|
||||
if (document.getElementById('student-projektbetreuer-button-beurteilung') && val === true)
|
||||
{
|
||||
document.getElementById('student-projektbetreuer-button-beurteilung').disabled=val;
|
||||
document.getElementById('student-projektbetreuer-span-beurteilung').setAttribute("value", '');
|
||||
}
|
||||
}
|
||||
|
||||
// ****
|
||||
|
||||
@@ -520,7 +520,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
</groupbox>
|
||||
|
||||
<!-- Vertragsdetails: Anzeige wird ueber config Eintrag bestimmt -->
|
||||
<vbox>
|
||||
<vbox id="student-projektbetreuer-vbox">
|
||||
<groupbox id="student-projektbetreuer-groupbox-vertragsdetails" hidden="<?php echo $is_hidden ?>">
|
||||
<caption label="Vertragsdetails" />
|
||||
<grid style="overflow:auto; padding:10px;" flex="1">
|
||||
@@ -529,7 +529,7 @@ $is_hidden = (!defined('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN')
|
||||
<column flex="1"/>
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<rows >
|
||||
<label id="student-projektbetreuer-label-vertrag_id" hidden="true" value=""/>
|
||||
<row>
|
||||
<label value="Vertragsstatus:"/>
|
||||
|
||||
@@ -473,7 +473,7 @@ function SyncLVPlan()
|
||||
// ****
|
||||
function OpenManualTempus()
|
||||
{
|
||||
window.open('https://wiki.fhcomplete.org/doku.php?id=tempus:allgemeines','Manual');
|
||||
window.open('https://wiki.fhcomplete.info/doku.php?id=tempus:allgemeines','Manual');
|
||||
}
|
||||
|
||||
// ****
|
||||
|
||||
@@ -47,6 +47,7 @@ class bisverwendung extends basis_db
|
||||
public $dv_art;
|
||||
public $inkludierte_lehre;
|
||||
public $zeitaufzeichnungspflichtig;
|
||||
public $azgrelevant;
|
||||
|
||||
public $ba1bez;
|
||||
public $ba2bez;
|
||||
@@ -122,6 +123,7 @@ class bisverwendung extends basis_db
|
||||
$this->dv_art = $row->dv_art;
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -177,6 +179,24 @@ class bisverwendung extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft das Datum
|
||||
* @param $date = string
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
static public function verifyDate($date, $strict = true)
|
||||
{
|
||||
$dateTime = DateTime::createFromFormat('Y-m-d', $date);
|
||||
if ($strict) {
|
||||
$errors = DateTime::getLastErrors();
|
||||
if (!empty($errors['warning_count'])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return $dateTime !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Daten vor dem Speichern
|
||||
*
|
||||
@@ -189,6 +209,17 @@ class bisverwendung extends basis_db
|
||||
$this->errormsg = 'Vertragsstunden sind ungueltig';
|
||||
return false;
|
||||
}
|
||||
elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn))
|
||||
{
|
||||
$this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn;
|
||||
return false;
|
||||
}
|
||||
elseif(!$this->verifyDate($this->ende) && !empty($this->ende))
|
||||
{
|
||||
$this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -218,13 +249,21 @@ class bisverwendung extends basis_db
|
||||
{
|
||||
$zeitaufzeichnungspflichtig = 'null';
|
||||
}
|
||||
if(is_bool($this->azgrelevant))
|
||||
{
|
||||
$azgrelevant = $this->db_add_param($this->azgrelevant, FHC_BOOLEAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
$azgrelevant = 'null';
|
||||
}
|
||||
|
||||
if($new)
|
||||
{
|
||||
//Neuen Datensatz anlegen
|
||||
$qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode,
|
||||
verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden,
|
||||
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (".
|
||||
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig, azgrelevant) VALUES (".
|
||||
$this->db_add_param($this->ba1code, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->ba2code, FHC_INTEGER).', '.
|
||||
$this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '.
|
||||
@@ -242,7 +281,8 @@ class bisverwendung extends basis_db
|
||||
$this->db_add_param($this->insertvon).', '.
|
||||
$this->db_add_param($this->dv_art).','.
|
||||
$this->db_add_param($this->inkludierte_lehre).','.
|
||||
$zeitaufzeichnungspflichtig. ');';
|
||||
$zeitaufzeichnungspflichtig.','.
|
||||
$azgrelevant. ');';
|
||||
|
||||
}
|
||||
else
|
||||
@@ -266,7 +306,8 @@ class bisverwendung extends basis_db
|
||||
" insertvon=".$this->db_add_param($this->insertvon).",".
|
||||
" dv_art=".$this->db_add_param($this->dv_art).",".
|
||||
" inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",".
|
||||
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.
|
||||
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.",".
|
||||
" azgrelevant =". $azgrelevant.
|
||||
" WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER);
|
||||
}
|
||||
|
||||
@@ -359,7 +400,7 @@ class bisverwendung extends basis_db
|
||||
$obj->dv_art = $row->dv_art;
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
@@ -416,6 +457,7 @@ class bisverwendung extends basis_db
|
||||
$obj->dv_art = $row->dv_art;
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -474,6 +516,7 @@ class bisverwendung extends basis_db
|
||||
$obj->dv_art = $row->dv_art;
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -495,12 +538,13 @@ class bisverwendung extends basis_db
|
||||
{
|
||||
//laden des Datensatzes
|
||||
$qry = "SELECT
|
||||
*
|
||||
*, tbl_hauptberuf.bezeichnung as hauptberuf
|
||||
FROM
|
||||
bis.tbl_bisverwendung
|
||||
LEFT JOIN bis.tbl_hauptberuf USING(hauptberufcode)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -514,6 +558,7 @@ class bisverwendung extends basis_db
|
||||
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$this->hauptberufcode = $row->hauptberufcode;
|
||||
$this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
|
||||
$this->hauptberuf = $row->hauptberuf;
|
||||
$this->habilitation = $this->db_parse_bool($row->habilitation);
|
||||
$this->beginn = $row->beginn;
|
||||
$this->ende = $row->ende;
|
||||
@@ -525,6 +570,7 @@ class bisverwendung extends basis_db
|
||||
$this->dv_art = $row->dv_art;
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -553,7 +599,7 @@ class bisverwendung extends basis_db
|
||||
(beginn<=now() OR beginn IS NULL)
|
||||
AND
|
||||
(ende>=now() OR ende IS NULL)
|
||||
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -578,6 +624,7 @@ class bisverwendung extends basis_db
|
||||
$this->dv_art = $row->dv_art;
|
||||
$this->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -640,6 +687,7 @@ class bisverwendung extends basis_db
|
||||
$obj->dv_art = $row->dv_art;
|
||||
$obj->inkludierte_lehre = $row->inkludierte_lehre;
|
||||
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
|
||||
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
@@ -768,5 +816,35 @@ class bisverwendung extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function inZeitaufzeichnungspflichtigPeriod($PeriodStartDate, $PeriodEndDate)
|
||||
{
|
||||
$PeriodStartDateISO = date('Y-m-d', strtotime($PeriodStartDate));
|
||||
$PeriodEndDateISO = date('Y-m-d', strtotime($PeriodEndDate));
|
||||
|
||||
$beginn = date('Y-m-d', strtotime($this->beginn));
|
||||
$end = date('Y-m-d', strtotime($this->ende));
|
||||
$zp = $this->zeitaufzeichnungspflichtig;
|
||||
|
||||
if ($zp)
|
||||
{
|
||||
if (
|
||||
(($PeriodStartDateISO >= $beginn) && (($PeriodStartDateISO <= $end) || is_null($this->ende)))
|
||||
||
|
||||
(($PeriodEndDateISO >= $beginn) && (($PeriodEndDateISO <= $end) || is_null($this->ende)))
|
||||
)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+24
-5
@@ -148,17 +148,37 @@ class datum
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist UND ob es sich um ein gültiges Datum handelt
|
||||
* @return true wenn ok, false wenn falsches Format und/oder nicht gültig
|
||||
*/
|
||||
public function checkDatum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$",$datum) || mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$",$datum))
|
||||
return true;
|
||||
//Format dd.mm.yyyy
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$", $datum))
|
||||
{
|
||||
|
||||
$year = substr($datum, 6, 4);
|
||||
$month = substr($datum, 3, 2);
|
||||
$day = substr($datum, 0, 2);
|
||||
}
|
||||
|
||||
//Format yyyy-mm-dd
|
||||
elseif(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$", $datum))
|
||||
{
|
||||
$year = substr($datum, 0, 4);
|
||||
$month = substr($datum, 5, 2);
|
||||
$day = substr($datum, 8, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return checkdate($month, $day, $year);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Zieht ein Datum von einem anderen ab, und gibt die differenz in Tagen zurueck (mit Vorzeichen)
|
||||
* @param $datum1
|
||||
@@ -395,6 +415,5 @@ class datum
|
||||
{
|
||||
return intval(substr($timestring, 0, 2)) + intval(substr($timestring, 3, 2)) / 60;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
+141
-9
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 fhcomplete.org
|
||||
/* Copyright (C) 2021 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
@@ -339,11 +339,11 @@ class dokument extends basis_db
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_dokumentprestudent.* , tbl_dokument.*
|
||||
FROM public.tbl_dokumentprestudent
|
||||
FROM public.tbl_dokumentprestudent
|
||||
JOIN public.tbl_dokument USING(dokument_kurzbz)
|
||||
LEFT JOIN public.tbl_vorlage ON (tbl_dokumentprestudent.dokument_kurzbz = tbl_vorlage.vorlage_kurzbz)
|
||||
WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if(!$archivdokumente)
|
||||
{
|
||||
$qry.=" AND (tbl_vorlage.archivierbar = FALSE OR tbl_vorlage.archivierbar IS NULL)";
|
||||
@@ -401,7 +401,7 @@ class dokument extends basis_db
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_dokument.* , tbl_dokumentstudiengang.*
|
||||
FROM public.tbl_dokument
|
||||
FROM public.tbl_dokument
|
||||
JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz)
|
||||
LEFT JOIN public.tbl_vorlage ON (tbl_dokument.dokument_kurzbz = tbl_vorlage.vorlage_kurzbz)
|
||||
WHERE studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER);
|
||||
@@ -836,11 +836,11 @@ class dokument extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert die Studiengänge bei denen das übergebene Dokument benötigt wird
|
||||
* @param string $dokument_kurzbz Kurzbz des Dokuments
|
||||
* @param integer $person_id Optional. Die Dokumente werden zusätzlich auf die Studiengänge eingeschränkt für die sich eine Person beworben hat.
|
||||
* @param integer $person_id Optional. Die Dokumente werden zusätzlich auf die Studiengänge eingeschränkt für die sich eine Person beworben hat.
|
||||
* @return object Objekt mit den Studiengängen oder false.
|
||||
*/
|
||||
public function getStudiengaengeDokument($dokument_kurzbz, $person_id = null)
|
||||
@@ -854,7 +854,7 @@ class dokument extends basis_db
|
||||
AND person_id =".$this->db_add_param($person_id, FHC_INTEGER)."
|
||||
AND tbl_prestudentstatus.status_kurzbz = 'Interessent'
|
||||
AND get_rolle_prestudent (prestudent_id, NULL) NOT IN ('Abgewiesener','Abbrecher')
|
||||
|
||||
|
||||
ORDER BY kuerzel";
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
@@ -869,12 +869,12 @@ class dokument extends basis_db
|
||||
$stg_obj->studiengang_kz = $row->studiengang_kz;
|
||||
$stg_obj->english = $row->english;
|
||||
$stg_obj->stufe = $row->stufe;
|
||||
|
||||
|
||||
$this->result[] = $stg_obj;
|
||||
}
|
||||
return $stg_obj;
|
||||
}
|
||||
else
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -882,6 +882,138 @@ class dokument extends basis_db
|
||||
$this->errormsg="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Akzeptiert ein bestimmtes Dokument
|
||||
* @param char $dokument_kurzbz Bezeichner Dokument.
|
||||
* @param int $person_id Personenkennzeichen.
|
||||
* @return boolean true wenn akzeptiert bzw geprüft ohne Akzeptieren, false wenn Fehler
|
||||
*/
|
||||
public function akzeptiereDokument($dokument_kurzbz, $person_id)
|
||||
{
|
||||
$db = new basis_db();
|
||||
$arrayDoksZuAkzeptieren = array();
|
||||
|
||||
//get Prestudent_ids
|
||||
$qry = "SELECT
|
||||
prestudent_id
|
||||
FROM
|
||||
tbl_prestudent ps, tbl_studiengang sg
|
||||
WHERE
|
||||
ps.studiengang_kz = sg.studiengang_kz
|
||||
AND sg.typ = 'm'
|
||||
AND person_id = ".$this->db_add_param($person_id)."
|
||||
AND not exists(
|
||||
SELECT *
|
||||
from tbl_dokumentprestudent dok
|
||||
where dok.prestudent_id = ps.prestudent_id
|
||||
and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).")";
|
||||
|
||||
//gibt ein Array von zu akzeptierenden Dokumenten zurück
|
||||
if ($db->db_query($qry))
|
||||
{
|
||||
$num_rows = $db->db_num_rows();
|
||||
|
||||
if ($num_rows > 0)
|
||||
{
|
||||
while ($row = $db->db_fetch_object())
|
||||
{
|
||||
$arrayDoksZuAkzeptieren[] = $row->prestudent_id;
|
||||
}
|
||||
|
||||
//für alle prestudent_ids das Dokument akzeptieren
|
||||
$qry = "INSERT INTO public.tbl_dokumentprestudent(dokument_kurzbz, prestudent_id) VALUES";
|
||||
|
||||
foreach ($arrayDoksZuAkzeptieren as $prestudent_id)
|
||||
{
|
||||
$qry .= "(".$this->db_add_param($dokument_kurzbz). ",". $prestudent_id. ")";
|
||||
|
||||
if (next($arrayDoksZuAkzeptieren) == true)
|
||||
{
|
||||
$qry .= ",";
|
||||
}
|
||||
}
|
||||
$qry .= ";";
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Akzeptieren';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* entakzeptiert ein bestimmtes Dokument
|
||||
* @param char $dokument_kurzbz Kurzbezeichnung des zu entakzeptierenden Dokuments.
|
||||
* @param int $person_id Personenkennzeichen.
|
||||
* @return boolean true wenn entakzeptiert bzw geprüft ohne Entakzeptieren, false wenn Fehler
|
||||
*/
|
||||
public function entakzeptiereDokument($dokument_kurzbz, $person_id)
|
||||
{
|
||||
$db = new basis_db();
|
||||
$arrayDoksZuEntakzeptieren = array();
|
||||
|
||||
//get Prestudent_ids
|
||||
$qry = "SELECT
|
||||
prestudent_id
|
||||
from
|
||||
tbl_dokumentprestudent
|
||||
join
|
||||
tbl_prestudent using (prestudent_id)
|
||||
where
|
||||
person_id = ".$this->db_add_param($person_id)."
|
||||
and dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz);
|
||||
|
||||
//gibt ein Array von zu Entakzeptierenden Dokumenten zurück
|
||||
if ($db->db_query($qry))
|
||||
{
|
||||
$num_rows = $db->db_num_rows();
|
||||
|
||||
if ($num_rows > 0)
|
||||
{
|
||||
while ($row = $db->db_fetch_object())
|
||||
{
|
||||
$arrayDoksZuEntakzeptieren[] = $row->prestudent_id;
|
||||
}
|
||||
|
||||
//für alle prestudent_ids das Dokument Entakzeptieren
|
||||
$qry = "DELETE FROM public.tbl_dokumentprestudent WHERE prestudent_id in (";
|
||||
|
||||
foreach ($arrayDoksZuEntakzeptieren as $prestudent_id)
|
||||
{
|
||||
$qry .= $prestudent_id;
|
||||
|
||||
if (next($arrayDoksZuEntakzeptieren) == true)
|
||||
{
|
||||
$qry .= ",";
|
||||
}
|
||||
}
|
||||
$qry .= ") AND dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz).";";
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Entakzeptieren';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1121,4 +1121,57 @@ function setLeadingZero($number, $length = 2)
|
||||
return str_pad($number, $length, "0", STR_PAD_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a new token for diffent use cases. Default token length is 64
|
||||
* - Reading messages
|
||||
* - Forgotten password
|
||||
* - etc
|
||||
* Returns null on failure
|
||||
*/
|
||||
function generateUniqueToken($length = 64)
|
||||
{
|
||||
$token = null;
|
||||
$firstGeneratedToken = null;
|
||||
|
||||
// For PHP 7 you can use random_bytes()
|
||||
if (function_exists('random_bytes'))
|
||||
{
|
||||
try
|
||||
{
|
||||
$firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes...
|
||||
}
|
||||
catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null
|
||||
}
|
||||
// For PHP >= 5.3 and < 7 and openssl is available
|
||||
elseif (function_exists('openssl_random_pseudo_bytes'))
|
||||
{
|
||||
$firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong);
|
||||
// If the token generation ended with errors OR the generated token is NOT strong enough
|
||||
if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null
|
||||
}
|
||||
|
||||
if ($firstGeneratedToken != null) // If everything was fine
|
||||
{
|
||||
// base64 is about 33% longer, so we need to truncate the result
|
||||
$token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,');
|
||||
}
|
||||
|
||||
// Fallback to mt_rand if:
|
||||
// php < 5.3
|
||||
// OR no openssl is available
|
||||
// OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong
|
||||
// OR one of the previous methods failed
|
||||
if ($token == null)
|
||||
{
|
||||
$token = ''; // set $token as an empty string
|
||||
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
|
||||
$charactersLength = strlen($characters) - 1;
|
||||
|
||||
// Select some random characters
|
||||
for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)];
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -139,7 +139,7 @@ class gemeinde extends basis_db
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
//naechste ID aus der Sequence holen
|
||||
$qry="SELECT currval('tbl_gemeinde_gemeinde_id_seq') as id;";
|
||||
$qry="SELECT currval('bis.tbl_gemeinde_gemeinde_id_seq') as id;";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -219,4 +219,4 @@ class gemeinde extends basis_db
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
+619
-618
File diff suppressed because it is too large
Load Diff
@@ -691,10 +691,11 @@ class organisationseinheit extends basis_db
|
||||
*
|
||||
* @param string $user uid
|
||||
* @param integer $zeitraum Anzahl Tage in die Vergangenheit, die fuer das Auftreten der OE beruecksichtigt werden sollen
|
||||
* @param integer $anzahl_ereignisse default: 3 Wie oft soll diese OE mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
|
||||
* @param string $anzahl_ereignisse default: 3 Wie oft soll diese OE mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
|
||||
* @param boolean $aktiv
|
||||
* @param array $funktion_zuordnungen Einschränkung nach zugeordneten Funktionen (Gültigkeitszeitraum heute - 1 Monat 1 Tag nach Gültigkeitsende)
|
||||
*/
|
||||
public function getFrequent($user, $zeitraum=null, $anzahl_ereignisse='3', $aktiv=null)
|
||||
public function getFrequent($user, $zeitraum=null, $anzahl_ereignisse='3', $aktiv=null, $funktion_zuordnungen=array())
|
||||
{
|
||||
if(!is_numeric($anzahl_ereignisse))
|
||||
{
|
||||
@@ -707,36 +708,51 @@ class organisationseinheit extends basis_db
|
||||
else
|
||||
$zeit = "";
|
||||
|
||||
$qry = "SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
count(tbl_zeitaufzeichnung.zeitaufzeichnung_id)
|
||||
FROM campus.tbl_zeitaufzeichnung
|
||||
JOIN public.tbl_organisationseinheit ON(oe_kurzbz IN (oe_kurzbz_1,oe_kurzbz_2))
|
||||
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
|
||||
$zeit
|
||||
GROUP BY tbl_organisationseinheit.oe_kurzbz HAVING COUNT(*) > $anzahl_ereignisse
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
'0'
|
||||
FROM public.tbl_organisationseinheit";
|
||||
$qry = "SELECT * FROM (
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
count(tbl_zeitaufzeichnung.zeitaufzeichnung_id)
|
||||
FROM campus.tbl_zeitaufzeichnung
|
||||
JOIN public.tbl_organisationseinheit ON(oe_kurzbz IN (oe_kurzbz_1,oe_kurzbz_2))
|
||||
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
|
||||
$zeit
|
||||
GROUP BY tbl_organisationseinheit.oe_kurzbz HAVING COUNT(*) > $anzahl_ereignisse
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
'0'
|
||||
FROM public.tbl_organisationseinheit";
|
||||
|
||||
if(!is_null($aktiv))
|
||||
$qry.=" WHERE aktiv=".$this->db_add_param($aktiv, FHC_BOOLEAN);
|
||||
|
||||
$qry .=" ORDER BY count DESC,bezeichnung,oe_kurzbz";
|
||||
$qry .=") oes";
|
||||
|
||||
if (isset($funktion_zuordnungen) && is_array($funktion_zuordnungen) && count($funktion_zuordnungen) > 0)
|
||||
{
|
||||
$qry .= " WHERE EXISTS (
|
||||
SELECT 1 FROM public.tbl_benutzerfunktion
|
||||
WHERE uid = ".$this->db_add_param($user)."
|
||||
AND funktion_kurzbz IN (".$this->db_implode4SQL($funktion_zuordnungen).")
|
||||
AND oe_kurzbz = oes.oe_kurzbz
|
||||
AND (datum_von <= now() OR datum_von IS NULL)
|
||||
AND (datum_bis + interval '1 month 1 day' >= now() OR datum_bis IS NULL)
|
||||
)";
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY count DESC,bezeichnung,oe_kurzbz";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
|
||||
@@ -81,7 +81,9 @@ class organisationsform extends basis_db
|
||||
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
/* Copyright (C) 2007 fhcomplete.org
|
||||
/* Copyright (C) 2021 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
@@ -16,8 +16,9 @@
|
||||
* 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>.
|
||||
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
|
||||
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>.
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/person.class.php');
|
||||
require_once(dirname(__FILE__).'/log.class.php');
|
||||
@@ -2215,9 +2216,9 @@ class prestudent extends person
|
||||
WHERE laststatus NOT IN ('Abbrecher', 'Abgewiesener', 'Absolvent')
|
||||
AND priorisierung <= ".$this->db_add_param($priorisierungAbsolut, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
if ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
return $row->prio_relativ;
|
||||
}
|
||||
@@ -2232,6 +2233,222 @@ class prestudent extends person
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag besitzt, der die ZGV Master ersetzt
|
||||
* @param int $person_id ID der zu überprüfenden Person.
|
||||
* @return true wenn vorhanden
|
||||
* false wenn nicht vorhanden
|
||||
* false und errormsg wenn Fehler aufgetreten ist
|
||||
*/
|
||||
public function existsZGVIntern($person_id)
|
||||
{
|
||||
if (!is_numeric($person_id))
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent
|
||||
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 status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
|
||||
AND typ in ('b','m','d')";
|
||||
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($row->anzahl > 0)
|
||||
{
|
||||
$this->errormsg = '';
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = '';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Befüllt MasterZGV-Felder: Nation mit Österreich und MasterZGV-code mit FH-Bachelor(I)
|
||||
* @param int $person_id Personenkennzeichen.
|
||||
* @param varchar $ort Ort.
|
||||
* @return true wenn erfolgreich durchgeführt
|
||||
* false und errormsg wenn ein Fehler aufgetreten ist
|
||||
*/
|
||||
public function setZGVMasterFields($person_id, $ort)
|
||||
{
|
||||
if (!is_numeric($person_id))
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$db = new basis_db();
|
||||
$arrayleereManations = array();
|
||||
|
||||
//all prestudent_ids mit Status Interessent
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
public.tbl_prestudent
|
||||
JOIN
|
||||
public.tbl_studiengang USING (studiengang_kz)
|
||||
WHERE
|
||||
person_id = ".$this->db_add_param($person_id)."
|
||||
AND
|
||||
typ ='m'
|
||||
And
|
||||
get_rolle_prestudent(prestudent_id, null) = 'Interessent';";
|
||||
|
||||
if ($db->db_query($qry))
|
||||
{
|
||||
$num_rows = $db->db_num_rows();
|
||||
|
||||
if ($num_rows > 0)
|
||||
{
|
||||
while ($row = $db->db_fetch_object())
|
||||
{
|
||||
$arrayleereManations[] = $row->prestudent_id;
|
||||
}
|
||||
|
||||
if ($arrayleereManations)
|
||||
{
|
||||
$qry = "UPDATE
|
||||
public.tbl_prestudent
|
||||
SET
|
||||
(zgvmanation, zgvmaort, zgvmas_code) = ('A',".$this->db_add_param($ort).",1)
|
||||
WHERE
|
||||
prestudent_id in (";
|
||||
|
||||
foreach ($arrayleereManations as $prestudent_id)
|
||||
{
|
||||
$qry .= $prestudent_id;
|
||||
|
||||
if (next($arrayleereManations) == true)
|
||||
{
|
||||
$qry .= ",";
|
||||
}
|
||||
}
|
||||
$qry .= ");";
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Eintragen zgvMasterFields';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft, ob eine Person einen aktuellen PreStudentstatus-Eintrag Interessent für einen Masterstudiengang besitzt
|
||||
* @param int $person_id ID der zu überprüfenden Person.
|
||||
* @return true wenn vorhanden, false wenn nicht vorhanden
|
||||
*/
|
||||
public function existsStatusInteressentMaster($person_id)
|
||||
{
|
||||
if (!is_numeric($person_id))
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$db = new basis_db();
|
||||
$prestudentsOfMaster = array();
|
||||
|
||||
$qry = "SELECT
|
||||
prestudent_id
|
||||
FROM
|
||||
tbl_prestudent ps, tbl_studiengang sg
|
||||
WHERE
|
||||
ps.studiengang_kz = sg.studiengang_kz
|
||||
AND
|
||||
sg.typ in ('m')
|
||||
AND
|
||||
person_id = ".$this->db_add_param($person_id)."
|
||||
And
|
||||
get_rolle_prestudent(prestudent_id, null) = 'Interessent';";
|
||||
|
||||
if ($db->db_query($qry))
|
||||
{
|
||||
$num_rows = $db->db_num_rows();
|
||||
if ($num_rows > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Liefert den wahrscheinlichen Studiengang der MasterZGV einer Person
|
||||
* @param int $person_id ID der zu überprüfenden Person.
|
||||
* @return string studiengangkurzbzlang
|
||||
*/
|
||||
public function getZGVMasterStg($person_id)
|
||||
{
|
||||
if (!is_numeric($person_id))
|
||||
{
|
||||
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT kurzbzlang
|
||||
FROM public.tbl_prestudent
|
||||
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 status_kurzbz in ('Absolvent','Diplomand','Unterbrecher','Student')
|
||||
AND typ in ('b','m','d')
|
||||
ORDER BY status_kurzbz ASC
|
||||
LIMIT 1;";
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
$stg = $row->kurzbzlang;
|
||||
return $stg;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+239
-124
@@ -28,26 +28,25 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class projekt extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $result = array(); // projekt Objekt
|
||||
public $new; // boolean
|
||||
public $result = array(); // projekt Objekt
|
||||
|
||||
//Tabellenspalten
|
||||
public $projekt_kurzbz; // string
|
||||
public $nummer; // string
|
||||
public $titel; // string
|
||||
public $beschreibung; // string
|
||||
public $beginn; // date
|
||||
public $ende; // date
|
||||
public $oe_kurzbz; // string
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // string
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // string
|
||||
public $projekt_kurzbz; // string
|
||||
public $nummer; // string
|
||||
public $titel; // string
|
||||
public $beschreibung; // string
|
||||
public $beginn; // date
|
||||
public $ende; // date
|
||||
public $oe_kurzbz; // string
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // string
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // string
|
||||
public $budget;
|
||||
public $farbe;
|
||||
public $anzahl_ma; // integer
|
||||
public $aufwand_pt; // integer
|
||||
|
||||
public $anzahl_ma; // integer
|
||||
public $aufwand_pt; // integer
|
||||
|
||||
|
||||
/**
|
||||
@@ -58,23 +57,21 @@ class projekt extends basis_db
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($projekt_kurzbz != null)
|
||||
if ($projekt_kurzbz != null)
|
||||
$this->load($projekt_kurzbz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz
|
||||
* @param string $projekt_kurzbz Kurzbz des Projekts.
|
||||
* @param string $projekt_kurzbz Kurzbz des Projekts.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load($projekt_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
$qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
if ($row = $this->db_fetch_object()) {
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->nummer = $row->nummer;
|
||||
$this->titel = $row->titel;
|
||||
@@ -102,30 +99,28 @@ class projekt extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle aktuellen Projekte
|
||||
* @param bool $filter_kommende Lädt auch alle zukünftigen.
|
||||
/**
|
||||
* Laedt alle aktuellen Projekte
|
||||
* @param bool $filter_kommende Lädt auch alle zukünftigen.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteAktuell($filter_kommende = false, $oe = null)
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteAktuell($filter_kommende = false, $oe = null)
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
|
||||
|
||||
if($filter_kommende)
|
||||
$qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
|
||||
else
|
||||
$qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
|
||||
if ($filter_kommende)
|
||||
$qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
|
||||
else
|
||||
$qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
|
||||
|
||||
|
||||
if (!is_null($oe))
|
||||
$qry .= ' AND oe_kurzbz='.$this->db_add_param($oe);
|
||||
if (!is_null($oe))
|
||||
$qry .= ' AND oe_kurzbz=' . $this->db_add_param($oe);
|
||||
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -150,26 +145,24 @@ class projekt extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Projekte die zwischen beginn und ende liegen
|
||||
* @param date $beginn Anfang.
|
||||
* @param date $ende Ende.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteInZeitraum($beginn, $ende, $oe = null)
|
||||
{
|
||||
$qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn);
|
||||
/**
|
||||
* Laedt alle Projekte die zwischen beginn und ende liegen
|
||||
* @param date $beginn Anfang.
|
||||
* @param date $ende Ende.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteInZeitraum($beginn, $ende, $oe = null)
|
||||
{
|
||||
$qry = 'select * from fue.tbl_projekt where beginn <= ' . $this->db_add_param($ende) . ' and ende >= ' . $this->db_add_param($beginn);
|
||||
if (!is_null($oe))
|
||||
$qry .= " AND oe_kurzbz=".$this->db_add_param($oe);
|
||||
$qry .= " AND oe_kurzbz=" . $this->db_add_param($oe);
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
//echo $qry;
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -193,7 +186,7 @@ class projekt extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -205,13 +198,11 @@ class projekt extends basis_db
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt';
|
||||
if (!is_null($oe))
|
||||
$qry .= " WHERE oe_kurzbz=".$this->db_add_param($oe);
|
||||
$qry .= " WHERE oe_kurzbz=" . $this->db_add_param($oe);
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
//echo $qry;
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -245,26 +236,21 @@ class projekt extends basis_db
|
||||
protected function validate()
|
||||
{
|
||||
//Gesamtlaenge pruefen
|
||||
if ($this->projekt_kurzbz == null)
|
||||
{
|
||||
if ($this->projekt_kurzbz == null) {
|
||||
$this->errormsg = 'Projekt kurzbz darf nicht NULL sein!';
|
||||
}
|
||||
if ($this->oe_kurzbz == null)
|
||||
{
|
||||
if ($this->oe_kurzbz == null) {
|
||||
$this->errormsg = 'OE kurbz darf nicht NULL sein!';
|
||||
}
|
||||
if (mb_strlen($this->projekt_kurzbz) > 16)
|
||||
{
|
||||
if (mb_strlen($this->projekt_kurzbz) > 16) {
|
||||
$this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if (mb_strlen($this->nummer) > 8)
|
||||
{
|
||||
if (mb_strlen($this->nummer) > 8) {
|
||||
$this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if (mb_strlen($this->titel) > 256)
|
||||
{
|
||||
if (mb_strlen($this->titel) > 256) {
|
||||
$this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
@@ -283,52 +269,50 @@ class projekt extends basis_db
|
||||
public function save($new = null)
|
||||
{
|
||||
//Variablen pruefen
|
||||
if(!$this->validate())
|
||||
if (!$this->validate())
|
||||
return false;
|
||||
|
||||
if ($new == null)
|
||||
$new = $this->new;
|
||||
|
||||
if ($new)
|
||||
{
|
||||
if ($new) {
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('.
|
||||
$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
$this->db_add_param($this->nummer).', '.
|
||||
$this->db_add_param($this->titel).', '.
|
||||
$this->db_add_param($this->beschreibung).', '.
|
||||
$this->db_add_param($this->beginn).', '.
|
||||
$this->db_add_param($this->ende).', '.
|
||||
$this->db_add_param($this->budget).', '.
|
||||
$this->db_add_param($this->farbe).', '.
|
||||
$this->db_add_param($this->oe_kurzbz).','.
|
||||
$this->db_add_param($this->aufwand_pt).','.
|
||||
$this->db_add_param($this->anzahl_ma).','.
|
||||
$this->db_add_param($this->aufwandstyp_kurzbz).');';
|
||||
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES(' .
|
||||
$this->db_add_param($this->projekt_kurzbz) . ', ' .
|
||||
$this->db_add_param($this->nummer) . ', ' .
|
||||
$this->db_add_param($this->titel) . ', ' .
|
||||
$this->db_add_param($this->beschreibung) . ', ' .
|
||||
$this->db_add_param($this->beginn) . ', ' .
|
||||
$this->db_add_param($this->ende) . ', ' .
|
||||
$this->db_add_param($this->budget) . ', ' .
|
||||
$this->db_add_param($this->farbe) . ', ' .
|
||||
$this->db_add_param($this->oe_kurzbz) . ',' .
|
||||
$this->db_add_param($this->aufwand_pt) . ',' .
|
||||
$this->db_add_param($this->anzahl_ma) . ',' .
|
||||
$this->db_add_param($this->aufwandstyp_kurzbz) . ');';
|
||||
}
|
||||
else
|
||||
{
|
||||
//Updaten des bestehenden Datensatzes
|
||||
|
||||
$qry = 'UPDATE fue.tbl_projekt SET '.
|
||||
'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
'nummer='.$this->db_add_param($this->nummer).', '.
|
||||
'titel='.$this->db_add_param($this->titel).', '.
|
||||
'beschreibung='.$this->db_add_param($this->beschreibung).', '.
|
||||
'beginn='.$this->db_add_param($this->beginn).', '.
|
||||
'ende='.$this->db_add_param($this->ende).', '.
|
||||
'budget='.$this->db_add_param($this->budget).', '.
|
||||
'farbe='.$this->db_add_param($this->farbe).', '.
|
||||
'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '.
|
||||
'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '.
|
||||
'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '.
|
||||
'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '.
|
||||
'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';';
|
||||
$qry = 'UPDATE fue.tbl_projekt SET ' .
|
||||
'projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ', ' .
|
||||
'nummer=' . $this->db_add_param($this->nummer) . ', ' .
|
||||
'titel=' . $this->db_add_param($this->titel) . ', ' .
|
||||
'beschreibung=' . $this->db_add_param($this->beschreibung) . ', ' .
|
||||
'beginn=' . $this->db_add_param($this->beginn) . ', ' .
|
||||
'ende=' . $this->db_add_param($this->ende) . ', ' .
|
||||
'budget=' . $this->db_add_param($this->budget) . ', ' .
|
||||
'farbe=' . $this->db_add_param($this->farbe) . ', ' .
|
||||
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ', ' .
|
||||
'anzahl_ma=' . $this->db_add_param($this->anzahl_ma) . ', ' .
|
||||
'aufwand_pt=' . $this->db_add_param($this->aufwand_pt) . ', ' .
|
||||
'aufwandstyp_kurzbz=' . $this->db_add_param($this->aufwandstyp_kurzbz) . ' ' .
|
||||
'WHERE projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ';';
|
||||
}
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -345,10 +329,9 @@ class projekt extends basis_db
|
||||
*/
|
||||
public function delete($projekt_kurzbz)
|
||||
{
|
||||
$qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
$qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -367,7 +350,7 @@ class projekt extends basis_db
|
||||
*/
|
||||
function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen = false)
|
||||
{
|
||||
$qry = "SELECT DISTINCT
|
||||
$qry = "SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_ressource
|
||||
@@ -377,12 +360,12 @@ class projekt extends basis_db
|
||||
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
|
||||
AND
|
||||
(
|
||||
mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." OR
|
||||
student_uid=".$this->db_add_param($mitarbeiter_uid)."
|
||||
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
|
||||
student_uid=" . $this->db_add_param($mitarbeiter_uid) . "
|
||||
)";
|
||||
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
|
||||
SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
@@ -401,12 +384,10 @@ class projekt extends basis_db
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
if ($result = $this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object($result)) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -427,16 +408,86 @@ class projekt extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert Ein Array mit Porjekten von allen Projekten des Mitarbeiters mit UID.
|
||||
* Optional auch mit den Zuteilungen zu Projektphasen.
|
||||
* @param string $mitarbeiter_uid MitarbeiterUID.
|
||||
* @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function getProjekteListForMitarbeiter($mitarbeiter_uid, $projektphasen = false)
|
||||
{
|
||||
$projectList = array();
|
||||
$qry = "SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_ressource
|
||||
JOIN fue.tbl_projekt_ressource USING(ressource_id)
|
||||
JOIN fue.tbl_projekt USING(projekt_kurzbz)
|
||||
WHERE (beginn<=now() or beginn is null)
|
||||
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
|
||||
AND
|
||||
(
|
||||
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
|
||||
student_uid=" . $this->db_add_param($mitarbeiter_uid) . "
|
||||
)";
|
||||
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
|
||||
SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) OR (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if ($result = $this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object($result)) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->titel = $row->titel;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->beginn = $row->beginn;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
|
||||
$this->result[] = $obj;
|
||||
|
||||
array_push($projectList, $obj);
|
||||
}
|
||||
return $projectList;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->erromsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getProjektFromBestellung($bestellung_id)
|
||||
{
|
||||
$qry = "select * from fue.tbl_projekt
|
||||
join wawi.tbl_projekt_bestellung USING (projekt_kurzbz)
|
||||
where bestellung_id= ".$this->db_add_param($bestellung_id);
|
||||
where bestellung_id= " . $this->db_add_param($bestellung_id);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
if ($row = $this->db_fetch_object()) {
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->nummer = $row->nummer;
|
||||
$this->titel = $row->titel;
|
||||
@@ -463,5 +514,69 @@ class projekt extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert True zurück wenn die angegebenen Start und Endzeitpunkt der Arbeitsdauer in die Projektdauer fallen
|
||||
* @param string $mitarbeiter_uid MitarbeiterUID.
|
||||
* @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function checkProjectInCorrectTime($projekt_kurzbz, $give_project_start, $give_projekt_ende)
|
||||
{
|
||||
if(empty($projekt_kurzbz))
|
||||
return true;
|
||||
try
|
||||
{
|
||||
$projekt = $this->getProjectByKurzbz($projekt_kurzbz);
|
||||
if(strtotime($projekt->beginn))
|
||||
$projekt_start = date('Y-m-d', strtotime($projekt->beginn));
|
||||
else
|
||||
$projekt_start = NULL;
|
||||
if(strtotime($projekt->ende))
|
||||
$projekt_ende = date('Y-m-d', strtotime($projekt->ende));
|
||||
else
|
||||
$projekt_ende = NULL;
|
||||
|
||||
$given_start = date('Y-m-d', strtotime($give_project_start));
|
||||
$given_ende = date('Y-m-d', strtotime($give_projekt_ende));
|
||||
|
||||
if ((empty($projekt_start) || $given_start >= $projekt_start) && (empty($projekt_ende) || $given_ende <= $projekt_ende))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
public function getProjectByKurzbz($projekt_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projekt
|
||||
WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
$row = $this->db_fetch_object($result);
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->titel = $row->titel;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->beginn = $row->beginn;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -335,7 +335,7 @@ class projektbetreuer extends basis_db
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all projektarbeiten by person (only with stundensatz > 0)
|
||||
* Retrieves all projektarbeiten by person
|
||||
* @param $person_id
|
||||
* @return boolean If succeeded true and result-array with objects of each projektarbeit of the person.
|
||||
*/
|
||||
@@ -349,8 +349,6 @@ class projektbetreuer extends basis_db
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
WHERE
|
||||
(stundensatz IS NOT NULL) AND (stundensatz > 0)
|
||||
AND
|
||||
person_id =' . $this->db_add_param($person_id, FHC_INTEGER);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
@@ -391,5 +389,130 @@ class projektbetreuer extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND parb.student_uid = ".$this->db_add_param($student_uid)."
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM lehre.tbl_projektbetreuer
|
||||
WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)."
|
||||
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";
|
||||
|
||||
if ($betr=$this->db_query($qry_betr))
|
||||
{
|
||||
$row_betr = $this->db_fetch_object($betr);
|
||||
|
||||
if ($row_betr)
|
||||
return $row_betr;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert Token für externen Zweitbetreuer wenn noch kein Token vorhanden ist.
|
||||
* @param int $zweitbegutachter_person_id
|
||||
* @param int $projektarbeit_id
|
||||
* @return bool true wenn erfolgreich (generiert oder bereits vorhanden), false wenn fehlgeschlagen
|
||||
*/
|
||||
public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id)
|
||||
{
|
||||
// if externer Betreuer and no valid token, generate
|
||||
$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 = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)."
|
||||
AND betreuerart_kurzbz = 'Zweitbegutachter'
|
||||
LIMIT 1";
|
||||
|
||||
if ($betreueruidres = $this->db_query($betreuerUidQry))
|
||||
{
|
||||
$row_betr = $this->db_fetch_object($betreueruidres);
|
||||
|
||||
if ($row_betr)
|
||||
{
|
||||
if (!isset($row_betr->uid)
|
||||
&& (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d')))
|
||||
{
|
||||
$tokenanzahl = 1;
|
||||
|
||||
while ($tokenanzahl > 0)
|
||||
{
|
||||
//generate random string
|
||||
$token = generateUniqueToken(16);
|
||||
|
||||
if (!$token)
|
||||
return false;
|
||||
|
||||
$qry_tokencheck = "SELECT count(*) AS anzahl
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
WHERE zugangstoken = " . $this->db_add_param($token);
|
||||
|
||||
if ($tokencount = $this->db_query($qry_tokencheck))
|
||||
{
|
||||
$row_tokencount = $this->db_fetch_object($tokencount);
|
||||
|
||||
$tokenanzahl = (int)$row_tokencount->anzahl;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$qry_upd = "UPDATE lehre.tbl_projektbetreuer SET
|
||||
zugangstoken = " . $this->db_add_param($token) . ",
|
||||
zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year'
|
||||
WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . "
|
||||
AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . "
|
||||
AND betreuerart_kurzbz = 'Zweitbegutachter'";
|
||||
|
||||
if ($this->db_query($qry_upd))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
return true; // not generated because intern or already exists
|
||||
}
|
||||
else
|
||||
return false;// not found
|
||||
}
|
||||
else
|
||||
return false; // query error
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+334
-101
@@ -37,10 +37,10 @@ class projektphase extends basis_db
|
||||
public $bezeichnung; //string
|
||||
public $typ='Projektphase'; //string
|
||||
public $beschreibung; //string
|
||||
public $start; //date
|
||||
public $ende; //date
|
||||
public $start; //date
|
||||
public $ende; //date
|
||||
public $personentage; //integer
|
||||
public $farbe;
|
||||
public $farbe;
|
||||
public $budget; // numeric
|
||||
public $ressource_id; // bigint
|
||||
public $ressource_bezeichnung; // string
|
||||
@@ -58,7 +58,7 @@ class projektphase extends basis_db
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($projektphase_id != null)
|
||||
if($projektphase_id != null)
|
||||
$this->load($projektphase_id);
|
||||
}
|
||||
|
||||
@@ -74,11 +74,11 @@ class projektphase extends basis_db
|
||||
$this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -102,20 +102,20 @@ class projektphase extends basis_db
|
||||
$this->updatevon = $row->updatevon;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Datensatz wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Projektphasen mit zu einem Projekt
|
||||
* @param $projekt_kurzbz Projekt der zu ladenden Projektphasen
|
||||
@@ -125,23 +125,23 @@ class projektphase extends basis_db
|
||||
{
|
||||
$this->result=array();
|
||||
$qry = "Select * from fue.tbl_projektphase where projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz)." and projektphase_id not in (
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
(
|
||||
SELECT projektphase_id FROM fue.tbl_projektphase
|
||||
WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
UNION ALL
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
WHERE p.projektphase_fk=tasks.projektphase_fk
|
||||
) SELECT *
|
||||
FROM tasks) and projektphase_id not in (".$this->db_add_param($projektphase_id, FHC_INTEGER).")";
|
||||
//echo "\n".$qry."\n";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -158,25 +158,25 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Projektphasen zu einem Projekt
|
||||
* @param $projekt_kurzbz Projekt der zu ladenden Projektphasen
|
||||
* @param $foreignkey wenn ! gib nur die Erste Ebene der Projektphasen zurück
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
*/
|
||||
public function getProjektphasen($projekt_kurzbz, $foreignkey = null)
|
||||
{
|
||||
$this->result=array();
|
||||
@@ -184,18 +184,18 @@ class projektphase extends basis_db
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
//echo "\n".$qry."\n";
|
||||
|
||||
|
||||
if(!is_null($foreignkey))
|
||||
$qry .= " and projektphase_fk is NULL";
|
||||
|
||||
$qry .= " ORDER BY start, projektphase_fk DESC;";
|
||||
|
||||
|
||||
$qry .= " ORDER BY start, projektphase_fk DESC;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -213,36 +213,36 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lädt alle Unterphasen zu einem Projekt
|
||||
* @param type $phase_id
|
||||
* @return boolean
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllUnterphasen($phase_id)
|
||||
{
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER);
|
||||
|
||||
WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -260,15 +260,15 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim laden der Daten";
|
||||
return false;
|
||||
$this->errormsg = "Fehler beim laden der Daten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,11 +296,11 @@ class projektphase extends basis_db
|
||||
$this->errormsg.='Projekt Kurzbz darf nicht länger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$this->errormsg = '';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Speichert den aktuellen Datensatz in die Datenbank
|
||||
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
|
||||
@@ -315,12 +315,12 @@ class projektphase extends basis_db
|
||||
|
||||
if($new==null)
|
||||
$new = $this->new;
|
||||
|
||||
|
||||
if($new)
|
||||
{
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ,
|
||||
$qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ,
|
||||
beschreibung, start, ende, budget, ressource_id, insertvon, insertamum, updatevon, updateamum, farbe, personentage) VALUES ('.
|
||||
$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
$this->db_add_param($this->projektphase_fk).', '.
|
||||
@@ -356,7 +356,7 @@ class projektphase extends basis_db
|
||||
'updatevon='.$this->db_add_param($this->updatevon).' '.
|
||||
'WHERE projektphase_id='.$this->db_add_param($this->projektphase_id, FHC_INTEGER).';';
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($new)
|
||||
@@ -371,21 +371,21 @@ class projektphase extends basis_db
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK;');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK;');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -394,7 +394,7 @@ class projektphase extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Loescht den Datenensatz mit der ID die uebergeben wird
|
||||
* @param $projekt_kurzbz ID die geloescht werden soll
|
||||
@@ -407,77 +407,81 @@ class projektphase extends basis_db
|
||||
$this->errormsg = 'Projektphase_ID ist ungueltig';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// an projektphase hängt noch eine phase
|
||||
if($this->existPhaseFk($projektphase_id))
|
||||
{
|
||||
$this->errormsg ="Phase kann nicht gelöscht werden, da noch eine andere Phase daran hängt. Bitte zuerst Phase abhängen. ";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Beginne Transaktion und lösche alle Tasks der Phase
|
||||
$qry1 ="Begin; DELETE FROM fue.tbl_projekttask
|
||||
$qry1 ="Begin; DELETE FROM fue.tbl_projekttask
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry1))
|
||||
{
|
||||
// Lösche alle zugewiesenen Ressourcen
|
||||
$qry2 = "DELETE FROM fue.tbl_projekt_ressource
|
||||
$qry2 = "DELETE FROM fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry2))
|
||||
{
|
||||
// Lösche den Phaseneintrag
|
||||
$qry3 = "DELETE FROM fue.tbl_projektphase
|
||||
$qry3 = "DELETE FROM fue.tbl_projektphase
|
||||
WHERE projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry3))
|
||||
{
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Projektphase aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Ressourcen aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Tasks aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Überprüft ob an übergebenr Phase noch eine andere Phase hängt. true wenn noch eine daran hängt
|
||||
* @param $projektphase_id
|
||||
*/
|
||||
public function existPhaseFk($projektphase_id)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projektphase WHERE projektphase_fk =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Löscht Ressourcen einer Phase
|
||||
* @param $projektphase_id
|
||||
* @param $ressource_id -> wenn != null wird nur die eine ressource gelöscht
|
||||
@@ -492,58 +496,60 @@ class projektphase extends basis_db
|
||||
$this->errormsg = "Keine gültige ID übergeben";
|
||||
return false;
|
||||
}
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and
|
||||
ressource_id=".$this->db_add_param($ressource_id, FHC_INTEGER).";";
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
// gesamte Ressourcen von Phase werden gelöscht
|
||||
if(!is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg ="Keine gültige ID übergeben";
|
||||
}
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* gibt den Fortschritt der Phase in Prozent zurück --> Phasen die auf die übergebene Phase zeigen werden berücksichtigt
|
||||
* @param $projektphase_id
|
||||
*/
|
||||
public function getFortschritt($projektphase_id)
|
||||
public function getFortschritt($projektphase_id)
|
||||
{
|
||||
$qry = "Select * from fue.tbl_projektphase phase
|
||||
join fue.tbl_projekttask task using(projektphase_id)
|
||||
$qry = "Select * from fue.tbl_projektphase phase
|
||||
join fue.tbl_projekttask task using(projektphase_id)
|
||||
where task.projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
OR task.projektphase_id IN (
|
||||
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
(
|
||||
SELECT projektphase_id FROM fue.tbl_projektphase
|
||||
WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
UNION ALL
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
WHERE p.projektphase_fk=tasks.projektphase_fk
|
||||
)SELECT *
|
||||
FROM tasks)";
|
||||
|
||||
$taskAnzahl = 0;
|
||||
|
||||
$taskAnzahl = 0;
|
||||
// erledige tasks
|
||||
$i = 0;
|
||||
$ergebnis = 0;
|
||||
|
||||
$i = 0;
|
||||
$ergebnis = 0;
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
@@ -553,25 +559,252 @@ class projektphase extends basis_db
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl;
|
||||
$ergebnis = ($i*100)/$taskAnzahl;
|
||||
|
||||
return sprintf("%01.2f", $ergebnis);
|
||||
$taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl;
|
||||
$ergebnis = ($i*100)/$taskAnzahl;
|
||||
|
||||
return sprintf("%01.2f", $ergebnis);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Überprüft ob alle Tasks einer Phase erledigt sind
|
||||
*/
|
||||
public function isPhaseErledigt($phase_id)
|
||||
{
|
||||
$task = new projekttask();
|
||||
|
||||
$task->getProjekttasks($phase_id,null,'offen');
|
||||
$task = new projekttask();
|
||||
|
||||
$task->getProjekttasks($phase_id,null,'offen');
|
||||
if(count($task->result)==0)
|
||||
return true;
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende)
|
||||
{
|
||||
if(empty($projektphase_id))
|
||||
return true;
|
||||
try
|
||||
{
|
||||
$projektphase = $this->getProjectphaseById($projektphase_id);
|
||||
if(strtotime($projektphase->start))
|
||||
{
|
||||
$projektphase_start = date('Y-m-d', strtotime($projektphase->start));
|
||||
}
|
||||
else
|
||||
{
|
||||
$projektphase_start = NULL;
|
||||
}
|
||||
if(strtotime($projektphase->ende))
|
||||
{
|
||||
$projektphase_ende = date('Y-m-d', strtotime($projektphase->ende));
|
||||
}
|
||||
else
|
||||
{
|
||||
$projektphase_ende = NULL;
|
||||
}
|
||||
|
||||
$given_start = date('Y-m-d', strtotime($given_projectphase_start));
|
||||
$given_ende = date('Y-m-d', strtotime($given_projektphase_ende));
|
||||
|
||||
if ((empty($projektphase_start) || $given_start >= $projektphase_start)
|
||||
&& (empty($projektphase_ende) || $given_ende <= $projektphase_ende))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID $projektphase_id
|
||||
* @param $projektphase_id ID der zu ladenden Projektphase
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseById($projektphase_id)
|
||||
{
|
||||
if(!is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->ressource_bezeichnung = $row->ressource_bezeichnung;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Datensatz wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID des mitarbeiters
|
||||
* @param $mitarbeiter_uid der zu ladenden Projektphase des users
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseForMitarbeiter($mitarbeiter_uid)
|
||||
{
|
||||
$projecphasetList = array();
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
DISTINCT tbl_projektphase.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) AND (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
|
||||
array_push($projecphasetList, $obj);
|
||||
}
|
||||
return $projecphasetList;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID des mitarbeiters für das jeweilige Projekt
|
||||
* @param $mitarbeiter_uid der zu ladenden Projektphase des users
|
||||
* @param $projekt_kurzbz des zu landenen Projekts
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseForMitarbeiterByKurzBz($mitarbeiter_uid, $projekt_kurzbz)
|
||||
{
|
||||
$projecphasetList = array();
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
DISTINCT tbl_projektphase.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) AND (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)."
|
||||
AND tbl_projekt.projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
+83
-11
@@ -86,7 +86,7 @@ class ressource extends basis_db
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
return true;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ class ressource extends basis_db
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
@@ -174,7 +174,7 @@ class ressource extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$obj->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
|
||||
@@ -189,8 +189,8 @@ class ressource extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Lädt die Projektressource
|
||||
@@ -203,15 +203,15 @@ class ressource extends basis_db
|
||||
$this->result=array();
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->ressource_id = $row->ressource_id;
|
||||
$this->beschreibung = $row->beschreibung;
|
||||
$this->aufwand = $row->aufwand;
|
||||
$this->aufwand = $row->aufwand;
|
||||
$this->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$this->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->projektphase_id = $row->projektphase_id;
|
||||
return true;
|
||||
}
|
||||
@@ -223,7 +223,7 @@ class ressource extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -256,7 +256,7 @@ class ressource extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$obj->projekt_ressource_id = $row->projekt_ressource_id;
|
||||
$this->result[] = $obj;
|
||||
@@ -688,5 +688,77 @@ class ressource extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine Ressource zu Projekt Zuordnung
|
||||
* @param type $ressource_id
|
||||
* @param type $projekt_kurzbz
|
||||
* @return boolean
|
||||
*/
|
||||
public function deleteFromProjektWithProjektRessourceId($ressource_id, $projekt_kurzbz, $project_ressource_id)
|
||||
{
|
||||
if($ressource_id == '' || !is_numeric($ressource_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
/*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)."
|
||||
AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';';
|
||||
*/
|
||||
$qry="
|
||||
DELETE FROM fue.tbl_projekt_ressource pr
|
||||
USING fue.tbl_ressource r
|
||||
WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';';
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine Ressource zu Phase Zuordnung
|
||||
* @param type $ressource_id
|
||||
* @param type $projekt_kurzbz
|
||||
* @return boolean
|
||||
*/
|
||||
public function deleteFromPhaseWithProjektRessourceId($ressource_id, $projektphase_id, $project_ressource_id)
|
||||
{
|
||||
if($ressource_id == '' || !is_numeric($ressource_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($projektphase_id == '' || !is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
|
||||
/*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)."
|
||||
AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';';
|
||||
*/
|
||||
$qry="
|
||||
DELETE FROM fue.tbl_projekt_ressource pr
|
||||
USING fue.tbl_ressource r
|
||||
WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';';
|
||||
if($this->db_query($qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user