diff --git a/application/config/navigation.php b/application/config/navigation.php index 827aaa154..d6f4b8452 100644 --- a/application/config/navigation.php +++ b/application/config/navigation.php @@ -1,6 +1,4 @@ '', 'description' => 'Vilesci', 'expand' => true, - 'sort' => 1, - 'requiredPermissions' => 'basis/vilesci:r' - ), - 'reihungstest' => array( - 'link' => site_url('organisation/Reihungstest'), - 'icon' => 'list-ol', - 'description' => 'Reihungstests', - 'expand' => true, 'sort' => 10, - 'requiredPermissions' => 'infocenter:r' + 'requiredPermissions' => 'basis/vilesci:r' ) ) ), @@ -47,14 +37,20 @@ $config['navigation_header'] = array( 'description' => 'CIS', 'sort' => 10 ), - 'infocenter' => array( - 'link' => site_url('system/infocenter/InfoCenter'), - 'icon' => 'info', - 'description' => 'Infocenter', + 'reihungstest' => array( + 'link' => site_url('organisation/Reihungstest'), + 'description' => 'Reihungstests', 'expand' => true, 'sort' => 20, 'requiredPermissions' => 'infocenter:r' ), + 'infocenter' => array( + 'link' => site_url('system/infocenter/InfoCenter'), + 'description' => 'Infocenter', + 'expand' => true, + 'sort' => 30, + 'requiredPermissions' => 'infocenter:r' + ), ) ), 'Personen' => array( @@ -71,6 +67,23 @@ $config['navigation_header'] = array( 'requiredPermissions' => 'admin:r' ) ) + ), + 'Administration' => array( + 'link' => '#', + 'icon' => 'gear', + 'description' => 'Administration', + 'expand' => false, + 'sort' => 50, + 'requiredPermissions' => 'admin:r', + 'children'=> array( + 'extensions' => array( + 'link' => site_url('system/extensions/Manager'), + 'description' => 'Extensions Manager', + 'expand' => true, + 'sort' => 10, + 'requiredPermissions' => 'admin:r' + ) + ) ) ) ); @@ -86,55 +99,6 @@ $config['navigation_menu']['Vilesci/index'] = array( 'description' => 'Dashboard', 'icon' => 'dashboard', 'sort' => 1 - ), - 'lehre' => array( - 'link' => '#', - 'icon' => 'graduation-cap', - 'description' => 'Lehre', - 'expand' => true, - 'sort' => 2, - 'children'=> array( - 'cis' => array( - 'link' => CIS_ROOT, - 'icon' => '', - 'description' => 'CIS', - 'expand' => true, - 'sort' => 1 - ), - 'infocenter' => array( - 'link' => site_url('system/infocenter/InfoCenter'), - 'icon' => 'info', - 'description' => 'Infocenter', - 'expand' => true, - 'sort' => 2, - 'requiredPermissions' => 'infocenter:r' - ), - ) - ), - 'administration' => array( - 'link' => '#', - 'icon' => 'gear', - 'description' => 'Administration', - 'expand' => false, - 'sort' => 3, - 'children'=> array( - 'vilesci' => array( - 'link' => base_url('vilesci'), - 'icon' => '', - 'description' => 'Vilesci', - 'expand' => true, - 'sort' => 1, - 'requiredPermissions' => 'basis/vilesci:r' - ), - 'extensions' => array( - 'link' => site_url('system/extensions/Manager'), - 'icon' => 'cubes', - 'description' => 'Extensions Manager', - 'expand' => true, - 'sort' => 2, - 'requiredPermissions' => 'admin:r' - ) - ) ) ); diff --git a/application/controllers/jobs/LVPlanJob.php b/application/controllers/jobs/LVPlanJob.php new file mode 100644 index 000000000..dd368974c --- /dev/null +++ b/application/controllers/jobs/LVPlanJob.php @@ -0,0 +1,178 @@ + + */ +if (! defined('BASEPATH')) + exit('No direct script access allowed'); + +class LVPlanJob extends FHC_Controller +{ + /** + * Initialize LVPlanJob Class + * + * @return void + */ + public function __construct() + { + // An empty array as parameter will ensure that this controller is ONLY callable from command line + parent::__construct(array()); + + if ($this->input->is_cli_request()) + { + $cli = true; + } + else + { + $this->output->set_status_header(403, 'Jobs must be run from the CLI'); + echo "Jobs must be run from the CLI"; + exit; + } + } + + /** + * Main function index as help + * + * @return void + */ + public function index() + { + $result = "The following are the available command line interface commands\n\n"; + $result .= "php ".$this->config->item('index_page')." jobs/LVPlanJob AddDirectGroups"; + + echo $result.PHP_EOL; + } + + /** + * Check all Courses with direkt Groups attached and adds the Groups to the Schedule if missing + */ + public function addDirectGroups() + { + $studiensemester_arr = array(); + + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + $this->load->model('ressource/Stundenplandev_model', 'StundenplandevModel'); + $this->load->model('education/Lehreinheit_model', 'LehreinheitModel'); + $this->load->model('education/Lehreinheitgruppe_model', 'LehreinheitgruppeModel'); + + // Get actual Studiensemester + $resultsem = $this->StudiensemesterModel->getAktOrNextSemester(); + + if(hasData($resultsem)) + { + $studiensemester_arr[] = $resultsem->retval[0]->studiensemester_kurzbz; + } + else + { + echo 'kein Studiensemester gefunden'; + return false; + } + + // Get nearest Studiensemester to actual + $resultsem = $this->StudiensemesterModel->getNearestFrom($studiensemester_arr[0]); + if(hasData($resultsem)) + { + $studiensemester_arr[] = $resultsem->retval[0]->studiensemester_kurzbz; + } + + foreach($studiensemester_arr as $studiensemester) + { + echo "LVPlanJob/addDirectGroups Studiensemester: ".$studiensemester."\n"; + $succ = 0; + $fail = 0; + + // get all schedule entries where group is missing + $result = $this->StundenplandevModel->getMissingDirectGroups($studiensemester); + if(hasData($result)) + { + foreach($result->retval as $row) + { + $this->LehreinheitModel->addJoin('lehre.tbl_lehrveranstaltung','lehrveranstaltung_id'); + $result_le = $this->LehreinheitModel->loadWhere(array('lehreinheit_id' => $row->lehreinheit_id)); + + // load additional data of course + $unr = null; + $stg_kz = null; + $semester = null; + $gruppe_kurzbz = null; + + if (hasData($result_le)) + { + $le = $result_le->retval[0]; + $unr = $le->unr; + $stg_kz = $le->studiengang_kz; + $semester = $le->semester; + } + else + { + echo 'Failed to load Lehreinheit '.$row->lehreinheit_id; + $fail++; + continue; + } + + // get direct group if course + $result_leg = $this->LehreinheitgruppeModel->getDirectGroup($row->lehreinheit_id); + if (hasData($result_leg)) + { + $gruppe_kurzbz = $result_leg->retval[0]->gruppe_kurzbz; + } + else + { + echo 'Failed to load direct group for le '.$row->lehreinheit_id; + $fail++; + continue; + } + + // add group to schedule + $result = $this->StundenplandevModel->insert( + array( + 'lehreinheit_id' => $row->lehreinheit_id, + 'unr' => $unr, + 'studiengang_kz' => $stg_kz, + 'semester' => $semester, + 'verband' => '', + 'gruppe' => '', + 'gruppe_kurzbz' => $gruppe_kurzbz, + 'mitarbeiter_uid' => $row->mitarbeiter_uid, + 'ort_kurzbz' => $row->ort_kurzbz, + 'datum' => $row->datum, + 'stunde' => $row->stunde, + 'titel' => null, + 'anmerkung' => null, + 'fix' => false, + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => 'lvplanjob', + 'insertvon' => 'lvplanjob', + 'insertamum' => date('Y-m-d H:i:s') + ) + ); + + if (isSuccess($result)) + { + $succ++; + } + else + { + $fail++; + } + } + } + echo "New Entries ".$succ."\n"; + echo "Failed ".$fail."\n"; + } + } +} diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php index e58595bb0..261667002 100644 --- a/application/controllers/jobs/ReihungstestJob.php +++ b/application/controllers/jobs/ReihungstestJob.php @@ -42,6 +42,7 @@ class ReihungstestJob extends FHC_Controller // Load models $this->load->model('crm/Reihungstest_model', 'ReihungstestModel'); + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); // Load helpers $this->load->helper('hlp_sancho_helper'); @@ -102,6 +103,304 @@ class ReihungstestJob extends FHC_Controller } } + public function runZentraleReihungstestAnmeldefristAssistenzJob() + { + // Get placement tests where registration date was yesterday + $result = $this->ReihungstestModel->checkReachedRegistrationDate(11000); + + $reachedRegistration_rt_arr = array(); + + if (hasData($result)) + { + $reachedRegistration_rt_arr = $result->retval; + } + elseif (isError($result)) + { + show_error($result->error); + } + + $applicants_arr = array(); + + foreach ($reachedRegistration_rt_arr as $reihungstest) + { + $applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id); + + if (hasData($applicants)) + { + $applicants_arr = $applicants->retval; + } + elseif (isError($applicants)) + { + show_error($applicants->error); + } + + // Get all Bachelor-Degree-Programs with Mailadress + $bachelorStudiengeange = $this->StudiengangModel->loadStudiengaengeFromTyp('b'); + + if (hasData($bachelorStudiengeange)) + { + $bachelorStudiengeange_arr = $bachelorStudiengeange->retval; + } + elseif (isError($bachelorStudiengeange)) + { + show_error($bachelorStudiengeange->error); + } + + // If a person ist an applicant of this degree-program send mail with application data + // Otherwise inform assistant, that no applicant is registered in this test + foreach ($bachelorStudiengeange_arr as $bachelorStudiengang) + { + $studiengang_kuerzel = strtoupper($bachelorStudiengang->typ.$bachelorStudiengang->kurzbz); + $applicants_list = ''; + $applicantCounter = 0; + $rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"'; + $mailReceipients = ''; // String with all mailadresses + $mailcontent_data_arr = array(); + foreach ($applicants_arr as $applicant) + { + if ($bachelorStudiengang->studiengang_kz == $applicant->studiengang_kz) + { + $mailReceipients .= $applicant->email. ';'; + $applicantCounter ++; + $applicants_list .= ' + + '. $applicant->orgform_kurzbz. ' + '. $applicant->ausbildungssemester. ' + '. $applicant->nachname. ' + '. $applicant->vorname. ' + '. $applicant->zgv_kurzbz. ' + '. $applicant->prioritaet. ' + '. $applicant->qualifikationskurs. ' + '. $applicant->email. ' + + '; + } + } + if ($applicantCounter == 0) + { + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent .= '

Für den Studiengang '.$studiengang_kuerzel.' nehmen keine InteressentInnen an diesem Reihungstest teil

'; + } + else + { + $headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"'; + + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent .= ' +

Folgende ' . $applicantCounter . ' InteressentInnen des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:

+ + + + + + + + + + + + + '; + $mailcontent .= $applicants_list; + $mailcontent .= ' + +
OrgFormSemesterNachnameVornameZGVPrioritätQualikursE-Mail
+ '; + $mailcontent .= '

Mail an alle schicken

'; + } + $mailcontent_data_arr['table'] = $mailcontent; + //$mailcontent_data_arr['link'] = $this->VILESCI_RT_VERWALTUNGS_URL; + //var_dump($mailcontent_data_arr); + // Send email in Sancho design + if (!isEmptyString($mailcontent)) + { + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + array($bachelorStudiengang->email,'kindlm@technikum-wien.at'), + 'Anmeldeschluss Reihungstest ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' ' . $reihungstest->uhrzeit . ' Uhr', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg'); + } + } + } + } + + // Checks, if an applicant was assigned to a test after Anmeldefrist + public function runZentraleReihungstestNachtraeglichHinzugefuegtJob() + { + // Get applicants that have been added to a test after Anmeldefrist + $result = $this->ReihungstestModel->getApplicantAssignedAfterDate(11000); + + $applicants_after_anmeldefrist_arr = array(); + + if (hasData($result)) + { + $applicants_after_anmeldefrist_arr = $result->retval; + } + elseif (isError($result)) + { + show_error($result->error); + } + + $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) + { + foreach ($applicants_after_anmeldefrist_arr as $applicant) + { + if ($studiengang != $applicant->studiengang_kz) + { + if ($studiengang != '' && $studiengang != $applicant->studiengang_kz) + { + $bachelorStudiengang = $this->StudiengangModel->load($studiengang); + $mailcontent .= $applicants_list; + $mailcontent .= ''; + $mailcontent .= '

Mail an alle schicken

'; + $mailcontent_data_arr['table'] = $mailcontent; + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + array($bachelorStudiengang->retval[0]->email,'kindlm@technikum-wien.at'), + 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg'); + $applicants_list = ''; + $mailcontent_data_arr = array(); + } + + $mailcontent = '

Folgende InteressentInnen wurden nach der Anmeldefrist zu einem Reihungstest hinzugefügt.

'; + $mailcontent .= ' + + + + + + + + + + + + + + + '; + } + + $studiengang = $applicant->studiengang_kz; + $mailReceipients .= $applicant->email . ';'; + $applicants_list .= ' + + + + + + + + + + + + + '; + }; + $bachelorStudiengang = $this->StudiengangModel->load($studiengang); + $mailcontent .= $applicants_list; + $mailcontent .= '
Datum des TestsUhrzeit des TestsOrgFormSemesterNachnameVornameZGVPrioritätQualikursE-Mail
' . date_format(date_create($applicant->datum), 'd.m.Y') . '' . $applicant->uhrzeit . '' . $applicant->orgform_kurzbz . '' . $applicant->ausbildungssemester . '' . $applicant->nachname . '' . $applicant->vorname . '' . $applicant->zgv_kurzbz . '' . $applicant->prioritaet . '' . $applicant->qualifikationskurs . '' . $applicant->email . '
'; + $mailcontent .= '

