From 30ef50fa4cd56ccd34e6f3b2af726251bc29b0b3 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 24 Oct 2019 15:57:50 +0200 Subject: [PATCH] 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. --- .../lehre/lehrauftrag/Lehrauftrag.php | 48 +++++++++---------- .../lehrauftrag/LehrauftragAkzeptieren.php | 2 +- .../lehre/lehrauftrag/LehrauftragErteilen.php | 22 ++++----- .../lehre/lehrauftrag/approveLehrauftrag.php | 13 ++++- .../lehre/lehrauftrag/orderLehrauftrag.php | 8 +++- 5 files changed, 52 insertions(+), 41 deletions(-) diff --git a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php index 45a457ed8..cf27fc30e 100644 --- a/application/controllers/lehre/lehrauftrag/Lehrauftrag.php +++ b/application/controllers/lehre/lehrauftrag/Lehrauftrag.php @@ -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 ); } } diff --git a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php index 59184cafd..714d357fe 100644 --- a/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php +++ b/application/controllers/lehre/lehrauftrag/LehrauftragAkzeptieren.php @@ -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'); diff --git a/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php b/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php index cde8cbc17..fbd6babbe 100644 --- a/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php +++ b/application/controllers/lehre/lehrauftrag/LehrauftragErteilen.php @@ -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); } diff --git a/application/views/lehre/lehrauftrag/approveLehrauftrag.php b/application/views/lehre/lehrauftrag/approveLehrauftrag.php index 3fdf19ecd..0c81e7805 100644 --- a/application/views/lehre/lehrauftrag/approveLehrauftrag.php +++ b/application/views/lehre/lehrauftrag/approveLehrauftrag.php @@ -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); diff --git a/application/views/lehre/lehrauftrag/orderLehrauftrag.php b/application/views/lehre/lehrauftrag/orderLehrauftrag.php index aafe24010..87f73159e 100644 --- a/application/views/lehre/lehrauftrag/orderLehrauftrag.php +++ b/application/views/lehre/lehrauftrag/orderLehrauftrag.php @@ -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(