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
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