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

index 246ecd324535bc2c4833ab92d3f3e44b6dfc4b9e..ff0326d1ee3b88f60c00d27141beb0fa19f42f5c 100644 (file)
@@ -17,7 +17,7 @@ try {
 \r
        define('MYSQL_BIN', '/usr/local/mysql/bin/');\r
        // Copie de la base extranet vers extranet_dev\r
-       cubeDb::truncateDatabase('extranet_dev');\r
+       cubeDb::truncateDatabase('extranet_workshop');\r
        cubeDb::mysqlDump('localhost', 'extranet' , DB_USER , DB_PASSWORD , dirname(__FILE__) . '/dump.sql', false, 0);\r
        cubeDb::mysqlRestore('localhost', DB_NAME, DB_USER , DB_PASSWORD , dirname(__FILE__) . '/dump.sql', false);\r
        unlink(dirname(__FILE__) . '/dump.sql');\r
@@ -33,10 +33,10 @@ try {
                $core->con->execute('ALTER TABLE ' . $t . ' DISABLE KEYS');\r
        }\r
        // Copie des dossiers\r
-       `/bin/cp /home/extranet/www/devis/* /home/extranet/dev/devis/`;\r
-       `/bin/cp /home/extranet/www/factures/* /home/extranet/dev/factures/`;\r
-       `/bin/cp -r /home/ws/www/themes/* /home/extranet/dev/fluidbook/themes/`;\r
-       `/bin/rm -rf /home/extranet/dev/fluidbook/docs`;\r
+       `/bin/cp /home/extranet/_www/devis/* /home/extranet/www/devis/`;\r
+       `/bin/cp /home/extranet/_www/factures/* /home/extranet/www/factures/`;\r
+       `/bin/cp -r /home/ws/www/themes/* /home/extranet/www/fluidbook/themes/`;\r
+       `/bin/rm -rf /home/extranet/www/fluidbook/docs`;\r
 \r
        $core->con->execute('UPDATE entreprises SET ws_grade=0, ws_admin=1');\r
 \r
@@ -385,7 +385,6 @@ try {
                while ($r->fetch()) {\r
                        if (!isset($docs[$r->did])) {\r
                                $c = $core->con->openCursor('documents');\r
-                               $c->document_id = $r->did;\r
                                $c->proprietaire = $books_proprietaires[$r->bid];\r
                                $c->insert();\r
                                $docs[$r->did] = true;\r
index b25c6c677b4f7abb6c173675d031545ca1804fbc..446c7008f1559fe0e4c570ed40be001303135f9a 100644 (file)
@@ -142,6 +142,7 @@ class commonCore extends cubeCore {
                $db->utilisateurs->unique('unique_utilisateurs_email', 'email');\r
                $db->utilisateurs->index('index_utilisateurs_nom', 'BTREE', 'nom');\r
                $db->utilisateurs->index('index_utilisateurs_prenom', 'BTREE', 'prenom');\r
+               $db->utilisateurs->index('index_utilisateurs_grade', 'BTREE', 'grade');\r
                $db->utilisateurs->reference('fk_utilisateurs_entreprise', 'entreprise', 'entreprises', 'entreprise_id', false, false);\r
                // Table entreprises\r
                $db->entreprises->entreprise_id('integer', 0, false);\r
index 8ab1e8e979023a667834a44ae3462a01d17d52dd..5458fe008e8ba153b02814cfb7c77434edd29b4e 100644 (file)
@@ -18,7 +18,7 @@ if ($dev) {
 } else {\r
        // Définition des variables dans l'environnement de production\r
        define('DB_HOST', ':/var/run/mysqld/mysqld.sock');\r
-       define('DB_NAME', 'extranet');\r
+       define('DB_NAME', 'extranet_workshop');\r
        define('DB_USER', 'ws');\r
        define('DB_PASSWORD', '*arica*2');\r
 \r
index 209f36fe04aa75b099bf7e7a88d9a81897b5e4fd..d6227db09ee5e0e013c510baffd417427c6adcd9 100644 (file)
@@ -11,22 +11,22 @@ require_once(dirname(__FILE__) . '/commons/_common.php');
 \r
 if ($ws) {\r
        define('GA', 'UA-4339912-5');\r
-       define('TITLE', 'Fuidbook Workshop DEV');\r
+       define('TITLE', 'Fuidbook Workshop');\r
 \r
        define('FROM_EMAIL', 'tech@fluidbook.com');\r
        define('FROM_NAME', 'Fluidbook Workshop');\r
-       define('EMAIL_SUBJECT', 'Fluidbook Workshop DEV');\r
+       define('EMAIL_SUBJECT', 'Fluidbook Workshop');\r
        define('TEAM_EMAIL', 'team@fluidbook.com');\r
        define('TEAM_NAME', __("L'équipe Fluidbook"));\r
        define('RAPPEL', __('Rappel des identifiants de connexion au Fluidbook Workshop'));\r
        define('ASK_IDENT', __('Vous avez demandé la récupération de votre mot de passe sur le Fluidbook Workshop'));\r
 } elseif ($extranet) {\r
        define('GA', 'UA-4339912-4');\r
-       define('TITLE', 'Extranet Cubedesigners DEV');\r
+       define('TITLE', 'Extranet Cubedesigners');\r
 \r
        define('FROM_EMAIL', 'contact@cubedesigners.com');\r
-       define('FROM_NAME', 'Extranet Cubedesigners DEV');\r
-       define('EMAIL_SUBJECT', 'Extranet Cubedesigners DEV');\r
+       define('FROM_NAME', 'Extranet Cubedesigners');\r
+       define('EMAIL_SUBJECT', 'Extranet Cubedesigners');\r
        define('TEAM_EMAIL', 'team@cubedesigners.com');\r
        define('TEAM_NAME', __("L'équipe Cubedesigners"));\r
        define('RAPPEL', __('Rappel des identifiants de connexion à l\'extranet Cubedesigners'));\r
index c8b736afa55a01e31029b0edfe19b35dd4808f43..d8e938a4a0374662f61b574245746c620da825c9 100644 (file)
@@ -14,28 +14,40 @@ class wsMaintenance {
        public static function importFromOldWS($args)\r
        {\r
                global $core;\r
+               // Supprime pour le test\r
+               $core->con->execute('DELETE FROM book_pages WHERE book_id>3940 AND book_id<10000');\r
+               $core->con->execute('DELETE FROM books WHERE book_id>3940 AND book_id<10000');\r
+               $core->con->execute('DELETE FROM themes WHERE theme_id>627 AND theme_id<1000');\r
+               $core->con->execute('DELETE FROM documents WHERE document_id>12673 AND document_id<100000');\r
+               $core->con->execute('DELETE FROM langues WHERE lang_id=\'te\'');\r
+               $core->con->execute('DELETE FROM utilisateurs WHERE utilisateur_id>699');\r
+               $core->con->execute('DELETE FROM entreprises WHERE entreprise_id>561');\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
+               $r = $core->con->select('SELECT MAX(book_id) AS book_id FROM books WHERE book_id<10000');\r
                $lastImported = $r->book_id;\r
                // On recherche maintenant les fluidbook dans la vieille base\r
-               $r = $core->con->select('SELECT bid FROM ws.book WHERE bid>' . $r->book_id);\r
+               $r = $core->con->select('SELECT bid FROM ws.book WHERE bid>' . $lastImported);\r
                $oldBooks = array();\r
                while ($r->fetch()) {\r
                        $oldBooks[] = $r->bid;\r
                }\r
 \r
-               self::importLangs($oldBooks);\r
-               self::importThemes($oldBooks);\r
-               self::importDocs($oldBooks);\r
-               self::importBooks($oldBooks);\r
+               fb($oldBooks, 'Old books to import');\r
 \r
-                       $core->refreshWSUsersTree();\r
+               if (count($oldBooks)) {\r
+                       self::importLangs($oldBooks);\r
+                       self::importThemes($oldBooks);\r
+                       self::importDocs($oldBooks);\r
+                       self::importBooks($oldBooks);\r
+               }\r
+\r
+               $core->refreshWSUsersTree();\r
        }\r
 \r
        public static function importLangs($oldBooks)\r
        {\r
-               global $core;\r
+               global $core, $allTrads, $trads;\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
@@ -56,42 +68,50 @@ class wsMaintenance {
                        $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
+                       $idl = self::_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
+               foreach($trad as $idl => $t) {\r
                        $traductions = wsLang::getTraductionWithId($trad[$idl]);\r
                        $allTrads[$idl] = $traductions;\r
+               }\r
+\r
+               if (!count($toImport)) {\r
+                       return;\r
+               }\r
+\r
+               foreach($toImport as $idl) {\r
+                       $idl = self::_getLangCode($idl);\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->traductions = json_encode($allTrads[$idl]);\r
                        $c->insert();\r
                }\r
        }\r
 \r
        public static function importThemes($oldBooks)\r
        {\r
+               global $core;\r
+\r
+               $r = $core->con->select('SELECT MAX(theme_id) AS theme_id FROM themes WHERE theme_id<1000');\r
+               $lastImported = $r->theme_id;\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
+               $r = $core->con->select('SELECT * FROM ws.theme WHERE tid IN (SELECT tid FROM ws.book WHERE bid ' . self::_sqlIn($oldBooks) . ') AND tid>' . $lastImported);\r
                $theme = new wsTheme();\r
                while ($r->fetch()) {\r
+                       $tid = $r->tid;\r
+\r
                        $c = $core->con->openCursor('themes');\r
                        $c->theme_id = $r->tid;\r
                        $c->proprietaire = self::_getWsUser($r->proprietaire);\r
@@ -103,11 +123,19 @@ class wsMaintenance {
                        $c->icones = self::_oldIconesToColor($r->iid, $parametres);\r
                        $c->parametres = serialize($parametres);\r
                        $c->insert();\r
+\r
+                       $dest = WS_THEMES . '/' . $tid . '/';\r
+                       if (!file_exists($dest)) {\r
+                               mkdir($dest, 0777, true);\r
+                       }\r
+\r
+                       `/bin/cp -r /home/ws/www/themes/$tid/* $dest`;\r
                }\r
        }\r
 \r
        public static function importDocs($oldBooks)\r
        {\r
+               global $core;\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 ' . self::_sqlIn($oldBooks) . '');\r
@@ -119,7 +147,7 @@ class wsMaintenance {
                        return;\r
                }\r
 \r
-               $r = $core->con->select('SELECT * FROM ws.document ORDER BY did WHERE did ' . self::_sqlIn($oldDocuments));\r
+               $r = $core->con->select('SELECT * FROM ws.document WHERE did ' . self::_sqlIn($oldDocuments) . ' ORDER BY did');\r
                while ($r->fetch()) {\r
                        $c = $core->con->openCursor('documents');\r
                        $c->document_id = $r->did;\r
@@ -129,12 +157,68 @@ class wsMaintenance {
                                $c->insert();\r
                        }\r
                        catch(Exception $e) {\r
+                               fb($e);\r
                        }\r
                }\r
+\r
+               fb($oldDocuments, 'Old documents imported');\r
        }\r
 \r
-       public static function importBooks($oldBook)\r
+       public static function importBooks($oldBooks)\r
        {\r
+               global $core, $allTrads;\r
+               // Importe les fluidbooks\r
+               $r = $core->con->select('SELECT * FROM ws.book WHERE bid ' . self::_sqlIn($oldBooks) . ' ORDER BY bid');\r
+               if (!$r->count()) {\r
+                       return;\r
+               }\r
+               // .\r
+               while ($r->fetch()) {\r
+                       $c = $core->con->openCursor('books');\r
+                       $c->book_id = $r->bid;\r
+                       $c->nom = $r->titre;\r
+                       $c->lang = substr(self::_getLangCode($r->lang), 0, 2);\r
+                       $c->theme = $r->tid;\r
+                       if (strlen($r->lang) > 2) {\r
+                               $c->traductions = json_encode($allTrads[self::_getLangCode($r->lang)]);\r
+                       } else {\r
+                               $c->traductions = '';\r
+                       }\r
+                       $c->proprietaire = self::_getWsUser($r->uid);\r
+                       $c->status = $r->status;\r
+                       $c->date_status = $r->date_status;\r
+                       $c->hash = $r->code;\r
+                       $c->compteur_visites = 20;\r
+                       $c->date = $r->date;\r
+                       $parametres = new wsBookParametres(new stdClass());\r
+                       $parametres->fromRecord($r);\r
+\r
+                       $xml = @simplexml_load_string('<extras>' . $r->extras . '</extras>');\r
+                       if ($xml !== false) {\r
+                               $parametres->fromXML($xml);\r
+                       } else {\r
+                       }\r
+\r
+                       $n = array();\r
+                       // Pages sans numéro\r
+                       $offset = $r->first_page_nr-1;\r
+                       for($i = 0;$i < $offset;$i++) {\r
+                               $n[] = '';\r
+                       }\r
+                       // Pages avec numero\r
+                       for($j = 1;$j + $offset <= $r->pages;$j++) {\r
+                               $n[] = $j;\r
+                       }\r
+                       $c->numerotation = implode(',', $n);\r
+\r
+                       $parametres->signature =/*$signatures[$r->tid]*/ 1;\r
+                       $parametres->title = $r->titre;\r
+                       $parametres->visualisationMode = '0';\r
+                       $c->parametres = serialize($parametres);\r
+                       $c->insert();\r
+               }\r
+               // Import des pages\r
+               $core->con->execute('INSERT INTO book_pages (book_id,book_page,document_id,document_page) SELECT bid,bpid,did,dpid FROM ws.book_pages WHERE bid ' . self::_sqlIn($oldBooks));\r
        }\r
 \r
        protected static function _oldIconesToColor($iid, &$parametres)\r
@@ -142,7 +226,7 @@ class wsMaintenance {
                global $oldIconesColors;\r
                if (!isset($oldIconesColors)) {\r
                        $oldIconesColors = array();\r
-                       $fp = fopen(dirname(__FILE__) . '/../../icones.csv', 'rb');\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
@@ -170,12 +254,137 @@ class wsMaintenance {
        protected static function _getWsUser($oldid)\r
        {\r
                global $ws2ext;\r
+               if (!isset($ws2ext)) {\r
+                       self::_getAllUsers();\r
+               }\r
                if (!isset($ws2ext[$oldid])) {\r
-                       $ws2ext[$oldid] = 5;\r
+                       self::_importOldUser($oldid);\r
                }\r
                return $ws2ext[$oldid];\r
        }\r
 \r
+       protected static function _getAllUsers()\r
+       {\r
+               global $core, $entreprises, $entreprise_id, $utilisateurs_entreprises, $utilisateur_id, $ws2ext, $grades;\r
+               $grades = array(0 => 1, 0.4 => 1, '0.4' => 1, 0.5 => 1, '0.5' => 1, 1 => 1, 2 => 2, 3 => 3, 4 => 5);\r
+               // Contrôle des entreprises déjà dans la base extranet\r
+               $entreprises = array();\r
+               $entreprise_id = 0;\r
+               $r = $core->con->select('SELECT entreprise_id,nom FROM entreprises');\r
+               while ($r->fetch()) {\r
+                       $nom = mb_strtolower(trim($r->nom));\r
+                       $nom = cubeText::str2URL($nom);\r
+                       $entreprises[$nom] = $r->entreprise_id;\r
+                       $entreprise_id = max($entreprise_id, $r->entreprise_id);\r
+               }\r
+\r
+               $utilisateurs_entreprises = array();\r
+               $r = $core->con->select('SELECT entreprise,utilisateur_id FROM utilisateurs');\r
+               while ($r->fetch()) {\r
+                       $utilisateurs_entreprises[$r->utilisateur_id] = $r->entreprise;\r
+               }\r
+\r
+               $entreprise_id++;\r
+               // Obtient les emails des utilisateurs\r
+               $utilisateur_id = 0;\r
+               $utilisateurs = array();\r
+               $r = $core->con->select('SELECT utilisateur_id,email FROM utilisateurs');\r
+               while ($r->fetch()) {\r
+                       $utilisateur_id = max($r->utilisateur_id, $utilisateur_id);\r
+                       $utilisateurs[trim(mb_strtolower($r->email))] = $r->utilisateur_id;\r
+               }\r
+               $utilisateur_id++;\r
+\r
+               $ws2ext = array();\r
+               $r = $core->con->select('SELECT ws_id,utilisateur_id,entreprise FROM utilisateurs WHERE ws_id IS NOT NULL');\r
+               while ($r->fetch()) {\r
+                       $ws2ext[$r->ws_id] = $r->utilisateur_id;\r
+               }\r
+       }\r
+\r
+       protected static function _importOldUser($oldid)\r
+       {\r
+               global $core, $entreprises, $entreprise_id, $utilisateurs_entreprises, $utilisateur_id, $ws2ext, $grades;\r
+               // Get user from old\r
+               $r = $core->con->select('SELECT * FROM ws.user WHERE uid=\'' . $core->con->escape($oldid) . '\'');\r
+               if ($r->extranet != 0) {\r
+                       $ws2ext[$r->uid] = $r->extranet;\r
+                       return;\r
+               }\r
+               // On s'occupe de l'entreprise\r
+               $email = trim(mb_strtolower($r->email));\r
+\r
+               $rs = trim($r->rs);\r
+               if ($rs == '') {\r
+                       $rs = trim($r->prenom . ' ' . $r->nom);\r
+               }\r
+               $nom = mb_strtolower($rs);\r
+\r
+               $nom = cubeText::str2URL($nom);\r
+\r
+               if (isset($utilisateurs[$email])) {\r
+                       $newid = $utilisateurs[$email];\r
+                       $e = $utilisateurs_entreprises[$newid];\r
+                       $update = true;\r
+               } elseif (isset($entreprises[$nom])) {\r
+                       $e = $entreprises[$nom];\r
+                       $update = true;\r
+               } else {\r
+                       $c = $core->con->openCursor('entreprises');\r
+                       $c->entreprise_id = $entreprise_id;\r
+                       $c->nom = $rs;\r
+                       $c->adresse = $r->adresse;\r
+                       $c->code_postal = $r->code_postal;\r
+                       $c->ville = $r->ville;\r
+                       $c->pays = $r->pays;\r
+                       $c->date_creation = $r->date;\r
+                       $c->ws_grade = $grades[$r->grade];\r
+                       $c->ws_admin = self::_getWsUser($r->admin);\r
+                       $c->insert();\r
+                       $e = $entreprises[$nom] = $entreprise_id;\r
+                       $entreprise_id++;\r
+                       $update = false;\r
+               }\r
+\r
+               if ($update) {\r
+                       $c = $core->con->openCursor('entreprises');\r
+                       $c->ws_grade = $grades[$r->grade];\r
+                       $c->ws_admin = self::_getWsUser($r->admin);\r
+                       $c->update('WHERE entreprise_id=\'' . $e . '\'');\r
+               }\r
+               // Puis de l'utilisateur\r
+               if (isset($utilisateurs[$email])) {\r
+                       $c = $core->con->openCursor('utilisateurs');\r
+                       $c->ws_password = $r->password;\r
+                       $c->ws_id = $r->uid;\r
+                       $c->update('WHERE utilisateur_id=\'' . $utilisateurs[$email] . '\'');\r
+                       $ws2ext[$r->uid] = $utilisateurs[$email];\r
+                       $utilisateurs_entreprises[$utilisateurs[$email]] = $e;\r
+               } else {\r
+                       $c = $core->con->openCursor('utilisateurs');\r
+                       $c->utilisateur_id = $utilisateur_id;\r
+                       $c->entreprise = $e;\r
+                       $c->nom = $r->nom;\r
+                       $c->prenom = $r->prenom;\r
+                       $c->email = $r->email;\r
+                       $c->password = $r->password;\r
+                       $c->adresse = $r->adresse;\r
+                       $c->code_postal = $r->code_postal;\r
+                       $c->ville = $r->ville;\r
+                       $c->pays = $r->pays;\r
+                       $c->lang = $r->lang;\r
+                       $c->telephone = $r->telephone;\r
+                       $c->date_creation = $r->date;\r
+                       $c->notes = 'Inséré à l\'import vers le nouveau Fluidbook Workshop';\r
+                       $c->ws_password = $r->password;\r
+                       $c->ws_id = $r->uid;\r
+                       $c->insert();\r
+                       $ws2ext[$r->uid] = $utilisateur_id;\r
+                       $utilisateurs_entreprises[$utilisateur_id] = $e;\r
+                       $utilisateur_id++;\r
+               }\r
+       }\r
+\r
        protected static function _sqlIn($tab)\r
        {\r
                return ' IN(\'' . implode('\',\'', $tab) . '\') ';\r