function firstSaveExe() { if (!is_numeric($_SESSION['userId'])) { print "Wrong way"; exit; } //store current time $nowIsNow = now(); //save Diagram $diagram = new Diagram(); $diagram->title = trim($_REQUEST['title']); $diagram->description = trim($_REQUEST['description']); $diagram->public = $_REQUEST['public'] == true ? true : false; $diagram->createdDate = $nowIsNow; $diagram->lastUpdate = $nowIsNow; $diagram->size = strlen($_SESSION['tempDiagram']); //TODO: it might be not very accurate $delegate = new Delegate(); $token = ''; do { $token = generateRandom(6); } while ($delegate->diagramCountByHash($token) > 0); $diagram->hash = $token; $diagramId = $delegate->diagramCreate($diagram); //end save Diagram //create Dia file $diagramdata = new Diagramdata(); $diagramdata->diagramId = $diagramId; $diagramdata->type = Diagramdata::TYPE_DIA; $diagramdata->fileName = $diagramId . '.dia'; $fh = fopen(getStorageFolder() . '/' . $diagramId . '.dia', 'w'); $size = fwrite($fh, $_SESSION['tempDiagram']); fclose($fh); $diagramdata->fileSize = $size; $diagramdata->lastUpdate = $nowIsNow; $delegate->diagramdataCreate($diagramdata); //end Dia file //create SVG file $diagramdata = new Diagramdata(); $diagramdata->diagramId = $diagramId; $diagramdata->type = Diagramdata::TYPE_SVG; $diagramdata->fileName = $diagramId . '.svg'; $fh = fopen(getStorageFolder() . '/' . $diagramId . '.svg', 'w'); $size = fwrite($fh, $_SESSION['tempSVG']); fclose($fh); $diagramdata->fileSize = $size; $diagramdata->lastUpdate = $nowIsNow; $delegate->diagramdataCreate($diagramdata); //end SVG file //clean temporary diagram unset($_SESSION['tempDiagram']); unset($_SESSION['tempSVG']); //attach it to an user $userdiagram = new Userdiagram(); $userdiagram->diagramId = $diagramId; $userdiagram->userId = $_SESSION['userId']; $userdiagram->invitedDate = now(); $userdiagram->level = Userdiagram::LEVEL_AUTHOR; $userdiagram->status = Userdiagram::STATUS_ACCEPTED; $delegate->userdiagramCreate($userdiagram); redirect("../editor.php?diagramId=" . $diagramId); }