Merge branch 'master' into permissions

This commit is contained in:
Paolo
2018-04-18 17:35:33 +02:00
93 changed files with 6590 additions and 4328 deletions
@@ -11,4 +11,20 @@ class Konto_model extends DB_Model
$this->dbTable = 'wawi.tbl_konto';
$this->pk = 'konto_id';
}
/**
* Gets all Konten connected for a Kostenstelle
* @param $kostenstelle_id
* @return array
*/
public function getKontenForKostenstelle($kostenstelle_id)
{
$this->addJoin('wawi.tbl_konto_kostenstelle', 'konto_id');
$konten = $this->loadWhere(array('kostenstelle_id' => $kostenstelle_id));
if ($konten->error)
return error($konten->retval);
return $konten;
}
}
@@ -11,4 +11,70 @@ class Kostenstelle_model extends DB_Model
$this->dbTable = 'wawi.tbl_kostenstelle';
$this->pk = 'kostenstelle_id';
}
/**
* Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields
* Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified
* Only the Kostenstellen for which a permission exists are returned!
* @param $geschaeftsjahr
* @return array|null
*/
public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null)
{
$this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel');
if ($geschaeftsjahr === null)
{
$lgj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr();
if ($lgj->error)
return error($lgj->retval);
if (count($lgj->retval) < 1)
return success(array());
$geschaeftsjahr = $lgj->retval[0]->geschaeftsjahr_kurzbz;
}
$this->GeschaeftsjahrModel->addSelect('start, ende');
$gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr);
if ($gj->error)
return error($gj->retval);
if (count($gj->retval) < 1)
return success(array());
$gjstart = $gj->retval[0]->start;
$query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv
FROM wawi.tbl_kostenstelle
LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz
LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz
WHERE
(DATE ? >= kgjvon.start OR wawi.tbl_kostenstelle.geschaeftsjahrvon IS NULL)
AND
(DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL)
ORDER BY wawi.tbl_kostenstelle.bezeichnung';
$kostenstellen = $this->execQuery($query, array($gjstart, $gjstart));
if ($kostenstellen->error)
return error($kostenstellen->retval);
$this->load->library('PermissionLib');
$kostenstellenresult = array();
//filter kostenstellen, only kostenstellen for which berechtigt
foreach ($kostenstellen->retval as $kostenstelle)
{
if ($this->permissionlib->isBerechtigt('extension/budget_verwaltung', 'suid', null, $kostenstelle->kostenstelle_id) === true)
{
$kostenstellenresult[] = $kostenstelle;
}
}
return success($kostenstellenresult);
}
}
@@ -11,4 +11,33 @@ class Geschaeftsjahr_model extends DB_Model
$this->dbTable = 'public.tbl_geschaeftsjahr';
$this->pk = 'geschaeftsjahr_kurzbz';
}
/**
* Gets current Geschaeftsjahr, as determined by its start date
* @return array|null
*/
public function getCurrGeschaeftsjahr()
{
$query = 'SELECT *
FROM public.tbl_geschaeftsjahr
WHERE start <= now()
AND ende >= now()';
return $this->execQuery($query);
}
/**
* Gets next Geschaeftsjahr, as determined by its start date
* @return array|null
*/
public function getNextGeschaeftsjahr()
{
$query = 'SELECT *
FROM public.tbl_geschaeftsjahr
WHERE start > now()
ORDER BY start
LIMIT 1';
return $this->execQuery($query);
}
}
+39 -2
View File
@@ -94,10 +94,13 @@ class Person_model extends DB_Model
{
$this->addJoin('public.tbl_prestudent', 'person_id');
$this->addJoin('public.tbl_benutzer', 'person_id');
$result = $this->loadTree(
'public.tbl_person',
array(
'public.tbl_prestudent'
'public.tbl_prestudent',
'public.tbl_benutzer'
),
'EXISTS (
SELECT
@@ -112,7 +115,8 @@ class Person_model extends DB_Model
AND datum <= '.$this->escape($bis).'
)',
array(
'prestudenten'
'prestudenten',
'benutzer'
)
);
@@ -192,4 +196,37 @@ class Person_model extends DB_Model
return $this->loadWhere(array('uid' => $uid));
}
/**
* Retrives the language of the user by the UID
* Gets all the persons related to the given UID and starting from the most recent person in DB
* tries to find a valid language (!= null), if found is returned, otherwise is returned the
* default global language of the system
*/
public function getLanguage($uid)
{
$language = DEFAULT_LANGUAGE;
$this->addJoin('public.tbl_benutzer', 'person_id');
$this->addOrder('public.tbl_person.updateamum', 'DESC');
$this->addOrder('public.tbl_person.insertvon', 'DESC');
$persons = $this->loadWhere(array('uid' => $uid));
if (hasData($persons))
{
for ($i = 0; $i < count($persons->retval); $i++)
{
$person = $persons->retval[$i];
if (!empty($person->sprache))
{
$language = $person->sprache;
break;
}
}
}
return $language;
}
}
@@ -7,7 +7,7 @@ class Extensions_model extends DB_Model
*/
public function __construct()
{
parent::__construct();
parent::__construct('system');
$this->dbTable = 'system.tbl_extensions';
$this->pk = 'extension_id';
}
@@ -54,4 +54,21 @@ class Phrase_model extends DB_Model
return $this->execQuery($query, $parametersArray);
}
/**
* Loads phrases using category(s) and language as keys
* The retrived fields are category, phrase, orgeinheit_kurzbz, orgform_kurzbz and text
* They are ordered by p.category, p.phrase, pt.orgeinheit_kurzbz DESC and pt.orgform_kurzbz DESC'
*/
public function getPhrasesByCategoryAndLanguage($categories, $language)
{
$query = 'SELECT p.category, p.phrase, pt.orgeinheit_kurzbz, pt.orgform_kurzbz, pt.text
FROM system.tbl_phrase p
INNER JOIN system.tbl_phrasentext pt USING(phrase_id)
WHERE p.category IN ?
AND pt.sprache = ?
ORDER BY p.category, p.phrase, pt.orgeinheit_kurzbz DESC, pt.orgform_kurzbz DESC';
return $this->execQuery($query, array($categories, $language));
}
}