Mail an alle schicken

'; + $mailcontent_data_arr['table'] = $mailcontent; + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + array($bachelorStudiengang->retval[0]->email,'kindlm@technikum-wien.at'), + 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg'); + } + } + + public function runRemindApplicantsOfPlacementTestJob() + { + // Get placement tests with testdate within 3 working days + + // Check if today +3 days is working day + $todayPlus3 = date('Y-m-d', strtotime("+3 days")); + + if (getWorkingDays($todayPlus3, $todayPlus3) == 0) + { + // If not increase counting days till next working day + for ($i = 3; $i < 100; $i++) + { + $dateToCheck = date('Y-m-d', strtotime("+".$i." days")); + if (getWorkingDays($dateToCheck, $dateToCheck) == 1) + { + $nextWorkingDay = $dateToCheck; + break; + } + } + } + else + { + $nextWorkingDay = date('Y-m-d', strtotime("+3 days")); + } + + // Check if a placement test happens on $nextWorkingDay + $result = $this->ReihungstestModel->getTestsOnDate($nextWorkingDay, 11000); + + $testsOndate = array(); + + if (hasData($result)) + { + $testsOndate = $result->retval; + } + elseif (isError($result)) + { + show_error($result->error); + } + + $applicants_arr = array(); + + 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($applicants->error); + } + + foreach ($applicants_arr as $applicant) + { + $mailcontent_data_arr = array(); + $mailcontent_data_arr['anrede'] = $applicant->anrede; + $mailcontent_data_arr['nachname'] = $applicant->nachname; + $mailcontent_data_arr['vorname'] = $applicant->vorname; + $mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y'); + $mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i'); + $mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung; + $mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan; + + sendSanchoMail( + 'Sancho_RemindApplicantsOfTest', + $mailcontent_data_arr, + array($applicant->email,'kindlm@technikum-wien.at'), + 'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder'); + } + } + } + // ------------------------------------------------------------------------ // Private methods /** @@ -118,7 +417,8 @@ class ReihungstestJob extends FHC_Controller // Prepare HTML table with study plans that have no placement tests yet if (!empty($missing_rt_arr)) { - $studienplan_list = ' + $studienplan_list + = ' '; diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 2a8b238fe..343d4ec11 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -527,7 +527,7 @@ class InfoCenter extends Auth_Controller $logparams = array($prestudent_id, $logdata['studiengang_kurzbz'], ''); - if (isset($statusgrund_id)) + if (isset($statusgrund_id) && is_numeric($statusgrund_id)) { $this->StatusgrundModel->addSelect('bezeichnung_mehrsprachig'); $statusgrund_kurzbz = $this->StatusgrundModel->load($statusgrund_id); diff --git a/application/helpers/hlp_common_helper.php b/application/helpers/hlp_common_helper.php index 425b40e3f..9ff72fb91 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -167,3 +167,100 @@ function isEmptyArray($array) { return ($array == null) || ($array != null && !is_array($array) || (is_array($array) && count($array) == 0)); } + +/** + * The function returns the number of business days between two dates and it skips the (static) holidays + * @param string $startDate Date (YYYY-MM-DD) to start counting from (included) + * @param string $endDate Date (YYYY-MM-DD) to end counting (included) + * @param array $dynamic_holidays Optional. Static holidays that have the same date every year are included automatically. + * You can give an array with dates (YYYY-MM-DD) that should be included furthermore + * @return integer Number of working days between $startDate and $endDate + */ +function getWorkingDays($startDate, $endDate, $dynamic_holidays = array()) +{ + //Get year of $startDate + $startYear = substr($startDate, 0, 4); + //Get year of $endDate + $endYear = substr($endDate, 0, 4); + + $datediff = $endYear - $startYear; + $austrian_holidays = array(); + for ($i = 0; $i <= $datediff; $i++) + { + $austrian_holidays[] = $startYear.'-01-01'; // Neujahr + $austrian_holidays[] = $startYear.'-01-06'; // 3 Könige + $austrian_holidays[] = $startYear.'-05-01'; // Staatsfeiertag + $austrian_holidays[] = $startYear.'-08-15'; // Maria Himmelfahrt + $austrian_holidays[] = $startYear.'-10-26'; // Nationalfeiertag + $austrian_holidays[] = $startYear.'-11-01'; // Allerheiligen + $austrian_holidays[] = $startYear.'-12-08'; // Maria Empfängnis + $austrian_holidays[] = $startYear.'-12-25'; // Weihnachten + $austrian_holidays[] = $startYear.'-12-26'; // Stefanitag + $startYear++; + } + if (count($dynamic_holidays) > 0) + { + $austrian_holidays = array_merge($austrian_holidays, $dynamic_holidays); + } + // do strtotime calculations just once + $endDate = strtotime($endDate); + $startDate = strtotime($startDate); + + //The total number of days between the two dates. We compute the no. of seconds and divide it to 60*60*24 + //We add one to inlude both dates in the interval. + $days = ($endDate - $startDate) / 86400 + 1; + + $no_full_weeks = floor($days / 7); + $no_remaining_days = fmod($days, 7); + + //It will return 1 if it's Monday,.. ,7 for Sunday + $the_first_day_of_week = date("N", $startDate); + $the_last_day_of_week = date("N", $endDate); + + //---->The two can be equal in leap years when february has 29 days, the equal sign is added here + //In the first case the whole interval is within a week, in the second case the interval falls in two weeks. + if ($the_first_day_of_week <= $the_last_day_of_week) + { + if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--; + if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--; + } + else { + // (edit by Tokes to fix an edge case where the start day was a Sunday + // and the end day was NOT a Saturday) + + // the day of the week for start is later than the day of the week for end + if ($the_first_day_of_week == 7) { + // if the start date is a Sunday, then we definitely subtract 1 day + $no_remaining_days--; + + if ($the_last_day_of_week == 6) { + // if the end date is a Saturday, then we subtract another day + $no_remaining_days--; + } + } + else { + // the start date was a Saturday (or earlier), and the end date was (Mon..Fri) + // so we skip an entire weekend and subtract 2 days + $no_remaining_days -= 2; + } + } + + //The no. of business days is: (number of weeks between the two dates) * (5 working days) + the remainder + //---->february in none leap years gave a remainder of 0 but still calculated weekends between first and last day, this is one way to fix it + $workingDays = $no_full_weeks * 5; + if ($no_remaining_days > 0 ) + { + $workingDays += $no_remaining_days; + } + + //We subtract the holidays + foreach($austrian_holidays as $key=>$value) + { + $time_stamp=strtotime($value); + //If the holiday doesn't fall in weekend + if ($startDate <= $time_stamp && $time_stamp <= $endDate && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7) + $workingDays--; + } + + return $workingDays; +} \ No newline at end of file diff --git a/application/helpers/hlp_sancho_helper.php b/application/helpers/hlp_sancho_helper.php index 6e311897f..204b17f11 100644 --- a/application/helpers/hlp_sancho_helper.php +++ b/application/helpers/hlp_sancho_helper.php @@ -29,7 +29,7 @@ const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg'; /** * Send single Mail with Sancho Design and Layout. * @param string $vorlage_kurzbz Name of the template for specific mail content. - * @param array $vorlage_data Associative array with specific mail content varibales + * @param array $vorlage_data Associative array with specific mail content variables * to be replaced in the content template. * @param string $to Email-adress. * @param string $subject Subject of mail. diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 89ab2623d..4a9b23ec9 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -204,8 +204,8 @@ class Prestudent_model extends DB_Model $this->addJoin('bis.tbl_nation zgvmanat', 'zgvmanation = zgvmanat.nation_code', 'LEFT'); $prestudent = $this->load($prestudent_id); - if($prestudent->error) - return error($prestudent->retval); + if (!hasData($prestudent)) + return error('prestudent could not be loaded'); //Prestudentstatus $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); @@ -225,6 +225,7 @@ class Prestudent_model extends DB_Model if (count($studienordnung->retval) > 0) { + $lastStatus->retval[0]->studiengang_kz = $studienordnung->retval[0]->studiengang_kz; $lastStatus->retval[0]->studiengangkurzbzlang = $studienordnung->retval[0]->studiengangkurzbzlang; $lastStatus->retval[0]->studiengangbezeichnung = $studienordnung->retval[0]->studiengangbezeichnung; $lastStatus->retval[0]->studiengangbezeichnung_englisch = $studienordnung->retval[0]->studiengangbezeichnung_englisch; @@ -233,6 +234,7 @@ class Prestudent_model extends DB_Model //get Sprache $this->load->model('system/sprache_model', 'SpracheModel'); + $this->SpracheModel->addSelect('sprache, locale, bezeichnung'); $language = $this->SpracheModel->load($lastStatus->retval[0]->sprache); if ($language->error) diff --git a/application/models/crm/Reihungstest_model.php b/application/models/crm/Reihungstest_model.php index 9614c2e38..d0efb8bc8 100644 --- a/application/models/crm/Reihungstest_model.php +++ b/application/models/crm/Reihungstest_model.php @@ -224,4 +224,270 @@ class Reihungstest_model extends DB_Model return $this->execQuery($query); } + + /** + * Checks if a registration date (Anmeldefrist) of a placement test has been reached yesterday. + * @param integer $studiengang_kz Optional. Kennzahl of degree program whose registration date should be checked. + * @return array Returns object array with reihungstest_ids whose registration date has been reached yesterday. + */ + public function checkReachedRegistrationDate($studiengang_kz = null) + { + $query = ' + SELECT * + FROM PUBLIC.tbl_reihungstest + WHERE anmeldefrist = ( + SELECT CURRENT_DATE - 1 + ) + '; + + $parametersArray = array(); + + if (!isEmptyString($studiengang_kz)) + { + $query .= ' AND studiengang_kz = ?'; + array_push($parametersArray, $studiengang_kz); + } + + return $this->execQuery($query, $parametersArray); + } + + /** + * Loads all applicants of a placement test for runZentraleReihungstestAnmeldefristAssistenzJob + * @param integer $reihungstest_id ID of placement test + * @return array Returns object array with data of applicants. + */ + public function getApplicantsOfPlacementTestForCronjob($reihungstest_id) + { + $query = ' + SELECT tbl_rt_person.person_id, + ps.prestudent_id, + tbl_studienplan.orgform_kurzbz, + tbl_prestudentstatus.studienplan_id, + tbl_prestudentstatus.ausbildungssemester, + nachname, + vorname, + tbl_zgv.zgv_kurzbz, + ps.studiengang_kz, + CASE WHEN tbl_prestudentstatus.statusgrund_id=9 + THEN \'Ja\' + ELSE \'Nein\' + END AS "qualifikationskurs", + ( + SELECT count(*) AS prio_relativ + FROM ( + SELECT *, + ( + SELECT status_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = pst.prestudent_id + ORDER BY datum DESC, + tbl_prestudentstatus.insertamum DESC LIMIT 1 + ) AS laststatus + FROM PUBLIC.tbl_prestudent pst + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE person_id = ( + SELECT person_id + FROM PUBLIC.tbl_prestudent + WHERE prestudent_id = ps.prestudent_id + ) + AND studiensemester_kurzbz = ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = ps.prestudent_id + AND status_kurzbz = \'Interessent\' LIMIT 1 + ) + AND status_kurzbz = \'Interessent\' + ) prest + WHERE laststatus NOT IN (\'Abbrecher\', \'Abgewiesener\', \'Absolvent\') + AND priorisierung <= ( + SELECT priorisierung + FROM PUBLIC.tbl_prestudent + WHERE prestudent_id = ps.prestudent_id + ) + ) AS "prioritaet", + ( + SELECT kontakt + FROM PUBLIC.tbl_kontakt + WHERE kontakttyp = \'email\' + AND zustellung = true + AND person_id = tbl_rt_person.person_id + ORDER BY insertamum DESC, + updateamum DESC LIMIT 1 + ) AS "email" + FROM PUBLIC.tbl_rt_person + JOIN PUBLIC.tbl_person ON (tbl_rt_person.person_id = tbl_person.person_id) + JOIN PUBLIC.tbl_reihungstest rt ON (rt_id = reihungstest_id) + JOIN PUBLIC.tbl_prestudent ps ON (ps.person_id = tbl_rt_person.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + JOIN lehre.tbl_studienplan ON (tbl_prestudentstatus.studienplan_id = tbl_studienplan.studienplan_id) + LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code) + WHERE rt_id = ? + AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\' + AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz + AND bewerbung_abgeschicktamum IS NOT NULL + AND bestaetigtam IS NOT NULL + ORDER BY studiengang_kz, + orgform_kurzbz, + prioritaet, + nachname, + vorname, + person_id + '; + + return $this->execQuery($query, array($reihungstest_id)); + } + + /** + * Checks if an Applicant was assigned to a plament test after Anmeldefrist and before Test-Date + * @param integer $studiengang_kz Kennzahl of degree program those tests should be checked + * @return array Returns object array with data of applicants. + */ + public function getApplicantAssignedAfterDate($studiengang_kz) + { + $query = ' + SELECT tbl_rt_person.person_id, + ps.prestudent_id, + rt.datum, + rt.uhrzeit, + tbl_studienplan.orgform_kurzbz, + tbl_prestudentstatus.studienplan_id, + tbl_prestudentstatus.ausbildungssemester, + nachname, + vorname, + tbl_zgv.zgv_kurzbz, + ps.studiengang_kz, + CASE WHEN tbl_prestudentstatus.statusgrund_id=9 + THEN \'Ja\' + ELSE \'Nein\' + END AS "qualifikationskurs", + ( + SELECT count(*) AS prio_relativ + FROM ( + SELECT *, + ( + SELECT status_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = pst.prestudent_id + ORDER BY datum DESC, + tbl_prestudentstatus.insertamum DESC LIMIT 1 + ) AS laststatus + FROM PUBLIC.tbl_prestudent pst + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE person_id = ( + SELECT person_id + FROM PUBLIC.tbl_prestudent + WHERE prestudent_id = ps.prestudent_id + ) + AND studiensemester_kurzbz = ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = ps.prestudent_id + AND status_kurzbz = \'Interessent\' LIMIT 1 + ) + AND status_kurzbz = \'Interessent\' + ) prest + WHERE laststatus NOT IN (\'Abbrecher\', \'Abgewiesener\', \'Absolvent\') + AND priorisierung <= ( + SELECT priorisierung + FROM PUBLIC.tbl_prestudent + WHERE prestudent_id = ps.prestudent_id + ) + ) AS "prioritaet", + ( + SELECT kontakt + FROM PUBLIC.tbl_kontakt + WHERE kontakttyp = \'email\' + AND zustellung = true + AND person_id = tbl_rt_person.person_id + ORDER BY insertamum DESC, + updateamum DESC LIMIT 1 + ) AS "email" + FROM PUBLIC.tbl_rt_person + JOIN PUBLIC.tbl_person ON (tbl_rt_person.person_id = tbl_person.person_id) + JOIN PUBLIC.tbl_reihungstest rt ON (rt_id = reihungstest_id) + JOIN PUBLIC.tbl_prestudent ps ON (ps.person_id = tbl_rt_person.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + JOIN lehre.tbl_studienplan ON (tbl_prestudentstatus.studienplan_id = tbl_studienplan.studienplan_id) + LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code) + WHERE rt.studiengang_kz = ? + AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\' + AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz + AND bewerbung_abgeschicktamum IS NOT NULL + AND bestaetigtam IS NOT NULL + AND anmeldefrist < (SELECT CURRENT_DATE) + AND rt.datum > (SELECT CURRENT_DATE) + --AND tbl_rt_person.insertamum > anmeldefrist + --AND tbl_rt_person.insertamum < rt.datum + AND tbl_rt_person.insertamum::date = (SELECT CURRENT_DATE -1) + ORDER BY studiengang_kz, + orgform_kurzbz, + prioritaet, + nachname, + vorname, + person_id + '; + + return $this->execQuery($query, array($studiengang_kz)); + } + + /** + * Loads all applicants of a placement test + * @param integer $reihungstest_id ID of placement test + * @return array Returns object array with data of applicants. + */ + public function getApplicantsOfPlacementTest($reihungstest_id) + { + $query = ' + SELECT DISTINCT tbl_rt_person.person_id, + anrede, + nachname, + vorname, + ( + SELECT kontakt + FROM PUBLIC.tbl_kontakt + WHERE kontakttyp = \'email\' + AND zustellung = true + AND person_id = tbl_rt_person.person_id + ORDER BY insertamum DESC, + updateamum DESC LIMIT 1 + ) AS "email", + tbl_ort.planbezeichnung, + tbl_ort.lageplan + FROM PUBLIC.tbl_rt_person + JOIN PUBLIC.tbl_person ON (tbl_rt_person.person_id = tbl_person.person_id) + JOIN PUBLIC.tbl_reihungstest rt ON (rt_id = reihungstest_id) + JOIN PUBLIC.tbl_prestudent ps ON (ps.person_id = tbl_rt_person.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + LEFT JOIN bis.tbl_zgv ON (ps.zgv_code = tbl_zgv.zgv_code) + LEFT JOIN PUBLIC.tbl_ort ON (tbl_rt_person.ort_kurzbz = tbl_ort.ort_kurzbz) + WHERE rt_id = ? + AND get_rolle_prestudent(prestudent_id, rt.studiensemester_kurzbz) = \'Interessent\' + AND tbl_prestudentstatus.studiensemester_kurzbz = rt.studiensemester_kurzbz + AND bewerbung_abgeschicktamum IS NOT NULL + AND bestaetigtam IS NOT NULL + ORDER BY nachname, + vorname, + person_id + '; + + return $this->execQuery($query, array($reihungstest_id)); + } + + /** + * Loads all placement tests of the given day and optional degree program + * @param string $date Date of the tests to be loaded (YYYY-MM-DD) + * @param integer $studiengang_kz Optional. Kennzahl of degree program to load + * @return array Returns object array with data of applicants. + */ + public function getTestsOnDate($date, $studiengang_kz = null) + { + $query = ' + SELECT * + FROM PUBLIC.tbl_reihungstest + WHERE datum = ? + AND studiengang_kz = ? + '; + + return $this->execQuery($query, array($date, $studiengang_kz)); + } } \ No newline at end of file diff --git a/application/models/education/Lehreinheitgruppe_model.php b/application/models/education/Lehreinheitgruppe_model.php index cfd59f937..8390d41c5 100644 --- a/application/models/education/Lehreinheitgruppe_model.php +++ b/application/models/education/Lehreinheitgruppe_model.php @@ -11,4 +11,14 @@ class Lehreinheitgruppe_model extends DB_Model $this->dbTable = 'lehre.tbl_lehreinheitgruppe'; $this->pk = 'lehreinheitgruppe_id'; } + + public function getDirectGroup($lehreinheit_id) + { + $this->addJoin('public.tbl_gruppe', 'gruppe_kurzbz'); + return $this->loadWhere(array( + 'tbl_gruppe.direktinskription' => true, + 'lehreinheit_id' => $lehreinheit_id + ) + ); + } } diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 78c81836f..1c9c6e944 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -429,4 +429,23 @@ class Studiengang_model extends DB_Model return $this->execQuery($query, array($studiensemester_kurzbz)); } + + /** + * Loads degree programs of the given type + * @param string $typ Type of degree programs to be loaded + * @return array + */ + public function loadStudiengaengeFromTyp($typ) + { + $query = "SELECT + distinct tbl_studiengang.* + FROM + public.tbl_studiengang + WHERE + tbl_studiengang.typ=? + ORDER BY + kurzbz"; + + return $this->execQuery($query, array($typ)); + } } diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index ff48708dd..9248b241d 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -109,7 +109,7 @@ class Studiensemester_model extends DB_Model */ public function getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz) { - $query = "SELECT DISTINCT semester + $query = "SELECT DISTINCT semester FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) JOIN lehre.tbl_studienplan_semester USING(studienplan_id) @@ -131,9 +131,9 @@ class Studiensemester_model extends DB_Model if (date_format(date_create($from), 'Y-m-d') > (date_format(date_create($to), 'Y-m-d'))) return success(array()); - $query = "SELECT * + $query = "SELECT * FROM public.tbl_studiensemester - WHERE + WHERE (ende > ?::date AND start < ?::date) OR start = ?::date OR ende = ?::date @@ -141,4 +141,19 @@ class Studiensemester_model extends DB_Model return $this->execQuery($query, array($from, $to, $from, $to)); } + + /** + * Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt + * + * @param $studiensemester_kurzbz + * @return array | null + */ + public function getNearestFrom($studiensemester_kurzbz) + { + $query = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester + WHERE studiensemester_kurzbz <> ? + ORDER BY delta LIMIT 1"; + + return $this->execQuery($query, array($studiensemester_kurzbz)); + } } diff --git a/application/models/ressource/Stundenplandev_model.php b/application/models/ressource/Stundenplandev_model.php index 9d737e3ec..9fa92ae5e 100644 --- a/application/models/ressource/Stundenplandev_model.php +++ b/application/models/ressource/Stundenplandev_model.php @@ -11,4 +11,54 @@ class Stundenplandev_model extends DB_Model $this->dbTable = 'lehre.tbl_stundenplandev'; $this->pk = 'stundenplandev_id'; } + + public function getMissingDirectGroups($studiensemester_kurzbz = null) + { + $qry = " + SELECT + distinct lehreinheit_id, datum, stunde, mitarbeiter_uid, ort_kurzbz + FROM + lehre.tbl_stundenplandev stpl + WHERE + lehreinheit_id IN( + SELECT + lehreinheit_id + FROM + lehre.tbl_lehreinheit + JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) + JOIN public.tbl_gruppe USING(gruppe_kurzbz) + WHERE + tbl_gruppe.direktinskription = true + "; + + $parametersArray = array(); + + if (!is_null($studiensemester_kurzbz)) + { + $parametersArray[] = $studiensemester_kurzbz; + $qry .= ' AND tbl_lehreinheit.studiensemester_kurzbz = ?'; + } + $qry .= ") + AND NOT EXISTS( + SELECT + 1 + FROM + lehre.tbl_stundenplandev + WHERE + datum=stpl.datum + AND stunde=stpl.stunde + AND lehreinheit_id=stpl.lehreinheit_id + AND gruppe_kurzbz=(SELECT + gruppe_kurzbz + FROM + lehre.tbl_lehreinheitgruppe + JOIN public.tbl_gruppe USING(gruppe_kurzbz) + WHERE + lehreinheit_id=stpl.lehreinheit_id + AND tbl_gruppe.direktinskription = true + ) + )"; + + return $this->execQuery($qry, $parametersArray); + } } diff --git a/application/views/home.php b/application/views/home.php index 598413c32..d00b98f81 100644 --- a/application/views/home.php +++ b/application/views/home.php @@ -7,6 +7,7 @@ $this->load->view('templates/FHC-Header', 'fontawesome' => true, 'sbadmintemplate' => true, 'ajaxlib' => true, + 'addons' => true, 'navigationwidget' => true ) ); @@ -23,102 +24,8 @@ $this->load->view('templates/FHC-Header', -
-
-
-
-
-
- -
-
-
26
-
neue Messages
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
12
-
neue Interessenten
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
124
-
inaktive Interessenten
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
13
-
Support Tickets!
-
-
-
- - - -
-
-
- - - load->view('system/infocenter/infocenterData.php'); - ?> +
diff --git a/application/views/person/gradelist/gradelist.php b/application/views/person/gradelist/gradelist.php index f00978294..c6aaaa2f8 100644 --- a/application/views/person/gradelist/gradelist.php +++ b/application/views/person/gradelist/gradelist.php @@ -9,7 +9,8 @@ 'fontawesome' => true, 'ajaxlib' => true, 'customCSSs' => array( - 'public/css/tools/gradelist.css' + 'public/css/tools/gradelist.css', + 'public/css/fhcomplete.css' ), 'customJSs' => array( 'public/js/bootstrapper.js' diff --git a/application/views/system/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php index 4f4037f43..806f87410 100644 --- a/application/views/system/infocenter/zgvpruefungen.php +++ b/application/views/system/infocenter/zgvpruefungen.php @@ -2,11 +2,34 @@ infoonly; + $studiengangkurzbz = $studiengangbezeichnung = $studiengangtyp = ''; + $studiensemester = isset($zgvpruefung->prestudentstatus->studiensemester_kurzbz) ? $zgvpruefung->prestudentstatus->studiensemester_kurzbz : ''; - $studiengangkurzbz = empty($zgvpruefung->prestudentstatus->studiengangkurzbzlang) ? $zgvpruefung->studiengang : $zgvpruefung->prestudentstatus->studiengangkurzbzlang; - $studiengangbezeichnung = empty($zgvpruefung->prestudentstatus->studiengangbezeichnung) ? $zgvpruefung->studiengangbezeichnung : $zgvpruefung->prestudentstatus->studiengangbezeichnung; + $studiengang_kz = isset($zgvpruefung->studiengang_kz) ? $zgvpruefung->studiengang_kz : ''; + $studiengangtyp = isset($zgvpruefung->studiengangtyp) ? $zgvpruefung->studiengangtyp : ''; + + if (empty($zgvpruefung->prestudentstatus->studiengangkurzbzlang)) + { + if (!empty($zgvpruefung->studiengang)) + $studiengangkurzbz = $zgvpruefung->studiengang; + } + else + { + $studiengangkurzbz = $zgvpruefung->prestudentstatus->studiengangkurzbzlang; + } + + if (empty($zgvpruefung->prestudentstatus->studiengangbezeichnung)) + { + if (!empty($zgvpruefung->studiengangbezeichnung)) + $studiengangbezeichnung = $zgvpruefung->studiengangbezeichnung; + } + else + { + $studiengangbezeichnung = $zgvpruefung->prestudentstatus->studiengangbezeichnung; + } //set bootstrap columns for zgv form $columns = array(3, 3, 3, 3); @@ -219,7 +242,7 @@ - studiengangtyp === 'm') : ?> +
@@ -360,17 +383,24 @@
prestudentstatus->bewerbung_abgeschicktamum)) { - $disabled = 'disabled'; - $disabledTxt = 'Die Bewerbung muss erst abgeschickt worden sein.'; + $disabled = $disabledStg = 'disabled'; + $disabledTxt = $disabledStgTxt = 'Die Bewerbung muss erst abgeschickt worden sein.'; } - if ($zgvpruefung->studiengangtyp !== 'b') + if ($studiengangtyp !== 'b') { $disabled = 'disabled'; - $disabledTxt = 'Nur Bachelorstudiengänge können freigegeben werden.';; + $disabledTxt = 'Nur Bachelorstudiengänge können freigegeben werden.'; + + // FIT-Lehrgänge: exceptions, can be freigegeben in Infocenter + if (!in_array($studiengang_kz, $fit_programme_studiengaenge)) + { + $disabledStg = 'disabled'; + $disabledStgTxt = 'Nur Bachelorstudiengänge können freigegeben werden.'; + } } ?>
@@ -378,7 +408,7 @@
- diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 6a96eb6f9..2c9768a50 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -93,8 +93,6 @@ // NavigationWidget CSS if ($navigationwidget === true) generateCSSsInclude('public/css/NavigationWidget.css'); - generateCSSsInclude('public/css/fhcomplete.css'); - // Eventually required CSS generateCSSsInclude($customCSSs); // Eventually required CSS diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php index 2fdacb80d..5cdea3111 100644 --- a/cis/private/lehre/notenliste.php +++ b/cis/private/lehre/notenliste.php @@ -184,30 +184,51 @@ else // Erstes und letztes Studiensemester mit Studenten-Status ermitteln $prestudent = new prestudent(); - $prestudent->getFirstStatus($prestudent_id, 'Student'); - $firstStudiensemester = $prestudent->studiensemester_kurzbz; - $prestudent->getLastStatus($prestudent_id, null, 'Student'); - $lastStudiensemester = $prestudent->studiensemester_kurzbz; - + // Wenn Incoming, dann Incomingstatus laden, sonst Studentenstatus + $prestudent->getPrestudentRolle($prestudent_id, 'Incoming'); + if(count($prestudent->result) > 0) + { + $prestudent->getFirstStatus($prestudent_id, 'Incoming'); + $firstStudiensemester = $prestudent->studiensemester_kurzbz; + $prestudent->getLastStatus($prestudent_id, null, 'Incoming'); + $lastStudiensemester = $prestudent->studiensemester_kurzbz; + } + else + { + $prestudent->getFirstStatus($prestudent_id, 'Student'); + $firstStudiensemester = $prestudent->studiensemester_kurzbz; + $prestudent->getLastStatus($prestudent_id, null, 'Student'); + $lastStudiensemester = $prestudent->studiensemester_kurzbz; + } + $stsem_obj->getStudiensemesterBetween($firstStudiensemester, $lastStudiensemester); echo "
"; echo "".$p->t('global/name').": $vorname $nachname
"; echo "".$p->t('global/studiengang').": $studiengang_bezeichnung
"; echo "".$p->t('global/studiensemester')."
"; // echo "Datum: ".date('d.m.Y')."
"; echo "
"; - + if ($notenImAktuellenStSem == false) + { + $stsem = 'alle'; + } // Lehrveranstaltungen und Noten holen if ($stsem != "alle") { diff --git a/content/fas.xul.php b/content/fas.xul.php index 6f6c3a19a..d61aba624 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -329,6 +329,12 @@ foreach($addon_obj->result as $addon) label = "&menu-statistic-lehrauftragsliste.label;" command = "menu-statistic-lehrauftragsliste:command" accesskey = "&menu-statistic-lehrauftragsliste.accesskey;"/> + @@ -839,12 +845,6 @@ foreach($addon_obj->result as $addon) label = "&menu-extras-lehrfachverwaltung.label;" command = "menu-extras-lehrfachverwaltung:command" accesskey = "&menu-extras-lehrfachverwaltung.accesskey;"/> --> - , - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -// **************************************** -// * Insert/Update/Delete -// * der Lehreinheiten -// * -// * Script sorgt fuer den Datenbankzugriff -// * fuer das XUL - Lehreinheiten-Modul -// * -// * Derzeitige Funktionen: -// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen -// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen -// * - Lehreinheit anlegen/bearbeiten/loeschen -// **************************************** - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/lehreinheit.class.php'); -require_once('../../include/lehreinheitmitarbeiter.class.php'); -require_once('../../include/lehreinheitgruppe.class.php'); -require_once('../../include/benutzerberechtigung.class.php'); -require_once('../../include/log.class.php'); -require_once('../../include/person.class.php'); -require_once('../../include/benutzer.class.php'); -require_once('../../include/mitarbeiter.class.php'); -require_once('../../include/lehrstunde.class.php'); -require_once('../../include/lvangebot.class.php'); -require_once('../../include/gruppe.class.php'); -require_once('../../include/lehrveranstaltung.class.php'); -require_once('../../include/datum.class.php'); -require_once('../../include/vertrag.class.php'); - -$user = get_uid(); -$db = new basis_db(); -//error_reporting(0); - -$return = false; -$errormsg = 'unknown'; -$data = ''; -$error = false; -$warnung = false; - -loadVariables($user); - -//Berechtigungen laden -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lv-plan')) -{ - $return = false; - $errormsg = 'Keine Berechtigung'; - $data = ''; - $error = true; -} - - -function kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old, $db_stpl_table) -{ - //Lehrstunden laden - $lehrstunden=new lehrstunde(); - $lehrstunde=new lehrstunde(); - $lehrstunden->load_lehrstunden_le($lehreinheit_id,$mitarbeiter_uid_old); - - $koll_arr=array(); - foreach ($lehrstunden->lehrstunden as $ls) - { - $lehrstunde->load($ls->stundenplan_id); - $lehrstunde->lektor_uid=$mitarbeiter_uid; - if ($lehrstunde->kollision($db_stpl_table)) - { - $koll_arr[]=$lehrstunde->errormsg; - } - } - if(count($koll_arr)>0) - return $koll_arr; - - return false; -} - -/** - * Prueft ob die Person den Lehrauftrag auf eine Firma ausgestellt bekommt - * - * @param $mitarbeiter_uid - * @return boolean - */ -function LehrauftragAufFirma($mitarbeiter_uid) -{ - global $db; - - $qry_firma = " - SELECT * FROM campus.vw_mitarbeiter LEFT JOIN public.tbl_adresse USING(person_id) - WHERE uid=".$db->db_add_param($mitarbeiter_uid)." - ORDER BY zustelladresse DESC, firma_id LIMIT 1"; - if($result_firma = $db->db_query($qry_firma)) - { - if($row_firma = $db->db_fetch_object($result_firma)) - { - if($row_firma->firma_id=='') - return false; - else - return true; - } - else - { - return false; - } - } - else - { - return false; - } -} - -/** - * Liefert eine Liste mit den Gesamtstunden eines Lektors in den einzelnen Instituten - * - * @param $mitarbeiter_uid - * @param $studiensemester_kurzbz - * @return string - */ -function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_arr) -{ - global $db; - - $ret="Der Lektor ist in folgenden Organisationseinheiten zugeteilt:\n"; - - //Liste mit den Stunden in den jeweiligen Instituten anzeigen - $qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_studiengang.bezeichnung - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden AND - tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).") - GROUP BY tbl_studiengang.bezeichnung"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $ret .=$row->summe.' Stunden '.$row->bezeichnung."\n"; - } - } - return $ret; -} - -if(!$error) -{ - if(!empty($_POST['lehrveranstaltung'])) - $lva = new lehrveranstaltung($_POST['lehrveranstaltung']); - - if(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_save') - { - //Lehreinheitmitarbeiter Zuteilung - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - - if($result = $db->db_query($qry)) - { - if($row = $db->db_fetch_object($result)) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - $oe_arr = $lva->getAllOe(); - - if(!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $oe_arr, 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - $lem = new lehreinheitmitarbeiter(); - - if(!$lem->load($_POST['lehreinheit_id'],$_POST['mitarbeiter_uid_old'])) - { - $return = false; - $errormsg = 'Fehler beim Laden:'.$lem->errormsg; - $error = true; - } - $semesterstunden_alt=$lem->semesterstunden; - $bismelden_alt = $lem->bismelden; - $faktor_alt = $lem->faktor; - $stundensatz_alt = $lem->stundensatz; - - $qry_lvplanaenderung=''; - - if(!$error) - { - $lem->lehreinheit_id = $_POST['lehreinheit_id']; - $lem->lehrfunktion_kurzbz = $_POST['lehrfunktion_kurzbz']; - $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; - $lem->mitarbeiter_uid_old = $_POST['mitarbeiter_uid_old']; - $lem->semesterstunden = $_POST['semesterstunden']; - $lem->planstunden = $_POST['planstunden']; - $lem->stundensatz = $_POST['stundensatz']; - $lem->faktor = $_POST['faktor']; - $lem->anmerkung = $_POST['anmerkung']; - $lem->bismelden = ($_POST['bismelden']=='true'?true:false); - $lem->updateamum = date('Y-m-d H:i:s'); - $lem->updatevon = $user; - - $lem->new=false; - - //Wenn sich der Lektor aendert und keine Kollision dadurch entsteht, dann werden die - //Daten automatisch im Stundenplan geaendert - if($lem->mitarbeiter_uid!=$lem->mitarbeiter_uid_old) - { - $koll_arr = kollision($lem->lehreinheit_id, $lem->mitarbeiter_uid, $lem->mitarbeiter_uid_old, $db_stpl_table); - //check kollision - if($koll_arr===false || $ignore_kollision=='true') - { - //Update im Stundenplan - $stpl_table='lehre.tbl_stundenplandev'; - $qry_lvplanaenderung = "UPDATE $stpl_table SET mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid).", updateamum=now(), updatevon=".$db->db_add_param($user)." WHERE lehreinheit_id=".$db->db_add_param($lem->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid_old); - // Das Update wird erst weiter unten durchgefuehrt wenn die restlichen Checks erfolgreich sind da es sonst zu inkonsistenzen kommt - if(is_array($koll_arr)) - { - $errormsg="Da Kollisionen deaktiviert sind, wird die Änderung durchgeführt obwohl dadurch kollisionen entstehen. Bitte korrigieren Sie folgende Kollisionen manuell:\n"; - $errormsg.=implode("\n",$koll_arr); - } - } - else - { - $return = false; - $errormsg = "Änderung fehlgeschlagen!\nDie Änderung des Lektors führt zu ".count($koll_arr)." Kollision(en) im LV-Plan. Deaktivieren Sie die Kollisionspruefung oder wenden Sie sich an die LV-Planung!\n"; - $errormsg.= "zB:".$koll_arr[0]; - $error = true; - } - } - - $fixangestellt=false; - if(!$error) - { - //Pruefen ob die erlaubte Semesterstundenanzahl ueberschritten wurde. - //Wenn ja dann ein Warning zurueckliefern - $ma = new mitarbeiter(); - $ma->load($lem->mitarbeiter_uid); - $fixangestellt=$ma->fixangestellt; - - $oe_obj = new organisationseinheit(); - $stunden_oe_kurzbz=null; - - $stg_obj = new studiengang(); - $stg_obj->load($lva->studiengang_kz); - - //Maximale Stundenanzahl ermitteln - if($fixangestellt) - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); - else - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); - - //Summe der Stunden ermitteln - $le = new lehreinheit(); - $le->load($lem->lehreinheit_id); - - if($lem->stundensatz<=0 || $lem->faktor<=0 || $lem->bismelden==false) - $neue_stunden_eingerechnet=false; - else - $neue_stunden_eingerechnet=true; - - if(($stundensatz_alt<=0 || $faktor_alt<=0 || $bismelden_alt==false)) - $alte_stunden_eingerechnet=false; - else - $alte_stunden_eingerechnet=true; - - //Stundenreduzierung immer moeglich - if(($lem->semesterstunden>$semesterstunden_alt) || $neue_stunden_eingerechnet) - { - $oe_obj = new organisationseinheit(); - $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); - $qry = "SELECT "; - if($alte_stunden_eingerechnet && $neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe"; - elseif($alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)) as summe"; - elseif(!$alte_stunden_eingerechnet && $neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)+($lem->semesterstunden)) as summe"; - elseif(!$alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) - $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)) as summe"; - $qry.=" FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden"; - - if(count($oe_arr)>0) - $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; - - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->summe>$max_stunden) - { - if(!$fixangestellt) - { - if(!LehrauftragAufFirma($lem->mitarbeiter_uid)) - { - //Warnung wenn die Stundenzahl ueberschritten wurde - $return = false; - $error = true; - $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; - } - } - else - { - $return = true; - $error = false; - $warnung = true; - $errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden gespeichert!\n\n"; - } - - $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz, $oe_arr); - } - } - else - { - $return = false; - $error=true; - $errormsg='Fehler beim Ermitteln der Gesamtstunden'; - } - - } - else - { - $return = false; - $error=true; - $errormsg='Fehler beim Ermitteln der Gesamtstunden'; - } - } - } - - if(!$error) - { - if($lem->save()) - { - //Fixangestellte bekommen eine Warnung wenn die Stunden ueberschritten wurden. Es wird aber - //trotzdem gespeichert - if($warnung) - { - $return=false; - $error = true; - } - else - { - $return = true; - $error = false; - } - - // Wenn eine LVPlan aenderung noetig ist, dann diese jetzt - // durchfuehrten - if($qry_lvplanaenderung!='') - { - if($db->db_query($qry_lvplanaenderung)) - { - if($errormsg=='' || $errormsg=='unknown') - { - $error = false; - $return = true; - } - else - { - // Bei Kollisionen steht in errormsg die Kollisionsinformation - $error = true; - $return = false; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler beim Update im LV-Plan'.$qry; - } - } - } - else - { - $return = false; - $errormsg = $lem->errormsg; - $error = true; - } - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') - { - //neue Lehreinheitmitarbeiterzuteilung anlegen - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - if(isset($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) - { - $lem = new lehreinheitmitarbeiter(); - - $lem->lehreinheit_id = $_POST['lehreinheit_id']; - $lem->lehrfunktion_kurzbz = 'Lektor'; - $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; - - $lem->anmerkung = ''; - $lem->bismelden = true; - $lem->updateamum = date('Y-m-d H:i:s'); - $lem->updatevon = $user; - $lem->insertamum = date('Y-m-d H:i:s'); - $lem->insertvon = $user; - $lem->new=true; - - $fixangestellt=false; - //Stundensatz aus tbl_mitarbeiter holen - $qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - if($result = $db->db_query($qry)) - { - if($row = $db->db_fetch_object($result)) - { - if($row->stundensatz!='') - $lem->stundensatz = $row->stundensatz; - else - $lem->stundensatz = '0'; - $fixangestellt = ($row->fixangestellt=='t'?true:false); - } - else - { - $error=true; - $return=false; - $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; - } - } - else - { - $error=true; - $return=false; - $errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error(); - } - - $maxstunden=9999; - - $oe_obj = new organisationseinheit(); - $stunden_oe_kurzbz=null; - - $stg_obj = new studiengang(); - $stg_obj->load($lva->studiengang_kz); - - //Maximale Stundenanzahl ermitteln - if($fixangestellt) - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); - else - list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); - - //Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde - if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid)) - { - //Summe der Stunden ermitteln - $le = new lehreinheit(); - $le->load($lem->lehreinheit_id); - - $oe_obj = new organisationseinheit(); - $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); - - $qry = "SELECT - sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND - studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND - faktor>0 AND - stundensatz>0 AND - bismelden"; - - if(count($oe_arr)>0) - $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; - - if($result_std = $db->db_query($qry)) - { - if($row_std = $db->db_fetch_object($result_std)) - { - //Grenze ueberschritten - if($row_std->summe>=$max_stunden) - { - $return = false; - $error = true; - $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; - $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz,$oe_arr); - } - else - { - //Stunden berechnen die noch maximal unterrichtet werden darf - $maxstunden = $max_stunden-$row_std->summe; - } - } - } - } - - if(!$error) - { - //Faktor und Semesterstunden aus tbl_lehrveranstaltung holen - $qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER).";"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->planfaktor!='') - $lem->faktor = $row->planfaktor; - else - $lem->faktor = '1.0'; - - if($row->semesterstunden!='') - { - //wenn es sich um einen freien Lektor handelt, und dieser nicht mehr die volle Stundenanzahl unterrichten - //darf, dann werden nur die restlichen zur Verfuegung stehenden Stunden zugeteilt. - $lem->semesterstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); - $lem->planstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); - } - else - { - $lem->planstunden = '0'; - $lem->semesterstunden = '0'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehrveranstaltung wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error(); - } - - if(!$error) - { - if($lem->save()) - { - $return = true; - $error = false; - } - else - { - $return = false; - $errormsg = $lem->errormsg; - $error = true; - } - } - } - } - else - { - $return = false; - $errormsg = 'Fehlerhafte Parameteruebergabe'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_del') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Lehreinheitmitarbeiterzuteilung loeschen - if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) - { - //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])." - UNION - SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $return = false; - $errormsg = 'Dieser Lektor kann nicht gelöscht werden da er schon verplant ist'; - } - else - { - $leg = new lehreinheitmitarbeiter(); - if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) - { - // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen - if($leg->vertrag_id!='') - { - $vertrag = new vertrag(); - $vertrag->delete($leg->vertrag_id); - } - - if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg='Fehlgeschlagen:'.$leg->errormsg; - } - } - } - else - { - $return = false; - $errormsg = 'Fehler:'.$qry; - } - } - else - { - $return = false; - $errormsg = 'Fehler beim Löschen der Zuordnung'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Pruefen ob bereits eine Kreuzerlliste vorhanden ist - $qry = "SELECT count(*) as anzahl FROM lehre.tbl_lehreinheitgruppe, lehre.tbl_lehreinheit, campus.tbl_uebung WHERE - tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." AND - tbl_lehreinheitgruppe.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND - tbl_lehreinheit.lehreinheit_id=tbl_uebung.lehreinheit_id"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - if($row->anzahl>0) - { - $error = true; - $return = false; - $errormsg = 'Diese Gruppe kann nicht geloescht werden da bereits Kreuzerllisten angelegt wurden'; - } - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Fehler beim Ermitteln ob eine Kreuzerlliste vorhanden ist'; - } - - //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde - if(!$error) - { - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev - WHERE - (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = - (SELECT - lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) - FROM - lehre.tbl_lehreinheitgruppe - WHERE - lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - ) - "; - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $error = true; - $return = false; - $errormsg = 'Diese Gruppe kann nicht geloescht werden, da sie bereits im LV-Plan verplant ist. Bitte wenden Sie sich an die LV-Planung'; - } - } - else - { - $errormsg = 'Fehler beim Pruefen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - - } - - if(!$error) - { - //Lehreinheitgruppezuteilung loeschen - if(isset($_POST['lehreinheitgruppe_id']) && is_numeric($_POST['lehreinheitgruppe_id'])) - { - $leg = new lehreinheitgruppe(); - if($leg->delete($_POST['lehreinheitgruppe_id'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg = 'Fehler beim Löschen der Zuordnung'; - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_lektor_del_lvplan') - { - //Pruefen ob dieser Lektor im Stundenplan schon verplant wurde - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('lv-plan/lektorentfernen', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - // Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert - // da sonst der gesamte LVPlan der Lehreinheit weg ist - $qry = "SELECT - distinct mitarbeiter_uid - FROM - lehre.tbl_stundenplandev - WHERE - lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)<2) - { - $error = true; - $return = false; - $errormsg='Dieser Lektor kann nicht aus dem LVPlan entfernt werden da dies der letzte verplante Lektor ist'; - } - } - - // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden - // dann wird das loeschen verhindert - $qry = "SELECT - 1 - FROM - lehre.tbl_stundenplandev - JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) - WHERE - tbl_stundenplandev.lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - AND tbl_stundenplandev.mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)>0) - { - $return = false; - $error = true; - $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; - } - } - else - { - $return = false; - $error = true; - $errormsg = 'Fehler bei Datenbankabfrage'; - } - - if(!$error) - { - $qry = "DELETE FROM lehre.tbl_stundenplandev - WHERE - lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - - if($db->db_query($qry)) - { - $error = false; - $return = true; - } - else - { - $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del_lvplan') - { - //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('lv-plan/gruppenentfernen', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - // Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert - // da sonst der gesamte LVPlan der Lehreinheit weg ist - $qry = "SELECT - distinct studiengang_kz, semester, verband, gruppe, gruppe_kurzbz - FROM - lehre.tbl_stundenplandev - WHERE - lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)<2) - { - $error = true; - $return = false; - $errormsg='Diese Gruppe kann nicht aus dem LVPlan entfernt werden da dies die letzte verplante Gruppe ist'; - } - } - - // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden - // dann wird das loeschen verhindert - $qry = "SELECT - 1 - FROM - lehre.tbl_stundenplandev - JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) - JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) - WHERE - tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - AND - ( - ( - tbl_lehreinheitgruppe.gruppe_kurzbz is not null - AND - tbl_lehreinheitgruppe.gruppe_kurzbz=tbl_stundenplandev.gruppe_kurzbz - ) - OR - ( - tbl_lehreinheitgruppe.gruppe_kurzbz is null - AND - tbl_lehreinheitgruppe.studiengang_kz=tbl_stundenplandev.studiengang_kz - AND - tbl_lehreinheitgruppe.semester=tbl_stundenplandev.semester - AND - tbl_lehreinheitgruppe.verband = tbl_stundenplandev.verband - AND - tbl_lehreinheitgruppe.gruppe = tbl_stundenplandev.gruppe - ) - )"; - - if($result = $db->db_query($qry)) - { - if($db->db_num_rows($result)>0) - { - $return = false; - $error = true; - $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; - } - } - - if(!$error) - { - - $qry = "DELETE FROM lehre.tbl_stundenplandev - WHERE - (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = - (SELECT - lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) - FROM - lehre.tbl_lehreinheitgruppe - WHERE - lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." - )"; - - if($db->db_query($qry)) - { - $error = false; - $return = true; - } - else - { - $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); - $return = false; - $error = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_add') - { - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - //Lehreinheitgruppezuteilung anlegen - if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id'])) - { - $leg = new lehreinheitgruppe(); - $leg->lehreinheit_id = $_POST['lehreinheit_id']; - $leg->studiengang_kz = $_POST['studiengang_kz']; - $leg->semester = $_POST['semester']; - $leg->verband = $_POST['verband']; - $leg->gruppe = $_POST['gruppe']; - $leg->gruppe_kurzbz = $_POST['gruppe_kurzbz']; - $leg->insertamum = date('Y-m-d H:i:s'); - $leg->insertvon = $user; - - if(!$leg->checkVorhanden()) - { - if($leg->errormsg=='') - { - if($leg->save(true)) - { - $return = true; - } - else - { - $return = false; - $errormsg = $leg->errormsg; - } - } - else - { - $return = false; - $errormsg=$leg->errormsg; - } - } - else - { - $return = false; - $errormsg = 'Diese Gruppe ist bereits zugeteilt'; - } - } - else - { - $return = false; - $errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen'; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit') - { - //Lehreinheit anlegen/aktualisieren - if(isset($_POST['lehreinheit_id']) && $_POST['lehreinheit_id']!='') - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - else - $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung'], FHC_INTEGER); - - if($db->db_query($qry)) - { - if($row = $db->db_fetch_object()) - { - $studiengang_kz = $row->studiengang_kz; - $fachbereich_kurzbz = 0; - if(isset($row->fachbereich_kurzbz)) - $fachbereich_kurzbz = $row->fachbereich_kurzbz; - if(!isset($lva)) - $lva = new lehrveranstaltung($row->lehrveranstaltung_id); - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - } - else - { - $error = true; - $return = false; - $errormsg = 'Lehreinheit wurde nicht gefunden'; - } - - if(!$error) - { - $leDAO=new lehreinheit(); - if ($_POST['do']=='create' || ($_POST['do']=='update')) - { - if($_POST['do']=='update') - { - if(!$leDAO->load($_POST['lehreinheit_id'])) - { - $return = false; - $error = true; - $errormsg = 'Fehler beim Laden der Lehreinheit'; - } - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - else - { - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'si') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'si') && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - } - - if(!$error) - { - $leDAO->lehrveranstaltung_id=$_POST['lehrveranstaltung']; - $leDAO->studiensemester_kurzbz=$_POST['studiensemester_kurzbz']; - $leDAO->lehrfach_id=$_POST['lehrfach_id']; - $leDAO->lehrform_kurzbz=$_POST['lehrform']; - $leDAO->stundenblockung=$_POST['stundenblockung']; - $leDAO->wochenrythmus=$_POST['wochenrythmus']; - $leDAO->gewicht = $_POST['gewicht']; - - if (isset($_POST['start_kw'])) - $leDAO->start_kw=$_POST['start_kw']; - - $leDAO->raumtyp=$_POST['raumtyp']; - $leDAO->raumtypalternativ=$_POST['raumtypalternativ']; - $leDAO->sprache=$_POST['sprache']; - - if (isset($_POST['lehre'])) - $leDAO->lehre=($_POST['lehre']=='true'?true:false); - - if (isset($_POST['anmerkung'])) - $leDAO->anmerkung=$_POST['anmerkung']; - - $leDAO->lvnr=(isset($_POST['lvnr'])?$_POST['lvnr']:''); - $leDAO->unr=(isset($_POST['unr'])?$_POST['unr']:''); - if($leDAO->unr=='') - { - if(isset($_POST['lehreinheit_id'])) - $leDAO->unr = $_POST['lehreinheit_id']; - } - $leDAO->updateamum=date('Y-m-d H:i:s'); - $leDAO->updatevon=$user; - - if ($_POST['do']=='create') - { - // LE neu anlegen - $leDAO->new=true; - $leDAO->insertamum=date('Y-m-d H:i:s'); - $leDAO->insertvon=$user; - } - else if ($_POST['do']=='update') - { - // LE aktualisieren - $leDAO->new=false; - } - if ($leDAO->save()) - { - $data = $leDAO->lehreinheit_id; - $return = true; - if($_POST['do']=='create') - { - // Wenn ein LV-Angebot vorliegt, wird diese Gruppe automatisch zugeteilt - $lvangebot = new lvangebot(); - $lvangebot->getAllFromLvId($leDAO->lehrveranstaltung_id, $leDAO->studiensemester_kurzbz); - if(isset($lvangebot->result[0]) && $lvangebot->result[0]->gruppe_kurzbz!='') - { - $gruppe = new gruppe(); - $gruppe->load($lvangebot->result[0]->gruppe_kurzbz); - - $leg = new lehreinheitgruppe(); - $leg->lehreinheit_id = $leDAO->lehreinheit_id; - $leg->studiengang_kz = $gruppe->studiengang_kz; - $leg->semester = $gruppe->semester; - $leg->gruppe_kurzbz = $gruppe->gruppe_kurzbz; - $leg->insertamum = date('Y-m-d H:i:s'); - $leg->insertvon = $user; - $leg->new = true; - $leg->save(); - } - } - } - else - { - $return = false; - $errormsg = $leDAO->errormsg; - } - } - } - else if ($_POST['do']=='delete') //Lehreinheit loeschen - { - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) - { - $return = false; - $error = true; - $errormsg = 'Keine Berechtigung'; - } - else - { - // Loeschen verhindern wenn diese Lehreinheit schon verplant ist - $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." - UNION - SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); - if($db->db_query($qry)) - { - if($db->db_num_rows()>0) - { - $return = false; - $errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!'; - } - else - { - if ($leDAO->delete($_POST['lehreinheit_id'])) - { - $return = true; - } - else - { - $return = false; - $errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg; - } - } - } - else - { - $return = false; - $errormsg = 'unbekannter Fehler'; - } - } - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') - { - if(isset($_POST['mitarbeiter_uid'])) - { - $mitarbeiter = new mitarbeiter(); - if($mitarbeiter->load($_POST['mitarbeiter_uid'])) - { - $data = $mitarbeiter->stundensatz; - $return = true; - } - else - { - $errormsg = 'Fehler beim Laden des Mitarbeiters'; - $return = false; - } - } - else - { - $errormsg = 'MitarbeiterUID muss uebergeben werden'; - $return = false; - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save') - { - $lehrveranstaltung_obj = new lehrveranstaltung(); - if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id'])) - $errormsg = 'Fehler beim Laden der Lehrveranstaltung'; - - if(!$rechte->isBerechtigtMultipleOe('admin', $lehrveranstaltung_obj->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lehrveranstaltung_obj->getAllOe(), 'suid')) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - - if(!$error) - { - isset($_POST['lvangebot_id']) ? $lvangebot_id = $_POST['lvangebot_id'] : $lvangebot_id = null; - $datum_obj = new datum(); - $lvangebot = new lvangebot(); - $lvangebot->insertamum = date('Y-m-d H:i:s'); - $lvangebot->insertvon = $user; - - if($lvangebot_id) - { - $lvangebot->load($lvangebot_id); - $lvangebot->new = false; - } - else - { - $lvangebot->new = true; - } - - $studiengang = new studiengang(); - if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) - $errormsg = 'Fehler beim Laden des Studienganges'; - - if($_POST['neue_gruppe'] == "false") - { - $gruppe_kurzbz = $_POST['gruppe']; - } - else - { - $gruppe = new gruppe(); - $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); - $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); - $gruppe->gruppe_kurzbz=$gruppe_kurzbz; - $gruppe->studiengang_kz=$studiengang->studiengang_kz; - $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); - $gruppe->semester=$lehrveranstaltung_obj->semester; - $gruppe->sort=''; - $gruppe->mailgrp=false; - $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; - $gruppe->sichtbar=true; - $gruppe->generiert=false; - $gruppe->aktiv=true; - $gruppe->lehre=true; - $gruppe->content_visible=false; - $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; - $gruppe->gesperrt=false; - $gruppe->zutrittssystem=false; - $gruppe->insertamum=date('Y-m-d H:i:s'); - $gruppe->insertvon=$user; - - if(!$gruppe->save(true)) - { - $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; - $return = false; - } - } - - $lvangebot->lehrveranstaltung_id = $_POST['lehrveranstaltung_id']; - $lvangebot->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - $lvangebot->gruppe_kurzbz = $gruppe_kurzbz; - $lvangebot->incomingplaetze = $_POST['incomingplaetze']; - $lvangebot->gesamtplaetze = $_POST['gesamtplaetze']; - $lvangebot->anmeldefenster_start = $datum_obj->formatDatum($_POST['anmeldefenster_start'], 'Y-m-d'); - $lvangebot->anmeldefenster_ende = $datum_obj->formatDatum($_POST['anmeldefenster_ende'],'Y-m-d'); - - if(!$lvangebot->save()) - { - $errormsg = $lvangebot->errormsg; - $return = false; - } - else - { - $return = true; - } - } - } - elseif(isset($_POST['type']) && $_POST['type']=='lvangebot_gruppe_del') - { - $lvangebot = new lvangebot(); - $lvangebot->load($_POST['lvangebot_id']); - $lva = new lehrveranstaltung($lvangebot->lehrveranstaltung_id); - - if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && - !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && - !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) - { - $error = true; - $return = false; - $errormsg = 'Keine Berechtigung'; - } - - if(!$error) - { - if(!$lvangebot->delete($_POST['lvangebot_id'])) - { - $errormsg = $this->errormsg; - $return = false; - } - else - { - $return = true; - } - } - } - else - { - $return = false; - $errormsg = 'Unkown type: '.$_POST['type']; - $data = ''; - } -} -echo ' - - - - - '.($return?'true':'false').' - - - - - - -'; -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +// **************************************** +// * Insert/Update/Delete +// * der Lehreinheiten +// * +// * Script sorgt fuer den Datenbankzugriff +// * fuer das XUL - Lehreinheiten-Modul +// * +// * Derzeitige Funktionen: +// * - Lehreinheitmitarbeiter Zuteilung hinzufuegen/bearbeiten/loeschen +// * - Lehreinheitgruppe Zutelung hinzufuegen/loeschen +// * - Lehreinheit anlegen/bearbeiten/loeschen +// **************************************** + +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/lehreinheit.class.php'); +require_once('../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../include/lehreinheitgruppe.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/log.class.php'); +require_once('../../include/person.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/mitarbeiter.class.php'); +require_once('../../include/lehrstunde.class.php'); +require_once('../../include/lvangebot.class.php'); +require_once('../../include/gruppe.class.php'); +require_once('../../include/lehrveranstaltung.class.php'); +require_once('../../include/datum.class.php'); +require_once('../../include/vertrag.class.php'); +require_once('../../include/benutzergruppe.class.php'); + +$user = get_uid(); +$db = new basis_db(); +//error_reporting(0); + +$return = false; +$errormsg = 'unknown'; +$data = ''; +$error = false; +$warnung = false; + +loadVariables($user); + +//Berechtigungen laden +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); +if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('lv-plan')) +{ + $return = false; + $errormsg = 'Keine Berechtigung'; + $data = ''; + $error = true; +} + + +function kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old, $db_stpl_table) +{ + //Lehrstunden laden + $lehrstunden=new lehrstunde(); + $lehrstunde=new lehrstunde(); + $lehrstunden->load_lehrstunden_le($lehreinheit_id,$mitarbeiter_uid_old); + + $koll_arr=array(); + foreach ($lehrstunden->lehrstunden as $ls) + { + $lehrstunde->load($ls->stundenplan_id); + $lehrstunde->lektor_uid=$mitarbeiter_uid; + if ($lehrstunde->kollision($db_stpl_table)) + { + $koll_arr[]=$lehrstunde->errormsg; + } + } + if(count($koll_arr)>0) + return $koll_arr; + + return false; +} + +/** + * Prueft ob die Person den Lehrauftrag auf eine Firma ausgestellt bekommt + * + * @param $mitarbeiter_uid + * @return boolean + */ +function LehrauftragAufFirma($mitarbeiter_uid) +{ + global $db; + + $qry_firma = " + SELECT * FROM campus.vw_mitarbeiter LEFT JOIN public.tbl_adresse USING(person_id) + WHERE uid=".$db->db_add_param($mitarbeiter_uid)." + ORDER BY zustelladresse DESC, firma_id LIMIT 1"; + if($result_firma = $db->db_query($qry_firma)) + { + if($row_firma = $db->db_fetch_object($result_firma)) + { + if($row_firma->firma_id=='') + return false; + else + return true; + } + else + { + return false; + } + } + else + { + return false; + } +} + +/** + * Liefert eine Liste mit den Gesamtstunden eines Lektors in den einzelnen Instituten + * + * @param $mitarbeiter_uid + * @param $studiensemester_kurzbz + * @return string + */ +function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_arr) +{ + global $db; + + $ret="Der Lektor ist in folgenden Organisationseinheiten zugeteilt:\n"; + + //Liste mit den Stunden in den jeweiligen Instituten anzeigen + $qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_studiengang.bezeichnung + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden AND + tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).") + GROUP BY tbl_studiengang.bezeichnung"; + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $ret .=$row->summe.' Stunden '.$row->bezeichnung."\n"; + } + } + return $ret; +} + +if(!$error) +{ + if(!empty($_POST['lehrveranstaltung'])) + $lva = new lehrveranstaltung($_POST['lehrveranstaltung']); + + if(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_save') + { + //Lehreinheitmitarbeiter Zuteilung + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + $oe_arr = $lva->getAllOe(); + + if(!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $oe_arr, 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + $lem = new lehreinheitmitarbeiter(); + + if(!$lem->load($_POST['lehreinheit_id'],$_POST['mitarbeiter_uid_old'])) + { + $return = false; + $errormsg = 'Fehler beim Laden:'.$lem->errormsg; + $error = true; + } + $semesterstunden_alt=$lem->semesterstunden; + $bismelden_alt = $lem->bismelden; + $faktor_alt = $lem->faktor; + $stundensatz_alt = $lem->stundensatz; + + $qry_lvplanaenderung=''; + + if(!$error) + { + $lem->lehreinheit_id = $_POST['lehreinheit_id']; + $lem->lehrfunktion_kurzbz = $_POST['lehrfunktion_kurzbz']; + $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; + $lem->mitarbeiter_uid_old = $_POST['mitarbeiter_uid_old']; + $lem->semesterstunden = $_POST['semesterstunden']; + $lem->planstunden = $_POST['planstunden']; + $lem->stundensatz = $_POST['stundensatz']; + $lem->faktor = $_POST['faktor']; + $lem->anmerkung = $_POST['anmerkung']; + $lem->bismelden = ($_POST['bismelden']=='true'?true:false); + $lem->updateamum = date('Y-m-d H:i:s'); + $lem->updatevon = $user; + + $lem->new=false; + + //Wenn sich der Lektor aendert und keine Kollision dadurch entsteht, dann werden die + //Daten automatisch im Stundenplan geaendert + if($lem->mitarbeiter_uid!=$lem->mitarbeiter_uid_old) + { + $koll_arr = kollision($lem->lehreinheit_id, $lem->mitarbeiter_uid, $lem->mitarbeiter_uid_old, $db_stpl_table); + //check kollision + if($koll_arr===false || $ignore_kollision=='true') + { + //Update im Stundenplan + $stpl_table='lehre.tbl_stundenplandev'; + $qry_lvplanaenderung = "UPDATE $stpl_table SET mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid).", updateamum=now(), updatevon=".$db->db_add_param($user)." WHERE lehreinheit_id=".$db->db_add_param($lem->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid_old); + // Das Update wird erst weiter unten durchgefuehrt wenn die restlichen Checks erfolgreich sind da es sonst zu inkonsistenzen kommt + if(is_array($koll_arr)) + { + $errormsg="Da Kollisionen deaktiviert sind, wird die Änderung durchgeführt obwohl dadurch kollisionen entstehen. Bitte korrigieren Sie folgende Kollisionen manuell:\n"; + $errormsg.=implode("\n",$koll_arr); + } + } + else + { + $return = false; + $errormsg = "Änderung fehlgeschlagen!\nDie Änderung des Lektors führt zu ".count($koll_arr)." Kollision(en) im LV-Plan. Deaktivieren Sie die Kollisionspruefung oder wenden Sie sich an die LV-Planung!\n"; + $errormsg.= "zB:".$koll_arr[0]; + $error = true; + } + } + + $fixangestellt=false; + if(!$error) + { + //Pruefen ob die erlaubte Semesterstundenanzahl ueberschritten wurde. + //Wenn ja dann ein Warning zurueckliefern + $ma = new mitarbeiter(); + $ma->load($lem->mitarbeiter_uid); + $fixangestellt=$ma->fixangestellt; + + $oe_obj = new organisationseinheit(); + $stunden_oe_kurzbz=null; + + $stg_obj = new studiengang(); + $stg_obj->load($lva->studiengang_kz); + + //Maximale Stundenanzahl ermitteln + if($fixangestellt) + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); + else + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); + + //Summe der Stunden ermitteln + $le = new lehreinheit(); + $le->load($lem->lehreinheit_id); + + if($lem->stundensatz<=0 || $lem->faktor<=0 || $lem->bismelden==false) + $neue_stunden_eingerechnet=false; + else + $neue_stunden_eingerechnet=true; + + if(($stundensatz_alt<=0 || $faktor_alt<=0 || $bismelden_alt==false)) + $alte_stunden_eingerechnet=false; + else + $alte_stunden_eingerechnet=true; + + //Stundenreduzierung immer moeglich + if(($lem->semesterstunden>$semesterstunden_alt) || $neue_stunden_eingerechnet) + { + $oe_obj = new organisationseinheit(); + $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); + $qry = "SELECT "; + if($alte_stunden_eingerechnet && $neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe"; + elseif($alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)) as summe"; + elseif(!$alte_stunden_eingerechnet && $neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)+($lem->semesterstunden)) as summe"; + elseif(!$alte_stunden_eingerechnet && !$neue_stunden_eingerechnet) + $qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)) as summe"; + $qry.=" FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden"; + + if(count($oe_arr)>0) + $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->summe>$max_stunden) + { + if(!$fixangestellt) + { + if(!LehrauftragAufFirma($lem->mitarbeiter_uid)) + { + //Warnung wenn die Stundenzahl ueberschritten wurde + $return = false; + $error = true; + $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; + } + } + else + { + $return = true; + $error = false; + $warnung = true; + $errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden gespeichert!\n\n"; + } + + $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz, $oe_arr); + } + } + else + { + $return = false; + $error=true; + $errormsg='Fehler beim Ermitteln der Gesamtstunden'; + } + + } + else + { + $return = false; + $error=true; + $errormsg='Fehler beim Ermitteln der Gesamtstunden'; + } + } + } + + if(!$error) + { + if($lem->save()) + { + //Fixangestellte bekommen eine Warnung wenn die Stunden ueberschritten wurden. Es wird aber + //trotzdem gespeichert + if($warnung) + { + $return=false; + $error = true; + } + else + { + $return = true; + $error = false; + } + + // Wenn eine LVPlan aenderung noetig ist, dann diese jetzt + // durchfuehrten + if($qry_lvplanaenderung!='') + { + if($db->db_query($qry_lvplanaenderung)) + { + if($errormsg=='' || $errormsg=='unknown') + { + $error = false; + $return = true; + } + else + { + // Bei Kollisionen steht in errormsg die Kollisionsinformation + $error = true; + $return = false; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler beim Update im LV-Plan'.$qry; + } + } + } + else + { + $return = false; + $errormsg = $lem->errormsg; + $error = true; + } + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') + { + //neue Lehreinheitmitarbeiterzuteilung anlegen + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + if(isset($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) + { + $lem = new lehreinheitmitarbeiter(); + + $lem->lehreinheit_id = $_POST['lehreinheit_id']; + $lem->lehrfunktion_kurzbz = 'Lektor'; + $lem->mitarbeiter_uid = $_POST['mitarbeiter_uid']; + + $lem->anmerkung = ''; + $lem->bismelden = true; + $lem->updateamum = date('Y-m-d H:i:s'); + $lem->updatevon = $user; + $lem->insertamum = date('Y-m-d H:i:s'); + $lem->insertvon = $user; + $lem->new=true; + + $fixangestellt=false; + //Stundensatz aus tbl_mitarbeiter holen + $qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + if($row->stundensatz!='') + $lem->stundensatz = $row->stundensatz; + else + $lem->stundensatz = '0'; + $fixangestellt = ($row->fixangestellt=='t'?true:false); + } + else + { + $error=true; + $return=false; + $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; + } + } + else + { + $error=true; + $return=false; + $errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error(); + } + + $maxstunden=9999; + + $oe_obj = new organisationseinheit(); + $stunden_oe_kurzbz=null; + + $stg_obj = new studiengang(); + $stg_obj->load($lva->studiengang_kz); + + //Maximale Stundenanzahl ermitteln + if($fixangestellt) + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true); + else + list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false); + + //Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde + if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid)) + { + //Summe der Stunden ermitteln + $le = new lehreinheit(); + $le->load($lem->lehreinheit_id); + + $oe_obj = new organisationseinheit(); + $oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz); + + $qry = "SELECT + sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND + studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND + faktor>0 AND + stundensatz>0 AND + bismelden"; + + if(count($oe_arr)>0) + $qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")"; + + if($result_std = $db->db_query($qry)) + { + if($row_std = $db->db_fetch_object($result_std)) + { + //Grenze ueberschritten + if($row_std->summe>=$max_stunden) + { + $return = false; + $error = true; + $errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n"; + $errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz,$oe_arr); + } + else + { + //Stunden berechnen die noch maximal unterrichtet werden darf + $maxstunden = $max_stunden-$row_std->summe; + } + } + } + } + + if(!$error) + { + //Faktor und Semesterstunden aus tbl_lehrveranstaltung holen + $qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER).";"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->planfaktor!='') + $lem->faktor = $row->planfaktor; + else + $lem->faktor = '1.0'; + + if($row->semesterstunden!='') + { + //wenn es sich um einen freien Lektor handelt, und dieser nicht mehr die volle Stundenanzahl unterrichten + //darf, dann werden nur die restlichen zur Verfuegung stehenden Stunden zugeteilt. + $lem->semesterstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); + $lem->planstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden); + } + else + { + $lem->planstunden = '0'; + $lem->semesterstunden = '0'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehrveranstaltung wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error(); + } + + if(!$error) + { + if($lem->save()) + { + $return = true; + $error = false; + } + else + { + $return = false; + $errormsg = $lem->errormsg; + $error = true; + } + } + } + } + else + { + $return = false; + $errormsg = 'Fehlerhafte Parameteruebergabe'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_del') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Lehreinheitmitarbeiterzuteilung loeschen + if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id']) && isset($_POST['mitarbeiter_uid'])) + { + //Wenn der Mitarbeiter im Stundenplan verplant ist, dann wird das Loeschen verhindert + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid'])." + UNION + SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $return = false; + $errormsg = 'Dieser Lektor kann nicht gelöscht werden da er schon verplant ist'; + } + else + { + $leg = new lehreinheitmitarbeiter(); + if($leg->load($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) + { + // Wenn ein Vertrag dazu angelegt ist, dann diesen mitloeschen + if($leg->vertrag_id!='') + { + $vertrag = new vertrag(); + $vertrag->delete($leg->vertrag_id); + } + + if($leg->delete($_POST['lehreinheit_id'], $_POST['mitarbeiter_uid'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg='Fehlgeschlagen:'.$leg->errormsg; + } + } + } + else + { + $return = false; + $errormsg = 'Fehler:'.$qry; + } + } + else + { + $return = false; + $errormsg = 'Fehler beim Löschen der Zuordnung'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Pruefen ob bereits eine Kreuzerlliste vorhanden ist + $qry = "SELECT count(*) as anzahl FROM lehre.tbl_lehreinheitgruppe, lehre.tbl_lehreinheit, campus.tbl_uebung WHERE + tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." AND + tbl_lehreinheitgruppe.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND + tbl_lehreinheit.lehreinheit_id=tbl_uebung.lehreinheit_id"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + if($row->anzahl>0) + { + $error = true; + $return = false; + $errormsg = 'Diese Gruppe kann nicht geloescht werden da bereits Kreuzerllisten angelegt wurden'; + } + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Fehler beim Ermitteln ob eine Kreuzerlliste vorhanden ist'; + } + + //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde + if(!$error) + { + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev + WHERE + (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = + (SELECT + lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + ) + "; + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $error = true; + $return = false; + $errormsg = 'Diese Gruppe kann nicht geloescht werden, da sie bereits im LV-Plan verplant ist. Bitte wenden Sie sich an die LV-Planung'; + } + } + else + { + $errormsg = 'Fehler beim Pruefen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + + } + + if(!$error) + { + //Lehreinheitgruppezuteilung loeschen + if(isset($_POST['lehreinheitgruppe_id']) && is_numeric($_POST['lehreinheitgruppe_id'])) + { + $leg = new lehreinheitgruppe(); + if($leg->delete($_POST['lehreinheitgruppe_id'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg = 'Fehler beim Löschen der Zuordnung'; + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_lektor_del_lvplan') + { + //Pruefen ob dieser Lektor im Stundenplan schon verplant wurde + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('lv-plan/lektorentfernen', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + // Wenn nur noch dieser Lektor im LVPlan verplant ist, dann wird das loeschen verhindert + // da sonst der gesamte LVPlan der Lehreinheit weg ist + $qry = "SELECT + distinct mitarbeiter_uid + FROM + lehre.tbl_stundenplandev + WHERE + lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)<2) + { + $error = true; + $return = false; + $errormsg='Dieser Lektor kann nicht aus dem LVPlan entfernt werden da dies der letzte verplante Lektor ist'; + } + } + + // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden + // dann wird das loeschen verhindert + $qry = "SELECT + 1 + FROM + lehre.tbl_stundenplandev + JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) + WHERE + tbl_stundenplandev.lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + AND tbl_stundenplandev.mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)>0) + { + $return = false; + $error = true; + $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; + } + } + else + { + $return = false; + $error = true; + $errormsg = 'Fehler bei Datenbankabfrage'; + } + + if(!$error) + { + $qry = "DELETE FROM lehre.tbl_stundenplandev + WHERE + lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + AND mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); + + if($db->db_query($qry)) + { + $error = false; + $return = true; + } + else + { + $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_del_lvplan') + { + //Pruefen ob diese Gruppe im Stundenplan schon verplant wurde + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('lv-plan/gruppenentfernen', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + // Wenn nur noch diese eine Gruppe im LVPlan verplant ist, dann wird das loeschen verhindert + // da sonst der gesamte LVPlan der Lehreinheit weg ist + $qry = "SELECT + distinct studiengang_kz, semester, verband, gruppe, gruppe_kurzbz + FROM + lehre.tbl_stundenplandev + WHERE + lehreinheit_id=(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER).")"; + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)<2) + { + $error = true; + $return = false; + $errormsg='Diese Gruppe kann nicht aus dem LVPlan entfernt werden da dies die letzte verplante Gruppe ist'; + } + } + + // Wenn Ressourcen an einem der Stundenplaneintraege haengen die geloescht werden wuerden + // dann wird das loeschen verhindert + $qry = "SELECT + 1 + FROM + lehre.tbl_stundenplandev + JOIN lehre.tbl_stundenplan_betriebsmittel USING(stundenplandev_id) + JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) + WHERE + tbl_lehreinheitgruppe.lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + AND + ( + ( + tbl_lehreinheitgruppe.gruppe_kurzbz is not null + AND + tbl_lehreinheitgruppe.gruppe_kurzbz=tbl_stundenplandev.gruppe_kurzbz + ) + OR + ( + tbl_lehreinheitgruppe.gruppe_kurzbz is null + AND + tbl_lehreinheitgruppe.studiengang_kz=tbl_stundenplandev.studiengang_kz + AND + tbl_lehreinheitgruppe.semester=tbl_stundenplandev.semester + AND + tbl_lehreinheitgruppe.verband = tbl_stundenplandev.verband + AND + tbl_lehreinheitgruppe.gruppe = tbl_stundenplandev.gruppe + ) + )"; + + if($result = $db->db_query($qry)) + { + if($db->db_num_rows($result)>0) + { + $return = false; + $error = true; + $errormsg = 'Gruppe kann nicht entfernt werden da bereits Ressourcen zugeordnet wurden'; + } + } + + if(!$error) + { + + $qry = "DELETE FROM lehre.tbl_stundenplandev + WHERE + (lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,''))) = + (SELECT + lehreinheit_id, studiengang_kz, semester, trim(COALESCE(verband,'')), trim(COALESCE(gruppe,'')), trim(COALESCE(gruppe_kurzbz,'')) + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheitgruppe_id=".$db->db_add_param($_POST['lehreinheitgruppe_id'], FHC_INTEGER)." + )"; + + if($db->db_query($qry)) + { + $error = false; + $return = true; + } + else + { + $errormsg = 'Fehler beim Entfernen des LV-Plans: '.$db->db_last_error(); + $return = false; + $error = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_add') + { + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + //Lehreinheitgruppezuteilung anlegen + if(isset($_POST['lehreinheit_id']) && is_numeric($_POST['lehreinheit_id'])) + { + $leg = new lehreinheitgruppe(); + $leg->lehreinheit_id = $_POST['lehreinheit_id']; + $leg->studiengang_kz = $_POST['studiengang_kz']; + $leg->semester = $_POST['semester']; + $leg->verband = $_POST['verband']; + $leg->gruppe = $_POST['gruppe']; + $leg->gruppe_kurzbz = $_POST['gruppe_kurzbz']; + $leg->insertamum = date('Y-m-d H:i:s'); + $leg->insertvon = $user; + + if(!$leg->checkVorhanden()) + { + if($leg->errormsg=='') + { + if($leg->save(true)) + { + $return = true; + } + else + { + $return = false; + $errormsg = $leg->errormsg; + } + } + else + { + $return = false; + $errormsg=$leg->errormsg; + } + } + else + { + $return = false; + $errormsg = 'Diese Gruppe ist bereits zugeteilt'; + } + } + else + { + $return = false; + $errormsg = 'Bitte zuerst eine Lehreinheit auswaehlen'; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit') + { + //Lehreinheit anlegen/aktualisieren + if(isset($_POST['lehreinheit_id']) && $_POST['lehreinheit_id']!='') + $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz + FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND + tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + else + $qry = "SELECT studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($_POST['lehrveranstaltung'], FHC_INTEGER); + + if($db->db_query($qry)) + { + if($row = $db->db_fetch_object()) + { + $studiengang_kz = $row->studiengang_kz; + $fachbereich_kurzbz = 0; + if(isset($row->fachbereich_kurzbz)) + $fachbereich_kurzbz = $row->fachbereich_kurzbz; + if(!isset($lva)) + $lva = new lehrveranstaltung($row->lehrveranstaltung_id); + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + } + else + { + $error = true; + $return = false; + $errormsg = 'Lehreinheit wurde nicht gefunden'; + } + + if(!$error) + { + $leDAO=new lehreinheit(); + if ($_POST['do']=='create' || ($_POST['do']=='update')) + { + if($_POST['do']=='update') + { + if(!$leDAO->load($_POST['lehreinheit_id'])) + { + $return = false; + $error = true; + $errormsg = 'Fehler beim Laden der Lehreinheit'; + } + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + else + { + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'si') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'si') && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + } + + if(!$error) + { + $leDAO->lehrveranstaltung_id=$_POST['lehrveranstaltung']; + $leDAO->studiensemester_kurzbz=$_POST['studiensemester_kurzbz']; + $leDAO->lehrfach_id=$_POST['lehrfach_id']; + $leDAO->lehrform_kurzbz=$_POST['lehrform']; + $leDAO->stundenblockung=$_POST['stundenblockung']; + $leDAO->wochenrythmus=$_POST['wochenrythmus']; + $leDAO->gewicht = $_POST['gewicht']; + + if (isset($_POST['start_kw'])) + $leDAO->start_kw=$_POST['start_kw']; + + $leDAO->raumtyp=$_POST['raumtyp']; + $leDAO->raumtypalternativ=$_POST['raumtypalternativ']; + $leDAO->sprache=$_POST['sprache']; + + if (isset($_POST['lehre'])) + $leDAO->lehre=($_POST['lehre']=='true'?true:false); + + if (isset($_POST['anmerkung'])) + $leDAO->anmerkung=$_POST['anmerkung']; + + $leDAO->lvnr=(isset($_POST['lvnr'])?$_POST['lvnr']:''); + $leDAO->unr=(isset($_POST['unr'])?$_POST['unr']:''); + if($leDAO->unr=='') + { + if(isset($_POST['lehreinheit_id'])) + $leDAO->unr = $_POST['lehreinheit_id']; + } + $leDAO->updateamum=date('Y-m-d H:i:s'); + $leDAO->updatevon=$user; + + if ($_POST['do']=='create') + { + // LE neu anlegen + $leDAO->new=true; + $leDAO->insertamum=date('Y-m-d H:i:s'); + $leDAO->insertvon=$user; + } + else if ($_POST['do']=='update') + { + // LE aktualisieren + $leDAO->new=false; + } + if ($leDAO->save()) + { + $data = $leDAO->lehreinheit_id; + $return = true; + if($_POST['do']=='create') + { + // Wenn ein LV-Angebot vorliegt, wird diese Gruppe automatisch zugeteilt + $lvangebot = new lvangebot(); + $lvangebot->getAllFromLvId($leDAO->lehrveranstaltung_id, $leDAO->studiensemester_kurzbz); + if(isset($lvangebot->result[0]) && $lvangebot->result[0]->gruppe_kurzbz!='') + { + $gruppe = new gruppe(); + $gruppe->load($lvangebot->result[0]->gruppe_kurzbz); + + $leg = new lehreinheitgruppe(); + $leg->lehreinheit_id = $leDAO->lehreinheit_id; + $leg->studiengang_kz = $gruppe->studiengang_kz; + $leg->semester = $gruppe->semester; + $leg->gruppe_kurzbz = $gruppe->gruppe_kurzbz; + $leg->insertamum = date('Y-m-d H:i:s'); + $leg->insertvon = $user; + $leg->new = true; + $leg->save(); + } + } + } + else + { + $return = false; + $errormsg = $leDAO->errormsg; + } + } + } + else if ($_POST['do']=='delete') //Lehreinheit loeschen + { + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid')) + { + $return = false; + $error = true; + $errormsg = 'Keine Berechtigung'; + } + else + { + // Loeschen verhindern wenn diese Lehreinheit schon verplant ist + $qry = "SELECT stundenplandev_id as id FROM lehre.tbl_stundenplandev WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER)." + UNION + SELECT stundenplan_id as id FROM lehre.tbl_stundenplan WHERE lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER); + if($db->db_query($qry)) + { + if($db->db_num_rows()>0) + { + $return = false; + $errormsg = 'Diese Lehreinheit ist bereits im LV-Plan verplant und kann daher nicht geloescht werden!'; + } + else + { + if ($leDAO->delete($_POST['lehreinheit_id'])) + { + $return = true; + } + else + { + $return = false; + $errormsg = 'Fehler beim Loeschen der Lehreinheit '.$leDAO->errormsg; + } + } + } + else + { + $return = false; + $errormsg = 'unbekannter Fehler'; + } + } + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz') + { + if(isset($_POST['mitarbeiter_uid'])) + { + $mitarbeiter = new mitarbeiter(); + if($mitarbeiter->load($_POST['mitarbeiter_uid'])) + { + $data = $mitarbeiter->stundensatz; + $return = true; + } + else + { + $errormsg = 'Fehler beim Laden des Mitarbeiters'; + $return = false; + } + } + else + { + $errormsg = 'MitarbeiterUID muss uebergeben werden'; + $return = false; + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lvangebot-gruppe-save') + { + $lehrveranstaltung_obj = new lehrveranstaltung(); + if(!$lehrveranstaltung_obj->load($_POST['lehrveranstaltung_id'])) + $errormsg = 'Fehler beim Laden der Lehrveranstaltung'; + + if(!$rechte->isBerechtigtMultipleOe('admin', $lehrveranstaltung_obj->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lehrveranstaltung_obj->getAllOe(), 'suid')) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if(!$error) + { + isset($_POST['lvangebot_id']) ? $lvangebot_id = $_POST['lvangebot_id'] : $lvangebot_id = null; + $datum_obj = new datum(); + $lvangebot = new lvangebot(); + $lvangebot->insertamum = date('Y-m-d H:i:s'); + $lvangebot->insertvon = $user; + + if($lvangebot_id) + { + $lvangebot->load($lvangebot_id); + $lvangebot->new = false; + } + else + { + $lvangebot->new = true; + } + + $studiengang = new studiengang(); + if(!$studiengang->load($lehrveranstaltung_obj->studiengang_kz)) + $errormsg = 'Fehler beim Laden des Studienganges'; + + if($_POST['neue_gruppe'] == "false") + { + $gruppe_kurzbz = $_POST['gruppe']; + } + else + { + $gruppe = new gruppe(); + $gruppe_kurzbz = mb_strtoupper(substr($studiengang->kuerzel.$lehrveranstaltung_obj->semester.'-'.$_POST['studiensemester_kurzbz'].'-'.$lehrveranstaltung_obj->kurzbz,0,32)); + $gruppe_kurzbz = $gruppe->getNummerierteGruppenbez($gruppe_kurzbz); + $gruppe->gruppe_kurzbz=$gruppe_kurzbz; + $gruppe->studiengang_kz=$studiengang->studiengang_kz; + $gruppe->bezeichnung=mb_substr($lehrveranstaltung_obj->bezeichnung,0,30); + $gruppe->semester=$lehrveranstaltung_obj->semester; + $gruppe->sort=''; + $gruppe->mailgrp=false; + $gruppe->beschreibung=$lehrveranstaltung_obj->bezeichnung; + $gruppe->sichtbar=true; + $gruppe->generiert=false; + $gruppe->aktiv=true; + $gruppe->lehre=true; + $gruppe->content_visible=false; + $gruppe->orgform_kurzbz=$lehrveranstaltung_obj->orgform_kurzbz; + $gruppe->gesperrt=false; + $gruppe->zutrittssystem=false; + $gruppe->insertamum=date('Y-m-d H:i:s'); + $gruppe->insertvon=$user; + + if(!$gruppe->save(true)) + { + $errormsg = 'Fehler beim Erstellen der Gruppe'.$gruppe->errormsg; + $return = false; + } + } + + $lvangebot->lehrveranstaltung_id = $_POST['lehrveranstaltung_id']; + $lvangebot->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + $lvangebot->gruppe_kurzbz = $gruppe_kurzbz; + $lvangebot->incomingplaetze = $_POST['incomingplaetze']; + $lvangebot->gesamtplaetze = $_POST['gesamtplaetze']; + $lvangebot->anmeldefenster_start = $datum_obj->formatDatum($_POST['anmeldefenster_start'], 'Y-m-d'); + $lvangebot->anmeldefenster_ende = $datum_obj->formatDatum($_POST['anmeldefenster_ende'],'Y-m-d'); + + if(!$lvangebot->save()) + { + $errormsg = $lvangebot->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lvangebot_gruppe_del') + { + $lvangebot = new lvangebot(); + $lvangebot->load($_POST['lvangebot_id']); + $lva = new lehrveranstaltung($lvangebot->lehrveranstaltung_id); + + if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if(!$error) + { + if(!$lvangebot->delete($_POST['lvangebot_id'])) + { + $errormsg = $this->errormsg; + $return = false; + } + else + { + $return = true; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_direkt_user_add') + { + $lehreinheit_id = $_POST['lehreinheit_id']; + $uid = $_POST['uid']; + + $lehreinheit = new lehreinheit(); + $lehreinheit->load($lehreinheit_id); + $lva = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id); + + if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if (!$error) + { + $lehreinheitgruppe = new lehreinheitgruppe(); + if($lehreinheitgruppe->getDirectGroup($lehreinheit_id)) + { + $gruppe_kurzbz = $lehreinheitgruppe->gruppe_kurzbz; + } + else + { + // Es gibt keine direkte Gruppe zu dieser LE + // es wird eine erstellt und zugewiesen + $gruppe_kurzbz = 'GRP_'.$lehreinheit_id; + + $stg_obj = new studiengang(); + $stg_obj->load($lva->studiengang_kz); + $bezeichnung = $stg_obj->kuerzel.' '.$lva->semester.' '.$lva->kurzbz; + $gruppe = new gruppe(); + if(!$gruppe->load($gruppe_kurzbz)) + { + $gruppe->gruppe_kurzbz = $gruppe_kurzbz; + $gruppe->studiengang_kz = $lva->studiengang_kz; + $gruppe->semester = $lva->semester; + $gruppe->bezeichnung = $bezeichnung; + $gruppe->aktiv = true; + $gruppe->mailgrp = false; + $gruppe->sichtbar = true; + $gruppe->generiert = false; + $gruppe->insertamum = date('Y-m-d H:i:s'); + $gruppe->insertvon = $user; + $gruppe->orgform_kurzbz = $lva->orgform_kurzbz; + $gruppe->direktinskription = true; + if(!$gruppe->save(true)) + { + $gruppe_kurzbz = ''; + $errormsg = $gruppe->errormsg; + $return = false; + } + } + + if ($gruppe_kurzbz != '') + { + $lehreinheitgruppe = new lehreinheitgruppe(); + + $lehreinheitgruppe->lehreinheit_id = $lehreinheit_id; + $lehreinheitgruppe->gruppe_kurzbz = $gruppe_kurzbz; + $lehreinheitgruppe->studiengang_kz = $lva->studiengang_kz; + $lehreinheitgruppe->semester = $lva->semester; + $lehreinheitgruppe->insertamum = date('Y-m-d H:i:s'); + $lehreinheitgruppe->inservon = $user; + if(!$lehreinheitgruppe->save(true)) + { + $gruppe_kurzbz = ''; + $return = false; + $errormsg = $lehreinheitgruppe->errormsg;; + } + } + } + + if ($gruppe_kurzbz != '') + { + $benutzergruppe = new benutzergruppe(); + if (!$benutzergruppe->load($uid, $gruppe_kurzbz, $lehreinheit->studiensemester_kurzbz)) + { + $benutzergruppe->uid = $uid; + $benutzergruppe->gruppe_kurzbz = $gruppe_kurzbz; + $benutzergruppe->studiensemester_kurzbz = $lehreinheit->studiensemester_kurzbz; + $benutzergruppe->insertamum = date('Y-m-d H:i:s'); + $benutzergruppe->insertvon = $user; + + if ($benutzergruppe->save(true)) + { + $return = true; + } + else + { + $errormsg = $benutzergruppe->errormsg; + $return = false; + } + } + else + { + $errormsg = $benutzergruppe->errormsg; + $return = false; + } + } + else + { + $errormsg .= 'Gruppe kann nicht erstellt werden'; + $return = false; + } + } + } + elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_gruppe_direkt_del') + { + $gruppe_kurzbz = $_POST['gruppe_kurzbz']; + $uid = $_POST['uid']; + $lehreinheit_id = $_POST['lehreinheit_id']; + + $lehreinheit = new lehreinheit(); + $lehreinheit->load($lehreinheit_id); + $lva = new lehrveranstaltung($lehreinheit->lehrveranstaltung_id); + + if (!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') && + !$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) && + !$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz)) + { + $error = true; + $return = false; + $errormsg = 'Keine Berechtigung'; + } + + if (!$error) + { + $lehreinheitgruppe = new lehreinheitgruppe(); + if($lehreinheitgruppe->getDirectGroup($lehreinheit_id)) + { + if ($lehreinheitgruppe->gruppe_kurzbz == $gruppe_kurzbz) + { + $benutzergruppe = new benutzergruppe(); + if ($benutzergruppe->delete($uid, $gruppe_kurzbz)) + { + // User entfernt, schauen ob noch personen drannhaengen und Gruppe ggf entfernen + $benutzergruppe->load_uids($gruppe_kurzbz, $lehreinheit->studiensemester_kurzbz); + if (!isset($benutzergruppe->uids)) + { + // Gruppe ist leer und kann entfernt werden + + // von der Lehreinheit entfernen + $lehreinheitgruppe_del = new lehreinheitgruppe(); + $lehreinheitgruppe_del->delete($lehreinheitgruppe->lehreinheitgruppe_id); + + // aus Stundenplan entfernen + + // Wenn die Gruppe schon verplant wurde dann zuerst aus StundenplanDEV entfernen + // Gruppe kann dann nicht geloescht werden da diese ja noch in tbl_stundenplan verlinkt ist + $qry = " + SELECT + * + FROM + lehre.tbl_stundenplandev + WHERE + gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz)." + LIMIT 1"; + + if ($result = $db->db_query($qry)) + { + if ($db->db_num_rows($result) > 0) + { + $qry = " + DELETE FROM lehre.tbl_stundenplandev + WHERE gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz); + + $db->db_query($qry); + } + else + { + // Gruppe löschen + $gruppe = new gruppe(); + $gruppe->delete($gruppe_kurzbz); + } + } + + $return = true; + } + else + { + $return = true; + } + } + else + { + $errormsg = $benutergruppe->errormsg; + $return = false; + } + } + else + { + $errormsg = 'Gruppe passt nicht zur Lehreinheit'; + $return = false; + } + } + else + { + $errormsg = 'Gruppe passt nicht zur Lehreinheit'; + $return = false; + } + } + } + else + { + $return = false; + $errormsg = 'Unkown type: '.$_POST['type']; + $data = ''; + } +} +echo ' + + + + + '.($return?'true':'false').' + + + + + + +'; +?> diff --git a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php index 55ed80a3b..2292c4a4d 100644 --- a/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungdetailoverlay.xul.php @@ -1,568 +1,631 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -header("Cache-Control: no-cache"); -header("Cache-Control: post-check=0, pre-check=0",false); -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Pragma: no-cache"); -header("Content-type: application/vnd.mozilla.xul+xml"); -require_once('../../config/vilesci.config.inc.php'); -require_once('../../config/global.config.inc.php'); -require_once('../../include/benutzerberechtigung.class.php'); - -$user = get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -echo ''; - -?> - - - - - - - - isBerechtigt('lv-plan/gruppenentfernen')) - { - echo ''; - echo ''; - } - ?> - - - - - - isBerechtigt('lv-plan/lektorentfernen')) - { - echo ''; - echo ''; - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -