123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- <html>
- <head>
- </head>
- <body style="margin: 0px">
- <?php
- include 'config.php';
- ini_set('display_errors', 1);
- ini_set('display_startup_errors', 1);
- error_reporting(E_ALL);
-
- //http://www.justin-cook.com/2006/03/31/php-parse-a-string-between-two-strings/
- function get_string_between($string, $start, $end){
- $string = " ".$string;
- $ini = strpos($string,$start);
- if ($ini == 0) return "";
- $ini += strlen($start);
- $len = strpos($string,$end,$ini) - $ini;
- return substr($string,$ini,$len);
- }
-
- function startsWith ($string, $startString)
- {
- $len = strlen($startString);
- return (substr($string, 0, $len) === $startString);
- }
-
- //header('Content-type: image/svg+xml'); //does not play video
-
- $svg_file = file_get_contents(dirname(__DIR__, 1) . "/images/uploads/" . $_GET["___image___"]);
-
-
- $doc1 = new DOMDocument;
- $doc1->loadXML($svg_file);
- $xpath1 = new DOMXPath($doc1);
- $xpath1->registerNamespace('svg', 'http://www.w3.org/2000/svg');
-
-
-
- //prüfen ob exteranlImage dann wird dieses verwendet
- if(strlen($svg_file) < 400){
- $url = $xpath1->query("/svg:svg/svg:image/@href");
- $svg_file = file_get_contents($url[0]->nodeValue);
- }
-
-
-
- $doc = new DOMDocument;
- $doc->loadXML($svg_file);
- $xpath = new DOMXPath($doc);
- $xpath->registerNamespace('svg', 'http://www.w3.org/2000/svg');
-
-
- $root = $xpath->query("/*");
- $root[0]->setAttribute("viewBox", "0 0 1280 720");
-
- $widthq = $xpath->query("/*/@width");
- $heightq = $xpath->query("/*/@height");
-
-
- $root = $xpath->query("/*");
- $root[0]->setAttribute("viewBox", "0 0 ". $widthq[0]->nodeValue . " " . $heightq[0]->nodeValue);
- $widthq[0]->nodeValue = "100%";
- $heightq[0]->nodeValue = "100%";
-
-
- //Get all Text Nodes
- $style = $xpath->query('//svg:text');
- $keyValueStore=array();
- $keyValueStore2=array();
-
- //Get all rect nodes before text nodes and store them in key value store to access them for manipulation
- foreach ($style as $result) {
- $style2 = $xpath->query('./preceding-sibling::*[1]', $result);
- //echo $style2[0]->nodeName;
- //echo $result->nodeValue . " ";
- //get Rect
- foreach ($style2 as $result3) {
- //echo $result->nodeValue;
- //echo $result3->getAttribute('transform') . "<br>";
- $keyValueStore[$result->nodeValue] = $result3;
- $keyValueStore2[$result->nodeValue] = $result;
- }
- }
-
-
- $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https://" : "http://") . $_SERVER['HTTP_HOST']. dirname($_SERVER['PHP_SELF']) . "/TransformProductCode.php" . "?ProductCode=" . $_GET["ProductCode"] . "&Semantic=true";
-
-
- $json = file_get_contents($url);
- $asocarray = json_decode($json, true);
-
-
-
-
-
- //echo "Test für Perfomance:<br>";
-
- $curstation = $_GET["Station"];
-
-
-
- $allAssignmentsPattern=array();
- $allAssignmentsStation=array();
- $allAssignmentsText=array();
-
- //Einzelbilder vom Universal Storage laden
- foreach ($keyValueStore as $key => $value) {
-
- $keyorig = $key;
-
- $key = substr($key, 1);
- $keyarray = str_split($key, 2);
-
-
- if (startsWith($key, 'URL')) {
- echo "<iframe src='" . substr($key, 4) . "'style='position: absolute; left: " . $value->getAttribute('x')/12.80 ."%; top: " . $value->getAttribute('y')/7.20 ."%; width: " . $value->getAttribute('width')/12.80 . "%; height: " . $value->getAttribute('height')/7.20 . "%;'>";
- echo "</iframe>";
-
- }
-
- $fullfilename = "";
- $textentry = "";
- foreach($keyarray as $keypart){
- //only if all keyparts (Pb Sy Pk Of) can be found within the asociative array (Pb -> E, Sy -> X) the file can be linked otherwise there is a problem.
- if($keypart == "ID"){
- $fullfilename = $fullfilename . "_ID;" . substr($keyorig, strrpos($keyorig, "ID:") + 3);
- $textentry = substr($keyorig, strrpos($keyorig, "ID:") + 3);
- break;
-
- }
- else if(array_key_exists ($keypart, $asocarray)){
- $fullfilename = $fullfilename . "_" . $keypart . ";" . $asocarray[$keypart];
- }
- else{
- continue 2;
- }
- }
- $fullfilename = substr($fullfilename, 1);
- $fullfilename2 = $fullfilename;
- $fullfilename = $universalStorageEinzelbilder . "Station" . $curstation . "/Station". $curstation. "_" . $fullfilename . ".jpg";
-
-
-
- $url = realpath("./../../universal-storage/storage/Stationsbilder/Einzelbilder/" . "Station" . $curstation . "/Station". $curstation. "_" . $fullfilename2 . ".jpg");
- //if url does not exist check if symlink exists
-
-
- if(!$url) {
- $fullurl2 = "./../../universal-storage/storage/Stationsbilder/Einzelbilder/Symlinks/Station". $curstation. "_" . $fullfilename2 . ".jpg";
- $url = realpath($fullurl2);
- //echo "URL: " . $fullurl2;
-
-
-
- $fullfilename = $universalStorageEinzelbilder . "Symlinks/Station". $curstation. "_" . $fullfilename2 . ".jpg";
- }
-
-
-
- //echo "URL: " . $url . " filename" . $fullfilename . "<br>";
-
- //if Real image was not found search for Assignments
- //$file_headers = @get_headers($fullfilename);
- //if(!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found') {
- if(!$url) {
- //echo $fullfilename;
- //echo " Does not Exist <br>";
- //echo $key . " ";
- //echo json_encode($asocarray);
-
- $onlyUsedParts=array();
- foreach($asocarray as $keypart => $keyval){
-
- if(in_array($keypart, $keyarray)){
- array_push($onlyUsedParts, $keyval);
- }
- else{
- array_push($onlyUsedParts, "");
- }
- }
- //echo implode (".", $onlyUsedParts);
- //echo "<br>";
-
-
- array_push($allAssignmentsPattern, implode (".", $onlyUsedParts));
- array_push($allAssignmentsStation, $curstation);
- array_push($allAssignmentsText, $textentry);
-
- $fullfilename = $wasUrl . "server/assignments/search?pattern=". implode (".", $onlyUsedParts) ."&station=". $curstation ."&Text=" . $textentry;
- $json = json_decode(file_get_contents($fullfilename));
-
- if (isset($json[0])) {
- $fullfilename = $json[0];
- }
- else{
- continue;
- }
- }
- else{
- //echo $fullfilename;
- }
- //echo $fullfilename . "<br>";
-
- $element3 = $doc->createElement('pattern');
- $element3->setAttribute("id", $fullfilename);
- $element3->setAttribute("x", "0");
- $element3->setAttribute("y", "0");
- $element3->setAttribute("width", "1");
- $element3->setAttribute("height", "1");
-
-
- $element2 = $doc->createElement('image');
- $element2->setAttribute("x", "0");
- $element2->setAttribute("y", "0");
- $element2->setAttribute("width", $value->getAttribute('width'));
- $element2->setAttribute("height", $value->getAttribute('height'));
- $element2->setAttribute("xlink:href", $fullfilename);
-
-
- $element3->appendChild($element2);
- $parent = $doc->getElementsByTagName('defs')->item(0);
- $parent->appendChild($element3);
- $value->setAttribute("fill", "url(#". $fullfilename . ")");
-
-
- //override identifier to be empty
- $keyValueStore2[$keyorig]->nodeValue = "";
-
- }
-
- //$keyValueStore["*imga"]->setAttribute("fill", "#FFFFFF");
-
-
-
-
-
-
- /*
- $url = $wasUrl . "server/assignments/searchMultiple";
- $data = array('key1' => json_encode($allAssignmentsPattern), 'key2' => json_encode($allAssignmentsStation), 'key3' => json_encode($allAssignmentsText));
- // use key 'http' even if you send the request to https://...
- $options = array(
- 'http' => array(
- 'header' => "Content-type: application/x-www-form-urlencoded\r\n",
- 'method' => 'POST',
- 'content' => http_build_query($data)
- )
- );
- $context = stream_context_create($options);
- $result = file_get_contents($url, false, $context);
- if ($result === FALSE) {}
- else{
- //var_dump($result);
- }
- */
-
-
-
-
-
- //replace text from URL GET within image
- foreach($_GET as $key => $value){
- if($key != "___image___"){
- $alltext = $xpath->query('//svg:text');
- foreach ($alltext as $text) {
- if($key == $text->nodeValue){
- $text->nodeValue = $value;
- }
- }
- }
- }
-
-
-
-
-
-
-
- //load image Replacements
- $replacements = new DOMDocument();
-
- $newstr = substr( $_GET["___image___"], 0, strpos( $_GET["___image___"], '/', strpos( $_GET["___image___"], '/')+1));
-
- $urlreplacement = dirname('https://' . $_SERVER['HTTP_HOST']. $_SERVER['PHP_SELF'], 2) . "/server/" . $newstr . "/replacement";
- $replacements->loadXML(file_get_contents($urlreplacement));
-
- $elements = $replacements->getElementsByTagName('item');
-
- foreach($elements as $node){
-
- if(array_key_exists($node->getElementsByTagName("abbreviation")[0]->nodeValue, $keyValueStore)){
-
-
- $extension = pathinfo($node->getElementsByTagName("url")[0]->nodeValue, PATHINFO_EXTENSION);
-
- if($extension == "mp4"){
-
- $element = $doc->createElement('foreignObject');
-
- //Notwendig da ab und zu mit transform exportiert wird liegt an der powerpoint version
- if($result3->getAttribute('transform') != null){
- $transform = get_string_between($keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('transform'), "matrix(", ")");
- $matrix = explode(" ", $transform);
- $videox =$matrix[4];
- $videoy =$matrix[5];
-
- $element->setAttribute("x", $videox);
- $element->setAttribute("y", $videoy);
- }else{
- $element->setAttribute("x", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('x'));
- $element->setAttribute("y", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('y'));
- }
-
-
-
- // echo $result->nodeValue;// + result3->getAttribute('x');
- // echo $result3->getAttribute('transform') . "<br>";
-
-
- $element->setAttribute("width", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('width'));
- $element->setAttribute("height", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('height'));
-
- $element1 = $doc->createElement('video');
- $element1->setAttribute("width", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('width'));
- $element1->setAttribute("height", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('height'));
- $element1->setAttribute("controls", "");
-
- $element2 = $doc->createElement('source');
- $element2->setAttribute("type", "video/mp4");
- $element2->setAttribute("src", $node->getElementsByTagName("url")[0]->nodeValue);
-
- $element1->appendChild($element2);
- $element->appendChild($element1);
-
- $parent = $doc->getElementsByTagName('svg')->item(0);
- $parent->appendChild($element);
-
-
- //override identifier to be empty
- $keyValueStore2[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->nodeValue = "";
- }
- else{
-
-
-
- //create image element (currently we use background image)
- /*
- $element = $doc->createElement('image');
- $element->setAttribute("x", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('x'));
- $element->setAttribute("y", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('y'));
- $element->setAttribute("width", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('width'));
- $element->setAttribute("height", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('height'));
- $element->setAttribute("xlink:href", $node->getElementsByTagName("url")[0]->nodeValue);
-
- $doc->appendChild($element);
-
- $parent = $doc->getElementsByTagName('svg')->item(0);
- $parent->appendChild($element);
- */
-
-
- //create pattern for rect-filling looks like this:
- /*
- <defs>
- <pattern id="image" x="-32" y="-32" patternUnits="userSpaceOnUse" height="64" width="64">
- <image x="0" y="0" height="64" width="64" xlink:href="http://0.gravatar.com/avatar/902a4faaa4de6f6aebd6fd7a9fbab46a?s=64"/>
- </pattern>
- </defs>
- */
-
-
- $element3 = $doc->createElement('pattern');
- $element3->setAttribute("id", $node->getElementsByTagName("abbreviation")[0]->nodeValue);
- $element3->setAttribute("x", "0");
- $element3->setAttribute("y", "0");
- $element3->setAttribute("width", "1");
- $element3->setAttribute("height", "1");
-
-
- $element2 = $doc->createElement('image');
- $element2->setAttribute("x", "0");
- $element2->setAttribute("y", "0");
- $element2->setAttribute("width", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('width'));
- $element2->setAttribute("height", $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->getAttribute('height'));
- $element2->setAttribute("xlink:href", $node->getElementsByTagName("url")[0]->nodeValue);
-
-
- $element3->appendChild($element2);
- $parent = $doc->getElementsByTagName('defs')->item(0);
- $parent->appendChild($element3);
- $keyValueStore[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->setAttribute("fill", "url(#".$node->getElementsByTagName("abbreviation")[0]->nodeValue.")");
-
-
- //override identifier to be empty
- $keyValueStore2[$node->getElementsByTagName("abbreviation")[0]->nodeValue]->nodeValue = "";
- }
- }
- }
-
-
- echo $doc->saveXML();
- ?>
- </body>
- </html>
|