diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php
index ab6c429a0..431ac5b04 100644
--- a/application/controllers/jobs/ReihungstestJob.php
+++ b/application/controllers/jobs/ReihungstestJob.php
@@ -3,6 +3,9 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
class ReihungstestJob extends JOB_Controller
{
+
+ const LAST_DAYS_PRESTUDENTSTATUS = 5;
+
/**
* Constructor
*/
@@ -826,7 +829,7 @@ class ReihungstestJob extends JOB_Controller
AND tbl_studiengang.typ IN ('b', 'm')
)
SELECT * FROM prst
- WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - 1)
+ WHERE prestudenstatus_datum >= (SELECT CURRENT_DATE - ". self::LAST_DAYS_PRESTUDENTSTATUS .")
AND (studiengang_typ = 'b' OR (studiengang_typ = 'm' AND EXISTS (SELECT 1 /* Master Studiengänge berücksichtigen wenn auch Bachelor im gleichen Semester */
FROM prst prstb
WHERE studiengang_typ = 'b'
@@ -868,7 +871,8 @@ class ReihungstestJob extends JOB_Controller
tbl_person.nachname,
tbl_person.vorname,
tbl_prestudent.*,
- tbl_studiengang.typ AS studiengang_typ
+ tbl_studiengang.typ AS studiengang_typ,
+ tbl_prestudentstatus.datum
FROM PUBLIC.tbl_person
JOIN PUBLIC.tbl_prestudent USING (person_id)
JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id)
@@ -901,7 +905,7 @@ class ReihungstestJob extends JOB_Controller
$mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AufnahmeHoeherePrio'][]
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
}
- elseif ($rowNiedrPrios->laststatus == 'Bewerber')
+ elseif ($rowNiedrPrios->laststatus == 'Bewerber' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
{
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
$lastStatus = $this->PrestudentstatusModel->getLastStatus($rowNiedrPrios->prestudent_id);
@@ -927,7 +931,7 @@ class ReihungstestJob extends JOB_Controller
= $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
}
}
- elseif ($rowNiedrPrios->laststatus == 'Wartender')
+ elseif ($rowNiedrPrios->laststatus == 'Wartender' && $row_ps->prestudenstatus_datum > $rowNiedrPrios->datum)
{
// Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
// Mail zur Info an Assistenz schicken
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 548b071d3..cf0c6755a 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -21,6 +21,7 @@ class InfoCenter extends Auth_Controller
const FREIGEGEBEN_PAGE = 'freigegeben';
const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert';
const ABGEWIESEN_PAGE = 'abgewiesen';
+ const AUFGENOMMEN_PAGE = 'aufgenommen';
const SHOW_DETAILS_PAGE = 'showDetails';
const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails';
const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung';
@@ -115,6 +116,7 @@ class InfoCenter extends Auth_Controller
'index' => 'infocenter:r',
'freigegeben' => 'infocenter:r',
'abgewiesen' => 'infocenter:r',
+ 'aufgenommen' => 'infocenter:r',
'reihungstestAbsolviert' => 'infocenter:r',
'showDetails' => 'infocenter:r',
'showZGVDetails' => 'lehre/zgvpruefung:r',
@@ -228,6 +230,16 @@ class InfoCenter extends Auth_Controller
$this->load->view('system/infocenter/infocenterAbgewiesen.php');
}
+
+ /**
+ * Aufgenommene page of the InfoCenter tool
+ */
+ public function aufgenommen()
+ {
+ $this->_setNavigationMenu(self::AUFGENOMMEN_PAGE); // define the navigation menu for this page
+
+ $this->load->view('system/infocenter/infocenterAufgenommen.php');
+ }
/**
*
@@ -314,7 +326,7 @@ class InfoCenter extends Auth_Controller
show_error('Person does not exist!');
$origin_page = $this->input->get(self::ORIGIN_PAGE);
- if ($origin_page == self::INDEX_PAGE)
+ if (in_array($origin_page, array(self::INDEX_PAGE, self::ABGEWIESEN_PAGE)))
{
// mark person as locked for editing
$result = $this->PersonLockModel->lockPerson($person_id, $this->_uid, self::APP);
@@ -359,7 +371,14 @@ class InfoCenter extends Auth_Controller
if (isError($result)) show_error(getError($result));
- $redirectLink = '/'.self::INFOCENTER_URI.'?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
+ $origin_page = $this->input->get(self::ORIGIN_PAGE);
+
+ if ($origin_page === self::ABGEWIESEN_PAGE)
+ $redirectLink = self::INFOCENTER_URI. '/' .self::ABGEWIESEN_PAGE;
+ else
+ $redirectLink = '/'.self::INFOCENTER_URI;
+
+ $redirectLink .= '?'.self::FHC_CONTROLLER_ID.'='.$this->getControllerId();
// Force reload of Dataset after Unlock
$redirectLink .= '&'.self::KEEP_TABLESORTER_FILTER.'=true';
@@ -1526,6 +1545,7 @@ class InfoCenter extends Auth_Controller
$freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE);
$reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE);
$abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
+ $aufgenommenLink = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
$currentFilterId = $this->input->get(self::FILTER_ID);
if (isset($currentFilterId))
@@ -1533,6 +1553,7 @@ class InfoCenter extends Auth_Controller
$freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
$abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
+ $aufgenommenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId;
}
$this->navigationlib->setSessionMenu(
@@ -1583,7 +1604,19 @@ class InfoCenter extends Auth_Controller
null, // subscriptLinkValue
'', // target
30 // sort
- )
+ ),
+ 'aufgenommen' => $this->navigationlib->oneLevel(
+ 'Aufgenommene', // description
+ $aufgenommenLink, // link
+ null, // children
+ 'check', // icon
+ null, // subscriptDescription
+ false, // expand
+ null, // subscriptLinkClass
+ null, // subscriptLinkValue
+ '', // target
+ 40 // sort
+ ),
)
);
}
@@ -1611,6 +1644,9 @@ class InfoCenter extends Auth_Controller
if ($origin_page === self::ABGEWIESEN_PAGE)
$link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE);
+ if ($origin_page === self::AUFGENOMMEN_PAGE)
+ $link = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE);
+
$prevFilterId = $this->input->get(self::PREV_FILTER_ID);
if (isset($prevFilterId))
{
diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php
index bb9b94c92..45a4eac7c 100644
--- a/application/models/organisation/Studiensemester_model.php
+++ b/application/models/organisation/Studiensemester_model.php
@@ -204,4 +204,14 @@ class Studiensemester_model extends DB_Model
return $this->execQuery($query, array($studiensemester_kurzbz));
}
+
+ public function getAktAndFutureSemester()
+ {
+ $query = 'SELECT studiensemester_kurzbz
+ FROM public.tbl_studiensemester
+ WHERE start >= NOW() OR (start <= NOW() AND ende >= NOW())
+ ORDER BY start';
+
+ return $this->execQuery($query);
+ }
}
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 8875fd4c5..ed21082e2 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -326,10 +326,12 @@ class Person_model extends DB_Model
SELECT p2.person_id
FROM tbl_person p1
+ JOIN tbl_prestudent ps ON p1.person_id = ps.person_id
INNER JOIN (
- SELECT vorname, nachname, gebdatum, person_id
- FROM tbl_person
- ) p2
+ SELECT vorname, nachname, gebdatum, person.person_id
+ FROM tbl_person person
+ JOIN tbl_prestudent sps ON person.person_id = sps.person_id
+ ) p2
ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php
index d09f0f41e..2307ea87e 100644
--- a/application/views/system/infocenter/infocenterAbgewiesenData.php
+++ b/application/views/system/infocenter/infocenterAbgewiesenData.php
@@ -1,6 +1,7 @@
config->load('infocenter');
+ $APP = '\'infocenter\'';
$ABGEWIESENEN_STATUS = '\'Abgewiesener\'';
$STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\'';
$ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz');
@@ -17,6 +18,8 @@ $query = '
p.nachname AS "Nachname",
so.studiengangkurzbzlang as "Studiengang",
pss.insertamum AS "AbgewiesenAm",
+ pl.zeitpunkt AS "LockDate",
+ pl.lockuser AS "LockUser",
(
SELECT l.zeitpunkt
FROM system.tbl_log l
@@ -54,6 +57,15 @@ $query = '
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
+ LEFT JOIN (
+ SELECT tpl.person_id,
+ tpl.zeitpunkt,
+ sp.nachname AS lockuser
+ FROM system.tbl_person_lock tpl
+ JOIN public.tbl_benutzer sb USING (uid)
+ JOIN public.tbl_person sp ON sb.person_id = sp.person_id
+ WHERE tpl.app = '.$APP.'
+ ) pl USING(person_id)
WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .'
AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .'
AND (sg.typ IN ('. $STUDIENGANG_TYP .')
@@ -70,6 +82,7 @@ $query = '
'requiredPermissions' => 'infocenter',
'datasetRepresentation' => 'tablesorter',
'checkboxes' => 'PersonId',
+ 'additionalColumns' => array('Details'),
'columnsAliases' => array(
'PersonId',
'PreStudentID',
@@ -77,11 +90,23 @@ $query = '
ucfirst($this->p->t('person', 'nachname')),
ucfirst($this->p->t('lehre', 'studiengang')),
ucfirst($this->p->t('infocenter', 'abgewiesenam')),
+ ucfirst($this->p->t('global', 'sperrdatum')),
+ ucfirst($this->p->t('global', 'gesperrtVon')),
ucfirst($this->p->t('global', 'nachricht')),
ucfirst($this->p->t('infocenter', 'kaution'))
),
'formatRow' => function($datasetRaw) {
+ /* NOTE: Dont use $this here for PHP Version compatibility */
+ $datasetRaw->{'Details'} = sprintf(
+ 'Details',
+ site_url('system/infocenter/InfoCenter/showDetails'),
+ $datasetRaw->{'PersonId'},
+ 'abgewiesen',
+ (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
+ (isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
+ );
+
if ($datasetRaw->{'Nachricht'} === null)
{
$datasetRaw->{'Nachricht'} = 'Nein';
@@ -103,10 +128,29 @@ $query = '
{
$datasetRaw->{'Kaution'} = 'Offen';
}
+
+ if ($datasetRaw->{'LockDate'} == null)
+ {
+ $datasetRaw->{'LockDate'} = '-';
+ }
+
+ if ($datasetRaw->{'LockUser'} == null)
+ {
+ $datasetRaw->{'LockUser'} = '-';
+ }
$datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i');
return $datasetRaw;
+ },
+
+ 'markRow' => function($datasetRaw) {
+
+ if ($datasetRaw->LockDate != null)
+ {
+ return FilterWidget::DEFAULT_MARK_ROW_CLASS;
+ }
}
+
);
echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
diff --git a/application/views/system/infocenter/infocenterAufgenommen.php b/application/views/system/infocenter/infocenterAufgenommen.php
new file mode 100644
index 000000000..6d65c0f7c
--- /dev/null
+++ b/application/views/system/infocenter/infocenterAufgenommen.php
@@ -0,0 +1,50 @@
+load->view(
+ 'templates/FHC-Header',
+ array(
+ 'title' => 'Info Center',
+ 'jquery3' => true,
+ 'jqueryui1' => true,
+ 'jquerycheckboxes1' => true,
+ 'bootstrap3' => true,
+ 'fontawesome4' => true,
+ 'sbadmintemplate3' => true,
+ 'tablesorter2' => true,
+ 'ajaxlib' => true,
+ 'filterwidget' => true,
+ 'navigationwidget' => true,
+ 'dialoglib' => true,
+ 'phrases' => array(
+ 'person' => array('vorname', 'nachname'),
+ 'global' => array('mailAnXversandt'),
+ 'ui' => array('bitteEintragWaehlen')
+ ),
+ 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'),
+ 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js')
+ )
+ );
+?>
+
+
+
+
+ widgetlib->widget('NavigationWidget'); ?>
+
+
+
+
+
+ load->view('system/infocenter/infocenterAufgenommenData.php'); ?>
+
+
+
+
+
+
+load->view('templates/FHC-Footer'); ?>
diff --git a/application/views/system/infocenter/infocenterAufgenommenData.php b/application/views/system/infocenter/infocenterAufgenommenData.php
new file mode 100644
index 000000000..720d118e3
--- /dev/null
+++ b/application/views/system/infocenter/infocenterAufgenommenData.php
@@ -0,0 +1,95 @@
+config->load('infocenter');
+ $AUFGENOMMENER_STATUS = '\'Aufgenommener\'';
+ $REJECTED_STATUS = '\'Abgewiesener\'';
+ $STUDIENGANG_TYP = '\'l\'';
+ $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\'';
+ $LOGDATA_NAME = '\'Message sent\'';
+ $LOGDATA_VON = '\'online\'';
+
+$query = '
+ SELECT
+ p.person_id AS "PersonId",
+ p.vorname AS "Vorname",
+ p.nachname AS "Nachname",
+ (
+ SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ) || UPPER(sg.kurzbz)), \', \')
+ FROM public.tbl_prestudentstatus pss
+ JOIN public.tbl_prestudent ps USING(prestudent_id)
+ JOIN public.tbl_studiengang sg USING(studiengang_kz)
+ WHERE
+ pss.status_kurzbz = '. $AUFGENOMMENER_STATUS .'
+ AND ps.person_id = p.person_id
+ AND sg.typ IN ('.$STUDIENGANG_TYP.')
+ AND pss.studiensemester_kurzbz = '.$STUDIENSEMESTER.'
+ AND NOT EXISTS (
+ SELECT 1
+ FROM tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = pss.prestudent_id
+ AND spss.status_kurzbz = '. $REJECTED_STATUS .'
+ AND spss.studiensemester_kurzbz IN (
+ SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >
+ (SELECT start FROM public.tbl_studiensemester sss WHERE studiensemester_kurzbz = '. $STUDIENSEMESTER .'))
+ )
+ LIMIT 1
+ ) AS "Studiengang"
+ FROM
+ public.tbl_person p
+ WHERE
+ EXISTS (
+ SELECT 1
+ FROM public.tbl_prestudent sps
+ JOIN public.tbl_studiengang ssg USING(studiengang_kz)
+ WHERE sps.person_id = p.person_id
+ AND ssg.typ IN (' . $STUDIENGANG_TYP . ')
+ AND ' . $AUFGENOMMENER_STATUS . ' = (
+ SELECT spss.status_kurzbz
+ FROM public.tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = sps.prestudent_id
+ ORDER BY spss.datum DESC, spss.insertamum DESC, spss.ext_id DESC
+ LIMIT 1
+ )
+ AND EXISTS (
+ SELECT 1
+ FROM tbl_prestudentstatus spss
+ WHERE spss.prestudent_id = sps.prestudent_id
+ AND spss.status_kurzbz = ' . $AUFGENOMMENER_STATUS . '
+ AND spss.studiensemester_kurzbz = ' . $STUDIENSEMESTER . '
+ )
+ )
+
+ ';
+
+ $filterWidgetArray = array(
+ 'query' => $query,
+ 'app' => InfoCenter::APP,
+ 'datasetName' => 'aufgenommen',
+ 'filter_id' => $this->input->get('filter_id'),
+ 'requiredPermissions' => 'infocenter',
+ 'datasetRepresentation' => 'tablesorter',
+ 'checkboxes' => 'PersonId',
+ 'additionalColumns' => array('Details'),
+ 'columnsAliases' => array(
+ 'PersonId',
+ ucfirst($this->p->t('person', 'vorname')) ,
+ ucfirst($this->p->t('person', 'nachname')),
+ ucfirst($this->p->t('lehre', 'studiengang'))
+ ),
+
+ 'formatRow' => function($datasetRaw)
+ {
+ $datasetRaw->{'Details'} = sprintf(
+ 'Details',
+ site_url('system/infocenter/InfoCenter/showDetails'),
+ $datasetRaw->{'PersonId'},
+ 'aufgenommen',
+ (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''),
+ (isset($_GET['filter_id']) ? $_GET['filter_id'] : '')
+ );
+ return $datasetRaw;
+ }
+ );
+
+ echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray);
+?>
diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php
index 401e34099..c61bb3cd2 100644
--- a/application/views/system/infocenter/infocenterDetails.php
+++ b/application/views/system/infocenter/infocenterDetails.php
@@ -57,10 +57,11 @@
if (isset($lockedby)):
echo $this->p->t('global', 'wirdBearbeitetVon').': ';
echo $lockedby;
- if ($origin_page == 'index'):
+ if (in_array($origin_page, array('index', 'abgewiesen'))):
$unlockpath = 'unlockPerson/'.$stammdaten->person_id;
$unlockpath .= '?fhc_controller_id='.$fhc_controller_id;
$unlockpath .= '&filter_id='.$prev_filter_id;
+ $unlockpath .= '&origin_page='.$origin_page;
?>
diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php
index 6f47992a1..9f6cd4fb7 100644
--- a/cis/testtool/frage.php
+++ b/cis/testtool/frage.php
@@ -161,7 +161,7 @@ if(!isset($_SESSION['pruefling_id']))
$pruefling = new pruefling();
$pruefling->load($_SESSION['pruefling_id']);
-if ($pruefling->gesperrt === 't')
+if ($pruefling->isGesperrt($_SESSION['pruefling_id']))
die("");
if (!in_array($gebiet_id, $_SESSION['alleGebiete']))
diff --git a/cis/testtool/login.php b/cis/testtool/login.php
index 0b114b8c5..0ff84f4a0 100644
--- a/cis/testtool/login.php
+++ b/cis/testtool/login.php
@@ -362,6 +362,8 @@ if ((isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id']) &&
$pruefling->idnachweis = '';
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
+
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
@@ -385,6 +387,7 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id']))
$pruefling->registriert = date('Y-m-d H:i:s');
$pruefling->prestudent_id = $_SESSION['prestudent_id'];
$pruefling->semester = $_POST['semester'];
+ $pruefling->gesperrt = $pruefling->isGesperrt(null, $_SESSION['prestudent_id']);
if ($pruefling->save())
{
$_SESSION['pruefling_id']=$pruefling->pruefling_id;
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index 13f3e5e00..557412413 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -870,6 +870,42 @@ class prestudent extends person
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
)";
break;
+ case "bewerberrtnichtangemeldet":
+ $qry.=" AND a.rolle='Bewerber'
+ AND NOT EXISTS (
+ SELECT
+ 1
+ FROM
+ public.tbl_rt_person
+ JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
+ WHERE
+ person_id=a.person_id
+ AND studienplan_id IN (
+ SELECT studienplan_id FROM lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
+ )
+ AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ )";
+ break;
+ case "bewerberrtangemeldet":
+ $qry.=" AND a.rolle='Bewerber'
+ AND EXISTS (
+ SELECT
+ 1
+ FROM
+ public.tbl_rt_person
+ JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
+ WHERE
+ person_id=a.person_id
+ AND studienplan_id IN (
+ SELECT studienplan_id FROM lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
+ )
+ AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ )";
+ break;
case "zgv":
$stg_obj = new studiengang();
$stg_obj->load($studiengang_kz);
diff --git a/include/pruefling.class.php b/include/pruefling.class.php
index fc64d90c4..efe660ca9 100644
--- a/include/pruefling.class.php
+++ b/include/pruefling.class.php
@@ -108,12 +108,13 @@ class pruefling extends basis_db
if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
{
- $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester) VALUES('.
+ $qry = 'BEGIN;INSERT INTO testtool.tbl_pruefling (studiengang_kz, idnachweis, registriert, prestudent_id, semester, gesperrt) VALUES('.
$this->db_add_param($this->studiengang_kz).",".
$this->db_add_param($this->idnachweis).",".
$this->db_add_param($this->registriert).",".
$this->db_add_param($this->prestudent_id).",".
- $this->db_add_param($this->semester).");";
+ $this->db_add_param($this->semester).",".
+ $this->db_add_param($this->gesperrt, FHC_BOOLEAN).");";
}
else
{
@@ -122,7 +123,8 @@ class pruefling extends basis_db
' idnachweis='.$this->db_add_param($this->idnachweis).','.
' registriert='.$this->db_add_param($this->registriert).','.
' semester='.$this->db_add_param($this->semester).','.
- ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).
+ ' prestudent_id='.$this->db_add_param($this->prestudent_id, FHC_INTEGER).','.
+ ' gesperrt='.$this->db_add_param($this->gesperrt, FHC_BOOLEAN).
" WHERE pruefling_id=".$this->db_add_param($this->pruefling_id, FHC_INTEGER, false).";";
}
@@ -557,5 +559,43 @@ class pruefling extends basis_db
return false;
}
}
+
+ public function isGesperrt($pruefling_id = null, $prestudent_id = null)
+ {
+ if (is_null($pruefling_id) && is_null($prestudent_id))
+ {
+ $this->errormsg = 'Falsche Parameterübergabe';
+ return false;
+ }
+
+ $qry = "SELECT spruefling.gesperrt
+ FROM testtool.tbl_pruefling
+ RIGHT JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_prestudent pss ON pss.person_id = tbl_person.person_id
+ JOIN testtool.tbl_pruefling spruefling ON pss.prestudent_id = spruefling.prestudent_id
+ WHERE spruefling.gesperrt";
+
+ if (!is_null($pruefling_id))
+ $qry .= " AND tbl_pruefling.pruefling_id = ".$this->db_add_param($pruefling_id, FHC_INTEGER);
+
+ if (!is_null($prestudent_id))
+ $qry .= " AND tbl_prestudent.prestudent_id = ".$this->db_add_param($prestudent_id, FHC_INTEGER);
+
+ $qry .= " LIMIT 1";
+
+ if($result = $this->db_query($qry))
+ {
+ if ($this->db_num_rows($result) == 0)
+ return false;
+ else
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler bei einer Abfrage';
+ return false;
+ }
+ }
}
?>
diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php
index 30d603afc..df4134ebf 100644
--- a/include/reihungstest.class.php
+++ b/include/reihungstest.class.php
@@ -694,11 +694,17 @@ class reihungstest extends basis_db
tbl_reihungstest.studiensemester_kurzbz,
tbl_reihungstest.stufe,
tbl_reihungstest.anmeldefrist,
- tbl_reihungstest.aufnahmegruppe_kurzbz
+ tbl_reihungstest.aufnahmegruppe_kurzbz,
+ tbl_studiengang.typ,
+ UPPER(typ::varchar(1) || kurzbz) AS stg_kuerzel,
+ so.studiengangbezeichnung,
+ so.studiengangbezeichnung_englisch
FROM
public.tbl_rt_person
- JOIN
- public.tbl_reihungstest ON (rt_id=reihungstest_id)
+ JOIN public.tbl_reihungstest ON (rt_id=reihungstest_id)
+ JOIN public.tbl_studiengang ON tbl_reihungstest.studiengang_kz = tbl_studiengang.studiengang_kz
+ JOIN lehre.tbl_studienplan sp USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung so USING(studienordnung_id)
WHERE
tbl_rt_person.person_id=".$this->db_add_param($person_id);
@@ -737,6 +743,10 @@ class reihungstest extends basis_db
$obj->stufe = $row->stufe;
$obj->anmeldefrist = $row->anmeldefrist;
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
+ $obj->typ = $row->typ;
+ $obj->stg_kuerzel = $row->stg_kuerzel;
+ $obj->studiengangbezeichnung = $row->studiengangbezeichnung;
+ $obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch;
$this->result[] = $obj;
}
diff --git a/rdf/lehrverbandsgruppe.rdf.php b/rdf/lehrverbandsgruppe.rdf.php
index 20956d279..19affa245 100644
--- a/rdf/lehrverbandsgruppe.rdf.php
+++ b/rdf/lehrverbandsgruppe.rdf.php
@@ -290,6 +290,24 @@ function draw_orgformsubmenu($stg_kz, $orgform)
bewerber
+
+
+ Nicht zum Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtnichtangemeldet
+
+
+
+
+ Reihungstest angemeldet
+
+
+ studiensemester_kurzbz.']]>
+ bewerberrtangemeldet
+
+
Aufgenommen
@@ -344,8 +362,14 @@ function draw_orgformsubmenu($stg_kz, $orgform)
$orgform_sequence[$stg_kz].= "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\t\t";
$orgform_sequence[$stg_kz].= "\n\t\t\t\n";
-
- $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
+
+ $orgform_sequence[$stg_kz].= "\t\t\t";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ $orgform_sequence[$stg_kz].= "\t\t\t\t";
+ $orgform_sequence[$stg_kz].= "\n\t\t\t\n";
+
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
$orgform_sequence[$stg_kz].= "\t\t\tstudiensemester_kurzbz/absage\" />\n";
@@ -624,6 +648,22 @@ while ($row=$dbo->db_fetch_object())
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
+
+
+ ]]>
+ studiengang_kz; ?>]]>
+ studiensemester_kurzbz; ?>]]>
+
+
+
]]>
@@ -832,8 +872,14 @@ draw_orgformpart($stg_kz);
echo "\t\t\t\tstudiensemester_kurzbz/interessenten/reihungstestangemeldet\" />\n";
echo "\t\t\t\t";
echo "\n\t\t\t\n";
+
+ echo "\t\t\t";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber\">\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestnichtangemeldet\" />\n";
+ echo "\t\t\t\tstudiensemester_kurzbz/bewerber/reihungstestangemeldet\" />\n";
+ echo "\t\t\t\t";
+ echo "\n\t\t\t\n";
- echo "\t\t\t\tstudiensemester_kurzbz/bewerber\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/aufgenommen\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/warteliste\" />\n";
echo "\t\t\t\tstudiensemester_kurzbz/absage\" />\n";
diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php
index 11e841c2b..1625f161c 100644
--- a/rdf/student.rdf.php
+++ b/rdf/student.rdf.php
@@ -737,7 +737,7 @@ if($xmlformat=='rdf')
}
elseif(in_array($typ, array('prestudent', 'interessenten', 'bewerber', 'aufgenommen',
'warteliste', 'absage', 'zgv', 'reihungstestangemeldet', 'reihungstestnichtangemeldet', 'absolvent',
- 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet')))
+ 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt', 'statusbestaetigtrtnichtangemeldet', 'statusbestaetigtrtangemeldet', 'bewerberrtangemeldet', 'bewerberrtnichtangemeldet')))
{
$prestd = new prestudent();
diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index eba880225..2ace5e760 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -42,6 +42,7 @@ require_once('dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php');
require_once('dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php');
require_once('dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php');
require_once('dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruendung.php');
+require_once('dbupdate_3.4/29529_infocenter_anpassungen.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo 'Pruefe Tabellen und Attribute!
';
diff --git a/system/dbupdate_3.4/29529_infocenter_anpassungen.php b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
new file mode 100644
index 000000000..e11f3ed39
--- /dev/null
+++ b/system/dbupdate_3.4/29529_infocenter_anpassungen.php
@@ -0,0 +1,34 @@
+db_query("SELECT has_sequence_privilege('web', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to web;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().'
';
+ else
+ echo '
Web User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+// Update Berechtigungen fuer vilesci User erteilen fuer tbl_pruefling_pruefling_id_seq
+if($result = @$db->db_query("SELECT has_sequence_privilege('vilesci', 'testtool.tbl_pruefling_pruefling_id_seq', 'UPDATE')"))
+{
+ if($db->db_fetch_object($result)->has_sequence_privilege === "f")
+ {
+ $qry = "GRANT SELECT, UPDATE ON SEQUENCE testtool.tbl_pruefling_pruefling_id_seq to vilesci;";
+
+ if(!$db->db_query($qry))
+ echo 'testtool.tbl_pruefling Berechtigungen: '.$db->db_last_error().'
';
+ else
+ echo '
vilesci User fuer testtool.tbl_pruefling berechtigt';
+ }
+}
+
+
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index 241e44f2f..cc9abfb98 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -520,7 +520,29 @@ $filters = array(
{"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"},
- {"name": "Kaution"}
+ {"name": "Kaution"},
+ {"name": "LockUser"}
+ ],
+ "filters": []
+ }
+ ',
+ 'oe_kurzbz' => null,
+ ),
+ array(
+ 'app' => 'infocenter',
+ 'dataset_name' => 'aufgenommen',
+ 'filter_kurzbz' => 'InfoCenterAufgenommenAlle',
+ 'description' => '{Alle}',
+ 'sort' => 1,
+ 'default_filter' => true,
+ 'filter' => '
+ {
+ "name": "Aufgenommen - Lehrgänge",
+ "columns": [
+ {"name": "PersonId"},
+ {"name": "Vorname"},
+ {"name": "Nachname"},
+ {"name": "Studiengang"}
],
"filters": []
}
diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php
index e5975b651..e52235fda 100644
--- a/vilesci/stammdaten/auswertung_fhtw.php
+++ b/vilesci/stammdaten/auswertung_fhtw.php
@@ -490,22 +490,67 @@ if ($rtprueflingEntSperren)
exit();
}
- if (isset($_POST['prestudent_id']) && is_numeric($_POST['prestudent_id'])
+ if (isset($_POST['person_id']) && is_numeric($_POST['person_id'])
&& isset($_POST['art']))
{
- $qry = "UPDATE testtool.tbl_pruefling SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
- WHERE prestudent_id IN
- (SELECT prestudent_id FROM public.tbl_prestudent ps
- JOIN public.tbl_person tp ON tp.person_id = ps.person_id
- WHERE tp.person_id = (SELECT person_id FROM public.tbl_prestudent sps WHERE sps.prestudent_id = " . $db->db_add_param($_POST['prestudent_id']) . "));";
+ $qry = "SELECT pruefling_id
+ FROM testtool.tbl_pruefling
+ WHERE prestudent_id IN (
+ SELECT prestudent_id
+ FROM public.tbl_prestudent
+ WHERE person_id = ". $db->db_add_param($_POST['person_id']) . "
+ )";
if ($result = $db->db_query($qry))
{
- $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
- echo json_encode(array(
- 'status' => 'ok',
- 'msg' => $msg));
- exit();
+ if ($db->db_num_rows($result) === 0)
+ {
+ $ps = new prestudent();
+ $ps->getPrestudenten($_POST['person_id']);
+
+ $prestudent = new prestudent($ps->result[0]->prestudent_id);
+ $prestudent->getLastStatus($prestudent->prestudent_id);
+
+ $pruefling = new pruefling();
+ $pruefling->new = true;
+ $pruefling->studiengang_kz = $prestudent->studiengang_kz;
+ $pruefling->registriert = date('Y-m-d H:i:s');
+ $pruefling->semester = $prestudent->ausbildungssemester;
+ $pruefling->prestudent_id = $prestudent->prestudent_id;
+ $pruefling->gesperrt = true;
+
+ $resultSperre = $pruefling->save();
+ }
+ else
+ {
+ $pruefling_ids = array();
+
+ while ($row = $db->db_fetch_object($result))
+ $pruefling_ids[] = $row->pruefling_id;
+
+ $qry = "UPDATE testtool.tbl_pruefling
+ SET gesperrt =" . $db->db_add_param($_POST['art'], 'BOOLEAN') . "
+ WHERE pruefling_id IN (" . $db->db_implode4SQL($pruefling_ids) . ")";
+
+ $resultSperre = $db->db_query($qry);
+ }
+
+ if ($resultSperre)
+ {
+ $msg = $_POST['art'] === 'false' ? 'Pruefling wurde gesperrt' : 'Pruefling wurde freigeschaltet';
+ echo json_encode(array(
+ 'status' => 'ok',
+ 'msg' => $msg));
+ exit();
+ }
+ else
+ {
+ echo json_encode(array(
+ 'status' => 'fehler',
+ 'msg' => 'Fehler beim speichern der Daten'
+ ));
+ exit();
+ }
}
else
{
@@ -1248,6 +1293,7 @@ $semester = isset($_REQUEST['semester']) ? $_REQUEST['semester'] : '';
$prestudent_id = isset($_REQUEST['prestudent_id']) ? $_REQUEST['prestudent_id'] : '';
$orgform_kurzbz = isset($_REQUEST['orgform_kurzbz']) ? $_REQUEST['orgform_kurzbz'] : '';
$format = (isset($_REQUEST['format']) ? $_REQUEST['format'] : '');
+$stgtyp = (isset($_REQUEST['stgtyp']) ? $_REQUEST['stgtyp'] : '');
$rtStudiensemester = '';
if ($reihungstest != '' && (is_array($reihungstest) || is_numeric($reihungstest)))
@@ -1418,7 +1464,12 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
ORDER BY studienplan_id DESC LIMIT 1)
OR tbl_ablauf.studienplan_id IS NULL)";
}
- //$query .= " AND nachname='Al-Mafrachi'";
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " .$db->db_add_param($stgtyp);
+ }
+
$query .= " ORDER BY tbl_ablauf.studiengang_kz, tbl_ablauf.semester, reihung";
if (!($result = $db->db_query($query)))
@@ -1638,18 +1689,23 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
//$query .= " AND tbl_ablauf.studienplan_id = 5";
$query .= " AND tbl_studienplan.orgform_kurzbz=" . $db->db_add_param($orgform_kurzbz);
}
+
+ if ($stgtyp !== '')
+ {
+ $query .= " AND tbl_studiengang.typ = " . $db->db_add_param($stgtyp);
+ }
+
//$query .= " AND nachname='Al-Mafrachi'";
$query .= " ORDER BY nachname,
vorname,
- person_id
- ";/*print_r($query);*/
- //echo '', var_dump($query), '
';
+ person_id";
if (!($result = $db->db_query($query)))
{
die($db->db_last_error());
}
$gebiete_arr = array();
+ $gesperrt_arr = array();
while ($row = $db->db_fetch_object($result))
{
// Hack für BEW-BB, wenn auch BEW-DL-Ergebnisse vorliegen
@@ -1666,7 +1722,10 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id] = new stdClass();
$gebiete_arr[$row->prestudent_id] = array();
}
-
+
+ if (!isset($gesperrt_arr[$row->person_id]))
+ $gesperrt_arr[$row->person_id] = new stdClass();
+
$ergebnis[$row->prestudent_id]->prestudent_id = $row->prestudent_id;
$ergebnis[$row->prestudent_id]->person_id = $row->person_id;
$ergebnis[$row->prestudent_id]->reihungstest_id = $row->reihungstest_id;
@@ -1678,7 +1737,6 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->geschlecht = $row->geschlecht;
$ergebnis[$row->prestudent_id]->idnachweis = $row->idnachweis;
$ergebnis[$row->prestudent_id]->registriert = $row->registriert;
- $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
$ergebnis[$row->prestudent_id]->stg_kurzbz = $row->stg_kurzbz;
$ergebnis[$row->prestudent_id]->stg_bez = $row->stg_bez;
$ergebnis[$row->prestudent_id]->ausbildungssemester = $row->ausbildungssemester;
@@ -1690,6 +1748,13 @@ if (isset($_REQUEST['reihungstest']) || isset($_POST['rtauswsubmit']))
$ergebnis[$row->prestudent_id]->teilgenommen = $db->db_parse_bool($row->teilgenommen);
$ergebnis[$row->prestudent_id]->qualifikationskurs = $db->db_parse_bool($row->qualifikationskurs);
$ergebnis[$row->prestudent_id]->letzter_status = $row->letzter_status;
+ $ergebnis[$row->prestudent_id]->gesperrt = $row->gesperrt;
+
+ $gesperrt = $db->db_parse_bool($row->gesperrt);
+ if (!isset($gesperrt_arr[$row->person_id]->gesperrt) || ($gesperrt_arr[$row->person_id]->gesperrt !== true && $gesperrt === true))
+ {
+ $gesperrt_arr[$row->person_id]->gesperrt = $gesperrt;
+ }
if (!isset($ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]))
{
@@ -2440,7 +2505,7 @@ else
});
}
}
- function prueflingEntSperren(prestudent_id, name, art)
+ function prueflingEntSperren(person_id, name, art)
{
if (art === true)
var text = "sperren";
@@ -2450,7 +2515,7 @@ else
if (confirm("Wollen Sie den Studenten "+ name + " wirklich " + text + "?"))
{
data = {
- prestudent_id: prestudent_id,
+ person_id: person_id,
art: art,
rtprueflingEntSperren: true
};
@@ -2464,21 +2529,31 @@ else
{
if(data.status !== "ok")
{
- $("#msgbox").attr("class","alert alert-danger");
- $("#msgbox").show();
- $("#msgbox").html(data["msg"]);
+ if (data.status === "warning")
+ {
+ $("#msgbox").attr("class","alert alert-warning");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ $("#msgbox").html(data["msg"]).delay(2000).fadeOut();
+ }
+ else
+ {
+ $("#msgbox").attr("class","alert alert-danger");
+ $("#msgbox").show();
+ $("#msgbox").html(data["msg"]);
+ }
}
else
{
if (art === true)
{
- $("#prueflingentsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingentsperren_" + person_id).removeClass("hidden");
+ $(".prueflingsperren_" + person_id).addClass("hidden");
}
else if (art === false)
{
- $("#prueflingsperren_" + prestudent_id).removeClass("hidden");
- $("#prueflingentsperren_" + prestudent_id).addClass("hidden");
+ $(".prueflingsperren_" + person_id).removeClass("hidden");
+ $(".prueflingentsperren_" + person_id).addClass("hidden");
}
}
},
@@ -3019,6 +3094,20 @@ else
echo ' ';
echo '';
+
+ $studiengangtyp = ['b' => 'Bachelor', 'm' => 'Master'];
+ echo ' ';
echo '';
echo '| ';
echo 'PrestudentIn: ';
@@ -3032,6 +3121,7 @@ else
&prestudent_id=' . $prestudent_id . '
&' . http_build_query(array('reihungstest' => $reihungstest)) . '
&orgform_kurzbz=' . $orgform_kurzbz . '
+ &stgtyp=' . $stgtyp . '
&format=xls"
class="btn btn-primary"
role="button">
@@ -3293,10 +3383,10 @@ else
echo " |
-
+
-
+
| ";