Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2017-12-20 10:38:57 +01:00
73 changed files with 5327 additions and 630 deletions
+46 -28
View File
@@ -26,12 +26,12 @@ require_once('../../../include/phrasen.class.php');
require_once('../../../include/person.class.php');
$user = get_uid();
$sprache = getSprache();
$sprache = getSprache();
$p=new phrasen($sprache);
//$rechte = new benutzerberechtigung();
//$rechte->getBerechtigungen($user);
//if(!$rechte->isBerechtigt('basis/service'))
// die('Sie haben keine Berechtigung fuer diese Seite');
@@ -42,7 +42,7 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title>'.$p->t("services/service").'</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
@@ -50,20 +50,36 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<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 type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>';
// Load Addons to get Moodle_Path
$addon_obj = new addon();
if ($addon_obj->loadAddons())
{
if (count($addon_obj->result) > 0)
{
foreach ($addon_obj->result as $row)
{
if (file_exists('../../../addons/'.$row->kurzbz.'/config.inc.php'))
include_once('../../../addons/'.$row->kurzbz.'/config.inc.php');
}
}
}
echo '
<script type="text/javascript">
$(document).ready(function()
{
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[0,0],[1,0]],
widgets: [\'zebra\']
});
}
});
}
);
function ContentPopUp (Adresse)
function ContentPopUp (Adresse)
{
Content = window.open(Adresse, "Content", "width=800,height=500,scrollbars=yes");
Content.focus();
@@ -82,28 +98,29 @@ echo '<SELECT name="oe_kurzbz">
<OPTION value="">-- '.$p->t("global/alle").' --</OPTION>';
$oe = new organisationseinheit();
//$oe->getAll();
$oe->loadArray($oe->getChilds('Infrastruktur'),'bezeichnung');
$oe->getAll();
//$oe->loadArray($oe->getChilds('Infrastruktur'),'bezeichnung');
foreach($oe->result as $row)
{
if($row->oe_kurzbz==$oe_kurzbz)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$row->oe_kurzbz.'" '.$selected.'>'.$row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung.'</OPTION>';
$serv_tmp = new service();
if($serv_tmp->getServicesOrganisationseinheit($row->oe_kurzbz, true))
{
if (! empty($serv_tmp->result))
echo '<OPTION value="'.$row->oe_kurzbz.'" '.$selected.'>'.$row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung.'</OPTION>';
}
}
echo '</SELECT>
<input type="submit" value="'.$p->t("services/filtern").'" />
</form>';
if($oe_kurzbz!='')
{
// Wenn der OE keine Services zugeteilt sind, dann die Services der untergeordneten OE laden
if($service->getServicesOrganisationseinheit($oe_kurzbz, true))
if (empty($service->result))
if(!$service->getSubServicesOrganisationseinheit($oe_kurzbz,'oe_kurzbz,bezeichnung',true))
die($service->errormsg);
$service->getServicesOrganisationseinheit($oe_kurzbz);
}
else
{
@@ -117,8 +134,6 @@ echo '<table class="tablesorter" id="myTable">
<th>'.$p->t("global/bezeichnung").'</th>
<th>'.$p->t("services/leistung").'</th>
<th>'.$p->t("services/design").'</th>
<th>'.$p->t("services/betrieb").'</th>
<th>'.$p->t("services/operativ").'</th>
<th>'.$p->t("services/details").'</th>
</tr>
</thead>
@@ -126,7 +141,7 @@ echo '<table class="tablesorter" id="myTable">
foreach($service->result as $row)
{
if ($row->content_id!='')
if ($row->content_id != '' || $row->ext_id != '')
{
$person = new person();
$person->getPersonFromBenutzer($row->design_uid);
@@ -139,12 +154,15 @@ foreach($service->result as $row)
$operativ = $person->nachname.' '.$person->vorname;
echo '<tr>';
echo '<td>',$row->oe_kurzbz,'</td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">'.$row->bezeichnung.'</a>':$row->bezeichnung).'</td>';
echo '<td><b>'.$row->bezeichnung.'</b></td>';
echo '<td>',$row->beschreibung,'</td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->design_uid.'">',$design,'</a></nobr></td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->betrieb_uid.'">',$betrieb,'</a></nobr></td>';
echo '<td><nobr><a href="../profile/index.php?uid='.$row->operativ_uid.'">',$operativ,'</a></nobr></td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">Details</a>':'').'</td>';
//echo '<td><nobr><a href="../profile/index.php?uid='.$row->betrieb_uid.'">',$betrieb,'</a></nobr></td>';
//echo '<td><nobr><a href="../profile/index.php?uid='.$row->operativ_uid.'">',$operativ,'</a></nobr></td>';
echo '<td>'.($row->content_id!=''?'<a href="../../../cms/content.php?content_id='.$row->content_id.'">Details</a>':'');
if (defined("ADDON_MOODLE_PATH"))
echo ' '.($row->ext_id!=''?'<a href="'.ADDON_MOODLE_PATH.'course/view.php?id='.$row->ext_id.'" target="_blank">Beschreibung</a>':'');
echo '</td>';
echo '</tr>';
}
}
@@ -152,4 +170,4 @@ echo '</tbody>
</table>
</body>
</html>';
?>
?>
@@ -305,9 +305,9 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
// Kalenderanzeige Erzeugen
$showHTML='';
$showHTML.='<table class="tabcontent">';
for ($iTmpMonat=$iTmpMinMonate;$iTmpMonat<=$iTmpMaxMonate;$iTmpMonat++)
{
// Je Monat begin der Woche und Ende KW ermitteln
@@ -374,17 +374,17 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
$iTmpMinKW=(isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][0])?$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][0]:1);
$iTmpMaxKW=(isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])?$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])-1]:1);
for ($iTmpWochenIndex=0;$iTmpWochenIndex<count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat]);$iTmpWochenIndex++)
{
if (!isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex]))
{
echo "<br>".$p->t('eventkalender/wochenindexWurdeNichtGefunden',array($iTmpWochenIndex))."<br>";
break;
break;
}
$iTmpWoche=$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex];
$nowWeek=(int)date("W", mktime(0,0,0,date("m"),date("d"),date("y")));
// Fuer alle WochenTage das Script Anzeige,Verstecken erzeugen
@@ -401,7 +401,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
// Wochenzeile Start
$showHTML.='<tr>';
// Die KW hat keine Daten - Initialisieren mit Array
if (!isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['Woche'][$iTmpMonat][$iTmpWoche]))
{
@@ -437,7 +437,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
{
if (!isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag]))
continue;
$iTmpTimeStamp=$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag];
if (isset($veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTag'][$iTmpWoche][$iTmpTag]))
@@ -577,7 +577,7 @@ function jahresplan_veranstaltungskategorie_kalenderanzeige($veranstaltung,$wart
$showHTML.='</div>';
$showHTML.='</td>';
$showHTML.='</tr></table></td>';
} // 7 Tage Container Ende
$showHTML.='</tr>';
}
@@ -643,7 +643,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpInitDay=mktime(0, 0, 0, $iTmpMonat ,(1 - ($iTmpTagNr==0?7:$iTmpTagNr)) + 1, $Jahr);
if (empty($iTmpInitDay))
die("<p>Fehler bei Monat $iTmpZwMonat ,Tag (1 - ($iTmpTagNr==0?7:$iTmpTagNr) )+1, Jahr $Jahr </p>");
}
// KalenderInit
@@ -659,7 +659,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpZwWochentag=(int)date('w',$iTmpInitDay);
$iTmpZwWochentagname=date('D',$iTmpInitDay);
$iTmpZw_jjjjmmtt=date('Ymd',$iTmpInitDay);
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag]=$iTmpInitDay;
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestampDatum'][$iTmpWoche][$iTmpTag]=$iTmpZw_jjjjmmtt;
$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTag'][$iTmpWoche][$iTmpZwWochentag]=array();
@@ -668,7 +668,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
$iTmpMinKW=1;
}
for ($iTmpWoche=$iTmpMinKW;$iTmpWoche<=$iTmpMaxKW;$iTmpWoche++)
{
$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][]=$iTmpWoche;
@@ -689,8 +689,8 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
}
}
$veranstaltung_next=$veranstaltung_tabelle;
if (count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat])<4)
{
die('Es wurden keine Wochen gefunden? '.__FILE__.' Parameter Line: '.__LINE__);
@@ -698,18 +698,18 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
for ($iTmpWochenIndex=0;$iTmpWochenIndex<count($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat]);$iTmpWochenIndex++)
{
if (!isset($veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex]))
{
echo "<br>".$p->t('eventkalender/wochenindexWurdeNichtGefunden',array($iTmpWochenIndex))."<br>";
break;
break;
}
$iTmpWoche=$veranstaltung_kalender[$Jahr]['VerarbeitenWochen'][$iTmpMonat][$iTmpWochenIndex];
// Keine weitere Vearbeitungen mehr noetig
if (!is_array($veranstaltung_next) || count($veranstaltung_next)<1)
continue;
for ($iTmpTag=0;$iTmpTag<7;$iTmpTag++)
{
$iTmpInitDay=$veranstaltung_kalender[$Jahr][$iTmpMonat]['WochenTimestamp'][$iTmpWoche][$iTmpTag];
@@ -727,7 +727,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
// es werden nur mehr die Tage die noch nicht verarbeitet sind im next gemerkt
$veranstaltung=$veranstaltung_next;
$veranstaltung_next=array();
reset($veranstaltung);
for ($iTmpVeranstaltung=0;$iTmpVeranstaltung<count($veranstaltung);$iTmpVeranstaltung++)
{
@@ -751,7 +751,7 @@ function jahresplan_veranstaltungskategorie_kalendererzeugen($veranstaltung_tabe
} // Ende For Woche
}
}
return $veranstaltung_kalender;
}
@@ -900,7 +900,7 @@ global $p;
// Erzeugen PopUp URL fuer Entfernen
// Url
$cTmpScriptWartung=' onclick="if (!confirm(\' '.$p->t('eventkalender/wollenSieWirklichIdXYloeschen',array($veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id)).' ?\')) {return false;} ; callWindows(\'jahresplan_veranstaltung.php?work=del&amp;veranstaltung_id='.$veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id.'\',\'Veranstaltung_Loeschen\');" ';
// Loeschen Icon und Text
$showHTML.='<td id="jh_va_delrow'.$iTmpZehler.'" '.$cTmpScriptWartung.'>
<img title="ID '.$veranstaltung_tabelle[$iTmpZehler]->veranstaltung_id.' '.$p->t("global/entfernen").' '.$veranstaltung_tabelle[$iTmpZehler]->titel.'" height="14px" src="../../../skin/images/date_delete.png" alt="entfernen Veranstaltung" border="0">
@@ -1097,4 +1097,34 @@ function jahresplan_date_to_timestamp($string="")
}
return $cTmpWert;
}
?>
function printlinks($text)
{
// Volle Links
$pattern = '~[a-z]+://\S+~';
if($num_found = preg_match_all($pattern, $text, $out))
{
foreach($out[0] as $link)
{
echo '<a href="'.$link.'" target="_blank">'.$link.'</a><br>';
}
}
if(defined('JAHRESPLAN_TICKET_LINK'))
{
// TicketsIds mit #1234
$pattern = '~\#[0-9]+~';
if($num_found = preg_match_all($pattern, $text, $out))
{
foreach($out[0] as $ticketnr)
{
$id = mb_substr($ticketnr,1);
$link = JAHRESPLAN_TICKET_LINK.$id;
echo '<a href="'.$link.'" target="_blank">'.$link.'</a><br>';
}
}
}
}
?>
@@ -20,60 +20,60 @@
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
#-------------------------------------------------------------------------------------------
/*
#-------------------------------------------------------------------------------------------
/*
* Veranstaltungsdaten - Pflege
*
* Aktionen: Anzeige, Anlage, Aenderung und Loeschen
* Ansicht : Voll oder Popup (window.opener)
* Ansicht : Voll oder Popup (window.opener)
*
* Zusatz : Reservierungsinformationen
* koennen im Veranstaltungszeitraum dazu gefuegt werden
*
* Zusatz : Reservierungsinformationen
* koennen im Veranstaltungszeitraum dazu gefuegt werden
*
*
*/
// ---------------- CIS Include Dateien einbinden
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
// ---------------- Datenbank-Verbindung
// ---------------- Datenbank-Verbindung
include_once('../../../include/person.class.php');
include_once('../../../include/benutzer.class.php');
include_once('../../../include/benutzerberechtigung.class.php');
// ---------------- Jahresplan Classe und Allg.Funktionen
// ---------------- Jahresplan Classe und Allg.Funktionen
include_once('../../../include/jahresplan.class.php');
include_once('jahresplan_funktionen.inc.php');
if (!$is_wartungsberechtigt)
die($p->t("global/keineBerechtigungFuerDieseSeite")).('<a href="javascript:history.back()">'.$p->t("global/zurueck").'</a>');
// ------------------------------------------------------------------------------------------
// Init
// ------------------------------------------------------------------------------------------
$error='';
$error='';
// ------------------------------------------------------------------------------------------
// Request Parameter
// Request Parameter
// ------------------------------------------------------------------------------------------
// Parameter Veranstaltungskategorie
$veranstaltungskategorie_kurzbz=trim((isset($_REQUEST['veranstaltungskategorie_kurzbz']) ? $_REQUEST['veranstaltungskategorie_kurzbz']:''));
// Parameter Veranstaltung
$veranstaltung_id=trim((isset($_REQUEST['veranstaltung_id']) ? $_REQUEST['veranstaltung_id']:''));
$work=trim((isset($_REQUEST['work']) ? $_REQUEST['work']:''));
// ------------------------------------------------------------------------------------------
// Datenlesen fuer Anzeige
// a) verarbeiten wenn Request Parameter 'work' - save(update) oder del
// b) alle Veranstaltung lesen
if (!empty($work))
{
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
$Jahresplan->freigabe=($is_wartungsberechtigt?false:true);
if ($work=='save')
@@ -113,18 +113,18 @@
if (window.opener && !window.opener.closed) {
if (confirm("Soll die Hauptseite neu aufgebaut werden?")) {
window.opener.location.reload();
}
}
}
-->
</script>
';
}
}
if ($work=='del')
{
if(!$veranstaltung=$Jahresplan->deleteVeranstaltung($veranstaltung_id))
{
{
$error=$p->t("global/fehlerBeimLoeschenDesEintrags").$Jahresplan->errormsg;
}
else
@@ -137,34 +137,34 @@
if (window.opener && !window.opener.closed) {
if (confirm("'.$p->t("eventkalender/sollDieHauptseiteNeuAufgebautWerden").'?")) {
window.opener.location.reload();
}
}
this.close();
}
-->
</script>
';
</script>
';
}
}
}
// ------------------------------------------------------------------------------------------
// Kategorie - Daten lesen fuer Kategorieselect
// Kategorie - Daten lesen fuer Kategorieselect
// Veranstaltungskategorien ohne Selektionsbedingung
// ------------------------------------------------------------------------------------------
$Jahresplan->InitVeranstaltungskategorie();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
if (!$veranstaltungskategorie=$Jahresplan->loadVeranstaltungskategorie())
die($Jahresplan->errormsg);
// ------------------------------------------------------------------------------------------
// Daten lesen fuer Anzeige der
// Veranstaltungen mit Selektionsbedingung
// ------------------------------------------------------------------------------------------
if (!empty($veranstaltung_id))
{
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->InitVeranstaltung();
// Nur Berechtigte duerfen auch noch nicht freigegebene Sehen
$Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true);
$Jahresplan->freigabe=($is_wartungsberechtigt?false:true);
@@ -175,7 +175,7 @@
if ($veranstaltungen=$Jahresplan->loadVeranstaltung())
{
$veranstaltungen=jahresplan_funk_veranstaltung_extend($veranstaltungen);
while (list($key, $value) = each($veranstaltungen))
while (list($key, $value) = each($veranstaltungen))
{
$veranstaltung[$key]=$value;
}
@@ -187,16 +187,16 @@
die($Jahresplan->errormsg);
}
// Plausib
if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"]))
if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"]))
{
$work='new';
}
}
}
else // Reload ohne Datenverarbeitung , die Aufrufparameter in die Datentabelle uebertragen fuer Value der Inputfelder
{
$veranstaltung=$_REQUEST;
}
?>
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
@@ -208,11 +208,11 @@
</script>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
<!--
form {display:inline;}
label {text-align:right;}
iframe {display:inline;width: 100%;border:0px;}
.cursor_hand {cursor:pointer;vertical-align: top;white-space : nowrap;}
.ausblenden {display:none;}
.footer_zeile {color: silver;}
@@ -220,153 +220,153 @@
</style>
<script language="JavaScript1.2" type="text/javascript">
<!--
function PruefeDatum(Datum,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge, tageMonat;
Laenge=Datum.length;
var datum_int = new Date();
function PruefeDatum(Datum,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge, tageMonat;
Laenge=Datum.length;
var datum_int = new Date();
if (!parseInt(Startjahr) || Startjahr<1000)
{
{
Startjahr = datum_int.getFullYear();
Startjahr = Startjahr - 1;
}
Startjahr = Startjahr - 1;
}
if (!parseInt(Endjahr) || Endjahr<1000)
{
Endjahr = datum_int.getFullYear();
Endjahr = Endjahr +1;
}
if (Laenge==10 && Datum.substring(2,3)=="." && Datum.substring(5,6)==".")
{
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
if (Monat==4 || Monat==6 || Monat==9 || Monat==11)
{
tageMonat=30;
}
else if (Monat==1 || Monat==3 || Monat==5 || Monat==7 || Monat==8
|| Monat==10 || Monat==12)
{
tageMonat=31;
}
else if(Monat==2 && Jahr%4==0 && Jahr%100!=0 || Jahr%400==0)
{
tageMonat=29;
}
else if(Monat==2 && Jahr%4!=0 || Jahr%100==0 && Jahr%400!=0)
{
tageMonat=28;
}
if (Tag>=1 && Tag<=tageMonat && Monat>=1 && Monat<=12 && Jahr>=Startjahr && Jahr<=Endjahr)
{
return true;
}
else
{
if (Laenge==10 && Datum.substring(2,3)=="." && Datum.substring(5,6)==".")
{
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
if (Monat==4 || Monat==6 || Monat==9 || Monat==11)
{
tageMonat=30;
}
else if (Monat==1 || Monat==3 || Monat==5 || Monat==7 || Monat==8
|| Monat==10 || Monat==12)
{
tageMonat=31;
}
else if(Monat==2 && Jahr%4==0 && Jahr%100!=0 || Jahr%400==0)
{
tageMonat=29;
}
else if(Monat==2 && Jahr%4!=0 || Jahr%100==0 && Jahr%400!=0)
{
tageMonat=28;
}
if (Tag>=1 && Tag<=tageMonat && Monat>=1 && Monat<=12 && Jahr>=Startjahr && Jahr<=Endjahr)
{
return true;
}
else
{
if (Tag<1 || Tag>tageMonat)
//alert("Kein gueltiges Datum - Tag ("+ Tag +" >1 und <"+ tageMonat+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
//alert("Kein gueltiges Datum - Tag ("+ Tag +" >1 und <"+ tageMonat+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else if (Monat<1 || Monat>12)
//alert("Kein gueltiges Datum - Monat ("+ Monat +"> 1 und <12 ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else if (Jahr<Startjahr || Jahr>Endjahr )
//alert("Kein gueltiges Datum - Jahr ("+ Jahr +"> "+Startjahr+" und <"+Endjahr+" ) Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
else
//alert("Kein gueltiges Datum!\nBitte Datum "+ Datum +" in der Form: TT.MM.JJJJ eingeben!");
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
return false;
}
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>");
return false;
}
}
function TimestampDatumZeit(Datum,Zeit,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge,Stunde,Minute;
Laenge=Zeit.length;
var datum = new Date();
var Endjahr = datum.getYear();
function TimestampDatumZeit(Datum,Zeit,Startjahr,Endjahr)
{
var Datum, Tag, Monat, Jahr, Laenge,Stunde,Minute;
Laenge=Zeit.length;
var datum = new Date();
var Endjahr = datum.getYear();
Endjahr = Endjahr +10;
var Startjahr = datum.getYear();
Startjahr = Startjahr - 10;
Startjahr = Startjahr - 10;
if (!PruefeDatum(Datum,Startjahr,Endjahr))
return false;
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
if (Laenge==5 && Zeit.substring(2,3)==":")
{
Stunde=parseInt(Zeit.substring(0,2),10);
Minute=parseInt(Zeit.substring(3,5),10);
}
else if (Laenge==4 && Zeit.substring(1,2)==":")
{
Stunde=parseInt(Zeit.substring(0,1),10);
Minute=parseInt(Zeit.substring(2,4),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
Tag=parseInt(Datum.substring(0,2),10);
Monat=parseInt(Datum.substring(3,5),10);
Jahr=parseInt(Datum.substring(6,10),10);
if (Laenge==5 && Zeit.substring(2,3)==":")
{
Stunde=parseInt(Zeit.substring(0,2),10);
Minute=parseInt(Zeit.substring(3,5),10);
}
else if (Laenge==4 && Zeit.substring(1,2)==":")
{
Stunde=parseInt(Zeit.substring(0,1),10);
Minute=parseInt(Zeit.substring(2,4),10);
}
else
{
alert("<?php echo $p->t("eventkalender/keinGueltigesDatum");?>!");
return false;
}
Monat=Monat-1;
//if (Monat<1) Monat=1;
var timestamp = (new Date(Jahr,Monat,Tag,Stunde,Minute).getTime()/1000);
var timestamp = (new Date(Jahr,Monat,Tag,Stunde,Minute).getTime()/1000);
return timestamp;
}
var InfoWin;
var InfoWin;
function callWindows(url,nameID)
{
// width=(Pixel) - erzwungene Fensterbreite
// height=(Pixel) - erzwungene Fensterh&ouml;he
// resizable=yes/no - Gr&ouml;&szlig;e fest oder ver&auml;nderbar
// scrollbars=yes/no - fenstereigene Scrollbalken
// toolbar=yes/no - fenstereigene Buttonleiste
// status=yes/no - fenstereigene Statuszeile
// directories=yes/no - fenstereigene Directory-Buttons (Netscape)
// menubar=yes/no - fenstereigene Men&uuml;leiste
// location=yes/no - fenstereigenes Eingabe-/Auswahlfeld f&uuml;r URLs
// width=(Pixel) - erzwungene Fensterbreite
// height=(Pixel) - erzwungene Fensterh&ouml;he
// resizable=yes/no - Gr&ouml;&szlig;e fest oder ver&auml;nderbar
// scrollbars=yes/no - fenstereigene Scrollbalken
// toolbar=yes/no - fenstereigene Buttonleiste
// status=yes/no - fenstereigene Statuszeile
// directories=yes/no - fenstereigene Directory-Buttons (Netscape)
// menubar=yes/no - fenstereigene Men&uuml;leiste
// location=yes/no - fenstereigenes Eingabe-/Auswahlfeld f&uuml;r URLs
if (InfoWin) {
InfoWin.close();
}
InfoWin=window.open(url,nameID,"copyhistory=no,directories=no,location=no,dependent=no,toolbar=yes,menubar=no,status=no,resizable=yes,scrollbars=yes, width=800,height=800,left=60, top=15");
InfoWin=window.open(url,nameID,"copyhistory=no,directories=no,location=no,dependent=no,toolbar=yes,menubar=no,status=no,resizable=yes,scrollbars=yes, width=800,height=800,left=60, top=15");
InfoWin.focus();
InfoWin.setTimeout("window.close()",800000);
}
if (!window.opener || window.opener.closed) {
document.write('<h1>&nbsp;<?php echo $p->t("eventkalender/veranstaltungBearbeiten");?>&nbsp;</h1> [&nbsp;<a href="index.php"><?php echo $p->t("eventkalender/veranstaltungen");?></a>&nbsp;|&nbsp;<a href="jahresplan_veranstaltung.php"><?php echo $p->t("eventkalender/veranstaltungBearbeiten");?></a>&nbsp;|&nbsp;<a href="jahresplan_kategorie.php"><?php echo $p->t("eventkalender/kategorie");?></a>&nbsp;]&nbsp;<?php echo $userNAME; ?><br/><br/>');
} else {
window.resizeTo(800,800);
}
-->
</script>
</script>
</head>
<body>
<?php
<?php
// Defaultwerte
$cTmpCheckHeute = date("d.m.Y", mktime(0,0,0,date("m"),date("d"),date("y")));
@@ -387,7 +387,7 @@
{
$veranstaltung['ende_timestamp']=$cTmpTimestampEnde;
}
// Wartungsmenue URL
$cTmpScriptWartungVeranstaltung='javascript:callWindows("jahresplan_veranstaltung.php?work=show&amp;veranstaltung_id=","Veranstaltung_Aenderung");';
$cTmpScriptWartungKategorie='javascript:callWindows("jahresplan_kategorie.php?work=show&amp;veranstaltungskategorie_kurzbz=","Kategorie_Aenderung");';
@@ -399,7 +399,7 @@
<form accept-charset="UTF-8" name="selVeranstaltung" target="_self" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<table cellpadding="10" cellspacing="0">
<tr>
<td><label for="veranstaltung_id">ID</label></td>
<td>
@@ -408,9 +408,9 @@
</td>
<td title="<?php echo $p->t("eventkalender/neuanlage")?> <?php echo date("d.m.Y",$veranstaltung['start_timestamp']);?>" class="cursor_hand" onclick="self.location.href='<?php echo $_SERVER['PHP_SELF'].'?start_timestamp='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:$cTmpTimestampStart).'&amp;ende_timestamp='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:$cTmpTimestampEnde) ;?>';" ><?php echo $p->t("eventkalender/neuanlage")?>&nbsp;<img border="0" alt="Neuanlage" src="../../../skin/images/date_add.png" ></td>
</tr>
<tr>
<td><label for="veranstaltung_id"><?php echo $p->t("eventkalender/kategorie")?></label></td>
<td><select name="veranstaltungskategorie_kurzbz">
@@ -424,12 +424,12 @@
// Check Space
$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz=trim($veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz);
$veranstaltungskategorie[$iTmpZehler]->bezeichnung=trim($veranstaltungskategorie[$iTmpZehler]->bezeichnung);
$cURL='jahresplan_bilder.php?time='.time().'&'.(strlen($veranstaltungskategorie[$iTmpZehler]->bild)<800?'heximg='.$veranstaltungskategorie[$iTmpZehler]->bild:'veranstaltungskategorie_kurzbz='.$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz);
$veranstaltungskategorie[$iTmpZehler]->bild_image='<img height="20" border="0" alt="Kategoriebild" titel="'.$veranstaltungskategorie[$iTmpZehler]->bezeichnung.'" src="'.$cURL.'">';
echo '<option '.(!empty($veranstaltungskategorie[$iTmpZehler]->farbe)?' style="background-color:#'.$veranstaltungskategorie[$iTmpZehler]->farbe.'" ':'').' '.(isset($veranstaltung['veranstaltungskategorie_kurzbz']) && $veranstaltung['veranstaltungskategorie_kurzbz']==$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz?' selected="selected" ':'').' value="'.$veranstaltungskategorie[$iTmpZehler]->veranstaltungskategorie_kurzbz.'">'.$veranstaltungskategorie[$iTmpZehler]->bezeichnung.'</option>';
}
}
}
?>
</select></td>
@@ -482,18 +482,30 @@
</select>
&nbsp;<?php echo $p->t("eventkalender/ganztaegigeVeranstaltung")?>
&nbsp;<input <?php echo ( ($veranstaltung['start_zeit']=='00:00' && $veranstaltung['ende_zeit']=='23:45')?' checked="checked" ':'' ); ?> type="checkbox" value="1" onclick="if (this.checked!=false) {window.document.selVeranstaltung.Zeit1.options.selectedIndex=0;window.document.selVeranstaltung.Zeit2.options.selectedIndex=(window.document.selVeranstaltung.Zeit2.options.length - 1); }; var time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum1.value,window.document.selVeranstaltung.Zeit1.value); if (time_stamp) {window.document.selVeranstaltung.start.value=time_stamp; }; time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum2.value,window.document.selVeranstaltung.Zeit2.value); if (time_stamp) {window.document.selVeranstaltung.ende.value=time_stamp; };" name="tmpGanztag" >
</td>
</tr>
</td>
</tr>
<tr>
<td><label for="beschreibung"><?php echo $p->t("global/titel")?></label></td>
<td><textarea rows="3" cols="80" id="beschreibung" name="beschreibung" onblur="if (this.value=='') {this.value=this.defaultValue;}" onfocus="if (this.value=='<?php echo constEingabeFehlt; ?>') { this.value='';}"><?php echo (isset($veranstaltung['beschreibung'])?$veranstaltung['beschreibung']:constEingabeFehlt);?></textarea></td>
</tr>
<td>
<textarea rows="3" cols="80" id="beschreibung" name="beschreibung" onblur="if (this.value=='') {this.value=this.defaultValue;}" onfocus="if (this.value=='<?php echo constEingabeFehlt; ?>') { this.value='';}"><?php echo (isset($veranstaltung['beschreibung'])?$veranstaltung['beschreibung']:constEingabeFehlt);?></textarea>
<?php
if(isset($veranstaltung['beschreibung']))
echo printlinks($veranstaltung['beschreibung']);
?>
</td>
</tr>
<tr>
<td><label for="inhalt"><?php echo $p->t("global/beschreibung")?></label></td>
<td><textarea rows="3" cols="80" id="inhalt" name="inhalt"><?php echo (isset($veranstaltung['inhalt'])?$veranstaltung['inhalt']:'');?></textarea></td>
</tr>
<td>
<textarea rows="3" cols="80" id="inhalt" name="inhalt"><?php echo (isset($veranstaltung['inhalt'])?$veranstaltung['inhalt']:'');?></textarea>
<?php
if(isset($veranstaltung['inhalt']))
echo printlinks($veranstaltung['inhalt']);
?>
</td>
</tr>
<tr>
<td>
<table>
@@ -521,7 +533,7 @@
</tr>
</table>
</td>
</tr>
</tr>
<tr class="ausblenden">
<td colspan="2">
<input type="Text" value="<?php echo (!isset($veranstaltung['insertvon']) || empty($veranstaltung['insertvon'])?$user:$veranstaltung['insertvon'] ); ?>" name="insertvon" >
@@ -548,12 +560,12 @@
<?php
echo '<p class="error">'.$error.'</p>';
$veranstaltung_id=(isset($veranstaltung['veranstaltung_id'])?$veranstaltung['veranstaltung_id']:$veranstaltung_id);
if (!empty($veranstaltung_id))
{
echo '<hr>'.jahresplan_veranstaltung_detail_user($veranstaltung,$is_wartungsberechtigt);
echo '<a href="javascript:callWindows(\'jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;openfirst=1&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'\',\'Reservierung\');">'.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.</a>';
echo '<a href="javascript:callWindows(\'jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;openfirst=1&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'\',\'Reservierung\');">'.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.</a>';
echo '<iframe id="reservierung" src="jahresplan_reservierung.php?veranstaltung_id='.$veranstaltung_id.'&amp;startDatum='.(isset($veranstaltung['start_timestamp'])?$veranstaltung['start_timestamp']:mktime(12,0,0,date("m"),date("d"),date("y"))).'&amp;endeDatum='.(isset($veranstaltung['ende_timestamp'])?$veranstaltung['ende_timestamp']:mktime(13,0,0,date("m"),date("d"),date("y"))).'"></iframe>';
}
else
@@ -562,4 +574,4 @@
}
?>
</body>
</html>
</html>
+51 -47
View File
@@ -17,12 +17,12 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Cristina Hainberger <hainberg@technikum-wien.at>
*
*
* Description: This file creates a studentlist with students' profile fotos
* by a given studiengangs- and lehrveranstaltungs ID (and eventually a given lehreinheit ID).
* If fotos are locked by student, a dummy picture is inserted instead of the students foto.
* EXCEPTION: if user has admins or assitents rights, ALL students' fotos are iserted (even locked ones)
*
*
*/
require_once('../../../config/cis.config.inc.php');
@@ -60,7 +60,7 @@ $lv->load($lvid);
$berechtigung = new benutzerberechtigung();
$berechtigung->getBerechtigungen($user);
if (!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') && !check_lektor_lehrveranstaltung($user, $lvid, $studiensemester))
die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen');
@@ -85,11 +85,11 @@ $qry = "SELECT DISTINCT ON
gruppe,
gruppe_kurzbz,
stg_typ
FROM
FROM
campus.vw_lehreinheit
WHERE
WHERE
lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . "
AND
AND
studiensemester_kurzbz=" . $db->db_add_param($studiensemester);
if ($lehreinheit != '')
$qry .= " AND lehreinheit_id=" . $db->db_add_param($lehreinheit, FHC_INTEGER);
@@ -111,8 +111,8 @@ if ($result = $db->db_query($qry)) {
if ($row->gruppe_kurzbz == '')
$gruppen_string = trim($row->kuerzel . '-' . $row->semester);
else
$gruppen_string = $row->gruppe_kurzbz;
$gruppen_string = $row->gruppe_kurzbz;
$gruppen_string_arr[] = $gruppen_string;
}
}
@@ -122,10 +122,10 @@ $studiengruppe = implode(", ", array_unique($gruppen_string_arr));
//get studiengangstyp-bezeichnung
$qry = "SELECT
bezeichnung
FROM
public.tbl_studiengangstyp
WHERE
bezeichnung
FROM
public.tbl_studiengangstyp
WHERE
typ =" . $db->db_add_param($stg_typ);
if ($result = $db->db_query($qry)) {
@@ -148,43 +148,43 @@ $data = array(
//**************************** students data *******************************
//load students-data
$qry = 'SELECT DISTINCT ON
(nachname, vorname, person_id)
vorname,
nachname,
(nachname, vorname, person_id)
vorname,
nachname,
matrikelnr,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.gruppe,
(SELECT
status_kurzbz
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id=tbl_student.prestudent_id
ORDER BY
(SELECT
status_kurzbz
FROM
public.tbl_prestudentstatus
WHERE
prestudent_id=tbl_student.prestudent_id
ORDER BY
datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status,
tbl_studiengang.kurzbz,
tbl_studiengang.typ,
tbl_bisio.bisio_id,
tbl_bisio.von,
tbl_bisio.bis,
tbl_bisio.bisio_id,
tbl_bisio.von,
tbl_bisio.bis,
tbl_student.studiengang_kz AS stg_kz_student,
tbl_zeugnisnote.note,
tbl_mitarbeiter.mitarbeiter_uid,
tbl_person.matr_nr,
tbl_person.geschlecht,
tbl_person.foto,
tbl_zeugnisnote.note,
tbl_mitarbeiter.mitarbeiter_uid,
tbl_person.matr_nr,
tbl_person.geschlecht,
tbl_person.foto,
tbl_person.foto_sperre
FROM
campus.vw_student_lehrveranstaltung
campus.vw_student_lehrveranstaltung
JOIN public.tbl_benutzer USING(uid)
JOIN public.tbl_person USING(person_id)
JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_student ON(uid=student_uid)
LEFT JOIN public.tbl_studiengang ON(tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz)
LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id
AND tbl_zeugnisnote.student_uid=tbl_student.student_uid
AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz)
LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid)
WHERE
@@ -214,7 +214,7 @@ if ($result = $db->db_query($qry)) {
while ($row = $db->db_fetch_object($result)) {
if ($row->status != 'Abbrecher' && $row->status != 'Unterbrecher') {
$anzahl_studierende++;
if ($row->status == 'Incoming') //Incoming
$zusatz = '(i)';
else
@@ -231,9 +231,9 @@ if ($result = $db->db_query($qry)) {
if ($row->stg_kz_student == $a_o_kz) //Außerordentliche Studierende
$zusatz .= '(a.o.)';
//allow admin and assistenz to see ALL fotos (even if locked by user)
if ($show_all_fotos)
if ($show_all_fotos)
$row->foto_sperre = 'f';
//create foto (if not locked by student OR if fotolist is created by admin or assistenz)
@@ -241,7 +241,7 @@ if ($result = $db->db_query($qry)) {
$foto_src = $row->foto;
$foto_url = sys_get_temp_dir() . '/foto' . trim($row->matrikelnr) . '.jpg';
$foto_url_arr[] = $foto_url;
//create writeable file
if (!$foto = fopen($foto_url, 'w'))
die("Das Bild konnte nicht erstellt werden");
@@ -250,15 +250,19 @@ if ($result = $db->db_query($qry)) {
{
die("Das Bild konnte nicht erstellt werden");
}
//add foto to document
$doc->addImage($foto_url, trim($row->matrikelnr) . '.jpg', 'image/jpg');
}
elseif ($row->foto == '')
{
{
$foto_url = '';
}
}
else
{
$foto_url = '';
}
//create studiengruppe
$student_studiengruppe = strtoupper($row->typ.$row->kurzbz.'-'.$row->semester);
@@ -268,7 +272,7 @@ if ($result = $db->db_query($qry)) {
'nachname' => mb_strtoupper($row->nachname, 'UTF-8'),
'personenkennzeichen' => trim($row->matrikelnr),
'geschlecht' => $row->geschlecht,
'foto_gesperrt' => $row->foto_sperre, // f/t
'foto_gesperrt' => $row->foto_sperre, // f/t
'foto_url' => $foto_url,
'studiengruppe' => $student_studiengruppe,
'verband' => trim($row->verband),
@@ -289,7 +293,7 @@ $doc->addDataArray($data, 'fotoliste');
//set doc name
$doc->setFilename('Fotoliste_'.$stg_bezeichnung.'_'.$studiensemester.'_'.$lv_bezeichnung);
//create doc in format required
//create doc in format required
if (!$doc->create($output))
die($doc->errormsg);
@@ -301,4 +305,4 @@ $doc->close();
//unlink fotos from tmp-folder
foreach ($foto_url_arr as $foto_url)
unlink($foto_url);
unlink($foto_url);
+75 -65
View File
@@ -16,8 +16,8 @@
* 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
* Karl Burkhart <karl.burkhart@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Karl Burkhart <karl.burkhart@technikum-wien.at>.
*/
require_once('../../config/cis.config.inc.php');
require_once('../../include/functions.inc.php');
@@ -29,20 +29,20 @@ $sprache = getSprache();
$p = new phrasen($sprache);
$uid = get_uid();
$db = new basis_db();
if(!isset($_REQUEST['grp']))
if (!isset($_REQUEST['grp']))
die('Falsche Parameter');
if(mb_strlen($_REQUEST['grp'])>32)
if (mb_strlen($_REQUEST['grp'])>32)
die('Grp ungueltig');
//Pruefen ob es eine gueltige Gruppe ist
$gruppe = new gruppe();
if(!$gruppe->exists($_REQUEST['grp']))
if (!$gruppe->exists($_REQUEST['grp']))
{
//Wenn es keine Gruppe in der DB ist, kann es
//noch ein Studierendenverteiler sein
//bif_std
if(!preg_match('/^\D\D\D_std$/', $_REQUEST['grp']))
if (!preg_match('/^\D\D\D_std$/', $_REQUEST['grp']))
{
die('Ungueltige Gruppe');
}
@@ -52,38 +52,35 @@ function mail_id_generator()
mt_srand((double)microtime()*1000000);
/* Laenge des Passwortes dem Zufall ueberlassen */
$length = 6; //mt_rand(6, 6);
$length = 6;
$fix_similar = '';
$valid_charset = "";
/* Stelle ein Charset zusammen */
if (!$valid_charset)
{
// deactivated, regarding an case sensitive issue
//$valid_charset .= 'ABCDEFGHIJKLMNOPQRSTUVXYZ';
$valid_charset .= 'abcdefghijklmnopqrstuvxyz';
$valid_charset .= '0123456789';
//$valid_charset .= '!@_-';
}
$charset_length = mb_strlen($valid_charset);
if ($charset_length == 0) return false;
/* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */
$mail_id = "";
while(strlen($mail_id) < $length)
{
/* Waehle einen zufaelligen char aus */
$char = $valid_charset[mt_rand(0, ($charset_length-1))];
/* Abgleich von gleich aussehenden chars */
if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char;
/* Stelle ein Charset zusammen */
if (!$valid_charset)
{
$valid_charset .= 'abcdefghijklmnopqrstuvxyz';
$valid_charset .= '0123456789';
}
return $mail_id;
$charset_length = mb_strlen($valid_charset);
if ($charset_length == 0) return false;
/* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */
$mail_id = '';
while (strlen($mail_id) < $length)
{
/* Waehle einen zufaelligen char aus */
$char = $valid_charset[mt_rand(0, ($charset_length-1))];
/* Abgleich von gleich aussehenden chars */
if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char;
}
return $mail_id;
}
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
echo '<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@@ -92,48 +89,61 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www
</head>
<body>';
if(isset($_REQUEST['token']) && isset($_REQUEST['grp']))
if (isset($_REQUEST['token']) && isset($_REQUEST['grp']))
{
echo '
<table class="tabcontent">
<tr>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/mailverteiler').'</font></td>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/status').'</font></td>
</tr>';
<tr>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/mailverteiler').'</font></td>
<td class="ContentHeader"><font class="ContentHeader">'.$p->t('mailverteiler/status').'</font></td>
</tr>';
/* Generate an random String */
$mail_id=mail_id_generator();
$mail_id = mail_id_generator();
/* call the shellpart at polyxena */
$command = "ssh -p 22022 root@polyxena sudo /root/bin/mlistin.sh " . $_REQUEST['grp'] . " " . $mail_id . " 2>&1";
exec($command);
/* Command to unlock Mailgroup */
$command = "ssh -i /etc/apache2/id_mail_provisioning mailadmins@bifrost2 ".$_REQUEST['grp'] . " " . $mail_id;
/* ffe, 20051020 - do a little logging */
$message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n";
$output = array();
exec($command, $output, $retval);
$filet = fopen(LOG_PATH.'.htmlistopen.log', "a");
fwrite($filet, $message, mb_strlen($message));
fclose($filet);
if ($retval === 0)
{
// Add Log Message
$message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n";
// for the users
echo "
<tr>
<td><a href='mailto:".$_REQUEST['grp'].$mail_id."@".DOMAIN."'>".$db->convert_html_chars($_REQUEST['desc'])."</a></td>
<td>".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")</td>
</tr>
<tr>
<td colspan='2'>
<p>".$p->t('mailverteiler/klickenZumSchicken')."</p>
$filet = fopen(LOG_PATH.'.htmlistopen.log', "a");
fwrite($filet, $message, mb_strlen($message));
fclose($filet);
<p>".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."</p>
</td>
</tr>
</table>
";
echo "
<tr>
<td><a href='mailto:".$_REQUEST['grp'].$mail_id."@".DOMAIN."'>".$db->convert_html_chars($_REQUEST['desc'])."</a></td>
<td>".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")</td>
</tr>
<tr>
<td colspan='2'>
<p>".$p->t('mailverteiler/klickenZumSchicken')."</p>
<p>".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."</p>
</td>
</tr>
";
}
else
{
echo '
<tr>
<td colspan="2">
'.$p->t('mailverteiler/oeffnenFehlgeschlagen').'
</td>
</tr>';
}
echo '</table>';
}
else
{
if($_REQUEST['grp']=="")
if ($_REQUEST['grp'] == '')
{
exit();
}
@@ -142,7 +152,7 @@ else
echo $p->t('mailverteiler/bestaetigeOeffnen',array($_REQUEST['grp']))." : <a href=\"".$_SERVER['SCRIPT_NAME']."?grp=".$_REQUEST['grp']."&desc=".$db->convert_html_chars($_REQUEST['desc'])."&token=1\">".$p->t('mailverteiler/bestaetige')."</a>";
}
}
echo '</body>
</html>';
?>
+66 -32
View File
@@ -19,8 +19,9 @@
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>
* Karl Burkhart <burkhart@technikum-wien.at>
* Manfred Kindl <kindlm@technikum.wien.at>.
* Manfred Kindl <kindlm@technikum.wien.at>
* Gerald Raab <raab@technikum-wien.at>
* Alexei Karpenko <karpenko@technikum-wien.at>
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
@@ -648,7 +649,6 @@ if(isset($_POST['save']) || isset($_POST['edit']) || isset($_POST['import']))
$service_id = '';
$kunde_uid = '';
}
}
}
@@ -719,13 +719,15 @@ if($projekt->getProjekteMitarbeiter($user, true))
$anzprojekte = count($projekt->result);
echo "<table width='100%'>
<tr>
<td>
<a href='".$_SERVER['PHP_SELF']."' style='font-size: larger;'>".$p->t("zeitaufzeichnung/neu")."</a>
&nbsp;
<a href='".$_SERVER['PHP_SELF']."?csvimport=1' style='font-size: larger;'>CSV Import</a>&nbsp;
<td>
<a href='".$_SERVER['PHP_SELF']."' style='font-size: larger;'>".$p->t("zeitaufzeichnung/neu")."</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
<a href='".$_SERVER['PHP_SELF']."?csvimport=1' style='font-size: larger;'>CSV Import</a><a style='font-size: larger; text-decoration: none; cursor: default'> | </a>
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>
</td>
<a href='".$_SERVER['PHP_SELF']."?csvexport=1' style='font-size: larger;'>CSV Export</a>";
if($anzprojekte > 0)
echo "<a style='font-size: larger; text-decoration: none; cursor: default'> | </a><a href='".$_SERVER['PHP_SELF']."?projektexport=1' style='font-size: larger;'>Projektexport</a>";
echo "</td>
<td class='menubox' height='10px'>";
if ($p->t("dms_link/handbuchZeitaufzeichnung")!='')
{
@@ -739,14 +741,68 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo "</td>
</tr>
</table>";
echo '<table>
<tr>
<td rowspan="2">';
echo '<table>';
if (isset($_GET['projektexport']))
{
$projektexpurl = dirname($_SERVER["PHP_SELF"]) .'/zeitaufzeichnung_projektliste.php';
$aktjahr = intval(date("Y"));
$aktmonat = intval(date("m")) - 1;
$jahreanz = 3;
echo '<form action="'.$projektexpurl.'" method="GET">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>Projektexport</td>';
echo '<td align="center">Monat: <select id="projexpmonat" name="projexpmonat">';
for($i=1;$i<13;$i++)
{
$selected = ($i == $aktmonat)?'selected = "selected"':'';
echo '<option value="'.$i.'" '.$selected.'>'.$monatsname[1][$i - 1].'</option>';
}
echo '</select></td>';
echo '<td align="center">Jahr: <select id="projexpjahr" name="projexpjahr">';
for(;$jahreanz>0;$jahreanz--)
{
echo '<option value="'.$aktjahr.'">'.$aktjahr.'</option>';
$aktjahr--;
}
echo '</select></td>';
echo '<td align="right"><input type="submit" value="Export" name="projexport"></td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '</form>';
}
//Formular
echo '<br><form action="'.$_SERVER['PHP_SELF'].'?zeitaufzeichnung_id='.$zeitaufzeichnung_id.'" method="POST" onsubmit="return checkdatum()" enctype="multipart/form-data">';
echo '<table>
/* echo '<table>
<tr>
<td rowspan="2">';
echo '<table>';
echo '<table>';*/
if (isset($_GET['csvimport']))
{
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Import</td><td colspan="2"><input type="file" name="csv" value="" /></td><td align="right"><input type="submit" value="Import" name="import"></td></tr>';
echo '<tr><td></td><td colspan="3">Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung</td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
}
else
echo '<input type="file" name="csv" value="" style="display:none">';
if (isset($_GET['csvexport']))
{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" onsubmit="return checkdatumCSVExp(\'exp_von_datum\', \'exp_bis_datum\')">';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Export</td>';
echo '<td>Startdatum: <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td align="right">Enddatum: <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td align="right"><input type="submit" value="Export" name="export"></td></tr>';
echo '<tr><td></td><td colspan="3"></td></tr>';
echo '<tr><td colspan="4"><hr></td></tr>';
echo '</form>';
}
//Projekte werden nicht angezeigt wenn es keine gibt
if($anzprojekte > 0)
{
@@ -948,14 +1004,6 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo '<input type="submit" value="'.$p->t("global/aendern").'" name="edit">&nbsp;&nbsp;';
echo '<input type="submit" value="'.$p->t("zeitaufzeichnung/alsNeuenEintragSpeichern").'" name="save"></td></tr>';
}
if (isset($_GET['csvimport']))
{
echo '<tr><td colspan="4"><hr></td></tr>';
echo '<tr><td>CSV-Import</td><td colspan="2"><input type="file" name="csv" value="" /></td><td align="right"><input type="submit" value="Import" name="import"></td></tr>';
echo '<tr><td></td><td colspan="3">Informationen zum Format der CSV-Datei s. Leitfaden Arbeitszeitaufzeichnung</td></tr>';
}
else
echo '<input type="file" name="csv" value="" style="display:none">';
echo '</table>';
echo '</td><td valign="top"><span id="zeitsaldo"></span><br><br><div id="monatsliste"></span></td></tr>';
@@ -998,20 +1046,6 @@ if($projekt->getProjekteMitarbeiter($user, true))
echo '</td></tr>';
echo '</table>';
echo '</form>';
if (isset($_GET['csvexport']))
{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST" onsubmit="return checkdatumCSVExp(\'exp_von_datum\', \'exp_bis_datum\')">';
echo '<table>';
echo '<tr><td colspan="5"><hr></td></tr>';
echo '<tr><td width = "18%">CSV-Export</td>';
echo '<td>Startdatum: <input class="datepicker_datum" id="exp_von_datum" name="exp_von_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('first day of previous month')).'" /></td>';
echo '<td width = "8%">&nbsp;</td>';
echo '<td>Enddatum: <input class="datepicker_datum" id="exp_bis_datum" name="exp_bis_datum" size="9" type="text" value="'.date('d.m.Y', strtotime('last day of previous month')).'" /></td>';
echo '<td align="right" width="23%"><input type="submit" value="Export" name="export"></td></tr>';
echo '<tr><td></td><td colspan="3"></td></tr>';
echo '</table>';
echo '</form>';
}
echo '<hr>';
echo '<h3>'.($alle===true?$p->t('zeitaufzeichnung/alleEintraege'):$p->t('zeitaufzeichnung/xTageAnsicht', array($angezeigte_tage))).'</h3>';
if ($alle===true)
@@ -0,0 +1,544 @@
<?php
/* Copyright (C) 2017 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: Alexei Karpenko <karpenko@technikum-wien.at>
*/
/**
* Creates a project list from the zeitaufzeichnung for a given user, month and year
* Shows total worktime (IST-Arbeitszeit without breaks or externe Lehre) for each workday
* together with sums of worktime and work package descriptions for each project.
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/globals.inc.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/Excel/excel.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
require_once('../../../include/projekt.class.php');
if (!isset($_GET['projexpmonat']))
die("Parameter monat fehlt");
if (!isset($_GET['projexpjahr']))
die("Parameter jahr fehlt");
$uid = get_uid();
$benutzer = new benutzer();
if (!$benutzer->load($uid))
die($p->t("zeitaufzeichnung/benutzerWurdeNichtGefunden", array($uid)));
$month = $_GET['projexpmonat'];
$year = $_GET['projexpjahr'];
$monthtext = $monatsname[1][$month - 1];
$username = $benutzer->vorname." ".$benutzer->nachname;
$mitarbeiter = new mitarbeiter();
$mitarbeiter->load($uid);
$persnr = $mitarbeiter->personalnummer;
$daysinmonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$date = new datum();
$ztauf = new zeitaufzeichnung();
$ztauf->getListeUserFromTo($uid, $year.'-'.$month.'-01', $year.'-'.$month.'-'.$daysinmonth);
//objects for one projectline of list (corresponds to one day)
$projectlines = [];
$dayStart = $dayEnd = '';
$projectnames = $tosubtract = $allpauseranges = [];
$toignore = ['Pause', 'LehreExtern'];
$ztaufdata = $ztauf->result;
$monthsums = [0 => 0.00];
//sprt list by startdate ascending (if not already done in zeitaufzeichnung class)
usort($ztaufdata, function ($ztaufa, $ztaufb)
{
$date = new datum();
return $date->mktime_fromtimestamp($ztaufa->start) - $date->mktime_fromtimestamp($ztaufb->start);
}
);
//fill projectlines with data
for ($i = 0; $i < sizeof($ztaufdata); $i++)
{
$ztaufrow = $ztaufdata[$i];
$day = intval($date->formatDatum($ztaufrow->ende, 'd'));
//first entry for a day
$isFirstEntry = !isset($projectlines[$day]);
//last entry for a day (next entry is different day)
$isLastEntry = !array_key_exists($i + 1, $ztaufdata) || intval($date->formatDatum($ztaufdata[$i + 1]->ende, 'd')) != $day;
if (in_array($ztaufrow->aktivitaet_kurzbz, $toignore))
{
$subtraction = new stdClass();
$subtraction->start = $ztaufrow->start;
$subtraction->ende = $ztaufrow->ende;
$subtraction->diff = $date->convertTimeStringToHours($ztaufrow->diff);
$subtraction->typ = $ztaufrow->aktivitaet_kurzbz;
$tosubtract[] = $subtraction;
//save all pause ranges
if($ztaufrow->aktivitaet_kurzbz == $toignore[0])
{
$prevpause = null;
if(sizeof($allpauseranges)>0)
{
$prevpause = $allpauseranges[sizeof($allpauseranges) - 1];
}
//first pause or no overlap to previous pause - add pauserange
if( is_null($prevpause ) || $prevpause->ende <= $ztaufrow->start )
{
$pauserange = new stdClass();
$pauserange->start = $ztaufrow->start;
$pauserange->ende = $ztaufrow->ende;
$allpauseranges[] = $pauserange;
}
//pause overlap - change pause ende
elseif($prevpause->ende > $ztaufrow->start )
{
$allpauseranges[sizeof($allpauseranges) - 1]->ende = $ztaufrow->ende;
}
}
}
if (($dayStart == '' || $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s')) > $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayStart = $ztaufrow->start;
if (($dayEnd == '' || $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) < $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1])
$dayEnd = $ztaufrow->ende;
if ($isFirstEntry)
{
$projectlines[$day] = new stdClass();
$projectlines[$day]->arbeitszeit = '';
$projectlines[$day]->projekte = [];
}
if (isset($ztaufrow->projekt_kurzbz))
{
//Project already in projectline - add to worktime and description
if (array_key_exists($ztaufrow->projekt_kurzbz, $projectlines[$day]->projekte))
{
$laststart =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->laststart;
$lastende =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->lastende;
$toadd = 0.00;
//case 1: there is no overlap, just add project time difference
if ($date->mktime_fromtimestamp($ztaufrow->start) > $date->mktime_fromtimestamp($lastende))
{
$toadd = $date->convertTimeStringToHours($ztaufrow->diff);
$laststart = $ztaufrow->start;
$lastende = $ztaufrow->ende;
$newprojecttime = new stdClass();
$newprojecttime->start = $ztaufrow->start;
$newprojecttime->ende = $ztaufrow->ende;
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten[] = $newprojecttime;
}
//case 2: overlap - add only part of the time
elseif ($date->mktime_fromtimestamp($ztaufrow->start) < $date->mktime_fromtimestamp($lastende) && $date->mktime_fromtimestamp($ztaufrow->ende) > $date->mktime_fromtimestamp($lastende))
{
$toadd = ($date->mktime_fromtimestamp($ztaufrow->ende) - $date->mktime_fromtimestamp($lastende)) / 3600;
$lastende = $ztaufrow->ende;
$alleZeiten =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten;
$index = count($alleZeiten);
$alleZeiten[$index-1]->ende = $ztaufrow->ende;
}
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->stunden += $toadd;
//concatenate descriptions "working packages" for each project
if (!empty($ztaufrow->beschreibung))
{
$packagecounter = ++$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->arbeitspakete;
if ($packagecounter == 1)
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->beschreibung = $ztaufrow->beschreibung;
else
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->beschreibung .= " | ".str_replace(array("\r\n", "\r", "\n"), " ", $ztaufrow->beschreibung);
}
}
else
{
//add new project to projectline
$newproject = new stdClass();
$newproject->laststart = $ztaufrow->start;
$newproject->lastende = $ztaufrow->ende;
$newprojecttime = new stdClass();
$newprojecttime->start = $ztaufrow->start;
$newprojecttime->ende = $ztaufrow->ende;
$newproject->alleZeiten = [];
$newproject->alleZeiten[] = $newprojecttime;
$newproject->stunden = $date->convertTimeStringToHours($ztaufrow->diff);
$newproject->arbeitspakete = 0;//counter for tracking number of descriptions (work packages)
$newproject->beschreibung = '';
if (!empty($ztaufrow->beschreibung))
{
$newproject->beschreibung = str_replace(array("\r\n", "\r", "\n"), " ", $ztaufrow->beschreibung);
$newproject->arbeitspakete++;
}
$projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz] = $newproject;
//add new project to array with unique project names
if (!in_array($ztaufrow->projekt_kurzbz, $projectnames))
$projectnames[] = $ztaufrow->projekt_kurzbz;
}
}
if ($isLastEntry)
{
$worktime_unix = $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) - $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s'));
$worktimehours = $worktime_unix / 3600;
$projectlines[$day]->arbeitszeit = $worktimehours;
$pauseSubtracted = 0.00;
$lehreExternExists = false;
//subtract Pauses and LehreExtern
foreach ($tosubtract as $subtraction)
{
if ($subtraction->typ == $toignore[0])
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$pauseSubtracted += $subtraction->diff;
}
elseif ($subtraction->typ == $toignore[1] && $subtraction->start >= $dayStart && $subtraction->ende <= $dayEnd)
{
$projectlines[$day]->arbeitszeit -= $subtraction->diff;
$lehreExternExists = true;
}
}
//subtract pauses from Project worktimes
foreach($allpauseranges as $pauserange)
{
foreach($projectlines[$day]->projekte as $name => $project)
{
foreach($projectlines[$day]->projekte[$name]->alleZeiten as $zeit)
{
if($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
break;
}
elseif($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($zeit->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600;
//break;
}
elseif($pauserange->ende > $zeit->start && $pauserange->ende< $zeit->ende)
{
$projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($zeit->start)) / 3600;
//break;
}
}
}
}
//worktime with no break greater 6 -> compulsory break of half an hour
if ($pauseSubtracted < 0.5 && !$lehreExternExists)
{
if ($projectlines[$day]->arbeitszeit >= 6.5)
$projectlines[$day]->arbeitszeit -= 0.5;
//ensure that no worktime gets smaller than 6 hours because of compulsory break
elseif ($projectlines[$day]->arbeitszeit > 6)
$projectlines[$day]->arbeitszeit -= $projectlines[$day]->arbeitszeit - 6;
}
$projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100;
foreach($projectlines[$day]->projekte as $name => $project)
{
$projecthours =& $projectlines[$day]->projekte[$name]->stunden;
$projecthours = floor($projecthours * 100) / 100;
if (array_key_exists($name, $monthsums))
$monthsums[$name] += $projecthours;
else
$monthsums[$name] = $projecthours;
}
$dayStart = $dayEnd = '';
$tosubtract = $allpauseranges = [];
$monthsums[0] += $projectlines[$day]->arbeitszeit;
}
}
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
// sending HTTP headers
$workbook->send("Projektliste_".$month."_".$year.".xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Projektliste");
$worksheet->setInputEncoding('utf-8');
// Define formats
$format_heading_left =& $workbook->addFormat();
$format_heading_left->setBold();
$format_heading_left->setAlign('center');
$format_heading_left->setAlign('vcenter');
$format_heading_left->setBottom(2);
$format_heading_left->setLeft(2);
$format_heading_left->setTop(2);
$format_heading_right =& $workbook->addFormat();
$format_heading_right->setBold();
$format_heading_right->setAlign('right');
$format_heading_right->setRight(2);
$format_heading_right->setTop(2);
$format_heading_right_bottomline =& $workbook->addFormat();
$format_heading_right_bottomline->setAlign('right');
$format_heading_right_bottomline->setRight(2);
$format_heading_right_bottomline->setBottom(2);
$format_bold_centered_toprightline =& $workbook->addFormat();
$format_bold_centered_toprightline->setBorder(1);
$format_bold_centered_toprightline->setBold();
$format_bold_centered_toprightline->setAlign('center');
$format_bold_centered_toprightline->setVAlign('vcenter');
$format_bold_centered_toprightline->setTop(2);
$format_bold_centered_toprightline->setRight(2);
$format_bold_centered_bottomline =& $workbook->addFormat();
$format_bold_centered_bottomline->setBorder(1);
$format_bold_centered_bottomline->setBold();
$format_bold_centered_bottomline->setAlign('center');
$format_bold_centered_bottomline->setVAlign('vcenter');
$format_bold_centered_bottomline->setBottom(2);
$format_bold_centered_bottomrightline =& $workbook->addFormat();
$format_bold_centered_bottomrightline->setBorder(1);
$format_bold_centered_bottomrightline->setBold();
$format_bold_centered_bottomrightline->setAlign('center');
$format_bold_centered_bottomrightline->setVAlign('vcenter');
$format_bold_centered_bottomrightline->setBottom(2);
$format_bold_centered_bottomrightline->setRight(2);
$format_bold_centered_alllines =& $workbook->addFormat();
$format_bold_centered_alllines->setBorder(2);
$format_bold_centered_alllines->setBold();
$format_bold_centered_alllines->setAlign('center');
$format_bold_centered_alllines->setVAlign('vcenter');
$format_cell_rightline =& $workbook->addFormat();
$format_cell_rightline->setBorder(1);
$format_cell_rightline->setVAlign('vcenter');
$format_cell_rightline->setRight(2);
$format_cell_centered =& $workbook->addFormat();
$format_cell_centered->setBorder(1);
$format_cell_centered->setAlign('center');
$format_cell_centered->setVAlign('vcenter');
$format_cell_centered_leftline =& $workbook->addFormat();
$format_cell_centered_leftline->setBorder(1);
$format_cell_centered_leftline->setAlign('center');
$format_cell_centered_leftline->setVAlign('vcenter');
$format_cell_centered_leftline->setLeft(2);
$format_cell_centered_rightline =& $workbook->addFormat();
$format_cell_centered_rightline->setBorder(1);
$format_cell_centered_rightline->setAlign('center');
$format_cell_centered_rightline->setVAlign('vcenter');
$format_cell_centered_rightline->setRight(2);
$format_cell_centered_topbottomleftline =& $workbook->addFormat();
$format_cell_centered_topbottomleftline->setBorder(1);
$format_cell_centered_topbottomleftline->setAlign('center');
$format_cell_centered_topbottomleftline->setVAlign('vcenter');
$format_cell_centered_topbottomleftline->setLeft(2);
$format_cell_centered_topbottomleftline->setBottom(2);
$format_cell_centered_topbottomleftline->setTop(2);
$format_cell_centered_topbottomrightline =& $workbook->addFormat();
$format_cell_centered_topbottomrightline->setBorder(1);
$format_cell_centered_topbottomrightline->setAlign('center');
$format_cell_centered_topbottomrightline->setVAlign('vcenter');
$format_cell_centered_topbottomrightline->setRight(2);
$format_cell_centered_topbottomrightline->setBottom(2);
$format_cell_centered_topbottomrightline->setTop(2);
$format_cell_centered_alllines =& $workbook->addFormat();
$format_cell_centered_alllines->setBorder(2);
$format_cell_centered_alllines->setAlign('center');
$format_cell_centered_alllines->setVAlign('vcenter');
//define column widths
$nrProjects = sizeof($projectnames);
$daywidth = 4;
$totalworktimewidth = 10;
$worktimewidth = 8;
$worksheet->setColumn(0, 1, $daywidth);
$worksheet->setColumn(2, 2, $totalworktimewidth);
//calculate max width for project descriptions
$maxwidthprojects = $totalworktimewidth * (12 - $nrProjects);
$projectcolumnwidths = array_fill_keys($projectnames, $worktimewidth);
//set project column width depending on project description widths
foreach ($projectlines as $line)
{
foreach ($line->projekte as $key => $project)
{
if ($projectcolumnwidths[$key] < strlen($project->beschreibung))
$projectcolumnwidths[$key] = strlen($project->beschreibung);
}
}
//distribute width remainder evenly among projects
if ($nrProjects != 0)
$remwidth = ($maxwidthprojects - array_sum($projectcolumnwidths)) / $nrProjects;
foreach ($projectcolumnwidths as $projectname => $width)
$projectcolumnwidths[$projectname] += $remwidth;
//calculating spaces for centering global header texts
$numberspaces = ($maxwidthprojects - 10 - strlen($username));
$spacesstringFirst = "";
while ($numberspaces > 0)
{
$spacesstringFirst .= " ";
$numberspaces--;
}
$numberspaces = ($maxwidthprojects - 14 - strlen($persnr));
$spacesstringSecond = "";
while ($numberspaces > 0)
{
$spacesstringSecond .= " ";
$numberspaces--;
}
$spalte = $zeile = 0;
//write global header
$lastspalte = ($nrProjects > 0) ? 2 + sizeof($projectnames) * 2 : 14;
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2);
$worksheet->write($zeile, $spalte, $monthtext." ".$year, $format_heading_left);
$worksheet->write($zeile + 1, $spalte, "", $format_heading_left);
$worksheet->setMerge($zeile, $spalte + 3, $zeile, $lastspalte);
$worksheet->setMerge($zeile + 1, $spalte + 3, $zeile + 1, $lastspalte);
$worksheet->write($zeile, $spalte + 3, "Projektliste gedruckt am:".$spacesstringFirst.$username, $format_heading_right);
$worksheet->write($zeile, $lastspalte, '', $format_heading_right);
$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.'Personal-Nr.:'.$persnr, $format_heading_right_bottomline);
$worksheet->write($zeile + 1, $lastspalte, '', $format_heading_right_bottomline);
$zeile += 3;
//general options
$worksheet->setLandscape();
$worksheet->hideGridlines();
$worksheet->hideScreenGridlines();
//write table header
$worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 1);
$worksheet->write($zeile, $spalte, "Tag", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte++, "", $format_bold_centered_alllines);
$worksheet->setMerge($zeile, ++$spalte, $zeile + 1, $spalte);
$worksheet->write($zeile, $spalte, "Arbeitszeit", $format_bold_centered_alllines);
$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines);
$spalte++;
foreach ($projectnames as $project)
{
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, $project, $format_bold_centered_toprightline);
$worksheet->write($zeile, $spalte + 1, "", $format_bold_centered_toprightline);
$worksheet->write($zeile + 1, $spalte, "Stunden", $format_bold_centered_bottomline);
$worksheet->write($zeile + 1, $spalte + 1, "Tätigkeit", $format_bold_centered_bottomrightline);
$spalte += 2;
}
$zeile += 2;
//write table body
for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++)
{
//write day and weekday
$spalte = 0;
$monthstr = ($month < 10) ? '0'.$month : $month;
$daystr = ($daysnmbr < 10) ? '0'.$daysnmbr : $daysnmbr;
$datestring = $year.'-'.$monthstr.'-'.$daystr;
$weekday = substr($tagbez[1][$date->formatDatum($datestring, 'N')], 0, 2);
$worksheet->write($zeile, $spalte++, $weekday, $format_cell_centered_leftline);
$worksheet->write($zeile, $spalte++, $daysnmbr, $format_cell_centered_rightline);
if (array_key_exists($daysnmbr, $projectlines))
{
//write worktime
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, ",", "."), $format_cell_centered_rightline);
$spaltetemp = $spalte;
//write projects
foreach ($projectnames as $project)
{
if (array_key_exists($project, $projectlines[$daysnmbr]->projekte))
{
$worksheet->setColumn($spalte, $spalte, $worktimewidth);
$worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, ",", "."), $format_cell_centered_leftline);
$worksheet->setColumn($spalte, $spalte, $projectcolumnwidths[$project]);
$worksheet->write($zeile, $spalte++, $projectlines[$daysnmbr]->projekte[$project]->beschreibung, $format_cell_rightline);
}
else
{
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_leftline);
$worksheet->write($zeile, $spalte++, '', $format_cell_rightline);
}
}
}
else
{
//write empty cells
$worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_rightline);
$toskip = sizeof($projectnames) * 2;
for ($i = 0; $i <= $toskip; $i++)
{
if ($i % 2 == 0)
$worksheet->write($zeile, $spalte++, '', $format_cell_centered_rightline);
else
$worksheet->write($zeile, $spalte++, '', $format_cell_centered);
}
}
$zeile++;
}
if ($nrProjects < 1)
//no projects - merge all cells and write notice
{
$worksheet->setMerge(3, 3, 4 + $daysinmonth, $lastspalte);
$worksheet->write(3, 3, "keine Projekte vorhanden", $format_bold_centered_alllines);
$worksheet->write(3, $lastspalte, "", $format_bold_centered_alllines);
}
//write monthly sums
$spalte = 0;
$worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1);
$worksheet->write($zeile, $spalte, 'Summe:', $format_bold_centered_alllines);
$spalte += 2;
$worksheet->write($zeile, $spalte++, number_format($monthsums[0], 2, ",", "."), $format_cell_centered_alllines);
foreach ($projectnames as $project)
{
$worksheet->write($zeile, $spalte++, number_format($monthsums[$project], 2, ",", "."), $format_cell_centered_topbottomleftline);
$worksheet->write($zeile, $spalte++, "", $format_cell_centered_topbottomrightline);
}
$worksheet->fitToPages(1, 1);
$workbook->close();