Merge branch 'master' into feature-3716/Messaging_inbox_outbox_user

This commit is contained in:
Paolo
2020-01-16 16:36:57 +01:00
457 changed files with 39585 additions and 46623 deletions
+5 -4
View File
@@ -37,12 +37,13 @@ class Redirect extends FHC_Controller
public function redirectByToken($token)
{
$msg = $this->MessageTokenModel->getMessageByToken($token);
if ($msg->error)
if (isError($msg))
{
show_error($msg->retval);
show_error(getError($msg));
}
$oe_kurzbz = $msg->retval[0]->oe_kurzbz;
$oe_kurzbz = null;
if (hasData($msg)) $oe_kurzbz = getData($msg)[0]->oe_kurzbz;
if ($oe_kurzbz != null && $oe_kurzbz != '')
{
@@ -51,7 +52,7 @@ class Redirect extends FHC_Controller
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
if (isSuccess($getOERoot)) // If no errors occurred
{
$organisationRoot = $getOERoot->retval;
$organisationRoot = getData($getOERoot);
}
else
{
@@ -2,7 +2,7 @@
if (!defined('BASEPATH')) exit('No direct script access allowed');
class CheckUserAuth extends REST_Controller
class CheckUserAuth extends RESTFul_Controller
{
/**
* Course API constructor.
+1 -1
View File
@@ -5,7 +5,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Testing class for REST calls and authentication
*/
class Test extends REST_Controller
class Test extends RESTFul_Controller
{
public function __construct()
{
@@ -37,7 +37,7 @@ class Benutzer extends APIv1_Controller
if (isset($uid))
{
$result = $this->BenutzerModel->load($uid);
$result = $this->BenutzerModel->load(array('uid' => $uid));
$this->response($result, REST_Controller::HTTP_OK);
}
@@ -1,77 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class CallerLibrary extends APIv1_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct(array('Call' => 'admin:rw'));
// Loads the CallerLib
$this->load->library('CallerLib');
}
/**
* Manages a HTTP get call
*/
public function getCall()
{
// Start me up!
$result = $this->callerlib->callLibrary($this->get());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function postCall()
{
// Start me up!
$result = $this->callerlib->callLibrary($this->post());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function putCall()
{
// Start me up!
$result = $this->callerlib->callLibrary($this->put());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function deleteCall()
{
// Start me up!
$result = $this->callerlib->callLibrary($this->delete());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
}
@@ -1,77 +0,0 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class CallerModel extends APIv1_Controller
{
/**
* API constructor
*/
public function __construct()
{
parent::__construct(array('Call' => 'admin:rw'));
// Loads the CallerLib
$this->load->library('CallerLib');
}
/**
* Manages a HTTP get call
*/
public function getCall()
{
// Start me up!
$result = $this->callerlib->callModel($this->get());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function postCall()
{
// Start me up!
$result = $this->callerlib->callModel($this->post());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function putCall()
{
// Start me up!
$result = $this->callerlib->callModel($this->put());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
/**
* @return void
*/
public function deleteCall()
{
// Start me up!
$result = $this->callerlib->callModel($this->delete());
// Print the result
$this->response($result, REST_Controller::HTTP_OK);
}
}
+10 -10
View File
@@ -35,7 +35,7 @@ class Statusgrund extends Auth_Controller
$status = $this->StatusModel->load();
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
$data = array (
@@ -50,7 +50,7 @@ class Statusgrund extends Auth_Controller
$statusGrund = $this->StatusgrundModel->loadWhere(array("status_kurzbz" => $status_kurzbz));
if ($statusGrund->error)
{
show_error($statusGrund->retval);
show_error(getError($statusGrund));
}
$data = array (
@@ -66,13 +66,13 @@ class Statusgrund extends Auth_Controller
$statusGrund = $this->StatusgrundModel->load($statusgrund_id);
if ($statusGrund->error)
{
show_error($statusGrund->retval);
show_error(getError($statusGrund));
}
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -89,13 +89,13 @@ class Statusgrund extends Auth_Controller
$status = $this->StatusModel->load($status_id);
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -112,7 +112,7 @@ class Statusgrund extends Auth_Controller
$sprache = $this->SpracheModel->loadWhere(array('content' => true));
if ($sprache->error)
{
show_error($sprache->retval);
show_error(getError($sprache));
}
$data = array (
@@ -184,7 +184,7 @@ class Statusgrund extends Auth_Controller
if ($statusgrund->error)
{
show_error($statusgrund->retval);
show_error(getError($statusgrund));
}
redirect("/crm/Statusgrund/editGrund/" . $statusgrund_id . "/" . true);
@@ -252,7 +252,7 @@ class Statusgrund extends Auth_Controller
if ($statusgrund->error)
{
show_error($statusgrund->retval);
show_error(getError($statusgrund));
}
redirect("/crm/Statusgrund/editGrund/" . $statusgrund->retval . "/" . true);
@@ -297,7 +297,7 @@ class Statusgrund extends Auth_Controller
if ($status->error)
{
show_error($status->retval);
show_error(getError($status));
}
redirect("/crm/Statusgrund/editStatus/" . $status_kurzbz . "/" . true);
+2 -2
View File
@@ -121,13 +121,13 @@ class AmpelMail extends CLI_Controller
}
elseif (isError($result_ampel_user))
{
show_error($result_ampel_user->error);
show_error(getError($result_ampel_user));
}
}
}
elseif (isError($result_active_ampeln))
{
show_error($result_active_ampeln->error);
show_error(getError($result_active_ampeln));
}
// Send mails for new ampeln merged by user
@@ -0,0 +1,536 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*
* Cronjobs to be run for sending emails informing about status of Lehrauftraege.
*/
// ------------------------------------------------------------------------
if (!defined('BASEPATH')) exit('No direct script access allowed');
class LehrauftragJob extends JOB_Controller
{
const BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN = 'lehre/lehrauftrag_erteilen';
const BERECHTIGUNG_LEHRAUFTRAG_AKZEPTIEREN = 'lehre/lehrauftrag_akzeptieren';
const LEHRAUFTRAG_ERTEILEN_URI = 'lehre/lehrauftrag/LehrauftragErteilen';
const LEHRAUFTRAG_AKZEPTIEREN_URI = '/lehre/lehrauftrag/LehrauftragAkzeptieren';
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
// Load models
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
// Load libraries
$this->load->library('PermissionLib');
// Load helpers
$this->load->helper('hlp_sancho_helper');
}
/**
* This daily job sends information about all lehr-/projektauftraege ordered (and not approved) the day bofore.
* Receivers: Department-/Kompetenzfeldleiter
**/
public function mailLehrauftraegeToApprove()
{
// Get vertrag_ids of lehrauftraege that had been ordered and had NOT been approved or cancelled YESTERDAY
$this->VertragvertragsstatusModel->addSelect('vertrag_id');
$result = $this->VertragvertragsstatusModel->getOrdered_fromDate('YESTERDAY');
// Get lehrveranstaltung_ids and studiensemester of the lehr-/or projektauftrag contracts
$lehreinheit_data_arr = array();
if ($vertrag_arr = getData($result))
{
foreach ($vertrag_arr as $vertrag)
{
$result = $this->VertragModel->getLehreinheitData($vertrag->vertrag_id, 'lehrveranstaltung_id, studiensemester_kurzbz');
if (hasData($result))
{
$obj = new StdClass();
$obj->lehrveranstaltung_id = $result->retval[0]->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $result->retval[0]->studiensemester_kurzbz;
$lehreinheit_data_arr []= $obj;
}
}
}
/**
* Build the data array to be used in the email. Data array is clustered as follows:
* Array
* [studiensemester_kurzbz] // studiensemester of lehreinheit
* Array
* [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
* [oe_bezeichnung]
* Array
* [stg_kz] // stg of lehreinheits lehrveranstaltung
* [stg_kurzbz]
* [stg_bezeichnung]
* [amount] // amount of new ordered lehrauftraege of that stg
*/
$data_arr = array();
foreach ($lehreinheit_data_arr as $lehreinheit_data)
{
$result = $this->_getLVData($lehreinheit_data->lehrveranstaltung_id);
if (hasData($result))
{
// Search if studiensemester exists in data_arr
$ss_index = array_search($lehreinheit_data->studiensemester_kurzbz, array_column($data_arr, 'studiensemester_kurzbz'));
// If studiensemester is new, add studienesemester, oe and stg
if ($ss_index === false)
{
$data = array(
'studiensemester_kurzbz' => $lehreinheit_data->studiensemester_kurzbz
);
$data []= array(
'oe_kurzbz' => $result->retval[0]->oe_kurzbz,
'oe_bezeichnung' => $result->retval[0]->lv_oe_bezeichnung
);
// Add stg data to oe, start amount with 1
$data[0][] = array(
'stg_kz' => $result->retval[0]->studiengang_kz,
'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
'amount' => 1
);
// Push to final data_arr
$data_arr []= $data;
}
// Else if studiensemester exists
else
{
// Search if oe exists inside existing studiensemester of data_arr
$oe_index = array_search($result->retval[0]->oe_kurzbz, array_column($data_arr[$ss_index], 'oe_kurzbz'));
// If oe is new, add oe and stg to studiensemester
if ($oe_index === false)
{
// Add oe data
$data_arr[$ss_index][] = array(
'oe_kurzbz' => $result->retval[0]->oe_kurzbz,
'oe_bezeichnung' => $result->retval[0]->lv_oe_bezeichnung,
// Add stg data to oe, start amount with 1
array(
'stg_kz' => $result->retval[0]->studiengang_kz,
'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
'amount' => 1
)
);
}
// Else if oe exists
else
{
// Search if stg exists inside existing oe of data_arr
$stg_index = array_search($result->retval[0]->studiengang_kz, array_column($data_arr[$ss_index][$oe_index], 'stg_kz'));
// If stg is new, add stg to oe, start amount with 1
if ($stg_index === false)
{
$data_arr[$ss_index][$oe_index][] = array(
'stg_kz' => $result->retval[0]->studiengang_kz,
'stg_kurzbz' => strtoupper($result->retval[0]->stg_typ. $result->retval[0]->stg_kurzbz),
'stg_bezeichnung' => $result->retval[0]->lv_stg_bezeichnung,
'amount' => 1
);
}
// Else if stg exists
else
{
// Increase amount +1
$data_arr[$ss_index][$oe_index][$stg_index]['amount']++;
}
}
}
}
}
/**
* Cluster data by uid of entitled mail receivers.
* Returning array is clustered as follows:
* Array
* [uid]
* Array
* [studiensemester_kurzbz] // studiensemester of lehreinheit
* Array
* [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
* [oe_bezeichnung]
* Array
* [stg_kz] // stg of lehreinheits lehrveranstaltung
* [stg_kurzbz]
* [stg_bezeichnung]
* [amount] // amount of new ordered lehrauftraege of that stg
*/
$data_arr = $this->_clusterData_byReceiver($data_arr);
// Send email
if(!$this->_sendMail_toApprove($data_arr))
{
$this->logInfo('SUCCEDED: Sending emails about yesterdays ordered lehrauftraege succeded.');
}
else
{
$this->logError('Error when sending emails in job MailLehrauftragToApprove');
}
}
/**
* This daily job sends information about all lehr-/projektauftraege approved the day bofore.
* Receivers: lectors
**/
public function mailLehrauftraegeToAccept()
{
// Get vertrag_id and uid of lehrauftraege that had been approved and had NOT been accepted or cancelled YESTERDAY
$this->VertragvertragsstatusModel->addSelect('vertrag_id, uid');
$this->VertragvertragsstatusModel->addOrder('uid');
$result = $this->VertragvertragsstatusModel->getApproved_fromDate('YESTERDAY');
/**
* Build the data array to be used in the email. Data array is clustered as follows:
* Array
* [uid] // lectors uid (mail receiver)
* [studiensemester] // studiensemester of the lehrauftraege (can be more, e.g. 'WS2019 and SS2020')
* [amount] // amount of new approved lehrauftraege
**/
$data_arr = array();
if ($vertrag_arr = getData($result))
{
foreach ($vertrag_arr as $vertrag)
{
// Get studiensemester of the lehrauftrag
$this->VertragModel->addSelect('vertragsstunden_studiensemester_kurzbz');
$result = $this->VertragModel->load($vertrag->vertrag_id);
if ($studiensemester = getData($result))
{
$studiensemester = $studiensemester[0]->vertragsstunden_studiensemester_kurzbz;
}
// Search if uid exists in data_arr
$uid_index = array_search($vertrag->uid, array_column($data_arr, 'uid'));
// If uid is new, add uid, studiensemester and start amount with 1
if ($uid_index === false)
{
$data = array();
$data['uid'] = $vertrag->uid;
$data['studiensemester'] = $studiensemester;
$data['amount']= 1;
$data_arr []= $data;
}
// Else if uid exists
else
{
// If studiensemester is new, add to studiensemester-string
if (strpos($data_arr[$uid_index]['studiensemester'], $studiensemester) === false)
{
$data_arr[$uid_index]['studiensemester'] .= ' und '. $studiensemester;
}
// Increase amount +1
$data_arr[$uid_index]['amount']++;
}
}
}
// Send email
if ($this->_sendMail_toAccept($data_arr))
{
$this->logInfo('SUCCEDED: Sending emails about yesterdays approved lehrauftraege succeded.');
}
else
{
$this->logError('Error when sending emails in job MailLehrauftragToAccept');
}
}
//******************************************************************************************************************
// PRIVATE FUNCTIONS
//******************************************************************************************************************
/**
* Get data of given lehrveranstaltung.
* @param $lehrveranstaltung_id
* @return mixed
*/
private function _getLVData($lehrveranstaltung_id)
{
$this->LehrveranstaltungModel->addSelect('
tbl_lehrveranstaltung.oe_kurzbz,
oe.bezeichnung AS "lv_oe_bezeichnung",
tbl_lehrveranstaltung.studiengang_kz,
stg.bezeichnung AS "lv_stg_bezeichnung",
stg.typ AS "stg_typ",
stg.kurzbz AS "stg_kurzbz"
');
$this->LehrveranstaltungModel->addJoin('lehre.tbl_studienplan_lehrveranstaltung stpllv', 'lehrveranstaltung_id');
$this->LehrveranstaltungModel->addJoin('lehre.tbl_studienplan stpl', 'studienplan_id');
$this->LehrveranstaltungModel->addJoin('lehre.tbl_studienordnung sto', 'studienordnung_id');
$this->LehrveranstaltungModel->addJoin('public.tbl_studiengang stg', 'ON stg.studiengang_kz = tbl_lehrveranstaltung.studiengang_kz');
$this->LehrveranstaltungModel->addJoin('public.tbl_organisationseinheit oe', 'ON oe.oe_kurzbz = tbl_lehrveranstaltung.oe_kurzbz');
$this->LehrveranstaltungModel->addOrder('stpllv.insertamum', 'DESC');
$this->LehrveranstaltungModel->addLimit(1);
return $this->LehrveranstaltungModel->load($lehrveranstaltung_id);
}
/**
* Send Sancho eMail about ordered Lehrauftraege.
* @param $data_arr
*/
private function _sendMail_toApprove($data_arr)
{
// Loop through 'container' of mail recipients
foreach($data_arr as $data)
{
// Set mail recipients (department assistance/leader)
$to = $data['uid']. '@'. DOMAIN;
$html_table = $this->_renderData_LehrauftraegeToApprove($data);
// Prepare mail content
$content_data_arr = array(
'table' => $html_table
);
sendSanchoMail(
'LehrauftragNeueBestellungen',
$content_data_arr,
$to,
'Bestellung neuer Lehraufträge',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
}
}
/**
* Cluster the data array by entitled mail receiver.
* Returning array is clustered as follows:
* Array
* [uid]
* Array
* [studiensemester_kurzbz] // studiensemester of lehreinheit
* Array
* [oe_kurzbz] // oe of lehreinheits lehrveranstaltung
* [oe_bezeichnung]
* Array
* [stg_kz] // stg of lehreinheits lehrveranstaltung
* [stg_kurzbz]
* [stg_bezeichnung]
* [amount] // amount of new ordered lehrauftraege of that stg
* @param $data_arr
* @return array
*
*/
private function _clusterData_byReceiver($data_arr)
{
$mail_data_arr = array(); // final array with all data clustered by mail receiver
// Loop through 'container' of studiensemester
foreach ($data_arr as $data)
{
$data_len = count($data) - 1;
// Loop through 'container' of organisational units
for ($i = 0; $i < $data_len; $i++)
{
// Get all users entitled by organisational unit
$result = $this->BenutzerrolleModel->getBenutzerByBerechtigung(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, $data[$i]['oe_kurzbz']);
if ($berechtigung_arr = getData($result))
{
// Loop through entitled users
foreach ($berechtigung_arr as $berechtigung)
{
// Search if UID exists inside mail_data_arr
$uid_index = array_search($berechtigung->uid, array_column($mail_data_arr, 'uid'));
// If UID is new, add UID to final array
if ($uid_index === false)
{
// add UID with corresponding data
$mail_data_arr [] = array(
'uid' => $berechtigung->uid,
array(
'studiensemester_kurzbz' => $data['studiensemester_kurzbz'],
$data[$i]
)
);
} // Else if UID exists
else
{
// Search if studiensemester exists
$ss_index = array_search($data['studiensemester_kurzbz'], array_column($mail_data_arr, 'studiensemester_kurzbz'));
// If studiensemester is new, add studiensemester to existing UID
if ($ss_index === false)
{
$mail_data_arr[$uid_index] []= array(
'studiensemester_kurzbz' => $data['studiensemester_kurzbz'],
$data[$i]
);
}
// Else if studiensemester exists
else
{
// Add corresponding data to existing studiensemester of UID
$mail_data_arr[$uid_index]['studiensemester_kurbz'][] = $data[$i];
}
}
}
}
}
}
return $mail_data_arr;
}
/**
* Render the data array for the mail template returing a HTML table.
* @param $data_arr Data to be used in HTML table
* @return string HTML table to be embedded in eMail
*/
private function _renderData_LehrauftraegeToApprove($data_arr)
{
$html = '';
foreach ($data_arr as $studiensemester_container)
{
if (is_array($studiensemester_container)) // is_array 'trims' the outer associative key [uid]
{
if (isset($studiensemester_container['studiensemester_kurzbz']))
{
$studiensemester = $studiensemester_container['studiensemester_kurzbz'];
// Link to LehrauftragErteilen
$url = site_url(self::LEHRAUFTRAG_ERTEILEN_URI).'?studiensemester='. $studiensemester;
}
// HTML table header
$html .= '
<br>
<span style="font-size: small;"><b>Studiensemester: '. $studiensemester. '</b></span>
<br><br>
<table style="width: 100%; border-collapse: collapse;" border="1" cellpadding="5">
<thead>
<tr>
<th style="width: 30%; font-size: 12px;"><span>LV-Organisationseinheit</span></th>
<th style="width: 40%; font-size: 12px;"><span>Studiengang</span></th>
<th style="width: 15%; font-size: 12px;"><span>STG-Kurzbezeichnung</span></th>
<th style="width: 15%; font-size: 12px;"><span><strong>Anzahl neu bestellter Lehrauftr&auml;ge</strong></span></th>
</tr>
</thead>
<tbody>'
;
// HTML table body
foreach ($studiensemester_container as $oe_container)
{
if (is_array($oe_container)) // is_array 'trims' the outer associative key [studiensemester_kurzbz]
{
if (isset($oe_container['oe_bezeichnung']))
{
$oe_bezeichnung = $oe_container['oe_bezeichnung'];
}
foreach ($oe_container as $stg_data)
{
if (is_array($stg_data)) // is_array 'trims' the outer associative keys [oe_kurzbz] and [oe_bezeichnung]
{
$html .= '
<tr>
<td><span style="font-size: small;">'. $oe_bezeichnung. '</span></td>
<td><span style="font-size: small;">'. $stg_data['stg_bezeichnung']. '</span></td>
<td align="center"><span style="font-size: small;">'. $stg_data['stg_kurzbz']. '</span></td>
<td align="center"><span style="font-size: small;"><strong>'. $stg_data['amount']. '</strong></span></td>
</tr>
';
}
}
}
}
// HTML table body end and link
$html .= '
</tbody>
</table>
<br>
<span style="font-size: small;">'. anchor($url, 'Lehraufträge Übersicht '. $studiensemester). '</span>
<br><br>
';
}
}
return $html;
}
/**
* Send Sancho eMail about ordered Lehrauftraege.
* @param $data_arr
*/
private function _sendMail_toAccept($data_arr)
{
// Loop through 'container' of mail recipients
foreach($data_arr as $data)
{
// Set mail recipient (lector)
$to = $data['uid']. '@'. DOMAIN;
// Link to LehrauftragAkzeptieren
$url = CIS_ROOT. 'cis/index.php?menu='.
CIS_ROOT. 'cis/menu.php?content_id=&content='.
CIS_ROOT. index_page(). self::LEHRAUFTRAG_AKZEPTIEREN_URI;
// Get first name
$first_name = '';
$this->load->model('person/Benutzer_model', 'BenutzerModel');
$this->BenutzerModel->addSelect('vorname');
$this->BenutzerModel->addJoin('public.tbl_person', 'person_id');
$result = $this->BenutzerModel->loadWhere(array('uid' => $data['uid']));
if (hasData($result))
{
$first_name = $result->retval[0]->vorname;
}
// Prepare mail content
$content_data_arr = array(
'vorname' => $first_name,
'studiensemester' => $data['studiensemester'],
'anzahl' => $data['amount'],
'link' => anchor($url, 'Lehraufträge Übersicht')
);
sendSanchoMail(
'LehrauftragNeueErteilte',
$content_data_arr,
$to,
'Neu erteilte Lehraufträge zum Annehmen bereit'
);
}
}
}
@@ -37,7 +37,8 @@ class Prestudentstatus extends CLI_Controller
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.studienplan_id,
tbl_studienplan.orgform_kurzbz,
tbl_prestudent.person_id');
tbl_prestudent.person_id,
tbl_studienplan.sprache');
$this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id');
$this->PrestudentstatusModel->addJoin('lehre.tbl_studienplan', 'studienplan_id','LEFT');
$this->PrestudentstatusModel->addJoin('lehre.tbl_studienordnung', 'studienordnung_id','LEFT');
@@ -64,7 +65,8 @@ class Prestudentstatus extends CLI_Controller
$row_status->studiengang_kz,
$row_status->studiensemester_kurzbz,
$row_status->ausbildungssemester,
$row_status->orgform_kurzbz);
$row_status->orgform_kurzbz,
$row_status->sprache);
if(isSuccess($studienplan) && count($studienplan->retval) == 1)
{
@@ -107,7 +109,7 @@ class Prestudentstatus extends CLI_Controller
}
else
{
show_error($status->retval);
show_error(getError($status));
}
echo "Corrected:".$sum_corrected."\n";
echo "Not Corrected:".$sum_notcorrected."\n";
@@ -35,7 +35,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($result))
{
show_error($result->error);
show_error(getError($result));
}
// Get free places
@@ -48,7 +48,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($result))
{
show_error($result->error);
show_error(getError($result));
}
// Prepare data for mail template 'ReihungstestJob'
@@ -103,7 +103,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($result))
{
show_error($result->error);
show_error(getError($result));
}
$applicants_arr = array();
@@ -118,7 +118,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($applicants))
{
show_error($applicants->error);
show_error(getError($applicants));
}
// Get all Bachelor-Degree-Programs with Mailadress
@@ -131,7 +131,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($bachelorStudiengeange))
{
show_error($bachelorStudiengeange->error);
show_error(getError($bachelorStudiengeange));
}
// If a person ist an applicant of this degree-program send mail with application data
@@ -222,7 +222,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($result))
{
show_error($result->error);
show_error(getError($result));
}
$studiengang = '';
@@ -382,7 +382,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($resultTestsOnDate))
{
show_error($resultTestsOnDate->error);
show_error(getError($resultTestsOnDate));
}
}
@@ -399,7 +399,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($applicants))
{
show_error($applicants->error);
show_error(getError($applicants));
}
foreach ($applicants_arr as $applicant)
@@ -479,7 +479,7 @@ class ReihungstestJob extends CLI_Controller
}
elseif (isError($yesterdays_applicants_arr))
{
show_error($yesterdays_applicants_arr->error);
show_error(getError($yesterdays_applicants_arr));
}
// Get all other prestudenten of the given persons.
@@ -503,7 +503,7 @@ class ReihungstestJob extends CLI_Controller
// Store them, if they have already absolved a placement test in the same study term they have applied for.
$placement_absolvents_arr = $this->PrestudentModel->loadWhere('
person_id IN (' . implode(', ', $person_id_arr) . ') AND
typ = \'b\' AND
typ = \'b\' AND
teilgenommen = \'t\' AND
tbl_reihungstest.studiensemester_kurzbz IN (
SELECT
@@ -548,7 +548,7 @@ class ReihungstestJob extends CLI_Controller
$to = ''; // mail recipient (stg assistance)
$content_arr = array(); // url paths to the new applicants
$base_link = base_url('vilesci/stammdaten/auswertung_fhtw.php');
$i = 0; // loop counter
$len = count($result_arr);
@@ -569,7 +569,7 @@ class ReihungstestJob extends CLI_Controller
{
// Prepare content for mail template
$content_data_arr = $this->_getContentDataNewApplicant($content_arr);
// Send mail
sendSanchoMail(
'BewerberNachReihungstest',
@@ -786,4 +786,3 @@ class ReihungstestJob extends CLI_Controller
}
}
}
@@ -0,0 +1,347 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* The controller Lehrauftrag displays all Lehrauftraege within a study semester.
* Heads of degree programs can order Lehrauftraege, which subsequently will generate the corresponding contracts
* automatically.
* Department leaders can approve the ordered Lehrauftraege.
*/
class Lehrauftrag extends Auth_Controller
{
const APP = 'lehrauftrag';
const LEHRAUFTRAG_URI = 'lehre/lehrauftrag/Lehrauftrag'; // URL prefix for this controller
const BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN = 'lehre/lehrauftrag_bestellen';
private $_uid; // uid of the logged user
/**
* Constructor
*/
public function __construct()
{
// Set required permissions
parent::__construct(
array(
'index' => 'lehre/lehrauftrag_bestellen:r',
'orderLehrauftrag' => 'lehre/lehrauftrag_bestellen:rw',
'Dashboard' => array('lehre/lehrauftrag_bestellen:r', 'lehre/lehrauftrag_erteilen:rw'),
'LehrendeUebersicht' => array('lehre/lehrauftrag_erteilen:r')
)
);
// Load models
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('accounting/Vertrag_model', 'VertragModel');
// Load libraries
$this->load->library('WidgetLib');
$this->load->library('PermissionLib');
// Load helpers
$this->load->helper('array');
$this->load->helper('url');
$this->load->helper('hlp_sancho_helper');
// Load language phrases
$this->loadPhrases(
array(
'global',
'ui',
'lehre'
)
);
$this->_setAuthUID(); // sets property uid
$this->setControllerId(); // sets the controller id
}
/**
* Display of Custom Dashboard for Lehraufträge App
* Charts are hooked from Reporting Addon
*/
public function Dashboard()
{
$this->load->view('lehre/lehrauftrag/Dashboard.php');
}
/**
* Display of Lehrauftragsübersicht report
*/
public function LehrendeUebersicht()
{
$this->load->view('lehre/lehrauftrag/LehrendeUebersicht.php');
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Main page of Lehrauftrag
*/
public function index()
{
// Set studiengang selected for studiengang dropdown
$studiengang_kz = $this->input->get('studiengang'); // if provided by selected studiengang
$studiengang_kz = ($studiengang_kz == 'null' ? null : $studiengang_kz);
// Retrieve studiengaenge the user is entitled for to populate studiengang dropdown
if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN)) {
show_error('Fehler bei Berechtigungsprüfung');
}
// If studiengang_kz get param was set, check against entitled stg
if (!is_null($studiengang_kz))
{
if (!in_array($studiengang_kz, $studiengang_kz_arr))
{
show_error('Keine Berechtigung für diesen Studiengang');
}
}
// Set studiensemester selected for studiengang dropdown
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error(getError($studiensemester));
}
}
// Set ausbildungssemester selected for ausbildungssemester dropdown
$ausbildungssemester = $this->input->get('ausbildungssemester'); // if provided by selected ausbildungssemester
$ausbildungssemester = ($ausbildungssemester == 'null' ? null : $ausbildungssemester);
$view_data = array(
'studiengang_selected' => $studiengang_kz,
'studiengang' => $studiengang_kz_arr,
'studiensemester_selected' => $studiensemester_kurzbz,
'ausbildungssemester_selected' => $ausbildungssemester,
);
$this->load->view('lehre/lehrauftrag/orderLehrauftrag.php', $view_data);
}
public function orderLehrauftrag()
{
$new_lehrvertrag_data_arr = array(); // information of new lehrvertraege to be used in mail
$lehrauftrag_arr = json_decode($this->input->post('selected_data'));
// Loop through lehraufträge
if(is_array($lehrauftrag_arr))
{
foreach($lehrauftrag_arr as $lehrauftrag)
{
$lehreinheit_id = (isset($lehrauftrag->lehreinheit_id)) ? $lehrauftrag->lehreinheit_id : null;
$lehrveranstaltung_id = (isset($lehrauftrag->lehrveranstaltung_id)) ? $lehrauftrag->lehrveranstaltung_id : null;
$person_id = (isset($lehrauftrag->person_id)) ? $lehrauftrag->person_id : null;
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
$projektarbeit_id = (isset($lehrauftrag->projektarbeit_id)) ? $lehrauftrag->projektarbeit_id : null;
$stunden = (isset($lehrauftrag->stunden)) ? $lehrauftrag->stunden : 0;
$betrag = (isset($lehrauftrag->betrag)) ? $lehrauftrag->betrag : 0;
$studiensemester_kurzbz = (isset($lehrauftrag->studiensemester_kurzbz)) ? $lehrauftrag->studiensemester_kurzbz : null;
$studiengang_kz = (isset($lehrauftrag->studiengang_kz)) ? $lehrauftrag->studiengang_kz : null;
// Check if user is entitled to order this Lehrauftrag
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN, 'suid', $studiengang_kz))
{
return $this->outputJsonError('Sie haben keine Bestellberechtigung für diesen Studiengang: '. $studiengang_kz);
}
// update contract if contract exists and the betrag was changed
if (!is_null($vertrag_id))
{
$this->VertragModel->addSelect('vertragsstunden, betrag');
if($result = getData($this->VertragModel->load($vertrag_id)))
{
$vertrag_betrag = $result[0]->betrag;
$vertrag_stunden = $result[0]->vertragsstunden;
}
elseif (isError($result))
{
return $this->outputJsonError('Fehler beim Laden des Vertrags');
}
$hasChanged = ($betrag != floatval($vertrag_betrag) || $stunden != $vertrag_stunden) ? true : false;
if ($hasChanged)
{
$result = $this->VertragModel->updateVertrag(
$vertrag_id,
$stunden,
$betrag,
$mitarbeiter_uid
);
if (isSuccess($result))
{
$json []= array(
'row_index' => $lehrauftrag->row_index,
'bestellt' => date('Y-m-d'),
'vertrag_betrag' => $betrag,
'vertrag_stunden' => $stunden,
'erteilt' => null
);
}
else
{
return $this->outputJsonError('Fehler beim Vertragsupdate');
}
}
}
// else save new contract
else
{
$result = $this->VertragModel->save(
$person_id,
$mitarbeiter_uid,
$lehrveranstaltung_id,
$lehreinheit_id,
$projektarbeit_id,
$stunden,
$betrag,
$studiensemester_kurzbz
);
if (isSuccess($result))
{
$json []= array(
'row_index' => $lehrauftrag->row_index,
'bestellt' => date('Y-m-d'),
'vertrag_betrag' => $betrag,
'vertrag_stunden' => $stunden
);
}
elseif (isError($result) && $result->retval)
{
return $this->outputJsonError($result->retval);
}
else
{
return $this->outputJsonError('Fehler beim Speichern des Vertrags');
}
$new_lehrvertrag_data_arr[] = array(
'studiensemester_kurzbz' => $lehrauftrag->studiensemester_kurzbz,
'studiengang_kz' => $lehrauftrag->studiengang_kz,
'lv_oe_kurzbz' => $lehrauftrag->lv_oe_kurzbz
);
}
}
}
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
if (isset($json) && !isEmptyArray($json))
{
$this->outputJsonSuccess($json);
}
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
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)
{
// Get mail recipients
$result = $this->BenutzerrolleModel->getBenutzerByBerechtigung('lehre/lehrauftrag_erteilen', $lehrvertrag_data['lv_oe_kurzbz']);
// If given lv organisational unit has no authorized user, check if is a Kompetenzfeld.
// If so, look up for authorized user on Department level.
if (!hasData($result)) {
$result = $this->OrganisationseinheitModel->getParent($lehrvertrag_data['lv_oe_kurzbz']);
if (hasData($result)) {
if ($result->retval[0]->organisationseinheittyp_kurzbz === 'Department') {
$result = $this->BenutzerrolleModel->getBenutzerByBerechtigung('lehre/lehrauftrag_erteilen', $result->retval[0]->oe_kurzbz);
}
}
}
// Set mail recipients (department assistance/leader)
$to = '';
$to_arr = array();
foreach ($result->retval as $berechtigung) {
$to_arr []= $berechtigung->uid . '@' . DOMAIN; // TODO: als array, dann splitten mit ;? oder als array lassen?
}
$to = implode(', ', $to_arr);
// Set link to lehrauftrag-site with preselected studiengang and studiensemester of new lehrauftraege
$url = site_url(self::LEHRAUFTRAG_URI).'?studiensemester='. $lehrvertrag_data['studiensemester_kurzbz']. '&studiengang='. $lehrvertrag_data['studiengang_kz'];
// Prepare mail content
$content_data_arr = array(
'anzahl' => $lehrvertrag_data['amount_new_lehrvertraege'],
'studiengang' => $lehrvertrag_data['studiengang_kz'],
'studiensemester' => $lehrvertrag_data['studiensemester_kurzbz'],
'link' => anchor($url, 'Lehrverträge Übersicht')
);
// Send mail
sendSanchoMail(
'LehrauftragBestellMail',
$content_data_arr,
$to,
'Bestellung neuer Lehraufträge',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
}
}
/**
* Clusters data as needed for _sendMail.
* Makes array of new lehrvertraege unique (by studiensemester, studiengang and lv_oe_kurzbz)
* Adds the amount of lehrvertraege of each unique array element.
* @param $new_lehrvertrag_data_arr
* @return array
*/
private function _cluster_newVertragData($new_lehrvertrag_data_arr)
{
$unique_new_lehrvertrag_data_arr = array_unique($new_lehrvertrag_data_arr, SORT_REGULAR);
foreach ($unique_new_lehrvertrag_data_arr as &$new_lehrvertrag)
{
$cnt = 1;
foreach ($new_lehrvertrag_data_arr as $item)
{
if ($new_lehrvertrag['studiensemester_kurzbz'] === $item['studiensemester_kurzbz'] &&
$new_lehrvertrag['studiengang_kz'] === $item['studiengang_kz'] &&
$new_lehrvertrag['lv_oe_kurzbz'] === $item['lv_oe_kurzbz'])
{
$new_lehrvertrag['amount_new_lehrvertraege'] = $cnt++;
}
}
}
return $unique_new_lehrvertrag_data_arr;
}
}
@@ -0,0 +1,219 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* The controller LehrauftragAkzeptieren displays all Lehrauftraege of the logged in lector.
* Lehrauftraege can be accepted by selecting them, entering the password and submitting them.
*/
class LehrauftragAkzeptieren extends Auth_Controller
{
const APP = 'lehrauftrag';
const LEHRAUFTRAG_URI = 'lehre/lehrauftrag/LehrauftragAkzeptieren'; // URL prefix for this controller
const BERECHTIGUNG_LEHRAUFTRAG_AKZEPTIEREN = 'lehre/lehrauftrag_akzeptieren';
private $_uid; // uid of the logged user
/**
* Constructor
*/
public function __construct()
{
// Set required permissions
parent::__construct(
array(
'index' => 'lehre/lehrauftrag_akzeptieren:r',
'acceptLehrauftrag' => 'lehre/lehrauftrag_akzeptieren:rw',
'checkInkludierteLehre' => 'lehre/lehrauftrag_akzeptieren:rw'
)
);
// Load models
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
$this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel');
$this->load->model('codex/Bisverwendung_model', 'BisverwendungModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
// Load libraries
$this->load->library('WidgetLib');
$this->load->library('PermissionLib');
$this->load->library('AuthLib');
// Load helpers
$this->load->helper('array');
$this->load->helper('url');
// Load language phrases
$this->loadPhrases(
array(
'global',
'ui',
'lehre'
)
);
$this->_setAuthUID(); // sets property uid
$this->setControllerId(); // sets the controller id
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Main page of Lehrauftrag
*/
public function index()
{
// Set studiensemester selected for studiengang dropdown
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error(getError($studiensemester));
}
}
$view_data = array(
'studiensemester_selected' => $studiensemester_kurzbz
);
$this->load->view('lehre/lehrauftrag/acceptLehrauftrag.php', $view_data);
}
/**
* Set the contract status of Lehrauftrag to 'akzeptiert'.
* Performed on ajax call.
*/
public function acceptLehrauftrag()
{
// Verify password
$password = $this->input->post('password');
if (!isEmptyString($password))
{
$result = $this->authlib->checkUserAuthByUsernamePassword($this->_uid, $password);
if (isError($result))
{
return $this->outputJsonError('Passwort ist inkorrekt'); // exit if password is incorrect
}
}
else
{
return $this->outputJsonError('Passwort fehlt');
}
// Loop through lehraufträge
$lehrauftrag_arr = $this->input->post('selected_data');
if(is_array($lehrauftrag_arr))
{
foreach($lehrauftrag_arr as $lehrauftrag)
{
$vertrag_id = (!is_null($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
// Check if user is entitled to accept this Lehrauftrag
// * first retrieve person_id of the contract
$this->VertragModel->addSelect('person_id');
if ($result = getData($this->VertragModel->load($vertrag_id)))
{
// * then find the uid of that contracts person_id
$this->BenutzerModel->addSelect('uid');
if ($result = getData($this->BenutzerModel->getFromPersonId($result[0]->person_id)))
{
// * finally check uid of contract against the logged in user
$account_found = false;
foreach($result as $row_accounts)
{
if($row_accounts->uid == $this->_uid)
{
$account_found = true;
}
}
if (!$account_found)
{
return $this->outputJsonError('Sie haben keine Berechtigung für einen Vertrag');
}
}
else
{
return $this->outputJsonError('Fehler beim Laden der Benutzerdaten');
}
}
else
{
return $this->outputJsonError('Fehler beim Laden des Vertrags');
}
// Set status to accepted
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $this->_uid, 'akzeptiert');
if ($result->retval)
{
$json []= array(
'row_index' => $lehrauftrag['row_index'],
'akzeptiert' => date('Y-m-d')
);
}
else
{
return $this->outputJsonError($result->retval);
}
}
// Output json to ajax
if (isset($json) && !isEmptyArray($json))
{
$this->outputJsonSuccess($json);
}
}
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
}
/**
* Check if lectors latest active Verwendung has inkludierte Lehre
* - inkludierte_lehre is null OR 0: freelancer lector -> has NO inkludierte Lehre
* - inkludierte_lehre -1: fix employed lector -> has inkludierte Lehre (all inclusive)
* - inkludierte_lehre > 0: fix employed lector -> has inkludierte Lehre (value is amount of hours included)
*/
public function checkInkludierteLehre()
{
$result = $this->BisverwendungModel->getLast($this->_uid);
if (hasData($result))
{
$this->outputJsonSuccess(!is_null($result->retval[0]->inkludierte_lehre) && $result->retval[0]->inkludierte_lehre != 0);
}
else
{
$this->outputJsonError(getError($result));
}
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
}
@@ -0,0 +1,204 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* The controller Lehrauftrag displays all Lehrauftraege within a study semester.
* Heads of degree programs can order Lehrauftraege, which subsequently will generate the corresponding contracts
* automatically.
* Department leaders can approve the ordered Lehrauftraege.
*/
class LehrauftragErteilen extends Auth_Controller
{
const APP = 'lehrauftrag';
const LEHRAUFTRAG_URI = 'lehre/lehrauftrag/LehrauftragErteilen'; // URL prefix for this controller
const BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN = 'lehre/lehrauftrag_erteilen';
private $_uid; // uid of the logged user
/**
* Constructor
*/
public function __construct()
{
// Set required permissions
parent::__construct(
array(
'index' => 'lehre/lehrauftrag_erteilen:r',
'approveLehrauftrag' => 'lehre/lehrauftrag_erteilen:rw'
)
);
// Load models
$this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel');
$this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel');
$this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('accounting/Vertrag_model', 'VertragModel');
$this->load->model('accounting/Vertragvertragsstatus_model', 'VertragvertragsstatusModel');
// Load libraries
$this->load->library('WidgetLib');
$this->load->library('PermissionLib');
// Load helpers
$this->load->helper('array');
$this->load->helper('url');
// Load language phrases
$this->loadPhrases(
array(
'global',
'ui',
'lehre'
)
);
$this->_setAuthUID(); // sets property uid
$this->setControllerId(); // sets the controller id
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Main page of Lehrauftrag
*/
public function index()
{
// Set studiengang to be selected in studiengang dropdown
$oe_kurzbz = $this->input->get('organisationseinheit'); // if provided by selected studiengang
$oe_kurzbz = ($oe_kurzbz == 'null' ? null : $oe_kurzbz);
// Retrieve studiengaenge the user is entitled for to populate studiengang dropdown
if (!$oe_kurzbz_arr = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN))
{
show_error('Fehler bei Berechtigungsprüfung');
}
// If oe_kurzbz get param was set, check against entitled stg
if (!is_null($oe_kurzbz))
{
if (!in_array($oe_kurzbz, $oe_kurzbz_arr))
{
show_error('Keine Berechtigung für diese Organisationseinheit');
}
}
// Set studiensemester selected for studiengang dropdown
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getNext();
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
}
elseif (isError($studiensemester))
{
show_error(getError($studiensemester));
}
}
// Set ausbildungssemester selected for ausbildungssemester dropdown
$ausbildungssemester = $this->input->get('ausbildungssemester'); // if provided by selected ausbildungssemester
$ausbildungssemester = ($ausbildungssemester == 'null' ? null : $ausbildungssemester);
$view_data = array(
'organisationseinheit_selected' => $oe_kurzbz,
'organisationseinheit' => $oe_kurzbz_arr,
'studiensemester_selected' => $studiensemester_kurzbz,
'ausbildungssemester_selected' => $ausbildungssemester,
);
$this->load->view('lehre/lehrauftrag/approveLehrauftrag.php', $view_data);
}
/**
* Set the contract status of Lehrauftrag to 'erteilt'.
* Performed on ajax call.
*/
public function approveLehrauftrag()
{
$lehrauftrag_arr = json_decode($this->input->post('selected_data'));
if (is_array($lehrauftrag_arr))
{
foreach ($lehrauftrag_arr as $lehrauftrag)
{
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
$lv_oe_kurzbz = null;
// Retrieve organisational unit to which the lehrveranstaltung of the contract belongs to
// * first get lehrveranstaltung
$result = $this->VertragModel->getLehreinheitData($vertrag_id, 'lehrveranstaltung_id');
if (hasData($result))
{
// * then get corresponding organisational unit
$this->load->model('education/Lehrveranstaltung_model', 'Lehrveranstaltung_model');
$result = $this->LehrveranstaltungModel->load($result->retval[0]->lehrveranstaltung_id);
if (hasData($result))
{
$lv_oe_kurzbz = $result->retval[0]->oe_kurzbz;
}
elseif (isError(($result)))
{
return $this->outputJsonError('Fehler beim Laden einer Lehrveranstaltung.');
}
}
elseif (isError($result))
{
return $this->outputJsonError('Fehler beim Laden von Lehreinheitdaten.');
}
// Check if user is entitled to approve this lehrauftrag (by permission and organisational unit)
if (!$this->permissionlib->isBerechtigt(self::BERECHTIGUNG_LEHRAUFTRAG_ERTEILEN, 'suid', $lv_oe_kurzbz))
{
return $this->outputJsonError('Sie haben keine Erteilberechtigung für diese Organisationseinheit: '. $lv_oe_kurzbz);
}
// Approve lehrauftrag by setting vertragsstatus to 'erteilt'
$result = $this->VertragvertragsstatusModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
if (!isError($result))
{
$json [] = array(
'row_index' => $lehrauftrag->row_index,
'erteilt' => date('Y-m-d')
);
}
else
{
return $this->outputJsonError($result->retval);
}
}
}
else
{
return $this->outputJsonError('Fehler beim Übertragen der Daten.');
}
// output success json to ajax
if (isset($json) && !isEmptyArray($json))
{
$this->outputJsonSuccess($json);
}
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
}
@@ -20,7 +20,7 @@ class Studienjahr extends Auth_Controller
'editStudienjahr' => 'basis/studiensemester:rw',
'newStudienjahr' => 'basis/studiensemester:rw',
'insStudienjahr' => 'basis/studiensemester:rw',
'saveStudienjahr' => 'basis/studiensemester:rw',
'updateStudienjahr' => 'basis/studiensemester:rw',
'deleteStudienjahr' => 'basis/studiensemester:rw'
)
);
@@ -44,7 +44,7 @@ class Studienjahr extends Auth_Controller
$studienjahr = $this->StudienjahrModel->load();
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
$data = array(
@@ -66,7 +66,7 @@ class Studienjahr extends Auth_Controller
$studienjahr = $this->StudienjahrModel->load($studienjahr_kurzbez);
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
$data = array(
"studienjahr" => $studienjahr->retval
@@ -86,7 +86,7 @@ class Studienjahr extends Auth_Controller
$allstudienjahrkurzbz = $this->StudienjahrModel->load();
if ($allstudienjahrkurzbz->error)
{
show_error($allstudienjahrkurzbz->retval);
show_error(getError($allstudienjahrkurzbz));
}
$studienjahrkurzbz = $allstudienjahrkurzbz->retval[0]->studienjahr_kurzbz;
$years = $this->__getYearsFromStudienjahr($studienjahrkurzbz);
@@ -117,11 +117,15 @@ class Studienjahr extends Auth_Controller
public function insStudienjahr()
{
$data = $this->__retrieveStudienjahrData();
$studienjahr_exists = $this->StudienjahrModel->load($data['studienjahr_kurzbz']);
if (hasData($studienjahr_exists))
show_error("Studienjahr existiert bereits");
$studienjahr = $this->StudienjahrModel->insert($data);
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true"));
@@ -149,7 +153,7 @@ class Studienjahr extends Auth_Controller
return $data;
} else
{
show_error($validation->retval);
show_error(getError($validation));
}
}
@@ -177,14 +181,14 @@ class Studienjahr extends Auth_Controller
* replaces slash in Kurzbezeichnung with underscore
* saved=true is a GET parameter passed for showing save message
*/
public function saveStudienjahr()
public function updateStudienjahr()
{
$data = $this->__retrieveStudienjahrData();
$studienjahr = $this->StudienjahrModel->update($data['studienjahr_kurzbz'], $data);
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/editStudienjahr/".str_replace("/", "_", $data['studienjahr_kurzbz']."?saved=true"));
@@ -203,7 +207,7 @@ class Studienjahr extends Auth_Controller
if ($studienjahr->error)
{
show_error($studienjahr->retval);
show_error(getError($studienjahr));
}
redirect("/organisation/studienjahr/listStudienjahr");
@@ -20,7 +20,7 @@ class Studiensemester extends Auth_Controller
'editStudiensemester' => 'basis/studiensemester:rw',
'newStudiensemester' => 'basis/studiensemester:rw',
'insStudiensemester' => 'basis/studiensemester:rw',
'saveStudiensemester' => 'basis/studiensemester:rw',
'updateStudiensemester' => 'basis/studiensemester:rw',
'deleteStudiensemester' => 'basis/studiensemester:rw'
)
);
@@ -45,7 +45,7 @@ class Studiensemester extends Auth_Controller
$semester = $this->StudiensemesterModel->load();
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
$data = array(
@@ -64,13 +64,13 @@ class Studiensemester extends Auth_Controller
$semester = $this->StudiensemesterModel->load($semester_kurzbez);
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
$this->StudienjahrModel->addOrder('studienjahr_kurzbz', "DESC");
$allstudienjahre = $this->StudienjahrModel->load();
if ($allstudienjahre->error)
{
show_error($allstudienjahre->retval);
show_error(getError($allstudienjahre));
}
$data = array(
"semester" => $semester->retval,
@@ -90,7 +90,7 @@ class Studiensemester extends Auth_Controller
$allstudienjahre = $this->StudienjahrModel->load();
if ($allstudienjahre->error)
{
show_error($allstudienjahre->retval);
show_error(getError($allstudienjahre));
}
$data = array(
@@ -108,11 +108,16 @@ class Studiensemester extends Auth_Controller
public function insStudiensemester()
{
$data = $this->__retrieveStudiensemesterData();
$studiensemester_exists = $this->StudiensemesterModel->load($data['studiensemester_kurzbz']);
if (hasData($studiensemester_exists))
show_error("Studiensemester existiert bereits");
$semester = $this->StudiensemesterModel->insert($data);
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true");
@@ -156,7 +161,7 @@ class Studiensemester extends Auth_Controller
return $data;
} else
{
show_error($validation->retval);
show_error(getError($validation));
}
}
@@ -185,14 +190,14 @@ class Studiensemester extends Auth_Controller
* redirects to edit page after inserting
* saved=true is a GET parameter passed for showing save message
*/
public function saveStudiensemester()
public function updateStudiensemester()
{
$data = $this->__retrieveStudiensemesterData();
$semester = $this->StudiensemesterModel->update($data['studiensemester_kurzbz'], $data);
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/editStudiensemester/".$data['studiensemester_kurzbz']."?saved=true");
@@ -209,10 +214,9 @@ class Studiensemester extends Auth_Controller
if ($semester->error)
{
show_error($semester->retval);
show_error(getError($semester));
}
redirect("/organisation/studiensemester/listStudiensemester");
}
}
@@ -71,7 +71,7 @@ class BPKWartung extends Auth_Controller
$personexists = $this->PersonModel->load($person_id);
if (isError($personexists))
show_error($personexists->retval);
show_error(getError($personexists));
if (!hasData($personexists))
show_error('Person does not exist!');
@@ -122,7 +122,7 @@ class BPKWartung extends Auth_Controller
if (isError($stammdaten))
{
show_error($stammdaten->retval);
show_error(getError($stammdaten));
}
if (!isset($stammdaten->retval))
@@ -132,7 +132,7 @@ class BPKWartung extends Auth_Controller
if (isError($adresse))
{
show_error($adresse->retval);
show_error(getError($adresse));
}
$data = array(
@@ -46,6 +46,9 @@ class Gradelist extends Auth_Controller
$this->_grades[$row->note]['anmerkung'] = $row->anmerkung;
$this->_grades[$row->note]['notenwert'] = $row->notenwert;
}
$this->_grades['']['positiv'] = false;
$this->_grades['']['anmerkung'] = '';
$this->_grades['']['notenwert'] = 0;
}
/**
@@ -386,6 +389,15 @@ class Gradelist extends Auth_Controller
'sws' => $row['sws']
);
}
elseif (isset($row['zugeordnet']) && $row['zugeordnet'] == true && $row['lehrtyp_kurzbz']=='lv')
{
// ECTS und SWS mitzaehlen wenn die Person zugeordnet ist auch wenn noch keine Noten vorhanden ist.
$grades[] = array(
'note' => '',
'ects' => $row['ects'],
'sws' => $row['sws']
);
}
if (isset($row['childs']))
{
@@ -2,8 +2,10 @@
if (! defined('BASEPATH')) exit('No direct script access allowed');
class UDF extends Auth_Controller
class FAS_UDF extends Auth_Controller
{
const FAS_UDF_SESSION_NAME = 'fasUdfSessionName';
public function __construct()
{
parent::__construct(
@@ -22,31 +24,33 @@ class UDF extends Auth_Controller
*/
public function index()
{
$fasUdfSession = getSession(self::FAS_UDF_SESSION_NAME);
$person_id = $this->input->get('person_id');
if (isset($this->session->person_id))
if (isset($fasUdfSession['person_id']))
{
if (!isset($person_id))
{
$person_id = $this->session->person_id;
$person_id = $fasUdfSession['person_id'];
}
unset($this->session->person_id);
unset($fasUdfSession['person_id']);
}
$prestudent_id = $this->input->get('prestudent_id');
if (isset($this->session->prestudent_id))
if (isset($fasUdfSession['prestudent_id']))
{
if (!isset($prestudent_id))
{
$prestudent_id = $this->session->prestudent_id;
$prestudent_id = $fasUdfSession['prestudent_id'];
}
unset($this->session->prestudent_id);
unset($fasUdfSession['prestudent_id']);
}
$result = null;
if (isset($this->session->result))
if (isset($fasUdfSession['result']))
{
$result = clone $this->session->result;
$this->session->set_userdata('result', null);
$result = clone $fasUdfSession['result'];
setSessionElement(self::FAS_UDF_SESSION_NAME, 'result', null);
}
$data = array('result' => $result);
@@ -71,7 +75,7 @@ class UDF extends Auth_Controller
}
}
$this->load->view('system/udf', $data);
$this->load->view('system/fas_udf', $data);
}
/**
@@ -90,9 +94,9 @@ class UDF extends Auth_Controller
if (isSuccess($validation))
{
// Load model UDF_model
$this->load->model('system/UDF_model', 'UDFModel');
$this->load->model('system/FAS_UDF_model', 'FASUDFModel');
$result = $this->UDFModel->saveUDFs($udfs);
$result = $this->FASUDFModel->saveUDFs($udfs);
$userdata['result'] = $result;
}
@@ -101,8 +105,11 @@ class UDF extends Auth_Controller
$userdata['result'] = $validation;
}
$this->session->set_userdata($userdata);
redirect('system/UDF');
setSessionElement(self::FAS_UDF_SESSION_NAME, 'person_id', $userdata['person_id']);
setSessionElement(self::FAS_UDF_SESSION_NAME, 'prestudent_id', $userdata['prestudent_id']);
setSessionElement(self::FAS_UDF_SESSION_NAME, 'result', $userdata['result']);
redirect('system/FAS_UDF');
}
/**
@@ -0,0 +1,44 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Overview on cronjob logs
*/
class LogsViewer extends Auth_Controller
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct(
array(
'index' => 'system/developer:r'
)
);
// Loads WidgetLib
$this->load->library('WidgetLib');
// Loads phrases system
$this->loadPhrases(
array(
'global',
'ui',
'filter'
)
);
}
// -----------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Main page of the InfoCenter tool
*/
public function index()
{
$this->load->view('system/logs/logsViewer.php');
}
}
@@ -7,7 +7,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
* Provides data to the ajax get calls about the filter
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
*/
class Navigation extends Auth_Controller
class Navigation extends FHC_Controller
{
const NAVIGATION_PAGE_PARAM = 'navigation_page'; // Navigation page parameter name
@@ -16,12 +16,9 @@ class Navigation extends Auth_Controller
*/
public function __construct()
{
parent::__construct(
array(
'menu' => 'basis/vilesci:r',
'header' => 'basis/vilesci:r'
)
);
parent::__construct();
$this->load->library('AuthLib');
$this->_loadNavigationLib(); // Loads the NavigationLib with parameters
}
+9 -9
View File
@@ -45,7 +45,7 @@ class Phrases extends Auth_Controller
{
$phrases = $this->phraseslib->getPhraseByApp('aufnahme');
if ($phrases->error)
show_error($phrases->retval);
show_error(getError($phrases));
$data = array(
'app' => 'aufnahme',
@@ -67,7 +67,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->getPhraseInhalt($phrase_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
$data = array(
'phrase_id' => $phrase_id,
@@ -88,7 +88,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->delPhrasentext($phrasentext_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
redirect('/system/Phrases/view/'.$phrase_id);
}
@@ -102,7 +102,7 @@ class Phrases extends Auth_Controller
$phrase = $this->phraseslib->getPhrase($phrase_id);
if ($phrase->error)
show_error($phrase->retval);
show_error(getError($phrase));
if (count($phrase->retval) != 1)
show_error('Phrase nicht vorhanden! ID: '.$phrase_id);
@@ -124,7 +124,7 @@ class Phrases extends Auth_Controller
$phrase = $this->phraseslib->savePhrase($phrase_id, $data);
if ($phrase->error)
show_error($phrase->retval);
show_error(getError($phrase));
$phrase_id = $phrase->retval;
@@ -145,7 +145,7 @@ class Phrases extends Auth_Controller
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
if ($resultOE->error)
show_error($resultOE->retval);
show_error(getError($resultOE));
if (hasData($resultOE))
{
@@ -161,7 +161,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->insertPhraseinhalt($data);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt);
$phrase_inhalt_id = $phrase_inhalt->retval;
@@ -180,7 +180,7 @@ class Phrases extends Auth_Controller
{
$phrase_inhalt = $this->phraseslib->getPhrasentextById($phrasentext_id);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
$data = $phrase_inhalt->retval[0];
@@ -204,7 +204,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->updatePhraseInhalt($phrase_inhalt_id, $data);
if ($phrase_inhalt->error)
show_error($phrase_inhalt->retval);
show_error(getError($phrase_inhalt));
redirect('/system/Phrases/editText/'.$phrase_inhalt_id);
@@ -0,0 +1,78 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Class Variables
* Provides interface for managing user variables.
*/
class Variables extends Auth_Controller
{
private $_uid;
/**
* Variables constructor.
* Sets logged in user, loads models and libraries.
*/
public function __construct()
{
parent::__construct(
array(
'setVar' => 'basis/variable:rw',
'getVar' => 'basis/variable:rw',
'changeStudiensemesterVar' => 'basis/variable:rw'
)
);
$this->load->model('system/variable_model', 'VariableModel');
$this->_setAuthUID();
$this->load->library('VariableLib', array('uid' => $this->_uid));
}
/**
* Sets a user variable based on received post parameters, outputs JSON response.
*/
public function setVar()
{
$name = $this->input->post('name');
$wert = $this->input->post('wert');
$result = $this->VariableModel->setVariable($this->_uid, $name, $wert);
$this->outputJson($result);
}
/**
* gets a user variable based on received post parameter, outputs JSON response.
*/
public function getVar()
{
$name = $this->input->get('name');
$this->outputJson($this->VariableModel->getVariables($this->_uid, array($name)));
}
/**
* Changes a user variable containing a Studiensemester based on received post parameters, outputs JSON response.
*/
public function changeStudiensemesterVar()
{
$name = $this->input->post('name');
$change = $this->input->post('change');
$result = $this->variablelib->changeStudiensemesterVar($this->_uid, $name, $change);
$this->outputJson($result);
}
/**
* Retrieve the UID of the logged user and checks if it is valid
*/
private function _setAuthUID()
{
$this->_uid = getAuthUID();
if (!$this->_uid) show_error('User authentification failed');
}
}
+9 -9
View File
@@ -49,7 +49,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->getVorlageByMimetype($mimetype);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
$data = array (
'mimetype' => $mimetype,
@@ -66,7 +66,7 @@ class Vorlage extends Auth_Controller
$vorlagentext = $this->vorlagelib->getVorlagetextByVorlage($vorlage_kurzbz);
if ($vorlagentext->error)
show_error($vorlagentext->retval);
show_error(getError($vorlagentext));
$data = array (
'vorlage_kurzbz' => $vorlage_kurzbz,
@@ -83,7 +83,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->getVorlage($vorlage_kurzbz);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
if (count($vorlage->retval) != 1)
show_error('Nachricht nicht vorhanden! ID: '.$vorlage_kurzbz);
@@ -119,7 +119,7 @@ class Vorlage extends Auth_Controller
$vorlage = $this->vorlagelib->saveVorlage($vorlage_kurzbz, $data);
if ($vorlage->error)
show_error($vorlage->retval);
show_error(getError($vorlage));
$vorlage_kurzbz = $vorlage->retval;
@@ -137,7 +137,7 @@ class Vorlage extends Auth_Controller
$resultOE = $this->OrganisationseinheitModel->loadWhere(array('aktiv' => true, 'oe_parent_kurzbz' => null));
if ($resultOE->error)
show_error($resultOE->retval);
show_error(getError($resultOE));
if (hasData($resultOE))
{
@@ -153,7 +153,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->insertVorlagetext($data);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$vorlagestudiengang_id = $vorlagetext->retval;
@@ -170,7 +170,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->getVorlagetextById($vorlagestudiengang_id);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$data = $vorlagetext->retval[0];
@@ -254,7 +254,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->updateVorlagetext($data['vorlagestudiengang_id'], $data);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
redirect('/system/vorlage/editText/'.$data['vorlagestudiengang_id']);
}
@@ -266,7 +266,7 @@ class Vorlage extends Auth_Controller
$vorlagetext = $this->vorlagelib->getVorlagetextById($vorlagestudiengang_id);
if ($vorlagetext->error)
show_error($vorlagetext->retval);
show_error(getError($vorlagetext));
$data = array(
'text' => parseText($vorlagetext->retval[0]->text, $jsonDecodedForm)
@@ -61,7 +61,7 @@ class PrestudentMultiAssign extends Auth_Controller
}
else if (isError($returnUsers))
{
show_error($returnUsers->retval);
show_error(getError($returnUsers));
}
}
@@ -24,6 +24,7 @@ class InfoCenter extends Auth_Controller
const FILTER_ID = 'filter_id';
const PREV_FILTER_ID = 'prev_filter_id';
const KEEP_TABLESORTER_FILTER = 'keepTsFilter';
private $_uid; // contains the UID of the logged user
@@ -100,9 +101,11 @@ class InfoCenter extends Auth_Controller
'reloadNotizen' => 'infocenter:r',
'reloadLogs' => 'infocenter:r',
'outputAkteContent' => 'infocenter:r',
'getParkedDate' => 'infocenter:r',
'getPostponeDate' => 'infocenter:r',
'park' => 'infocenter:rw',
'unpark' => 'infocenter:rw',
'setOnHold' => 'infocenter:rw',
'removeOnHold' => 'infocenter:rw',
'getStudienjahrEnd' => 'infocenter:r',
'setNavigationMenuArrayJson' => 'infocenter:r'
)
@@ -136,6 +139,8 @@ class InfoCenter extends Auth_Controller
$this->_setAuthUID(); // sets property uid
$this->load->library('VariableLib', array('uid' => $this->_uid));
$this->setControllerId(); // sets the controller id
}
@@ -188,7 +193,7 @@ class InfoCenter extends Auth_Controller
$personexists = $this->PersonModel->load($person_id);
if (isError($personexists))
show_error($personexists->retval);
show_error(getError($personexists));
if (!hasData($personexists))
show_error('Person does not exist!');
@@ -199,8 +204,7 @@ class InfoCenter extends Auth_Controller
// mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
if (isError($result))
show_error($result->retval);
if (isError($result)) show_error(getError($result));
}
$persondata = $this->_loadPersonData($person_id);
@@ -226,13 +230,12 @@ class InfoCenter extends Auth_Controller
{
$result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
if (isError($result))
show_error($result->retval);
if (isError($result)) show_error(getError($result));
$redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
// Force reload of Dataset after Unlock
$redirectLink .= '&reloadDataset=true';
$redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true';
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
@@ -659,7 +662,7 @@ class InfoCenter extends Auth_Controller
if (isError($notizen))
{
show_error($notizen->retval);
show_error(getError($notizen));
}
$this->load->view('system/infocenter/notizen.php', array('notizen' => $notizen->retval));
@@ -687,14 +690,14 @@ class InfoCenter extends Auth_Controller
if (isError($akte))
{
show_error($akte->retval);
show_error(getError($akte));
}
$aktecontent = $this->dmslib->getAkteContent($akte_id);
if (isError($aktecontent))
{
show_error($aktecontent->retval);
show_error(getError($aktecontent));
}
$this->output
@@ -709,11 +712,32 @@ class InfoCenter extends Auth_Controller
* Gets the date until which a person is parked
* @param $person_id
*/
public function getParkedDate($person_id)
public function getPostponeDate($person_id)
{
$result = array(
'type' => null,
'date' => null
);
$parkedDate = $this->personloglib->getParkedDate($person_id);
$this->outputJsonSuccess(array($parkedDate));
if (isset($parkedDate))
{
$result['type'] = 'parked';
$result['date'] = $parkedDate;
}
else
{
$onholdDate = $this->personloglib->getOnHoldDate($person_id);
if (isset($onholdDate))
{
$result['type'] = 'onhold';
$result['date'] = $onholdDate;
}
}
$this->outputJsonSuccess($result);
}
/**
@@ -741,6 +765,31 @@ class InfoCenter extends Auth_Controller
$this->outputJson($result);
}
/**
* Sets a person on hold ("zurückstellen")
*/
public function setOnHold()
{
$person_id = $this->input->post('person_id');
$date = $this->input->post('onholddate');
$result = $this->personloglib->setOnHold($person_id, date_format(date_create($date), 'Y-m-d'), self::TAETIGKEIT, self::APP, null, $this->_uid);
$this->outputJson($result);
}
/**
* Removed on hold status of a person
*/
public function removeOnHold()
{
$person_id = $this->input->post('person_id');
$result = $this->personloglib->removeOnHold($person_id);
$this->outputJson($result);
}
/**
* Gets the End date of the current Studienjahr
*/
@@ -891,6 +940,7 @@ class InfoCenter extends Auth_Controller
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
{
@@ -948,7 +998,7 @@ class InfoCenter extends Auth_Controller
$origin_page = $this->input->get(self::ORIGIN_PAGE);
$link = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE);
$link = site_url(self::INFOCENTER_URI);
if ($origin_page == self::FREIGEGEBEN_PAGE)
{
$link = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
@@ -961,7 +1011,7 @@ class InfoCenter extends Auth_Controller
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$link .= '?'.self::FILTER_ID.'='.$prevFilterId;
$link .= '?'.self::FILTER_ID.'='.$prevFilterId.'&'.self::KEEP_TABLESORTER_FILTER.'=true';
}
$this->navigationlib->setSessionMenu(
@@ -997,7 +1047,7 @@ class InfoCenter extends Auth_Controller
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
$homeLink .= '?'.self::FILTER_ID.'='.$prevFilterId;
$homeLink .= '&'.self::FILTER_ID.'='.$prevFilterId;
}
$this->navigationlib->setSessionElementMenu(
@@ -1112,7 +1162,7 @@ class InfoCenter extends Auth_Controller
if (isError($locked))
{
show_error($locked->retval);
show_error(getError($locked));
}
$lockedby = null;
@@ -1131,7 +1181,7 @@ class InfoCenter extends Auth_Controller
if (isError($stammdaten))
{
show_error($stammdaten->retval);
show_error(getError($stammdaten));
}
if (!isset($stammdaten->retval))
@@ -1141,21 +1191,21 @@ class InfoCenter extends Auth_Controller
if (isError($dokumente))
{
show_error($dokumente->retval);
show_error(getError($dokumente));
}
$dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true);
if (isError($dokumente_nachgereicht))
{
show_error($dokumente_nachgereicht->retval);
show_error(getError($dokumente_nachgereicht));
}
$messages = $this->MessageModel->getMessagesOfPerson($person_id, 1);
if (isError($messages))
{
show_error($messages->retval);
show_error(getError($messages));
}
$logs = $this->personloglib->getLogs($person_id);
@@ -1164,21 +1214,21 @@ class InfoCenter extends Auth_Controller
if (isError($notizen))
{
show_error($notizen->retval);
show_error(getError($notizen));
}
$notizen_bewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung%');
if (isError($notizen_bewerbung))
{
show_error($notizen_bewerbung->retval);
show_error(getError($notizen_bewerbung));
}
$user_person = $this->PersonModel->getByUid($this->_uid);
if (isError($user_person))
{
show_error($user_person->retval);
show_error(getError($user_person));
}
$data = array (
@@ -1209,7 +1259,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudenten))
{
show_error($prestudenten->retval);
show_error(getError($prestudenten));
}
foreach ($prestudenten->retval as $prestudent)
@@ -1218,7 +1268,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudentWithZgv))
{
show_error($prestudentWithZgv->retval);
show_error(getError($prestudentWithZgv));
}
$zgvpruefung = $prestudentWithZgv->retval[0];
@@ -1326,13 +1376,13 @@ class InfoCenter extends Auth_Controller
$starta = $this->StudiensemesterModel->load($a->prestudentstatus->studiensemester_kurzbz);
if (!hasData($starta))
{
show_error($starta->retval);
show_error(getError($starta));
}
$startb = $this->StudiensemesterModel->load($b->prestudentstatus->studiensemester_kurzbz);
if (!hasData($startb))
{
show_error($startb->retval);
show_error(getError($startb));
}
$starta = date_format(date_create($starta->retval[0]->start), 'Y-m-d');
@@ -1404,7 +1454,7 @@ class InfoCenter extends Auth_Controller
if (isError($prestudent))
{
show_error($prestudent->retval);
show_error(getError($prestudent));
}
$person_id = $prestudent->retval[0]->person_id;
@@ -3,7 +3,7 @@
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* This controller operates between (interface) the JS (GUI) and the FiltersLib (back-end)
* This controller operates between (interface) the JS (GUI) and the FilterWidgetLib (back-end)
* Provides data to the ajax get calls about the filter
* Accepts ajax post calls to change the filter data
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
@@ -12,10 +12,10 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
*/
class Filters extends FHC_Controller
{
const FILTER_PAGE_PARAM = 'filter_page';
const FILTER_UNIQUE_ID = 'filterUniqueId';
/**
* Calls the parent's constructor and loads the FiltersLib
* Calls the parent's constructor and loads the FilterWidgetLib
*/
public function __construct()
{
@@ -24,8 +24,8 @@ class Filters extends FHC_Controller
// Loads authentication library and starts authentication
$this->load->library('AuthLib');
// Loads the FiltersLib with HTTP GET/POST parameters
$this->_loadFiltersLib();
// Loads the FilterWidgetLib with HTTP GET/POST parameters
$this->_loadFilterWidgetLib();
// Checks if the caller is allow to read this data
$this->_isAllowed();
@@ -39,7 +39,7 @@ class Filters extends FHC_Controller
*/
public function getFilter()
{
$this->outputJsonSuccess($this->filterslib->getSession());
$this->outputJsonSuccess($this->filterwidgetlib->getSession());
}
/**
@@ -48,7 +48,7 @@ class Filters extends FHC_Controller
public function rowNumber()
{
$rowNumber = 0;
$dataset = $this->filterslib->getSessionElement(FiltersLib::SESSION_DATASET);
$dataset = $this->filterwidgetlib->getSessionElement(FilterWidgetLib::SESSION_DATASET);
if (isset($dataset) && is_array($dataset))
{
@@ -66,7 +66,7 @@ class Filters extends FHC_Controller
{
$selectedFields = $this->input->post('selectedFields');
if ($this->filterslib->sortSelectedFields($selectedFields) == true)
if ($this->filterwidgetlib->sortSelectedFields($selectedFields) == true)
{
$this->getFilter();
}
@@ -84,7 +84,7 @@ class Filters extends FHC_Controller
{
$selectedField = $this->input->post('selectedField');
if ($this->filterslib->removeSelectedField($selectedField) == true)
if ($this->filterwidgetlib->removeSelectedField($selectedField) == true)
{
$this->getFilter();
}
@@ -101,7 +101,7 @@ class Filters extends FHC_Controller
{
$selectedField = $this->input->post('selectedField');
if ($this->filterslib->addSelectedField($selectedField) == true)
if ($this->filterwidgetlib->addSelectedField($selectedField) == true)
{
$this->getFilter();
}
@@ -118,7 +118,7 @@ class Filters extends FHC_Controller
{
$appliedFilter = $this->input->post('appliedFilter');
if ($this->filterslib->removeAppliedFilter($appliedFilter) == true)
if ($this->filterwidgetlib->removeAppliedFilter($appliedFilter) == true)
{
$this->outputJsonSuccess('Removed');
}
@@ -138,7 +138,7 @@ class Filters extends FHC_Controller
$appliedFiltersConditions = $this->input->post('appliedFiltersConditions');
$appliedFiltersOptions = $this->input->post('appliedFiltersOptions');
if ($this->filterslib->applyFilters(
if ($this->filterwidgetlib->applyFilters(
$appliedFilters,
$appliedFiltersOperations,
$appliedFiltersConditions,
@@ -160,7 +160,7 @@ class Filters extends FHC_Controller
{
$filter = $this->input->post('filter');
if ($this->filterslib->addFilter($filter) == true)
if ($this->filterwidgetlib->addFilter($filter) == true)
{
$this->getFilter();
}
@@ -177,7 +177,7 @@ class Filters extends FHC_Controller
{
$customFilterDescription = $this->input->post('customFilterDescription');
if ($this->filterslib->saveCustomFilter($customFilterDescription) == true)
if ($this->filterwidgetlib->saveCustomFilter($customFilterDescription) == true)
{
$this->outputJsonSuccess('Saved');
}
@@ -194,7 +194,7 @@ class Filters extends FHC_Controller
{
$filter_id = $this->input->post('filter_id');
if ($this->filterslib->removeCustomFilter($filter_id) == true)
if ($this->filterwidgetlib->removeCustomFilter($filter_id) == true)
{
$this->outputJsonSuccess('Removed');
}
@@ -211,7 +211,17 @@ class Filters extends FHC_Controller
public function setNavigationMenu()
{
// Generates the filters structure array
$filterMenu = $this->filterslib->generateFilterMenu($this->input->get(FiltersLib::NAVIGATION_PAGE));
$filterMenu = $this->filterwidgetlib->generateFilterMenu($this->input->get(FilterWidgetLib::NAVIGATION_PAGE));
$this->outputJsonSuccess('Success');
}
/**
* Reloads the dataset
*/
public function reloadDataset()
{
$this->filterwidgetlib->reloadDataset();
$this->outputJsonSuccess('Success');
}
@@ -224,38 +234,40 @@ class Filters extends FHC_Controller
*/
private function _isAllowed()
{
if (!$this->filterslib->isAllowed())
if (!$this->filterwidgetlib->isAllowed())
{
$this->terminateWithJsonError('You are not allowed to access to this content');
}
}
/**
* Loads the FiltersLib with the FILTER_PAGE_PARAM parameter
* If the parameter FILTER_PAGE_PARAM is not given then the execution of the controller is terminated and
* Loads the FilterWidgetLib with the FILTER_UNIQUE_ID parameter
* If the parameter FILTER_UNIQUE_ID is not given then the execution of the controller is terminated and
* an error message is printed
*/
private function _loadFiltersLib()
private function _loadFilterWidgetLib()
{
// If the parameter FILTER_PAGE_PARAM is present in the HTTP GET or POST
if (isset($_GET[self::FILTER_PAGE_PARAM]) || isset($_POST[self::FILTER_PAGE_PARAM]))
// If the parameter FILTER_UNIQUE_ID is present in the HTTP GET or POST
if (isset($_GET[self::FILTER_UNIQUE_ID]) || isset($_POST[self::FILTER_UNIQUE_ID]))
{
// If it is present in the HTTP GET
if (isset($_GET[self::FILTER_PAGE_PARAM]))
if (isset($_GET[self::FILTER_UNIQUE_ID]))
{
$filterPage = $this->input->get(self::FILTER_PAGE_PARAM); // is retrieved from the HTTP GET
$filterUniqueId = $this->input->get(self::FILTER_UNIQUE_ID); // is retrieved from the HTTP GET
}
elseif (isset($_POST[self::FILTER_PAGE_PARAM])) // Else if it is present in the HTTP POST
elseif (isset($_POST[self::FILTER_UNIQUE_ID])) // Else if it is present in the HTTP POST
{
$filterPage = $this->input->post(self::FILTER_PAGE_PARAM); // is retrieved from the HTTP POST
$filterUniqueId = $this->input->post(self::FILTER_UNIQUE_ID); // is retrieved from the HTTP POST
}
// Loads the FiltersLib that contains all the used logic
$this->load->library('FiltersLib', array(self::FILTER_PAGE_PARAM => $filterPage));
// Loads the FilterWidgetLib that contains all the used logic
$this->load->library('FilterWidgetLib');
$this->filterwidgetlib->setFilterUniqueId($filterUniqueId);
}
else // Otherwise an error will be written in the output
{
$this->terminateWithJsonError('Parameter "'.self::FILTER_PAGE_PARAM.'" not provided!');
$this->terminateWithJsonError('Parameter "'.self::FILTER_UNIQUE_ID.'" not provided!');
}
}
}
+105
View File
@@ -0,0 +1,105 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* This controller operates between (interface) the JS (GUI) and the tablewidgetlib (back-end)
* Provides data to the ajax get calls about the filter
* Accepts ajax post calls to change the filter data
* This controller works with JSON calls on the HTTP GET or POST and the output is always JSON
* NOTE: extends the FHC_Controller instead of the Auth_Controller because the TableWidget has its
* own permissions check
*/
class Tables extends FHC_Controller
{
const TABLE_UNIQUE_ID = 'tableUniqueId';
/**
* Calls the parent's constructor and loads the tablewidgetlib
*/
public function __construct()
{
parent::__construct();
// Loads authentication library and starts authentication
$this->load->library('AuthLib');
// Loads the tablewidgetlib with HTTP GET/POST parameters
$this->_loadTableWidgetLib();
// Checks if the caller is allow to read this data
$this->_isAllowed();
}
//------------------------------------------------------------------------------------------------------------------
// Public methods
/**
* Retrieves data about the current filter from the session and will be written on the output in JSON format
*/
public function getTable()
{
$this->outputJsonSuccess($this->tablewidgetlib->getSession());
}
/**
* Retrieves the number of records present in the current dataset and will be written on the output in JSON format
*/
public function rowNumber()
{
$rowNumber = 0;
$dataset = $this->tablewidgetlib->getSessionElement(TableWidgetLib::SESSION_DATASET);
if (isset($dataset) && is_array($dataset))
{
$rowNumber = count($dataset);
}
$this->outputJsonSuccess($rowNumber);
}
//------------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Checks if the user is allowed to use this filter
*/
private function _isAllowed()
{
if (!$this->tablewidgetlib->isAllowed())
{
$this->terminateWithJsonError('You are not allowed to access to this content');
}
}
/**
* Loads the tablewidgetlib with the TABLE_UNIQUE_ID parameter
* If the parameter TABLE_UNIQUE_ID is not given then the execution of the controller is terminated and
* an error message is printed
*/
private function _loadTableWidgetLib()
{
// If the parameter TABLE_UNIQUE_ID is present in the HTTP GET or POST
if (isset($_GET[self::TABLE_UNIQUE_ID]) || isset($_POST[self::TABLE_UNIQUE_ID]))
{
// If it is present in the HTTP GET
if (isset($_GET[self::TABLE_UNIQUE_ID]))
{
$tableUniqueId = $this->input->get(self::TABLE_UNIQUE_ID); // is retrieved from the HTTP GET
}
elseif (isset($_POST[self::TABLE_UNIQUE_ID])) // Else if it is present in the HTTP POST
{
$tableUniqueId = $this->input->post(self::TABLE_UNIQUE_ID); // is retrieved from the HTTP POST
}
// Loads the tablewidgetlib that contains all the used logic
$this->load->library('TableWidgetLib');
$this->tablewidgetlib->setTableUniqueId($tableUniqueId);
}
else // Otherwise an error will be written in the output
{
$this->terminateWithJsonError('Parameter "'.self::TABLE_UNIQUE_ID.'" not provided!');
}
}
}