echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; require_once '../config/vilesci.config.inc.php'; require_once '../include/functions.inc.php'; require_once '../include/benutzerberechtigung.class.php'; require_once '../include/projekt.class.php'; require_once '../include/datum.class.php'; $rdf_url = 'http://www.technikum-wien.at/projekt/'; if (isset($_GET['oe'])) { $oe = $_GET['oe']; } else { $oe = null; } $projekt_obj = new projekt(); if (isset($_REQUEST['filter'])) { if ($_REQUEST['filter'] == '') { $projekt_obj->getProjekte($oe); } if ($_REQUEST['filter'] == 'aktuell') { $projekt_obj->getProjekteAktuell(false, $oe); } if ($_REQUEST['filter'] == 'kommende') { $projekt_obj->getProjekteAktuell(true, $oe); } } else { $projekt_obj->getProjekte($oe); } //var_dump($projekt_obj); $datum_obj = new datum(); echo ' <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
/** * * Zeichnet den Chart für alle Projekte einer Übergebenen Organisationseinheit */ function getOeGantt() { global $oe; global $studienjahr; global $ansicht; $projekt = new projekt(); if (!$projekt->getProjekte($oe)) { die('Keine gültige OE übergeben.'); } $datum = new datum(); $widthPerWeek = 16; $startX = 50; $startY = 90; // KW in der 28.12 liegt ist letzte KW $datum_gesamt = $studienjahr . '-12-28'; $timestamp_gesamt = $datum->mktime_fromdate($datum_gesamt); $kw_gesamt = date('W', $timestamp_gesamt); // kommt auf Anzahl der Phasen an $height = count($projekt->result) * 50; // Zeichne Kalenderjahr -> beginnend mit KW 1 if ($ansicht == 'kalenderjahr') { echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">'; echo '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 750 700"> <rect x="' . $startX . '" y="' . $startY . '" width="' . $kw_gesamt * $widthPerWeek . '" height="' . $height . '" style="color:#000000;fill:none;stroke:#e1e1e1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />'; // Überschriften echo '<text x="25%" y="40" style="font-size:33px">Projekte Kalenderjahr: ' . $studienjahr . '</text>'; echo '<text x="' . ($startX - 10) . '" y="' . ($startY - 5) . '" style="font-size:13px" text-anchor="end"> KW:</text>'; // Zeichne Raster for ($i = 1; $i <= $kw_gesamt; $i++) { $x1 = $startX + $i * $widthPerWeek; echo '<line x1="' . $x1 . '" y1="' . $startY . '" x2="' . $x1 . '" y2="' . ($height + $startY) . '" style="stroke:#e1e1e1; stroke-width:2px;" />'; if ($i % 2 == 1) { echo '<text x="' . ($x1 - $widthPerWeek) . '" y="' . ($startY - 5) . '" style="font-size:13px">' . $i . '</text>'; } } // aktuelle KW markieren $timestamp_now = time(); $kw_now = kalenderwoche($timestamp_now); $year_now = date("Y", $timestamp_now); if ($year_now == $studienjahr) { $x = $startX + $kw_now * $widthPerWeek - $widthPerWeek / 2; echo '<line x1="' . $x . '" y1="' . ($startY - 20) . '" x2="' . $x . '" y2="' . ($height + $startY + 20) . '" style="stroke:red; stroke-width:4px;" />'; } $i = 0; foreach ($projekt->result as $projekt) { $width = 0; $x = 0; // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 if ($projekt->beginn != '' && $projekt->ende != '') { $timestamp_beginn = $datum->mktime_fromdate($projekt->beginn); $timestamp_end = $datum->mktime_fromdate($projekt->ende); $kw_beginn = kalenderwoche($timestamp_beginn); $kw_end = kalenderwoche($timestamp_end); // kw soll bei 0 zu zeichnen beginnen $kw_beginn = $kw_beginn - 1; $kw_end = $kw_end - 1; $year_beginn = date("Y", $timestamp_beginn); $year_end = date("Y", $timestamp_end); // phase beginnt und endet im Jahr if ($year_end == $year_beginn && $year_beginn == $studienjahr) { $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + $kw_beginn * $widthPerWeek; } else { if ($year_beginn == $studienjahr && $year_end > $year_beginn) { $width = ($kw_gesamt - $kw_beginn) * $widthPerWeek; $x = $startX + $kw_beginn * $widthPerWeek; } else { if ($year_beginn < $studienjahr && $year_end > $studienjahr) { $width = $kw_gesamt * $widthPerWeek; $x = $startX; } else { if ($year_beginn < $studienjahr && $year_end == $studienjahr) { $width = ($kw_end + 1) * $widthPerWeek; $x = $startX; } } } } } // zeichne balken echo '<rect x="' . $x . '" y="' . ($startY + 10 + $i * 50) . '" width ="' . $width . '" height ="30" fill="' . $projekt->farbe . '" stroke="black" />'; echo '<text x="' . ($startX - 10) . '" y="' . ($startY + 30 + $i * 50) . '" style="font-size:15px" text-anchor="end">' . htmlspecialchars($projekt->titel) . '</text>'; // Zeichne Phasen in Projektbalken $projektphasen = new projektphase(); $projektphasen->getProjektphasen($projekt->projekt_kurzbz); foreach ($projektphasen->result as $phase) { $width = 0; $x = 0; // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 if ($phase->start != '' && $phase->ende != '') { $timestamp_beginn = $datum->mktime_fromdate($phase->start); $timestamp_end = $datum->mktime_fromdate($phase->ende); $kw_beginn = kalenderwoche($timestamp_beginn); $kw_end = kalenderwoche($timestamp_end); // kw soll bei 0 zu zeichnen beginnen $kw_beginn = $kw_beginn - 1; $kw_end = $kw_end - 1; $year_beginn = date("Y", $timestamp_beginn); $year_end = date("Y", $timestamp_end); // phase beginnt und endet im Jahr if ($year_end == $year_beginn && $year_beginn == $studienjahr) { $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + $kw_beginn * $widthPerWeek; } else { if ($year_beginn == $studienjahr && $year_end > $year_beginn) { $width = ($kw_gesamt - $kw_beginn) * $widthPerWeek; $x = $startX + $kw_beginn * $widthPerWeek; } else { if ($year_beginn < $studienjahr && $year_end > $studienjahr) { $width = $kw_gesamt * $widthPerWeek; $x = $startX; } else { if ($year_beginn < $studienjahr && $year_end == $studienjahr) { $width = ($kw_end + 1) * $widthPerWeek; $x = $startX; } } } } } // zeichne phasenbalken echo '<rect x="' . $x . '" y="' . ($startY + 10 + $i * 50) . '" width ="' . $width . '" height ="10" fill="' . $phase->farbe . '" stroke="black" />'; } $i++; } echo '<text x="10%" y="' . (($i + 1) * 50 + $startY) . '" style="font-size:16px">Organisationseinheit: ' . htmlspecialchars($projekt->oe_kurzbz) . '</text>'; echo '</svg>'; } else { if ($ansicht == 'studienjahr') { echo '<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">'; echo '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 750 700">'; // Überschriften echo '<text x="25%" y="40" style="font-size:33px">Projekte Studienjahr: ' . $studienjahr . '/' . ($studienjahr + 1) . '</text>'; echo '<text x="' . ($startX - 10) . '" y="' . ($startY - 5) . '" style="font-size:13px" text-anchor="end"> KW:</text>'; // WS $year_old = $studienjahr . '-09-01'; $timestamp_old = $datum->mktime_fromdate($year_old); $kw_old = kalenderwoche($timestamp_old); // SS $year_new = $studienjahr + 1 . '-09-01'; $timestamp_new = $datum->mktime_fromdate($year_new); $kw_new = kalenderwoche($timestamp_new); // gesamtanzahl der KWs im Studienjahr $y = 0; // Zeichne Raster studienjahr WS for ($i = $kw_old; $i <= $kw_gesamt; $i++) { $x1 = $startX + $y * $widthPerWeek; echo '<line x1="' . $x1 . '" y1="' . $startY . '" x2="' . $x1 . '" y2="' . ($height + $startY) . '" style="stroke:#e1e1e1; stroke-width:2px;" />'; if ($y % 2 == 0) { echo '<text x="' . $x1 . '" y="' . ($startY - 5) . '" style="font-size:13px">' . $i . '</text>'; } $y++; } // Zeichne Raster studienjahr SS for ($i = 1; $i <= $kw_new; $i++) { $x1 = $startX + $y * $widthPerWeek; echo '<line x1="' . $x1 . '" y1="' . $startY . '" x2="' . $x1 . '" y2="' . ($height + $startY) . '" style="stroke:#e1e1e1; stroke-width:2px;" />'; if ($y % 2 == 0) { echo '<text x="' . $x1 . '" y="' . ($startY - 5) . '" style="font-size:13px">' . $i . '</text>'; } $y++; } echo '<rect x="' . $startX . '" y="' . $startY . '" width="' . $y * $widthPerWeek . '" height="' . $height . '" style="color:#000000;fill:none;stroke:#e1e1e1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />'; $i = 0; foreach ($projekt->result as $projekt) { $width = 0; $x = 0; // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 if ($projekt->beginn != '' && $projekt->ende != '') { $timestamp_beginn = $datum->mktime_fromdate($projekt->beginn); $timestamp_end = $datum->mktime_fromdate($projekt->ende); $kw_beginn = kalenderwoche($timestamp_beginn); $kw_end = kalenderwoche($timestamp_end); $kw_beginn = $kw_beginn; $kw_end = $kw_end; $startSS = $kw_gesamt - $kw_old; $year_beginn = date("Y", $timestamp_beginn); $year_end = date("Y", $timestamp_end); $test = 0; // phase beginnt und endet im WS if ($year_end == $year_beginn && $year_beginn == $studienjahr && $kw_beginn >= $kw_old) { $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 1; } // phase beginnt und endet im SS if ($year_end == $year_beginn && $year_beginn == $studienjahr + 1 && $kw_beginn >= 1 && $kw_end <= $kw_new) { if ($kw_end == 1) { // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt $kw_end = $kw_new; } $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 2; } else { if ($year_beginn == $studienjahr && $year_end == $studienjahr + 1 && $kw_beginn >= $kw_old && $kw_end <= $kw_new) { $width = ($kw_gesamt - $kw_beginn + $kw_end + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 3; } else { if ($year_beginn == $studienjahr && $kw_beginn <= $kw_old && ($year_end == $studienjahr + 1 && $kw_end >= $kw_new || $year_end > $studienjahr + 1)) { $width = $y * $widthPerWeek; $x = $startX; $test = 4; } else { if ($year_beginn < $studienjahr && $year_end > $studienjahr + 1) { $width = $y * $widthPerWeek; $x = $startX; $test = 5; } else { if (($year_beginn == $studienjahr && $kw_beginn < $kw_old || $year_beginn < $studienjahr) && ($year_end == $studienjahr && $kw_end >= $kw_old)) { $width = ($kw_end - $kw_old + 1) * $widthPerWeek; $x = $startX; $test = 6; } else { if (($year_beginn == $studienjahr && $kw_beginn < $kw_old || $year_beginn < $studienjahr) && ($year_end == $studienjahr + 1 && $kw_end <= $kw_new)) { if ($kw_end == 1) { // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt $kw_end = $kw_new; } $width = ($kw_gesamt - $kw_old + $kw_end + 1) * $widthPerWeek; $x = $startX; $test = 7; } else { if ($year_beginn == $studienjahr && $kw_beginn >= $kw_old && ($year_end == $studienjahr + 1 && $kw_end > $kw_new)) { $width = ($kw_gesamt - $kw_beginn + $kw_new + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 8; } else { if ($year_beginn == $studienjahr && $kw_beginn > $kw_old && $year_end > $studienjahr + 1) { $width = ($kw_gesamt - $kw_beginn + $kw_new + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 9; } else { if ($year_beginn == $studienjahr + 1 && $kw_beginn <= $kw_new && ($year_end == $studienjahr + 1 && ($kw_end > $kw_new || $kw_end == 1))) { $width = ($y - $kw_beginn - $startSS) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 10; } else { if ($year_beginn == $studienjahr + 1 && $kw_beginn <= $kw_new && $year_end > $studienjahr + 1) { $width = ($y - $kw_beginn - $startSS) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 11; } } } } } } } } } } } // zeichne balken //echo "test:".$test.$projekt->titel."jahr".$studienjahr; echo '<rect x="' . $x . '" y="' . ($startY + 10 + $i * 50) . '" width ="' . $width . '" height ="30" fill="' . $projekt->farbe . '" stroke="black" />'; echo '<text x="' . ($startX - 10) . '" y="' . ($startY + 30 + $i * 50) . '" style="font-size:15px" text-anchor="end">' . htmlspecialchars($projekt->titel) . '</text>'; // Zeichne Phasen in Projektbalken $projektphasen = new projektphase(); $projektphasen->getProjektphasen($projekt->projekt_kurzbz); foreach ($projektphasen->result as $phase) { $width = 0; $x = 0; // wenn kein start oder ende angegeben -> nichts zeichnen -> width=0 if ($phase->start != '' && $phase->ende != '') { $timestamp_beginn = $datum->mktime_fromdate($phase->start); $timestamp_end = $datum->mktime_fromdate($phase->ende); $kw_beginn = kalenderwoche($timestamp_beginn); $kw_end = kalenderwoche($timestamp_end); $kw_beginn = $kw_beginn; $kw_end = $kw_end; $startSS = $kw_gesamt - $kw_old; $year_beginn = date("Y", $timestamp_beginn); $year_end = date("Y", $timestamp_end); $test = 0; // phase beginnt und endet im WS if ($year_end == $year_beginn && $year_beginn == $studienjahr && $kw_beginn >= $kw_old) { $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 1; } // phase beginnt und endet im SS if ($year_end == $year_beginn && $year_beginn == $studienjahr + 1 && $kw_beginn >= 1 && $kw_end <= $kw_new) { if ($kw_end == 1) { // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt $kw_end = $kw_new; } $width = ($kw_end - $kw_beginn + 1) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 2; } else { if ($year_beginn == $studienjahr && $year_end == $studienjahr + 1 && $kw_beginn >= $kw_old && $kw_end <= $kw_new) { $width = ($kw_gesamt - $kw_beginn + $kw_end + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 3; } else { if ($year_beginn == $studienjahr && $kw_beginn <= $kw_old && ($year_end == $studienjahr + 1 && $kw_end >= $kw_new || $year_end > $studienjahr + 1)) { $width = $y * $widthPerWeek; $x = $startX; $test = 4; } else { if ($year_beginn < $studienjahr && $year_end > $studienjahr + 1) { $width = $y * $widthPerWeek; $x = $startX; $test = 5; } else { if (($year_beginn == $studienjahr && $kw_beginn < $kw_old || $year_beginn < $studienjahr) && ($year_end == $studienjahr && $kw_end >= $kw_old)) { $width = ($kw_end - $kw_old + 1) * $widthPerWeek; $x = $startX; $test = 6; } else { if (($year_beginn == $studienjahr && $kw_beginn < $kw_old || $year_beginn < $studienjahr) && ($year_end == $studienjahr + 1 && $kw_end <= $kw_new)) { if ($kw_end == 1) { // es kann auch sein dass 31.12 des kalenderjahres schon in der 1. KW liegt $kw_end = $kw_new; } $width = ($kw_gesamt - $kw_old + $kw_end + 1) * $widthPerWeek; $x = $startX; $test = 7; } else { if ($year_beginn == $studienjahr && $kw_beginn >= $kw_old && ($year_end == $studienjahr + 1 && $kw_end > $kw_new)) { $width = ($kw_gesamt - $kw_beginn + $kw_new + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 8; } else { if ($year_beginn == $studienjahr && $kw_beginn > $kw_old && $year_end > $studienjahr + 1) { $width = ($kw_gesamt - $kw_beginn + $kw_new + 1) * $widthPerWeek; $x = $startX + ($kw_beginn - $kw_old) * $widthPerWeek; $test = 9; } else { if ($year_beginn == $studienjahr + 1 && $kw_beginn <= $kw_new && ($year_end == $studienjahr + 1 && ($kw_end > $kw_new || $kw_end == 1))) { $width = ($y - $kw_beginn - $startSS) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 10; } else { if ($year_beginn == $studienjahr + 1 && $kw_beginn <= $kw_new && $year_end > $studienjahr + 1) { $width = ($y - $kw_beginn - $startSS) * $widthPerWeek; $x = $startX + ($kw_beginn + $startSS) * $widthPerWeek; $test = 11; } } } } } } } } } } } // zeichne balken echo '<rect x="' . $x . '" y="' . ($startY + 10 + $i * 50) . '" width ="' . $width . '" height ="10" fill="' . $phase->farbe . '" stroke="black" />'; } $i++; } echo '<text x="10%" y="' . (($i + 1) * 50 + $startY) . '" style="font-size:16px">Organistationseinheit: ' . $projekt->oe_kurzbz . '</text>'; // aktuelle KW markieren $timestamp_now = time(); $kw_now = kalenderwoche($timestamp_now); $year_now = date("Y", $timestamp_now); if ($year_now == $studienjahr && $kw_now > $kw_old) { $x = $startX + ($kw_now - $kw_old) * $widthPerWeek - $widthPerWeek / 2; echo '<line x1="' . $x . '" y1="' . ($startY - 20) . '" x2="' . $x . '" y2="' . ($height + $startY + 20) . '" style="stroke:red; stroke-width:4px;" />'; } else { if ($year_now == $studienjahr + 1 && $kw_now < $kw_new) { $x = $startX + ($kw_now + $kw_gesamt - $kw_old + 1) * $widthPerWeek - $widthPerWeek / 2; echo '<line x1="' . $x . '" y1="' . ($startY - 20) . '" x2="' . $x . '" y2="' . ($height + $startY + 20) . '" style="stroke:red; stroke-width:4px;" />'; } } echo '</svg>'; } } }
$oRdf->obj[$idx]->setAttribut('projekt_kurzbz', $phase->projekt_kurzbz); $oRdf->obj[$idx]->setAttribut('projektphase_fk', $phase->projektphase_fk); $oRdf->obj[$idx]->setAttribut('bezeichnung', $phase->bezeichnung); $oRdf->obj[$idx]->setAttribut('beschreibung', $phase->beschreibung); $oRdf->obj[$idx]->setAttribut('start', $phase->start); $oRdf->obj[$idx]->setAttribut('ende', $phase->ende); $oRdf->obj[$idx]->setAttribut('budget', $phase->budget); $oRdf->obj[$idx]->setAttribut('personentage', $phase->personentage); $oRdf->obj[$idx]->setAttribut('farbe', $phase->farbe); $oRdf->obj[$idx]->setAttribut('typ', $phase->typ); $oRdf->addSequence($phase->projektphase_id); } } else { $projekt_obj = new projekt(); if (!isset($_REQUEST['filter'])) { $projekt_obj->getProjekte(); } else { if ($_REQUEST['filter'] == 'aktuell') { $projekt_obj->getProjekteAktuell(); } else { if ($_REQUEST['filter'] == 'kommende') { $projekt_obj->getProjekteAktuell(true); } } } $projektphase_obj = new projektphase(); $sequenzProjektphase = array(); $descr = ''; $sequenz = ''; $lastOE = null; for ($i = 0; $i < count($projekt_obj->result); $i++) {