mapserver->mapRestoreState; $szFilePhpSession = $_SESSION['fusionConfig']->mapserver->mapRestoreStateSession; $szDestination = $szFilePhpSession."/sess_".$szSessionID."/"; $szTmpFileName = $_FILES["sessionFile"]["tmp_name"]; $szZipFilename = $szStoreSessionPath."/ss_".$loadSessionID.".zip"; $szControlFile = $szStoreSessionPath."/".$loadSessionID.".dat"; if (file_exists($szZipFilename) && file_exists($szControlFile)){ $aData = readSessionSaveControlFile($szControlFile); $bSuccessfull = unzip($szZipFilename, $szDestination, $create_zip_name_dir=true, $overwrite=true); if($aData && $bSuccessfull === TRUE){ $oReturn->success = TRUE; $oReturn->mapname = $aData["mapname"]; $oReturn->extents = $aData["_afCurrentExtents"]; $oReturn->vislayers = $aData["aVisibleLayers"]; $oReturn->sessionname = $aData["sessionName"]; $oReturn->loadmap = $szDestination."/".$oReturn->mapname.'.map'; $oMap = ms_newMapObj($oReturn->loadmap); checkForGMLLayers($szDestination); $oMap->save($oReturn->loadmap); echo var2json($oReturn); } else { die("{'error':'Could not load session control file ".$loadSessionID. ".dat.'}"); } } else { die("{'error':'map state ".$loadSessionID. " does not exist.'}"); } } else { die("{'error':'PHP Session path is invalid.'}"); } function checkForGMLLayers($szDestination){ global $oMap; @$oLayer = $oMap->getLayerByName("LWEGML-Point"); if($oLayer){ $oLayer->set("connection", $szDestination."/features.gml"); } @$oLayer = $oMap->getLayerByName("LWEGML-Line"); if($oLayer){ $oLayer->set("connection", $szDestination."/features.gml"); } @$oLayer = $oMap->getLayerByName("LWEGML-Polygon"); if($oLayer){ $oLayer->set("connection", $szDestination."/features.gml"); } @$oLayer = $oMap->getLayerByName("LWEGML-Annotation"); if($oLayer){ $oLayer->set("connection", $szDestination."/features.gml"); } } function readSessionSaveControlFile($szFileName){ $handle = @fopen($szFileName, "r"); if($handle) { $szData = fread($handle, filesize($szFileName)); fclose($handle); } return unserialize($szData); } function unzip($src_file, $dest_dir=false, $create_zip_name_dir=true, $overwrite=true) { if(function_exists("zip_open")) { if(!is_resource(zip_open($src_file))) { $src_file=dirname($_SERVER['SCRIPT_FILENAME'])."/".$src_file; } if (is_resource($zip = zip_open($src_file))) { $splitter = ($create_zip_name_dir === true) ? "." : "/"; if ($dest_dir === false) $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter))."/"; // Create the directories to the destination dir if they don't already exist create_dirs($dest_dir); // For every file in the zip-packet while ($zip_entry = zip_read($zip)) { // Now we're going to create the directories in the destination directories // If the file is not in the root dir $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/"); if ($pos_last_slash !== false) { // Create the directory where the zip-entry should be saved (with a "/" at the end) create_dirs($dest_dir.substr(zip_entry_name($zip_entry), 0, $pos_last_slash+1)); } // Open the entry if (zip_entry_open($zip,$zip_entry,"r")) { // The name of the file to save on the disk $file_name = $dest_dir.zip_entry_name($zip_entry); // Check if the files should be overwritten or not if ($overwrite === true || $overwrite === false && !is_file($file_name)) { // Get the content of the zip entry $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); if(!is_dir($file_name)) file_put_contents($file_name, $fstream ); // Set the rights if(file_exists($file_name)) { chmod($file_name, 0755); //echo "file saved: ".$file_name."
"; } else { //echo "file not found: ".$file_name."
"; } } // Close the entry zip_entry_close($zip_entry); } } // Close the zip-file zip_close($zip); } else { return false; } return true; } else { if(version_compare(phpversion(), "5.2.0", "<")) $infoVersion="(use PHP 5.2.0 or later)"; die("error:'You need to install/enable the php_zip.dll extension $infoVersion'"); } } function create_dirs($path) { if (!is_dir($path)) { $directory_path = ""; $directories = explode("/",$path); array_pop($directories); foreach($directories as $directory) { $directory_path .= $directory."/"; if (!is_dir($directory_path)) { mkdir($directory_path); chmod($directory_path, 0777); } } } } ?>