Compare commits

...

3 Commits

5 changed files with 66 additions and 50 deletions
@@ -109,7 +109,7 @@ class Lehrauftrag extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester(62);
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
@@ -75,7 +75,7 @@ class LehrauftragAkzeptieren extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester(62);
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
@@ -91,7 +91,7 @@ class LehrauftragErteilen extends Auth_Controller
$studiensemester_kurzbz = $this->input->get('studiensemester'); // if provided by selected studiensemester
if (is_null($studiensemester_kurzbz)) // else set next studiensemester as default value
{
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester();
$studiensemester = $this->StudiensemesterModel->getAktOrNextSemester(62);
if (hasData($studiensemester))
{
$studiensemester_kurzbz = $studiensemester->retval[0]->studiensemester_kurzbz;
@@ -53,11 +53,9 @@ class Studienjahr_model extends DB_Model
* @param int $days
* @return array|stdClass|null
*/
public function getLastOrAktStudienjahr($days = 60)
public function getLastOrAktStudienjahr($days = 0)
{
if (!is_numeric($days)) {
$days = 60;
}
$days = is_numeric($days) ? $this->escape($days) : 0;
$query = '
SELECT *
@@ -77,19 +75,25 @@ class Studienjahr_model extends DB_Model
* @param int $days
* @return array|stdClass|null
*/
public function getAktOrNextStudienjahr($days = 62)
public function getAktOrNextStudienjahr($days = 0)
{
if (!is_numeric($days)) {
$days = 62;
}
$days = is_numeric($days) ? $this->escape($days) : 0;
$query = '
SELECT *
FROM public.tbl_studienjahr
JOIN public.tbl_studiensemester using(studienjahr_kurzbz)
WHERE start < NOW() + \'' . $days . ' DAYS\'::INTERVAL
ORDER by start DESC
LIMIT 1
SELECT * FROM (
SELECT
jahr.*, MIN(sem.start) AS beginn, MAX(sem.ende) AS ende
FROM
public.tbl_studienjahr jahr
JOIN public.tbl_studiensemester sem using(studienjahr_kurzbz)
GROUP BY
studienjahr_kurzbz
) jahre
WHERE
ende >= NOW() + \'' . $days . ' DAYS\'::INTERVAL
ORDER BY
ende
LIMIT 1
';
return $this->execQuery($query);
@@ -45,39 +45,44 @@ class Studiensemester_model extends DB_Model
/**
* getLastOrAktSemester
* @param $days offset in days, if last semester should be returned instead of current
*/
public function getLastOrAktSemester($days = 60)
public function getLastOrAktSemester($days = 0)
{
if (!is_numeric($days))
{
$days = 60;
}
if (!is_numeric($days)) $days = 0;
$query = 'SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester
WHERE start < NOW() - \'' . $days . ' DAYS\'::INTERVAL
ORDER BY start DESC
LIMIT 1';
$query = '
SELECT
studiensemester_kurzbz, start, ende
FROM
public.tbl_studiensemester
WHERE
start < NOW() - \'' . $this->escape($days) . ' DAYS\'::INTERVAL
ORDER
BY start DESC
LIMIT 1';
return $this->execQuery($query);
}
/**
* getNextOrAktSemester
* 62 days - in july and august, semester after summer is returned
* Returns current semester, or next
* @param $days offset in days, if next semester should be returned earlier
*/
public function getAktOrNextSemester($days = 62)
public function getAktOrNextSemester($days = 0)
{
if (!is_numeric($days))
{
$days = 62;
}
$days = is_numeric($days) ? $this->escape($days) : 0;
$query = 'SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester
WHERE start < NOW() + \'' . $days . ' DAYS\':: INTERVAL
ORDER BY start DESC
LIMIT 1';
$query = "
SELECT
studiensemester_kurzbz, start, ende
FROM
public.tbl_studiensemester
WHERE
ende >= NOW() + '". $this->escape($days) . " DAYS'::INTERVAL
ORDER BY
ende
LIMIT 1;";
return $this->execQuery($query);
}
@@ -177,15 +182,19 @@ class Studiensemester_model extends DB_Model
*/
public function getByDate($date)
{
// gets the studiensemster of a date or the next closest previous studiensemester if a date is not within a studiensemester
// gets the studiensemster of a date or the closest previous studiensemester if a date is not within a studiensemester
$query = "
SELECT studiensemester_kurzbz, start, ende
FROM public.tbl_studiensemester
WHERE ( ende >= ?::date AND start <= ?::date ) OR ( ende >= ?::date + '-45 days'::interval AND start <= ?::date + '-45 days'::interval )
ORDER BY start DESC
SELECT
studiensemester_kurzbz, start, ende
FROM
public.tbl_studiensemester
WHERE
start <= ?::date
ORDER BY
start DESC
LIMIT 1";
return $this->execQuery($query, array($date,$date,$date,$date));
return $this->execQuery($query, array($date));
}
/**
@@ -200,10 +209,13 @@ class Studiensemester_model extends DB_Model
return success(array());
$query = "
SELECT *
FROM public.tbl_studiensemester
WHERE ( ?::date < ende AND ?::date > start )
ORDER BY start DESC";
SELECT *
FROM
public.tbl_studiensemester
WHERE
?::date < ende AND ?::date > start
ORDER BY
start DESC";
return $this->execQuery($query, array($from, $to));
}
@@ -275,7 +287,7 @@ class Studiensemester_model extends DB_Model
$this->addLimit($minus);
$this->db->where('start <= NOW()', null, false);
$minus = $this->db->get_compiled_select($this->dbTable);
$this->db->where_in($this->pk, '(' . $plus . ') UNION (' . $minus . ')', false);
}