Fixed: BIG AMOUNT of Lehrauftrage not causing POST param limit issue anymore

Before the number of params was overflowing POST param limitation of 1000.
Now data is json stringified on clientside to pack all data in only one
string. Adaptations were done also on serverside.
This commit is contained in:
Cris
2019-10-24 15:57:50 +02:00
committed by hainberg
parent 9d0944b717
commit 30ef50fa4c
5 changed files with 52 additions and 41 deletions
@@ -106,23 +106,23 @@ class Lehrauftrag extends Auth_Controller
public function orderLehrauftrag()
{
$new_lehrvertrag_data_arr = array(); // information of new lehrvertraege to be used in mail
$lehrauftrag_arr = $this->input->post('selected_data');
$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']) && is_numeric($lehrauftrag['lehreinheit_id'])) ? $lehrauftrag['lehreinheit_id'] : null;
$lehrveranstaltung_id = (isset($lehrauftrag['lehrveranstaltung_id']) && is_numeric($lehrauftrag['lehrveranstaltung_id'])) ? $lehrauftrag['lehrveranstaltung_id'] : null;
$person_id = (isset($lehrauftrag['person_id']) && is_numeric($lehrauftrag['person_id'])) ? $lehrauftrag['person_id'] : null;
$mitarbeiter_uid = (isset($lehrauftrag['mitarbeiter_uid']) && is_string($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
$vertrag_id = (isset($lehrauftrag['vertrag_id']) && is_numeric($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
$projektarbeit_id = (isset($lehrauftrag['projektarbeit_id']) && is_numeric($lehrauftrag['projektarbeit_id'])) ? $lehrauftrag['projektarbeit_id'] : null;
$stunden = (isset($lehrauftrag['stunden']) && is_numeric($lehrauftrag['stunden'])) ? $lehrauftrag['stunden'] : null;
$betrag = (isset($lehrauftrag['betrag']) && is_numeric($lehrauftrag['betrag'])) ? $lehrauftrag['betrag'] : null;
$vertrag_betrag = (isset($lehrauftrag['vertrag_betrag']) && is_numeric($lehrauftrag['vertrag_betrag'])) ? $lehrauftrag['vertrag_betrag'] : null;
$studiensemester_kurzbz = (isset($lehrauftrag['studiensemester_kurzbz']) && is_string($lehrauftrag['studiensemester_kurzbz'])) ? $lehrauftrag['betrag'] : null;
$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 : null;
$betrag = (isset($lehrauftrag->betrag)) ? $lehrauftrag->betrag : null;
$vertrag_betrag = (isset($lehrauftrag->vertrag_betrag)) ? $lehrauftrag->vertrag_betrag : null;
$studiensemester_kurzbz = (isset($lehrauftrag->studiensemester_kurzbz)) ? $lehrauftrag->studiensemester_kurzbz : null;
// update contract if contract exists and the betrag was changed
$hasChanged = (floatval($betrag) != floatval($vertrag_betrag)) ? true : false;
@@ -141,7 +141,7 @@ class Lehrauftrag extends Auth_Controller
if (isSuccess($result))
{
$json []= array(
'row_index' => $lehrauftrag['row_index'],
'row_index' => $lehrauftrag->row_index,
'bestellt' => date('Y-m-d'),
'vertrag_betrag' => $betrag,
'erteilt' => null
@@ -152,29 +152,29 @@ class Lehrauftrag extends Auth_Controller
else
{
$result = $this->VertragModel->save(
element('person_id', $lehrauftrag),
element('mitarbeiter_uid', $lehrauftrag),
element('lehrveranstaltung_id', $lehrauftrag),
element('lehreinheit_id', $lehrauftrag),
element('projektarbeit_id', $lehrauftrag),
element('stunden', $lehrauftrag),
element('betrag', $lehrauftrag),
element('studiensemester_kurzbz', $lehrauftrag)
$person_id,
$mitarbeiter_uid,
$lehrveranstaltung_id,
$lehreinheit_id,
$projektarbeit_id,
$stunden,
$betrag,
$studiensemester_kurzbz
);
if (isSuccess($result))
{
$json []= array(
'row_index' => $lehrauftrag['row_index'],
'row_index' => $lehrauftrag->row_index,
'bestellt' => date('Y-m-d'),
'vertrag_betrag' => $betrag
);
}
$new_lehrvertrag_data_arr[] = array(
'studiensemester_kurzbz' => $lehrauftrag['studiensemester_kurzbz'],
'studiengang_kz' => $lehrauftrag['studiengang_kz'],
'lv_oe_kurzbz' => $lehrauftrag['lv_oe_kurzbz']
'studiensemester_kurzbz' => $lehrauftrag->studiensemester_kurzbz,
'studiengang_kz' => $lehrauftrag->studiengang_kz,
'lv_oe_kurzbz' => $lehrauftrag->lv_oe_kurzbz
);
}
}
@@ -127,7 +127,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
foreach($lehrauftrag_arr as $lehrauftrag)
{
$mitarbeiter_uid = (!is_null($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
$vertrag_id = (!is_null($lehrauftrag['vertrag_id'])) ? intval($lehrauftrag['vertrag_id']) : null;
$vertrag_id = (!is_null($lehrauftrag['vertrag_id'])) ? $lehrauftrag['vertrag_id'] : null;
// Set status to accepted
$result = $this->VertragModel->setStatus($vertrag_id, $mitarbeiter_uid, 'akzeptiert');
@@ -110,29 +110,27 @@ class LehrauftragErteilen extends Auth_Controller
*/
public function approveLehrauftrag()
{
$lehrauftrag_arr = $this->input->post();
foreach($lehrauftrag_arr as $lehrauftrag)
$lehrauftrag_arr = json_decode($this->input->post('selected_data'));
if (is_array($lehrauftrag_arr))
{
if (!isEmptyArray($lehrauftrag))
foreach ($lehrauftrag_arr as $lehrauftrag)
{
$mitarbeiter_uid = (!is_null($lehrauftrag['mitarbeiter_uid'])) ? $lehrauftrag['mitarbeiter_uid'] : null;
$vertrag_id = (!is_null($lehrauftrag['vertrag_id'])) ? intval($lehrauftrag['vertrag_id']) : null;
$mitarbeiter_uid = (isset($lehrauftrag->mitarbeiter_uid)) ? $lehrauftrag->mitarbeiter_uid : null;
$vertrag_id = (isset($lehrauftrag->vertrag_id)) ? $lehrauftrag->vertrag_id : null;
$result = $this->VertragModel->setStatus($vertrag_id, $mitarbeiter_uid, 'erteilt');
if ($result->retval)
{
$json []= array(
'row_index' => $lehrauftrag['row_index'],
if ($result->retval) {
$json [] = array(
'row_index' => $lehrauftrag->row_index,
'erteilt' => date('Y-m-d')
);
}
}
}
// output json to ajax
if (!isEmptyArray($json))
if (isset($json) && !isEmptyArray($json))
{
$this->outputJsonSuccess($json);
}
@@ -627,13 +627,22 @@ $(function() {
return;
}
/*
* Prepare data object for ajax call
* NOTE: Stringify to send only ONE post param (json string) instead of many single post params.
* This avoids issues with POST param limitation.
*/
var data = {
'selected_data': JSON.stringify(selected_data)
};
FHC_AjaxClient.ajaxCallPost(
FHC_JS_DATA_STORAGE_OBJECT.called_path + "/approveLehrauftrag",
selected_data,
data,
{
successCallback: function (data, textStatus, jqXHR)
{
if (data.retval != null)
if (!data.error && data.retval != null)
{
// Update status 'Erteilt'
$('#filterTabulator').tabulator('updateData', data.retval);
@@ -656,9 +656,13 @@ $(function() {
return;
}
// Prepare data object for ajax call
/*
* Prepare data object for ajax call
* NOTE: Stringify to send only ONE post param (json string) instead of many single post params.
* This avoids issues with POST param limitation.
*/
var data = {
'selected_data': selected_data
'selected_data': JSON.stringify(selected_data)
};
FHC_AjaxClient.ajaxCallPost(