]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 15 Mar 2011 10:27:35 +0000 (10:27 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 15 Mar 2011 10:27:35 +0000 (10:27 +0000)
inc/ws/Controlleur/class.ws.maintenance.php

index ccb6669a2a669315284e715961c28836e780f61a..6cedf57fe867a15c4ccfc9b476d8d9575b0446ad 100644 (file)
@@ -14,6 +14,11 @@ class wsMaintenance {
        public static function importFromOldWS($args)\r
        {\r
                global $core;\r
+\r
+               self::importLangs();\r
+               self::importThemes();\r
+               self::importDocs();\r
+               self::importBooks();\r
                // Import des fluidbooks\r
                // Donc le dernier importé est le max dont le numéro est inférieur à 10000\r
                $r = $core->con->select('SELECT MAX(book_id) FROM books WHERE book<10000');\r
@@ -24,17 +29,176 @@ class wsMaintenance {
                while ($r->fetch()) {\r
                        $oldBooks[] = $r->bid;\r
                }\r
+       }\r
+\r
+       protected static function _sqlIn($tab)\r
+       {\r
+               return ' IN(\'' . implode('\',\'', $tab) . '\') ';\r
+       }\r
+\r
+       protected static function _getLangCode($lang)\r
+       {\r
+               $lang = strtolower($lang);\r
+               if ($lang == 'cz') {\r
+                       $lang = 'cs';\r
+               }\r
+               return $lang;\r
+       }\r
+\r
+       public static function importLangs($oldBooks)\r
+       {\r
+               global $core;\r
+               // On regarde d'abord les langues que nous avons déjà\r
+               $r = $core->con->select('SELECT lang_id FROM langues');\r
+               $already = array();\r
+               while ($r->fetch()) {\r
+                       $already[] = $r->lang_id;\r
+               }\r
+\r
+               $toImport = array();\r
+               $r = $core->con->select('SELECT DISTINCT lang FROM ws.book WHERE bid ' . self::_sqlIn($oldBooks));\r
+               while ($r->fetch()) {\r
+                       $idl = self::_getLangCode($r->lang);\r
+                       if (in_array($idl, $already)) {\r
+                               continue;\r
+                       }\r
+                       if (strlen($idl) > 2) {\r
+                               continue;\r
+                       }\r
+                       $toImport[] = $r->lang;\r
+               }\r
+\r
+               if (!count($toImport)) {\r
+                       return;\r
+               }\r
+\r
+               $allTrads = array();\r
+               $trad = array();\r
+               $r = $core->con->select('SELECT * FROM ws.lang_trad,ws.lang_ord WHERE lang_trad.idlt=lang_ord.idlt AND idl ' . self::_sqlIn($toImport) . ' ');\r
+               while ($r->fetch()) {\r
+                       $idl = getLangCode($r->idl);\r
+                       if (!isset($trad[$idl])) {\r
+                               $trad[$idl] = array();\r
+                       }\r
+                       $trad[$idl][$r->ord] = $r->text;\r
+               }\r
+\r
+               foreach($toImport as $idl) {\r
+                       $idl = getLangCode($idl);\r
+\r
+                       $traductions = wsLang::getTraductionWithId($trad[$idl]);\r
+                       $allTrads[$idl] = $traductions;\r
+\r
+                       $c = $core->con->openCursor('langues');\r
+                       $c->lang_id = $idl;\r
+                       $c->charset = 'Latin1';\r
+                       $c->font = 'Fluidbook.otf';\r
+                       $c->traductions = json_encode($traductions);\r
+                       $c->insert();\r
+               }\r
+       }\r
+\r
+       public static function importThemes($oldBooks)\r
+       {\r
+               // Import des thèmes\r
+               $r = $core->con->select('SELECT * FROM ws.theme WHERE tid IN (SELECT * FROM ws.book WHERE bid ' . self::_sqlIn($oldBooks) . ')');\r
+               $theme = new wsTheme();\r
+               while ($r->fetch()) {\r
+                       $c = $core->con->openCursor('themes');\r
+                       $c->theme_id = $r->tid;\r
+                       $c->proprietaire = self::_getWsUser($r->proprietaire);\r
+                       $c->date = $r->date;\r
+                       $c->nom = $r->titre;\r
+\r
+                       $parametres = new wsThemeParametres($theme);\r
+                       $parametres->fromRecord($r);\r
+                       $c->icones = self::_oldIconesToColor($r->iid, $parametres);\r
+                       $c->parametres = serialize($parametres);\r
+                       $c->insert();\r
+               }\r
+               $r = $core->con->select('SELECT * FROM ws.theme_user');\r
+               $c = $core->con->openCursor('themes_droits');\r
+               while ($r->fetch()) {\r
+                       $c->utilisateur_id = $r->uid;\r
+                       $c->theme_id = $r->tid;\r
+                       try {\r
+                               $c->insert();\r
+                       }\r
+                       catch(Exception $e) {\r
+                       }\r
+               }\r
+       }\r
+\r
+       public static function importDocs($oldBooks)\r
+       {\r
                // On cherche maintenant à savoir si l'on doit importer de nouveaux documents associés\r
                $oldDocuments = array();\r
-               $r = $core->con->select('SELECT DISTINCT did FROM ws.book_pages WHERE bid IN(' . implode(',', $oldBooks) . ')');\r
+               $r = $core->con->select('SELECT DISTINCT did FROM ws.book_pages WHERE bid ' . self::_sqlIn($oldBooks) . '');\r
+               while ($r->fetch()) {\r
+                       $oldDocuments[] = $r->did;\r
+               }\r
+\r
+               if (!count($oldDocuments)) {\r
+                       return;\r
+               }\r
+\r
+               $r = $core->con->select('SELECT * FROM ws.document ORDER BY did WHERE did ' . self::_sqlIn($oldDocuments));\r
                while ($r->fetch()) {\r
-                       $oldDocument[] = $r->did;\r
+                       $c = $core->con->openCursor('documents');\r
+                       $c->document_id = $r->did;\r
+                       $c->pages = $r->pages;\r
+                       $c->version = 1;\r
+                       try {\r
+                               $c->insert();\r
+                       }\r
+                       catch(Exception $e) {\r
+                       }\r
+                       $docs[$r->did] = true;\r
                }\r
        }\r
 \r
-       public function importOldBook($r)\r
+       public static function importBooks($oldBook)\r
        {\r
        }\r
+\r
+       public static function _oldIconesToColor($iid, &$parametres)\r
+       {\r
+               global $oldIconesColors;\r
+               if (!isset($oldIconesColors)) {\r
+                       $oldIconesColors = array();\r
+                       $fp = fopen(dirname(__FILE__) . '/../../icones.csv', 'rb');\r
+                       $i = 1;\r
+                       while ($line = fgetcsv($fp, 1000, ';', '"')) {\r
+                               $oldIconesColors[$i] = array('color' => trim($line[0]), 'iid' => trim($line[1]));\r
+                               $i++;\r
+                       }\r
+               }\r
+               $line = $oldIconesColors[$iid];\r
+               if ($line['iid'] != '') {\r
+                       $parametres->iconSet = $line['iid'];\r
+                       $parametres->iconsHMargin = $line['iid'] == 1?20:0;\r
+                       $parametres->menuHeight = 39;\r
+                       $parametres->colorizeIcons = false;\r
+                       $parametres->couleurI = 'ffffff';\r
+                       return $line['iid'];\r
+               }\r
+               $parametres->iconSet = 1;\r
+               $parametres->colorizeIcons = 1;\r
+               $parametres->iconsHMargin = 20;\r
+               $parametres->menuHeight = 39;\r
+               $parametres->couleurI = $line['color'];\r
+\r
+               return 1;\r
+       }\r
+\r
+       public static function _getWsUser($oldid)\r
+       {\r
+               global $ws2ext;\r
+               if (!isset($ws2ext[$oldid])) {\r
+                       $ws2ext[$oldid] = 5;\r
+               }\r
+               return $ws2ext[$oldid];\r
+       }\r
 }\r
 \r
 ?>
\ No newline at end of file