diff --git a/application/config/message.php b/application/config/message.php
index 35d34124b..8232cdfb7 100644
--- a/application/config/message.php
+++ b/application/config/message.php
@@ -18,6 +18,8 @@ $config['ou_receivers'] = array('ass');
$config['ou_receivers_no_notice'] = array('infocenter');
// Organization units that will not send the notice email to the internal account, but to the private one
$config['ou_receivers_private'] = array('eac', 'ewu', 'scs');
+//
+$config['ou_function_whitelist'] = array('ass', 'Leitung', 'fachzuordnung', 'oezuordnung');
$config['message_redirect_url'] = array();
$config['message_redirect_url']['fallback'] = site_url('system/messages/ViewMessage/writeReply');
diff --git a/application/config/navigation.php b/application/config/navigation.php
index 9253c87a1..a89c259ee 100644
--- a/application/config/navigation.php
+++ b/application/config/navigation.php
@@ -72,11 +72,18 @@ $config['navigation_header'] = array(
'sort' => 40,
'requiredPermissions' => 'basis/vilesci:r',
'children'=> array(
+ 'messages' => array(
+ 'link' => site_url('system/messages/MessageClient/read'),
+ 'icon' => '',
+ 'target' => '_blank',
+ 'description' => 'Messages',
+ 'sort' => 10,
+ ),
'bpk' => array(
'link' => site_url('person/BPKWartung'),
'icon' => '',
'description' => 'BPK Wartung',
- 'sort' => 10,
+ 'sort' => 20,
'requiredPermissions' => 'admin:r'
)
)
diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php
index 5c663e832..1825b7db9 100644
--- a/application/controllers/api/v1/system/Message.php
+++ b/application/controllers/api/v1/system/Message.php
@@ -149,10 +149,10 @@ class Message extends APIv1_Controller
if (isSuccess($postMessage))
{
$result = $this->messagelib->sendMessageUser(
- $this->post()['receiver_id']), // receiverPersonId
+ $this->post()['receiver_id'], // receiverPersonId
$this->post()['subject'], // subject
$this->post()['body'], // body
- $this->post()['person_id']) ? $this->post()['person_id'] : null, // sender_id
+ $this->post()['person_id'] ? $this->post()['person_id'] : null, // sender_id
isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // senderOU
isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, // relationmessage_id
MSG_PRIORITY_NORMAL, // priority
diff --git a/application/controllers/jobs/MailJob.php b/application/controllers/jobs/MailJob.php
index 721db0068..f459d4d3e 100644
--- a/application/controllers/jobs/MailJob.php
+++ b/application/controllers/jobs/MailJob.php
@@ -1,20 +1,8 @@
messagelib->sendAllNotices($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem);
+ $this->logInfo('Send all message email notices started');
+
+ // Send them all!
+ $sendAllEmailNotices = $this->messagelib->sendAllEmailNotices($since, $numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem);
+
+ if (isError($sendAllEmailNotices))
+ {
+ $optionalParameters = new stdClass();
+ $optionalParameters->$since = $since;
+ $optionalParameters->$numberToSent = $numberToSent;
+ $optionalParameters->$numberPerTimeRange = $numberPerTimeRange;
+ $optionalParameters->$emailTimeRange = $emailTimeRange;
+ $optionalParameters->$emailFromSystem = $emailFromSystem;
+
+ $this->logError($sendAllEmailNotices->retval, $optionalParameters);
+ }
+ elseif (!hasData($sendAllEmailNotices))
+ {
+ $this->logInfo('There were no unsent messages');
+ }
+
+ $this->logInfo('Send all message email notices ended');
}
}
diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php
index 84a5fe614..859b8f265 100644
--- a/application/controllers/jobs/ReihungstestJob.php
+++ b/application/controllers/jobs/ReihungstestJob.php
@@ -3,30 +3,32 @@ if (!defined('BASEPATH')) exit('No direct script access allowed');
class ReihungstestJob extends CLI_Controller
{
- /**
- * Constructor
- */
- public function __construct()
- {
- parent::__construct();
+ /**
+ * Constructor
+ */
+ public function __construct()
+ {
+ parent::__construct();
- // Load models
- $this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
- $this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel');
- $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
- $this->load->model('organisation/Studienplan_model', 'StudienplanModel');
+ // Load models
+ $this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
+ $this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel');
+ $this->load->model('crm/Konto_model', 'KontoModel');
+ $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
+ $this->load->model('organisation/Studiengang_model', 'StudiengangModel');
+ $this->load->model('organisation/Studienplan_model', 'StudienplanModel');
- // Load helpers
- $this->load->helper('hlp_sancho_helper');
- }
+ // Load helpers
+ $this->load->helper('hlp_sancho_helper');
+ }
- /**
- * runReihungstestJob
- */
- public function runReihungstestJob()
- {
- // Get study plans that have no assigned placement tests yet
- $result = $this->ReihungstestModel->checkMissingReihungstest();
+ /**
+ * runReihungstestJob
+ */
+ public function runReihungstestJob()
+ {
+ // Get study plans that have no assigned placement tests yet
+ $result = $this->ReihungstestModel->checkMissingReihungstest();
$missing_rt_arr = array();
if (hasData($result))
@@ -38,8 +40,8 @@ class ReihungstestJob extends CLI_Controller
show_error(getError($result));
}
- // Get free places
- $result = $this->ReihungstestModel->getFreePlaces();
+ // Get free places
+ $result = $this->ReihungstestModel->getFreePlaces();
$free_places_arr = array();
if (hasData($result))
@@ -51,8 +53,8 @@ class ReihungstestJob extends CLI_Controller
show_error(getError($result));
}
- // Prepare data for mail template 'ReihungstestJob'
- $content_data_arr = $this->_getContentData($missing_rt_arr, $free_places_arr);
+ // Prepare data for mail template 'ReihungstestJob'
+ $content_data_arr = $this->_getContentData($missing_rt_arr, $free_places_arr);
// Send email in Sancho design
if (!empty($missing_rt_arr) || !empty($free_places_arr))
@@ -95,7 +97,7 @@ class ReihungstestJob extends CLI_Controller
// Get placement tests where registration date was yesterday
$result = $this->ReihungstestModel->checkReachedRegistrationDate($degreeProgram);
- $reachedRegistration_rt_arr = array();
+ $reachedRegistration_rt_arr = array();
if (hasData($result))
{
@@ -106,11 +108,11 @@ class ReihungstestJob extends CLI_Controller
show_error(getError($result));
}
- $applicants_arr = array();
+ $applicants_arr = array();
- foreach ($reachedRegistration_rt_arr as $reihungstest)
- {
- $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id);
+ foreach ($reachedRegistration_rt_arr as $reihungstest)
+ {
+ $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id);
if (hasData($applicants))
{
@@ -214,24 +216,24 @@ class ReihungstestJob extends CLI_Controller
// Get applicants that have been added to a test after Anmeldefrist
$result = $this->ReihungstestModel->getApplicantAssignedAfterDate($degreeProgram);
- $applicants_after_anmeldefrist_arr = array();
+ $applicants_after_anmeldefrist_arr = array();
- if (hasData($result))
- {
- $applicants_after_anmeldefrist_arr = $result->retval;
- }
- elseif (isError($result))
- {
- show_error(getError($result));
- }
+ if (hasData($result))
+ {
+ $applicants_after_anmeldefrist_arr = $result->retval;
+ }
+ elseif (isError($result))
+ {
+ show_error(getError($result));
+ }
- $studiengang = '';
- $mailReceipients = ''; // String with all mailadresses
- $mailcontent_data_arr = array();
- $headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
- $rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"';
- $mailcontent = '';
- $applicants_list = '';
+ $studiengang = '';
+ $mailReceipients = ''; // String with all mailadresses
+ $mailcontent_data_arr = array();
+ $headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
+ $rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"';
+ $mailcontent = '';
+ $applicants_list = '';
if (count($applicants_after_anmeldefrist_arr) > 0)
{
@@ -277,11 +279,11 @@ class ReihungstestJob extends CLI_Controller
';
- }
+ }
- $studiengang = $applicant->studiengang_kz;
- $mailReceipients .= $applicant->email . ';';
- $applicants_list .= '
+ $studiengang = $applicant->studiengang_kz;
+ $mailReceipients .= $applicant->email . ';';
+ $applicants_list .= '
' . date_format(date_create($applicant->datum), 'd.m.Y') . '
' . $applicant->uhrzeit . '
@@ -315,7 +317,7 @@ class ReihungstestJob extends CLI_Controller
}
/*
- * Sends an email to all applicants of a placement test to remind them 3 working days before
+ * Sends an email to all applicants of a placement test to remind them 2 working days before
*
* @param integer $degreeProgram. Kennzahl of Degree Program to check
* @param string $bcc. Optional. BCC-Mailadress to send the Mails to
@@ -341,66 +343,66 @@ class ReihungstestJob extends CLI_Controller
$from = urldecode($from);
}
- // Get placement tests with testdate within the next 2 weeks
- $resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14);
- if (hasData($resultNextTestDates))
- {
- $nextTestDates = $resultNextTestDates->retval;
- $enddate = '';
- // Loop through the dates
- foreach ($nextTestDates as $testDates)
- {
- $workingdays = 0;
- $testsOndate = array();
+ // Get placement tests with testdate within the next 2 weeks
+ $resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14);
+ if (hasData($resultNextTestDates))
+ {
+ $nextTestDates = $resultNextTestDates->retval;
+ $enddate = '';
+ // Loop through the dates
+ foreach ($nextTestDates as $testDates)
+ {
+ $workingdays = 0;
+ $testsOndate = array();
- // Deduct days till 3 working days are reached
- for ($i = 1; ; $i++)
- {
- if (isDateWorkingDay($testDates->datum, $i) === true)
- {
- $workingdays++;
- }
- if ($workingdays == 3)
- {
- $enddate = date("Y-m-d", strtotime("$testDates->datum -" . $i . " days"));
- break;
- }
- else
- {
- continue;
- }
- }
+ // Deduct days till 2 working days are reached
+ for ($i = 1; ; $i++)
+ {
+ if (isDateWorkingDay($testDates->datum, $i) === true)
+ {
+ $workingdays++;
+ }
+ if ($workingdays == 2)
+ {
+ $enddate = date("Y-m-d", strtotime("$testDates->datum -" . $i . " days"));
+ break;
+ }
+ else
+ {
+ continue;
+ }
+ }
- // If $enddate is today -> load all tests of $testDates->datum
- if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d'))
- {
- $resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram);
+ // If $enddate is today -> load all tests of $testDates->datum
+ if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d'))
+ {
+ $resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram);
- if (hasData($resultTestsOnDate))
- {
- $testsOndate = $resultTestsOnDate->retval;
- }
- elseif (isError($resultTestsOnDate))
- {
- show_error(getError($resultTestsOnDate));
- }
- }
+ if (hasData($resultTestsOnDate))
+ {
+ $testsOndate = $resultTestsOnDate->retval;
+ }
+ elseif (isError($resultTestsOnDate))
+ {
+ show_error(getError($resultTestsOnDate));
+ }
+ }
- if (!isEmptyArray($testsOndate))
- {
- foreach ($testsOndate as $reihungstest)
- {
- // Loads applicants of a test
- $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
+ if (!isEmptyArray($testsOndate))
+ {
+ foreach ($testsOndate as $reihungstest)
+ {
+ // Loads applicants of a test
+ $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
- if (hasData($applicants))
- {
- $applicants_arr = $applicants->retval;
- }
- elseif (isError($applicants))
- {
- show_error(getError($applicants));
- }
+ if (hasData($applicants))
+ {
+ $applicants_arr = $applicants->retval;
+ }
+ elseif (isError($applicants))
+ {
+ show_error(getError($applicants));
+ }
foreach ($applicants_arr as $applicant)
{
@@ -420,237 +422,237 @@ class ReihungstestJob extends CLI_Controller
$mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan;
}
- sendSanchoMail(
- 'Sancho_RemindApplicantsOfTest',
- $mailcontent_data_arr,
- $applicant->email,
- 'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder',
- DEFAULT_SANCHO_HEADER_IMG,
- DEFAULT_SANCHO_FOOTER_IMG,
- $from,
- '',
- $bcc);
- }
- }
- }
- }
- }
- }
+ sendSanchoMail(
+ 'Sancho_RemindApplicantsOfTest',
+ $mailcontent_data_arr,
+ $applicant->email,
+ 'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder',
+ DEFAULT_SANCHO_HEADER_IMG,
+ DEFAULT_SANCHO_FOOTER_IMG,
+ $from,
+ '',
+ $bcc);
+ }
+ }
+ }
+ }
+ }
+ }
- /**
- * This job sends eMail(s) to the relevant stg assistance(s) informing about:
- * All applicants, who have sent new applications AFTER they had absolved a
- * placement test in the actual studiensemester
- * AND who have been confirmed yesterday.
- */
- public function mailNewApplicants()
- {
- // Get yesterdays confirmed applicants for Bachelor-studies
- $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
- $this->PrestudentstatusModel->addSelect('
- tbl_person.person_id,
- tbl_prestudentstatus.prestudent_id,
- tbl_prestudent.studiengang_kz,
- tbl_prestudentstatus.studiensemester_kurzbz,
- tbl_prestudentstatus.bestaetigtam,
- tbl_prestudentstatus.bewerbung_abgeschicktamum
- ');
- $this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id');
- $this->PrestudentstatusModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
- $this->PrestudentstatusModel->addJoin('public.tbl_studiengangstyp', 'typ');
- $this->PrestudentstatusModel->addJoin('public.tbl_person', 'person_id');
+ /**
+ * This job sends eMail(s) to the relevant stg assistance(s) informing about:
+ * All applicants, who have sent new applications AFTER they had absolved a
+ * placement test in the actual studiensemester
+ * AND who have been confirmed yesterday.
+ */
+ public function mailNewApplicants()
+ {
+ // Get yesterdays confirmed applicants for Bachelor-studies
+ $this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
+ $this->PrestudentstatusModel->addSelect('
+ tbl_person.person_id,
+ tbl_prestudentstatus.prestudent_id,
+ tbl_prestudent.studiengang_kz,
+ tbl_prestudentstatus.studiensemester_kurzbz,
+ tbl_prestudentstatus.bestaetigtam,
+ tbl_prestudentstatus.bewerbung_abgeschicktamum
+ ');
+ $this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id');
+ $this->PrestudentstatusModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
+ $this->PrestudentstatusModel->addJoin('public.tbl_studiengangstyp', 'typ');
+ $this->PrestudentstatusModel->addJoin('public.tbl_person', 'person_id');
- $yesterdays_applicants_arr = $this->PrestudentstatusModel->loadWhere('
- status_kurzbz = \'Interessent\' AND
- typ = \'b\' AND
- bestaetigtam = current_date - 1
- ');
+ $yesterdays_applicants_arr = $this->PrestudentstatusModel->loadWhere('
+ status_kurzbz = \'Interessent\' AND
+ typ = \'b\' AND
+ bestaetigtam = current_date - 1
+ ');
- // Retrieve the person_ids of yesterdays confirmed applicants
- $person_id_arr = array();
- if (hasData($yesterdays_applicants_arr))
- {
- foreach ($yesterdays_applicants_arr->retval as $yesterdays_applicant)
- {
- if (isset($yesterdays_applicant->person_id)) {
- $person_id_arr[] = $yesterdays_applicant->person_id;
- }
- }
- }
- elseif (isError($yesterdays_applicants_arr))
- {
- show_error(getError($yesterdays_applicants_arr));
- }
+ // Retrieve the person_ids of yesterdays confirmed applicants
+ $person_id_arr = array();
+ if (hasData($yesterdays_applicants_arr))
+ {
+ foreach ($yesterdays_applicants_arr->retval as $yesterdays_applicant)
+ {
+ if (isset($yesterdays_applicant->person_id)) {
+ $person_id_arr[] = $yesterdays_applicant->person_id;
+ }
+ }
+ }
+ elseif (isError($yesterdays_applicants_arr))
+ {
+ show_error(getError($yesterdays_applicants_arr));
+ }
- // Get all other prestudenten of the given persons.
- if (!isEmptyArray($person_id_arr))
- {
- $this->load->model('crm/Prestudent_model', 'PrestudentModel');
- $this->PrestudentModel->addDistinct();
- $this->PrestudentModel->addSelect('
- person_id,
- tbl_reihungstest.studiensemester_kurzbz,
- tbl_reihungstest.reihungstest_id,
- (SELECT(tbl_reihungstest.datum::text || \' \' || tbl_reihungstest.uhrzeit::text)::timestamp) AS reihungstest_timestamp
- ');
- $this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
- $this->PrestudentModel->addJoin('public.tbl_studiengangstyp', 'typ');
- $this->PrestudentModel->addJoin('public.tbl_prestudentstatus', 'prestudent_id');
- $this->PrestudentModel->addJoin('public.tbl_person', 'person_id');
- $this->PrestudentModel->addJoin('public.tbl_rt_person', 'person_id');
- $this->PrestudentModel->addJoin('public.tbl_reihungstest', 'tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id');
+ // Get all other prestudenten of the given persons.
+ if (!isEmptyArray($person_id_arr))
+ {
+ $this->load->model('crm/Prestudent_model', 'PrestudentModel');
+ $this->PrestudentModel->addDistinct();
+ $this->PrestudentModel->addSelect('
+ person_id,
+ tbl_reihungstest.studiensemester_kurzbz,
+ tbl_reihungstest.reihungstest_id,
+ (SELECT(tbl_reihungstest.datum::text || \' \' || tbl_reihungstest.uhrzeit::text)::timestamp) AS reihungstest_timestamp
+ ');
+ $this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
+ $this->PrestudentModel->addJoin('public.tbl_studiengangstyp', 'typ');
+ $this->PrestudentModel->addJoin('public.tbl_prestudentstatus', 'prestudent_id');
+ $this->PrestudentModel->addJoin('public.tbl_person', 'person_id');
+ $this->PrestudentModel->addJoin('public.tbl_rt_person', 'person_id');
+ $this->PrestudentModel->addJoin('public.tbl_reihungstest', 'tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id');
- // Store them, if they have already absolved a placement test in the same study term they have applied for.
- $placement_absolvents_arr = $this->PrestudentModel->loadWhere('
- person_id IN (' . implode(', ', $person_id_arr) . ') AND
- typ = \'b\' AND
- teilgenommen = \'t\' AND
- tbl_reihungstest.studiensemester_kurzbz IN (
- SELECT
- studiensemester_kurzbz
- FROM
- public.tbl_studiensemester
- WHERE
- ende >= now()
- )
- ');
- }
+ // Store them, if they have already absolved a placement test in the same study term they have applied for.
+ $placement_absolvents_arr = $this->PrestudentModel->loadWhere('
+ person_id IN (' . implode(', ', $person_id_arr) . ') AND
+ typ = \'b\' AND
+ teilgenommen = \'t\' AND
+ tbl_reihungstest.studiensemester_kurzbz IN (
+ SELECT
+ studiensemester_kurzbz
+ FROM
+ public.tbl_studiensemester
+ WHERE
+ ende >= now()
+ )
+ ');
+ }
- // Store data to be send in the email-link
- $result_arr = array();
- foreach($yesterdays_applicants_arr->retval as $yesterdays_applicant)
- {
- foreach ($placement_absolvents_arr->retval as $placement_absolvent)
- {
- if ($yesterdays_applicant->person_id == $placement_absolvent->person_id &&
- $yesterdays_applicant->studiensemester_kurzbz == $placement_absolvent->studiensemester_kurzbz &&
- $yesterdays_applicant->bewerbung_abgeschicktamum >= $placement_absolvent->reihungstest_timestamp)
- {
- $obj = new stdClass();
- $obj->prestudent_id = $yesterdays_applicant->prestudent_id; // prestudent_id of the yesterdays applicant
- $obj->studiengang_kz = $yesterdays_applicant->studiengang_kz; // study program of interest of the yesterdays applicant
- $obj->reihungstest_id = $placement_absolvent->reihungstest_id; // reihungstest_id of absolved reihungstest of that person
+ // Store data to be send in the email-link
+ $result_arr = array();
+ foreach($yesterdays_applicants_arr->retval as $yesterdays_applicant)
+ {
+ foreach ($placement_absolvents_arr->retval as $placement_absolvent)
+ {
+ if ($yesterdays_applicant->person_id == $placement_absolvent->person_id &&
+ $yesterdays_applicant->studiensemester_kurzbz == $placement_absolvent->studiensemester_kurzbz &&
+ $yesterdays_applicant->bewerbung_abgeschicktamum >= $placement_absolvent->reihungstest_timestamp)
+ {
+ $obj = new stdClass();
+ $obj->prestudent_id = $yesterdays_applicant->prestudent_id; // prestudent_id of the yesterdays applicant
+ $obj->studiengang_kz = $yesterdays_applicant->studiengang_kz; // study program of interest of the yesterdays applicant
+ $obj->reihungstest_id = $placement_absolvent->reihungstest_id; // reihungstest_id of absolved reihungstest of that person
- $result_arr[]= $obj;
- }
- }
- }
+ $result_arr[]= $obj;
+ }
+ }
+ }
- // Sort by STG. This is important to send the mails clustered by STG to the different STG assistances.
- usort($result_arr, function ($a, $b)
- {
- if ($a->studiengang_kz == $b->studiengang_kz) {
- return 0;
- }
- return ($a->studiengang_kz < $b->studiengang_kz) ? -1 : 1;
- });
+ // Sort by STG. This is important to send the mails clustered by STG to the different STG assistances.
+ usort($result_arr, function ($a, $b)
+ {
+ if ($a->studiengang_kz == $b->studiengang_kz) {
+ return 0;
+ }
+ return ($a->studiengang_kz < $b->studiengang_kz) ? -1 : 1;
+ });
- $to = ''; // mail recipient (stg assistance)
- $content_arr = array(); // url paths to the new applicants
- $base_link = base_url('vilesci/stammdaten/auswertung_fhtw.php');
+ $to = ''; // mail recipient (stg assistance)
+ $content_arr = array(); // url paths to the new applicants
+ $base_link = base_url('vilesci/stammdaten/auswertung_fhtw.php');
- $i = 0; // loop counter
- $len = count($result_arr);
+ $i = 0; // loop counter
+ $len = count($result_arr);
- // Loop trough list of new applicants
- foreach($result_arr as $result)
- {
- $studiengang = $this->StudiengangModel->load($result->studiengang_kz);
- $mail_stg_assistance = $studiengang->retval[0]->email;
+ // Loop trough list of new applicants
+ foreach($result_arr as $result)
+ {
+ $studiengang = $this->StudiengangModel->load($result->studiengang_kz);
+ $mail_stg_assistance = $studiengang->retval[0]->email;
- // If first loop
- if ($i == 0)
- {
- $to = $mail_stg_assistance; // set recipient initially
- }
+ // If first loop
+ if ($i == 0)
+ {
+ $to = $mail_stg_assistance; // set recipient initially
+ }
- // If new study is encountered but is not the first loop
- if ($to != $mail_stg_assistance && $i != 0)
- {
- // Prepare content for mail template
- $content_data_arr = $this->_getContentDataNewApplicant($content_arr);
+ // If new study is encountered but is not the first loop
+ if ($to != $mail_stg_assistance && $i != 0)
+ {
+ // Prepare content for mail template
+ $content_data_arr = $this->_getContentDataNewApplicant($content_arr);
- // Send mail
- sendSanchoMail(
- 'BewerberNachReihungstest',
- $content_data_arr,
- $to,
- 'Neue Bewerbungen nach absolviertem Reihungstest',
- 'sancho_header_min_bw.jpg',
- 'sancho_footer_min_bw.jpg'
- );
+ // Send mail
+ sendSanchoMail(
+ 'BewerberNachReihungstest',
+ $content_data_arr,
+ $to,
+ 'Neue Bewerbungen nach absolviertem Reihungstest',
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg'
+ );
- // Reset content for new study applicants & reset recipient (new stg assistance)
- $content_arr = array($base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id);
- $to = $mail_stg_assistance;
- }
- // If same study
- else
- {
- // just add content
- $content_arr[]= $base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id; // add to content
- }
+ // Reset content for new study applicants & reset recipient (new stg assistance)
+ $content_arr = array($base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id);
+ $to = $mail_stg_assistance;
+ }
+ // If same study
+ else
+ {
+ // just add content
+ $content_arr[]= $base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id; // add to content
+ }
- // If last loop
- if (($i == $len - 1))
- {
- // Prepare content for mail template
- $content_data_arr = $this->_getContentDataNewApplicant($content_arr);
+ // If last loop
+ if (($i == $len - 1))
+ {
+ // Prepare content for mail template
+ $content_data_arr = $this->_getContentDataNewApplicant($content_arr);
- // Send mail
- sendSanchoMail(
- 'BewerberNachReihungstest',
- $content_data_arr,
- $to,
- 'Neue Bewerbungen nach absolviertem Reihungstest',
- 'sancho_header_min_bw.jpg',
- 'sancho_footer_min_bw.jpg'
- );
- }
- $i++; // iterate counter
- }
- }
+ // Send mail
+ sendSanchoMail(
+ 'BewerberNachReihungstest',
+ $content_data_arr,
+ $to,
+ 'Neue Bewerbungen nach absolviertem Reihungstest',
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg'
+ );
+ }
+ $i++; // iterate counter
+ }
+ }
- // ------------------------------------------------------------------------
- // Private methods
- /**
- * Returns associative array with data as needed in the reihungstest job template.
- * @param array $missing_rt_arr Array with studienpläne, which have no assigned placement tests.
- * @param array $free_places_arr Array with info and amount of free placement test places.
- * @return array
- */
- private function _getContentData($missing_rt_arr, $free_places_arr)
- {
- $style_tbl1 = ' cellpadding="0" cellspacing="10" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
- $style_tbl2 = ' cellpadding="0" cellspacing="20" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
+ // ------------------------------------------------------------------------
+ // Private methods
+ /**
+ * Returns associative array with data as needed in the reihungstest job template.
+ * @param array $missing_rt_arr Array with studienpläne, which have no assigned placement tests.
+ * @param array $free_places_arr Array with info and amount of free placement test places.
+ * @return array
+ */
+ private function _getContentData($missing_rt_arr, $free_places_arr)
+ {
+ $style_tbl1 = ' cellpadding="0" cellspacing="10" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
+ $style_tbl2 = ' cellpadding="0" cellspacing="20" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
- // Prepare HTML table with study plans that have no placement tests yet
- if (!empty($missing_rt_arr)) {
- $studienplan_list
- = '
+ // Prepare HTML table with study plans that have no placement tests yet
+ if (!empty($missing_rt_arr)) {
+ $studienplan_list
+ = '
';
- foreach ($missing_rt_arr as $rt) {
- $studienplan_list .= '
+ foreach ($missing_rt_arr as $rt) {
+ $studienplan_list .= '
' . $rt->bezeichnung . '
';
- }
+ }
- $studienplan_list .= '
+ $studienplan_list .= '
';
- } else {
- $studienplan_list = '
+ } else {
+ $studienplan_list = '
Alles okay! Alle Studienpläne haben zumindest einen Reihungstest.
';
- }
+ }
- // Prepare HTML table with information and amount of free places
- if (!empty($free_places_arr)) {
- $freie_plaetze_list = '
+ // Prepare HTML table with information and amount of free places
+ if (!empty($free_places_arr)) {
+ $freie_plaetze_list = '
Fakultät
@@ -659,67 +661,67 @@ class ReihungstestJob extends CLI_Controller
';
- foreach ($free_places_arr as $free_place) {
- $datum = new DateTime($free_place->datum);
- $style_alarm = ($free_place->freie_plaetze <= 5) ? ' style=" color: red; font-weight: bold" ' : ''; // mark if <=5 free places
+ foreach ($free_places_arr as $free_place) {
+ $datum = new DateTime($free_place->datum);
+ $style_alarm = ($free_place->freie_plaetze <= 5) ? ' style=" color: red; font-weight: bold" ' : ''; // mark if <=5 free places
- $freie_plaetze_list .= '
+ $freie_plaetze_list .= '
' . $free_place->fakultaet . '
' . $datum->format('d.m.Y') . '
' . $free_place->freie_plaetze . '
';
- }
+ }
- $freie_plaetze_list .= '
+ $freie_plaetze_list .= '
';
- } else {
- $freie_plaetze_list = '
+ } else {
+ $freie_plaetze_list = '
Es gibt heute keine Ergebnisse zu freien Reihungstestplätze.
';
- }
+ }
- // Set associative array with the prepared HTML tables and URL be used by the template's variables
- $content_data_arr['studienplan_list'] = $studienplan_list;
- $content_data_arr['freie_plaetze_list'] = $freie_plaetze_list;
- $content_data_arr['link'] = site_url('/organisation/Reihungstest');
+ // Set associative array with the prepared HTML tables and URL be used by the template's variables
+ $content_data_arr['studienplan_list'] = $studienplan_list;
+ $content_data_arr['freie_plaetze_list'] = $freie_plaetze_list;
+ $content_data_arr['link'] = site_url('/organisation/Reihungstest');
- return $content_data_arr;
- }
+ return $content_data_arr;
+ }
- /**
- * Returns associative array with data as needed in the BewerberNachReihungstest-template.
- * @param array $content_arr Array with links to the testtool evaluation page of the new applicants.
- * @return array
- */
- private function _getContentDataNewApplicant($content_arr)
- {
- $content = '';
- $counter = 1;
- foreach ($content_arr as $row)
- {
- $content .= ' Link zu: Bewerber '. $counter. ' ';
- $counter++;
- }
+ /**
+ * Returns associative array with data as needed in the BewerberNachReihungstest-template.
+ * @param array $content_arr Array with links to the testtool evaluation page of the new applicants.
+ * @return array
+ */
+ private function _getContentDataNewApplicant($content_arr)
+ {
+ $content = '';
+ $counter = 1;
+ foreach ($content_arr as $row)
+ {
+ $content .= ' Link zu: Bewerber '. $counter. ' ';
+ $counter++;
+ }
- $content_data_arr['link'] = $content;
- return $content_data_arr;
- }
+ $content_data_arr['link'] = $content;
+ return $content_data_arr;
+ }
- /**
- * Checks the upcoming placement tests if there are correct studyplans assigned
- * If there are invalid studyplans assigned (outdated because there exists a new version),
- * it tries to find a better one and assigns it additionaly
- */
- public function correctStudienplan()
- {
- // get all placement tests with incorrect studyplan
- $qry = "
+ /**
+ * Checks the upcoming placement tests if there are correct studyplans assigned
+ * If there are invalid studyplans assigned (outdated because there exists a new version),
+ * it tries to find a better one and assigns it additionaly
+ */
+ public function correctStudienplan()
+ {
+ // get all placement tests with incorrect studyplan
+ $qry = "
SELECT
tbl_reihungstest.reihungstest_id,
tbl_studienplan.studienplan_id,
@@ -752,37 +754,300 @@ class ReihungstestJob extends CLI_Controller
)
";
- $db = new DB_Model();
- $result_rt = $db->execReadOnlyQuery($qry);
+ $db = new DB_Model();
+ $result_rt = $db->execReadOnlyQuery($qry);
- if (hasdata($result_rt)) {
- foreach ($result_rt->retval as $row_rt) {
- // find an active studyplan for the same degree program with is valid in this semester
- $result_stpl = $this->StudienplanModel->getStudienplaeneBySemester(
- $row_rt->studiengang_kz,
- $row_rt->studiensemester_kurzbz
- );
+ if (hasdata($result_rt)) {
+ foreach ($result_rt->retval as $row_rt) {
+ // find an active studyplan for the same degree program with is valid in this semester
+ $result_stpl = $this->StudienplanModel->getStudienplaeneBySemester(
+ $row_rt->studiengang_kz,
+ $row_rt->studiensemester_kurzbz
+ );
- if (hasData($result_stpl)) {
- foreach ($result_stpl->retval as $row_stpl) {
- // Add new Studyplan to RtStudienplan if missing
- $rt_studienplan = $this->RtStudienplanModel->loadWhere(array(
- "reihungstest_id" => $row_rt->reihungstest_id,
- "studienplan_id" => $row_stpl->studienplan_id
- ));
+ if (hasData($result_stpl)) {
+ foreach ($result_stpl->retval as $row_stpl) {
+ // Add new Studyplan to RtStudienplan if missing
+ $rt_studienplan = $this->RtStudienplanModel->loadWhere(array(
+ "reihungstest_id" => $row_rt->reihungstest_id,
+ "studienplan_id" => $row_stpl->studienplan_id
+ ));
- if (!hasData($rt_studienplan)) {
- echo "\nAdding StudienplanId: $row_stpl->studienplan_id";
- echo " to ReihungstestId: $row_rt->reihungstest_id";
+ if (!hasData($rt_studienplan)) {
+ echo "\nAdding StudienplanId: $row_stpl->studienplan_id";
+ echo " to ReihungstestId: $row_rt->reihungstest_id";
- $this->RtStudienplanModel->insert(array(
- "reihungstest_id" => $row_rt->reihungstest_id,
- "studienplan_id" => $row_stpl->studienplan_id
- ));
- }
- }
- }
- }
- }
- }
+ $this->RtStudienplanModel->insert(array(
+ "reihungstest_id" => $row_rt->reihungstest_id,
+ "studienplan_id" => $row_stpl->studienplan_id
+ ));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * Cronjob for priorisation process of FHTW
+ *
+ * Wenn ein Student in einer höheren Prio aufgenommen wird, werden die anderen Bewerbungen auf "Abgewiesen" gesetzt,
+ * solang diese noch im Status "Bewerber" sind.
+ * Andernfalls wird eine Mail an die niedrigeren Prios verschickt, dass eine höhere Prio aufgenommen hat
+ * Die Kaution wird automatisch gebucht
+ *
+ * @param string $bcc. Optional. BCC-Mailadress to send the Mails to
+ * @param string $from. Optional. Sender-Mailadress shown to recipient
+ */
+ public function prioritizationJob($bcc = null, $from = null)
+ {
+ $qry = " SELECT DISTINCT
+ get_rolle_prestudent (tbl_prestudent.prestudent_id, 'WS2020') AS laststatus, /* Todo: Studiensemester dynamisch ermitteln oder als Parameter */
+ tbl_prestudentstatus.studiensemester_kurzbz,
+ tbl_prestudent.*
+ FROM PUBLIC.tbl_person
+ JOIN PUBLIC.tbl_prestudent USING (person_id)
+ JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id)
+ JOIN lehre.tbl_studienplan USING (studienplan_id)
+ JOIN lehre.tbl_studienordnung USING (studienordnung_id)
+ JOIN PUBLIC.tbl_studiengang ON (tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz)
+ WHERE tbl_prestudentstatus.datum >= (SELECT CURRENT_DATE -1)
+ AND get_rolle_prestudent (tbl_prestudent.prestudent_id, 'WS2020') IN ('Aufgenommener','Bewerber','Wartender')
+ AND studiensemester_kurzbz = 'WS2020' /* Todo: Studiensemester dynamisch ermitteln oder als Parameter */
+ AND tbl_studiengang.typ = 'b'
+ ORDER BY studiengang_kz, laststatus
+ ";
+
+ // Encode Params
+ if ($bcc != '')
+ {
+ // $bcc can be given as null-string, so check that too
+ if ($bcc == 'null')
+ {
+ $bcc = '';
+ }
+ else
+ {
+ $bcc = urldecode($bcc);
+ }
+ }
+ if ($from != '')
+ {
+ $from = urldecode($from);
+ }
+
+ $db = new DB_Model();
+ $result_prestudents = $db->execReadOnlyQuery($qry);
+ $mailArray = array();
+
+ if (hasdata($result_prestudents))
+ {
+ foreach ($result_prestudents->retval as $row_ps)
+ {
+ // Wenn der letzte Status "Aufgenommener" ist, alle niedrigeren Prios auf "Abgewiesen" setzen
+ // falls diese Bewerber oder Warteliste sind
+ // Danach Kaution einbuchen
+ if ($row_ps->laststatus == 'Aufgenommener')
+ {
+ // Alle niedrigeren Prios laden
+ $qryNiedrPrios = "
+ SELECT DISTINCT
+ get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') AS laststatus,
+ tbl_studienplan.orgform_kurzbz,
+ tbl_person.nachname,
+ tbl_person.vorname,
+ tbl_prestudent.*
+ FROM PUBLIC.tbl_person
+ JOIN PUBLIC.tbl_prestudent USING (person_id)
+ JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id)
+ JOIN lehre.tbl_studienplan USING (studienplan_id)
+ JOIN PUBLIC.tbl_studiengang ON (tbl_prestudent.studiengang_kz = tbl_studiengang.studiengang_kz)
+ WHERE tbl_prestudent.person_id = ".$row_ps->person_id."
+ AND tbl_prestudent.prestudent_id != ".$row_ps->prestudent_id."
+ AND get_rolle_prestudent (tbl_prestudent.prestudent_id, '".$row_ps->studiensemester_kurzbz."') IN ('Aufgenommener','Bewerber','Wartender')
+ AND studiensemester_kurzbz = '".$row_ps->studiensemester_kurzbz."'
+ AND tbl_studiengang.typ = 'b'
+ AND priorisierung > ".$row_ps->priorisierung."
+ ORDER BY studiengang_kz, laststatus
+ ";
+
+ $resultNiedrPrios = $db->execReadOnlyQuery($qryNiedrPrios);
+
+ if (hasdata($resultNiedrPrios))
+ {
+ foreach ($resultNiedrPrios->retval as $rowNiedrPrios)
+ {
+ if ($rowNiedrPrios->laststatus == 'Bewerber')
+ {
+ // Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
+ $lastStatus = $this->PrestudentstatusModel->getLastStatus($rowNiedrPrios->prestudent_id);
+
+ $result = $this->PrestudentstatusModel->insert(
+ array(
+ 'prestudent_id' => $rowNiedrPrios->prestudent_id,
+ 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz,
+ 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester,
+ 'datum' => date('Y-m-d'),
+ 'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz,
+ 'studienplan_id' => $lastStatus->retval[0]->studienplan_id,
+ 'status_kurzbz' => 'Abgewiesener',
+ 'statusgrund_id' => 5,
+ 'insertvon' => 'prioritizationJob',
+ 'insertamum' => date('Y-m-d H:i:s')
+ )
+ );
+ if (isSuccess($result))
+ {
+ // Derzeit nur Info an Admins schicken, wenn er Bewerber war
+ $mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AbgewiesenWeilBewerber'][]
+ = $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
+ }
+ }
+ elseif ($rowNiedrPrios->laststatus == 'Wartender')
+ {
+ // Abgewiesenen-Status mit Statusgrund "Aufnahme anderer Studiengang" (ID 5) setzen
+ // Mail zur Info an Assistenz schicken
+ $lastStatus = $this->PrestudentstatusModel->getLastStatus($rowNiedrPrios->prestudent_id);
+
+ $result = $this->PrestudentstatusModel->insert(
+ array(
+ 'prestudent_id' => $rowNiedrPrios->prestudent_id,
+ 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz,
+ 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester,
+ 'datum' => date('Y-m-d'),
+ 'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz,
+ 'studienplan_id' => $lastStatus->retval[0]->studienplan_id,
+ 'status_kurzbz' => 'Abgewiesener',
+ 'statusgrund_id' => 5,
+ 'insertvon' => 'prioritizationJob',
+ 'insertamum' => date('Y-m-d H:i:s')
+ )
+ );
+ if (isSuccess($result))
+ {
+ $mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AbgewiesenGesetztWartender'][]
+ = $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
+ }
+ }
+ elseif ($rowNiedrPrios->laststatus == 'Aufgenommener')
+ {
+ // Mail zur Info an Assistenz schicken, dass in höherer Prio aufgenommen wurde
+ $mailArray[$rowNiedrPrios->studiengang_kz][$rowNiedrPrios->orgform_kurzbz]['AufnahmeHoeherePrio'][]
+ = $rowNiedrPrios->nachname.' '.$rowNiedrPrios->vorname.' ('.$rowNiedrPrios->prestudent_id.')';
+ }
+ }
+ }
+
+ // Kaution einbuchen für $row_ps->prestudent_id
+ // Vorher prüfen, ob schon eine Kaution gebucht ist
+ // Todo: Betrag automatisch aus tbl_buchungstyp laden
+
+ $qryKautionExists = "
+ SELECT count(*) as anzahl
+ FROM public.tbl_konto
+ WHERE person_id = ".$row_ps->person_id."
+ AND studiensemester_kurzbz = '".$row_ps->studiensemester_kurzbz."'
+ AND buchungstyp_kurzbz = 'Kaution'";
+
+ $resultKautionExists = $db->execReadOnlyQuery($qryKautionExists);
+ if (hasdata($resultKautionExists))
+ {
+ if ($resultKautionExists->retval[0]->anzahl == '0')
+ {
+ // Todo: Zahlungsreferenz generieren (StudiengangsOE+Buchungsnummer)
+ $this->KontoModel->insert(array(
+ "person_id" => $row_ps->person_id,
+ "studiengang_kz" => $row_ps->studiengang_kz,
+ "studiensemester_kurzbz" => $row_ps->studiensemester_kurzbz,
+ "betrag" => -150,
+ "buchungsdatum" => date('Y-m-d'),
+ "buchungstext" => 'Kaution',
+ "buchungstyp_kurzbz" => 'Kaution',
+ "insertvon" => 'prioritizationJob',
+ "insertamum" => date('Y-m-d H:i:s')
+ ));
+ }
+ }
+ }
+ }
+ }
+
+ // Mails senden
+ if (!isEmptyArray($mailArray))
+ {
+ foreach ($mailArray AS $stg=>$orgform)
+ {
+ $studiengang = $this->StudiengangModel->load($stg);
+ $mailcontent = '';
+
+ foreach ($orgform AS $art=>$value)
+ {
+ // Orgform nur dazu schreiben, wenn es mehr als Eine gibt
+ if (count($orgform) > 1)
+ {
+ $mailcontent .= 'Orgform '.$art.'
';
+ }
+ if (isset($value['AbgewiesenGesetztWartender']) && !isEmptyArray($value['AbgewiesenGesetztWartender']))
+ {
+ $mailcontent .= '
+ Folgende Personen auf der Warteliste wurden in einem höher priorisierten Studiengang aufgenommen und haben deshalb einen Status "Abgewiesen" erhalten:
';
+ $mailcontent .= '';
+ //$mailcontent .= 'Zuvor Warteliste ';
+ $mailcontent .= ' ';
+ sort($value['AbgewiesenGesetztWartender']);
+ foreach ($value['AbgewiesenGesetztWartender'] AS $key=>$bewerber)
+ {
+ $mailcontent .= ''.$bewerber.' ';
+ }
+ $mailcontent .= '
';
+ }
+ if (isset($value['AufnahmeHoeherePrio']) && !isEmptyArray($value['AufnahmeHoeherePrio']))
+ {
+ $mailcontent .= '
+ Folgende Aufgenommene wurden in einem höher priorisierten Studiengang aufgenommen:
';
+ $mailcontent .= '';
+ //$mailcontent .= 'Aufgenommene ';
+ $mailcontent .= ' ';
+ sort($value['AufnahmeHoeherePrio']);
+ foreach ($value['AufnahmeHoeherePrio'] AS $key=>$bewerber)
+ {
+ $mailcontent .= ''.$bewerber.' ';
+ }
+ $mailcontent .= '
';
+ }
+ if ($bcc != '' && isset($value['AbgewiesenWeilBewerber']) && !isEmptyArray($value['AbgewiesenWeilBewerber']))
+ {
+ $mailcontent .= '
+ Folgende BewerberInnen wurden zu Abgewiesenen gemacht:
';
+ $mailcontent .= '';
+ //$mailcontent .= 'Aufgenommene ';
+ $mailcontent .= ' ';
+ sort($value['AbgewiesenWeilBewerber']);
+ foreach ($value['AbgewiesenWeilBewerber'] AS $key => $bewerber)
+ {
+ $mailcontent .= ''.$bewerber.' ';
+ }
+ $mailcontent .= '
';
+ }
+ }
+
+ $mailcontent_data_arr['table'] = $mailcontent;
+
+ // Send email in Sancho design
+ if (!isEmptyString($mailcontent))
+ {
+ sendSanchoMail(
+ 'Sancho_ReihungstestteilnehmerJob',
+ $mailcontent_data_arr,
+ $studiengang->retval[0]->email,
+ 'Status Abgewiesen gesetzt',
+ 'sancho_header_min_bw.jpg',
+ 'sancho_footer_min_bw.jpg',
+ $from,
+ '',
+ $bcc);
+ }
+ }
+ }
+ }
}
diff --git a/application/controllers/system/Phrases.php b/application/controllers/system/Phrases.php
index f589eaeb2..2bb003567 100644
--- a/application/controllers/system/Phrases.php
+++ b/application/controllers/system/Phrases.php
@@ -161,7 +161,7 @@ class Phrases extends Auth_Controller
$phrase_inhalt = $this->phraseslib->insertPhraseinhalt($data);
if ($phrase_inhalt->error)
- show_error(getError($phrase_inhalt);
+ show_error(getError($phrase_inhalt));
$phrase_inhalt_id = $phrase_inhalt->retval;
diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php
index 29128a05d..92636e6df 100644
--- a/application/controllers/system/infocenter/InfoCenter.php
+++ b/application/controllers/system/infocenter/InfoCenter.php
@@ -69,6 +69,7 @@ class InfoCenter extends Auth_Controller
// Name of Interessentenstatus
const INTERESSENTSTATUS = 'Interessent';
const ABGEWIESENERSTATUS = 'Abgewiesener';
+ const BEWERBERSTATUS = 'Bewerber';
// Statusgruende for which no Studiengangsfreigabemessage should be sent
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
@@ -493,7 +494,9 @@ class InfoCenter extends Auth_Controller
$logdata = $this->_getPersonAndStudiengangFromPrestudent($prestudent_id);
- $akteresult = $this->AkteModel->loadWhere(array('person_id' => $logdata['person_id'], 'formal_geprueft_amum !=' => NULL));
+ $person_id = $logdata['person_id'];
+
+ $akteresult = $this->AkteModel->loadWhere(array('person_id' => $person_id, 'formal_geprueft_amum !=' => NULL));
if (hasData($lastStatus) && isSuccess($akteresult))
{
@@ -529,6 +532,8 @@ class InfoCenter extends Auth_Controller
if (isSuccess($result))
{
$this->load->model('crm/Dokumentprestudent_model', 'DokumentprestudentModel');
+ $json->retval['nonCriticalErrors'] = array();
+ $json->retval['infoMessages'] = array();
//set documents which have been formal geprüft to accepted
$dokument_kurzbzs = array();
@@ -542,7 +547,7 @@ class InfoCenter extends Auth_Controller
// acceptresult returns null if no documents to accept
if ($acceptresult !== null && isError($acceptresult))
- $json->retval['nonCriticalErrors'] = 'error when accepting documents in FAS';
+ $json->retval['nonCriticalErrors'][] = 'error when accepting documents in FAS';
$logparams = array($prestudent_id, $logdata['studiengang_kurzbz'], '');
@@ -554,8 +559,69 @@ class InfoCenter extends Auth_Controller
if (hasData($statusgrund_kurzbz))
$logparams[2] = ', confirmation type '.$statusgrund_kurzbz->retval[0]->bezeichnung_mehrsprachig[0];
}
+ else
+ {
+ // check if there is already a Bewerberstatus and Reihungsverfahren already absolviert
+ $bewerber = $this->PersonModel->hasBewerber($person_id, $lastStatus->studiensemester_kurzbz, 'b');
- $this->_log($logdata['person_id'], 'freigegeben', $logparams);
+ if (hasData($bewerber))
+ {
+ $bewerbercnt = getData($bewerber);
+
+ if (is_numeric($bewerbercnt[0]->anzahl_bewerber) && $bewerbercnt[0]->anzahl_bewerber > 0)
+ {
+ // then insert Bewerberstatus and rt absolviert, teilgenommen for prestudent
+ $bewerberresult = $this->PrestudentstatusModel->insert(
+ array(
+ 'prestudent_id' => $prestudent_id,
+ 'status_kurzbz' => self::BEWERBERSTATUS,
+ 'studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz,
+ 'ausbildungssemester' => $lastStatus->ausbildungssemester,
+ 'datum' => date('Y-m-d'),
+ 'orgform_kurzbz' => $lastStatus->orgform_kurzbz,
+ 'studienplan_id' => $lastStatus->studienplan_id,
+ 'insertvon' => $this->_uid,
+ 'insertamum' => date('Y-m-d H:i:s')
+ )
+ );
+
+ if (isError($bewerberresult))
+ $json->retval['nonCriticalErrors'][] = 'error when inserting Bewerberstatus';
+
+ $rtangetretenres = $this->PrestudentModel->update(
+ $prestudent_id,
+ array(
+ 'reihungstestangetreten' => true
+ )
+ );
+
+ if (isError($rtangetretenres))
+ {
+ $json->retval['nonCriticalErrors'][] = 'error when setting reihungstestangetreten';
+ }
+ else
+ {
+ $json->retval['infoMessages'][] = $this->p->t('infocenter', 'rtPunkteEintragenInfo');
+ $this->load->model('crm/RtPerson_model', 'RtPersonModel');
+
+ $rtteilgenommenres = $this->RtPersonModel->update(
+ array(
+ 'person_id' => $person_id,
+ 'studienplan_id' => $lastStatus->studienplan_id
+ ),
+ array(
+ 'teilgenommen' => true
+ )
+ );
+
+ if (isError($rtteilgenommenres))
+ $json->retval['nonCriticalErrors'][] = 'error when setting reihungstest teilgenommen';
+ }
+ }
+ }
+ }
+
+ $this->_log($person_id, 'freigegeben', $logparams);
$this->_sendFreigabeMail($prestudent_id);
}
@@ -1496,7 +1562,7 @@ class InfoCenter extends Auth_Controller
}
/**
- * Sends infomail with prestudent and person data when Prestudent is freigegeben
+ * Sends infomail to Studiengang with prestudent and person data when Prestudent is freigegeben
* @param $prestudent_id
*/
private function _sendFreigabeMail($prestudent_id)
diff --git a/application/controllers/system/messages/Messages.php b/application/controllers/system/messages/Messages.php
index 7b48b1fcf..296022ca4 100644
--- a/application/controllers/system/messages/Messages.php
+++ b/application/controllers/system/messages/Messages.php
@@ -92,9 +92,9 @@ class Messages extends Auth_Controller
*/
public function parseMessageText()
{
- $receiver_id = $this->input->get('receiver_id');
- $text = $this->input->get('text');
- $type = $this->input->get('type');
+ $receiver_id = $this->input->post('receiver_id');
+ $text = $this->input->post('text');
+ $type = $this->input->post('type');
if ($type == Messages_model::TYPE_PERSONS)
{
diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php
index 3a8f133cf..fd2051f48 100644
--- a/application/libraries/MessageLib.php
+++ b/application/libraries/MessageLib.php
@@ -15,6 +15,7 @@ class MessageLib
const CFG_OU_RECEIVERS = 'ou_receivers';
const CFG_OU_RECEIVERS_NO_NOTICE = 'ou_receivers_no_notice';
const CFG_OU_RECEIVERS_PRIVATE = 'ou_receivers_private';
+ const CFG_OU_FUNCTION_WHITELIST = 'ou_function_whitelist';
const CFG_REDIRECT_VIEW_MESSAGE_URL = 'redirect_view_message_url';
// Templates names
@@ -26,8 +27,6 @@ class MessageLib
const EMAIL_KONTAKT_TYPE = 'email'; // Email kontakt type
const SENT_INFO_NEWLINE = '\n'; // tbl_msg_recipient->sentInfo separator
- const ALT_OE = 'infocenter'; // alternative organisation unit when no one is found for a presetudent
-
private $_ci;
/**
@@ -139,27 +138,31 @@ class MessageLib
// Public methods called by a job
/**
- * Gets all NOT sent messages from DB and sends for each of them the notice email
- * Does not return anything, it logs info and errors on CI logs and in tbl_msg_recipient table
+ * Gets all messages for which notice emails are still not sent from DB and sends for each of them the notice email
* Wrapper for _sendNoticeEmail.
*/
- public function sendAllEmailNotices($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem)
+ public function sendAllEmailNotices($since, $numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem)
{
// Overrides MailLib configs with the given parameters
$this->_ci->maillib->overrideConfigs($numberToSent, $numberPerTimeRange, $emailTimeRange, $emailFromSystem);
- // Retrieves a certain amount of NOT sent messages, the amount is given by maillib->email_number_to_sent
- $messagesResult = $this->_ci->RecipientModel->getMessages(
- self::EMAIL_KONTAKT_TYPE,
- null,
- $this->_ci->maillib->getEmailNumberToSent()
+ // Retrieves a certain amount of NOT sent messages
+ $messagesResult = $this->_ci->RecipientModel->getNotSentMessages(
+ $this->_ci->maillib->getEmailNumberToSent(),
+ $since
);
- if (isError($messagesResult)) terminateWithError(getData($messagesResult)); // If an error occurred then log it and terminate
+ if (isError($messagesResult) || !hasData($messagesResult)) return $messagesResult;
- $sendNotice = $this->_sendNoticeEmails(getData($messagesResult));
+ // Collects all the message ids in an array
+ $messageIds = array();
+ foreach (getData($messagesResult) as $message)
+ {
+ $messageIds[] = $message->message_id;
+ }
- if (isError($sendNotice)) terminateWithError(getData($sendNotice)); // If an error occurred then log it and terminate
+ // Send'em all
+ return $this->_sendNoticeEmails($messageIds);
}
//------------------------------------------------------------------------------------------------------------------
@@ -221,13 +224,20 @@ class MessageLib
$this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
// Retrieves organisation units for a user from database
- $benutzer = $this->_ci->BenutzerfunktionModel->getByPersonId($sender_id);
+ $benutzer = $this->_ci->BenutzerfunktionModel->getActiveFunctionsByPersonId($sender_id);
if (isSuccess($benutzer)) // if everything is ok
{
$ouArray = array();
// Copies organisation units in $ouArray array
- foreach (getData($benutzer) as $val) $ouArray[] = $val->oe_kurzbz;
+ foreach (getData($benutzer) as $val)
+ {
+ // If the function is in the white list then get the organisation unit
+ if (in_array($val->funktion_kurzbz, $this->_ci->config->item(self::CFG_OU_FUNCTION_WHITELIST)))
+ {
+ $ouArray[] = $val->oe_kurzbz;
+ }
+ }
return success($ouArray);
}
@@ -494,7 +504,7 @@ class MessageLib
* Stores the type of error in 'sentinfo' column keeping en eventual previous error
* sent column is set to null
*/
- private function _setSentError($message_id, $receiver_id, $sentInfo, $prevSentInfo)
+ private function _updatedRecipientNoticeEmailInfo($message_id, $receiver_id, $sentInfo, $prevSentInfo)
{
if (!isEmptyString($prevSentInfo))
{
@@ -759,15 +769,15 @@ class MessageLib
if (!$sent)
{
// Set in database why this email is NOT going to be send
- $sse = $this->_setSentError(
+ $sse = $this->_updatedRecipientNoticeEmailInfo(
$messageData->message_id,
$messageData->receiver_id,
- 'An error occurred while sending the notice email',
- $messageData->sentinfo
+ 'An error occurred while sending the notice email', // current info
+ $messageData->sentinfo // previous info
);
// If database error occurred then return it, otherwise return a logic error
- return isError($sse) ? $sse : error('An error occurred while sending the notice email');
+ return isError($sse) ? $sse : error('An error occurred while updating the recipient notice email info');
}
else // success!
{
@@ -776,6 +786,27 @@ class MessageLib
if (isError($sss)) return $sss; // If database error occurred then return it
}
}
+ else // Because was not possible to find a valid contact
+ {
+ $reason = 'Was not possible to find a valid contact for this user'; // default reason
+
+ // In case that the organisation unit does not receive any email notices
+ if (!isEmptyString($messageData->receiver_ou)) $reason = 'This organization unit does not receive email notices';
+
+ // In case that a degree program sent a message to a user without a valid contact or UID
+ if (!isEmptyString($messageData->sender_ou)) $reason = 'Sent from a degree program to a user that does not have a valid UID or a valid contact';
+
+ // Set in database why this email is NOT going to be send
+ $sse = $this->_updatedRecipientNoticeEmailInfo(
+ $messageData->message_id,
+ $messageData->receiver_id,
+ $reason, // current info
+ $messageData->sentinfo // previous info
+ );
+
+ // If database error occurred then return it
+ if (isError($sse)) return $sse;
+ }
}
return success('Notice emails sent successfully');
diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php
index de6ec5a10..cbb42543f 100644
--- a/application/models/CL/Messages_model.php
+++ b/application/models/CL/Messages_model.php
@@ -26,6 +26,8 @@ class Messages_model extends CI_Model
const TYPE_PERSONS = 'persons';
const TYPE_PRESTUDENTS = 'prestudents';
+ const ALT_OE = 'infocenter'; // alternative organisation unit when no one is found for a presetudent
+
/**
* Constructor
*/
@@ -106,7 +108,7 @@ class Messages_model extends CI_Model
{
$ouOptions .= sprintf(
"\n".'%s ',
- is_numeric($ou->prestudent_id) ? $ou->oe_kurzbz : MessageLib::ALT_OE,
+ is_numeric($ou->prestudent_id) ? $ou->oe_kurzbz : self::ALT_OE,
$ou->bezeichnung . (is_numeric($ou->prestudent_id) ? '' : ' *')
);
}
@@ -509,7 +511,8 @@ class Messages_model extends CI_Model
if (!hasData($message)) return error('No messages were saved in database');
// Write log entry
- $personLog = $this->_personLog($sender_id, $receiver_id, getData($message)[0]);
+ // NOTE: $receiver_id and $sender_id are switched!!! Currently this is a workaround
+ $personLog = $this->_personLog($receiver_id, $sender_id, getData($message)[0]);
if (isError($personLog)) return $personLog;
return success('Messages sent successfully');
diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php
index 3efc8472a..6439bc8d6 100644
--- a/application/models/organisation/Organisationseinheit_model.php
+++ b/application/models/organisation/Organisationseinheit_model.php
@@ -125,12 +125,12 @@ class Organisationseinheit_model extends DB_Model
public function getChilds($oe_kurzbz, $includeinactive = false)
{
$query = "
- WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
+ WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
(
- SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
+ SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
WHERE oe_kurzbz=? %s
UNION ALL
- SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
+ SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
WHERE o.oe_parent_kurzbz=oes.oe_kurzbz %s
)
SELECT oe_kurzbz
@@ -150,12 +150,12 @@ class Organisationseinheit_model extends DB_Model
public function getParents($oe_kurzbz, $includeinactive = false)
{
$query=
- "WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
+ "WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as
(
- SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
+ SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit
WHERE oe_kurzbz=? %s
UNION ALL
- SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
+ SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes
WHERE o.oe_kurzbz=oes.oe_parent_kurzbz %s
)
SELECT oe_kurzbz
@@ -177,7 +177,7 @@ class Organisationseinheit_model extends DB_Model
{
$condition = '
oe_kurzbz = (
- SELECT
+ SELECT
oe_parent_kurzbz
FROM
public.tbl_organisationseinheit
diff --git a/application/models/person/Benutzerfunktion_model.php b/application/models/person/Benutzerfunktion_model.php
index ceb427687..fb9b51c1a 100644
--- a/application/models/person/Benutzerfunktion_model.php
+++ b/application/models/person/Benutzerfunktion_model.php
@@ -11,16 +11,20 @@ class Benutzerfunktion_model extends DB_Model
$this->dbTable = 'public.tbl_benutzerfunktion';
$this->pk = 'benutzerfunktion_id';
}
-
+
/**
* Get the Benutzerfunktion using the person_id
*/
- public function getByPersonId($person_id)
+ public function getActiveFunctionsByPersonId($person_id)
{
- // Join with the table
- $this->addJoin('public.tbl_benutzer', 'uid');
-
- return $this->loadWhere(array('person_id' => $person_id));
+ $query = 'SELECT bf.*
+ FROM public.tbl_benutzerfunktion bf
+ JOIN public.tbl_benutzer b USING (uid)
+ WHERE b.person_id = ?
+ AND (bf.datum_von IS NULL OR bf.datum_von <= now())
+ AND (bf.datum_bis IS NULL OR bf.datum_bis >= now())';
+
+ return $this->execQuery($query, array($person_id));
}
/**
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 388f77b0a..d8ddb381c 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -213,4 +213,39 @@ class Person_model extends DB_Model
return $this->loadWhere(array('uid' => $uid, 'content' => true));
}
+
+ /**
+ * Checks if a person has a Bewerberstatus and reihungstestangetreten = true
+ * @param $person_id
+ * @param $studiensemester_kurzbz
+ * @return array
+ */
+ public function hasBewerber($person_id, $studiensemester_kurzbz, $studiengangtyp = null)
+ {
+ $parametersArray = array($person_id, $studiensemester_kurzbz);
+
+ $qry = "SELECT count(*) AS anzahl_bewerber FROM public.tbl_person
+ JOIN public.tbl_prestudent USING (person_id)
+ JOIN public.tbl_prestudentstatus ON tbl_prestudentstatus.prestudent_id = tbl_prestudent.prestudent_id";
+
+ if (isset($studiengangtyp))
+ {
+ $qry .= " JOIN lehre.tbl_studienplan USING(studienplan_id)
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ JOIN public.tbl_studiengang ON tbl_studienordnung.studiengang_kz = tbl_studiengang.studiengang_kz";
+ }
+
+ $qry .= " WHERE person_id = ?
+ AND studiensemester_kurzbz = ?
+ AND tbl_prestudentstatus.status_kurzbz = 'Bewerber'
+ AND reihungstestangetreten";
+
+ if (isset($studiengangtyp))
+ {
+ $parametersArray[] = $studiengangtyp;
+ $qry .= " AND tbl_studiengang.typ = ?";
+ }
+
+ return $this->execQuery($qry, $parametersArray);
+ }
}
diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php
index cea11a7a7..d74d03243 100644
--- a/application/models/system/Recipient_model.php
+++ b/application/models/system/Recipient_model.php
@@ -199,66 +199,24 @@ class Recipient_model extends DB_Model
}
/**
- * getMessages
+ * Gets all messages for which notice emails are still not sent
*
- * Gets all the messages to be sent
- *
- * @param kontaktType specifies the type of the kontakt to get
- * @param sent specifies the status of the messages to get (NULL never sent, otherwise the shipping date)
- * @param limit specifies the number of messages to get
- * @param message_id specifies a single message
+ * @param kontaktType specifies the type of the kontakt to get (email,...)
+ * @param limit specifies the max number of messages to get
+ * @param since specifies from which date messages have to be retrieved
*/
- public function getMessages($kontaktType, $message_id = null, $limit = 1)
+ public function getNotSentMessages($limit, $since)
{
- $query = 'SELECT mm.message_id,
- 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,
- mm.body,
- mr.sentinfo,
- mr.oe_kurzbz
- FROM public.tbl_msg_recipient mr INNER JOIN public.tbl_msg_message mm USING (message_id)
- LEFT JOIN (
- SELECT person_id, kontakt FROM public.tbl_kontakt WHERE zustellung = true AND kontakttyp = ?
- ) ks ON (ks.person_id = mm.person_id)
- LEFT JOIN (
- SELECT person_id, kontakt FROM public.tbl_kontakt WHERE zustellung = true AND kontakttyp = ?
- ) kr ON (kr.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
- ) 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)
- WHERE mr.sent IS NULL';
+ $query = 'SELECT mm.message_id
+ FROM public.tbl_msg_recipient mr
+ JOIN public.tbl_msg_message mm USING (message_id)
+ WHERE mr.sent IS NULL
+ AND mr.sentinfo IS NULL
+ AND mm.insertamum > ?
+ ORDER BY mr.insertamum ASC
+ LIMIT ?';
- $parametersArray = array($kontaktType, $kontaktType);
-
- if (is_numeric($message_id))
- {
- array_push($parametersArray, $message_id);
- $query .= ' AND mm.message_id = ?';
- }
-
- $query .= ' ORDER BY mr.insertamum ASC';
-
- if (is_numeric($limit))
- {
- $query .= ' LIMIT ?';
- array_push($parametersArray, $limit);
- }
-
- return $this->execQuery($query, $parametersArray);
+ return $this->execQuery($query, array($since, $limit));
}
/**
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
index 14ebacecb..a4116e8d0 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftrag.php
@@ -69,13 +69,11 @@ $this->load->view(
-
Alle Alle Lehraufträge mit jedem Status
- Bestellt Nur bestellte UND bestellte Lehraufträge, die in Bearbeitung sind
Erteilt Nur erteilte UND geänderte Lehraufträge, die in Bearbeitung sind
Angenommen Nur von Ihnen angenommene Lehraufträge
@@ -148,9 +146,6 @@ $this->load->view(
-
-
@@ -166,12 +161,13 @@ $this->load->view(
@@ -195,7 +191,7 @@ $this->load->view(
-
+
diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
index 2a9cc4245..6ac3abbdc 100644
--- a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
+++ b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php
@@ -170,7 +170,7 @@ FROM
/* filter active organisationseinheiten */
AND oe.aktiv = TRUE
/* filter vertragsstatus to avoid showing before status is bestellt */
- AND vvs.vertragsstatus_kurzbz IN (\'bestellt\', \'erteilt\', \'akzeptiert\')
+ AND vvs.vertragsstatus_kurzbz IN (\'erteilt\', \'akzeptiert\')
) tmp_lehrauftraege
UNION
@@ -182,8 +182,8 @@ FROM
(SELECT
uid
FROM
- public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
- ON tbl_benutzer.uid = ma.mitarbeiter_uid
+ public.tbl_benutzer JOIN public.tbl_mitarbeiter ma
+ ON tbl_benutzer.uid = ma.mitarbeiter_uid
WHERE
person_id = tmp_projektbetreuung.person_id
ORDER BY aktiv DESC, updateaktivam DESC -- accept inactive as some person_ids have no active, but order them last
@@ -285,8 +285,8 @@ FROM
AND lv.aktiv = TRUE
/* filter active organisationseinheiten */
AND oe.aktiv = TRUE
- /* filter vertragsstatus to avoid showing before status is bestellt */
- AND vvs.vertragsstatus_kurzbz IN (\'bestellt\', \'erteilt\', \'akzeptiert\')
+ /* filter vertragsstatus to avoid showing before status is erteilt */
+ AND vvs.vertragsstatus_kurzbz IN (\'erteilt\', \'akzeptiert\')
) tmp_projektbetreuung
) auftraege
ORDER BY "akzeptiert" NULLS FIRST, "erteilt" NULLS LAST, "bestellt"
diff --git a/application/views/system/messages/htmlWriteTemplate.php b/application/views/system/messages/htmlWriteTemplate.php
index 64a8c8236..b6876dc91 100644
--- a/application/views/system/messages/htmlWriteTemplate.php
+++ b/application/views/system/messages/htmlWriteTemplate.php
@@ -62,7 +62,7 @@
-
+
p->t('global', 'nachricht')); ?>:
@@ -74,7 +74,7 @@
-
+
@@ -89,7 +89,7 @@
array(
'name' => 'variables[]',
'id' => 'variables',
- 'size' => 14,
+ 'size' => 27,
'multiple' => true
)
);
@@ -129,34 +129,29 @@
-
+
-
-
diff --git a/application/views/widgets/dropdown.php b/application/views/widgets/dropdown.php
index 3db602755..d9faf1978 100644
--- a/application/views/widgets/dropdown.php
+++ b/application/views/widgets/dropdown.php
@@ -11,7 +11,7 @@
$align = "valign-top";
}
?>
-
+
@@ -22,7 +22,7 @@
-
+
diff --git a/application/widgets/Vorlage_widget.php b/application/widgets/Vorlage_widget.php
index 9c9abe430..f1898eb09 100644
--- a/application/widgets/Vorlage_widget.php
+++ b/application/widgets/Vorlage_widget.php
@@ -11,9 +11,9 @@ class Vorlage_widget extends DropdownWidget
$vorlage = null;
// If the user is an admin
- if ($idAdmin === true)
+ if ($idAdmin)
{
- // Get all the vorlage with mimetype = text/html
+ // Get all the vorlage with mimetype = text/html
$vorlage = $this->_getAllHTMLVorlage();
}
else
@@ -39,7 +39,7 @@ class Vorlage_widget extends DropdownWidget
private function _getAllHTMLVorlage()
{
$this->load->model('system/Vorlage_model', 'VorlageModel');
- $this->VorlageModel->addOrder('vorlage_kurzbz');
+ $this->VorlageModel->addOrder('bezeichnung');
$this->addSelectToModel($this->VorlageModel, 'vorlage_kurzbz', 'bezeichnung');
@@ -59,15 +59,31 @@ class Vorlage_widget extends DropdownWidget
$vorlage = success(array()); // Default value
$table = '(
- SELECT v.vorlage_kurzbz, v.bezeichnung, vs.version, vs.oe_kurzbz, vs.aktiv, vs.subject, vs.text, v.mimetype
- FROM tbl_vorlagestudiengang vs INNER JOIN tbl_vorlage v USING(vorlage_kurzbz)
+ SELECT v.vorlage_kurzbz,
+ v.bezeichnung,
+ vs.version,
+ vs.oe_kurzbz,
+ vs.aktiv,
+ vs.subject,
+ vs.text,
+ v.mimetype
+ FROM tbl_vorlagestudiengang vs
+ JOIN tbl_vorlage v USING(vorlage_kurzbz)
) templates';
+
$alias = 'templates';
- $fields = array("templates.vorlage_kurzbz AS id", "UPPER(templates.oe_kurzbz) || ' - ' || templates.bezeichnung || ' - V' || templates.version AS description");
+
+ $fields = array(
+ 'templates.vorlage_kurzbz AS id',
+ 'templates.bezeichnung || \' (\' || UPPER(templates.oe_kurzbz) || \')\' AS description'
+ );
+
$where = 'templates.aktiv = TRUE
- AND templates.subject IS NOT NULL
- AND templates.text IS NOT NULL
- AND templates.mimetype = \'text/html\'';
+ AND templates.subject IS NOT NULL
+ AND templates.text IS NOT NULL
+ AND templates.mimetype = \'text/html\'
+ GROUP BY 1, 2, 3';
+
$order_by = 'description ASC';
if (!is_array($oe_kurzbz))
@@ -99,30 +115,41 @@ class Vorlage_widget extends DropdownWidget
if (hasData($tmpVorlage))
{
// If it's the first vorlage copy it
- if (count($vorlage->retval) == 0)
+ if (!hasData($vorlage))
{
- for ($j = 0; $j < count($tmpVorlage->retval); $j++)
+ for ($j = 0; $j < count(getData($tmpVorlage)); $j++)
{
- if ($tmpVorlage->retval[$j]->id != '')
+ if (getData($tmpVorlage)[$j]->id != '')
{
- array_push($vorlage->retval, $tmpVorlage->retval[$j]);
+ array_push($vorlage->retval, getData($tmpVorlage)[$j]);
}
}
}
- else // checks for duplicates, if it's not already present push it into the array $vorlage->retval
+ else // checks for duplicates, if it's not already present push it into the array getData($vorlage)
{
- for ($i = 0; $i < count($vorlage->retval); $i++)
+ for ($j = 0; $j < count(getData($tmpVorlage)); $j++)
{
- for ($j = 0; $j < count($tmpVorlage->retval); $j++)
+ $found = false;
+ $currentTmpVorlageData = null;
+
+ for ($i = 0; $i < count(getData($vorlage)); $i++)
{
- if ($tmpVorlage->retval[$j]->id != ''
- && $vorlage->retval[$i]->_pk != $tmpVorlage->retval[$j]->_pk
- && $vorlage->retval[$i]->_ppk != $tmpVorlage->retval[$j]->_ppk
- && $vorlage->retval[$i]->_jtpk != $tmpVorlage->retval[$j]->_jtpk)
+ $currentTmpVorlageData = getData($tmpVorlage)[$j];
+
+ if (getData($vorlage)[$i]->id == getData($tmpVorlage)[$j]->id
+ && getData($vorlage)[$i]->_pk == getData($tmpVorlage)[$j]->_pk
+ && getData($vorlage)[$i]->_ppk == getData($tmpVorlage)[$j]->_ppk
+ && getData($vorlage)[$i]->_jtpk == getData($tmpVorlage)[$j]->_jtpk)
{
- array_push($vorlage->retval, $tmpVorlage->retval[$j]);
+ $found = true;
+ break;
}
}
+
+ if (!$found && $currentTmpVorlageData->id != '')
+ {
+ array_push($vorlage->retval, $currentTmpVorlageData);
+ }
}
}
}
diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php
index 4e328f5f2..bc7d96083 100644
--- a/cis/private/lehre/anwesenheitsliste.php
+++ b/cis/private/lehre/anwesenheitsliste.php
@@ -33,7 +33,7 @@
require_once('../../../include/studiengang.class.php');
require_once('../../../include/lehrveranstaltung.class.php');
require_once('../../../include/phrasen.class.php');
-
+ require_once('../../../include/vertrag.class.php');
$sprache = getSprache();
$p=new phrasen($sprache);
@@ -134,6 +134,17 @@
{
while($row_lkt = $db->db_fetch_object($result_lkt))
{
+ // Lektor wird erst angezeigt wenn der Auftrag erteilt wurde
+ if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON')
+ && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
+ {
+ $vertrag = new vertrag();
+ if (!$vertrag->isVertragErteiltLV($lvid, $stsem, $row_lkt->mitarbeiter_uid))
+ {
+ continue;
+ }
+ }
+
if($lektoren!='')
$lektoren.=', ';
$lektoren .= $row_lkt->kurzbz;
diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php
index 6d35e46c7..4d8c872a1 100644
--- a/cis/private/lehre/lesson.php
+++ b/cis/private/lehre/lesson.php
@@ -33,6 +33,7 @@ require_once('../../../include/lvangebot.class.php');
require_once('../../../include/benutzergruppe.class.php');
require_once('../../../include/lehreinheit.class.php');
require_once('../../../include/variable.class.php');
+require_once('../../../include/vertrag.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -316,6 +317,17 @@ $( document ).ready(function()
$i=0;
while($row_lector = $db->db_fetch_object($result))
{
+ // Lektor wird erst angezeigt wenn der Auftrag erteilt wurde
+ if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON')
+ && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
+ {
+ $vertrag = new vertrag();
+ if (!$vertrag->isVertragErteiltLV($lvid, $angezeigtes_stsem, $row_lector->uid))
+ {
+ continue;
+ }
+ }
+
$i++;
if($user==$row_lector->uid)
{
@@ -327,9 +339,11 @@ $( document ).ready(function()
$style='style="font-weight: bold"';
else
$style='';
- echo ''.$row_lector->vorname.' '.$row_lector->nachname.' ';
- if($i!=$num_rows_result)
+
+ if ($i != 1)
echo ', ';
+ echo ''.$row_lector->vorname.' '.$row_lector->nachname.' ';
+
}
}
}
diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php
index 56fd4a36d..e7e7ae90f 100644
--- a/cis/private/lehre/notenliste.php
+++ b/cis/private/lehre/notenliste.php
@@ -417,10 +417,15 @@ else
$tblFoot .= "";
- $tbl .= $tblHead.$tblFoot.$tblBody;
+ if (!defined('CIS_NOTENLISTE_DURCHSCHNITT_ANZEIGEN') || (defined('CIS_NOTENLISTE_DURCHSCHNITT_ANZEIGEN') && CIS_NOTENLISTE_DURCHSCHNITT_ANZEIGEN))
+ {
+ $tbl .= $tblHead.$tblFoot.$tblBody;
+ $tbl .= "* " . $p->t('tools/legendeNotendurchschnitt') . " ";
+ $tbl .= "** " . $p->t('tools/legendeGewichteterNotendurchschnitt') . " ";
+ }
+ else
+ $tbl .= $tblHead.$tblBody;
- $tbl .= "* " . $p->t('tools/legendeNotendurchschnitt') . " ";
- $tbl .= "** " . $p->t('tools/legendeGewichteterNotendurchschnitt') . " ";
if ($legende)
{
$tbl .= "" . $p->t('tools/hinweistextMarkierung') . " ";
diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php
index dbef13bfd..3117aec55 100644
--- a/cis/private/profile/index.php
+++ b/cis/private/profile/index.php
@@ -341,16 +341,16 @@ if ($type == 'mitarbeiter')
echo $p->t('profil/telefonTw').": $vorwahl - $user->telefonklappe ";
//echo $p->t('profil/faxTw').": $vorwahl - 99 $user->telefonklappe ";
}
- else {
- $kontakt = new kontakt();
- $kontakt->load_pers($user->person_id);
- foreach($kontakt->result as $k)
- {
- if ($k->kontakttyp == 'firmenhandy')
- echo $p->t('profil/telefonTw').': '.$k->kontakt.' ';
- }
+ $kontakt = new kontakt();
+ $kontakt->load_pers($user->person_id);
+ foreach($kontakt->result as $k)
+ {
+ if ($k->kontakttyp == 'firmenhandy')
+ echo 'Firmenhandy: '.$k->kontakt.' ';
}
+
+
if ($user->ort_kurzbz != '')
echo $p->t('profil/buero').': '.$user->ort_kurzbz.' ';
}
@@ -427,6 +427,7 @@ if (!$ansicht)
usort($kontakt->result, "sortKontakt");
echo '';
+ $has_notfallkontakt = false;
foreach($kontakt->result as $k)
{
if ($k->kontakttyp != 'firmenhandy' && $k->kontakttyp != 'hidden')
@@ -441,6 +442,8 @@ if (!$ansicht)
echo ''.$k->anmerkung.' ';
echo ''.$zustellung.' ';
echo '';
+ if ($k->kontakttyp == 'notfallkontakt')
+ $has_notfallkontakt = true;
}
/*
if ($k->zustellung === TRUE)
@@ -462,6 +465,9 @@ if (!$ansicht)
}
*/
}
+ if (!$has_notfallkontakt)
+ echo ''.$p->t('profil/notfallkontakt').' '.$p->t('profil/notfallkontaktBekanntgeben').' ';
+
echo '
';
}
diff --git a/cis/private/profile/lva_liste.php b/cis/private/profile/lva_liste.php
index c4f54ce94..f2d175dbf 100644
--- a/cis/private/profile/lva_liste.php
+++ b/cis/private/profile/lva_liste.php
@@ -37,46 +37,51 @@ require_once('../../../include/datum.class.php');
require_once('../../../include/lvangebot.class.php');
require_once('../../../include/addon.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
+require_once('../../../include/vertrag.class.php');
- if (!$db = new basis_db())
- die('Fehler beim Oeffnen der Datenbankverbindung');
+if (!$db = new basis_db())
+ die('Fehler beim Oeffnen der Datenbankverbindung');
- $adress=MAIL_ADMIN;
+$adress = MAIL_ADMIN;
- $user=get_uid();
- $studiensemester = new studiensemester();
+$user=get_uid();
+$studiensemester = new studiensemester();
- if (isset($_GET['uid']))
- $uid=$_GET['uid'];
- else
- $uid = $user;
+if (isset($_GET['uid']))
+ $uid = $_GET['uid'];
+else
+ $uid = $user;
- if (isset($_GET['stdsem']))
- $stdsem=$_GET['stdsem'];
- else
- $stdsem=$studiensemester->getaktorNext();
+if (isset($_GET['stdsem']))
+ $stdsem = $_GET['stdsem'];
+else
+ $stdsem = $studiensemester->getaktorNext();
- $rechte = new benutzerberechtigung();
- $rechte->getBerechtigungen($user);
- if(!$rechte->isBerechtigt('admin') && $uid!=$user)
- die('Sie haben keine Berechtigung für diesen Vorgang');
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($user);
+if (!$rechte->isBerechtigt('admin') && $uid != $user)
+ die('Sie haben keine Berechtigung für diesen Vorgang');
- $datum = new datum();
+$datum = new datum();
- $addon = new addon();
- if(in_array('lvinfo',$addon->aktive_addons))
- $lvinfo=true;
- else
- $lvinfo=false;
+$addon = new addon();
+if (in_array('lvinfo',$addon->aktive_addons))
+ $lvinfo=true;
+else
+ $lvinfo=false;
- //Studiensemester abfragen. Letzten 5, aktuelles und naechstes.
- $sql_query='SELECT * FROM public.tbl_studiensemester WHERE (start<=(now()::date+240) AND ende>=(now()::date-900)) ORDER BY start';
- $result_stdsem=$db->db_query($sql_query);
- $num_rows_stdsem=$db->db_num_rows($result_stdsem);
- //if (!isset($stdsem))
- //$stdsem=$db->db_result($result_stdsem,0,"studiensemester_kurzbz");
+//Studiensemester abfragen. Letzten 5, aktuelles und naechstes.
+$sql_query = '
+ SELECT
+ *
+ FROM
+ public.tbl_studiensemester
+ WHERE (start<=(now()::date+240) AND ende>=(now()::date-900))
+ ORDER BY start';
+$result_stdsem = $db->db_query($sql_query);
+$num_rows_stdsem = $db->db_num_rows($result_stdsem);
- $p = new phrasen(getSprache());
+$p = new phrasen(getSprache());
/*
0000453: Sortierung von LVs - Meine LV
1. Bachelor
@@ -89,401 +94,426 @@ require_once('../../../include/benutzerberechtigung.class.php');
8. Name der LV
*/
- //Lehrveranstaltungen abfragen.
- $sql_query="
- SELECT
- *, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg_kurzbz,
- tbl_lehrveranstaltung.semester as lv_semester,
- lehrfach.kurzbz as lehrfach,
- lehrfach.bezeichnung as lehrfach_bez,
- tbl_lehreinheitmitarbeiter.semesterstunden as semesterstunden,
- tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
- tbl_lehreinheit.anmerkung as le_anmerkung,
- tbl_lehreinheit.lehrform_kurzbz as le_lehrform_kurzbz,
- (SELECT kurzbz FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid) as lektor,
- tbl_lehrveranstaltung.lehrveranstaltung_id
- FROM
+//Lehrveranstaltungen abfragen.
+$sql_query = "
+ SELECT
+ *, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg_kurzbz,
+ tbl_lehrveranstaltung.semester as lv_semester,
+ lehrfach.kurzbz as lehrfach,
+ lehrfach.bezeichnung as lehrfach_bez,
+ tbl_lehreinheitmitarbeiter.semesterstunden as semesterstunden,
+ tbl_lehrveranstaltung.bezeichnung as lv_bezeichnung,
+ tbl_lehreinheit.anmerkung as le_anmerkung,
+ tbl_lehreinheit.lehrform_kurzbz as le_lehrform_kurzbz,
+ (SELECT kurzbz FROM public.tbl_mitarbeiter
+ WHERE mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid) as lektor,
+ tbl_lehrveranstaltung.lehrveranstaltung_id
+ FROM
lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN public.tbl_studiengang USING(studiengang_kz)
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id)
- WHERE tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND mitarbeiter_uid=".$db->db_add_param($uid);
- $sql_query.=" ORDER BY stg_kurzbz,lv_semester,lv_bezeichnung";
- $result=$db->db_query($sql_query);
- $num_rows=$db->db_num_rows($result);
+ WHERE
+ tbl_lehreinheit.studiensemester_kurzbz = ".$db->db_add_param($stdsem)."
+ AND mitarbeiter_uid = ".$db->db_add_param($uid)."
+ ORDER BY stg_kurzbz,lv_semester,lv_bezeichnung";
- echo '
-
-
-
- '.$p->t('lvaliste/titel').'
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
- '.$p->t('lvaliste/titel').' ( '.$stdsem.' ) ';
- echo ' ';
- if ($num_rows>0)
- {
-
- echo ''.$p->t('lvaliste/lehrveranstaltungen').' ';
- echo $p->t('lvaliste/anzahl').': '.$num_rows;
- echo '
-
-
- ';
- if(!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
- echo ''.$p->t('lvaliste/gesamtnote').' ';
-
-
- if($lvinfo)
- echo ''.$p->t('lvaliste/lvinfo').' ';
-
- echo '
- '.$p->t('lvaliste/id').'
- '.$p->t('lvaliste/lehrfach').'
- '.$p->t('lvaliste/lehrform').'
- '.$p->t('lvaliste/lvBezeichnung').'
- '.$p->t('lvaliste/lektor').'
- '.$p->t('lvaliste/studiengang').'
- '.$p->t('lvaliste/semester').'
- '.$p->t('lvaliste/gruppen').'
- '.$p->t('lvaliste/raumtyp').'
- '.$p->t('lvaliste/raumtypalternativ').'
- '.$p->t('lvaliste/blockung').'
- '.$p->t('lvaliste/wochenrythmus').'
- '.$p->t('lvaliste/stunden').'
- '.$p->t('lvaliste/kalenderwoche').'
- Anm. von
- Anm. bis ';
- //'.$p->t('lvaliste/anmerkung').' Lektoren sollen die Anmerkung dzt. nicht sehen, da nur für intern gedacht
-
- echo '
- ';
- $stg_obj = new studiengang();
- $stg_obj->getAll(null,null);
- $summe_std=0;
-
- for ($i=0; $i<$num_rows; $i++)
+ $("#t2").tablesorter(
{
- $row=$db->db_fetch_object($result);
- $lvangebot = new lvangebot();
- echo '';
- if(!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
- echo ''.$p->t('lvaliste/gesamtnote').' ';
-
- if($lvinfo)
- echo ''.$p->t('lvaliste/lvinfo').' ';
-
- echo ''.$row->lehreinheit_id.' ';
- echo ''.$row->lehrfach.' ';
- echo ''.$row->le_lehrform_kurzbz.' ';
- if ($row->lehrfach_bez!=$row->lv_bezeichnung)
- echo ''.$row->lv_bezeichnung.' ('.$p->t('lvaliste/lehrfach').': '.$row->lehrfach_bez.') ';
- else
- echo ''.$row->lv_bezeichnung.' ';
- echo ''.$row->lektor.' ';
- echo ''.$row->stg_kurzbz.' ';
- echo ''.$row->semester.' ';
-
- $qry ="SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id=".$db->db_add_param($row->lehreinheit_id);
- $gruppe='';
- if($result_grp = $db->db_query($qry))
- {
- while($row_grp = $db->db_fetch_object($result_grp))
- {
- if($row_grp->gruppe_kurzbz!='')
- $gruppe.= $row_grp->gruppe_kurzbz.' ';
- else
- $gruppe.= $stg_obj->kuerzel_arr[$row->studiengang_kz].'-'.$row_grp->semester.$row_grp->verband.$row_grp->gruppe.' ';
- }
- }
- echo ''.$gruppe.' ';
- echo ''.$row->raumtyp.' ';
- echo ''.$row->raumtypalternativ.' ';
- echo ''.$row->stundenblockung.' ';
- echo ''.$row->wochenrythmus.' ';
- if(getSprache()=='German')
- {
- echo ''.number_format($row->semesterstunden,2,$dec_point=",",$thousands_sep=".").' ';
- }
- else
- {
- echo ''.number_format($row->semesterstunden,2,$dec_point=".",$thousands_sep=",").' ';
- }
- echo ''.$row->start_kw.' ';
-
- $lvangebot->getAllFromLvId($row->lehrveranstaltung_id, $row->studiensemester_kurzbz);
- if(!empty($lvangebot->result))
- {
- echo ''.$datum->formatDatum($lvangebot->result[0]->anmeldefenster_start, "d.m.Y").' ';
- echo ''.$datum->formatDatum($lvangebot->result[0]->anmeldefenster_ende, "d.m.Y").' ';
- }
- else
- {
- echo '
- ';
- }
- //echo ''.$row->le_anmerkung.' '; Lektoren sollen die Anmerkung dzt. nicht sehen, da nur für intern gedacht
-
- echo ' ';
- $summe_std+=$row->semesterstunden;
- }
- echo ' ';
- echo '';
- echo '';
- if(!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
- echo ' ';
- if($lvinfo)
- echo ' ';
-
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ' ';
- echo ''.$p->t('lvaliste/summe').' ';
- if(getSprache()=='German')
+ sortList: [[0,0],[1,0],[3,0]],
+ widgets: ["zebra"]
+ });
+ $("#t3").tablesorter(
{
- echo ''.number_format($summe_std,2,$dec_point=",",$thousands_sep=".").' ';
- }
- else
- {
- echo ''.number_format($summe_std,2,$dec_point=".",$thousands_sep=",").' ';
- }
- echo ' ';
- echo ' ';
- echo ' ';
- echo '
';
- }
+ sortList: [[0,0],[1,0],[3,0]],
+ widgets: ["zebra"]
+ });
+ });
+ -->
+
+
+
+'.$p->t('lvaliste/titel').' ( '.$stdsem.' ) ';
+echo ' ';
+if ($num_rows > 0)
+{
+ $anzahl_lvs = 0;
+ $lvtable = '
+
+
+ ';
+ if (!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
+ $lvtable .= ''.$p->t('lvaliste/gesamtnote').' ';
- //Betreuungen
-
- $mitarbeiter = new benutzer();
- $mitarbeiter->load($uid);
-
- $qry = "SELECT
- tbl_lehrveranstaltung.bezeichnung, tbl_projektarbeit.titel,
- (SELECT nachname || ' ' || vorname FROM public.tbl_benutzer JOIN public.tbl_person USING(person_id)
- WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester,
- tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung, tbl_projektbetreuer.stunden
- FROM
- lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart
- WHERE
- tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND
- tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
- tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
- tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
- tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND
- tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND
- tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER);
+ if ($lvinfo)
+ $lvtable .= ''.$p->t('lvaliste/lvinfo').' ';
+ $lvtable .= '
+ '.$p->t('lvaliste/id').'
+ '.$p->t('lvaliste/lehrfach').'
+ '.$p->t('lvaliste/lehrform').'
+ '.$p->t('lvaliste/lvBezeichnung').'
+ '.$p->t('lvaliste/lektor').'
+ '.$p->t('lvaliste/studiengang').'
+ '.$p->t('lvaliste/semester').'
+ '.$p->t('lvaliste/gruppen').'
+ '.$p->t('lvaliste/raumtyp').'
+ '.$p->t('lvaliste/raumtypalternativ').'
+ '.$p->t('lvaliste/blockung').'
+ '.$p->t('lvaliste/wochenrythmus').'
+ '.$p->t('lvaliste/stunden').'
+ '.$p->t('lvaliste/kalenderwoche').'
+ Anm. von
+ Anm. bis
+
+ ';
$stg_obj = new studiengang();
$stg_obj->getAll(null,null);
$summe_std = 0;
- if($result = $db->db_query($qry))
+ for ($i = 0; $i < $num_rows; $i++)
{
- if($db->db_num_rows($result)>0)
+ $row = $db->db_fetch_object($result);
+
+ // Nur erteilte Vertraege anzeigen wenn dies im Config hinterlegt ist.
+ if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON')
+ && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
{
- echo ''.$p->t('lvaliste/betreuungen').' ';
- echo $p->t('lvaliste/anzahl').': '.$db->db_num_rows($result);
- echo '';
- echo '';
- echo ''.$p->t('lvaliste/studiengang').' ';
- echo ''.$p->t('lvaliste/semester').' ';
- echo ''.$p->t('lvaliste/stunden').' ';
- echo ''.$p->t('lvaliste/lvBezeichnung').' ';
- echo ''.$p->t('lvaliste/student').' ';
- echo ''.$p->t('lvaliste/betreuungsart').' ';
- echo ''.$p->t('lvaliste/titelProjektarbeit').' ';
- echo ' ';
- while($row = $db->db_fetch_object($result))
+ $vertrag = new vertrag();
+ if (!$vertrag->isVertragErteiltLV($row->lehrveranstaltung_id, $stdsem, $user))
{
- echo '';
- echo ''.$stg_obj->kuerzel_arr[$row->studiengang_kz].' ';
- echo ''.$row->semester.' ';
- if(getSprache()=='German')
- {
- echo ''.number_format($row->stunden,2,$dec_point =",", $thousands_sep ="."). ' ';
- }
+ continue;
+ }
+ }
+ $anzahl_lvs++;
+
+ $lvangebot = new lvangebot();
+ $lvtable .= ' ';
+ if (!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
+ $lvtable .= ''.$p->t('lvaliste/gesamtnote').' ';
+
+ if ($lvinfo)
+ $lvtable .= ''.$p->t('lvaliste/lvinfo').' ';
+
+ $lvtable .= ''.$row->lehreinheit_id.' ';
+ $lvtable .= ''.$row->lehrfach.' ';
+ $lvtable .= ''.$row->le_lehrform_kurzbz.' ';
+ if ($row->lehrfach_bez != $row->lv_bezeichnung)
+ $lvtable .= ''.$row->lv_bezeichnung.' ('.$p->t('lvaliste/lehrfach').': '.$row->lehrfach_bez.') ';
+ else
+ $lvtable .= ''.$row->lv_bezeichnung.' ';
+ $lvtable .= ''.$row->lektor.' ';
+ $lvtable .= ''.$row->stg_kurzbz.' ';
+ $lvtable .= ''.$row->semester.' ';
+
+ $qry = "
+ SELECT * FROM lehre.tbl_lehreinheitgruppe
+ WHERE lehreinheit_id=".$db->db_add_param($row->lehreinheit_id);
+
+ $gruppe = '';
+ if ($result_grp = $db->db_query($qry))
+ {
+ while ($row_grp = $db->db_fetch_object($result_grp))
+ {
+ if ($row_grp->gruppe_kurzbz != '')
+ $gruppe .= $row_grp->gruppe_kurzbz.' ';
else
- {
- echo ''.number_format($row->stunden,2,$dec_point =".", $thousands_sep =","). ' ';
- }
- echo ''.$row->bezeichnung.' ';
- echo ''.$row->student.' ';
- echo ''.$row->beutreuerart_beschreibung.' ';
- echo ''.$row->titel.' ';
-
- $summe_std+=$row->stunden;
+ $gruppe .= $stg_obj->kuerzel_arr[$row->studiengang_kz].'-'.$row_grp->semester.$row_grp->verband.$row_grp->gruppe.' ';
}
- echo ' ';
- echo '';
+ }
+ $lvtable .= ''.$gruppe.' ';
+ $lvtable .= ''.$row->raumtyp.' ';
+ $lvtable .= ''.$row->raumtypalternativ.' ';
+ $lvtable .= ''.$row->stundenblockung.' ';
+ $lvtable .= ''.$row->wochenrythmus.' ';
+ if (getSprache() == 'German')
+ {
+ $lvtable .= ''.number_format($row->semesterstunden,2,$dec_point=",",$thousands_sep=".").' ';
+ }
+ else
+ {
+ $lvtable .= ''.number_format($row->semesterstunden,2,$dec_point=".",$thousands_sep=",").' ';
+ }
+ $lvtable .= ''.$row->start_kw.' ';
+
+ $lvangebot->getAllFromLvId($row->lehrveranstaltung_id, $row->studiensemester_kurzbz);
+ if (!empty($lvangebot->result))
+ {
+ $lvtable .= ''.$datum->formatDatum($lvangebot->result[0]->anmeldefenster_start, "d.m.Y").' ';
+ $lvtable .= ''.$datum->formatDatum($lvangebot->result[0]->anmeldefenster_ende, "d.m.Y").' ';
+ }
+ else
+ {
+ $lvtable .= '
+ ';
+ }
+
+ $lvtable .= '';
+ $summe_std += $row->semesterstunden;
+ }
+ $lvtable .= '';
+ $lvtable .= '';
+ $lvtable .= '';
+ if (!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
+ $lvtable .= ' ';
+ if ($lvinfo)
+ $lvtable .= ' ';
+
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ''.$p->t('lvaliste/summe').' ';
+ if (getSprache() == 'German')
+ {
+ $lvtable .= ''.number_format($summe_std, 2, $dec_point = ",", $thousands_sep = ".").' ';
+ }
+ else
+ {
+ $lvtable .= ''.number_format($summe_std, 2, $dec_point = ".", $thousands_sep = ",").' ';
+ }
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= ' ';
+ $lvtable .= '
';
+
+ if($anzahl_lvs > 0)
+ {
+ echo ''.$p->t('lvaliste/lehrveranstaltungen').' ';
+ echo $p->t('lvaliste/anzahl').': '.$anzahl_lvs;
+ echo $lvtable;
+ }
+ else
+ {
+ echo $p->t('lvaliste/keineDatensaetze').' ';
+ }
+}
+else
+ echo $p->t('lvaliste/keineDatensaetze').' ';
+
+//Betreuungen
+$mitarbeiter = new benutzer();
+$mitarbeiter->load($uid);
+
+$qry = "SELECT
+ tbl_lehrveranstaltung.bezeichnung, tbl_projektarbeit.titel,
+ (SELECT nachname || ' ' || vorname FROM public.tbl_benutzer JOIN public.tbl_person USING(person_id)
+ WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester,
+ tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung, tbl_projektbetreuer.stunden
+ FROM
+ lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart
+ WHERE
+ tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND
+ tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
+ tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
+ tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND
+ tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND
+ tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND
+ tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER);
+
+$stg_obj = new studiengang();
+$stg_obj->getAll(null,null);
+$summe_std = 0;
+
+if ($result = $db->db_query($qry))
+{
+ if ($db->db_num_rows($result) > 0)
+ {
+ echo ' ';
+ echo ''.$p->t('lvaliste/betreuungen').' ';
+ echo $p->t('lvaliste/anzahl').': '.$db->db_num_rows($result);
+ echo '';
+ echo '';
+ echo ''.$p->t('lvaliste/studiengang').' ';
+ echo ''.$p->t('lvaliste/semester').' ';
+ echo ''.$p->t('lvaliste/stunden').' ';
+ echo ''.$p->t('lvaliste/lvBezeichnung').' ';
+ echo ''.$p->t('lvaliste/student').' ';
+ echo ''.$p->t('lvaliste/betreuungsart').' ';
+ echo ''.$p->t('lvaliste/titelProjektarbeit').' ';
+ echo ' ';
+ while ($row = $db->db_fetch_object($result))
+ {
echo '';
- if(!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
+ echo ''.$stg_obj->kuerzel_arr[$row->studiengang_kz].' ';
+ echo ''.$row->semester.' ';
+ if (getSprache() == 'German')
{
- echo ' ';
- }
- if($lvinfo)
-
- echo ''.$p->t('lvaliste/summe').' ';
-
- if(getSprache()=='German')
- {
- echo ''.number_format($summe_std,2,$dec_point=",",$thousands_sep=".").' ';
+ echo ''.number_format($row->stunden,2,$dec_point =",", $thousands_sep ="."). ' ';
}
else
{
- echo ''.number_format($summe_std,2,$dec_point=".",$thousands_sep=",").' ';
+ echo ''.number_format($row->stunden,2,$dec_point =".", $thousands_sep =","). ' ';
}
+ echo ''.$row->bezeichnung.' ';
+ echo ''.$row->student.' ';
+ echo ''.$row->beutreuerart_beschreibung.' ';
+ echo ''.$row->titel.' ';
-
- echo ' ';
-
- echo ' ';
-
- echo '
';
+ $summe_std += $row->stunden;
}
- }
-
-
- //Koordination
-
- $qry = "SELECT
- distinct
- tbl_lehrveranstaltung.studiengang_kz, tbl_fachbereich.fachbereich_kurzbz, tbl_lehrveranstaltung.bezeichnung,
- tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.semester,tbl_lehrveranstaltung.koordinator,
- tbl_studiengang.email
- FROM
- lehre.tbl_lehrveranstaltung,
- lehre.tbl_lehreinheit,
- lehre.tbl_lehrveranstaltung as lehrfach,
- public.tbl_studiengang,
- public.tbl_fachbereich
- WHERE
- tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
- tbl_lehreinheit.lehrfach_id = lehrfach.lehrveranstaltung_id AND
- tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND
- tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
- (tbl_lehrveranstaltung.koordinator=".$db->db_add_param($uid)."
- OR
- ( tbl_lehrveranstaltung.koordinator is null and (tbl_lehrveranstaltung.studiengang_kz, fachbereich_kurzbz) IN (SELECT studiengang_kz, fachbereich_kurzbz
- FROM public.tbl_benutzerfunktion JOIN public.tbl_studiengang USING(oe_kurzbz)
- WHERE funktion_kurzbz='fbk' AND uid=".$db->db_add_param($uid)."
- and ( tbl_benutzerfunktion.datum_bis is null or now() between tbl_benutzerfunktion.datum_von and tbl_benutzerfunktion.datum_bis )
- ))
- ) AND
- tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz
- order by tbl_lehrveranstaltung.studiengang_kz,tbl_lehrveranstaltung.semester ,tbl_lehrveranstaltung.bezeichnung
- ";
-
-
- if($result = $db->db_query($qry))
- {
- if($db->db_num_rows($result)>0)
+ echo ' ';
+ echo '';
+ echo '';
+ if (!defined('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN') || CIS_LVALISTE_NOTENEINGABE_ANZEIGEN)
{
- echo ''.$p->t('lvaliste/koordination').' ';
- echo $p->t('lvaliste/anzahl').': '.$db->db_num_rows($result);
- echo '';
- echo '';
- echo ''.$p->t('lvaliste/studiengang').' ';
- echo ''.$p->t('lvaliste/semester').' ';
- echo ''.$p->t('lvaliste/institut').' ';
- echo ''.$p->t('lvaliste/lvBezeichnung').' ';
- echo ''.$p->t('lvaliste/lektor').' ';
- echo ' ';
- while($row = $db->db_fetch_object($result))
- {
- //Fachbereichskoordinatoren holen
- $qry = "SELECT distinct
- uid,titelpre, titelpost, vorname, nachname
- FROM
- lehre.tbl_lehreinheitmitarbeiter,
- public.tbl_benutzer,
- public.tbl_person,
- lehre.tbl_lehreinheit
- WHERE
- tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
- tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id, FHC_INTEGER)." AND
- tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
- tbl_benutzer.person_id=tbl_person.person_id AND
- tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem);
- $lektoren='';
- if($result_lkt = $db->db_query($qry))
- {
- while($row_lkt = $db->db_fetch_object($result_lkt))
- {
- if($lektoren!='')
- $lektoren.=',';
- $lektoren.=trim($row_lkt->titelpre.' '.$row_lkt->vorname.' '.$row_lkt->nachname.' '.$row_lkt->titelpost);
- }
- }
-
- echo '';
- echo ''.$stg_obj->kuerzel_arr[$row->studiengang_kz].' ';
- echo ''.$row->semester.' ';
- echo ''.$row->stunden.' ';
- echo ''.$row->fachbereich_kurzbz.' ';
- echo ''.$row->bezeichnung.' ';
- echo ''.$lektoren.' ';
- echo ' ';
- }
- echo '
';
+ echo ' ';
}
+ if ($lvinfo)
+
+ echo ''.$p->t('lvaliste/summe').' ';
+
+ if (getSprache() == 'German')
+ {
+ echo ''.number_format($summe_std, 2, $dec_point = ",", $thousands_sep = ".").' ';
+ }
+ else
+ {
+ echo ''.number_format($summe_std, 2, $dec_point = ".", $thousands_sep = ",").' ';
+ }
+
+ echo ' ';
+ echo ' ';
+ echo '
';
}
+}
+
+//Koordination
+$qry = "SELECT
+ distinct
+ tbl_lehrveranstaltung.studiengang_kz, tbl_fachbereich.fachbereich_kurzbz, tbl_lehrveranstaltung.bezeichnung,
+ tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.semester,tbl_lehrveranstaltung.koordinator,
+ tbl_studiengang.email
+ FROM
+ lehre.tbl_lehrveranstaltung,
+ lehre.tbl_lehreinheit,
+ lehre.tbl_lehrveranstaltung as lehrfach,
+ public.tbl_studiengang,
+ public.tbl_fachbereich
+ WHERE
+ tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
+ tbl_lehreinheit.lehrfach_id = lehrfach.lehrveranstaltung_id AND
+ tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND
+ tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND
+ (
+ tbl_lehrveranstaltung.koordinator=".$db->db_add_param($uid)."
+ OR
+ ( tbl_lehrveranstaltung.koordinator is null
+ AND (tbl_lehrveranstaltung.studiengang_kz, fachbereich_kurzbz) IN (
+ SELECT studiengang_kz, fachbereich_kurzbz
+ FROM public.tbl_benutzerfunktion JOIN public.tbl_studiengang USING(oe_kurzbz)
+ WHERE funktion_kurzbz='fbk' AND uid=".$db->db_add_param($uid)."
+ AND (
+ tbl_benutzerfunktion.datum_bis is null
+ OR now() between tbl_benutzerfunktion.datum_von and tbl_benutzerfunktion.datum_bis )
+ )
+ )
+ )
+ AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz
+ ORDER BY
+ tbl_lehrveranstaltung.studiengang_kz,
+ tbl_lehrveranstaltung.semester,
+ tbl_lehrveranstaltung.bezeichnung
+ ";
+
+
+if ($result = $db->db_query($qry))
+{
+ if ($db->db_num_rows($result) > 0)
+ {
+ echo ''.$p->t('lvaliste/koordination').' ';
+ echo $p->t('lvaliste/anzahl').': '.$db->db_num_rows($result);
+ echo '';
+ echo '';
+ echo ''.$p->t('lvaliste/studiengang').' ';
+ echo ''.$p->t('lvaliste/semester').' ';
+ echo ''.$p->t('lvaliste/institut').' ';
+ echo ''.$p->t('lvaliste/lvBezeichnung').' ';
+ echo ''.$p->t('lvaliste/lektor').' ';
+ echo ' ';
+ while ($row = $db->db_fetch_object($result))
+ {
+ //Fachbereichskoordinatoren holen
+ $qry = "SELECT distinct
+ uid,titelpre, titelpost, vorname, nachname
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter,
+ public.tbl_benutzer,
+ public.tbl_person,
+ lehre.tbl_lehreinheit
+ WHERE
+ tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
+ tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id, FHC_INTEGER)." AND
+ tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND
+ tbl_benutzer.person_id=tbl_person.person_id AND
+ tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem);
+ $lektoren='';
+ if($result_lkt = $db->db_query($qry))
+ {
+ while($row_lkt = $db->db_fetch_object($result_lkt))
+ {
+ if($lektoren!='')
+ $lektoren.=',';
+ $lektoren.=trim($row_lkt->titelpre.' '.$row_lkt->vorname.' '.$row_lkt->nachname.' '.$row_lkt->titelpost);
+ }
+ }
+
+ echo '';
+ echo ''.$stg_obj->kuerzel_arr[$row->studiengang_kz].' ';
+ echo ''.$row->semester.' ';
+ echo ''.$row->stunden.' ';
+ echo ''.$row->fachbereich_kurzbz.' ';
+ echo ''.$row->bezeichnung.' ';
+ echo ''.$lektoren.' ';
+ echo ' ';
+ }
+ echo '
';
+ }
+}
echo ' '.$p->t('lvaliste/fehlerAnStudiengang').' ';
?>
diff --git a/cis/testtool/admin/edit_gebiet.php b/cis/testtool/admin/edit_gebiet.php
index 68c502577..2fe6af39f 100644
--- a/cis/testtool/admin/edit_gebiet.php
+++ b/cis/testtool/admin/edit_gebiet.php
@@ -268,7 +268,7 @@ if ($gebiet_id != '')
$offsethinweis = ' empfohlene Offsetpunkteanzahl: '.round($offsetpunkte).(round($offsetpunkte) != $offsetpunkte ? ' ('.$offsetpunkte.' gerundet)' : '').' ';
$offsethinweis .= ''.$offsetwarnung.' ';
}
- echo 'Offsetpunkte (minimale Punkteanzahl) '.$offsethinweis.' ';
+ echo 'Offsetpunkte (maximale Negativpunkte) '.$offsethinweis.' ';
echo '';
echo 'Maximale Fragenanzahl ';
echo ' ';
diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php
index 86ed76252..e2c87ed67 100644
--- a/cis/testtool/frage.php
+++ b/cis/testtool/frage.php
@@ -16,8 +16,8 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger ,
- * Andreas Oesterreicher ,
- * Rudolf Hangl ,
+ * Andreas Oesterreicher ,
+ * Rudolf Hangl ,
* Gerald Simane-Sequens ,
* Manfred Kindl
*/
@@ -48,8 +48,8 @@ session_start();
// If language is changed by language select menu, reset language variables
if (isset($_GET['sprache_user']) && !empty($_GET['sprache_user']))
{
- $_SESSION['sprache_user'] = $_GET['sprache_user'];
- $sprache_user = $_GET['sprache_user'];
+ $_SESSION['sprache_user'] = $_GET['sprache_user'];
+ $sprache_user = $_GET['sprache_user'];
}
// Set language variable, which impacts the question language
@@ -78,10 +78,10 @@ echo '
-
+
-
-
+
+
-
-
-
- UID
- Vorname
- Nachname
- Personalnummer
- Fixangestellt
- Lektor
- BeschaeftigungsArt1
- BeschaeftigungsArt2
- Ausmass
- Verwendung
- Details (Funktion/Lehre)
-
-
-';
+echo 'XML Herunterladen ';
-foreach($mitarbeiter_gesamt as $row)
+// ---------------------------------------------------------------------------------------------------------------------
+// Private Functions
+// ---------------------------------------------------------------------------------------------------------------------
+
+/**
+ * Funktion ermittelt relatives Beschaeftigungsausmass und anteilige Jahresvollzeitaequivalenz
+ * @param String $uid
+ * @param array $bisverwendung_arr Object-Array
+ * @return array
+ */
+function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr)
{
- echo '';
- echo ''.$row['uid'].' ';
- echo ''.$row['vorname'].' ';
- echo ''.$row['nachname'].' ';
- echo ''.$row['personalnummer'].' ';
- echo ''.($row['fixangestellt']?'Ja':'Nein').' ';
- echo ''.($row['lektor']?'Ja':'Nein').' ';
- foreach($row['verwendung'] as $row_verwendung)
+ global $beginn_imJahr;
+ global $ende_imJahr;
+ global $wochen_imJahr;
+ global $tage_imJahr;
+ global $ss_kurzbz;
+ global $ws_kurzbz;
+
+ // Lehrtaetigkeit ermitteln
+ $lema = new lehreinheitmitarbeiter();
+ $lema->getLehreinheiten_SWS_BISMeldung($uid, $ss_kurzbz);
+ $lehre_ss_sws = $lema->result[0]; // Anzahl SS - Semesterwochenstunden
+
+ $lema = new lehreinheitmitarbeiter();
+ $lema->getLehreinheiten_SWS_BISMeldung($uid, $ws_kurzbz);
+ $lehre_ws_sws = $lema->result[0]; // Anzahl WS - Semesterwochenstunden
+
+ $has_lehrtaetigkeit = !is_null($lehre_ss_sws) || !is_null($lehre_ws_sws);
+
+ foreach ($bisverwendung_arr as $index => $bisverwendung)
{
- // Ba1Code
- if(isset($ba1_arr[$row_verwendung['ba1code']]))
- echo ''.$ba1_arr[$row_verwendung['ba1code']].' ';
- else
- echo ''.$row_verwendung['ba1code'].' ';
+ $has_vertragsstunden = !is_null($bisverwendung->vertragsstunden) && !empty($bisverwendung->vertragsstunden);
+ $is_lektor = $bisverwendung->verwendung_code == 1 || $bisverwendung->verwendung_code == 2;
- // Ba2Code
- if(isset($ba2_arr[$row_verwendung['ba2code']]))
- echo ''.$ba2_arr[$row_verwendung['ba2code']].' ';
- else
- echo ''.$row_verwendung['ba2code'].' ';
+ /**
+ * NOTE: is_karenziert ist ein boolean fuer Vollzeit-Karenz, nicht fuer Teilzeit-(Bildungs-)Karenz!
+ * Die Unterscheidung ist wichtig fuer die weitere Ermittlung der JVZAE.
+ * Vollzeitkarenz: Anteiliger Beschaeftigungsausmass und JVZAE wird auf 0 gesetzt.
+ * Bildungs-Teilzeitkarenz: entspricht im System
+ */
+ $is_karenziert_VZ = $bisverwendung->beschausmasscode == 5 && !$has_vertragsstunden; // VZ-Kinder- und Bildungskarenz
+ $is_karenziert_TZ = $bisverwendung->beschausmasscode == 5 && $has_vertragsstunden; // TZ-Bildungskarenz
- // Ausmass
- if(isset($ausmass_arr[$row_verwendung['beschausmasscode']]))
- echo ''.$ausmass_arr[$row_verwendung['beschausmasscode']].' ';
- else
- echo ''.$row_verwendung['beschausmasscode'].' ';
-
- // Verwendung
- if(isset($verwendung_arr[$row_verwendung['verwendung_code']]))
- echo ''.$verwendung_arr[$row_verwendung['verwendung_code']].' ';
- else
- echo ''.$row_verwendung['verwendung_code'].' ';
-
- echo '';
- // Details
- if(isset($row_verwendung['stgltg']))
+ // Karenzzeit
+ // -------------------------------------------------------------------------------------------------------------
+ if ($is_karenziert_VZ)
{
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $bisverwendung->beschaeftigungsausmass_relativ = number_format(0.00, 2);
+ $bisverwendung->jvzae_anteilig = 0;
+ continue;
+ }
- foreach($row_verwendung['stgltg'] as $row_stgl)
+ // Echter Dienstvertrag - d.h. Vertragsstunden sind vorhanden
+ // Bsp. angestellte Lektoren, angestellte MA in Verwaltung/Management/Wartung
+ // -------------------------------------------------------------------------------------------------------------
+ else if ($has_vertragsstunden)
+ {
+ // Vertragsstunden koennen max. VZ Aequivalenz-Basiswert haben
+ if ($bisverwendung->vertragsstunden > BIS_VOLLZEIT_ARBEITSSTUNDEN)
{
- echo 'Leitung:'.$stg_obj->kuerzel_arr[$row_stgl];
- echo ' ';
+ $bisverwendung->vertragsstunden = BIS_VOLLZEIT_ARBEITSSTUNDEN;
+ }
+
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $bisverwendung->beschaeftigungsausmass_relativ = round($bisverwendung->vertragsstunden / BIS_VOLLZEIT_ARBEITSSTUNDEN, 2);
+ $bisverwendung->jvzae_anteilig = round($bisverwendung->beschaeftigungsausmass_relativ * $bisverwendung->gewichtung, 2);
+
+ // Echter Dienstvertrag - mit Lehrtaetigkeit, jedoch kein Lektor.
+ // Bsp. STG-Leiter mit Lehrtaetigkeit
+ // ---------------------------------------------------------------------------------------------------------
+ if (!$is_lektor && $has_lehrtaetigkeit)
+ {
+ /**
+ * Verwendungen ergänzen, wenn Mitarbeiter in Verwaltung/Managment/Wartung (jedenfalls nicht in Lehre)
+ * zugeteilt ist und dennoch lehrt.
+ * Die SWS werden sowohl fuer Sommer- als auch Wintersemster ermittelt und jeweils in einer eigenen
+ * Verwendung mit dem Verwendungscode 1 ergaenzt.
+ */
+ $bisverwendung_beginn_BIS = new DateTime($bisverwendung->beginn_imBISMeldungsJahr);
+ $bisverwendung_ende_BIS = new DateTime($bisverwendung->ende_imBISMeldungsJahr);
+
+ foreach (array($ss_kurzbz => $lehre_ss_sws, $ws_kurzbz => $lehre_ws_sws) as $studsem_kurzbz => $lehre_sws)
+ {
+ $studsem = new studiensemester($studsem_kurzbz);
+ $studsem_start = new DateTime($studsem->start);
+ $studsem_ende = new DateTime($studsem->ende);
+
+ // Wenn Lehrzeit in die BIS Verwendungszeit hineinfaellt, Verwendung erstellen
+ if (!is_null($lehre_sws) &&
+ (!($studsem_start > $bisverwendung_ende_BIS) &&
+ !($studsem_ende < $bisverwendung_beginn_BIS)))
+ {
+ // Verwendung erstellen
+ list($tage_lehre_imSemester, $verwendung_lehre_obj) = _addVerwendung_fuerLehre_inkludiert($studsem, $bisverwendung);
+
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $verwendung_lehre_obj->beschaeftigungsausmass_relativ = round($lehre_sws / BIS_VOLLZEIT_SWS_INKLUDIERTE_LEHRE, 2); // VZ-Basis fuer inkludierte Lehre
+ $verwendung_lehre_obj->gewichtung = ($tage_lehre_imSemester == 182)
+ ? BIS_HALBJAHRES_GEWICHTUNG_SWS
+ : round(BIS_HALBJAHRES_GEWICHTUNG_SWS / ($tage_imJahr / 2) * $tage_lehre_imSemester, 2);
+ $verwendung_lehre_obj->jvzae_anteilig = round($verwendung_lehre_obj->beschaeftigungsausmass_relativ * $verwendung_lehre_obj->gewichtung, 3);
+
+ /**
+ * Relativen Beschaeftigungsausmass der BIS-Verwendung berichtigen
+ * (durch Abzug des eben erstellten relativen Beschaeftigungsausmass fuer Lehrtaetigkeiten)
+ * NOTE: Abzug nur fuer Lehrtaetigkeiten im WS, da nur diese das Beschaeftigungsausmass der
+ * BIS-Verwendung (und in Folge die VZAE ) zum Stichtag 31.12. bestimmen.
+ * */
+ if(substr($studsem_kurzbz, 0, 2) == 'WS')
+ {
+ $bisverwendung->beschaeftigungsausmass_relativ -= $verwendung_lehre_obj->beschaeftigungsausmass_relativ;
+ }
+
+ /**
+ * Anteilige JVZAE der BIS-Verwendung berichtigen
+ * (durch Abzug der eben erstellten anteiligen JVZAE fuer Lehrtaetigkeiten)
+ */
+ $bisverwendung->jvzae_anteilig -= $verwendung_lehre_obj->jvzae_anteilig;
+ $bisverwendung_arr [] = $verwendung_lehre_obj;
+ }
+ }
}
}
- if(isset($row_verwendung['fkt']))
+ // Sonstige Beschaeftigungsverhaeltnisse ohne Vertragsstunden
+ // Freie Dienstvertraege auf Stundenbasis
+ // -------------------------------------------------------------------------------------------------------------
+ else if (!$has_vertragsstunden && $has_lehrtaetigkeit)
{
- foreach($row_verwendung['fkt'] as $row_fkt)
+ foreach (array($ss_kurzbz => $lehre_ss_sws, $ws_kurzbz => $lehre_ws_sws) as $studsem => $lehre_sws)
{
- echo $stg_obj->kuerzel_arr[$row_fkt['stgkz']].': '.$row_fkt['sws'].' SWS';
- echo ' ';
+ if (!is_null($lehre_sws))
+ {
+ // Verwendungen erstellen
+ $verwendung_lehre_obj = _addVerwendung_fuerLehre_Stundenbasis($bisverwendung);
+
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $verwendung_lehre_obj->beschaeftigungsausmass_relativ = round($lehre_sws / BIS_VOLLZEIT_SWS_EINZELSTUNDENBASIS, 2); // VZ-Basis nach BIS-Vorgabe fuer Stundenbasis
+ $verwendung_lehre_obj->gewichtung = BIS_HALBJAHRES_GEWICHTUNG_SWS;
+ $verwendung_lehre_obj->jvzae_anteilig = round($verwendung_lehre_obj->beschaeftigungsausmass_relativ * $verwendung_lehre_obj->gewichtung, 2);
+ $bisverwendung_arr []= $verwendung_lehre_obj;
+ }
}
}
+ else
+ {
+ // Studentische Hilfskraft
+ // ---------------------------------------------------------------------------------------------------------
+ $benutzerfunktion = new Benutzerfunktion();
+ $is_studentische_hilfskraft = $benutzerfunktion->getBenutzerFunktionByUid(
+ $uid,
+ 'hilfskraft',
+ $beginn_imJahr->format('Y-m-d'),
+ $ende_imJahr->format('Y-m-d')
+ );
- echo ' ';
+ if ($is_studentische_hilfskraft)
+ {
+ // Kalkulatorische Umrechnung der Jahrespauschale
+ $pauschale_hilfskraft_inStunden = BIS_PAUSCHALE_STUDENTISCHE_HILFSKRAFT; // Pauschale pro Jahr und Person (in Stunden)
+ $pauschale_hilfskraft_relativImJahr = $pauschale_hilfskraft_inStunden / 1; // Stundenpauschale in Verhaeltnis zu 1 Jahr
+ $vollzeit_arbeitsstunden_imJahr = BIS_VOLLZEIT_ARBEITSSTUNDEN * $wochen_imJahr;
+
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $bisverwendung->beschaeftigungsausmass_relativ = round($pauschale_hilfskraft_relativImJahr / $vollzeit_arbeitsstunden_imJahr, 4);
+ $bisverwendung->jvzae_anteilig =round($pauschale_hilfskraft_relativImJahr / $vollzeit_arbeitsstunden_imJahr, 4);
+ }
+ // Mitarbeiter mit sonstigem Dienstverhaeltnis (zB. Werkvertrag)
+ // ---------------------------------------------------------------------------------------------------------
+ else
+ {
+ $pauschale_sonstigeDV_inStunden = BIS_PAUSCHALE_SONSTIGES_DIENSTVERHAELTNIS; // Pauschale pro Jahr und Person (in Stunden)
+ $pauschale_sonstigeDV_relativImJahr = $pauschale_sonstigeDV_inStunden / 1; // Stundenpauschale in Verhaeltnis zu 1 Jahr
+ $vollzeit_arbeitsstunden_imJahr = BIS_VOLLZEIT_ARBEITSSTUNDEN * $wochen_imJahr;
+
+ // Relatives Beschaeftigungsausmass / Anteilige JVZAE ermitteln
+ $bisverwendung->beschaeftigungsausmass_relativ = round($pauschale_sonstigeDV_relativImJahr / $vollzeit_arbeitsstunden_imJahr, 4);
+ $bisverwendung->jvzae_anteilig =round($pauschale_sonstigeDV_relativImJahr / $vollzeit_arbeitsstunden_imJahr, 4);
+ }
+ }
+ }
+
+ return $bisverwendung_arr;
+}
+
+/**
+ * Funktion ermittelt fuer jede BIS-Verwendung die Dauer (in Tagen) und Gewichtung (Dauer / Tage im Jahr)
+ * @param array $bisverwendung_arr Array mit BIS-Verwendungsobjekten
+ * @return array
+ */
+function _addDauerGewichtung_imBISMeldungsjahr($bisverwendung_arr)
+{
+ global $tage_imJahr;
+
+ foreach ($bisverwendung_arr as &$bisverwendung)
+ {
+ $bisverwendung_beginn_imBISMeldungsJahr = new DateTime($bisverwendung->beginn_imBISMeldungsJahr);
+ $bisverwendung_ende_imBISMeldungsJahr = new DateTime($bisverwendung->ende_imBISMeldungsJahr);
+
+ $bisverwendung->dauer_imBISMeldungsJahr = $bisverwendung_ende_imBISMeldungsJahr->diff($bisverwendung_beginn_imBISMeldungsJahr)->days + 1;
+ $bisverwendung->gewichtung = round($bisverwendung->dauer_imBISMeldungsJahr / $tage_imJahr, 2);
+ }
+
+ return $bisverwendung_arr;
+}
+
+/**
+ * Funktion ermittelt, ob Person im BIS Meldungsjahr vorwiegend haupt- oder nebenberuflich taetig war.
+ * @param $bisverwendung_arr Array mit BIS-Verwendungsobjekten
+ * @return boolean True wenn vorwiegend hauptberuflich
+ */
+function _getUeberwiegendeTaetigkeit_HauptNebenberuf($bisverwendung_arr)
+{
+ // Zeiten vergleichen
+ $sum_dauer_hauptberuflich = 0;
+ $sum_dauer_nebenberuflich = 0;
+
+ foreach ($bisverwendung_arr as $bisverwendung)
+ {
+ if ($bisverwendung->hauptberuflich == true)
+ {
+ $sum_dauer_hauptberuflich += $bisverwendung->dauer_imBISMeldungsJahr;
+ }
+ else
+ {
+ $sum_dauer_nebenberuflich += $bisverwendung->dauer_imBISMeldungsJahr;
+ }
+ }
+
+ // Laengere Dauer bestimmt Haupt- oder Nebenberuf
+ $is_hauptberuflich = $sum_dauer_hauptberuflich > $sum_dauer_nebenberuflich;
+
+ return array($is_hauptberuflich);
+}
+
+/**
+ * Funktion erstellt Verwendung fuer Lehrtaetigkeiten fuer Personen mit echtem Dienstvertrag.
+ * (zB STG Leiter mit Lehrtaetigkeit)
+ * @param object $studiensemester Sommer- / Winterstudiensemester
+ * @param object $bisverwendung
+ * @return array
+ */
+function _addVerwendung_fuerLehre_inkludiert($studiensemester, $bisverwendung)
+{
+ $verwendung_lehre_obj = new StdClass();
+
+ $verwendung_lehre_obj->ba1code = $bisverwendung->ba1code;
+ $verwendung_lehre_obj->ba2code = $bisverwendung->ba2code;
+ $verwendung_lehre_obj->beschausmasscode = $bisverwendung->beschausmasscode;
+ $verwendung_lehre_obj->verwendung_code = 1;
+ $verwendung_lehre_obj->beginn_imBISMeldungsJahr = $bisverwendung->beginn_imBISMeldungsJahr;
+ $verwendung_lehre_obj->ende_imBISMeldungsJahr = $bisverwendung->ende_imBISMeldungsJahr;
+
+ /**
+ * Anteilige Lehrtage im Studiensemester ermitteln
+ * NOTE: Da die gesamte Lehrtaetigkeit fuer SS und WS im BIS Meldungsjahr gemeldet wird, muss die WS Lehrtaetigkeit
+ * jahresuebergreifend erfasst werden. Daher Datumsvergleiche mit dem tatsaechlichen BIS-Verwendungsende.
+ * */
+ $tage_lehre_imSemester = 182; // default Tage im Halbjahr entsprechend der default Gewichtung von 0.5
+ $studsem_start = new DateTime($studiensemester->start);
+ $studsem_ende = new DateTime($studiensemester->ende);
+ $bisverwendung_beginn_BIS = new DateTime($bisverwendung->beginn_imBISMeldungsJahr);
+ $bisverwendung_ende = new DateTime($bisverwendung->ende);
+
+ $beginn_im_semester = ($bisverwendung_beginn_BIS < $studsem_start) ? $studsem_start : $bisverwendung_beginn_BIS;
+ $ende_im_semester = (!is_null($bisverwendung_ende) && $bisverwendung_ende > $studsem_ende) ? $studsem_ende : $bisverwendung_ende;
+ $tage_lehre_imSemester = $beginn_im_semester->diff($ende_im_semester)->days + 1;
+
+ return array($tage_lehre_imSemester, $verwendung_lehre_obj);
+}
+
+/**
+ * Funktion erstellt Verwendung fuer Lehrtaetigkeiten fuer freie Lektoren.
+ * @param object $bisverwendung
+ * @return object Verwendung fuer Lehrtaetigkeit
+ */
+function _addVerwendung_fuerLehre_Stundenbasis($bisverwendung)
+{
+ $verwendung_lehre_obj = new StdClass();
+
+ $verwendung_lehre_obj->ba1code = $bisverwendung->ba1code;
+ $verwendung_lehre_obj->ba2code = $bisverwendung->ba2code;
+ $verwendung_lehre_obj->beschausmasscode = $bisverwendung->beschausmasscode;
+ $verwendung_lehre_obj->verwendung_code = 1;
+ $verwendung_lehre_obj->beginn_imBISMeldungsJahr =$bisverwendung->beginn_imBISMeldungsJahr;
+ $verwendung_lehre_obj->ende_imBISMeldungsJahr = $bisverwendung->ende_imBISMeldungsJahr;
+
+ return $verwendung_lehre_obj;
+}
+
+/**
+ * Funktionscode 1 - 6 anhand Benutzerfunktionen ermitteln
+ * @param array $bisfunktion_arr
+ * @return array
+ */
+function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr)
+{
+ $funktion_arr = array();
+
+ foreach ($bisfunktion_arr as $bisfunktion)
+ {
+ $funktion_code = NULL;
+ $has_oe_lehrgang = false; // default
+
+ $studiengang = new Studiengang();
+ $studiengang->getStudiengangFromOe($bisfunktion->oe_kurzbz);
+
+ // Wenn OE der Funktion eine STG-Kennzahl ist
+ if (!is_null($studiengang->studiengang_kz))
+ {
+ // Pruefen ob STG-Kennzahl STG oder Lehrgang
+ $has_oe_lehrgang = !($studiengang->studiengang_kz > 0 && $studiengang->studiengang_kz < 10000);
+
+ // STG, die nicht BIS-bemeldet werden, ueberspringen
+ if (in_array($studiengang->studiengang_kz, BIS_EXCLUDE_STG))
+ {
+ continue;
+ }
+ }
+
+ // Funktionscode 1 - 6 anhand Benutzerfunktionen ermitteln
+ // -------------------------------------------------------------------------------------------------------------
+ // Wenn OE der Funktion nicht einem Lehrgang zugeordnet ist
+ if (!$has_oe_lehrgang)
+ {
+ // FunktionsCode 1-4
+ if (array_key_exists($bisfunktion->funktion_kurzbz, BIS_FUNKTIONSCODE_1234_ARR))
+ {
+ $funktion_code = BIS_FUNKTIONSCODE_1234_ARR[$bisfunktion->funktion_kurzbz];
+ }
+
+ if (in_array($bisfunktion->funktion_kurzbz, BIS_FUNKTIONSCODE_5_ARR)) // Leitung
+ {
+ // FunktionsCode 5 : STG-Leitung
+ if (!is_null($studiengang->studiengang_kz))
+ {
+ $funktion_code = 5;
+ }
+
+ // FunktionsCode 6 : Leitung Organisationseinheit der postsekundaeren Bildungseinrichtung
+ $organisationseinheit = new Organisationseinheit($bisfunktion->oe_kurzbz);
+ if (is_null($studiengang->studiengang_kz) &&
+ !in_array($organisationseinheit->oetyp_bezeichnung, BIS_FUNKTIONSCODE_6_ARR)) // nicht Teamleitung
+ {
+ $funktion_code = 6;
+ }
+ }
+ }
+
+ // Funktionsobjekt generieren
+ if (!is_null($funktion_code) && // Funktionscode vorhanden UND
+ (empty($funktion_arr) || // (Erster Durchlauf ODER
+ !in_array($funktion_code, array_column($funktion_arr, 'funktionscode')))) // Funktionsobjekt mit diesem Funktionscode nicht vorhanden)
+ {
+ $funktion_obj = new StdClass();
+ $funktion_obj->funktionscode = $funktion_code;
+ $funktion_obj->besondereQualifikationCode = NULL;
+ $funktion_obj->studiengang = ($funktion_code == 5)
+ ? array(setLeadingZero(intval($studiengang->studiengang_kz), 4)) // STG bei Funktionscode 5 melden
+ : NULL;
+
+ // Funktionsobjekt dem Funktionscontainer anhaengen
+ $funktion_arr []= $funktion_obj;
+ }
+ else if ($funktion_code == 5) // Funktionscontainer vorhanden und Funktionscode 5
+ {
+ $funktion_obj_arr = array_filter($funktion_arr, function (&$obj) {
+ return $obj->funktionscode == 5;
+ });
+
+ $funktion_obj_arr[0]->studiengang[]= setLeadingZero(intval($studiengang->studiengang_kz), 4); // STG ergaenzen
+ }
+ }
+
+ return $funktion_arr;
+}
+
+/**
+ * Funktionscode 7 aus Entwicklungsteam-Tabelle ermitteln
+ * @param String $uid
+ * @param array $funktion_arr Object-Array
+ * @return array
+ *
+ */
+function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr)
+{
+ $entwicklungsteam = new Entwicklungsteam();
+ $entwicklungsteam->getEntwicklungsteam($uid);
+ $entwicklungsteam_arr = $entwicklungsteam->result;
+
+ if (!empty($entwicklungsteam_arr))
+ {
+ // Lehrgaenge und STG, die nicht BIS gemeldet werden, extrahieren
+ $entwicklungsteam_arr = array_filter($entwicklungsteam_arr, function ($obj)
+ {
+ return
+ !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) &&
+ $obj->studiengang_kz > 0 &&
+ $obj->studiengang_kz < 10000;
+ });
+ }
+
+ if (!empty($entwicklungsteam_arr))
+ {
+ // Hoechste besondere Qualifikation
+ $besondere_qualifikation_code_arr = array_values(array_column($entwicklungsteam_arr, 'besqualcode'));
+ $besondere_qualifikation_code = max($besondere_qualifikation_code_arr);
+
+ // Studiengaenge, wo Person Teil des Entwicklungsteams gewesen ist
+ $studiengang_kz_arr = array_values(array_column($entwicklungsteam_arr, 'studiengang_kz'));
+ sort($studiengang_kz_arr); // sortieren
+ foreach($studiengang_kz_arr as &$studiengang_kz) // fuehrende Nullen fuer STG
+ {
+ $studiengang_kz = setLeadingZero(intval($studiengang_kz), 4);
+ }
+
+ // Funktionsobjekt generieren und dem Funktionscontainer anhaengen
+ $funktion_obj = new StdClass();
+ $funktion_obj->funktionscode = 7;
+ $funktion_obj->besondereQualifikationCode = $besondere_qualifikation_code;
+ $funktion_obj->studiengang = $studiengang_kz_arr;
+ $funktion_arr []= $funktion_obj;
+ }
+
+ return $funktion_arr;
+}
+
+/**
+ * Lehrecontainer fuer Lehrtaetigkeit (Semesterwochenstunden) pro STG erstellen.
+ * @param array $sws_proStg_arr Object-Array
+ * @return array
+ */
+function _getLehrecontainer($sws_proStg_arr)
+{
+ $lehre_arr = array();
+
+ if (!empty($sws_proStg_arr))
+ {
+ // Lehrgaenge und STG, die nicht BIS gemeldet werden, extrahieren
+ $sws_proStg_arr = array_filter($sws_proStg_arr, function ($obj)
+ {
+ return
+ !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) &&
+ $obj->studiengang_kz > 0 &&
+ $obj->studiengang_kz < 10000;
+ });
+ }
+
+ if (!empty($sws_proStg_arr))
+ {
+ foreach ($sws_proStg_arr as $sws_proStg)
+ {
+ $is_sommersemester = substr($sws_proStg->studiensemester_kurzbz, 0, 2) == 'SS';
+ $is_wintersemester = substr($sws_proStg->studiensemester_kurzbz, 0, 2) == 'WS';
+
+ // Lehreobjekt generieren
+ if (empty($lehre_arr) || // Erster Durchlauf ODER
+ !in_array($sws_proStg->studiengang_kz, array_column($lehre_arr, 'StgKz'))) // Neu
+ {
+ $lehre_obj = new StdClass();
+
+ $lehre_obj->StgKz = setLeadingZero(intval($sws_proStg->studiengang_kz), 4);
+ $lehre_obj->SommersemesterSWS = $is_sommersemester ? $sws_proStg->sws : 0.00;
+ $lehre_obj->WintersemesterSWS = $is_wintersemester ? $sws_proStg->sws : 0.00;
+
+ // Lehreobjekt dem Lehrecontainer anhaengen
+ $lehre_arr []= $lehre_obj;
+ }
+ else // Lehrecontainer mit STG schon vorhanden
+ {
+ $lehre_obj_arr = array_filter($lehre_arr, function (&$obj) use ($sws_proStg) {
+ return $obj->StgKz == $sws_proStg->studiengang_kz;
+ });
+
+ // SWS ergaenzen
+ if ($is_sommersemester)
+ {
+ current($lehre_obj_arr)->SommersemesterSWS = $sws_proStg->sws;
+ }
+ else if ($is_wintersemester)
+ {
+ current($lehre_obj_arr)->WintersemesterSWS = $sws_proStg->sws;
+ }
+ }
+ }
+ }
+
+
+ return $lehre_arr;
+}
+
+function _generateXML($person_arr)
+{
+ $xml = '';
+ $xml .= '';
+
+ $erhalter = new erhalter();
+ $erhalter->getAll();
+
+ if(isset($erhalter->result[0]))
+ {
+ $erhalter = sprintf("%03s",trim($erhalter->result[0]->erhalter_kz));
+ }
+ else
+ $erhalter = '';
+
+ $xml .= '';
+ $xml .= ''.$erhalter.' ';
+ $xml .= '1504'.date('Y').' ';
+ $xml .= '';
+
+ foreach ($person_arr as $person)
+ {
+ $xml .= '';
+
+ $xml .= 'personalnummer. ']]> ';
+ $xml .= 'geschlecht. ']]> ';
+ if ($person->geschlecht == 'x')
+ $xml .= 'geschlechtX. ']]> ';
+ $xml .= 'geburtsjahr. ']]> ';
+ $xml .= 'staatsangehoerigkeit. ']]> ';
+ $xml .= 'hoechste_abgeschlossene_ausbildung. ']]> ';
+ $xml .= 'habilitation. ']]> ';
+ $xml .= (!is_null($person->hauptberufcode))
+ ? 'hauptberufcode. ']]> '
+ : '';
+
+ foreach ($person->verwendung_arr as $verwendung)
+ {
+ $xml .= '';
+ $xml .= 'verwendung_code. ']]> ';
+ $xml .= 'ba1code. ']]> ';
+ $xml .= 'ba2code. ']]> ';
+ $xml .= 'vzae. ']]> ';
+ $xml .= 'jvzae. ']]> ';
+ $xml .= ' ';
+ }
+
+ foreach ($person->funktion_arr as $funktion)
+ {
+ $xml .= '';
+ $xml .= 'funktionscode. ']]> ';
+ $xml .= (!is_null($funktion->besondereQualifikationCode))
+ ? 'besondereQualifikationCode. ']]> '
+ : '';
+
+ if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7)
+ {
+ if (is_array($funktion->studiengang))
+ {
+ foreach ($funktion->studiengang as $studiengang)
+ {
+ $xml .= '';
+ $xml .= ' ';
+ $xml .= ' ';
+ }
+ }
+ else if (!is_null($funktion->studiengang))
+ {
+ $xml .= '';
+ $xml .= 'studiengang. ']]> ';
+ $xml .= ' ';
+ }
+ }
+
+ $xml .= ' ';
+ }
+
+ foreach ($person->lehre_arr as $lehre)
+ {
+ $xml .= '';
+ $xml .= 'StgKz. ']]> ';
+ $xml .= 'SommersemesterSWS. ']]> ';
+ $xml .= 'WintersemesterSWS. ']]> ';
+ $xml .= ' ';
+ }
+
+ $xml .= ' ';
+ }
+
+ $xml .= ' ';
+ $xml .= ' ';
+
+ return $xml;
+}
+
+/**
+ * Prints the HTML Table with all Persons
+ * @param $person_arr Array of PersonData
+ */
+function _outputHTML($person_arr)
+{
+ echo '
+
+ BIS - Meldung Personal
+
+ ';
+ include('../../include/meta/jquery.php');
+ include('../../include/meta/jquery-tablesorter.php');
+ echo '
+
+
+ Personalmeldung ';
+
+ outputPlausibilitaetschecks($person_arr);
+ echo '
+
+ ';
+
+ echo "Meldedaten ";
+ echo "Anzahl der gemeldeten Personen: ".count($person_arr);
+
+ echo '
+
+
+
+ PersNr
+ Vorname
+ Nachname
+ UID
+ Geschlecht (X)
+ Geb.Jahr
+ Staat
+ Höchste Ausb.
+ Habil.
+ Hautpberufcode
+ Verwendung
+ Funktion
+ Lehre
+
+
+ ';
+
+
+ foreach ($person_arr as $person)
+ {
+ echo '
+
+ '.$person->personalnummer.'
+ '.$person->vorname.'
+ '.$person->nachname.'
+ '.$person->uid.'
+ '.$person->geschlecht.($person->geschlecht=='x'?'('.$person->geschlechtX.')':'').'
+ '.$person->geburtsjahr.'
+ '.$person->staatsangehoerigkeit.'
+ '.$person->hoechste_abgeschlossene_ausbildung.'
+ '.$person->habilitation.'
+ '.$person->hauptberufcode.' ';
+
+ echo '';
+
+ if (count($person->verwendung_arr) > 0)
+ {
+ echo '
+
+
+
+ Verwendung
+ Ba1Code
+ Ba2Code
+ VZÄ
+ JVZÄ
+
+
+
+ ';
+
+ foreach ($person->verwendung_arr as $verwendung)
+ {
+ echo '
+
+ '.$verwendung->verwendung_code.'
+ '.$verwendung->ba1code.'
+ '.$verwendung->ba2code.'
+ '.$verwendung->vzae.'
+ '.$verwendung->jvzae.'
+ ';
+ }
+ echo '
+
';
+ }
+ echo ' ';
+
+ echo '';
+
+ if (count($person->funktion_arr) > 0)
+ {
+ echo '
+
+
+
+ Funktion
+ Bes.Qual
+ StgKZ
+
+
+
+ ';
+
+ foreach ($person->funktion_arr as $funktion)
+ {
+ echo '
+
+ '. $funktion->funktionscode. '
+ '. $funktion->besondereQualifikationCode. '
+ ';
+
+ if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7)
+ {
+ if (is_array($funktion->studiengang))
+ {
+ foreach ($funktion->studiengang as $studiengang)
+ {
+ echo $studiengang.' ';
+ }
+ }
+ else if (!is_null($funktion->studiengang))
+ {
+ echo $funktion->studiengang.' ';
+ }
+ }
+ echo '
+ ';
+ }
+ echo '
+
';
+ }
+ echo ' ';
+
+ echo '';
+ if ($person->lehre_arr > 0)
+ {
+ echo '
+
+
+
+ StgKZ
+ SommerSWS
+ WinterSWS
+
+
+ ';
+
+ foreach ($person->lehre_arr as $lehre)
+ {
+ echo '
+
+ '. $lehre->StgKz. '
+ '. $lehre->SommersemesterSWS. '
+ '. $lehre->WintersemesterSWS. '
+ ';
+ }
+
+ echo '
+
';
+ }
+ echo '
+ ';
+ }
+
+ echo '
+
';
+}
+
+function outputPlausibilitaetschecks($person_arr)
+{
+ echo "Plausibilitätsprüfung ";
+
+ foreach ($person_arr as $row)
+ {
+ $msg = array();
+ if ($row->personalnummer == '')
+ {
+ $msg[] = 'Personalnummer fehlt ';
+ }
+ if ($row->geschlecht == '')
+ {
+ $msg[] = 'Geschlecht fehlt ';
+ }
+ if ($row->geburtsjahr == '')
+ {
+ $msg[] = 'Geburtsjahr fehlt ';
+ }
+ if (date('Y') - $row->geburtsjahr >= 100)
+ {
+ $msg[] = 'Person darf nicht älter als 100 sein ';
+ }
+ if (date('Y') - $row->geburtsjahr <= 10)
+ {
+ $msg[] = 'Person darf nicht jünger als 10 sein ';
+ }
+ if ($row->staatsangehoerigkeit == '')
+ {
+ $msg[] = 'Staatsangehoerigkeit fehlt ';
+ }
+ if ($row->hoechste_abgeschlossene_ausbildung == '')
+ {
+ $msg[] = 'Höchste Abgeschlossene Ausbildung fehlt ';
+ }
+ if ($row->habilitation == '')
+ {
+ $msg[] = 'Habilitation fehlt ';
+ }
+
+ if (isset($row->verwendung_arr) && is_array($row->verwendung_arr) && count($row->verwendung_arr) > 0)
+ {
+ foreach ($row->verwendung_arr as $verwendung)
+ {
+ if($verwendung->vzae < -1)
+ {
+ $msg[] = 'VZAE ist zu klein -> Vertragsstunden prüfen';
+ }
+ if($verwendung->vzae > 100)
+ {
+ $msg[] = 'VZAE ist zu gross -> Vertragsstunden prüfen';
+ }
+
+ if($verwendung->jvzae < -1)
+ {
+ $msg[] = 'JVZAE ist zu klein -> Vertragsstunden prüfen';
+ }
+ if($verwendung->jvzae > 100)
+ {
+ $msg[] = 'JVZAE ist zu gross -> Vertragsstunden prüfen';
+ }
+ }
+ }
+
+ if (isset($row->lehre_arr) && is_array($row->lehre_arr) && count($row->lehre_arr) > 0)
+ {
+ foreach ($row->lehre_arr as $lehre)
+ {
+ if ($lehre->SommersemesterSWS > 40)
+ {
+ $msg[] = 'Sommersemester SWS zu groß '.$lehre->SommersemesterSWS;
+ }
+ if ($lehre->WintersemesterSWS < 0)
+ {
+ $msg[] = 'Wintersemester SWS zu groß '.$lehre->WintersemesterSWS;
+ }
+ if ($lehre->SommersemesterSWS < 0)
+ {
+ $msg[] = 'Sommersemester SWS zu klein '.$lehre->SommersemesterSWS;
+ }
+ if ($lehre->WintersemesterSWS < 0)
+ {
+ $msg[] = 'Wintersemester SWS zu klein '.$lehre->WintersemesterSWS;
+ }
+ }
+ }
+
+ if (count($msg) > 0)
+ {
+ echo "Fehler bei ".$row->vorname.' '.$row->nachname.' : '.implode($msg,', ');
+ echo "\n ";
+ }
}
- echo ' ';
}
-echo '
';
-echo 'Mitarbeiter-BIS-Meldung archivieren ';
-echo "XML-Datei für Mitarbeiter-BIS-Meldung ";
-?>
diff --git a/vilesci/bis/personalmeldung_uebersicht.php b/vilesci/bis/personalmeldung_uebersicht.php
index c640d09d3..7f14dd4ef 100644
--- a/vilesci/bis/personalmeldung_uebersicht.php
+++ b/vilesci/bis/personalmeldung_uebersicht.php
@@ -42,10 +42,6 @@ echo '
Plausibilitätsprüfungen Verwendungen
Diverse Prüfungen auf inkonsistente Daten
-
- Funktionen generieren
- Funktionen zu den Verwendungen generieren (SWS pro Studiengang)
-
Meldung generieren
Abschließende Plausibilitätsprüfungen durchführen und Meldung generieren
diff --git a/vilesci/lehre/lehreinheiten_vorrueckung.php b/vilesci/lehre/lehreinheiten_vorrueckung.php
index af12376ae..7d48c4778 100644
--- a/vilesci/lehre/lehreinheiten_vorrueckung.php
+++ b/vilesci/lehre/lehreinheiten_vorrueckung.php
@@ -32,6 +32,7 @@ require_once('../../include/lehreinheitgruppe.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/gruppe.class.php');
+require_once('../../include/bisverwendung.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -162,6 +163,14 @@ elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
Alle Lehraufträge werden mit dem aktuell hinterlegten Standard-Stundensatz der/des Lehrenden vorgerückt
';
}
+elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
+ && VILESCI_STUNDENSATZ_VORRUECKUNG != ''
+ && VILESCI_STUNDENSATZ_VORRUECKUNG == 'nachbeschaeftigungsart')
+{
+ echo '
+ Stundensätze werden abhängig von der Beschaeftigungsart aktualisiert.
+ ';
+}
else
{
echo '
@@ -219,6 +228,9 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
}
}
+ $stsem_nach_obj = new studiensemester();
+ $stsem_nach_obj->load($stsem_nach);
+
if ($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
@@ -314,6 +326,38 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
$stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid);
$lem_obj->stundensatz = $stundensatz->stundensatz;
}
+ // Wenn VILESCI_STUNDENSATZ_VORRUECKUNG nachbeschaeftigungsart ist, wird
+ // bei echten Dienstvertraegen mit voller inkludierter Lehre (-1) der Stundensatz auf null gesetzt
+ // bei echten Dienstvertraegen mit teilweise oder nicht inkludierter Lehre der Default Stundensatz gesetzt
+ // bei sonstigen Dienstvertraegen der Default Stundensatz gesetzt
+ elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
+ && VILESCI_STUNDENSATZ_VORRUECKUNG != ''
+ && VILESCI_STUNDENSATZ_VORRUECKUNG == 'nachbeschaeftigungsart')
+ {
+ if ($lem_obj->stundensatz != '0')
+ {
+ $stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid);
+ $lem_obj->stundensatz = $stundensatz->stundensatz;
+
+ $bisverwendung = new bisverwendung();
+ if(!$bisverwendung->getVerwendungRange($row_lem->mitarbeiter_uid, $stsem_nach_obj->start, $stsem_nach_obj->ende))
+ {
+ $bisverwendung->getLastAktVerwendung($row_lem->mitarbeiter_uid);
+ $bisverwendung->result[] = $bisverwendung;
+ }
+
+ foreach($bisverwendung->result as $row_verwendung)
+ {
+ // Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz
+ // geliefert da dies im Vertrag inkludiert ist.
+ if ($row_verwendung->ba1code == 103 && $row_verwendung->inkludierte_lehre == -1)
+ {
+ $lem_obj->stundensatz = '';
+ break;
+ }
+ }
+ }
+ }
$lem_obj->insertamum = date('Y-m-d H:i:s');
$lem_obj->insertvon = 'Vorrueckung_'.$user;
$lem_obj->ext_id = '';
diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php
index e38be43bf..88e7ef4d8 100644
--- a/vilesci/stammdaten/auswertung_fhtw.php
+++ b/vilesci/stammdaten/auswertung_fhtw.php
@@ -504,7 +504,7 @@ if ($testende)
// Setzt "teilgenommen" (Zum Reihungstest angetreten) auf TRUE
$teilgenommen = new reihungstest();
- $teilgenommen->getPersonReihungstest($prestudentrolle->person_id, $_POST['reihungstest_id']);
+ $teilgenommen->getPersonReihungstest($prestudentrolle->person_id, $_POST['reihungstest_id'], $prestudentrolle->studienplan_id);
$teilgenommen->new = false;
$teilgenommen->teilgenommen = true;
@@ -565,6 +565,7 @@ if ($testende)
$mailtext .= ' Es haben '.$anzahl.' Person(en) aus dem Studiengang '.$stg->kuerzel.'-'.$orgForm.' teilgenommen.';
$mailtext .= 'Link zur Auswertung ';
$mailtext .= 'Link zur Pivot-Tabelle für die Priorisierung ';
+ $mailtext .= ' Reihung der BewerberInnen: Prio 1 innerhalb von 2 Werktagen, Prio 2 am 3. Werktag und Prio 3 am 4. Werktag';
$mailtext .= '
@@ -765,7 +766,7 @@ if ($punkteUebertragen)
}
else
{
- $msg_warning .= ' Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte eingetragen.';
+ $msg_warning .= ' Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.';
}
}
else
@@ -778,6 +779,7 @@ if ($punkteUebertragen)
{
$ort_kurzbz = $setRTPunkte->ort_kurzbz;
}
+ $setRTPunkte = new reihungstest();
$setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $_POST['reihungstest_id'], $prestudentrolle->studienplan_id);
// Check, ob Punkte schon befüllt sind
@@ -787,6 +789,7 @@ if ($punkteUebertragen)
$setRTPunkte->person_id = $prestudentrolle->person_id;
$setRTPunkte->reihungstest_id = $_POST['reihungstest_id'];
$setRTPunkte->anmeldedatum = '';
+ $setRTPunkte->teilgenommen = true;
$setRTPunkte->ort_kurzbz = $ort_kurzbz;
$setRTPunkte->studienplan_id = $prestudentrolle->studienplan_id;
$setRTPunkte->punkte = $rtpunkte;
@@ -804,7 +807,7 @@ if ($punkteUebertragen)
}
else
{
- $msg_warning .= ' Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte eingetragen.';
+ $msg_warning .= ' Der Prestudent '.$array['prestudent_id'].' hat bereits Punkte für den Studienplan '.$prestudentrolle->studienplan_id.' eingetragen.';
}
}
@@ -818,7 +821,7 @@ if ($punkteUebertragen)
if ($prestudent->punkte == '')
{
$prestudent->new = false;
- $prestudent->punkte = number_format($array['ergebnis'], 4);
+ $prestudent->punkte = $rtpunkte;
$prestudent->reihungstestangetreten = true;
$setRTPunkte->updateamum = date('Y-m-d H:i:s');
$setRTPunkte->updatevon = $user;
@@ -1197,7 +1200,7 @@ if (isset($_REQUEST['reihungstest']))
}
if ($orgform_kurzbz != '' && $studiengang != '')
{
- $query .= " AND tbl_ablauf.studienplan_id=(
+ $query .= " AND (tbl_ablauf.studienplan_id=(
SELECT studienplan_id FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING (studienordnung_id)
WHERE studiengang_kz=".$db->db_add_param($studiengang, FHC_INTEGER)."
@@ -1207,7 +1210,8 @@ if (isset($_REQUEST['reihungstest']))
AND ((SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=tbl_studienordnung.gueltigvon) <= now()
OR tbl_studienordnung.gueltigvon IS NULL)
AND ((SELECT ende FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=tbl_studienordnung.gueltigbis) >= now() OR tbl_studienordnung.gueltigbis IS NULL)
- ORDER BY studienplan_id DESC LIMIT 1)";
+ ORDER BY studienplan_id DESC LIMIT 1)
+ OR tbl_ablauf.studienplan_id IS NULL)";
}
//$query .= " AND nachname='Al-Mafrachi'";
$query .= " ORDER BY tbl_ablauf.studiengang_kz, tbl_ablauf.semester, reihung";
@@ -1224,7 +1228,11 @@ if (isset($_REQUEST['reihungstest']))
}
$gebiet[$row->gebiet_id]->name = $row->gebiet;
$gebiet[$row->gebiet_id]->gebiet_id = $row->gebiet_id;
- $gebiet[$row->gebiet_id]->gewicht = $row->gewicht;
+ //gewicht ist meist für alle Studiengänge gleich (Bachelor, Master und Distance haben jeweilsandere Gebiete)
+ if (!isset($gebiet[$row->gebiet_id]->gewicht))
+ {
+ $gebiet[$row->gebiet_id]->gewicht = $row->gewicht;
+ }
}
// Alle Ergebnisse laden
@@ -1469,18 +1477,6 @@ if (isset($_REQUEST['reihungstest']))
}
$ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->name = $row->gebiet;
- /*if ($row->punkte == 0 && $row->punkte != '')
- {
- $prozent = '0';
- }
- elseif ($row->punkte >= $row->maxpunkte) //wenn maxpunkte ueberschritten wurde -> 100%
- {
- $prozent = 100;
- }
- else
- {
- $prozent = ($row->punkte / $row->maxpunkte) * 100;
- }*/
if ($row->punkte >= $row->maxpunkte)
{
@@ -1493,19 +1489,23 @@ if (isset($_REQUEST['reihungstest']))
$ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->prozent = null;
$ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->punkte = $punkte;
+ $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->punktemitoffset = null;
// Punkte berechnen
if (isset($punkte))
{
+ //offset zur Vermeidung negativer Prozentzahlen
+ $punkte_positiv = $punkte + $row->offsetpunkte;
+ $maxpunkte_positiv = $row->maxpunkte + $row->offsetpunkte;
+ $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->punktemitoffset = $punkte_positiv;
+
if ($row->punkte >= $row->maxpunkte)
+ {
$ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->prozent = 100;
+ }
else
{
- //offset zur Vermeidung negativer Prozentzahlen
- $punkte_positiv = $punkte + $row->offsetpunkte;
- $maxpunkte_positiv = $row->maxpunkte + $row->offsetpunkte;
- //Formel: Summe(Punkte/Maxpunkte * Gewicht)
- $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->prozent = $maxpunkte_positiv > 0 ? $punkte_positiv / $maxpunkte_positiv * /*$row->gewicht **/ 100 : null;
+ $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->prozent = $maxpunkte_positiv > 0 ? $punkte_positiv / $maxpunkte_positiv * 100 : null;
}
}
@@ -1535,6 +1535,15 @@ if (isset($_REQUEST['reihungstest']))
$ergebnis[$row->prestudent_id]->gesamtpunkte = $punkte;
}
+ if (isset($ergebnis[$row->prestudent_id]->gesamtoffsetpunkte))
+ {
+ $ergebnis[$row->prestudent_id]->gesamtoffsetpunkte += $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->punktemitoffset;
+ }
+ else
+ {
+ $ergebnis[$row->prestudent_id]->gesamtoffsetpunkte = $ergebnis[$row->prestudent_id]->gebiet[$row->gebiet_id]->punktemitoffset;
+ }
+
if (isset($row->punkte))
{
if (isset($ergebnis[$row->prestudent_id]->gesamtgewicht))
@@ -1546,28 +1555,6 @@ if (isset($_REQUEST['reihungstest']))
$ergebnis[$row->prestudent_id]->gesamtgewicht = $row->gewicht;
}
}
-
- // Gesamtpunkte ohne Physik
-/* if ($row->gebiet_id != 10)
- {
- if (isset($ergebnis[$row->prestudent_id]->gesamt_ohne_physik))
- {
- $ergebnis[$row->prestudent_id]->gesamt_ohne_physik += $prozent * $row->gewicht;
- }
- else
- {
- $ergebnis[$row->prestudent_id]->gesamt_ohne_physik = $prozent * $row->gewicht;
- }
-
- if (isset($ergebnis[$row->prestudent_id]->gesamtpunkte_ohne_physik))
- {
- $ergebnis[$row->prestudent_id]->gesamtpunkte_ohne_physik += $punkte;
- }
- else
- {
- $ergebnis[$row->prestudent_id]->gesamtpunkte_ohne_physik = $punkte;
- }
- }*/
}
}
@@ -1714,32 +1701,33 @@ if (isset($_REQUEST['format']) && $_REQUEST['format'] == 'xls')
$worksheet->mergeCells(0, 12, 1, 12);
$maxlength[12] = 20;
- $spalte = 11;
+ $spalte = 12;
$zeile = 0;
foreach ($gebiet AS $gbt)
{
- ++$spalte;
- $worksheet->write($zeile, ++$spalte, strip_tags($gbt->name) . (isset($gbt->gewicht) ? " (Gew: $gbt->gewicht)" : ""), $format_bold_border);
- $worksheet->mergeCells($zeile, $spalte, 0, $spalte + 1);
- $maxlength[$spalte] = 10;
+ $worksheet->write($zeile, ++$spalte, strip_tags($gbt->name) . ( isset($gbt->gewicht) ? " (Gew: $gbt->gewicht)" : ""), $format_bold_border);
+ $worksheet->mergeCells($zeile, $spalte, 0, $spalte + 2);
+ $spalte += 2;
}
- $worksheet->write($zeile, ++$spalte + 1, 'Gesamt', $format_bold_border);
- $worksheet->mergeCells($zeile, ++$spalte, 0, $spalte + 1);
- $maxlength[$spalte] = 12;
+ $worksheet->write($zeile, ++$spalte, 'Gesamt', $format_bold_border);
+ $worksheet->mergeCells($zeile, $spalte, 0, $spalte + 2);
$spalte = 12;
$zeile = 0;
foreach ($gebiet AS $gbt)
{
+ $maxlength[$spalte +1] = $maxlength[$spalte + 2] = $maxlength[$spalte + 3] = 14;
$worksheet->write($zeile + 1, ++$spalte, 'Punkte', $format_bold_border);
+ $worksheet->write($zeile + 1, ++$spalte, 'Punkte + Offset', $format_bold_border);
$worksheet->write($zeile + 1, ++$spalte, 'Prozent', $format_bold_border);
- $maxlength[$spalte] = 10;
}
+ $maxlength[$spalte +1] = $maxlength[$spalte + 2] = 14;
+ $maxlength[$spalte + 3] = 17;
$worksheet->write($zeile + 1, ++$spalte, 'Punkte', $format_bold_border);
- $worksheet->write($zeile + 1, ++$spalte, 'Prozent', $format_bold_border);
- $maxlength[$spalte] = 10;
+ $worksheet->write($zeile + 1, ++$spalte, 'Punkte + Offset', $format_bold_border);
+ $worksheet->write($zeile + 1, ++$spalte, 'Prozent (gewichtet)', $format_bold_border);
$maxspalten = $spalte;
@@ -1784,6 +1772,14 @@ if (isset($_REQUEST['format']) && $_REQUEST['format'] == 'xls')
{
$worksheet->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->punkte, $format_punkte_rot);
}
+ if ($erg->gebiet[$gbt->gebiet_id]->punktemitoffset != '' && $erg->gebiet[$gbt->gebiet_id]->punktemitoffset != '0')
+ {
+ $worksheet->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->punktemitoffset, $format_punkte);
+ }
+ else
+ {
+ $worksheet->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->punktemitoffset, $format_punkte_rot);
+ }
if ($erg->gebiet[$gbt->gebiet_id]->prozent != '0%')
{
$worksheet->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->prozent / 100, $format_prozent);
@@ -1797,10 +1793,12 @@ if (isset($_REQUEST['format']) && $_REQUEST['format'] == 'xls')
{
$worksheet->write($zeile, ++$spalte, '');
$worksheet->write($zeile, ++$spalte, '');
+ $worksheet->write($zeile, ++$spalte, '');
}
}
$worksheet->writeNumber($zeile, ++$spalte, $erg->gesamtpunkte, $format_punkte);
- $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamt, $format_punkte);
+ $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamtoffsetpunkte, $format_punkte);
+ $worksheet->writeNumber($zeile, ++$spalte, $erg->gesamt / 100, $format_prozent);
}
}
@@ -1810,165 +1808,6 @@ if (isset($_REQUEST['format']) && $_REQUEST['format'] == 'xls')
$worksheet->setColumn($i, $i, $breite);
}
- // Worksheet ohne Physik nur für Bachelor-Studiengänge
- /*if (isset($studiengangObj) && $studiengangObj->typ == 'b')
- {
- $worksheetOhnePhsyik =& $workbook->addWorksheet("Auswertung OHNE Physik " . ($titel_studiengang ? $stg_arr[$_REQUEST['studiengang']] : '') . ($titel_semester ? ' ' . $semester . '.Semester' : ''));
- $worksheetOhnePhsyik->setInputEncoding('utf-8');
- $worksheetOhnePhsyik->setZoom(85);
-
- $spalte = 0;
- $zeile = 0;
-
- $worksheetOhnePhsyik->write(0, $spalte, 'PrestudentIn_ID', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 0, 1, 0);
- $maxlength[0] = 15;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'Nachname', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 1, 1, 1);
- $maxlength[1] = 15;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'Vorname', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 2, 1, 2);
- $maxlength[2] = 15;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'GebDatum', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 3, 1, 3);
- $maxlength[3] = 10;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'G', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 4, 1, 4);
- $maxlength[4] = 2;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'Registriert', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 5, 1, 5);
- $maxlength[5] = 18;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'STG', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 6, 1, 6);
- $maxlength[6] = 4;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'Studiengang', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 7, 1, 7);
- $maxlength[7] = 25;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'S', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 8, 1, 8);
- $maxlength[8] = 2;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'OrgForm', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 9, 1, 9);
- $maxlength[9] = 8;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'Prio', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 10, 1, 10);
- $maxlength[10] = 5;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'ZGV', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 11, 1, 11);
- $maxlength[11] = 20;
- $worksheetOhnePhsyik->write(0, ++$spalte, 'ZGV MA', $format_bold);
- $worksheetOhnePhsyik->mergeCells(0, 12, 1, 12);
- $maxlength[12] = 20;
-
- $spalte = 11;
- $zeile = 0;
-
- foreach ($gebiet AS $gbt)
- {
- if ($gbt->gebiet_id == 10)
- {
- continue;
- }
- ++$spalte;
- $worksheetOhnePhsyik->write($zeile, ++$spalte, strip_tags($gbt->name), $format_bold_border);
- $worksheetOhnePhsyik->mergeCells($zeile, $spalte, 0, $spalte + 1);
- $maxlength[$spalte] = 10;
- }
- $worksheetOhnePhsyik->write($zeile, ++$spalte + 1, 'Gesamt', $format_bold_border);
- $worksheetOhnePhsyik->mergeCells($zeile, ++$spalte, 0, $spalte + 1);
- $maxlength[$spalte] = 12;
-
- $spalte = 12;
- $zeile = 0;
-
- foreach ($gebiet AS $gbt)
- {
- if ($gbt->gebiet_id == 10)
- {
- continue;
- }
- $worksheetOhnePhsyik->write($zeile + 1, ++$spalte, 'Punkte', $format_bold_border);
- $worksheetOhnePhsyik->write($zeile + 1, ++$spalte, 'Prozent', $format_bold_border);
- $maxlength[$spalte] = 10;
- }
- $worksheetOhnePhsyik->write($zeile + 1, ++$spalte, 'Punkte', $format_bold_border);
- $worksheetOhnePhsyik->write($zeile + 1, ++$spalte, 'Prozent', $format_bold_border);
- $maxlength[$spalte] = 10;
-
- $maxspalten = $spalte;
-
- $zeile = 1;
- $spalte = 0;
-
- if (isset($ergb))
- {
- foreach ($ergb AS $erg)
- {
- $zeile++;
- $spalte = 0;
- $worksheetOhnePhsyik->write($zeile, $spalte, $erg->prestudent_id);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->nachname);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->vorname);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->gebdatum, $format_date);
- if ($erg->geschlecht == 'm')
- {
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->geschlecht, $format_male);
- }
- else
- {
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->geschlecht, $format_female);
- }
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->registriert, $format_registriert);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->stg_kurzbz);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->stg_bez);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->ausbildungssemester);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->orgform);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $erg->prioritaet);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $zgv_arr[$erg->zgv]);
- $worksheetOhnePhsyik->write($zeile, ++$spalte, $zgvma_arr[$erg->zgvma]);
- foreach ($gebiet AS $gbt)
- {
- if ($gbt->gebiet_id == 10)
- {
- continue;
- }
- if (isset($erg->gebiet[$gbt->gebiet_id]))
- {
- if ($erg->gebiet[$gbt->gebiet_id]->punkte != '' && $erg->gebiet[$gbt->gebiet_id]->punkte != '0')
- {
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->punkte, $format_punkte);
- }
- else
- {
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->punkte, $format_punkte_rot);
- }
- if ($erg->gebiet[$gbt->gebiet_id]->prozent != '0%')
- {
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->prozent / 100, $format_prozent);
- }
- else
- {
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gebiet[$gbt->gebiet_id]->prozent / 100, $format_prozent_rot);
- }
- }
- else
- {
- $worksheetOhnePhsyik->write($zeile, ++$spalte, '');
- $worksheetOhnePhsyik->write($zeile, ++$spalte, '');
- }
- }
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gesamtpunkte_ohne_physik, $format_punkte);
- $worksheetOhnePhsyik->writeNumber($zeile, ++$spalte, $erg->gesamt_ohne_physik, $format_punkte);
- }
- }
-
- //Die Breite der Spalten setzen
- foreach ($maxlength as $i => $breite)
- {
- $worksheetOhnePhsyik->setColumn($i, $i, $breite);
- }
- }*/
-
if (isset($erg_kat) && count($erg_kat) > 0)
{
// Creating second worksheet
@@ -2159,7 +1998,7 @@ else
$("#auswertung_table").tablesorter(
{
widgets: ["zebra", "filter", "columnSelector"],
- sortList: [[15,1],[17,1],[3,0],[4,0]],//16th fake hidden column for correct sort with colspan
+ sortList: [[15,1],[18,1],[3,0],[4,0]],//16th (index 15) fake hidden column for correct sort with colspan
headers: {0: { sorter: false, filter: false}, 2: { sorter: false, filter: false}, 4: { dateFormat: "ddmmyyyy" }, 15: { sorter: false, filter: false}}
/*widgetOptions : {
columnSelector_container : $("#columnSelector"),
@@ -2574,6 +2413,10 @@ else
$("#msgbox").show();
$("#msgbox").append(data["msg_success"]);
}
+ else
+ {
+ $(".loaderIcon").hide();
+ }
if(data["msg_warning"] !== "")
{
$("#msgbox").attr("class","alert alert-warning");
@@ -2582,6 +2425,10 @@ else
$("#msgbox").append(data["msg_warning"]);
//$("#msgbox").html(data["msg"]).delay(2000).fadeOut();
}
+ else
+ {
+ $(".loaderIcon").hide();
+ }
if(data["msg_error"] !== "")
{
$("#msgbox").attr("class","alert alert-danger");
@@ -2589,6 +2436,10 @@ else
$("#msgbox").show();
$("#msgbox").append(data["msg_error"]);
}
+ else
+ {
+ $(".loaderIcon").hide();
+ }
},
error: function(data)
{
@@ -2957,22 +2808,24 @@ else
Raum
TG
- Gesamt ';
+ Gesamt ';
foreach ($gebiet AS $gbt)
{
- echo '' . $gbt->name . ' ';
+ echo '' . $gbt->name . ' ';
}
echo '
Punkte
- Prozent ';
+ Punkte mit Offset
+ Prozent (gewichtet) ';
foreach ($gebiet AS $gbt)
{
echo "Punkte ";
+ echo "Punkte mit Offset ";
echo "Prozent ";
}
@@ -3009,7 +2862,7 @@ else
$erg->raum
".($erg->teilgenommen == true ? " " : "")." ";
//$erg->idnachweis
- $gesamtprozent = ($erg->gesamt != '' ? number_format($erg->gesamt, 2, ',', ' ') : '');
+ $gesamtprozent = ($erg->gesamt != '' ? number_format($erg->gesamt, 2, ',', ' ') . ' %': '');
echo ''. $gesamtprozent .' ';
echo ' ';
// Punkte können nur gelöscht werden, solange "Zum Reihungstest angetreten" nicht gesetzt ist
@@ -3027,25 +2880,16 @@ else
echo ' ' . ($erg->gesamtpunkte != '' ? number_format($erg->gesamtpunkte, 2, ',', ' ') : '') . ' ';
}
echo ' ';
-/* if (!isset($erg->gesamtpunkte_ohne_physik))
- {
- $erg->gesamtpunkte_ohne_physik = '';
- }*/
-/* if (!isset($erg->gesamt_ohne_physik))
- {
- $erg->gesamt_ohne_physik = '';
- }*/
+
+ echo '
+ ' . ($erg->gesamtoffsetpunkte != '' ? number_format($erg->gesamtoffsetpunkte, 2, ',', ' ') : '') . '
+ ';
+
echo '
' . $gesamtprozent . '
'.$erg->gesamt.'
';
-/* echo '
- ' . ($erg->gesamtpunkte_ohne_physik != '' ? number_format($erg->gesamtpunkte_ohne_physik, 2, ',', ' ') : '') . '
- ';*/
-/* echo '
- ' . ($erg->gesamt_ohne_physik != '' ? number_format($erg->gesamt_ohne_physik, 2, ',', ' ') : '') . '
- '.$erg->gesamt_ohne_physik.'
- ';*/
+
foreach ($gebiet AS $gbt)
{
if (isset($erg->gebiet[$gbt->gebiet_id]))
@@ -3077,11 +2921,12 @@ else
echo ' ' . ($erg->gebiet[$gbt->gebiet_id]->punkte != '' ? number_format($erg->gebiet[$gbt->gebiet_id]->punkte, 2, ',', ' ') : '') . ' ';
}
echo '';
+ echo '' . ($erg->gebiet[$gbt->gebiet_id]->punktemitoffset != '' ? number_format($erg->gebiet[$gbt->gebiet_id]->punktemitoffset, 2, ',', ' ') : '') . ' ';
echo '' . ($erg->gebiet[$gbt->gebiet_id]->prozent != '' ? number_format($erg->gebiet[$gbt->gebiet_id]->prozent, 2, ',', ' ') . ' %' : '') . ' ';
}
else
{
- echo ' ';
+ echo ' ';
}
}