diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php index 4be3a0e78..5fac9c95c 100755 --- a/application/controllers/system/Messages.php +++ b/application/controllers/system/Messages.php @@ -65,11 +65,21 @@ class Messages extends VileSci_Controller array_shift($variables->retval); // Remove person_id array_shift($variables->retval); // Remove prestudent_id + // + $oe_kurzbz = null; + $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $benutzerResult = $this->BenutzerfunktionModel->getByPersonId($sender_id); + if (hasData($benutzerResult)) + { + $oe_kurzbz = $benutzerResult->retval[0]->oe_kurzbz; + } + $data = array ( 'sender_id' => $sender_id, 'receivers' => $prestudent->retval, 'message' => $msg, - 'variables' => $variablesArray + 'variables' => $variablesArray, + 'oe_kurzbz' => $oe_kurzbz ); $v = $this->load->view('system/messageWrite', $data); diff --git a/application/libraries/OrganisationseinheitLib.php b/application/libraries/OrganisationseinheitLib.php index 7f40b29dd..8d125abc0 100644 --- a/application/libraries/OrganisationseinheitLib.php +++ b/application/libraries/OrganisationseinheitLib.php @@ -63,7 +63,7 @@ class OrganisationseinheitLib return $result; } - public function treeSearchEntire($table, $alias, $fields, $where, $orderby, $oe_kurzbz, $entireTree = false) + public function treeSearchEntire($table, $alias, $fields, $where, $orderby, $oe_kurzbz) { $select = ""; if (is_array($fields)) @@ -82,30 +82,22 @@ class OrganisationseinheitLib $select = $fields; } - $result = $this->ci->OrganisationseinheitModel->getOneLevel2($table, $alias, $select, $where, $orderby, $oe_kurzbz); + $result = $this->ci->OrganisationseinheitModel->getOneLevelAlias($table, $alias, $select, $where, $orderby, $oe_kurzbz); if (hasData($result)) { - if ($result->retval[0]->_pk != null && $result->retval[0]->_ppk != null) + if ($result->retval[0]->_pk != null && $result->retval[0]->_ppk != null && $result->retval[0]->_jtpk != null) { - $tmpResult = error(); + $tmpResult = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); - if (($entireTree == false && $result->retval[0]->oe_kurzbz == null) || $entireTree === true) + if (hasData($tmpResult) && $tmpResult->retval[0]->_pk != null && $tmpResult->retval[0]->_ppk != null && $tmpResult->retval[0]->_jtpk != null) { - $tmpResult = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk, $entireTree); - } - - if ($entireTree === true) - { - if (hasData($tmpResult)) - { - $result->retval = array_merge($result->retval, $tmpResult->retval); - } + $result->retval = array_merge($result->retval, $tmpResult->retval); } } - else if ($result->retval[0]->_pk == null && $result->retval[0]->_ppk != null) + else if ($result->retval[0]->_ppk != null) { - $result = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk, $entireTree); + $result = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); } } diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index 22a221c92..0414cd560 100755 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -84,25 +84,25 @@ class Organisationseinheit_model extends DB_Model return $this->execQuery($query, array($oe_kurzbz)); } - public function getOneLevel2($table, $alias, $fields, $where, $orderby, $oe_kurzbz) + public function getOneLevelAlias($table, $alias, $fields, $where, $orderby, $oe_kurzbz) { $query = "WITH RECURSIVE organizations(_pk, _ppk) AS ( SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o - WHERE o.oe_parent_kurzbz IS NULL - UNION ALL + WHERE o.oe_parent_kurzbz IS NULL + UNION ALL SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) ) SELECT orgs._pk, orgs._ppk, _joined_table.* - FROM organizations orgs LEFT JOIN ( - SELECT %s.oe_kurzbz as _pk, %s - FROM %s - WHERE %s - ) _joined_table ON (orgs._pk = _joined_table._pk) - WHERE orgs._pk = ? - ORDER BY %s"; + FROM organizations orgs LEFT JOIN ( + SELECT %s.oe_kurzbz as _jtpk, %s + FROM %s + WHERE %s + ) _joined_table ON (orgs._pk = _joined_table._jtpk) + WHERE orgs._pk = ? + ORDER BY %s"; $query = sprintf($query, $alias, $fields, $table, $where, $orderby); diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php index e570a8edf..c76dbd00d 100644 --- a/application/models/person/Benutzerfunktion_model.php +++ b/application/models/person/Benutzerfunktion_model.php @@ -1,7 +1,7 @@ dbTable = 'public.tbl_benutzerfunktion'; $this->pk = 'benutzerfunktion_id'; } -} + + /** + * + */ + public function getByPersonId($person_id) + { + // Join with the table + $this->addJoin('public.tbl_benutzer', 'uid'); + + return $this->loadWhere(array('person_id' => $person_id)); + } +} \ No newline at end of file diff --git a/application/views/system/messageWrite.php b/application/views/system/messageWrite.php index 84757b5cc..384d2a8db 100644 --- a/application/views/system/messageWrite.php +++ b/application/views/system/messageWrite.php @@ -93,7 +93,7 @@ widgetlib->widget( 'Vorlage_widget', - null, + array('oe_kurzbz' => $oe_kurzbz), array('name' => 'vorlage', 'id' => 'vorlageDnD') ); ?> diff --git a/application/widgets/vorlage_widget.php b/application/widgets/vorlage_widget.php index a7664a122..50065d1c7 100644 --- a/application/widgets/vorlage_widget.php +++ b/application/widgets/vorlage_widget.php @@ -19,12 +19,9 @@ class Vorlage_widget extends DropdownWidget AND templates.text IS NOT NULL AND templates.mimetype = \'text/html\'', "description ASC", - 'eas', - true + $widgetData['oe_kurzbz'] ); - array_pop($vorlage->retval); - $this->setElementsArray( $vorlage, true,