function save() { if (!is_numeric($_SESSION['userId'])) { //no user logged so save it temporarly $_SESSION['tempDiagram'] = $_POST['diagram']; $_SESSION['tempSVG'] = $_POST['svg']; print "noaccount"; exit; } else { //user is logged if (is_numeric($_REQUEST['diagramId'])) { //we have a current working diagram //print($_POST['svg']); $delegate = new Delegate(); //see if we have rights to save it $userdiagram = $delegate->userdiagramGetByIds($_SESSION['userId'], $_REQUEST['diagramId']); if (!is_object($userdiagram)) { print 'Not allocated to this diagram'; exit; } //end check rights $currentDiagramId = $_REQUEST['diagramId']; $nowIsNow = now(); //update the Dia file $diaData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_DIA); $fh = fopen(dirname(__FILE__) . '/../diagrams/' . $currentDiagramId . '.dia', 'w'); // $diaFile = dirname(__FILE__) . '/../diagrams/' . $_REQUEST['diagramId'] . '.dia'; $diaSize = fwrite($fh, $_POST['diagram']); fclose($fh); $diaData->fileSize = $diaSize; $diaData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($diaData); //end update Dia file //update the SVG file $svgData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_SVG); $fh = fopen(getStorageFolder() . '/' . $currentDiagramId . '.svg', 'w'); $svgSize = fwrite($fh, $_POST['svg']); fclose($fh); $svgData->fileSize = $svgSize; $svgData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($svgData); //end update the SVG file //update the Diagram $diagram = $delegate->diagramGetById($currentDiagramId); $diagram->size = $diaSize; $diagram->lastUpdate = $nowIsNow; if ($delegate->diagramUpdate($diagram)) { print "saved"; } else { print 'diagramdata not saved'; } exit; } else { //no current working diagram $_SESSION['tempDiagram'] = $_POST['diagram']; $_SESSION['tempSVG'] = $_POST['svg']; print "firstSave"; exit; } } }
$pngFileSize = filesize($pngPath); //see if we need to create the PNG data (first time) if (!is_object($pngData)) { //create $pngData = new Diagramdata(); $pngData->diagramId = $diagram->id; $pngData->type = Diagramdata::TYPE_PNG; $pngData->fileName = $diagram->id . '.' . 'png'; $pngData->fileSize = $pngFileSize; $pngData->lastUpdate = $nowIsNow; $delegate->diagramdataCreate($pngData); } else { //Update $pngData->fileSize = $pngFileSize; $pngData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($pngData); } } if ($display) { //load png binary data $handle = fopen($pngPath, "rb"); // print "$pngPath:" . filesize($pngPath); $contents = fread($handle, filesize($pngPath)); fclose($handle); //end load png binray data //print data header("content-type: image/png"); print $contents; } else { header("content-type: text/plain"); print 'You are not allowed to see this information';
function save() { if (isset($_REQUEST['diagramId']) && is_numeric($_REQUEST['diagramId'])) { //we have a current working diagram //print($_POST['svg']); $delegate = new Delegate(); $currentDiagramId = $_REQUEST['diagramId']; $nowIsNow = now(); // 1 - update the Dia file $diaData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_DMO); $fh = fopen(getStorageFolder() . '/' . $currentDiagramId . '.dmo', 'w'); //$fh = fopen(dirname(__FILE__) . '/../diagrams/' . $currentDiagramId . '.dmo', 'w'); // $diaFile = dirname(__FILE__) . '/../diagrams/' . $_REQUEST['diagramId'] . '.dmo'; $diaSize = fwrite($fh, $_POST['diagram']); fclose($fh); $diaData->fileSize = $diaSize; $diaData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($diaData); //end update Dia file /*SVG support discontinued //2 - update the SVG file $svgData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_SVG); $fh = fopen(getStorageFolder() . '/' . $currentDiagramId . '.svg', 'w'); $svgSize = fwrite($fh, $_POST['svg']); fclose($fh); $svgData->fileSize = $svgSize; $svgData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($svgData); //end update the SVG file //update the Diagram $diagram = $delegate->diagramGetById($currentDiagramId); $diagram->size = $diaSize; $diagram->lastUpdate = $nowIsNow; */ //3 - update the PNG file $pngData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_PNG); $fh = fopen(getStorageFolder() . '/' . $currentDiagramId . '.png', 'wb'); $data = substr($_POST['png'], strpos($_POST['png'], ',')); $imgData = base64_decode($data); $pngSize = fwrite($fh, $imgData); fclose($fh); $pngData->fileSize = $pngSize; $pngData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($pngData); //end update the SVG file //update the link map $csvData = $delegate->diagramdataGetByDiagramIdAndType($currentDiagramId, Diagramdata::TYPE_CSV); $fh = fopen(getStorageFolder() . '/' . $currentDiagramId . '.csv', 'w'); $data = $_POST['linkMap']; $csvSize = fwrite($fh, $data); fclose($fh); $csvData->fileSize = $csvSize; $csvData->lastUpdate = $nowIsNow; $delegate->diagramdataUpdate($csvData); //end update the link map //update the Diagram $diagram = $delegate->diagramGetById($currentDiagramId); $diagram->size = $diaSize; $diagram->lastUpdate = $nowIsNow; if ($delegate->diagramUpdate($diagram)) { print "saved"; } else { print 'diagramdata not saved'; } exit; } else { //no current working diagram $_SESSION['tempDiagram'] = $_POST['diagram']; $_SESSION['tempSVG'] = $_POST['svg']; $_SESSION['tempPNG'] = $_POST['png']; $_SESSION['tempLinkMap'] = $_POST['linkMap']; print "firstSave"; exit; } }