]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 22 Feb 2010 10:30:25 +0000 (10:30 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 22 Feb 2010 10:30:25 +0000 (10:30 +0000)
inc/extranet/Controlleur/class.ws.conversion.session.php
inc/extranet/Controlleur/class.ws.flash.php

index de9159e062172792aeeba294abdb85c5ce23da9a..e906025743790e0b63b3bbf144c399ab3b81d974 100644 (file)
@@ -1,24 +1,63 @@
 <?php\r
 \r
 class wsConversionSession {\r
-       public $documents = array();\r
-       public function __construct()\r
+       protected $documents = array();\r
+       protected $guid;\r
+       protected $progress = 0;\r
+\r
+       public function __construct($guid)\r
        {\r
-               if (!isset($_SESSION['conversionSession'])) {\r
-                       $_SESSION['conversionSession'] = array();\r
-               }\r
-               $this->documents = $_SESSION['conversionSession'];\r
-               $_SESSION['conversionSessionProgress'] = 0;\r
-               unset($_SESSION['conversionSession']);\r
+               $this->guid = $guid;\r
+       }\r
+\r
+       public function setDocuments($documents)\r
+       {\r
+               $this->documents = $documents;\r
        }\r
 \r
        public function process()\r
        {\r
-               for($i = $_SESSION['conversionSessionProgress'];$i <= 100;$i++) {\r
-                       usleep(0.25 * 1000000);\r
-                       $_SESSION['conversionSessionProgress'] = $i;\r
+               for($i = 1;$i <= 100;$i++) {\r
+                       cubePHP::sleep(0.1);\r
+                       $i++;\r
+               }\r
+       }\r
+\r
+       public function getProgress()\r
+       {\r
+               return $this->progress;\r
+       }\r
+\r
+       public function setProgress($i)\r
+       {\r
+               $this->progress = $i;\r
+               $this->serialize();\r
+       }\r
+\r
+       public function serialize()\r
+       {\r
+               file_put_contents(self::getCachePath($this->guid), serialize($this));\r
+       }\r
+\r
+       public function __destruct()\r
+       {\r
+               $this->serialize();\r
+       }\r
+\r
+       public static function openFromGUID($guid)\r
+       {\r
+               $serializedObject = self::getCachePath($guid);\r
+               if (file_exists($serializedObject)) {\r
+                       return unserialize(file_get_contents($serializedObject));\r
+               } else {\r
+                       return new wsConversionSession($guid);\r
                }\r
        }\r
+\r
+       public static function getCachePath($guid)\r
+       {\r
+               return CACHE . '/conversionSessions/' . $guid;\r
+       }\r
 }\r
 \r
 ?>
\ No newline at end of file
index 3f896cdd8487bc8f5af83f13c026edc97d9d0240..7d1268077be62339f9eeedcce61a9cb850996530 100644 (file)
@@ -68,26 +68,27 @@ class wsFlash extends cubeFlashGateway {
 \r
        public function processConversionSession()\r
        {\r
-               $cookies = array(session_name() => session_id());\r
+               $_SESSION['sessionConversionGUID'] = $sessionConversionGUID = uniqid('conversion_', true);\r
+               $session = new wsConversionSession($sessionConversionGUID);\r
+               $session->setDocuments($_SESSION['conversionSession']);\r
+               $conversion->serialize();\r
+\r
                $http = new cubeHTTP($_SERVER['HTTP_HOST']);\r
                $http->setDataTimeout(3);\r
-               $http->get('/flash/processConversionSessionAsync', array('user_email' => $_SESSION['user_email'], 'user_password' => $_SESSION['user_password']));\r
+               $http->post('/flash/processConversionSessionAsync', array('user_email' => $_SESSION['user_email'], 'user_password' => $_SESSION['user_password'], 'sessionConversionGUID' => $sessionConversionGUID));\r
        }\r
 \r
        public function processConversionSessionAsync()\r
        {\r
-               file_put_contents(ROOT . '/test.txt', print_r($_SERVER, true));\r
                cubePHP::neverStop();\r
-               $conversion = new wsConversionSession();\r
+               $conversion = wsConversionSession::openFromGUID($_POST['sessionConversionGUID']);\r
                $conversion->process();\r
        }\r
 \r
        public function getConversionSessionProgress()\r
        {\r
-               if (!isset($_SESSION['conversionSessionProgress'])) {\r
-                       $_SESSION['conversionSessionProgress'] = 0;\r
-               }\r
-               $this->xml->addChild('progress', $_SESSION['conversionSessionProgress']);\r
+               $session = wsConversionSession::openFromGUID($_SESSION['sessionConversionGUID']);\r
+               $this->xml->addChild('progress', $session->getProgress());\r
        }\r
 }\r
 \r