From db14c86a779afd8eb83d99e639227ad7826d5d3f Mon Sep 17 00:00:00 2001
From: cris-technikum
Date: Wed, 28 Feb 2018 14:39:33 +0100
Subject: [PATCH] Merge after last Commit
---
application/config/fhcomplete.php | 1 +
application/config/roles.php | 3 +-
application/controllers/ViewMessage.php | 21 +-
application/controllers/system/Filters.php | 412 ++++++++
application/controllers/system/Messages.php | 12 +-
.../system/infocenter/InfoCenter.php | 199 +++-
application/core/DB_Model.php | 15 +
application/libraries/LogLib.php | 2 +-
application/libraries/MailLib.php | 16 +-
application/libraries/MessageLib.php | 433 ++++----
application/libraries/VorlageLib.php | 240 ++---
application/models/crm/Prestudent_model.php | 37 +-
application/models/person/Notiz_model.php | 13 +
application/models/person/Person_model.php | 1 -
.../models/system/PersonLock_model.php | 88 ++
application/models/system/Recipient_model.php | 9 +-
.../views/system/infocenter/infocenter.php | 6 +-
.../system/infocenter/infocenterData.php | 76 +-
.../system/infocenter/infocenterDetails.php | 147 +--
.../views/system/infocenter/stammdaten.php | 15 +-
.../views/system/infocenter/zgvpruefungen.php | 67 +-
application/views/system/messageHTML.php | 7 +-
.../mailtemplates/interessentFreigabe.php | 54 +
application/views/widgets/filter/filter.php | 194 +++-
.../views/widgets/filter/saveFilter.php | 42 +-
.../views/widgets/filter/selectFields.php | 251 +++--
.../views/widgets/filter/selectFilters.php | 361 +++++--
.../views/widgets/filter/tableDataset.php | 246 +++--
application/widgets/FilterWidget.php | 443 ++++----
application/widgets/NavigationMenuWidget.php | 8 +-
cis/private/lehre/fotoliste.pdf.php | 19 +-
cis/private/profile/index.php | 1 +
cis/private/tools/suche.php | 3 +-
cis/public/coodle.php | 979 +++++++++---------
content/messages.xul.php | 4 +-
.../mitarbeiter/mitarbeiteroverlay.xul.php | 1 +
include/benutzer.class.php | 3 +-
include/dokument.class.php | 1 +
include/functions.inc.php | 5 +-
include/js/bootstrapper.js | 12 -
include/js/infocenter/infocenterDetails.js | 121 +++
.../js/infocenter/infocenterPersonDataset.js | 113 ++
include/js/infocenterPersonDataset.js | 82 --
include/js/tablesort/tablesort.js | 86 ++
include/vertrag.class.php | 25 +-
locale/de-AT/global.php | 1 +
locale/en-US/global.php | 1 +
locale/en-US/lvaliste.php | 2 +-
rdf/betriebsmittelperson.rdf.php | 9 +-
rdf/zeugnis.rdf.php | 62 +-
skin/admintemplate.css | 12 +-
skin/admintemplate_contentonly.css | 3 +
skin/images/csv.ico | Bin 0 -> 4846 bytes
skin/images/outlook.ico | Bin 0 -> 8478 bytes
system/mlists/mlists_generate.php | 33 +
system/xsl/fotoliste_0.xsl | 6 +-
system/xsl/uebernahmebestaetigung_0.xsl | 39 +-
57 files changed, 3338 insertions(+), 1704 deletions(-)
create mode 100644 application/controllers/system/Filters.php
create mode 100644 application/models/system/PersonLock_model.php
create mode 100644 application/views/templates/mailtemplates/interessentFreigabe.php
delete mode 100644 include/js/bootstrapper.js
create mode 100644 include/js/infocenter/infocenterDetails.js
create mode 100644 include/js/infocenter/infocenterPersonDataset.js
delete mode 100644 include/js/infocenterPersonDataset.js
create mode 100644 include/js/tablesort/tablesort.js
create mode 100644 skin/images/csv.ico
create mode 100644 skin/images/outlook.ico
diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php
index 3b24595a7..b680d6f5d 100644
--- a/application/config/fhcomplete.php
+++ b/application/config/fhcomplete.php
@@ -207,6 +207,7 @@ $config['fhc_acl'] = array
'system.tbl_udf' => 'system/udf',
'system.tbl_extensions' => 'system/extensions',
'system.tbl_log' => 'basis/log',
+ 'system.tbl_person_lock' => 'system/personlock',
'testtool.tbl_ablauf' => 'basis/ablauf',
'testtool.tbl_antwort' => 'basis/antwort',
'testtool.tbl_frage' => 'basis/frage',
diff --git a/application/config/roles.php b/application/config/roles.php
index 227321f32..a95a94215 100644
--- a/application/config/roles.php
+++ b/application/config/roles.php
@@ -55,7 +55,8 @@ $config['roles'] = array
(
'basis/adresse','basis/akte','basis/kontakt','basis/log','basis/nation','basis/notiz','basis/notizzuordnung',
'basis/person','basis/prestudent','basis/prestudentstatus','basis/status','basis/zgv','basis/zgvmaster',
- 'lehre/studienplan','system/filters','fs/dms','basis/message','basis/benutzerrolle', 'basis/sprache'
+ 'lehre/studienplan','system/filters','fs/dms','basis/message','basis/benutzerrolle', 'basis/sprache',
+ 'system/personlock','basis/benutzerfunktion','system/vorlagestudiengang'
)
)
);
diff --git a/application/controllers/ViewMessage.php b/application/controllers/ViewMessage.php
index fa294a4ec..48c0a09f1 100644
--- a/application/controllers/ViewMessage.php
+++ b/application/controllers/ViewMessage.php
@@ -33,7 +33,7 @@ class ViewMessage extends CI_Controller
// Load model MessageToken_model, not calling the authentication system
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
}
-
+
/**
* Using the MessageTokenModel instead of MessageLib to allow
* viewing the message without prompting the login
@@ -50,32 +50,37 @@ class ViewMessage extends CI_Controller
if (is_array($msg->retval) && count($msg->retval) > 0)
{
$setReadMessageStatusByToken = $this->MessageTokenModel->setReadMessageStatusByToken($token);
-
+
if (isError($setReadMessageStatusByToken))
{
show_error($msg->$setReadMessageStatusByToken);
}
-
+
$sender_id = $msg->retval[0]->sender_id;
$receiver_id = $msg->retval[0]->receiver_id;
$sender = $this->MessageTokenModel->getSenderData($sender_id);
-
+
// To decide how to change the redirection
$isEmployee = $this->MessageTokenModel->isEmployee($receiver_id);
if (!is_bool($isEmployee) && isError($isEmployee))
{
show_error($isEmployee);
}
-
+
+ if($this->config->item('redirect_view_message_url') != '')
+ $href = APP_ROOT . $this->config->item('redirect_view_message_url') . $token;
+ else
+ $href = '';
+
$data = array (
'sender_id' => $sender_id,
'sender' => $sender->retval[0],
'message' => $msg->retval[0],
'isEmployee' => $isEmployee,
- 'href' => APP_ROOT . $this->config->item('redirect_view_message_url') . $token
+ 'href' => $href
);
-
+
$this->load->view('system/messageHTML.php', $data);
}
}
-}
\ No newline at end of file
+}
diff --git a/application/controllers/system/Filters.php b/application/controllers/system/Filters.php
new file mode 100644
index 000000000..100809c4f
--- /dev/null
+++ b/application/controllers/system/Filters.php
@@ -0,0 +1,412 @@
+load->library('session');
+
+ $this->load->model('system/Filters_model', 'FiltersModel');
+ $this->load->model('person/Benutzer_model', 'BenutzerModel');
+ }
+
+ public function tableDataset()
+ {
+ $json = new stdClass();
+
+ $json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
+ $json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
+ $json->additionalColumns = $_SESSION[self::SESSION_NAME]['additionalColumns'];
+ $json->checkboxes = $_SESSION[self::SESSION_NAME]['checkboxes'];
+ $json->dataset = $_SESSION[self::SESSION_NAME]['dataset'];
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ public function selectFields()
+ {
+ $json = new stdClass();
+
+ $json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
+ $json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
+
+ $json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
+ $json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ public function selectFilters()
+ {
+ $json = new stdClass();
+
+ $json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
+ $json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
+
+ $json->selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
+ $json->selectedFiltersAliases = array();
+ $json->selectedFiltersMetaData = array();
+
+ $json->selectedFiltersActiveFilters = array();
+ $json->selectedFiltersActiveFiltersOperation = array();
+ $json->selectedFiltersActiveFiltersOption = array();
+
+ $metaData = $_SESSION[self::SESSION_NAME]['metaData'];
+ $activeFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
+ $activeFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
+ $activeFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
+
+ for ($i = 0; $i < count($json->selectedFilters); $i++)
+ {
+ $pos = array_search($json->selectedFilters[$i], $json->allSelectedFields);
+
+ if ($pos !== false)
+ {
+ $json->selectedFiltersAliases[] = $json->selectedFilters[$i];
+ if ($json->allColumnsAliases != null && is_array($json->allColumnsAliases))
+ {
+ $json->selectedFiltersAliases[] = $json->allColumnsAliases[$pos];
+ }
+
+ $json->selectedFiltersMetaData[] = $metaData[$pos];
+
+ if (isset($activeFilters[$json->selectedFilters[$i]]))
+ {
+ $json->selectedFiltersActiveFilters[] = $activeFilters[$json->selectedFilters[$i]];
+ }
+
+ if (isset($activeFiltersOperation[$json->selectedFilters[$i]]))
+ {
+ $json->selectedFiltersActiveFiltersOperation[] = $activeFiltersOperation[$json->selectedFilters[$i]];
+ }
+
+ if (isset($activeFiltersOption[$json->selectedFilters[$i]]))
+ {
+ $json->selectedFiltersActiveFiltersOption[] = $activeFiltersOption[$json->selectedFilters[$i]];
+ }
+ }
+ }
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ public function saveFilter()
+ {
+ $this->_saveFilter($this->input->post("customFilterDescription"));
+
+ $this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
+ }
+
+ /**
+ *
+ */
+ private function _saveFilter($customFilterDescription)
+ {
+ $objToBeSaved = new stdClass();
+
+ $filterSessionArray = $this->session->userdata(self::SESSION_NAME);
+
+ $objToBeSaved->name = $customFilterDescription;
+
+ if (isset($filterSessionArray[self::SELECTED_FIELDS]))
+ {
+ $selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
+ $objToBeSaved->columns = array();
+
+ for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
+ {
+ $objToBeSaved->columns[$selectedFieldsCounter] = new stdClass();
+ $objToBeSaved->columns[$selectedFieldsCounter]->name = $selectedFields[$selectedFieldsCounter];
+ }
+ }
+
+ if (isset($filterSessionArray[self::SELECTED_FILTERS]))
+ {
+ $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS];
+ $objToBeSaved->filters = array();
+
+ for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++)
+ {
+ $objToBeSaved->filters[$selectedFiltersCounter] = new stdClass();
+ $objToBeSaved->filters[$selectedFiltersCounter]->name = $selectedFilters[$selectedFiltersCounter];
+
+ if (isset($filterSessionArray[self::ACTIVE_FILTERS])
+ && isset($filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]]))
+ {
+ $objToBeSaved->filters[$selectedFiltersCounter]->condition = $filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]];
+ }
+
+ if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])
+ && isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]]))
+ {
+ $objToBeSaved->filters[$selectedFiltersCounter]->operation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]];
+ }
+
+ if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])
+ && isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]]))
+ {
+ $objToBeSaved->filters[$selectedFiltersCounter]->option = $filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]];
+ }
+ }
+ }
+
+ $desc = $customFilterDescription;
+ $descPGArray = '{"'.$desc.'", "'.$desc.'", "'.$desc.'", "'.$desc.'"}';
+
+ $resultBenutzer = $this->BenutzerModel->load(getAuthUID());
+ $personId = $resultBenutzer->retval[0]->person_id;
+
+ $result = $this->FiltersModel->loadWhere(array(
+ 'app' => $_SESSION[self::SESSION_NAME]['app'],
+ 'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
+ 'description' => $descPGArray,
+ 'person_id' => $personId
+ ));
+
+ if (hasData($result))
+ {
+ $this->FiltersModel->update(
+ array(
+ 'app' => $_SESSION[self::SESSION_NAME]['app'],
+ 'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
+ 'description' => $descPGArray,
+ 'person_id' => $personId
+ ),
+ array(
+ 'filter' => json_encode($objToBeSaved)
+ )
+ );
+ }
+ else
+ {
+ $this->FiltersModel->insert(array(
+ 'app' => $_SESSION[self::SESSION_NAME]['app'],
+ 'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
+ 'filter_kurzbz' => uniqid($personId, true),
+ 'person_id' => $personId,
+ 'description' => $descPGArray,
+ 'sort' => null,
+ 'default_filter' => false,
+ 'filter' => json_encode($objToBeSaved),
+ 'oe_kurzbz' => null
+ ));
+ }
+ }
+
+ /**
+ *
+ */
+ public function deleteCustomFilter()
+ {
+ $filter_id = $this->input->post('filter_id');
+
+ if (is_numeric($filter_id))
+ {
+ $this->FiltersModel->deleteCustomFilter($filter_id);
+
+ $this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
+ }
+ }
+
+ /**
+ *
+ */
+ public function removeSelectedFields()
+ {
+ $fieldName = $this->input->post('fieldName');
+
+ $allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
+ $allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
+
+ $selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
+ $columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
+
+ if (($pos = array_search($fieldName, $selectedFields)) !== false)
+ {
+ array_splice($selectedFields, $pos, 1);
+
+ if ($columnsAliases != null && is_array($columnsAliases))
+ {
+ array_splice($columnsAliases, $pos, 1);
+ }
+ }
+
+ $_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
+ $_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
+
+ $json = new stdClass();
+
+ $json->allSelectedFields = $allSelectedFields;
+ $json->allColumnsAliases = $allColumnsAliases;
+ $json->selectedFields = $selectedFields;
+ $json->columnsAliases = $columnsAliases;
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ /**
+ *
+ */
+ public function removeSelectedFilters()
+ {
+ $fieldName = $this->input->post('fieldName');
+
+ $selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
+ $selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
+ $selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
+ $selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
+
+ if (($pos = array_search($fieldName, $selectedFilters)) !== false)
+ {
+ array_splice($selectedFilters, $pos, 1);
+ array_splice($selectedFiltersActiveFilters, $pos, 1);
+ array_splice($selectedFiltersActiveFiltersOperation, $pos, 1);
+ array_splice($selectedFiltersActiveFiltersOption, $pos, 1);
+ }
+
+ $_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
+ $_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
+
+ $json = new stdClass();
+
+ $json->selectedFilters = $selectedFilters;
+ $json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
+ $json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
+ $json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ /**
+ *
+ */
+ public function addSelectedFields()
+ {
+ $fieldName = $this->input->post('fieldName');
+
+ $allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
+ $allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
+
+ $selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
+ $columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
+
+ if (($pos = array_search($fieldName, $allSelectedFields)) !== false
+ && array_search($fieldName, $selectedFields) === false)
+ {
+ array_push($selectedFields, $fieldName);
+
+ if ($columnsAliases != null && is_array($columnsAliases))
+ {
+ array_push($columnsAliases, $allColumnsAliases[$pos]);
+ }
+ }
+
+ $_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
+ $_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
+
+ $json = new stdClass();
+
+ $json->allSelectedFields = $allSelectedFields;
+ $json->allColumnsAliases = $allColumnsAliases;
+ $json->selectedFields = $selectedFields;
+ $json->columnsAliases = $columnsAliases;
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ /**
+ *
+ */
+ public function addSelectedFilters()
+ {
+ $fieldName = $this->input->post('fieldName');
+
+ $selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
+ $selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
+ $selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
+ $selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
+
+ if (!in_array($fieldName, $selectedFilters))
+ {
+ array_push($selectedFilters, $fieldName);
+ $selectedFiltersActiveFilters[$fieldName] = "";
+ $selectedFiltersActiveFiltersOperation[$fieldName] = "";
+ $selectedFiltersActiveFiltersOption[$fieldName] = "";
+ }
+
+ $_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
+ $_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
+
+ $json = new stdClass();
+
+ $json->selectedFilters = $selectedFilters;
+ $json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
+ $json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
+ $json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ /**
+ *
+ */
+ public function applyFilter()
+ {
+ $fieldNames = $this->input->post('filterNames');
+ $filterOperations = $this->input->post('filterOperations');
+ $filterOperationValues = $this->input->post('filterOperationValues');
+ $filterOptions = $this->input->post('filterOptions');
+
+ $activeFilters = array_combine($fieldNames, $filterOperationValues);
+ $activeFiltersOperation = array_combine($fieldNames, $filterOperations);
+ $activeFiltersOption = array_combine($fieldNames, $filterOptions);
+
+ $_SESSION[self::SESSION_NAME]['activeFilters'] = $activeFilters;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $activeFiltersOperation;
+ $_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $activeFiltersOption;
+
+ $json = new stdClass();
+
+ $json->fieldNames = $fieldNames;
+ $json->activeFilters = $activeFilters;
+ $json->activeFiltersOperation = $activeFiltersOperation;
+ $json->activeFiltersOption = $activeFiltersOption;
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+
+ /**
+ *
+ */
+ public function rowNumber()
+ {
+ $json = new stdClass();
+
+ $dataset = $_SESSION[self::SESSION_NAME]['dataset'];
+
+ if (is_array($dataset))
+ {
+ $json->rowNumber = count($dataset);
+ }
+
+ $this->output->set_content_type('application/json')->set_output(json_encode($json));
+ }
+}
diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php
index 2c2474a1e..36db0238d 100644
--- a/application/controllers/system/Messages.php
+++ b/application/controllers/system/Messages.php
@@ -10,19 +10,19 @@ class Messages extends VileSci_Controller
*
*/
public function __construct()
- {
- parent::__construct();
+ {
+ parent::__construct();
- // Loads the message library
- $this->load->library('MessageLib');
+ // Loads the message library
+ $this->load->library('MessageLib');
- // Loads the widget library
+ // Loads the widget library
$this->load->library('WidgetLib');
$this->load->model('person/Person_model', 'PersonModel');
$this->_setAuthUID(); // sets property uid
- }
+ }
/**
* write
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index f1cd674b7..d5c7c358b 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -64,6 +64,7 @@ class InfoCenter extends VileSci_Controller
$this->load->model('person/person_model', 'PersonModel');
$this->load->model('system/message_model', 'MessageModel');
$this->load->model('system/filters_model', 'FiltersModel');
+ $this->load->model('system/personLock_model', 'PersonLockModel');
// Loads libraries
$this->load->library('DmsLib');
@@ -110,10 +111,20 @@ class InfoCenter extends VileSci_Controller
if (!is_numeric($person_id))
show_error('person id is not numeric!');
- $persondata = $this->_loadPersonData($person_id);
- if (!isset($persondata))
+ $personexists = $this->PersonModel->load($person_id);
+ if(isError($personexists))
+ show_error($personexists->retval);
+
+ if (empty($personexists->retval[0]))
show_error('person does not exist!');
+ //mark person as locked for editing
+ $result = $this->PersonLockModel->lockPerson($person_id, $this->uid, self::APP);
+
+ if(isError($result))
+ show_error($result->retval);
+
+ $persondata = $this->_loadPersonData($person_id);
$prestudentdata = $this->_loadPrestudentData($person_id);
$this->load->view(
@@ -129,6 +140,20 @@ class InfoCenter extends VileSci_Controller
);
}
+ /**
+ * unlocks page from edit by a person, redirects to overview filter page
+ * @param $person_id
+ */
+ public function unlockPerson($person_id)
+ {
+ $result = $this->PersonLockModel->unlockPerson($person_id, self::APP);
+
+ if(isError($result))
+ show_error($result->retval);
+
+ redirect(self::URL_PREFIX);
+ }
+
/**
* Saves if a document has been formal geprueft. saves current timestamp if checked as geprueft, or null if not.
*/
@@ -169,6 +194,26 @@ class InfoCenter extends VileSci_Controller
redirect(self::URL_PREFIX.'/showDetails/'.$person_id.'#DokPruef');
}
+ /**
+ * Gets prestudent that was last modified in json format, for ZGV übernehmen
+ * @param $person_id
+ */
+ public function getLastPrestudentWithZgvJson($person_id)
+ {
+ $prestudent = $this->PrestudentModel->getLastPrestudent($person_id, true);
+
+ if (isError($prestudent))
+ {
+ show_error($prestudent->retval);
+ }
+
+ $jsonoutput = count($prestudent->retval) > 0 ? $prestudent->retval[0] : null;
+
+ $this->output
+ ->set_content_type('application/json')
+ ->set_output(json_encode($jsonoutput));
+ }
+
/**
* Saves a zgv for a prestudent. includes Ort, Datum, Nation for bachelor and master.
* @param $prestudent_id
@@ -200,7 +245,8 @@ class InfoCenter extends VileSci_Controller
'zgvmas_code' => $zgvmas_code,
'zgvmaort' => $zgvmaort,
'zgvmadatum' => $zgvmadatum,
- 'zgvmanation' => $zgvmanation_code
+ 'zgvmanation' => $zgvmanation_code,
+ 'updateamum' => date('Y-m-d H:i:s')
)
);
@@ -224,7 +270,6 @@ class InfoCenter extends VileSci_Controller
*/
public function saveAbsage($prestudent_id)
{
- //TODO email messaging
$statusgrund = $this->input->post('statusgrund');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id);
@@ -235,7 +280,7 @@ class InfoCenter extends VileSci_Controller
}
//check if still Interessent and not freigegeben yet
- if($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam))
+ if ($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam))
{
$result = $this->PrestudentstatusModel->insert(
array(
@@ -288,7 +333,7 @@ class InfoCenter extends VileSci_Controller
$lastStatus = $lastStatus->retval[0];
//check if still Interessent and not freigegeben yet
- if($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam))
+ if ($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam))
{
$result = $this->PrestudentstatusModel->update(
array(
@@ -310,6 +355,8 @@ class InfoCenter extends VileSci_Controller
show_error($result->retval);
}
+ $this->_sendFreigabeMail($prestudent_id);
+
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
$this->_log($logdata['person_id'], 'freigegeben', array($prestudent_id, $logdata['studiengang_kurzbz']));
@@ -369,21 +416,6 @@ class InfoCenter extends VileSci_Controller
->_display();
}
- /**
- *
- */
- public function deleteCustomFilter()
- {
- $filter_id = $this->input->get('filter_id');
-
- if (is_numeric($filter_id))
- {
- $this->FiltersModel->deleteCustomFilter($filter_id);
-
- redirect(self::URL_PREFIX);
- }
- }
-
// -----------------------------------------------------------------------------------------------------------------
// Private methods
@@ -504,8 +536,9 @@ class InfoCenter extends VileSci_Controller
$tofill['children'][] = array(
'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId),
'description' => $description,
- 'subscriptLink' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter/deleteCustomFilter?filter_id'), $filterId),
- 'subscriptDescription' => 'Remove'
+ 'subscriptDescription' => 'Remove',
+ 'subscriptLinkId' => 'removeFilterById',
+ 'subscriptLinkValue' => $filterId
);
}
}
@@ -517,6 +550,25 @@ class InfoCenter extends VileSci_Controller
*/
private function _loadPersonData($person_id)
{
+ $locked = $this->PersonLockModel->checkIfLocked($person_id, self::APP);
+
+ if (isError($locked))
+ {
+ show_error($locked->retval);
+ }
+
+ $lockedby = null;
+
+ //mark red if locked by other user
+ $lockedbyother = false;
+
+ if (isset($locked->retval[0]->uid))
+ {
+ $lockedby = $locked->retval[0]->uid;
+ if ($lockedby !== $this->uid)
+ $lockedbyother = true;
+ }
+
$stammdaten = $this->PersonModel->getPersonStammdaten($person_id, true);
if (isError($stammdaten))
@@ -567,6 +619,8 @@ class InfoCenter extends VileSci_Controller
$messagelink = base_url('/index.ci.php/system/Messages/write/'.$user_person->retval[0]->person_id);
$data = array (
+ 'lockedby' => $lockedby,
+ 'lockedbyother' => $lockedbyother,
'stammdaten' => $stammdaten->retval,
'dokumente' => $dokumente->retval,
'dokumente_nachgereicht' => $dokumente_nachgereicht->retval,
@@ -606,7 +660,7 @@ class InfoCenter extends VileSci_Controller
$zgvpruefung = $prestudent->retval[0];
- if(isset($zgvpruefung->prestudentstatus))
+ if (isset($zgvpruefung->prestudentstatus))
{
$position = strpos($zgvpruefung->prestudentstatus->anmerkung, 'Alt:');
@@ -619,15 +673,18 @@ class InfoCenter extends VileSci_Controller
$zgvpruefungen[] = $zgvpruefung;
}
- // Interessenten come first
- usort($zgvpruefungen, function ($a, $b)
- {
+ // Interessenten come first, otherwise by bewerbungsdatum desc, then by prestudent_id desc
+ usort($zgvpruefungen, function ($a, $b) {
+ $bewdatesort = strcmp($b->prestudentstatus->bewerbung_abgeschicktamum, $a->prestudentstatus->bewerbung_abgeschicktamum);
+ $defaultsort = $bewdatesort === 0 ? (int)$b->prestudent_id - (int)$a->prestudent_id : $bewdatesort;
if (!isset($a->prestudentstatus->status_kurzbz) || !isset($b->prestudentstatus->status_kurzbz))
- return 0;
+ return $defaultsort;
elseif ($a->prestudentstatus->status_kurzbz === 'Interessent' && $b->prestudentstatus->status_kurzbz === 'Interessent')
{
//infoonly Interessenten come after new Interessenten
- if ($a->infoonly)
+ if ($a->infoonly === $b->infoonly)
+ return $defaultsort;
+ elseif ($a->infoonly)
return 1;
elseif ($b->infoonly)
return -1;
@@ -637,7 +694,7 @@ class InfoCenter extends VileSci_Controller
elseif ($b->prestudentstatus->status_kurzbz === 'Interessent')
return 1;
else
- return 0;
+ return $defaultsort;
});
$statusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Abgewiesener'))->retval;
@@ -708,4 +765,86 @@ class InfoCenter extends VileSci_Controller
$this->uid
);
}
+
+ /**
+ * Sends infomail with prestudent and person data when Prestudent is freigegeben
+ * @param $prestudent_id
+ */
+ private function _sendFreigabeMail($prestudent_id)
+ {
+ //get data
+ $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id)->retval[0];
+ $prestudentstatus = $prestudent->prestudentstatus;
+ $person_id = $prestudent->person_id;
+ $person = $this->PersonModel->getPersonStammdaten($person_id, true)->retval;
+
+ //fill mail variables
+ $interessentbez = $person->geschlecht == 'm' ? 'Ein Interessent' : 'Eine Interessentin';
+ $sprache = $prestudentstatus->sprachedetails->bezeichnung[0];
+ $orgform = $prestudentstatus->orgform != '' ? ' ('.$prestudentstatus->orgform.')' : '';
+ $geschlecht = $person->geschlecht == 'm' ? 'männlich' : 'weiblich';
+ $geburtsdatum = date('d.m.Y', strtotime($person->gebdatum));
+
+ $notizenBewerbung = $this->NotizModel->getNotizByTitel($person_id, 'Anmerkung zur Bewerbung')->retval;
+
+ $notizentext = '';
+ $lastElement = end($notizenBewerbung);
+ foreach ($notizenBewerbung as $notiz)
+ {
+ $notizentext .= $notiz->text;
+ if ($notiz != $lastElement)
+ $notizentext .= ' | ';
+ }
+
+ $mailadresse = '';
+ foreach ($person->kontakte as $kontakt)
+ {
+ if ($kontakt->kontakttyp === 'email')
+ {
+ $mailadresse = $kontakt->kontakt;
+ break;
+ }
+ }
+
+ $data = array
+ (
+ 'interessentbez' => $interessentbez,
+ 'studiengangbez' => $prestudent->studiengangbezeichnung,
+ 'studiengangtypbez' => $prestudent->studiengangtyp_bez,
+ 'orgform' => $orgform,
+ 'studiensemester' => $prestudentstatus->studiensemester_kurzbz,
+ 'sprache' => $sprache,
+ 'geschlecht' => $geschlecht,
+ 'vorname' => $person->vorname,
+ 'nachname' => $person->nachname,
+ 'gebdatum' => $geburtsdatum,
+ 'mailadresse' => $mailadresse,
+ 'prestudentid' => $prestudent_id,
+ 'notizentext' => $notizentext
+ );
+
+ $this->load->library('parser');
+ $this->load->library('MailLib');
+ $this->load->library('LogLib');
+
+ //parse freigabe html email template, wordwrap wraps text so no display errors
+ $email = wordwrap($this->parser->parse('templates/mailtemplates/interessentFreigabe', $data, true), 70);
+
+ $subject = ($person->geschlecht == 'm' ? 'Interessent ' : 'Interessentin ').$person->vorname.' '.$person->nachname.' freigegeben';
+
+ $receiver = $prestudent->studiengangmail;
+
+ if (!empty($receiver))
+ {
+ //Freigabeinformationmail sent from default system mail to studiengang mail(s)
+ $sent = $this->maillib->send('', $receiver, $subject, $email);
+
+ if (!$sent)
+ $this->loglib->logError('Error when sending Freigabe mail');
+ }
+ else
+ {
+ $this->loglib->logError('Studiengang has no mail for sending Freigabe mail');
+ }
+ }
}
diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php
index 3dc5e85ac..be9e39082 100644
--- a/application/core/DB_Model.php
+++ b/application/core/DB_Model.php
@@ -540,6 +540,21 @@ class DB_Model extends FHC_Model
return $this->db->escape($value);
}
+ /**
+ * This method call the method escape_like_str from class CI_DB_driver, therefore:
+ * this method should be used when strings are to be used in LIKE conditions so that LIKE wildcards (‘%’, ‘_’)
+ * in the string are also properly escaped.
+ * NOTE: The escape_like_str() method uses ‘!’ (exclamation mark) to escape special characters for LIKE conditions.
+ * Because this method escapes partial strings that you would wrap in quotes yourself, it cannot automatically
+ * add the ESCAPE '!' condition for you, and so you’ll have to manually do that.
+ *
+ * @return void
+ */
+ public function escapeLike($value)
+ {
+ return $this->db->escape_like_str($value);
+ }
+
/**
* Convert PG-Boolean to PHP-Boolean
*
diff --git a/application/libraries/LogLib.php b/application/libraries/LogLib.php
index 222ed7cc7..a42132644 100644
--- a/application/libraries/LogLib.php
+++ b/application/libraries/LogLib.php
@@ -55,7 +55,7 @@ class LogLib
$function = $backtrace_arr[$functionIndex]['function'];
}
- if (isset($backtrace_arr[$lineIndex]['line']) && $backgrace_arr[$lineIndex]['line'] != '')
+ if (isset($backtrace_arr[$lineIndex]['line']) && $backtrace_arr[$lineIndex]['line'] != '')
{
$line = $backtrace_arr[$lineIndex]['line'];
}
diff --git a/application/libraries/MailLib.php b/application/libraries/MailLib.php
index 5c7093461..e7d3435e0 100644
--- a/application/libraries/MailLib.php
+++ b/application/libraries/MailLib.php
@@ -58,6 +58,14 @@ class MailLib
$alias = $this->alias_from_system;
}
}
+ if (defined('MAIL_FROM') && MAIL_FROM != '')
+ {
+ $from = MAIL_FROM;
+ if (is_null($alias) || $alias == '')
+ {
+ $alias = $this->alias_from_system;
+ }
+ }
$this->ci->email->from($from, $alias);
@@ -65,12 +73,14 @@ class MailLib
$recipient = $to;
$recipientCC = $cc;
$recipientBCC = $bcc;
- if ($this->validateEmailAddress(MAIL_DEBUG))
+ if (defined('MAIL_DEBUG') && MAIL_DEBUG != '')
{
// if is it valid use it!!!
$recipient = MAIL_DEBUG;
- $recipientCC = MAIL_DEBUG;
- $recipientBCC = MAIL_DEBUG;
+ if ($recipientCC != '')
+ $recipientCC = MAIL_DEBUG;
+ if ($recipientBCC != '')
+ $recipientBCC = MAIL_DEBUG;
}
$this->ci->email->to($recipient);
diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php
index ee5f77230..c07756c17 100644
--- a/application/libraries/MessageLib.php
+++ b/application/libraries/MessageLib.php
@@ -15,7 +15,7 @@ class MessageLib
public function __construct()
{
// Get code igniter instance
- $this->ci =& get_instance();
+ $this->ci =& get_instance();
// Loads message configuration
$this->ci->config->load('message');
@@ -41,70 +41,70 @@ class MessageLib
$this->ci->load->helper('message');
// Loads phrases
- $this->ci->lang->load('message');
- }
+ $this->ci->lang->load('message');
+ }
- /**
- * getMessage() - returns the specified received message for a specified person
- */
- public function getMessage($msg_id, $person_id)
- {
- if (empty($msg_id))
- return $this->_error('', MSG_ERR_INVALID_MSG_ID);
+ /**
+ * getMessage() - returns the specified received message for a specified person
+ */
+ public function getMessage($msg_id, $person_id)
+ {
+ if (empty($msg_id))
+ return $this->_error('', MSG_ERR_INVALID_MSG_ID);
if (empty($person_id))
- return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
+ return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getMessage($msg_id, $person_id);
- return $msg;
- }
+ return $msg;
+ }
/**
- * getMessagesByUID() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
- */
- public function getMessagesByUID($uid, $oe_kurzbz = null, $all = false)
- {
- if (empty($uid))
- return $this->_error('', MSG_ERR_INVALID_MSG_ID);
+ * getMessagesByUID() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
+ */
+ public function getMessagesByUID($uid, $oe_kurzbz = null, $all = false)
+ {
+ if (empty($uid))
+ return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all);
- return $msg;
- }
+ return $msg;
+ }
/**
- * getMessagesByPerson() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
- */
- public function getMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
- {
- if (empty($person_id))
- return $this->_error('', MSG_ERR_INVALID_MSG_ID);
+ * getMessagesByPerson() - will return all messages, including the latest status for specified user. It don´t returns Attachments.
+ */
+ public function getMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
+ {
+ if (empty($person_id))
+ return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
- return $msg;
- }
+ return $msg;
+ }
/**
- * getSentMessagesByPerson() - Get all sent messages from a person identified by person_id
- */
- public function getSentMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
- {
- if (empty($person_id))
- return $this->_error('', MSG_ERR_INVALID_MSG_ID);
+ * getSentMessagesByPerson() - Get all sent messages from a person identified by person_id
+ */
+ public function getSentMessagesByPerson($person_id, $oe_kurzbz = null, $all = false)
+ {
+ if (empty($person_id))
+ return $this->_error('', MSG_ERR_INVALID_MSG_ID);
$msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all);
- return $msg;
- }
+ return $msg;
+ }
/**
- * getMessageByToken
- */
- public function getMessageByToken($token)
- {
- if (empty($token))
- return $this->_error('', MSG_ERR_INVALID_TOKEN);
+ * getMessageByToken
+ */
+ public function getMessageByToken($token)
+ {
+ if (empty($token))
+ return $this->_error('', MSG_ERR_INVALID_TOKEN);
$result = $this->ci->RecipientModel->getMessageByToken($token);
if (hasData($result))
@@ -138,43 +138,43 @@ class MessageLib
}
}
- return $result;
- }
+ return $result;
+ }
- /**
- * getCountUnreadMessages
- */
- public function getCountUnreadMessages($person_id, $oe_kurzbz = null)
- {
- if (!is_numeric($person_id))
- return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
+ /**
+ * getCountUnreadMessages
+ */
+ public function getCountUnreadMessages($person_id, $oe_kurzbz = null)
+ {
+ if (!is_numeric($person_id))
+ return $this->_error('', MSG_ERR_INVALID_RECIPIENTS);
$msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz);
- return $msg;
- }
+ return $msg;
+ }
- /**
- * updateMessageStatus() - will change status on message for particular user
+ /**
+ * updateMessageStatus() - will change status on message for particular user
* NOTE: it performs an insert, NOT an update
- */
- public function updateMessageStatus($message_id, $person_id, $status)
- {
- if (empty($message_id))
- {
- return $this->_error('', MSG_ERR_INVALID_MSG_ID);
- }
+ */
+ public function updateMessageStatus($message_id, $person_id, $status)
+ {
+ if (empty($message_id))
+ {
+ return $this->_error('', MSG_ERR_INVALID_MSG_ID);
+ }
- if (empty($person_id))
- {
- return $this->_error('', MSG_ERR_INVALID_USER_ID);
- }
+ if (empty($person_id))
+ {
+ return $this->_error('', MSG_ERR_INVALID_USER_ID);
+ }
// NOTE: Not use empty otherwise if status is 0 it returns an error
- if (!isset($status))
- {
- return $this->_error('', MSG_ERR_INVALID_STATUS_ID);
- }
+ if (!isset($status))
+ {
+ return $this->_error('', MSG_ERR_INVALID_STATUS_ID);
+ }
// Searches if the status is already present
$result = $this->ci->MsgStatusModel->load(array($message_id, $person_id, $status));
@@ -195,17 +195,17 @@ class MessageLib
}
return $result;
- }
+ }
- /**
- * sendMessage() - sends new internal message. This function will create a new thread
- */
- public function sendMessage($sender_id, $receiver_id, $subject, $body, $priority = PRIORITY_NORMAL, $relationmessage_id = null, $oe_kurzbz = null, $multiPartMime = true)
- {
- if (!is_numeric($sender_id))
- {
+ /**
+ * sendMessage() - sends new internal message. This function will create a new thread
+ */
+ public function sendMessage($sender_id, $receiver_id, $subject, $body, $priority = PRIORITY_NORMAL, $relationmessage_id = null, $oe_kurzbz = null, $multiPartMime = true)
+ {
+ if (!is_numeric($sender_id))
+ {
$sender_id = $this->ci->config->item('system_person_id');
- }
+ }
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -270,17 +270,17 @@ class MessageLib
}
return $result;
- }
+ }
/**
- * sendMessageVorlage() - sends new internal message using a template
- */
- public function sendMessageVorlage($sender_id, $receiver_id, $vorlage_kurzbz, $oe_kurzbz, $data, $relationmessage_id = null, $orgform_kurzbz = null, $multiPartMime = true)
- {
- if (!is_numeric($sender_id))
- {
+ * sendMessageVorlage() - sends new internal message using a template
+ */
+ public function sendMessageVorlage($sender_id, $receiver_id, $vorlage_kurzbz, $oe_kurzbz, $data, $relationmessage_id = null, $orgform_kurzbz = null, $multiPartMime = true)
+ {
+ if (!is_numeric($sender_id))
+ {
$sender_id = $this->ci->config->item('system_person_id');
- }
+ }
$receivers = $this->_getReceivers($receiver_id, $oe_kurzbz);
@@ -387,7 +387,7 @@ class MessageLib
}
return $result;
- }
+ }
/**
* Gets all the messages from DB and sends them via email
@@ -426,54 +426,90 @@ class MessageLib
if ((!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '')
|| (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != ''))
{
- $href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token;
- // Using a template for the html email body
- $body = $this->ci->parser->parse(
- 'templates/mailHTML',
- array(
- 'href' => $href,
- 'subject' => $result->retval[0]->subject,
- 'body' => $result->retval[0]->body
- ),
- true
- );
+ $href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[$i]->token;
+
+ $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
+
+ if(hasData($vorlage))
+ {
+ // Using a template for the html email body
+ $body = $this->ci->parser->parse_string(
+ $vorlage->retval[0]->text,
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[$i]->subject,
+ 'body' => $result->retval[$i]->body
+ ),
+ true
+ );
+ }
+ else
+ {
+ // Using a template for the html email body
+ $body = $this->ci->parser->parse(
+ 'templates/mailHTML',
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[$i]->subject,
+ 'body' => $result->retval[$i]->body
+ ),
+ true
+ );
+ }
if (is_null($body) || $body == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
}
- // Using a template for the plain text email body
- $altBody = $this->ci->parser->parse(
- 'templates/mailTXT',
- array(
- 'href' => $href,
- 'subject' => $result->retval[0]->subject,
- 'body' => $result->retval[0]->body
- ),
- true
- );
+ $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
+ if(hasData($vorlage))
+ {
+ // Using a template for the plain text email body
+ $altBody = $this->ci->parser->parse_string(
+ $vorlage->retval[0]->text,
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[$i]->subject,
+ 'body' => $result->retval[$i]->body
+ ),
+ true
+ );
+ }
+ else
+ {
+ // Using a template for the plain text email body
+ $altBody = $this->ci->parser->parse(
+ 'templates/mailTXT',
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[$i]->subject,
+ 'body' => $result->retval[$i]->body
+ ),
+ true
+ );
+ }
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
}
- // If the sender kontakt does not exist, then system-sender is used if empty
+ // If the sender is not an employee, then system-sender is used if empty
$sender = '';
- if (!is_null($result->retval[0]->sender) && $result->retval[0]->sender != '')
+ if (!is_null($result->retval[0]->senderemployeecontact) && $result->retval[0]->senderemployeecontact != '')
{
- $sender = $result->retval[0]->sender;
+ $sender = $result->retval[0]->senderemployeecontact.'@'.DOMAIN;
}
- $receiverContanct = $result->retval[$i]->receiver;
+ $receiverContact = $result->retval[$i]->receiver;
if (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '')
{
- $receiverContanct = $result->retval[$i]->employeecontact.'@'.DOMAIN;
+ $receiverContact = $result->retval[$i]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
- $receiverContanct,
+ $receiverContact,
$result->retval[$i]->subject,
$body,
null,
@@ -571,15 +607,32 @@ class MessageLib
{
// Using a template for the html email body
$href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token;
- $bodyMsg = $this->ci->parser->parse(
- 'templates/mailHTML',
- array(
- 'href' => $href,
- 'subject' => $result->retval[0]->subject,
- 'body' => $result->retval[0]->body
- ),
- true
- );
+
+ $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML');
+ if(hasData($vorlage))
+ {
+ $bodyMsg = $this->ci->parser->parse_string(
+ $vorlage->retval[0]->text,
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[0]->subject,
+ 'body' => $result->retval[0]->body
+ ),
+ true
+ );
+ }
+ else
+ {
+ $bodyMsg = $this->ci->parser->parse(
+ 'templates/mailHTML',
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[0]->subject,
+ 'body' => $result->retval[0]->body
+ ),
+ true
+ );
+ }
if (is_null($bodyMsg) || $bodyMsg == '')
{
// $body = $result->retval[0]->body;
@@ -587,15 +640,31 @@ class MessageLib
}
// Using a template for the plain text email body
- $altBody = $this->ci->parser->parse(
- 'templates/mailTXT',
- array(
- 'href' => $href,
- 'subject' => $result->retval[0]->subject,
- 'body' => $result->retval[0]->body
- ),
- true
- );
+ $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT');
+ if(hasData($vorlage))
+ {
+ $altBody = $this->ci->parser->parse_string(
+ $vorlage->retval[0]->text,
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[0]->subject,
+ 'body' => $result->retval[0]->body
+ ),
+ true
+ );
+ }
+ else
+ {
+ $altBody = $this->ci->parser->parse(
+ 'templates/mailTXT',
+ array(
+ 'href' => $href,
+ 'subject' => $result->retval[0]->subject,
+ 'body' => $result->retval[0]->body
+ ),
+ true
+ );
+ }
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the plain text mail template');
@@ -606,23 +675,23 @@ class MessageLib
$bodyMsg = $altBody = $body;
}
- // If the sender kontakt does not exist, then system-sender is used if empty
+ // If the sender is not an employee, then system-sender is used if empty
$sender = '';
- if (!is_null($result->retval[0]->sender) && $result->retval[0]->sender != '')
+ if (!is_null($result->retval[0]->senderemployeecontact) && $result->retval[0]->senderemployeecontact != '')
{
- $sender = $result->retval[0]->sender;
+ $sender = $result->retval[0]->senderemployeecontact.'@'.DOMAIN;
}
- $receiverContanct = $result->retval[0]->receiver;
+ $receiverContact = $result->retval[0]->receiver;
if (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != '')
{
- $receiverContanct = $result->retval[0]->employeecontact.'@'.DOMAIN;
+ $receiverContact = $result->retval[0]->employeecontact.'@'.DOMAIN;
}
// Sending email
$sent = $this->ci->maillib->send(
$sender,
- $receiverContanct,
+ $receiverContact,
is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it!
$bodyMsg,
null,
@@ -689,8 +758,8 @@ class MessageLib
return $sent;
}
- // ------------------------------------------------------------------------
- // Private methods
+ // ------------------------------------------------------------------------
+ // Private methods
/**
* Update the table tbl_msg_recipient
@@ -736,29 +805,29 @@ class MessageLib
}
/**
- * Gets the receivers id that are enabled to read messages for that oe_kurzbz
- */
- private function _getReceiversByOekurzbz($oe_kurzbz)
- {
+ * Gets the receivers id that are enabled to read messages for that oe_kurzbz
+ */
+ private function _getReceiversByOekurzbz($oe_kurzbz)
+ {
// Load Benutzerfunktion_model
$this->ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
// Join with table public.tbl_benutzer on field uid
$this->ci->BenutzerfunktionModel->addJoin('public.tbl_benutzer', 'uid');
// Get all the valid receivers id using the oe_kurzbz
$receivers = $this->ci->BenutzerfunktionModel->loadWhere(
- 'oe_kurzbz = \''.$oe_kurzbz.'\''.
- ' AND funktion_kurzbz = \''.$this->ci->config->item('assistent_function').'\''.
+ 'oe_kurzbz = '.$this->ci->db->escape($oe_kurzbz).
+ ' AND funktion_kurzbz = '.$this->ci->db->escape($this->ci->config->item('assistent_function')).
' AND (NOW() BETWEEN COALESCE(datum_von, NOW()) AND COALESCE(datum_bis, NOW()))'
);
return $receivers;
- }
+ }
- /**
- * Gets the receivers id
- */
- private function _getReceivers($receiver_id, $oe_kurzbz = null)
- {
+ /**
+ * Gets the receivers id
+ */
+ private function _getReceivers($receiver_id, $oe_kurzbz = null)
+ {
$receivers = null;
// If no receiver_id is given...
@@ -782,13 +851,13 @@ class MessageLib
}
return $receivers;
- }
+ }
- /**
- * Checks if the given receiver id is a valid person
- */
- private function _checkReceiverId($receiver_id)
- {
+ /**
+ * Checks if the given receiver id is a valid person
+ */
+ private function _checkReceiverId($receiver_id)
+ {
// Load Person_model
$this->ci->load->model('person/Person_model', 'PersonModel');
$result = $this->ci->PersonModel->load($receiver_id);
@@ -798,13 +867,13 @@ class MessageLib
}
return false;
- }
+ }
- /**
- * Save a message in DB
- **/
- private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz)
- {
+ /**
+ * Save a message in DB
+ **/
+ private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz)
+ {
// Starts db transaction
$this->ci->db->trans_start(false);
@@ -854,27 +923,27 @@ class MessageLib
}
return $result;
- }
+ }
- /**
- * Wrapper for function error
- */
- private function _error($retval = '', $code = null)
- {
+ /**
+ * Wrapper for function error
+ */
+ private function _error($retval = '', $code = null)
+ {
return error($retval, $code, MessageLib::MSG_INDX_PREFIX);
- }
+ }
- /**
- * Wrapper for function success
- */
- private function _success($retval = '', $code = null)
- {
+ /**
+ * Wrapper for function success
+ */
+ private function _success($retval = '', $code = null)
+ {
return success($retval, $code, MessageLib::MSG_INDX_PREFIX);
- }
+ }
- /**
- *
- */
+ /**
+ *
+ */
public function parseMessageText($text, $data = array())
{
return $this->ci->parser->parse_string($text, $data, true);
diff --git a/application/libraries/VorlageLib.php b/application/libraries/VorlageLib.php
index 81ce44149..7ea3de93d 100644
--- a/application/libraries/VorlageLib.php
+++ b/application/libraries/VorlageLib.php
@@ -9,9 +9,9 @@ class VorlageLib
/**
* Loads parser library and OrganisationseinheitLib library
*/
- public function __construct()
- {
- require_once APPPATH.'config/message.php';
+ public function __construct()
+ {
+ require_once APPPATH.'config/message.php';
$this->ci =& get_instance();
@@ -21,83 +21,83 @@ class VorlageLib
$this->ci->load->model('system/Vorlage_model', 'VorlageModel');
$this->ci->load->model('system/Vorlagestudiengang_model', 'VorlageStudiengangModel');
- $this->ci->load->helper('language');
- // Loads helper message to manage returning messages
+ $this->ci->load->helper('language');
+ // Loads helper message to manage returning messages
$this->ci->load->helper('message');
- //$this->ci->lang->load('fhcomplete');
- }
+ //$this->ci->lang->load('fhcomplete');
+ }
/**
- * getVorlage() - will load a spezific Template
- *
- * @param int $vorlage_kurzbz REQUIRED
- * @return struct
- */
- public function getVorlage($vorlage_kurzbz)
- {
- if (empty($vorlage_kurzbz))
- return error(MSG_ERR_INVALID_MSG_ID);
-
- $vorlage = $this->ci->VorlageModel->load($vorlage_kurzbz);
- return $vorlage;
- }
-
- /**
- * getSubMessages() - will return all Messages subordinated from a specified message.
- *
- * @param int $msg_id REQUIRED
- * @return array
- */
- public function getVorlageByMimetype($mimetype = null)
- {
- $vorlage = $this->ci->VorlageModel->loadWhere(array('mimetype' => $mimetype));
- return $vorlage;
- }
-
- /**
- * saveVorlage() - will save a spezific Template.
- *
- * @param array $data REQUIRED
- * @return array
- */
- public function saveVorlage($vorlage_kurzbz, $data)
- {
- if (empty($data))
- return error(MSG_ERR_INVALID_MSG_ID);
-
- $vorlage = $this->ci->VorlageModel->update($vorlage_kurzbz, $data);
- return $vorlage;
- }
-
- /**
- * getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
- *
- * @param string $vorlage_kurzbz REQUIRED
- * @return array
- */
- public function getVorlagetextByVorlage($vorlage_kurzbz)
+ * getVorlage() - will load a spezific Template
+ *
+ * @param int $vorlage_kurzbz REQUIRED
+ * @return struct
+ */
+ public function getVorlage($vorlage_kurzbz)
{
- if (empty($vorlage_kurzbz))
- return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
+ if (empty($vorlage_kurzbz))
+ return error(MSG_ERR_INVALID_MSG_ID);
- $vorlage = $this->ci->VorlageStudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
- return $vorlage;
- }
+ $vorlage = $this->ci->VorlageModel->load($vorlage_kurzbz);
+ return $vorlage;
+ }
/**
- * loadVorlagetext() - will load the best fitting Template.
- *
- * @param string $vorlage_kurzbz REQUIRED
- * @param string $oe_kurzbz OPTIONAL
- * @param string $orgform_kurzbz OPTIONAL
+ * getSubMessages() - will return all Messages subordinated from a specified message.
+ *
+ * @param int $msg_id REQUIRED
+ * @return array
+ */
+ public function getVorlageByMimetype($mimetype = null)
+ {
+ $vorlage = $this->ci->VorlageModel->loadWhere(array('mimetype' => $mimetype));
+ return $vorlage;
+ }
+
+ /**
+ * saveVorlage() - will save a spezific Template.
+ *
+ * @param array $data REQUIRED
+ * @return array
+ */
+ public function saveVorlage($vorlage_kurzbz, $data)
+ {
+ if (empty($data))
+ return error(MSG_ERR_INVALID_MSG_ID);
+
+ $vorlage = $this->ci->VorlageModel->update($vorlage_kurzbz, $data);
+ return $vorlage;
+ }
+
+ /**
+ * getVorlagetextByVorlage() - will load tbl_vorlagestudiengang for a spezific Template.
+ *
+ * @param string $vorlage_kurzbz REQUIRED
+ * @return array
+ */
+ public function getVorlagetextByVorlage($vorlage_kurzbz)
+ {
+ if (empty($vorlage_kurzbz))
+ return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
+
+ $vorlage = $this->ci->VorlageStudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
+ return $vorlage;
+ }
+
+ /**
+ * loadVorlagetext() - will load the best fitting Template.
+ *
+ * @param string $vorlage_kurzbz REQUIRED
+ * @param string $oe_kurzbz OPTIONAL
+ * @param string $orgform_kurzbz OPTIONAL
* @param string $sprache OPTIONAL
- * @return array
- */
- public function loadVorlagetext($vorlage_kurzbz, $oe_kurzbz = null, $orgform_kurzbz = null, $sprache = null)
+ * @return array
+ */
+ public function loadVorlagetext($vorlage_kurzbz, $oe_kurzbz = null, $orgform_kurzbz = null, $sprache = null)
{
- if (empty($vorlage_kurzbz))
- return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
-
+ if (empty($vorlage_kurzbz))
+ return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
+
// Try to search the template with the given vorlage_kurzbz and other parameters if present
$queryParameters = array("vorlage_kurzbz" => $vorlage_kurzbz, "aktiv" => true);
@@ -120,7 +120,7 @@ class VorlageLib
{
// Builds where clause
$where = $this->_where($vorlage_kurzbz, $orgform_kurzbz, $sprache);
-
+
$vorlage = $this->ci->organisationseinheitlib->treeSearch(
'public',
'tbl_vorlagestudiengang',
@@ -133,17 +133,17 @@ class VorlageLib
);
}
- return $vorlage;
- }
+ return $vorlage;
+ }
- /**
- * _where
- */
- private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache)
- {
+ /**
+ * _where
+ */
+ private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache)
+ {
// Builds where clause
$where = "vorlage_kurzbz = ".$this->ci->VorlageModel->escape($vorlage_kurzbz);
-
+
if (is_null($sprache))
{
$where .= " AND sprache IS NULL";
@@ -152,60 +152,60 @@ class VorlageLib
{
$where .= " AND sprache = ".$this->ci->VorlageModel->escape($sprache);
}
-
+
$where .= " AND aktiv = true";
-
+
return $where;
- }
+ }
/**
- * insertVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
- *
- * @param string $vorlage_kurzbz REQUIRED
- * @return array
- */
- public function insertVorlagetext($data)
+ * insertVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
+ *
+ * @param string $vorlage_kurzbz REQUIRED
+ * @return array
+ */
+ public function insertVorlagetext($data)
{
- $vorlagetext = $this->ci->VorlageStudiengangModel->insert($data);
- return $vorlagetext;
- }
+ $vorlagetext = $this->ci->VorlageStudiengangModel->insert($data);
+ return $vorlagetext;
+ }
/**
- * loadVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
- *
- * @param string $vorlage_kurzbz REQUIRED
- * @return array
- */
- public function getVorlagetextById($vorlagestudiengang_id)
+ * loadVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
+ *
+ * @param string $vorlage_kurzbz REQUIRED
+ * @return array
+ */
+ public function getVorlagetextById($vorlagestudiengang_id)
{
- $vorlagetext = $this->ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
- return $vorlagetext;
- }
+ $vorlagetext = $this->ci->VorlageStudiengangModel->load($vorlagestudiengang_id);
+ return $vorlagetext;
+ }
/**
- * saveVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
- *
- * @param string $vorlage_kurzbz REQUIRED
- * @return array
- */
- public function updateVorlagetext($vorlagestudiengang_id, $data)
+ * saveVorlagetext() - will load tbl_vorlagestudiengang for a spezific Template.
+ *
+ * @param string $vorlage_kurzbz REQUIRED
+ * @return array
+ */
+ public function updateVorlagetext($vorlagestudiengang_id, $data)
{
- $vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
- return $vorlagetext;
- }
+ $vorlagetext = $this->ci->VorlageStudiengangModel->update($vorlagestudiengang_id, $data);
+ return $vorlagetext;
+ }
/**
- * parseVorlagetext() - will parse a Vorlagetext.
- *
- * @param string $text REQUIRED
- * @param array $data REQUIRED
- * @return string
- */
- public function parseVorlagetext($text, $data = array())
+ * parseVorlagetext() - will parse a Vorlagetext.
+ *
+ * @param string $text REQUIRED
+ * @param array $data REQUIRED
+ * @return string
+ */
+ public function parseVorlagetext($text, $data = array())
{
- if (empty($text))
- return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
+ if (empty($text))
+ return error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false));
$text = $this->ci->parser->parse_string($text, $data, true);
return $text;
- }
+ }
}
diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php
index a56592467..2051c1666 100644
--- a/application/models/crm/Prestudent_model.php
+++ b/application/models/crm/Prestudent_model.php
@@ -201,10 +201,12 @@ class Prestudent_model extends DB_Model
*/
public function getPrestudentWithZgv($prestudent_id)
{
- $this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish, tbl_studiengang.typ as studiengangtyp,
- tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
- tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
+ $this->addSelect('tbl_prestudent.*, tbl_studiengang.studiengang_kz, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.bezeichnung as studiengangbezeichnung, tbl_studiengang.english as studiengangenglish,
+ tbl_studiengang.email as studiengangmail, tbl_studiengang.typ as studiengangtyp, tbl_studiengangstyp.bezeichnung as studiengangtyp_bez,
+ tbl_zgv.zgv_code, tbl_zgv.zgv_bez, tbl_prestudent.zgvnation as zgvnation_code, zgvnat.kurztext as zgvnation_kurzbez, zgvnat.langtext as zgvnation_bez, zgvnat.engltext as zgvnation_englbez,
+ tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmanation as zgvmanation_code, zgvmanat.kurztext as zgvmanation_kurzbez, zgvmanat.langtext as zgvmanation_bez, zgvmanat.engltext as zgvmanation_englbez');
$this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT');
+ $this->addJoin('public.tbl_studiengangstyp', 'typ', 'LEFT');
$this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT');
$this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT');
$this->addJoin('bis.tbl_nation zgvnat', 'zgvnation = zgvnat.nation_code', 'LEFT');
@@ -223,13 +225,13 @@ class Prestudent_model extends DB_Model
return error($lastStatus->retval);
}
- if(count($lastStatus->retval) > 0)
+ if (count($lastStatus->retval) > 0)
{
$this->load->model('system/sprache_model', 'SpracheModel');
$language = $this->SpracheModel->load($lastStatus->retval[0]->sprache);
- if($language->error)
+ if ($language->error)
return error($language->retval);
- if(count($language->retval) > 0)
+ if (count($language->retval) > 0)
$lastStatus->retval[0]->sprachedetails = $language->retval[0];
$prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0];
}
@@ -237,4 +239,27 @@ class Prestudent_model extends DB_Model
return success($prestudent->retval);
}
+ /**
+ * gets the prestudent edited last.
+ * if no updateamum, sort by insertamum
+ * @param $person_id
+ * @param bool $withzgv if true, only prestudenten with zgv_code are taken
+ * @return array|null
+ */
+ public function getLastPrestudent($person_id, $withzgv = false)
+ {
+ $qry = 'SELECT * FROM public.tbl_prestudent
+ WHERE person_id = ?
+ %s
+ ORDER BY updateamum DESC NULLS LAST, insertamum DESC NULLS LAST
+ LIMIT 1';
+
+ $zgvwhere = $withzgv === true ? 'AND zgv_code IS NOT NULL' : '';
+
+ $qry = sprintf($qry, $zgvwhere);
+
+ $parametersArray = array($person_id);
+
+ return $this->execQuery($qry, $parametersArray);
+ }
}
diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php
index 61f935d19..ccc1e2719 100644
--- a/application/models/person/Notiz_model.php
+++ b/application/models/person/Notiz_model.php
@@ -144,6 +144,19 @@ class Notiz_model extends DB_Model
return $this->loadWhere(array('person_id' => $person_id));
}
+
+ /**
+ * gets all Notizen for a person with a specific title
+ * @param $person_id
+ * @param $titel
+ */
+ public function getNotizByTitel($person_id, $titel)
+ {
+ // Join with the table public.tbl_notizzuordnung using notiz_id
+ $this->addJoin('public.tbl_notizzuordnung', 'notiz_id');
+
+ return $this->loadWhere(array('person_id' => $person_id, 'titel' => $titel));
+ }
// ------------------------------------------------------------------------------------------------------
}
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 9c6f14f89..0c7c169bb 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -209,5 +209,4 @@ class Person_model extends DB_Model
return $this->loadWhere(array('uid' => $uid));
}
-
}
diff --git a/application/models/system/PersonLock_model.php b/application/models/system/PersonLock_model.php
new file mode 100644
index 000000000..1d106b789
--- /dev/null
+++ b/application/models/system/PersonLock_model.php
@@ -0,0 +1,88 @@
+dbTable = 'system.tbl_person_lock';
+ $this->pk = 'lock_id';
+ }
+
+ /**
+ * Checks if a specific person is locked. By default, looks for entries with no app in locktable for the person.
+ * Alternatively, looks only for locks in a certain app.
+ * @param $person_id
+ * @param null $app
+ * @return array all locks for a person if locked, null otherwise
+ */
+ public function checkIfLocked($person_id, $app = null)
+ {
+ $lockdata = array('person_id' => $person_id, 'app' => $app);
+
+ $result = $this->loadWhere($lockdata);
+
+ if ($result->error)
+ return error($result->retval);
+
+ if (count($result->retval) > 0)
+ return success($result->retval);
+ else
+ return success(null);
+ }
+
+ /**
+ * Locks a person. Returns null if person was not locked (e.g. when already locked).
+ * @param $person_id
+ * @param $uid user who locks the person
+ * @param $app optional, application in which person is locked
+ * @return array inserted lock id if person was locked, null otherwise
+ */
+ public function lockPerson($person_id, $uid, $app = null)
+ {
+ $locked = $this->checkIfLocked($person_id, $app);
+
+ if ($locked->error)
+ return error($locked->retval);
+
+ //insert only if not already locked
+ if ($locked->retval === null)
+ return $this->insert(array('person_id' => $person_id, 'uid' => $uid, 'app' => $app));
+ else
+ return success(null);
+ }
+
+ /**
+ * Remove a lock for a person. By default, removes any entries in locktable for the person.
+ * Alternatively, removes only locks in a certain app.
+ * @param $person_id
+ * @param null $app
+ * @return array deleted lock ids if person was locked, null otherwise
+ */
+ public function unlockPerson($person_id, $app = null)
+ {
+ $deleted = array();
+ $locks = $this->checkIfLocked($person_id, $app);
+
+ if ($locks->retval === null)
+ return success(null);
+
+ foreach ($locks->retval as $lock)
+ {
+ $result = $this->delete($lock->lock_id);
+ if ($result->error)
+ return error($result->retval);
+
+ $deleted[] = $lock;
+ }
+
+ return success($deleted);
+ }
+}
diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php
index 40ef39f65..b9e170fbf 100644
--- a/application/models/system/Recipient_model.php
+++ b/application/models/system/Recipient_model.php
@@ -261,6 +261,7 @@ class Recipient_model extends DB_Model
ks.kontakt as sender,
kr.kontakt as receiver,
mu.mitarbeiter_uid as employeeContact,
+ ms.mitarbeiter_uid as senderemployeeContact,
mr.person_id as receiver_id,
mr.token,
mm.subject,
@@ -278,7 +279,13 @@ class Recipient_model extends DB_Model
m.mitarbeiter_uid
FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
WHERE b.aktiv = TRUE
- ) mu ON (mu.person_id = mr.person_id)';
+ ) mu ON (mu.person_id = mr.person_id)
+ LEFT JOIN (
+ SELECT b.person_id,
+ m.mitarbeiter_uid
+ FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid)
+ WHERE b.aktiv = TRUE
+ ) ms ON (ms.person_id = mm.person_id)';
$parametersArray = array($kontaktType, $kontaktType);
diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php
index 8244e8c67..3ceaf1fa1 100644
--- a/application/views/system/infocenter/infocenter.php
+++ b/application/views/system/infocenter/infocenter.php
@@ -4,12 +4,13 @@
array(
'title' => 'Info Center',
'jquery' => true,
+ 'jqueryui' => true,
'bootstrap' => true,
'fontawesome' => true,
'sbadmintemplate' => true,
'tablesorter' => true,
'customCSSs' => 'skin/tablesort_bootstrap.css',
- 'customJSs' => array('include/js/infocenterPersonDataset.js', 'include/js/bootstrapper.js')
+ 'customJSs' => array('include/js/bootstrapper.js', 'include/js/infocenter/infocenterPersonDataset.js')
)
);
?>
@@ -40,9 +41,6 @@
-
@@ -28,13 +36,27 @@ $this->load->view(
?>
-
-
-
+
+
+
@@ -124,27 +146,9 @@ $this->load->view(