Merge branch 'fb-3922/ZeitwunschZustimmung'

This commit is contained in:
Andreas Österreicher
2019-07-05 09:16:01 +02:00
6 changed files with 296 additions and 10 deletions
+78 -6
View File
@@ -29,7 +29,10 @@ require_once('../../../include/globals.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/zeitwunsch.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/zeitaufzeichnung_gd.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/sprache.class.php');
@@ -46,6 +49,7 @@ $uid = get_uid();
if(!check_lektor($uid))
die($p->t('global/keineBerechtigungFuerDieseSeite'));
$PHP_SELF = $_SERVER['PHP_SELF'];
if(isset($_GET['type']))
@@ -107,6 +111,36 @@ $person = new benutzer();
if(!$person->load($uid))
die($person->errormsg);
$ma = new mitarbeiter($uid);
$fixangestellt = $ma->fixangestellt;
// Nächstes Studiensemester
$ss = new Studiensemester();
$ss->getNextStudiensemester();
$next_ss = $ss->studiensemester_kurzbz;
// Erklärung zu Pausen bei geteilten Arbeitszeiten speichern
if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit']))
{
$selbstverwaltete_pause = ($_GET['selbstverwaltete-pause'] == 'yes') ? true : false;
$zeitaufzeichnung_gd = new Zeitaufzeichnung_gd();
$zeitaufzeichnung_gd->uid = $uid;
$zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss;
$zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause;
$za_gd = new Zeitaufzeichnung_gd();
$za_gd->load($uid, $next_ss);
if ($za_gd->uid)
{
echo 'Bereits eingetragen';
}
else if (!$zeitaufzeichnung_gd->save())
{
echo $zeitaufzeichnung_gd->errormsg;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
@@ -143,8 +177,42 @@ if(!$person->load($uid))
</head>
<body>
<div class="flexcroll" style="outline: none;">
<table>
<?php if($fixangestellt && (defined('CIS_ZEITWUNSCH_GD') && CIS_ZEITWUNSCH_GD)): ?>
<!--Erklärung zu Pausen bei geteilten Arbeitszeiten-->
<tr>
<td>
<h1>Zustimmung zur Verplanung in geteilter Arbeitszeit</h1>
<form action="">
<p>
<?php
echo $p->t('zeitwunsch/geteilteArbeitszeit');
$gd = new zeitaufzeichnung_gd();
$gd->load($uid, $next_ss);
if ( ! $gd->uid )
{
echo '<br><br><h3>Zustimmung für '.$next_ss.': ';
echo '<input type="radio" name="selbstverwaltete-pause" value="yes">ja';
echo '<input type="radio" name="selbstverwaltete-pause" value="no">nein';
echo '</h3><br><br><input type="submit" name="submit" value="'.$p->t('global/speichern').'" style="float: right"><br>';
}
else
{
$zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt';
echo '<br><br><h3>Zustimmung für '.$next_ss.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').'</h3>';
}
//var_dump($gd);
?>
</p>
</form>
<br><hr>
</td>
</tr>
<?php endif; ?>
<tr>
<td>
<h1><?php echo $p->t('zeitwunsch/zeitwunsch');?></h1>
@@ -206,12 +274,16 @@ if(!$person->load($uid))
?>
</FORM>
<hr><?php
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
?>
</a>
<h3><?php echo $p->t('zeitwunsch/erklärung');?>:</h3>
<br>
<h2><?php echo $p->t('zeitwunsch/erklärung');?>:</h2>
<?php
$href = "<a href='zeitsperre_resturlaub.php' class='Item'>";
echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href));
?>
</a>
<P><?php echo $p->t('zeitwunsch/kontrollierenSieIhreZeitwuensche');?>!<BR><BR>
</P>
<TABLE align=center>
+4
View File
@@ -245,4 +245,8 @@ define('CIS_LVMENUE_CUTLENGTH', 21);
// Gibt an, auf welche Seite TicketIds ala #1234 im Jahresplan verlinkt werden zB zur Verlinkung in Bugtracker
define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketNumber=');
//Gibt an ob der Block zu Verplanung in geteilter Arbeitszeit bei den Zeitwünschen angezeigt wird. Default: false
define('CIS_ZEITWUNSCH_GD', false);
?>
+126
View File
@@ -0,0 +1,126 @@
<?php
/**
* FH-Complete
*
* @package FHC-API
* @author FHC-Team
* @copyright Copyright (c) 2016, fhcomplete.org
* @license GPLv3
* @link http://fhcomplete.org
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
/**
* Klasse Zeitaufzeichnung Geteilte Dienste
* @create 13-06-2019
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class zeitaufzeichnung_gd extends basis_db
{
public $new; // boolean
public $result = array(); // object array
// Table columns
public $zeitaufzeichnungs_gd_id; // integer
public $uid; // varchar(32)
public $studiensemester_kurzbz; // varchar(16)
public $selbstverwaltete_pause; // boolean
public $insertamum; // timestamp
public $insertvon; // varchar(32)
public $updateamum; // timestamp
public $updatevon; // varchar(32)
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
}
/**
* Loads entry for specific user and semester
* @return boolean True, if entry is found.
*/
public function load($user, $sem)
{
if ($user && $sem)
{
$qry = '
SELECT * FROM campus.tbl_zeitaufzeichnung_gd
WHERE uid = '.$this->db_add_param($user).
' AND studiensemester_kurzbz = ' . $this->db_add_param($sem) .
'limit 1';
if(!$this->db_query($qry))
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
if($row = $this->db_fetch_object())
{
$this->zeitaufzeichnung_gd_id = $row->zeitaufzeichnung_gd_id;
$this->uid = $row->uid;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->updateamum = $row->updateamum;
$this->updatevon = $row->updatevon;
$this->selbstverwaltete_pause = $this->db_parse_bool($row->selbstverwaltete_pause);
}
else
{
$this->errormsg = 'Es ist kein Datensatz vorhanden';
return false;
}
}
else
{
$this->errormsg = 'Falsche Parameterübergabe';
return false;
}
}
/**
* Saves decision about self-managing breaks during parted working times.
* @return boolean True, if saving succeeded.
*/
public function save()
{
if (is_string($this->uid) &&
is_string($this->studiensemester_kurzbz) &&
is_bool($this->selbstverwaltete_pause))
{
$qry = '
INSERT INTO campus.tbl_zeitaufzeichnung_gd (
uid,
studiensemester_kurzbz,
selbstverwaltete_pause,
insertvon
)
VALUES ('.
$this->db_add_param($this->uid). ', '.
$this->db_add_param($this->studiensemester_kurzbz). ', '.
$this->db_add_param($this->selbstverwaltete_pause, FHC_BOOLEAN). ', '.
$this->db_add_param($this->uid). '
);
';
if ($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der selbstverwalteten Pause';
return false;
}
}
else
{
$this->errormsg = 'Falsche Parameterübergabe';
return false;
}
}
}
+3 -2
View File
@@ -14,7 +14,7 @@ $this->phrasen['zeitwunsch/bedeutung']='Bedeutung';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='Hier möchte ich unterrichten';
$this->phrasen['zeitwunsch/hierKannIchUnterrichten']='Hier kann ich unterrichten';
$this->phrasen['zeitwunsch/nurInNotfaellen']='Hier unterrichte ich nur ungern';
$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='Hier kann ich gar nicht unterrichten';
$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='Hier kann ich gar nicht unterrichten';
$this->phrasen['zeitwunsch/folgendePunkteSindZuBeachten']='Folgende Punkte sind zu beachten';
$this->phrasen['zeitwunsch/verwendenSieDenWertNur']='Verwenden Sie den Wert -2 nur, wenn Sie zu dieser Stunde wirklich nicht können, um eine bessere Optimierung zu ermöglichen.';
$this->phrasen['zeitwunsch/sperrenSieNurTermine']='Markieren Sie mit den Werten -1 und -2 bitte nur Termine, die für die Lehre an der FH <u>nicht</u> in Frage kommen. <br/>Die Zeitsperren sind <u>nicht</u> dafür gedacht, bereits zugesagte Stunden für bestimmte Studiengänge zu reservieren.';
@@ -22,4 +22,5 @@ $this->phrasen['zeitwunsch/esSolltenFuerJedeStunde']='Es sollten für jede Stund
$this->phrasen['zeitwunsch/erklaerung']='Erklärung';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='Bei Problemen wenden Sie sich bitte an die';
$this->phrasen['zeitwunsch/profil']='Profil';
?>
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
?>
+3 -2
View File
@@ -14,7 +14,7 @@ $this->phrasen['zeitwunsch/bedeutung']='Meaning';
$this->phrasen['zeitwunsch/hierMoechteIchUnterrichten']='I would like to teach at this time';
$this->phrasen['zeitwunsch/hierKannIchUnterrichten']='I can teach at this time';
$this->phrasen['zeitwunsch/nurInNotfaellen']='I would prefer not to teach at this time';
$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='I can not at all teach at this time';
$this->phrasen['zeitwunsch/hierAufGarKeinenFall']='I can not at all teach at this time';
$this->phrasen['zeitwunsch/folgendePunkteSindZuBeachten']='Please note:';
$this->phrasen['zeitwunsch/verwendenSieDenWertNur']='To make a better optimization possible, please only use the value of -2 if you really can not teach at this time.';
$this->phrasen['zeitwunsch/sperrenSieNurTermine']='Please only mark times where you are absolutely <u>not</u> available to teach at the UAS with the numbers 1 and 2. <br/>Do <u>not</u> mark times for specific courses that you have already been assigned to teach at the UAS as unavailable.';
@@ -22,4 +22,5 @@ $this->phrasen['zeitwunsch/esSolltenFuerJedeStunde']='The amount of preferred te
$this->phrasen['zeitwunsch/erklaerung']='Explanation';
$this->phrasen['zeitwunsch/beiProblemenWendenSieSichAn']='If you are having problems, please contact the ';
$this->phrasen['zeitwunsch/profil']='Profile';
?>
$this->phrasen['zeitwunsch/geteilteArbeitszeit']='Ich bin mit der Verplanung meiner Lehre in getrennten Blöcken am Tagesrand einverstanden.';
?>
+82
View File
@@ -2938,6 +2938,87 @@ if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM bis.tbl_orgfo
}
}
// Create SEQUENCE tbl_zeitaufzeichnung_gd_id
if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_zeitaufzeichnung_gd_id_seq'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = '
CREATE SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Created sequence: campus.tbl_zeitaufzeichnung_gd_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO web;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO web;';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on campus.tbl_zeitaufzeichnung_gd_id_seq';
// GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO vilesci;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE campus.tbl_zeitaufzeichnung_gd_id_seq TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd_id_seq '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on campus.tbl_zeitaufzeichnung_gd_id_seq';
}
}
// Create TABLE campus.tbl_zeitaufzeichnung_gd
if(!@$db->db_query("SELECT 0 FROM campus.tbl_zeitaufzeichnung_gd WHERE 0 = 1")) {
$qry = '
CREATE TABLE campus.tbl_zeitaufzeichnung_gd
(
zeitaufzeichnung_gd_id integer NOT NULL DEFAULT NEXTVAL(\'campus.tbl_zeitaufzeichnung_gd_id_seq\'::regclass),
uid varchar(32) NOT NULL,
studiensemester_kurzbz varchar(16) NOT NULL,
selbstverwaltete_pause boolean NOT NULL,
insertamum TIMESTAMP DEFAULT NOW(),
insertvon varchar(32),
updateamum TIMESTAMP,
updatevon varchar(32)
);
ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT pk_zeitaufzeichnung_gd_zeitaufzeichnung_gd_id PRIMARY KEY (zeitaufzeichnung_gd_id);
ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT fk_zeitaufzeichnung_gd_uid FOREIGN KEY (uid) REFERENCES public.tbl_benutzer(uid) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT fk_zeitaufzeichnung_gd_studiensemester_kurzbz FOREIGN KEY (studiensemester_kurzbz) REFERENCES public.tbl_studiensemester(studiensemester_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
ALTER TABLE campus.tbl_zeitaufzeichnung_gd ADD CONSTRAINT uk_zeitaufzeichnung_gd_uid_stsem UNIQUE (uid, studiensemester_kurzbz);
COMMENT ON TABLE campus.tbl_zeitaufzeichnung_gd IS \'Table to manage the lectors parted working times; gd = Geteilte Dienste\';
COMMENT ON COLUMN campus.tbl_zeitaufzeichnung_gd.selbstverwaltete_pause IS \'Lectors (dis-)agreement to self-manage breaks\';
';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '</strong><br>';
else
echo '<br>Created table campus.tbl_zeitaufzeichnung_gd';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO web;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO web;';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on campus.tbl_zeitaufzeichnung_gd';
// GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO vilesci;
$qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE campus.tbl_zeitaufzeichnung_gd TO vilesci;';
if (!$db->db_query($qry))
echo '<strong>campus.tbl_zeitaufzeichnung_gd ' . $db->db_last_error() . '</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> on campus.tbl_zeitaufzeichnung_gd';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -3022,6 +3103,7 @@ $tabellen=array(
"campus.tbl_veranstaltung" => array("veranstaltung_id","titel","beschreibung","veranstaltungskategorie_kurzbz","inhalt","start","ende","freigabevon","freigabeamum","updateamum","updatevon","insertamum","insertvon"),
"campus.tbl_veranstaltungskategorie" => array("veranstaltungskategorie_kurzbz","bezeichnung","bild","farbe"),
"campus.tbl_zeitaufzeichnung" => array("zeitaufzeichnung_id","uid","aktivitaet_kurzbz","projekt_kurzbz","start","ende","beschreibung","oe_kurzbz_1","oe_kurzbz_2","insertamum","insertvon","updateamum","updatevon","ext_id","service_id","kunde_uid"),
"campus.tbl_zeitaufzeichnung_gd" => array("zeitaufzeichnung_gd_id","uid","studiensemester_kurzbz","selbstverwaltete_pause","insertamum","insertvon","updateamum","updatevon"),
"campus.tbl_zeitsperre" => array("zeitsperre_id","zeitsperretyp_kurzbz","mitarbeiter_uid","bezeichnung","vondatum","vonstunde","bisdatum","bisstunde","vertretung_uid","updateamum","updatevon","insertamum","insertvon","erreichbarkeit_kurzbz","freigabeamum","freigabevon"),
"campus.tbl_zeitsperretyp" => array("zeitsperretyp_kurzbz","beschreibung","farbe"),
"campus.tbl_zeitwunsch" => array("stunde","mitarbeiter_uid","tag","gewicht","updateamum","updatevon","insertamum","insertvon"),