Merge branch 'master' into messages

This commit is contained in:
Paolo
2019-02-25 15:28:13 +01:00
46 changed files with 10017 additions and 8112 deletions
+28 -64
View File
@@ -1,6 +1,4 @@
<?php
// --------------------------------------------------------------------------------------------------------------------
// Header menu
$config['navigation_header'] = array(
@@ -22,16 +20,8 @@ $config['navigation_header'] = array(
'icon' => '',
'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'
)
)
)
);
+178
View File
@@ -0,0 +1,178 @@
<?php
/* Copyright (C) 2019 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
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";
}
}
}
@@ -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 .= '
<tr '.$rowstyle.'>
<td>'. $applicant->orgform_kurzbz. '</td>
<td>'. $applicant->ausbildungssemester. '</td>
<td>'. $applicant->nachname. '</td>
<td>'. $applicant->vorname. '</td>
<td>'. $applicant->zgv_kurzbz. '</td>
<td>'. $applicant->prioritaet. '</td>
<td>'. $applicant->qualifikationskurs. '</td>
<td><a href="mailto:'. $applicant->email. '">'. $applicant->email. '</a></td>
</tr>
';
}
}
if ($applicantCounter == 0)
{
$mailcontent = '<p style="font-family: verdana, sans-serif;">Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.</p>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><b>Für den Studiengang '.$studiengang_kuerzel.' nehmen keine InteressentInnen an diesem Reihungstest teil</b></p>';
}
else
{
$headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
$mailcontent = '<p style="font-family: verdana, sans-serif;">Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.</p>';
$mailcontent .= '
<p style="font-family: verdana, sans-serif;">Folgende ' . $applicantCounter . ' InteressentInnen des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:</p>
<table width="100%" style="cellpadding: 3px; font-family: verdana, sans-serif; border: 1px solid #000000;">
<thead>
<th '.$headerstyle.'>OrgForm</th>
<th '.$headerstyle.'>Semester</th>
<th '.$headerstyle.'>Nachname</th>
<th '.$headerstyle.'>Vorname</th>
<th '.$headerstyle.'>ZGV</th>
<th '.$headerstyle.'>Priorität</th>
<th '.$headerstyle.'>Qualikurs</th>
<th '.$headerstyle.'>E-Mail</th>
</thead>
<tbody>
';
$mailcontent .= $applicants_list;
$mailcontent .= '
</tbody>
</table>
';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
}
$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 .= '</tbody></table>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
$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 = '<p style="font-family: verdana, sans-serif;">Folgende InteressentInnen wurden <b>nach</b> der Anmeldefrist zu einem Reihungstest hinzugefügt.</p>';
$mailcontent .= '
<table width="100%" style="cellpadding: 3px; font-family: verdana, sans-serif; border: 1px solid #000000;">
<thead>
<th ' . $headerstyle . '>Datum des Tests</th>
<th ' . $headerstyle . '>Uhrzeit des Tests</th>
<th ' . $headerstyle . '>OrgForm</th>
<th ' . $headerstyle . '>Semester</th>
<th ' . $headerstyle . '>Nachname</th>
<th ' . $headerstyle . '>Vorname</th>
<th ' . $headerstyle . '>ZGV</th>
<th ' . $headerstyle . '>Priorität</th>
<th ' . $headerstyle . '>Qualikurs</th>
<th ' . $headerstyle . '>E-Mail</th>
</thead>
<tbody>
';
}
$studiengang = $applicant->studiengang_kz;
$mailReceipients .= $applicant->email . ';';
$applicants_list .= '
<tr ' . $rowstyle . '>
<td>' . date_format(date_create($applicant->datum), 'd.m.Y') . '</td>
<td>' . $applicant->uhrzeit . '</td>
<td>' . $applicant->orgform_kurzbz . '</td>
<td>' . $applicant->ausbildungssemester . '</td>
<td>' . $applicant->nachname . '</td>
<td>' . $applicant->vorname . '</td>
<td>' . $applicant->zgv_kurzbz . '</td>
<td>' . $applicant->prioritaet . '</td>
<td>' . $applicant->qualifikationskurs . '</td>
<td><a href="mailto:' . $applicant->email . '">' . $applicant->email . '</a></td>
</tr>
';
};
$bachelorStudiengang = $this->StudiengangModel->load($studiengang);
$mailcontent .= $applicants_list;
$mailcontent .= '</tbody></table>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
$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
= '
<table'. $style_tbl2.'>
';
@@ -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);
+97
View File
@@ -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;
}
+1 -1
View File
@@ -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.
+4 -2
View File
@@ -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)
@@ -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));
}
}
@@ -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
)
);
}
}
@@ -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));
}
}
@@ -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));
}
}
@@ -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);
}
}
+2 -95
View File
@@ -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',
<h3 class="page-header">FH-Complete</h3>
</div>
</div>
<div class="row">
<div class="col-lg-3 col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-comments fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">26</div>
<div>neue Messages</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-green">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-tasks fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">12</div>
<div>neue Interessenten</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-yellow">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-clock-o fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">124</div>
<div>inaktive Interessenten</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-3 col-md-6">
<div class="panel panel-red">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-support fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">13</div>
<div>Support Tickets!</div>
</div>
</div>
</div>
<a href="#">
<div class="panel-footer">
<span class="pull-left">View Details</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
</div>
<!-- /.row -->
<span>
<?php
//$this->load->view('system/infocenter/infocenterData.php');
?>
<div id="dashboard"></div>
</span>
</div>
</div>
@@ -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'
@@ -2,11 +2,34 @@
<?php
$unique_studsemester = array();
$first = true;
$fit_programme_studiengaenge = array(10021, 10027);
foreach ($zgvpruefungen as $zgvpruefung):
$infoonly = $zgvpruefung->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 @@
</div>
</div>
<!-- show only master zgv if master studiengang - start -->
<?php if ($zgvpruefung->studiengangtyp === 'm') : ?>
<?php if ($studiengangtyp === 'm') : ?>
<div class="row">
<div class="col-lg-<?php echo $columns[0] ?>">
<div class="form-group"><label><?php echo $this->p->t('infocenter', 'zgv') . ' ' . $this->p->t('lehre','master') . ':'?></label>
@@ -360,17 +383,24 @@
</div>
</div><!-- /.column-absage -->
<?php
$disabled = $disabledTxt = '';
$disabled = $disabledStg = $disabledTxt = $disabledStgTxt = '';
if (isEmptyString($zgvpruefung->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.';
}
}
?>
<div class="col-lg-8 text-right">
@@ -378,7 +408,7 @@
<div class="input-group frgstatusgrselect" id="frgstatusgrselect_<?php echo $zgvpruefung->prestudent_id ?>">
<select name="frgstatusgrund"
class="d-inline float-right"
<?php echo $disabled ?>
<?php echo $disabledStg ?>
required>
<option value="null"
selected="selected"><?php echo ucfirst($this->p->t('ui', 'freigabeart')) . '...' ?>
@@ -388,8 +418,8 @@
<?php endforeach ?>
</select>
<span class="input-group-btn">
<button class="btn btn-default freigabebtnstg" <?php echo $disabled ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledTxt ?>">
<button class="btn btn-default freigabebtnstg" <?php echo $disabledStg ?> id="freigabebtnstg_<?php echo $zgvpruefung->prestudent_id ?>"
data-toggle="tooltip" title="<?php echo $disabledStgTxt ?>">
<?php echo $this->p->t('ui', 'freigabeAnStudiengang') ?>
</button>
</span>
@@ -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
+28 -7
View File
@@ -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 "<br />";
echo "<b>".$p->t('global/name').":</b> $vorname $nachname<br />";
echo "<b>".$p->t('global/studiengang').":</b> $studiengang_bezeichnung<br />";
echo "<b>".$p->t('global/studiensemester')."</b> <SELECT name='stsem' onChange=\"MM_jumpMenu('self',this,0)\">";
echo "<OPTION value='notenliste.php?stsem=alle".$getParam."'>alle Semester</OPTION>";
echo "<OPTION value='notenliste.php?stsem=alle".$getParam."'>".$p->t('news/allesemester')."</OPTION>";
$notenImAktuellenStSem = false;
foreach ($stsem_obj->studiensemester as $semrow)
{
if ($stsem == $semrow->studiensemester_kurzbz)
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "' selected>$semrow->studiensemester_kurzbz</OPTION>";
$notenImAktuellenStSem = true;
}
else
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "'>$semrow->studiensemester_kurzbz</OPTION>";
}
}
echo "</SELECT><br />";
// echo "Datum: ".date('d.m.Y')."<br />";
echo "<br />";
if ($notenImAktuellenStSem == false)
{
$stsem = 'alle';
}
// Lehrveranstaltungen und Noten holen
if ($stsem != "alle")
{
+6 -6
View File
@@ -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;"/>
<menuitem
id = "menu-extras-lektorenzuordnunginstitute"
key = "menu-extras-lektorenzuordnunginstitute:key"
label = "&menu-extras-lektorenzuordnunginstitute.label;"
command = "menu-extras-lektorenzuordnunginstitute:command"
accesskey = "&menu-extras-lektorenzuordnunginstitute.accesskey;"/>
</menupopup>
</menu>
<!-- *** Student *** -->
@@ -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;"/> -->
<menuitem
id = "menu-extras-lektorenzuordnunginstitute"
key = "menu-extras-lektorenzuordnunginstitute:key"
label = "&menu-extras-lektorenzuordnunginstitute.label;"
command = "menu-extras-lektorenzuordnunginstitute:command"
accesskey = "&menu-extras-lektorenzuordnunginstitute.accesskey;"/>
<menuitem
id = "menu-extras-preinteressentenuebernahme"
key = "menu-extras-preinteressentenuebernahme:key"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+713 -698
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -524,6 +524,9 @@ class lehreinheit extends basis_db
//Gruppen / Verbaende pruefen
$sql_query="SELECT $stpl_id, studiengang_kz, semester, verband, gruppe_kurzbz, stunde, gruppe FROM $stpl_table
WHERE datum=".$this->db_add_param($datum)." AND stunde=".$this->db_add_param($stunde);
// Direkte Lehreinheitsgruppen kollidieren nicht
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe g WHERE g.gruppe_kurzbz=$stpl_table.gruppe_kurzbz AND direktinskription=true)";
if (is_numeric($this->unr))
$sql_query.=" AND unr!=".$this->db_add_param($this->unr)." AND (1=2 ";
@@ -532,7 +535,9 @@ class lehreinheit extends basis_db
$sql_query.=" OR ((studiengang_kz=".$this->db_add_param($this->studiengang_kz[$anz])." AND semester=".$this->db_add_param($this->semester[$anz]).")";
if ($this->gruppe_kurzbz[$anz]!=null && $this->gruppe_kurzbz[$anz]!='' && $this->gruppe_kurzbz[$anz]!=' ')
{
$sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz[$anz]).")";
}
else
{
if ($this->verband[$anz]!=null && $this->verband[$anz]!='' && $this->verband[$anz]!=' ')
+468 -422
View File
@@ -1,422 +1,468 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class lehreinheitgruppe extends basis_db
{
public $new; // boolean
public $lehreinheitgruppe = array(); // lehreinheitgruppe Objekt
//Tabellenspalten
public $lehreinheitgruppe_id; //integer
public $lehreinheit_id; // integer
public $studiengang_kz; // integer
public $semester; // smalint
public $verband; // char(1)
public $gruppe; // char(1)
public $gruppe_kurzbz; // varchar(16)
public $ext_id; // bigint
public $updateamum; // timestamp
public $updatevon; // varchar(16)
public $insertamum; // timestamp
public $insertvon; // varchar(16)
/**
* Konstruktor - Laedt optional eine LEGruppe
* @param $lehreinheitgruppe_id
*/
public function __construct($lehreinheitgruppe_id=null)
{
parent::__construct();
if(!is_null($lehreinheitgruppe_id))
$this->load($lehreinheitgruppe_id);
}
/**
* Laedt die LEGruppe
* @param lehreinheit_id
*/
function load($lehreinheitgruppe_id)
{
if(!is_numeric($lehreinheitgruppe_id))
{
$this->errormsg = 'Lehreinheitgruppe_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->lehreinheitgruppe_id = $row->lehreinheitgruppe_id;
$this->lehreinheit_id = $row->lehreinheit_id;
$this->studiengang_kz = $row->studiengang_kz;
$this->semester = $row->semester;
$this->verband = $row->verband;
$this->gruppe = $row->gruppe;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->ext_id = $row->ext_id;
return true;
}
else
{
$this->errormsg = 'Es existiert kein Eintrag mit dieser ID';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if(!is_numeric($this->lehreinheit_id))
{
$this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->studiengang_kz))
{
$this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if($this->semester!='' && !is_numeric($this->semester))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if(mb_strlen($this->verband)>1)
{
$this->verband = 'Verband darf nicht laenger als 1 Zeichen sein';
return false;
}
if(mb_strlen($this->gruppe)>1)
{
$this->gruppe = 'Gruppe darf nicht laenger als 1 Zeichen sein';
return false;
}
if(mb_strlen($this->gruppe_kurzbz)>32)
{
$this->errormsg = 'Gruppe_kurzbz darf nicht laenger als 32 Zeichen sein';
return false;
}
return true;
}
/**
* Speichert GruppeLE in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save($new=null)
{
if(is_null($new))
$new = $this->new;
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($new)
{
$qry = 'INSERT INTO lehre.tbl_lehreinheitgruppe (lehreinheit_id, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, insertamum, insertvon)
VALUES('.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($this->semester, FHC_INTEGER).','.
$this->db_add_param($this->verband).','.
$this->db_add_param($this->gruppe).','.
$this->db_add_param($this->gruppe_kurzbz).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).');';
}
else
{
$qry = 'UPDATE lehre.tbl_lehreinheitgruppe SET'.
' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
' semester='.$this->db_add_param($this->semester, FHC_INTEGER).','.
' verband='.$this->db_add_param($this->verband).','.
' gruppe='.$this->db_add_param($this->gruppe).','.
' gruppe_kurzbz='.$this->db_add_param($this->gruppe_kurzbz).','.
' updateamum='.$this->db_add_param($this->updateamum).','.
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE lehreinheitgruppe_id=".$this->db_add_param($this->lehreinheitgruppe_id, FHC_INTEGER).";";
}
if($this->db_query($qry))
{
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der GruppeLE';
return false;
}
}
/**
* Sieht nach ob Gruppe schon zu dieser Lehreinheit
* zugeordnet ist.
* @param lehreinheit_id
* studiengang_kz
* semester
* verband
* gruppe
* gruppe_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function exists($lehreinheit_id, $studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz)
{
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
if($gruppe_kurzbz!='')
{
$qry .= " AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
}
else
{
$qry .= " AND semester=".$this->db_add_param($semester, FHC_INTEGER);
if($verband!='')
$qry .= " AND verband=".$this->db_add_param($verband);
if($gruppe!='')
$qry .= " AND gruppe=".$this->db_add_param($gruppe);
}
$qry.=';';
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Lesen der Lehreinheitgruppen';
return false;
}
}
/**
* Liefert alle Gruppenzuordnungen zu einer
* Lehreinheit.
* @param lehreinheit_id Lehreinheit zu der
* die Gruppen geladen werden sollen
* @return true wenn ok, false im fehlerfall
*/
public function getLehreinheitgruppe($lehreinheit_id)
{
if(!is_numeric($lehreinheit_id))
{
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$leg_obj = new lehreinheitgruppe();
$leg_obj->lehreinheitgruppe_id = $row->lehreinheitgruppe_id;
$leg_obj->lehreinheit_id = $row->lehreinheit_id;
$leg_obj->studiengang_kz = $row->studiengang_kz;
$leg_obj->semester = $row->semester;
$leg_obj->verband = $row->verband;
$leg_obj->gruppe = $row->gruppe;
$leg_obj->gruppe_kurzbz = $row->gruppe_kurzbz;
$leg_obj->updateamum = $row->updateamum;
$leg_obj->updatevon = $row->updatevon;
$leg_obj->insertamum = $row->insertamum;
$leg_obj->insertvon = $row->insertvon;
$leg_obj->ext_id = $row->ext_id;
$this->lehreinheitgruppe[] = $leg_obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Loescht die Zuornung Gruppe-Lehreinheit
* @param lehreinheigruppe_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im fehlerfall
*/
public function delete($lehreinheitgruppe_id)
{
if(!is_numeric($lehreinheitgruppe_id))
{
$this->errormsg = 'Lehreinheitgruppe_id muss eine gueltige Zahl sein';
return false;
}
$qry_del = "DELETE FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$sql_undo = "INSERT INTO lehre.tbl_lehreinheitgruppe ".
"(lehreinheitgruppe_id, lehreinheit_id, studiengang_kz, semester, ".
"verband, gruppe, gruppe_kurzbz, updateamum, updatevon, insertamum, insertvon) ".
"VALUES(".$this->db_add_param($row->lehreinheitgruppe_id, FHC_INTEGER).','.
$this->db_add_param($row->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($row->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($row->semester, FHC_INTEGER).','.
$this->db_add_param($row->verband).','.
$this->db_add_param($row->gruppe).','.
$this->db_add_param($row->gruppe_kurzbz).','.
$this->db_add_param($row->updateamum).','.
$this->db_add_param($row->updatevon).','.
$this->db_add_param($row->insertamum).','.
$this->db_add_param($row->insertvon).');';
$log = new log();
$log->sql = $qry_del;
$log->sqlundo = $sql_undo;
$log->mitarbeiter_uid = get_uid();
if($row->gruppe_kurzbz!='')
$grp = $row->gruppe_kurzbz;
else
{
$qry_stg = "SELECT UPPER(typ::varchar(1) || kurzbz) as kuerzel FROM public.tbl_studiengang WHERE studiengang_kz=".$this->db_add_param($row->studiengang_kz, FHC_INTEGER).';';
$this->db_query($qry_stg);
$row_stg = $this->db_fetch_object();
$grp = $row_stg->kuerzel.$row->semester.$row->verband.$row->gruppe;
}
$log->beschreibung = "Gruppenzuteilung loeschen $grp - $row->lehreinheit_id";
$this->db_query('BEGIN;');
if($log->save(true))
{
if($this->db_query($qry_del))
{
$this->db_query('COMMIT;');
return true;
}
else
{
$this->db_query('ROLLBACK;');
$this->errormsg = 'Fehler beim Loeschen';
return false;
}
}
else
{
$this->db_query('ROLLBACK;');
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Datensatz wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Lesen aus der Datenbank';
return false;
}
}
/**
* Prueft ob die Gruppe schon dieser Lehreinheit zugeordnet ist
*/
public function checkVorhanden()
{
$qry = "SELECT
count(*) as anzahl
FROM
lehre.tbl_lehreinheitgruppe
WHERE
lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND
studiengang_kz=".$this->db_add_param($this->studiengang_kz, FHC_INTEGER);
if($this->semester!='')
$qry.=" AND semester=".$this->db_add_param($this->semester, FHC_INTEGER);
else
$qry.=" AND (semester='' OR semester is null)";
if($this->verband!='')
$qry.=" AND trim(verband)=".$this->db_add_param($this->verband);
else
$qry.=" AND (trim(verband)='' OR verband is null)";
if($this->gruppe!='')
$qry.=" AND trim(gruppe)=".$this->db_add_param($this->gruppe);
else
$qry.=" AND (trim(gruppe)='' OR gruppe is null)";
if($this->gruppe_kurzbz!='')
$qry.=" AND trim(gruppe_kurzbz)=".$this->db_add_param($this->gruppe_kurzbz);
else
$qry.= " AND (trim(gruppe_kurzbz)='' OR gruppe_kurzbz is null)";
$qry.=';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
if($row->anzahl>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Interner Fehler';
return false;
}
}
else
{
$this->errormsg='Fehler bei einer Abfrage';
return false;
}
}
}
?>
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class lehreinheitgruppe extends basis_db
{
public $new; // boolean
public $lehreinheitgruppe = array(); // lehreinheitgruppe Objekt
//Tabellenspalten
public $lehreinheitgruppe_id; //integer
public $lehreinheit_id; // integer
public $studiengang_kz; // integer
public $semester; // smalint
public $verband; // char(1)
public $gruppe; // char(1)
public $gruppe_kurzbz; // varchar(16)
public $ext_id; // bigint
public $updateamum; // timestamp
public $updatevon; // varchar(16)
public $insertamum; // timestamp
public $insertvon; // varchar(16)
/**
* Konstruktor - Laedt optional eine LEGruppe
* @param $lehreinheitgruppe_id
*/
public function __construct($lehreinheitgruppe_id=null)
{
parent::__construct();
if(!is_null($lehreinheitgruppe_id))
$this->load($lehreinheitgruppe_id);
}
/**
* Laedt die LEGruppe
* @param lehreinheit_id
*/
function load($lehreinheitgruppe_id)
{
if(!is_numeric($lehreinheitgruppe_id))
{
$this->errormsg = 'Lehreinheitgruppe_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->lehreinheitgruppe_id = $row->lehreinheitgruppe_id;
$this->lehreinheit_id = $row->lehreinheit_id;
$this->studiengang_kz = $row->studiengang_kz;
$this->semester = $row->semester;
$this->verband = $row->verband;
$this->gruppe = $row->gruppe;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->ext_id = $row->ext_id;
return true;
}
else
{
$this->errormsg = 'Es existiert kein Eintrag mit dieser ID';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Prueft die Variablen vor dem Speichern
* auf Gueltigkeit.
* @return true wenn ok, false im Fehlerfall
*/
protected function validate()
{
if(!is_numeric($this->lehreinheit_id))
{
$this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein';
return false;
}
if(!is_numeric($this->studiengang_kz))
{
$this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein';
return false;
}
if($this->semester!='' && !is_numeric($this->semester))
{
$this->errormsg = 'Semester muss eine gueltige Zahl sein';
return false;
}
if(mb_strlen($this->verband)>1)
{
$this->verband = 'Verband darf nicht laenger als 1 Zeichen sein';
return false;
}
if(mb_strlen($this->gruppe)>1)
{
$this->gruppe = 'Gruppe darf nicht laenger als 1 Zeichen sein';
return false;
}
if(mb_strlen($this->gruppe_kurzbz)>32)
{
$this->errormsg = 'Gruppe_kurzbz darf nicht laenger als 32 Zeichen sein';
return false;
}
return true;
}
/**
* Speichert GruppeLE in die Datenbank
* Wenn $new auf true gesetzt ist wird ein neuer Datensatz
* angelegt, ansonsten der Datensatz upgedated
* @return true wenn erfolgreich, false im Fehlerfall
*/
public function save($new=null)
{
if(is_null($new))
$new = $this->new;
//Variablen auf Gueltigkeit pruefen
if(!$this->validate())
return false;
if($new)
{
$qry = 'INSERT INTO lehre.tbl_lehreinheitgruppe (lehreinheit_id, studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, insertamum, insertvon)
VALUES('.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($this->semester, FHC_INTEGER).','.
$this->db_add_param($this->verband).','.
$this->db_add_param($this->gruppe).','.
$this->db_add_param($this->gruppe_kurzbz).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).');';
}
else
{
$qry = 'UPDATE lehre.tbl_lehreinheitgruppe SET'.
' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','.
' semester='.$this->db_add_param($this->semester, FHC_INTEGER).','.
' verband='.$this->db_add_param($this->verband).','.
' gruppe='.$this->db_add_param($this->gruppe).','.
' gruppe_kurzbz='.$this->db_add_param($this->gruppe_kurzbz).','.
' updateamum='.$this->db_add_param($this->updateamum).','.
' updatevon='.$this->db_add_param($this->updatevon).
" WHERE lehreinheitgruppe_id=".$this->db_add_param($this->lehreinheitgruppe_id, FHC_INTEGER).";";
}
if($this->db_query($qry))
{
//Log schreiben
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der GruppeLE';
return false;
}
}
/**
* Sieht nach ob Gruppe schon zu dieser Lehreinheit
* zugeordnet ist.
* @param lehreinheit_id
* studiengang_kz
* semester
* verband
* gruppe
* gruppe_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function exists($lehreinheit_id, $studiengang_kz, $semester, $verband, $gruppe, $gruppe_kurzbz)
{
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
if($gruppe_kurzbz!='')
{
$qry .= " AND gruppe_kurzbz=".$this->db_add_param($gruppe_kurzbz);
}
else
{
$qry .= " AND semester=".$this->db_add_param($semester, FHC_INTEGER);
if($verband!='')
$qry .= " AND verband=".$this->db_add_param($verband);
if($gruppe!='')
$qry .= " AND gruppe=".$this->db_add_param($gruppe);
}
$qry.=';';
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Lesen der Lehreinheitgruppen';
return false;
}
}
/**
* Liefert alle Gruppenzuordnungen zu einer
* Lehreinheit.
* @param lehreinheit_id Lehreinheit zu der
* die Gruppen geladen werden sollen
* @return true wenn ok, false im fehlerfall
*/
public function getLehreinheitgruppe($lehreinheit_id)
{
if(!is_numeric($lehreinheit_id))
{
$this->errormsg = 'Lehreinheit_id ist ungueltig';
return false;
}
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$leg_obj = new lehreinheitgruppe();
$leg_obj->lehreinheitgruppe_id = $row->lehreinheitgruppe_id;
$leg_obj->lehreinheit_id = $row->lehreinheit_id;
$leg_obj->studiengang_kz = $row->studiengang_kz;
$leg_obj->semester = $row->semester;
$leg_obj->verband = $row->verband;
$leg_obj->gruppe = $row->gruppe;
$leg_obj->gruppe_kurzbz = $row->gruppe_kurzbz;
$leg_obj->updateamum = $row->updateamum;
$leg_obj->updatevon = $row->updatevon;
$leg_obj->insertamum = $row->insertamum;
$leg_obj->insertvon = $row->insertvon;
$leg_obj->ext_id = $row->ext_id;
$this->lehreinheitgruppe[] = $leg_obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Loescht die Zuornung Gruppe-Lehreinheit
* @param lehreinheigruppe_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im fehlerfall
*/
public function delete($lehreinheitgruppe_id)
{
if(!is_numeric($lehreinheitgruppe_id))
{
$this->errormsg = 'Lehreinheitgruppe_id muss eine gueltige Zahl sein';
return false;
}
$qry_del = "DELETE FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
$qry = "SELECT * FROM lehre.tbl_lehreinheitgruppe WHERE lehreinheitgruppe_id=".$this->db_add_param($lehreinheitgruppe_id, FHC_INTEGER).';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$sql_undo = "INSERT INTO lehre.tbl_lehreinheitgruppe ".
"(lehreinheitgruppe_id, lehreinheit_id, studiengang_kz, semester, ".
"verband, gruppe, gruppe_kurzbz, updateamum, updatevon, insertamum, insertvon) ".
"VALUES(".$this->db_add_param($row->lehreinheitgruppe_id, FHC_INTEGER).','.
$this->db_add_param($row->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($row->studiengang_kz, FHC_INTEGER).','.
$this->db_add_param($row->semester, FHC_INTEGER).','.
$this->db_add_param($row->verband).','.
$this->db_add_param($row->gruppe).','.
$this->db_add_param($row->gruppe_kurzbz).','.
$this->db_add_param($row->updateamum).','.
$this->db_add_param($row->updatevon).','.
$this->db_add_param($row->insertamum).','.
$this->db_add_param($row->insertvon).');';
$log = new log();
$log->sql = $qry_del;
$log->sqlundo = $sql_undo;
$log->mitarbeiter_uid = get_uid();
if($row->gruppe_kurzbz!='')
$grp = $row->gruppe_kurzbz;
else
{
$qry_stg = "SELECT UPPER(typ::varchar(1) || kurzbz) as kuerzel FROM public.tbl_studiengang WHERE studiengang_kz=".$this->db_add_param($row->studiengang_kz, FHC_INTEGER).';';
$this->db_query($qry_stg);
$row_stg = $this->db_fetch_object();
$grp = $row_stg->kuerzel.$row->semester.$row->verband.$row->gruppe;
}
$log->beschreibung = "Gruppenzuteilung loeschen $grp - $row->lehreinheit_id";
$this->db_query('BEGIN;');
if($log->save(true))
{
if($this->db_query($qry_del))
{
$this->db_query('COMMIT;');
return true;
}
else
{
$this->db_query('ROLLBACK;');
$this->errormsg = 'Fehler beim Loeschen';
return false;
}
}
else
{
$this->db_query('ROLLBACK;');
$this->errormsg = 'Fehler beim Speichern des Log-Eintrages';
return false;
}
}
else
{
$this->errormsg = 'Datensatz wurde nicht gefunden';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Lesen aus der Datenbank';
return false;
}
}
/**
* Prueft ob die Gruppe schon dieser Lehreinheit zugeordnet ist
*/
public function checkVorhanden()
{
$qry = "SELECT
count(*) as anzahl
FROM
lehre.tbl_lehreinheitgruppe
WHERE
lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND
studiengang_kz=".$this->db_add_param($this->studiengang_kz, FHC_INTEGER);
if($this->semester!='')
$qry.=" AND semester=".$this->db_add_param($this->semester, FHC_INTEGER);
else
$qry.=" AND (semester='' OR semester is null)";
if($this->verband!='')
$qry.=" AND trim(verband)=".$this->db_add_param($this->verband);
else
$qry.=" AND (trim(verband)='' OR verband is null)";
if($this->gruppe!='')
$qry.=" AND trim(gruppe)=".$this->db_add_param($this->gruppe);
else
$qry.=" AND (trim(gruppe)='' OR gruppe is null)";
if($this->gruppe_kurzbz!='')
$qry.=" AND trim(gruppe_kurzbz)=".$this->db_add_param($this->gruppe_kurzbz);
else
$qry.= " AND (trim(gruppe_kurzbz)='' OR gruppe_kurzbz is null)";
$qry.=';';
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
if($row->anzahl>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Interner Fehler';
return false;
}
}
else
{
$this->errormsg='Fehler bei einer Abfrage';
return false;
}
}
/**
* Prueft ob zu der Lehreinheit bereits eine direkte Gruppe zugeordnet ist
* @param $lehreinheit_id ID der lehreinheit
* @return true und objekt mit Gruppe falls vorhanden oder false im fehlerfall
*/
public function getDirectGroup($lehreinheit_id)
{
$qry = "
SELECT
tbl_lehreinheitgruppe.*
FROM
lehre.tbl_lehreinheitgruppe
JOIN public.tbl_gruppe USING(gruppe_kurzbz)
WHERE
tbl_gruppe.direktinskription
AND tbl_lehreinheitgruppe.lehreinheit_id=".$this->db_add_param($lehreinheit_id);
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
$this->lehreinheitgruppe_id = $row->lehreinheitgruppe_id;
$this->lehreinheit_id = $row->lehreinheit_id;
$this->studiengang_kz = $row->studiengang_kz;
$this->semester = $row->semester;
$this->verband = $row->verband;
$this->gruppe = $row->gruppe;
$this->gruppe_kurzbz = $row->gruppe_kurzbz;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->ext_id = $row->ext_id;
return true;
}
else
return false;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
?>
+31 -11
View File
@@ -728,27 +728,47 @@ class lehrstunde extends basis_db
// Datenbank abfragen
$sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, gruppe_kurzbz, datum, stunde FROM $stpl_table
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde)." AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
WHERE datum=".$this->db_add_param($this->datum)." AND stunde=".$this->db_add_param($this->stunde);
// Direkte Lehreinheitsgruppen kollidieren nicht
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz = ".$stpl_table.".gruppe_kurzbz AND direktinskription=true)";
$sql_query.= " AND (ort_kurzbz=".$this->db_add_param($this->ort_kurzbz)." ";
if (!in_array($this->lektor_uid,unserialize(KOLLISIONSFREIE_USER)))
$sql_query.=" OR (uid=".$this->db_add_param($this->lektor_uid)." AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
//Wenn eine Kollisionspruefung auf Studentenebene durchgefuehrt wird, werden die LVB nicht gecheckt
if($kollision_student=='false')
{
$sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
// Direkte Gruppen kollidieren nicht
$direktgruppe = false;
if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
{
$sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
$grp_obj = new gruppe();
$grp_obj->load($this->gruppe_kurzbz);
if($grp_obj->direktinskription)
{
$direktgruppe = true;
}
}
else
if(!$direktgruppe)
{
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
$sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
}
$sql_query.=" OR (studiengang_kz=".$this->db_add_param($this->studiengang_kz)." AND semester=".$this->db_add_param($this->sem);
if($this->gruppe_kurzbz!=null && $this->gruppe_kurzbz!='' && $this->gruppe_kurzbz!=' ')
{
$sql_query.=" OR (gruppe_kurzbz=".$this->db_add_param($this->gruppe_kurzbz).")";
}
else
{
if ($this->ver!=null && $this->ver!='' && $this->ver!=' ')
$sql_query.=" AND (verband=".$this->db_add_param($this->ver)." OR verband IS NULL OR verband='' OR verband=' ')";
if ($this->grp!=null && $this->grp!='' && $this->grp!=' ')
$sql_query.=" AND (gruppe=".$this->db_add_param($this->grp)." OR gruppe IS NULL OR gruppe='' OR gruppe=' ')";
}
$sql_query.=")";
$sql_query.=")";
}
}
$sql_query.=") AND unr!=".$this->db_add_param($this->unr);
@@ -776,7 +796,7 @@ class lehrstunde extends basis_db
else
{
$row = $this->db_fetch_object($erg_stpl);
$this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde"; //\n".$sql_query
$this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->gruppe_kurzbz - $row->datum/$row->stunde\n"; //\n".$sql_query
return true;
}
}
+8 -7
View File
@@ -619,7 +619,7 @@ class student extends benutzer
nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage, svnr,
ersatzkennzeichen, familienstand, geschlecht, anzahlkinder, tbl_person.aktiv, kurzbeschreibung,
tbl_benutzer.aktiv as bnaktiv, tbl_student.studiengang_kz, tbl_student.semester, tbl_student.verband,
tbl_student.gruppe, tbl_student.prestudent_id
tbl_student.gruppe, tbl_student.prestudent_id, tbl_benutzer.uid
FROM
public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
@@ -671,6 +671,7 @@ class student extends benutzer
$l->verband = $row->verband;
$l->gruppe = $row->gruppe;
$l->prestudent_id = $row->prestudent_id;
$l->uid = $row->uid;
$this->result[]=$l;
}
}
@@ -823,7 +824,7 @@ class student extends benutzer
return false;
}
}
/**
* Checkt, ob ein Student schon BIS-Gemeldet wurde.
*
@@ -846,13 +847,13 @@ class student extends benutzer
$datumNovemberVorjahr = date('Y', strtotime("-1 year")).'-11-15';
$datumApril = date('Y').'-04-15';
$datumNovember = date('Y').'-11-15';
$timestampNovemberVorjahr = strtotime(date('Y', strtotime("-1 year")).'-11-15');
$timestampApril = strtotime(date('Y').'-04-15');
$timestampNovember = strtotime(date('Y').'-11-15');
$heute = time();
if ($heute - $timestampNovemberVorjahr >= $heute - $timestampApril &&
$heute - $timestampApril < 0)
$datumLetzteMeldung = $datumNovemberVorjahr;
@@ -861,7 +862,7 @@ class student extends benutzer
$datumLetzteMeldung = $datumApril;
else
$datumLetzteMeldung = $datumNovember;
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result) > 0)
@@ -871,7 +872,7 @@ class student extends benutzer
// Wenn der Studentenstatus kleiner oder gleich dem Datum der letzten Meldung ist, wurde der Student gemeldet
if (strtotime($row->datum) <= strtotime($datumLetzteMeldung))
return true;
else
else
return false;
}
else
@@ -880,7 +881,7 @@ class student extends benutzer
return null;
}
}
else
else
return null;
}
else
+21 -3
View File
@@ -47,6 +47,9 @@ class vorlage extends basis_db
public $vorlagestudiengang_id; // bigint
public $anmerkung_vorlagestudiengang; // text
public $aktiv; // boolean
public $sprache; // varchar(16)
public $subject; // text
public $orgform_kurzbz; // varchar(3)
public $archivierbar = false;
public $signierbar = false;
@@ -223,6 +226,9 @@ class vorlage extends basis_db
$this->berechtigung = $row->berechtigung;
$this->anmerkung_vorlagestudiengang = $row->anmerkung_vorlagestudiengang;
$this->aktiv = $this->db_parse_bool($row->aktiv);
$this->sprache = $row->sprache;
$this->subject = $row->subject;
$this->orgform_kurzbz = $row->orgform_kurzbz;
return true;
}
else
@@ -276,6 +282,9 @@ class vorlage extends basis_db
$obj->berechtigung = $row->berechtigung;
$obj->anmerkung_vorlagestudiengang = $row->anmerkung_vorlagestudiengang;
$obj->aktiv = $this->db_parse_bool($row->aktiv);
$obj->sprache = $row->sprache;
$obj->subject = $row->subject;
$obj->orgform_kurzbz = $row->orgform_kurzbz;
$this->result[]= $obj;
}
@@ -336,7 +345,7 @@ class vorlage extends basis_db
if($new)
{
$qry = "INSERT INTO public.tbl_vorlagestudiengang(vorlage_kurzbz,studiengang_kz,version,text,oe_kurzbz,style,berechtigung,anmerkung_vorlagestudiengang,aktiv) VALUES(".
$qry = "INSERT INTO public.tbl_vorlagestudiengang(vorlage_kurzbz,studiengang_kz,version,text,oe_kurzbz,style,berechtigung,anmerkung_vorlagestudiengang,aktiv,sprache,subject,orgform_kurzbz) VALUES(".
$this->db_add_param($this->vorlage_kurzbz).','.
$this->db_add_param($this->studiengang_kz).','.
$this->db_add_param($this->version).','.
@@ -345,7 +354,10 @@ class vorlage extends basis_db
$this->db_add_param($this->style).','.
$this->db_add_param($this->berechtigung).','.
$this->db_add_param($this->anmerkung_vorlagestudiengang).','.
$this->db_add_param($this->aktiv, FHC_BOOLEAN).');';
$this->db_add_param($this->aktiv, FHC_BOOLEAN).','.
$this->db_add_param($this->sprache).','.
$this->db_add_param($this->subject).','.
$this->db_add_param($this->orgform_kurzbz).');';
}
else
{
@@ -358,7 +370,10 @@ class vorlage extends basis_db
style='.$this->db_add_param($this->style).',
berechtigung='.$this->db_add_param($this->berechtigung).',
aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).',
anmerkung_vorlagestudiengang='.$this->db_add_param($this->anmerkung_vorlagestudiengang).'
anmerkung_vorlagestudiengang='.$this->db_add_param($this->anmerkung_vorlagestudiengang).',
sprache='.$this->db_add_param($this->sprache).',
subject='.$this->db_add_param($this->subject).',
orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).'
WHERE vorlagestudiengang_id='.$this->db_add_param($this->vorlagestudiengang_id).';';
}
@@ -508,6 +523,9 @@ class vorlage extends basis_db
$this->berechtigung = $this->db_parse_array($row->berechtigung);
$this->anmerkung_vorlagestudiengang = $row->anmerkung_vorlagestudiengang;
$this->aktiv = $this->db_parse_bool($row->aktiv);
$this->sprache = $row->sprache;
$this->subject = $row->subject;
$this->orgform_kurzbz = $row->orgform_kurzbz;
return true;
}
+83 -14
View File
@@ -44,6 +44,7 @@ require_once(dirname(__FILE__).'/sprache.class.php');
require_once(dirname(__FILE__).'/functions.inc.php');
require_once(dirname(__FILE__).'/betriebsmittel.class.php');
require_once(dirname(__FILE__).'/lehrveranstaltung.class.php');
require_once(dirname(__FILE__).'/gruppe.class.php');
class wochenplan extends basis_db
{
@@ -1279,6 +1280,13 @@ class wochenplan extends basis_db
foreach ($this->std_plan[$i][$j] as $lehrstunde)
{
$a_unr[]=$lehrstunde->unr;
if($lehrstunde->gruppe_kurzbz!='')
{
$gruppe = new gruppe();
$gruppe->load($lehrstunde->gruppe_kurzbz);
if($gruppe->direktinskription)
continue;
}
$a_lvb[$lehrstunde->unr][]=$lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp;
}
@@ -1348,7 +1356,8 @@ class wochenplan extends basis_db
foreach ($a_unr as $unr)
{
$lvb_unr_arr[$a]=$unr;
$lvb[$a++]=$a_lvb[$unr];
if(isset($a_lvb[$unr]))
$lvb[$a++]=$a_lvb[$unr];
}
for ($a=0;$a<count($lvb)-1;$a++)
for ($b=0;$b<count($lvb[$a]);$b++)
@@ -1716,17 +1725,32 @@ class wochenplan extends basis_db
$leids='';
for ($i=0;$i<$num_rows_stpl;$i++)
{
$direktinskription = false;
$row=$this->db_fetch_object(null,$i);
if ($row->gruppe_kurzbz!=null)
{
$gruppe[]=$row->gruppe_kurzbz;
// Bei direkten Gruppen wird kein Lehrverband hinzugefuegt da diese nicht kollidieren
$grp_obj = new gruppe();
$grp_obj->load($row->gruppe_kurzbz);
if($grp_obj->direktinskription)
$direktinskription = true;
}
else
{
$gruppe[]='';
if (!isset($lehrverband[$i]))
$lehrverband[$i]= new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
if (!$direktinskription)
{
if (!isset($lehrverband[$i]))
$lehrverband[$i]= new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
$leids.="$row->lehreinheit_id,";
$lektor[$i]=$row->uid;
$unr=$row->unr;
@@ -1755,6 +1779,10 @@ class wochenplan extends basis_db
foreach ($lektor as $l)
$lkt.=" OR uid=".$this->db_add_param($l);
$lkt=mb_substr($lkt,3);
// Kollisionsfreie User ausnehmen
$lkt="(($lkt) AND uid not in (".$this->db_implode4SQL(unserialize(KOLLISIONSFREIE_USER))."))";
// Einheiten
$gruppe=array_unique($gruppe);
$gruppen='';
@@ -1792,10 +1820,17 @@ class wochenplan extends basis_db
$raster[$t][$s]->kollision=false;
}
}
if($lvb!='')
$lvbor = "OR ($lvb)";
else
$lvbor = '';
// Stundenplanabfrage bauen (Wo ist Kollision?)
$sql_query="SELECT DISTINCT datum, stunde FROM $stpl_view
WHERE datum>=".$this->db_add_param($this->datum_begin)." AND datum<".$this->db_add_param($this->datum_end)." AND
($lkt $gruppen OR ($lvb) ) AND unr!=".$this->db_add_param($unr);
($lkt $gruppen $lvbor ) AND unr!=".$this->db_add_param($unr);
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe g WHERE g.gruppe_kurzbz=$stpl_view.gruppe_kurzbz AND direktinskription=true)";
if (!$this->db_query($sql_query))
die($this->db_last_error());
@@ -1945,11 +1980,34 @@ class wochenplan extends basis_db
$raumtyp[$i]=$row->raumtyp;
$raumtypalt[$i]=$row->raumtypalternativ;
if ($row->gruppe_kurzbz!=null && $row->gruppe_kurzbz!='')
{
$gruppe[$i]=$row->gruppe_kurzbz;
@$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
// Direktinskriptionsgruppen von der Kollisionspruefung ausnehmen
$grp_obj = new gruppe();
$grp_obj->load($row->gruppe_kurzbz);
if ($grp_obj->direktinskription)
$direktinskription = true;
else
$direktinskription = false;
}
else
$direktinskription = false;
if (!$direktinskription)
{
// Wenn direktinskriptionsgruppe dann wird Studiengang und Semester nicht
// gesetzt da dies sonst kollidiert
// Bei normalen Spezialgruppen wir dieser trotzdem gesetzt damit Verbandsgruppen
// mit Spezialgruppen des selben Studiengangs kollidieren
if(!isset($lehrverband[$i]))
$lehrverband[$i] = new stdClass();
$lehrverband[$i]->stg_kz=$row->studiengang_kz;
$lehrverband[$i]->sem=$row->semester;
$lehrverband[$i]->ver=$row->verband;
$lehrverband[$i]->grp=$row->gruppe;
}
$lektor[$i]=$row->lektor_uid;
$verplant[$i]=$row->verplant;
$planstunden[$i]=$row->planstunden;
@@ -2018,7 +2076,13 @@ class wochenplan extends basis_db
{
$gruppe=array_unique($gruppe);
foreach ($gruppe as $g)
$gruppen.=" OR gruppe_kurzbz=".$this->db_add_param($g);
{
// Gruppen fuer direkte inskription kollidieren nicht
/*$grp_obj = new gruppe();
$grp_obj->load($g);
if($grp_obj->direktinskription==false)*/
$gruppen.=" OR gruppe_kurzbz=".$this->db_add_param($g);
}
}
//Lehrverband
@@ -2086,12 +2150,17 @@ class wochenplan extends basis_db
}
}
if($lvb!='')
$orlvb = "OR ($lvb)";
else
$orlvb = '';
// Stundenplanabfrage bauen (Wo ist Kollision?)
$sql_query="SELECT DISTINCT datum, stunde FROM $stpl_table
WHERE datum>=".$this->db_add_param($datum_begin)." AND datum<".$this->db_add_param($datum_end)." AND
($lkt $gruppen OR ($lvb) )";
($lkt $gruppen $orlvb )";
if (is_numeric($unr))
$sql_query.=" AND unr!=".$this->db_add_param($unr);
$sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_gruppe WHERE gruppe_kurzbz=".$stpl_table.".gruppe_kurzbz and direktinskription=true)";
if (!$this->db_query($sql_query))
{
+34 -21
View File
@@ -7,6 +7,10 @@ const RTFREIGABE_MESSAGE_VORLAGE_QUER = "InfocenterRTfreigegQuer";
const RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ = "InfocenterRTfreigegQuerKurz";
const STGFREIGABE_MESSAGE_VORLAGE = "InfocenterSTGfreigegeben";
//Statusgründe for which no Studiengang Freigabe Message should be sent
const FIT_PROGRAMM_STUDIENGAENGE = [10021, 10027];
const STGFREIGABE_MESSAGESEND_EXCEPTIONS = ["FIT Programm", "FIT program", "FIT programme"];
/**
* javascript file for infocenterDetails page
*/
@@ -263,23 +267,23 @@ var InfocenterDetails = {
}
);
},
saveFreigabe: function(data, rtfreigabe)
saveFreigabe: function(freigabeData)
{
FHC_AjaxClient.ajaxCallPost(
CALLED_PATH + '/saveFreigabe',
data,
{"prestudent_id": freigabeData.prestudent_id, "statusgrund_id": freigabeData.statusgrund_id},
{
successCallback: function(data, textStatus, jqXHR) {
successCallback: function(freigabeResponseData, textStatus, jqXHR) {
if (FHC_AjaxClient.hasData(data))
if (FHC_AjaxClient.hasData(freigabeResponseData))
{
FHC_AjaxClient.showVeil();
InfocenterDetails.initFrgMessageSend(data.retval.prestudent_id, rtfreigabe);
InfocenterDetails.initFrgMessageSend(freigabeData);
InfocenterDetails._refreshZgv();
FHC_AjaxClient.hideVeil();
InfocenterDetails._refreshLog();
}
else if (data.error === 2 && parseInt(data.retval.prestudent_id, 10))
else if (freigabeResponseData.error === 2 && parseInt(freigabeResponseData.retval.prestudent_id, 10))
{
FHC_DialogLib.alertError("error when setting accepted documents");
InfocenterDetails._refreshZgv();
@@ -472,13 +476,17 @@ var InfocenterDetails = {
}
);
},
initFrgMessageSend: function(prestudentid, rtfreigabe)
initFrgMessageSend: function(freigabedata)
{
var callback = function (data)
{
if (data == null)
return;
var prestudent_id = freigabedata.prestudent_id;
var statusgrund_id = freigabedata.statusgrund_id;
var rtfreigabe = !$.isNumeric(statusgrund_id);
// check if a prestudent in same semester is already freigegeben - then not send message again
var rtFreigegeben = false;
var stgFreigegeben = false;
@@ -487,7 +495,7 @@ var InfocenterDetails = {
//get prestudentstatus of message receiver
for(var i = 0; i < data.length; i++)
{
if (data[i].prestudentstatus.prestudent_id === prestudentid)
if (data[i].prestudentstatus.prestudent_id === prestudent_id)
{
receiverPrestudentstatus = data[i].prestudentstatus;
break;
@@ -504,18 +512,19 @@ var InfocenterDetails = {
var prestudentstatus = prestudent.prestudentstatus;
var id = prestudentstatus.prestudent_id;
if (id !== prestudentid)
if (id !== prestudent_id)
{
var fitfreigegeben = $.inArray(prestudentstatus.bezeichnung_statusgrund[0], STGFREIGABE_MESSAGESEND_EXCEPTIONS) >= 0;
if (receiverPrestudentstatus.studiensemester_kurzbz === prestudentstatus.studiensemester_kurzbz
&& prestudentstatus.bestaetigtam !== null && prestudentstatus.status_kurzbz === "Interessent"
&& prestudent.studiengangtyp === "b")
&& (prestudent.studiengangtyp === "b"))
{
if (prestudentstatus.statusgrund_id === null)
{
rtFreigegeben = true;
break;
}
else if($.isNumeric(prestudentstatus.statusgrund_id))
else if ($.isNumeric(prestudentstatus.statusgrund_id) && !fitfreigegeben)
{
stgFreigegeben = true;
}
@@ -541,7 +550,7 @@ var InfocenterDetails = {
'studiengangbezeichnung_englisch': studiengangbezeichnung_englisch
};
InfocenterDetails.sendFreigabeMessage(prestudentid, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, RTFREIGABE_MESSAGE_VORLAGE_QUER_KURZ, msgvars);
}
}
else //not already for RT freigegeben - send RTfreigabe message
@@ -563,15 +572,17 @@ var InfocenterDetails = {
vorlage = RTFREIGABE_MESSAGE_VORLAGE
}
InfocenterDetails.sendFreigabeMessage(prestudentid, vorlage, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, vorlage, msgvars);
}
}
else if (rtfreigabe === false)
{
var statusgrundbez = freigabedata.statusgrundbezeichnung ? freigabedata.statusgrundbezeichnung : "";
// if Freigabe to Studiengang, send StgFreigabe Message if not already sent
if (!stgFreigegeben)
if (!stgFreigegeben && $.inArray(statusgrundbez, STGFREIGABE_MESSAGESEND_EXCEPTIONS) < 0)
{
InfocenterDetails.sendFreigabeMessage(prestudentid, STGFREIGABE_MESSAGE_VORLAGE, msgvars);
InfocenterDetails.sendFreigabeMessage(prestudent_id, STGFREIGABE_MESSAGE_VORLAGE, msgvars);
}
}
};
@@ -729,8 +740,8 @@ var InfocenterDetails = {
{
$(".freigabeModal").modal("hide");
var prestudent_id = this.id.substr(this.id.indexOf("_") + 1);
var data = {"prestudent_id": prestudent_id};
InfocenterDetails.saveFreigabe(data, true);//Reihungstestfreigabe
var data = {"prestudent_id": prestudent_id, "statusgrund_id": null};
InfocenterDetails.saveFreigabe(data);//Reihungstestfreigabe
}
);
@@ -738,9 +749,11 @@ var InfocenterDetails = {
{
$(".freigabeModal").modal("hide");
var prestudent_id = this.id.substr(this.id.indexOf("_") + 1);
var statusgrund_id = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]").val();
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id};
InfocenterDetails.saveFreigabe(data, false);//Studiengangfreigabe
var statusgrundel = $("#frgstatusgrselect_" + prestudent_id + " select[name=frgstatusgrund]");
var statusgrund_id = statusgrundel.val();
var statusgrundbezeichnung = statusgrundel.find("option[value="+statusgrund_id+"]").text();
var data = {"prestudent_id": prestudent_id, "statusgrund_id": statusgrund_id, "statusgrundbezeichnung": statusgrundbezeichnung};
InfocenterDetails.saveFreigabe(data);//Studiengangfreigabe
}
)
},
+73
View File
@@ -0,0 +1,73 @@
<?php
/* Copyright (C) 2019 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <oesi@technikum-wien.at>
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/rdf.class.php');
require_once('../include/basis_db.class.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/student.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('lehre/lehrveranstaltung'))
die($rechte->errormsg);
$datum_obj = new datum();
$oRdf = new rdf('BENUTZER','http://www.technikum-wien.at/benutzer');
$filter = filter_input(INPUT_GET,'filter');
if (mb_strlen($filter) < 3)
die('Filter muss mindestens 3 Zeichen lang sein');
$benutzer = new student();
$benutzer->getTab($filter);
$studiengang = new studiengang();
$studiengang->getAll(null, false);
$oRdf->sendHeader();
$db = new basis_db();
if(count($benutzer->result) > 0)
{
$i=0;
foreach($benutzer->result as $row)
{
if(isset($studiengang->kuerzel_arr[$row->studiengang_kz]))
$stg = $studiengang->kuerzel_arr[$row->studiengang_kz];
else
$stg = '';
$i=$oRdf->newObjekt($i);
$oRdf->obj[$i]->setAttribut('uid',$row->uid,true);
$oRdf->obj[$i]->setAttribut('vorname',$row->vorname,true);
$oRdf->obj[$i]->setAttribut('nachname',$row->nachname,true);
$oRdf->obj[$i]->setAttribut('studiengang',$stg,true);
$oRdf->obj[$i]->setAttribut('semester',$row->semester,true);
$oRdf->addSequence($i);
$i++;
}
}
$oRdf->sendRdfText();
?>
+1 -1
View File
@@ -291,7 +291,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
echo ' <niveau_deutsch>Doktoratsstudium (UNESCO ISCED 8)</niveau_deutsch>';
echo ' <niveau_englisch>University doctoral studies (UNESCO ISCED 8)</niveau_englisch>';
}
elseif($row->typ=='l' || $row->typ=='k')
elseif($row->typ=='l' || $row->typ=='k' || $row->typ=='e')
{
echo ' <niveau_code>UNESCO ISCED 7</niveau_code>';
echo ' <niveau_deutsch>Lehrgang zur Weiterbildung nach §9 FHStG idgF.</niveau_deutsch>';
+76
View File
@@ -0,0 +1,76 @@
<?php
/* Copyright (C) 2019 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <oesi@technikum-wien.at>
*/
require_once('../config/vilesci.config.inc.php');
require_once('../include/rdf.class.php');
require_once('../include/basis_db.class.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if (!$rechte->isBerechtigt('lehre/lehrveranstaltung'))
die($rechte->errormsg);
$datum_obj = new datum();
$oRdf = new rdf('LEHREINHEITDIREKT','http://www.technikum-wien.at/lehreinheitdirekt');
$lehreinheit_id = filter_input(INPUT_GET,'lehreinheit_id');
if ($lehreinheit_id == '' || !is_numeric($lehreinheit_id))
{
die('LehreinheitID ungueltig');
}
$oRdf->sendHeader();
$db = new basis_db();
$qry = "
SELECT
uid, vorname, nachname, gruppe_kurzbz
FROM
lehre.tbl_lehreinheitgruppe
JOIN public.tbl_gruppe USING(gruppe_kurzbz)
JOIN public.tbl_benutzergruppe USING(gruppe_kurzbz)
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
WHERE
tbl_lehreinheitgruppe.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER)."
AND tbl_gruppe.direktinskription
ORDER BY vorname, nachname";
if ($result = $db->db_query($qry))
{
$i = 0;
while ($row = $db->db_fetch_object($result))
{
$i = $oRdf->newObjekt($i);
$oRdf->obj[$i]->setAttribut('uid', $row->uid,true);
$oRdf->obj[$i]->setAttribut('vorname', $row->vorname,true);
$oRdf->obj[$i]->setAttribut('nachname', $row->nachname,true);
$oRdf->obj[$i]->setAttribut('gruppe_kurzbz', $row->gruppe_kurzbz,true);
$oRdf->addSequence($i);
$i++;
}
}
$oRdf->sendRdfText();
?>
+5
View File
@@ -70,6 +70,11 @@ foreach ($DAO_obj->lehreinheitgruppe as $row)
$bezeichnung = $row->gruppe_kurzbz;
$gruppe = new gruppe();
$gruppe->load($row->gruppe_kurzbz);
// Direkte Gruppen werden uebersprungen
if($gruppe->direktinskription)
continue;
$beschreibung = $gruppe->bezeichnung;
$qry_verplant = "SELECT 1 FROM lehre.tbl_stundenplandev
+26 -3
View File
@@ -355,7 +355,16 @@ $oRdf->sendHeader();
$row_lf = $db->db_fetch_object($result_lf);
//Gruppen holen
$qry = "SELECT upper(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, * FROM lehre.tbl_lehreinheitgruppe LEFT JOIN public.tbl_studiengang USING(studiengang_kz) WHERE lehreinheit_id='$row_le->lehreinheit_id'";
$qry = "SELECT
upper(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel,
tbl_lehreinheitgruppe.*,
tbl_gruppe.direktinskription
FROM
lehre.tbl_lehreinheitgruppe
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN public.tbl_gruppe USING(gruppe_kurzbz)
WHERE lehreinheit_id=".$db->db_add_param($row_le->lehreinheit_id);
$result_grp = $db->db_query($qry);
$grp='';
while($row_grp = $db->db_fetch_object($result_grp))
@@ -363,7 +372,11 @@ $oRdf->sendHeader();
if($row_grp->gruppe_kurzbz=='')
$grp.=' '.$row_grp->kuerzel.trim($row_grp->semester).trim($row_grp->verband).trim($row_grp->gruppe);
else
$grp.=' '.$row_grp->gruppe_kurzbz;
{
// Direkte Gruppen werden nicht angezeigt
if(!$db->db_parse_bool($row_grp->direktinskription))
$grp.=' '.$row_grp->gruppe_kurzbz;
}
}
//Lektoren und Stunden holen
$qry = "SELECT kurzbz, semesterstunden, planstunden FROM lehre.tbl_lehreinheitmitarbeiter JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) WHERE lehreinheit_id='$row_le->lehreinheit_id'";
@@ -377,7 +390,17 @@ $oRdf->sendHeader();
$semesterstunden.=$row_lkt->semesterstunden.' ';
$planstunden.=$row_lkt->planstunden.' ';
}
$qry = "SELECT tbl_fachbereich.bezeichnung FROM public.tbl_fachbereich, lehre.tbl_lehrveranstaltung as lehrfach, lehre.tbl_lehreinheit WHERE tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND lehrfach.lehrveranstaltung_id=tbl_lehreinheit.lehrfach_id AND tbl_lehreinheit.lehreinheit_id=".$db->db_add_param($row_le->lehreinheit_id, FHC_INTEGER);
$qry = "SELECT
tbl_organisationseinheit.bezeichnung
FROM
public.tbl_organisationseinheit,
lehre.tbl_lehrveranstaltung as lehrfach,
lehre.tbl_lehreinheit
WHERE
tbl_organisationseinheit.oe_kurzbz = lehrfach.oe_kurzbz
AND lehrfach.lehrveranstaltung_id = tbl_lehreinheit.lehrfach_id
AND tbl_lehreinheit.lehreinheit_id = ".$db->db_add_param($row_le->lehreinheit_id, FHC_INTEGER);
$fachbereich='';
if($result_fb = $db->db_query($qry))
if($row_fb = $db->db_fetch_object($result_fb))
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -116,7 +116,7 @@ foreach ($obj->result as $row)
<NOTE:lehrveranstaltung_kurzbz><![CDATA['.$lv_obj->kurzbz.']]></NOTE:lehrveranstaltung_kurzbz>
<NOTE:student_nachname><![CDATA['.$benutzer->nachname.']]></NOTE:student_nachname>
<NOTE:student_vorname><![CDATA['.$benutzer->vorname.']]></NOTE:student_vorname>
<NOTE:studiengang><![CDATA['.$stg_arr[$benutzer->studiengang_kz].']]></NOTE:studiengang>
<NOTE:studiengang><![CDATA['.(isset($stg_arr[$benutzer->studiengang_kz])?$stg_arr[$benutzer->studiengang_kz]:'').']]></NOTE:studiengang>
<NOTE:studiengang_kz><![CDATA['.$benutzer->studiengang_kz.']]></NOTE:studiengang_kz>
<NOTE:studiengang_lv><![CDATA['.$stg_arr[$lv_obj->studiengang_kz].']]></NOTE:studiengang_lv>
<NOTE:semester_lv><![CDATA['.$lv_obj->semester.']]></NOTE:semester_lv>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

+4
View File
@@ -0,0 +1,4 @@
body
{
font-size: 14px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+1
View File
@@ -162,6 +162,7 @@ toolbarbutton.stplweekoverlay-toolbarbutton:hover
color: #AAAAAA;
visibility:hidden;
font-size: small;
margin-bottom: 15px;
}
treechildren::-moz-tree-row(makeItred)
+13 -1
View File
@@ -2513,6 +2513,18 @@ if($result = $db->db_query("SELECT 1 FROM system.tbl_app WHERE app='reihungstest
}
}
// Spalte direktinskription fuer public.tbl_gruppe
if(!$result = @$db->db_query("SELECT direktinskription FROM public.tbl_gruppe LIMIT 1"))
{
$qry = "ALTER TABLE public.tbl_gruppe ADD COLUMN direktinskription boolean NOT NULL DEFAULT FALSE;
COMMENT ON COLUMN public.tbl_gruppe.direktinskription IS 'Verwendung fuer direkte Zuweisung zu Lehreinheit'";
if(!$db->db_query($qry))
echo '<strong>public.tbl_gruppe: '.$db->db_last_error().'</strong><br>';
else
echo '<br>public.tbl_gruppe: Spalte direktinskription hinzugefuegt';
}
// Spalte aktiv für tbl_betreuerart
if(!$result = @$db->db_query("SELECT aktiv FROM lehre.tbl_betreuerart LIMIT 1"))
{
@@ -2888,7 +2900,7 @@ $tabellen=array(
"public.tbl_fotostatus" => array("fotostatus_kurzbz","beschreibung"),
"public.tbl_funktion" => array("funktion_kurzbz","beschreibung","aktiv","fachbereich","semester"),
"public.tbl_geschaeftsjahr" => array("geschaeftsjahr_kurzbz","start","ende","bezeichnung"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt","zutrittssystem","aufnahmegruppe"),
"public.tbl_gruppe" => array("gruppe_kurzbz","studiengang_kz","semester","bezeichnung","beschreibung","sichtbar","lehre","aktiv","sort","mailgrp","generiert","updateamum","updatevon","insertamum","insertvon","ext_id","orgform_kurzbz","gid","content_visible","gesperrt","zutrittssystem","aufnahmegruppe","direktinskription"),
"public.tbl_kontakt" => array("kontakt_id","person_id","kontakttyp","anmerkung","kontakt","zustellung","updateamum","updatevon","insertamum","insertvon","ext_id","standort_id"),
"public.tbl_kontaktmedium" => array("kontaktmedium_kurzbz","beschreibung"),
"public.tbl_kontakttyp" => array("kontakttyp","beschreibung","bezeichnung_mehrsprachig"),
+455 -436
View File
@@ -1,441 +1,460 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*******************************************************************************************************
* abgabe_assistenz
* abgabe_assistenz ist die Assistenzoberfläche des Abgabesystems
* für Diplom- und Bachelorarbeiten
*******************************************************************************************************/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/datum.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/variable.class.php');
require_once('../../include/phrasen.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
if (!$getuid = get_uid())
die('Keine UID gefunden ! <a href="javascript:history.back()">Zur&uuml;ck</a>');
$p=new phrasen(DEFAULT_LANGUAGE);
$htmlstr = "";
$erstbegutachter='';
$zweitbegutachter='';
$fachbereich_kurzbz='';
//$p2id='';
$stg_kz=(isset($_REQUEST['stg_kz'])?$_REQUEST['stg_kz']:'');
if(!is_numeric($stg_kz) && $stg_kz!='')
die('Bitte vor dem Aufruf Studiengang ausw&auml;hlen!');
$stgbez='';
$trenner='';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if(!$rechte->isBerechtigt('admin', $stg_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $stg_kz, 'suid') && !$rechte->isBerechtigt('assistenz', null, 'suid', $fachbereich_kurzbz) )
die('Sie haben keine Berechtigung f&uuml;r diesen Studiengang <a href="javascript:history.back()">Zur&uuml;ck</a>');
function showFarbcodes()
{
$farbcodes = '';
$farbcodes.= "<table>";
$farbcodes.="<tr><td style=\"background-color:#FFFFFF; width:35px;\"></td><td style=\"padding-left:5px;\">Termin noch mehr als 12 Tage entfernt</tr>";
$farbcodes.="<tr><td style=\"background-color:#FFFF00;\"></td><td style=\"padding-left:5px;\">Termin innerhalb der nächsten 12 Tage</tr>";
$farbcodes.="<tr><td style=\"background-color:#FF0000;\"></td><td style=\"padding-left:5px;\">Termin überschritten / keine Abgabe</tr>";
$farbcodes.="<tr><td style=\"background-color:#00FF00;\"></td><td style=\"padding-left:5px;\">abgegeben</tr>";
$farbcodes.="<tr><td style=\"background-color:#EA7B7B;\"></td><td style=\"padding-left:5px;\">Abgabe nach Termin</tr>";
$farbcodes.="</table>";
return $farbcodes;
}
$trenner = new variable();
$trenner->loadVariables($getuid);
$sql_query = "SELECT *,
(SELECT orgform_kurzbz
FROM tbl_prestudentstatus
WHERE prestudent_id=(Select prestudent_id from tbl_student where student_uid=xy.uid limit 1)
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1
) as organisationsform
FROM (SELECT DISTINCT ON(tbl_projektarbeit.projektarbeit_id) public.tbl_studiengang.bezeichnung as stgbez,tbl_projekttyp.bezeichnung AS prjbez,* FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer on(uid=student_uid)
LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang using(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND public.tbl_benutzer.aktiv
AND lehre.tbl_projektarbeit.note IS NULL
AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz)."
ORDER BY tbl_projektarbeit.projektarbeit_id desc) as xy
ORDER BY nachname";
if(!$erg=$db->db_query($sql_query))
{
$errormsg='Fehler beim Laden der Betreuungen';
}
else
{
//$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form>";
$htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' title='Serientermin' target='al_detail' method='POST'>";
//$htmlstr .= "<table id='t1' class='liste table-autosort:5 table-stripeclass:alternate table-autostripe'>\n";
$htmlstr .= "<table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr class='liste'>\n";
$htmlstr .= "<th></th><th class='table-sortable:default'>UID</th>
<th>Email</th>
<th class='table-sortable:default'>Sem.</th>
<th class='table-sortable:default'>Vorname</th>
<th class='table-sortable:alphanumeric'>Nachname</th>
<th class='table-sortable:default'>Orgform</th>";
$htmlstr .= "<th class='table-sortable:default'>Typ</th>
<th>Titel</th>
<th class='table-sortable:alphanumeric'>1.Begutachter(in)</th>
<th>1</th>
<th>2</th>
<th class='table-sortable:alphanumeric'>2.Begutachter(in)</th>";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
$erstbegutachter='';
$zweitbegutachter='';
$muid='';
$muid2='';
$mituid='';
$p2id='';
while($row=$db->db_fetch_object($erg))
{
$erstbegutachter='';
$zweitbegutachter='';
$muid='';
$muid2='';
$mituid='';
$p2id='';
$stgbez=$row->stgbez;
//Betreuer suchen
$qry_betr="SELECT trim(COALESCE(nachname,'')||', '||COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(titelpost,'')) as first, '' as second,
public.tbl_mitarbeiter.mitarbeiter_uid, '' as kontakt, public.tbl_person.person_id
FROM public.tbl_person JOIN lehre.tbl_projektbetreuer ON(lehre.tbl_projektbetreuer.person_id=public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON(public.tbl_benutzer.person_id=public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_benutzer.uid=public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id=".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)."
AND (tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter' OR tbl_projektbetreuer.betreuerart_kurzbz='Betreuer')
UNION
SELECT '' as first, trim(COALESCE(nachname,'')||', '||COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(titelpost,'')) as second,
public.tbl_mitarbeiter.mitarbeiter_uid,
(SELECT kontakt FROM public.tbl_kontakt WHERE person_id=tbl_person.person_id AND kontakttyp='email' AND zustellung LIMIT 1) as kontakt, public.tbl_person.person_id
FROM public.tbl_person JOIN lehre.tbl_projektbetreuer ON(lehre.tbl_projektbetreuer.person_id=public.tbl_person.person_id)
LEFT JOIN public.tbl_benutzer ON(public.tbl_benutzer.person_id=public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_benutzer.uid=public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id=".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)."
AND tbl_projektbetreuer.betreuerart_kurzbz='Zweitbegutachter'
";
if(!$betr=$db->db_query($qry_betr))
{
$errormsg='Fehler beim Laden der Betreuer';
}
else
{
while($row_betr=$db->db_fetch_object($betr))
{
if($row_betr->first!='' && $row_betr->mitarbeiter_uid!=NULL)
{
if(trim($erstbegutachter==''))
{
$erstbegutachter=$row_betr->first;
$muid=$row_betr->mitarbeiter_uid."@".DOMAIN;
$mituid=$row_betr->mitarbeiter_uid;
}
else
{
$erstbegutachter.=$trenner->variable->emailadressentrennzeichen." ".$row_betr->first;
$muid.=$trenner->variable->emailadressentrennzeichen." ".$row_betr->mitarbeiter_uid."@".DOMAIN;
}
}
if($row_betr->second!='')
{
$zweitbegutachter=$row_betr->second;
$p2id=$row_betr->person_id;
if($row_betr->mitarbeiter_uid!='' && $row_betr->mitarbeiter_uid!=NULL)
{
$muid2=$row_betr->mitarbeiter_uid."@".DOMAIN;
}
else
{
if($row_betr->kontakt!='' && $row_betr->kontakt!=NULL)
{
$muid2=$row_betr->kontakt;
}
}
}
}
}
$htmlstr .= " <tr >\n";//class='liste".($i%2)."'
$htmlstr .= " <td><input type='checkbox' id='mc_".$row->projektarbeit_id."' name='mc_".$row->projektarbeit_id."' ></td>";
//Anzeige
$qry_end="SELECT * FROM campus.tbl_paabgabe WHERE paabgabetyp_kurzbz='end' AND projektarbeit_id=".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)." ORDER BY datum DESC";
if(!$result_end=$db->db_query($qry_end))
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
else
{
if($db->db_num_rows($result_end)>0)
{
$bgcol='';
if($row_end=$db->db_fetch_object($result_end))
{
if($row_end->abgabedatum==NULL)
{
if ($row_end->datum<date('Y-m-d'))
{
$bgcol='#FF0000';
}
elseif (($row_end->datum>=date('Y-m-d')) && ($row_end->datum<date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+11, date("Y")))))
{
$bgcol='#FFFF00';
}
else
{
$bgcol='#FFFFFF';
}
}
else
{
if($row_end->abgabedatum>$row_end->datum)
{
$bgcol='#EA7B7B';
}
else
{
$bgcol='#00FF00';
}
}
if($bgcol!='')
{
$htmlstr .= " <td style='background-color:".$bgcol."'><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
$htmlstr .= " <td align= center><input type='hidden' name='st_".$row->projektarbeit_id."' value='$row->uid@".DOMAIN."'><a href='mailto:$row->uid@".DOMAIN."?subject=Betreuung ".$row->prjbez." bei Studiengang $row->stgbez'><img src='../../skin/images/email.png' alt='email' title='Email an StudentIn'></a></td>";
$htmlstr .= " <td>".$db->convert_html_chars($row->studiensemester_kurzbz)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->vorname)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->nachname)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->organisationsform)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
//$htmlstr.="<a href='mailto:$row->uid@".DOMAIN."?subject=".$row->projekttyp_kurzbz."arbeitsbetreuung%20von%20".$row->vorname."%20".$row->nachname."'>
//<img src='../../../skin/images/email.png' alt='email' title='Email an Betreuer schreiben'></a>";
if($muid != NULL && $muid !='')
{
$htmlstr .= " <td><input type='hidden' name='b1_".$row->projektarbeit_id."' value='$muid'><a href='mailto:$muid?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname." bei Studiengang $row->stgbez' title='Email an Erstbegutachter'>".$erstbegutachter."</a></td>\n";
}
else
{
$htmlstr .= " <td>".$erstbegutachter."</td>\n";
}
$htmlstr .= " <td align='center'><input type='checkbox' id='m1_".$row->projektarbeit_id."' name='m1_".$row->projektarbeit_id."'></td>";
$htmlstr .= " <td align='center'><input type='checkbox' id='m2_".$row->projektarbeit_id."' name='m2_".$row->projektarbeit_id."'></td>";
if($muid2 != NULL && $muid2 !='')
{
$htmlstr .= " <td><input type='hidden' name='b2_".$row->projektarbeit_id."' value='$muid2'><a href='mailto:".$muid2."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname." bei Studiengang $row->stgbez' title='Email an Zweitbegutachter'>".$zweitbegutachter."</a></td>\n";
}
else
{
$htmlstr .= " <td>".$zweitbegutachter."</td>\n";
}
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
$htmlstr .= '<input type="hidden" name="stg_kz" value="'.$db->convert_html_chars($stg_kz).'">';
$htmlstr .= '<input type="hidden" name="p2id" value="'.$db->convert_html_chars($p2id).'">';
$htmlstr .= "<table width='100%'><tr><td>";
$htmlstr .= "<table><tr><td><input type='checkbox' name='alle' id='alle' onclick='markiere()'> alle markieren </td></tr><tr><td>&nbsp;</td></tr><tr>\n";
$htmlstr .= "<td rowspan=2><input type='submit' name='multi' value='Terminserie anlegen' title='Termin f&uuml;r mehrere Personen anlegen.'></td>";
$htmlstr .= "<td rowspan=2><input type='button' name='stmail' value='E-Mail Studierende' title='E-Mail an mehrere Studierende schicken' onclick='stserienmail(\"".$trenner->variable->emailadressentrennzeichen."\",\"".$stgbez."\")'></td>";
$htmlstr .= "<td rowspan=2><input type='button' name='btmail' value='E-Mail Begutachter(innen)' title='E-Mail an mehrere BegutachterInnen schicken' onclick='btserienmail(\"".$trenner->variable->emailadressentrennzeichen."\",\"".$stgbez."\")'></td></tr></table>\n";
$htmlstr .="</td><td align='right'>".showFarbcodes().'</td></tr></table>';
$htmlstr .= "</form>";
}
?>
<html>
<head>
<title>Abgabesystem_Assistenzsicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
/*******************************************************************************************************
* abgabe_assistenz
* abgabe_assistenz ist die Assistenzoberfläche des Abgabesystems
* für Diplom- und Bachelorarbeiten
*******************************************************************************************************/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/datum.class.php');
require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/variable.class.php');
require_once('../../include/phrasen.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
if (!$getuid = get_uid())
die('Keine UID gefunden ! <a href="javascript:history.back()">Zur&uuml;ck</a>');
$p=new phrasen(DEFAULT_LANGUAGE);
$htmlstr = "";
$erstbegutachter='';
$zweitbegutachter='';
$fachbereich_kurzbz='';
//$p2id='';
$stg_kz=(isset($_REQUEST['stg_kz'])?$_REQUEST['stg_kz']:'');
if(!is_numeric($stg_kz) && $stg_kz!='')
die('Bitte vor dem Aufruf Studiengang ausw&auml;hlen!');
$stgbez='';
$trenner='';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if(!$rechte->isBerechtigt('admin', $stg_kz, 'suid') && !$rechte->isBerechtigt('assistenz', $stg_kz, 'suid') && !$rechte->isBerechtigt('assistenz', null, 'suid', $fachbereich_kurzbz) )
die('Sie haben keine Berechtigung f&uuml;r diesen Studiengang <a href="javascript:history.back()">Zur&uuml;ck</a>');
function showFarbcodes()
{
$farbcodes = '';
$farbcodes.= "<table>";
$farbcodes.="<tr><td style=\"background-color:#FFFFFF; width:35px;\"></td><td style=\"padding-left:5px;\">Termin noch mehr als 12 Tage entfernt</tr>";
$farbcodes.="<tr><td style=\"background-color:#FFFF00;\"></td><td style=\"padding-left:5px;\">Termin innerhalb der nächsten 12 Tage</tr>";
$farbcodes.="<tr><td style=\"background-color:#FF0000;\"></td><td style=\"padding-left:5px;\">Termin überschritten / keine Abgabe</tr>";
$farbcodes.="<tr><td style=\"background-color:#00FF00;\"></td><td style=\"padding-left:5px;\">abgegeben</tr>";
$farbcodes.="<tr><td style=\"background-color:#EA7B7B;\"></td><td style=\"padding-left:5px;\">Abgabe nach Termin</tr>";
$farbcodes.="</table>";
return $farbcodes;
}
$trenner = new variable();
$trenner->loadVariables($getuid);
$sql_query = "SELECT *,
(SELECT orgform_kurzbz
FROM tbl_prestudentstatus
WHERE prestudent_id=(Select prestudent_id from tbl_student where student_uid=xy.uid limit 1)
ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1
) as organisationsform
FROM (SELECT DISTINCT ON(tbl_projektarbeit.projektarbeit_id) public.tbl_studiengang.bezeichnung as stgbez,tbl_projekttyp.bezeichnung AS prjbez,* FROM lehre.tbl_projektarbeit
LEFT JOIN public.tbl_benutzer on(uid=student_uid)
LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit using(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang using(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND public.tbl_benutzer.aktiv
AND lehre.tbl_projektarbeit.note IS NULL
AND public.tbl_studiengang.studiengang_kz=".$db->db_add_param($stg_kz)."
ORDER BY tbl_projektarbeit.projektarbeit_id desc) as xy
ORDER BY nachname";
if(!$erg=$db->db_query($sql_query))
{
$errormsg='Fehler beim Laden der Betreuungen';
}
else
{
//$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form>";
$htmlstr .= "<form name='multitermin' action='abgabe_assistenz_multitermin.php' title='Serientermin' target='al_detail' method='POST'>";
//$htmlstr .= "<table id='t1' class='liste table-autosort:5 table-stripeclass:alternate table-autostripe'>\n";
$htmlstr .= "<table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr class='liste'>\n";
$htmlstr .= "<th></th><th class='table-sortable:default'>UID</th>
<th>Email</th>
<th class='table-sortable:default'>Sem.</th>
<th class='table-sortable:default'>Vorname</th>
<th class='table-sortable:alphanumeric'>Nachname</th>
<th class='table-sortable:default'>Orgform</th>";
$htmlstr .= "<th class='table-sortable:default'>Typ</th>
<th>Titel</th>
<th class='table-sortable:alphanumeric'>1.Begutachter(in)</th>
<th>1</th>
<th>2</th>
<th class='table-sortable:alphanumeric'>2.Begutachter(in)</th>";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
$erstbegutachter='';
$zweitbegutachter='';
$muid='';
$muid2='';
$mituid='';
$p2id='';
while($row=$db->db_fetch_object($erg))
{
$erstbegutachter='';
$zweitbegutachter='';
$muid='';
$muid2='';
$mituid='';
$p2id='';
$stgbez=$row->stgbez;
//Betreuer suchen
$qry_betr="SELECT trim(COALESCE(nachname, '') || ', ' || COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(titelpost, '')) AS first,
'' AS second,
PUBLIC.tbl_mitarbeiter.mitarbeiter_uid,
'' AS kontakt,
PUBLIC.tbl_person.person_id
FROM PUBLIC.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = PUBLIC.tbl_person.person_id)
LEFT JOIN PUBLIC.tbl_benutzer ON (PUBLIC.tbl_benutzer.person_id = PUBLIC.tbl_person.person_id)
LEFT JOIN PUBLIC.tbl_mitarbeiter ON (PUBLIC.tbl_benutzer.uid = PUBLIC.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = ".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)."
AND (
tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter'
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter'
)
UNION
SELECT '' AS first,
trim(COALESCE(nachname, '') || ', ' || COALESCE(titelpre, '') || ' ' || COALESCE(vorname, '') || ' ' || COALESCE(titelpost, '')) AS second,
PUBLIC.tbl_mitarbeiter.mitarbeiter_uid,
(
SELECT kontakt
FROM PUBLIC.tbl_kontakt
WHERE person_id = tbl_person.person_id
AND kontakttyp = 'email'
AND zustellung LIMIT 1
) AS kontakt,
PUBLIC.tbl_person.person_id
FROM PUBLIC.tbl_person
JOIN lehre.tbl_projektbetreuer ON (lehre.tbl_projektbetreuer.person_id = PUBLIC.tbl_person.person_id)
LEFT JOIN PUBLIC.tbl_benutzer ON (PUBLIC.tbl_benutzer.person_id = PUBLIC.tbl_person.person_id)
LEFT JOIN PUBLIC.tbl_mitarbeiter ON (PUBLIC.tbl_benutzer.uid = PUBLIC.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = ".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)."
AND tbl_projektbetreuer.betreuerart_kurzbz = 'Zweitbegutachter'
";
if(!$betr=$db->db_query($qry_betr))
{
$errormsg='Fehler beim Laden der Betreuer';
}
else
{
while($row_betr=$db->db_fetch_object($betr))
{
if($row_betr->first!='' && $row_betr->mitarbeiter_uid!=NULL)
{
if(trim($erstbegutachter==''))
{
$erstbegutachter=$row_betr->first;
$muid=$row_betr->mitarbeiter_uid."@".DOMAIN;
$mituid=$row_betr->mitarbeiter_uid;
}
else
{
$erstbegutachter.=$trenner->variable->emailadressentrennzeichen." ".$row_betr->first;
$muid.=$trenner->variable->emailadressentrennzeichen." ".$row_betr->mitarbeiter_uid."@".DOMAIN;
}
}
if($row_betr->second!='')
{
$zweitbegutachter=$row_betr->second;
$p2id=$row_betr->person_id;
if($row_betr->mitarbeiter_uid!='' && $row_betr->mitarbeiter_uid!=NULL)
{
$muid2=$row_betr->mitarbeiter_uid."@".DOMAIN;
}
else
{
if($row_betr->kontakt!='' && $row_betr->kontakt!=NULL)
{
$muid2=$row_betr->kontakt;
}
}
}
}
}
$htmlstr .= " <tr >\n";//class='liste".($i%2)."'
$htmlstr .= " <td><input type='checkbox' id='mc_".$row->projektarbeit_id."' name='mc_".$row->projektarbeit_id."' ></td>";
//Anzeige
$qry_end="SELECT * FROM campus.tbl_paabgabe WHERE paabgabetyp_kurzbz='end' AND projektarbeit_id=".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)." ORDER BY datum DESC";
if(!$result_end=$db->db_query($qry_end))
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
else
{
if($db->db_num_rows($result_end)>0)
{
$bgcol='';
if($row_end=$db->db_fetch_object($result_end))
{
if($row_end->abgabedatum==NULL)
{
if ($row_end->datum<date('Y-m-d'))
{
$bgcol='#FF0000';
}
elseif (($row_end->datum>=date('Y-m-d')) && ($row_end->datum<date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+11, date("Y")))))
{
$bgcol='#FFFF00';
}
else
{
$bgcol='#FFFFFF';
}
}
else
{
if($row_end->abgabedatum>$row_end->datum)
{
$bgcol='#EA7B7B';
}
else
{
$bgcol='#00FF00';
}
}
if($bgcol!='')
{
$htmlstr .= " <td style='background-color:".$bgcol."'><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
else
{
$htmlstr .= " <td><a href='abgabe_assistenz_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&erst=".$mituid."&p2id=".$p2id."' target='al_detail' title='Details anzeigen'>".$row->uid."</a></td>\n";
}
}
$htmlstr .= " <td align= center><input type='hidden' name='st_".$row->projektarbeit_id."' value='$row->uid@".DOMAIN."'><a href='mailto:$row->uid@".DOMAIN."?subject=Betreuung ".$row->prjbez." bei Studiengang $row->stgbez'><img src='../../skin/images/email.png' alt='email' title='Email an StudentIn'></a></td>";
$htmlstr .= " <td>".$db->convert_html_chars($row->studiensemester_kurzbz)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->vorname)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->nachname)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->organisationsform)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
//$htmlstr.="<a href='mailto:$row->uid@".DOMAIN."?subject=".$row->projekttyp_kurzbz."arbeitsbetreuung%20von%20".$row->vorname."%20".$row->nachname."'>
//<img src='../../../skin/images/email.png' alt='email' title='Email an Betreuer schreiben'></a>";
if($muid != NULL && $muid !='')
{
$htmlstr .= " <td><input type='hidden' name='b1_".$row->projektarbeit_id."' value='$muid'><a href='mailto:$muid?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname." bei Studiengang $row->stgbez' title='Email an Erstbegutachter'>".$erstbegutachter."</a></td>\n";
}
else
{
$htmlstr .= " <td>".$erstbegutachter."</td>\n";
}
$htmlstr .= " <td align='center'><input type='checkbox' id='m1_".$row->projektarbeit_id."' name='m1_".$row->projektarbeit_id."'></td>";
$htmlstr .= " <td align='center'><input type='checkbox' id='m2_".$row->projektarbeit_id."' name='m2_".$row->projektarbeit_id."'></td>";
if($muid2 != NULL && $muid2 !='')
{
$htmlstr .= " <td><input type='hidden' name='b2_".$row->projektarbeit_id."' value='$muid2'><a href='mailto:".$muid2."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname." bei Studiengang $row->stgbez' title='Email an Zweitbegutachter'>".$zweitbegutachter."</a></td>\n";
}
else
{
$htmlstr .= " <td>".$zweitbegutachter."</td>\n";
}
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
$htmlstr .= '<input type="hidden" name="stg_kz" value="'.$db->convert_html_chars($stg_kz).'">';
$htmlstr .= '<input type="hidden" name="p2id" value="'.$db->convert_html_chars($p2id).'">';
$htmlstr .= "<table width='100%'><tr><td>";
$htmlstr .= "<table><tr><td><input type='checkbox' name='alle' id='alle' onclick='markiere()'> alle markieren </td></tr><tr><td>&nbsp;</td></tr><tr>\n";
$htmlstr .= "<td rowspan=2><input type='submit' name='multi' value='Terminserie anlegen' title='Termin f&uuml;r mehrere Personen anlegen.'></td>";
$htmlstr .= "<td rowspan=2><input type='button' name='stmail' value='E-Mail Studierende' title='E-Mail an mehrere Studierende schicken' onclick='stserienmail(\"".$trenner->variable->emailadressentrennzeichen."\",\"".$stgbez."\")'></td>";
$htmlstr .= "<td rowspan=2><input type='button' name='btmail' value='E-Mail Begutachter(innen)' title='E-Mail an mehrere BegutachterInnen schicken' onclick='btserienmail(\"".$trenner->variable->emailadressentrennzeichen."\",\"".$stgbez."\")'></td></tr></table>\n";
$htmlstr .="</td><td align='right'>".showFarbcodes().'</td></tr></table>';
$htmlstr .= "</form>";
}
?>
<html>
<head>
<title>Abgabesystem_Assistenzsicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link rel="stylesheet" href="../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[5,0]],
widgets: ['zebra']
});
}
);
function confdel()
{
if(confirm("Diesen Datensatz wirklick loeschen?"))
return true;
return false;
}
function markiere()
{
var items=document.getElementsByTagName('input');
var alle=document.getElementById('alle');
jQuery.each(items, function(index, item) {
if(item.type == 'checkbox')
{
item.checked = alle.checked;
}
});
}
function stserienmail(trenner, stgbez)
{
//E-Mail an mehrere ausgewaehlte Studenten
var studenten=document.getElementsByTagName('input');
var adressen='';
jQuery.each(studenten, function(index, students) {
if(students.type=='hidden' && students.name.substr(0,3)=="st_")
{
var id = "mc_"+students.name.substr(3);
if(document.getElementById(id).checked)
{
if(adressen=='')
{
adressen=students.value;
}
else
{
if(adressen.search(students.value)==-1)
{
adressen=adressen+trenner+students.value;
}
}
}
}
});
window.location.href="mailto:"+adressen+"?subject=Betreuungen Bachelorarbeit bzw. Master Thesis bei Studiengang "+stgbez;
}
function btserienmail(trenner, stgbez)
{
//Mail an mehrere ausgewählte Betreuer
var lektoren=document.getElementsByTagName('input');
var adressen='';
jQuery.each(lektoren, function(index, personen) {
if(personen.type=='hidden' && personen.name.substr(0,3)=="b1_" && personen.value!='')
{
var id = "m1_"+personen.name.substr(3);
if(document.getElementById(id).checked)
{
temp=personen.value.split(trenner);
for(i=0;i<temp.length;i++)
{
if(adressen=='')
{
adressen=temp[i];
}
else
{
if(adressen.search(temp[i])==-1)
{
adressen=adressen+trenner+temp[i];
}
}
}
}
}
if(personen.type=='hidden' && personen.name.substr(0,3)=="b2_" && personen.value!='')
{
var id = "m2_"+personen.name.substr(3);
if(document.getElementById(id).checked)
{
temp=personen.value.split(trenner);
for(i=0;i<temp.length;i++)
{
if(adressen=='')
{
adressen=temp[i];
}
else
{
if(adressen.search(temp[i])==-1)
{
adressen=adressen+trenner+temp[i];
}
}
}
}
}
});
window.location.href="mailto:"+adressen+"?subject=Betreuungen Bachelorarbeit bzw. Master Thesis bei Studiengang "+stgbez;
}
</script>
</head>
<body class="background_main">
<?php
echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='../../cms/dms.php?id=".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;Handbuch</a></div></h2>";
echo $htmlstr;
?>
</body>
</html>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[5,0]],
widgets: ['zebra']
});
}
);
function confdel()
{
if(confirm("Diesen Datensatz wirklick loeschen?"))
return true;
return false;
}
function markiere()
{
var items=document.getElementsByTagName('input');
var alle=document.getElementById('alle');
jQuery.each(items, function(index, item) {
if(item.type == 'checkbox')
{
item.checked = alle.checked;
}
});
}
function stserienmail(trenner, stgbez)
{
//E-Mail an mehrere ausgewaehlte Studenten
var studenten=document.getElementsByTagName('input');
var adressen='';
jQuery.each(studenten, function(index, students) {
if(students.type=='hidden' && students.name.substr(0,3)=="st_")
{
var id = "mc_"+students.name.substr(3);
if(document.getElementById(id).checked)
{
if(adressen=='')
{
adressen=students.value;
}
else
{
if(adressen.search(students.value)==-1)
{
adressen=adressen+trenner+students.value;
}
}
}
}
});
window.location.href="mailto:"+adressen+"?subject=Betreuungen Bachelorarbeit bzw. Master Thesis bei Studiengang "+stgbez;
}
function btserienmail(trenner, stgbez)
{
//Mail an mehrere ausgewählte Betreuer
var lektoren=document.getElementsByTagName('input');
var adressen='';
jQuery.each(lektoren, function(index, personen) {
if(personen.type=='hidden' && personen.name.substr(0,3)=="b1_" && personen.value!='')
{
var id = "mc_"+personen.name.substr(3);
if(document.getElementById(id).checked)
{
temp=personen.value.split(trenner);
for(i=0;i<temp.length;i++)
{
if(adressen=='')
{
adressen=temp[i];
}
else
{
if(adressen.search(temp[i])==-1)
{
adressen=adressen+trenner+temp[i];
}
}
}
}
}
if(personen.type=='hidden' && personen.name.substr(0,3)=="b2_" && personen.value!='')
{
var id = "mc_"+personen.name.substr(3);
if(document.getElementById(id).checked)
{
temp=personen.value.split(trenner);
for(i=0;i<temp.length;i++)
{
if(adressen=='')
{
adressen=temp[i];
}
else
{
if(adressen.search(temp[i])==-1)
{
adressen=adressen+trenner+temp[i];
}
}
}
}
}
});
window.location.href="mailto:"+adressen+"?subject=Betreuungen Bachelorarbeit bzw. Master Thesis bei Studiengang "+stgbez;
}
</script>
</head>
<body class="background_main">
<?php
echo "<h2><div style='float:left'>Bachelor-/Masterarbeitsbetreuungen (Studiengang $stg_kz, $stgbez)</div><div style='text-align: right;'><a href='../../cms/dms.php?id=".$p->t('dms_link/abgabetoolAssistenzHandbuch')."' target='_blank'><img src='../../skin/images/information.png' alt='Anleitung' title='Anleitung BaDa-Abgabe' border=0>&nbsp;Handbuch</a></div></h2>";
echo $htmlstr;
?>
</body>
</html>
@@ -228,7 +228,7 @@ if(isset($_POST["schick"]) && $error=='')
LEFT JOIN public.tbl_benutzer ON(public.tbl_benutzer.person_id=public.tbl_person.person_id)
LEFT JOIN public.tbl_mitarbeiter ON(public.tbl_benutzer.uid=public.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id=".$db->db_add_param($termine[$j])." AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
AND (tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter' OR tbl_projektbetreuer.betreuerart_kurzbz='Betreuer')";
AND (tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter' OR tbl_projektbetreuer.betreuerart_kurzbz='Betreuer' OR tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter')";
if(!$betr=$db->db_query($qry_betr))
{
echo "<font color=\"#FF0000\">Fehler beim Laden des Begutachters (Diplomand: $row->nachname)!</font><br>&nbsp;";
+145 -91
View File
@@ -31,6 +31,7 @@ require_once('../../include/lehreinheitmitarbeiter.class.php');
require_once('../../include/lehreinheitgruppe.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/mitarbeiter.class.php');
require_once('../../include/gruppe.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
@@ -39,7 +40,7 @@ $user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('lehre/vorrueckung', null, 'suid'))
if (!$rechte->isBerechtigt('lehre/vorrueckung', null, 'suid'))
die($rechte->errormsg);
$stg_obj = new studiengang();
@@ -56,34 +57,33 @@ $studiengang_kz = (isset($_GET['studiengang_kz'])?$_GET['studiengang_kz']:'');
$semester = (isset($_GET['semester'])?$_GET['semester']:'');
$stsem_von = (isset($_GET['stsem_von'])?$_GET['stsem_von']:'');
$stsem_nach = (isset($_GET['stsem_nach'])?$_GET['stsem_nach']:'');
$text='';
$anzahl_lehreinheiten=0;
$anzahl_lehreinheitmitarbeiter=0;
$anzahl_lehreinheitgruppe=0;
$error_lehreinheit=0;
$error_lehreinheitmitarbeiter=0;
$error_lehreinheitgruppe=0;
$text = '';
$anzahl_lehreinheiten = 0;
$anzahl_lehreinheitmitarbeiter = 0;
$anzahl_lehreinheitgruppe = 0;
$error_lehreinheit = 0;
$error_lehreinheitmitarbeiter = 0;
$error_lehreinheitgruppe = 0;
if($stsem_von=='')
if ($stsem_von == '')
{
$stsem_obj = new studiensemester();
$stsem_von = $stsem_obj->getPrevious();
}
if($stsem_nach=='')
if ($stsem_nach == '')
{
$stsem_obj = new studiensemester();
$stsem_obj->getNextStudiensemester();
$stsem_nach = $stsem_obj->studiensemester_kurzbz;
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
echo '<!DOCTYPE HTML>
<html>
<head>
<title>Lehreinheit Vorrueckung</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<title>Lehreinheit Vorrueckung</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
</head>
<body style="background-color:#eeeeee;">
<h2>Lehreinheiten Vorr&uuml;ckung</h2>
@@ -93,10 +93,10 @@ echo 'Studiengang: <SELECT name="studiengang_kz">';
echo '<OPTION value="">---Stg ausw&auml;hlen---</OPTION>';
foreach($stg_obj->result as $stg)
{
if($studiengang_kz==$stg->studiengang_kz)
$selected='selected';
if ($studiengang_kz == $stg->studiengang_kz)
$selected = 'selected';
else
$selected='';
$selected = '';
echo '<OPTION value="'.$stg->studiengang_kz.'" '.$selected.'>'.$stg->kuerzel.' ('.$stg->kurzbzlang.')</OPTION>';
}
@@ -104,12 +104,12 @@ echo '</SELECT>';
echo ' Semester: <SELECT name="semester">';
echo '<OPTION value="">-- Alle --</OPTION>';
for($i=1;$i<=8;$i++)
for ($i = 1;$i <= 8;$i++)
{
if($semester==$i)
$selected='selected';
if ($semester == $i)
$selected = 'selected';
else
$selected='';
$selected = '';
echo '<OPTION value="'.$i.'" '.$selected.'>'.$i.'</OPTION>';
}
@@ -121,7 +121,7 @@ $stsem_obj->getAll();
foreach ($stsem_obj->studiensemester as $stsem)
{
if($stsem_von == $stsem->studiensemester_kurzbz)
if ($stsem_von == $stsem->studiensemester_kurzbz)
$selected = 'selected';
else
$selected = '';
@@ -134,7 +134,7 @@ echo ' Nach: <SELECT name="stsem_nach">';
foreach ($stsem_obj->studiensemester as $stsem)
{
if($stsem_nach == $stsem->studiensemester_kurzbz)
if ($stsem_nach == $stsem->studiensemester_kurzbz)
$selected = 'selected';
else
$selected = '';
@@ -146,22 +146,38 @@ echo '</SELECT>';
echo '&nbsp;&nbsp;<input type="submit" value="Vorrücken"><br>';
if (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') && VILESCI_STUNDENSATZ_VORRUECKUNG != '' && is_numeric(VILESCI_STUNDENSATZ_VORRUECKUNG))
echo '<br><span style="color: blue">Alle Lehraufträge werden mit dem Stundensatz "'.VILESCI_STUNDENSATZ_VORRUECKUNG.'" vorgerückt</span>';
elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') && VILESCI_STUNDENSATZ_VORRUECKUNG != '' && VILESCI_STUNDENSATZ_VORRUECKUNG == 'default')
echo '<br><span style="color: blue">Alle Lehraufträge werden mit dem aktuell hinterlegten Standard-Stundensatz der/des Lehrenden vorgerückt</span>';
if (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& is_numeric(VILESCI_STUNDENSATZ_VORRUECKUNG))
{
echo '<br><span style="color: blue">
Alle Lehraufträge werden mit dem Stundensatz "'.VILESCI_STUNDENSATZ_VORRUECKUNG.'" vorgerückt
</span>';
}
elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& VILESCI_STUNDENSATZ_VORRUECKUNG == 'default')
{
echo '<br><span style="color: blue">
Alle Lehraufträge werden mit dem aktuell hinterlegten Standard-Stundensatz der/des Lehrenden vorgerückt
</span>';
}
else
echo '<br><span style="color: blue">Alle Lehraufträge werden mit dem Stundensatz des Vorjahres vorgerückt</span>';
{
echo '<br><span style="color: blue">
Alle Lehraufträge werden mit dem Stundensatz des Vorjahres vorgerückt
</span>';
}
echo '</form>';
if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '')
{
$stg_obj = new studiengang();
if(!$stg_obj->load($studiengang_kz))
if (!$stg_obj->load($studiengang_kz))
die('Studiengang kann nicht geladen werden');
if(!$rechte->isBerechtigt('lehre/vorrueckung', $stg_obj->oe_kurzbz, 'suid'))
if (!$rechte->isBerechtigt('lehre/vorrueckung', $stg_obj->oe_kurzbz, 'suid'))
die($rechte->errormsg);
echo '<br>Starte Vorrückung '.$stg_arr[$studiengang_kz]." $semester von $stsem_von nach $stsem_nach ...";
@@ -172,10 +188,10 @@ if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem_von);
if($semester!='')
if ($semester != '')
$qry .= " AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester);
if($result = $db->db_query($qry))
if ($result = $db->db_query($qry))
{
$anzahl_von = $db->db_num_rows($result);
}
@@ -186,92 +202,114 @@ if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
WHERE
tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsem_nach);
if($semester!='')
if ($semester != '')
$qry_nach .= " AND tbl_lehrveranstaltung.semester=".$db->db_add_param($semester);
if($result = $db->db_query($qry_nach))
if ($result = $db->db_query($qry_nach))
{
$anzahl_nach = $db->db_num_rows($result);
$baseurl = basename($_SERVER['REQUEST_URI']);
if ($anzahl_nach >= $anzahl_von && !isset($_GET['continue']))
{
echo '<br><br><span style="color:red">Es sind schon Lehreinheiten fuer das '.$stsem_nach.' in '.$stg_arr[$studiengang_kz].' '.$semester.' vorhanden. Trotzdem fortsetzen?</span><br><br>
echo '<br><br><span style="color:red">Es sind schon Lehreinheiten fuer das
'.$stsem_nach.' in '.$stg_arr[$studiengang_kz].' '.$semester.' vorhanden.
Trotzdem fortsetzen?</span><br><br>
<form action="'.$baseurl.'&continue" method="POST"><input type="submit" value="Fortsetzen"></form>';
die ();
}
}
if($result = $db->db_query($qry))
if ($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$text.="<br>Lehreinheit $row->lehreinheit_id wird vorgerueckt";
$text .= "<br>Lehreinheit $row->lehreinheit_id wird vorgerueckt";
$le_obj = new lehreinheit();
//Lehreinheit Neu Anlegen
if($le_obj->load($row->lehreinheit_id))
if ($le_obj->load($row->lehreinheit_id))
{
$le_obj->new=true;
$le_obj->studiensemester_kurzbz=$stsem_nach;
$le_obj->insertamum=date('Y-m-d H:i:s');
$le_obj->insertvon='Vorrueckung_'.$user;
$le_obj->ext_id='';
$le_obj->unr='';
$le_obj->new = true;
$le_obj->studiensemester_kurzbz = $stsem_nach;
$le_obj->insertamum = date('Y-m-d H:i:s');
$le_obj->insertvon = 'Vorrueckung_'.$user;
$le_obj->ext_id = '';
$le_obj->unr = '';
if($le_obj->save())
if ($le_obj->save())
{
$anzahl_lehreinheiten++;
//LehreinheitMitarbeiter Eintrag neu Anlengen
$qry_lem="SELECT mitarbeiter_uid FROM lehre.tbl_lehreinheitmitarbeiter
$qry_lem = "SELECT mitarbeiter_uid FROM lehre.tbl_lehreinheitmitarbeiter
WHERE lehreinheit_id=".$db->db_add_param($row->lehreinheit_id);
if($result_lem = $db->db_query($qry_lem))
if ($result_lem = $db->db_query($qry_lem))
{
while($row_lem = $db->db_fetch_object($result_lem))
while ($row_lem = $db->db_fetch_object($result_lem))
{
$lem_obj = new lehreinheitmitarbeiter();
if($lem_obj->load($row->lehreinheit_id, $row_lem->mitarbeiter_uid))
if ($lem_obj->load($row->lehreinheit_id, $row_lem->mitarbeiter_uid))
{
// Pruefen ob der Lektor ueber die im Config festgelegte Stundengrenze
// kommt und Meldung ausgeben
$qry_stundengrenze="SELECT mitarbeiter_uid,fixangestellt,SUM(semesterstunden) AS summe,
aktiv FROM lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN public.tbl_mitarbeiter USING (mitarbeiter_uid)
JOIN public.tbl_benutzer ON (uid=mitarbeiter_uid)
WHERE mitarbeiter_uid=".$db->db_add_param($row_lem->mitarbeiter_uid)."
AND studiensemester_kurzbz=".$db->db_add_param($stsem_von)."
GROUP BY mitarbeiter_uid,fixangestellt,aktiv";
//echo '<br>UNION<br>'.$qry_stundengrenze;
if($result_stundengrenze = $db->db_query($qry_stundengrenze))
$qry_stundengrenze="
SELECT
mitarbeiter_uid,fixangestellt,SUM(semesterstunden) AS summe, aktiv
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN public.tbl_mitarbeiter USING (mitarbeiter_uid)
JOIN public.tbl_benutzer ON (uid=mitarbeiter_uid)
WHERE
mitarbeiter_uid=".$db->db_add_param($row_lem->mitarbeiter_uid)."
AND studiensemester_kurzbz=".$db->db_add_param($stsem_von)."
GROUP BY
mitarbeiter_uid, fixangestellt, aktiv";
if ($result_stundengrenze = $db->db_query($qry_stundengrenze))
{
if($row_stundengrenze = $db->db_fetch_object($result_stundengrenze))
if ($row_stundengrenze = $db->db_fetch_object($result_stundengrenze))
{
if ($row_stundengrenze->fixangestellt=='f' && $row_stundengrenze->summe>WARN_SEMESTERSTD_FREI)
if (!$db->db_parse_bool($row_stundengrenze->fixangestellt)
&& $row_stundengrenze->summe > WARN_SEMESTERSTD_FREI)
{
$text.=" <span style='color:red'>Stundengrenze ".WARN_SEMESTERSTD_FREI." Stunden ueberschritten von $row_lem->mitarbeiter_uid</span>";
$text .= " <span style='color:red'>
Stundengrenze ".WARN_SEMESTERSTD_FREI." Stunden ueberschritten
von $row_lem->mitarbeiter_uid</span>";
}
elseif ($row_stundengrenze->fixangestellt=='t' && $row_stundengrenze->summe>WARN_SEMESTERSTD_FIX)
elseif ($db->db_parse_bool($row_stundengrenze->fixangestellt)
&& $row_stundengrenze->summe > WARN_SEMESTERSTD_FIX)
{
$text.=" <span style='color:red'>Stundengrenze ".WARN_SEMESTERSTD_FIX." Stunden ueberschritten von $row_lem->mitarbeiter_uid</span>";
$text .= " <span style='color:red'>
Stundengrenze ".WARN_SEMESTERSTD_FIX." Stunden ueberschritten
von $row_lem->mitarbeiter_uid</span>";
}
// Meldung, wenn Benutzer inaktiv
if ($row_stundengrenze->aktiv == 'f')
if ($db->db_parse_bool($row_stundengrenze->aktiv) == false)
{
$text.="; <span style='color:orange'>Achtung! MitarbeiterIn <b>$row_lem->mitarbeiter_uid</b> ist nicht aktiv</span>";
$text .= "; <span style='color:orange'>Achtung! MitarbeiterIn
<b>$row_lem->mitarbeiter_uid</b> ist nicht aktiv</span>";
}
}
}
$lem_obj->lehreinheit_id=$le_obj->lehreinheit_id;
$lem_obj->lehreinheit_id = $le_obj->lehreinheit_id;
$lem_obj->new = true;
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG definiert ist, wird nicht der Stundensatz des Vorjahres verwendet
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG numerisch ist, wird dieser Wert fuer den Stundensatz verwendet
if (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') && VILESCI_STUNDENSATZ_VORRUECKUNG != '' && is_numeric(VILESCI_STUNDENSATZ_VORRUECKUNG))
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG definiert ist,
// wird nicht der Stundensatz des Vorjahres verwendet
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG numerisch ist,
// wird dieser Wert fuer den Stundensatz verwendet
if (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& is_numeric(VILESCI_STUNDENSATZ_VORRUECKUNG))
{
$lem_obj->stundensatz = VILESCI_STUNDENSATZ_VORRUECKUNG;
}
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG default ist, wird der Standard-Stundensatz des jeweiligen Lektors geladen und gespeichert
elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') && VILESCI_STUNDENSATZ_VORRUECKUNG != '' && VILESCI_STUNDENSATZ_VORRUECKUNG == 'default')
// Wenn VILESCI_STUNDENSATZ_VORRUECKUNG default ist,
//wird der Standard-Stundensatz des jeweiligen Lektors geladen und gespeichert
elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG')
&& VILESCI_STUNDENSATZ_VORRUECKUNG != ''
&& VILESCI_STUNDENSATZ_VORRUECKUNG == 'default')
{
$stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid);
$lem_obj->stundensatz = $stundensatz->stundensatz;
@@ -279,83 +317,99 @@ if($studiengang_kz!='' && $stsem_von!='' && $stsem_nach!='')
$lem_obj->insertamum = date('Y-m-d H:i:s');
$lem_obj->insertvon = 'Vorrueckung_'.$user;
$lem_obj->ext_id = '';
$lem_obj->vertrag_id='';
$lem_obj->vertrag_id = '';
if(!$lem_obj->save())
if (!$lem_obj->save())
{
$error_lehreinheitmitarbeiter++;
$text.='Fehler beim Anlegen des Lehreinheitmitarbeiter Eintrages: '.$lem_obj->errormsg;
$text .= 'Fehler beim Anlegen des Lehreinheitmitarbeiter
Eintrages: '.$lem_obj->errormsg;
}
else
$anzahl_lehreinheitmitarbeiter++;
}
else
{
$text.='Fehler beim Laden der Mitarbeiter';
$text .= 'Fehler beim Laden der Mitarbeiter';
$error_lehreinheitmitarbeiter++;
}
}
}
else
{
$text.='Fehler beim Laden der Mitarbeiter '.$db->db_last_error();
$text .= 'Fehler beim Laden der Mitarbeiter '.$db->db_last_error();
$error_lehreinheitmitarbeiter++;
}
//LehreinheitGruppe Eintrag neu Anlegen
$qry_leg="SELECT lehreinheitgruppe_id FROM lehre.tbl_lehreinheitgruppe
WHERE lehreinheit_id=".$db->db_add_param($row->lehreinheit_id)."
$qry_leg = "
SELECT
lehreinheitgruppe_id
FROM
lehre.tbl_lehreinheitgruppe
WHERE
lehreinheit_id=".$db->db_add_param($row->lehreinheit_id)."
AND NOT (tbl_lehreinheitgruppe.semester='0' AND tbl_lehreinheitgruppe.verband='I')";
if($result_leg = $db->db_query($qry_leg))
if ($result_leg = $db->db_query($qry_leg))
{
while($row_leg = $db->db_fetch_object($result_leg))
{
$leg_obj = new lehreinheitgruppe();
if($leg_obj->load($row_leg->lehreinheitgruppe_id))
if ($leg_obj->load($row_leg->lehreinheitgruppe_id))
{
$leg_obj->lehreinheit_id=$le_obj->lehreinheit_id;
// Direktinskriptionsgruppen werden nicht vorgerückt
if ($leg_obj->gruppe_kurzbz != '')
{
$grp = new gruppe();
$grp->load($leg_obj->gruppe_kurzbz);
if ($grp->direktinskription)
continue;
}
$leg_obj->lehreinheit_id = $le_obj->lehreinheit_id;
$leg_obj->new = true;
$leg_obj->insertamum = date('Y-m-d H:i:s');
$leg_obj->insertvon = 'Vorrueckung_'.$user;
$leg_obj->ext_id = '';
if(!$leg_obj->save())
if (!$leg_obj->save())
{
$error_lehreinheitgruppe++;
$text.='Fehler beim Anlegen des Lehreinheitgruppe Eintrages: '.$leg_obj->errormsg;
$text .= 'Fehler beim Anlegen des Lehreinheitgruppe Eintrages: '.$leg_obj->errormsg;
}
else
$anzahl_lehreinheitgruppe++;
}
else
{
$text.='Fehler beim Laden der Gruppe '.$leg_obj->errormsg.' '.$db->db_last_error();
$text .= 'Fehler beim Laden der Gruppe '.$leg_obj->errormsg.' '.$db->db_last_error();
$error_lehreinheitgruppe++;
}
}
}
else
{
$text.='Fehler beim Auslesen der Gruppen';
$text .= 'Fehler beim Auslesen der Gruppen';
$error_lehreinheitgruppe++;
}
}
else
{
$error_lehreinheit++;
$text.='Fehler beim Speichern der Lehreinheit '.$le_obj->errormsg;
$text .= 'Fehler beim Speichern der Lehreinheit '.$le_obj->errormsg;
}
}
else
{
$error_lehreinheit++;
$text.='Fehler beim Laden der Lehreinheit '.$le_obj->errormsg;
$text .= 'Fehler beim Laden der Lehreinheit '.$le_obj->errormsg;
}
}
}
else
{
$text.='Fehler beim Laden der Lehreinheiten '.$db->db_last_error();
$text .= 'Fehler beim Laden der Lehreinheiten '.$db->db_last_error();
$error_lehreinheit++;
}
File diff suppressed because it is too large Load Diff