]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Thu, 11 Aug 2011 11:58:46 +0000 (11:58 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Thu, 11 Aug 2011 11:58:46 +0000 (11:58 +0000)
inc/commons/class.common.core.php
inc/ws/Controlleur/class.ws.ajax.php
inc/ws/Controlleur/class.ws.maintenance.php
inc/ws/Controlleur/class.ws.url.php
inc/ws/DAO/class.ws.dao.book.php
inc/ws/DAO/class.ws.dao.document.php

index 1c31d034c9a802a533d1dff6729d507e1fbcefd2..34b180072f5a4eaa393060952c30250150e7e8ab 100644 (file)
@@ -347,7 +347,7 @@ class commonCore extends cubeCore {
                $db->document_links_versions->document_id('integer', 0, false);\r
                $db->document_links_versions->links('text', 0, false);\r
                $db->document_links_versions->rulers('text', 0, false);\r
-               $db->document_links_versions->comments('varchar', 32, false);\r
+               $db->document_links_versions->comments('varchar', 64, false);\r
                $db->document_links_versions->user('integer', 0, false);\r
                $db->document_links_versions->update('integer', 0, false);\r
                // .\r
@@ -447,7 +447,6 @@ class commonCore extends cubeCore {
                        $dbi = new CubeDbStruct($this->con);\r
                        $dbi->synchronize($db);\r
                } catch (Exception $e) {\r
-                       fb($e);\r
                        return;\r
                }\r
 \r
index 8cb1cc22c2769bfb28f4f4f04c459b2c88459e41..a38791439e0e81f334a5fa120bb32816cbceae46 100644 (file)
@@ -636,20 +636,21 @@ class wsAjax extends cubeAjax {
                global $core;\r
 \r
                $book_id = $args[1];\r
-               $date = $args[2];\r
+               $time = $args[2];\r
 \r
                $dao = new wsDAODocument($core->con);\r
-               $dao->restoreLinksVersion($book_id, $date, $core->user->utilisateur_id);\r
-       }\r
+               $dao->getLinksAndRulers($book_id, $links, $rulers, $time);\r
+               $xls = $dao->getLinksAsExcel($links, $rulers);\r
+\r
+               self::getLinksFromExcel($xls, $links, $rulers);\r
 \r
-       public static function importLinksAsExcel($args) {\r
-               global $core;\r
-               $book_id = $args[1];\r
 \r
-               $xls = new PHPExcel();\r
-               $reader = new PHPExcel_Reader_Excel2007();\r
-               $xls = $reader->load($_FILES['file']['tmp_name']);\r
 \r
+               $dao = new wsDAODocument($core->con);\r
+               $dao->setLinksAndRulers($book_id, json_encode($links), json_encode($rulers), 'Restore links from ' . date('Y-m-d H:i:s', $time), $core->user->utilisateur_id);\r
+       }\r
+\r
+       private static function getLinksFromExcel($xls, &$links, &$rulers) {\r
                $s = $xls->setActiveSheetIndexByName('Links');\r
                $i = 0;\r
                $links = array();\r
@@ -697,8 +698,17 @@ class wsAjax extends cubeAjax {
                        }\r
                        $i++;\r
                }\r
+       }\r
 \r
+       public static function importLinksAsExcel($args) {\r
+               global $core;\r
+               $book_id = $args[1];\r
+\r
+               $xls = new PHPExcel();\r
+               $reader = new PHPExcel_Reader_Excel2007();\r
+               $xls = $reader->load($_FILES['file']['tmp_name']);\r
 \r
+               self::getLinksFromExcel($xls, $links, $rulers);\r
 \r
                $dao = new wsDAODocument($core->con);\r
                $dao->setLinksAndRulers($book_id, json_encode($links), json_encode($rulers), 'Import from excel', $core->user->utilisateur_id);\r
index fb8cfcab47be9bd7b4f23768145e97efbacefda2..9b5e57e9aa3723068b0e9ce2608c433bcf5ac1fb 100644 (file)
@@ -11,6 +11,16 @@ class wsMaintenance {
                }\r
        }\r
 \r
+       public static function initCompositionVersions($args) {\r
+               global $core;\r
+               $dao = new wsDAOBook($core->con);\r
+\r
+               $r = $core->con->select('SELECT * FROM books ORDER by book_id');\r
+               while ($r->fetch()) {\r
+                       $dao->saveCompositionVersion($r->book_id,$r->composition_update);\r
+               }\r
+       }\r
+\r
        public static function resetLinks($args) {\r
                global $core;\r
                $book_id = $args[0];\r
@@ -284,6 +294,11 @@ class wsMaintenance {
                }\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
+               $dao = new wsDAOBook($core->con);\r
+               foreach ($oldBooks as $book_id) {\r
+                       $dao->saveCompositionVersion($book_id);\r
+               }\r
        }\r
 \r
        protected static function _oldIconesToColor($iid, &$parametres) {\r
index 9885c6557a95b72a7c960343c92c399450e8b8ef..10770f84e80b90ee357c5de317298a8adf6cce85 100644 (file)
@@ -4,9 +4,9 @@ class wsUrl {
 \r
        public static function publications($args) {\r
                global $core;\r
-               \r
-               if(isset($args[1])){\r
-                       $_SESSION['q']=$args[1];\r
+\r
+               if (isset($args[1])) {\r
+                       $_SESSION['q'] = $args[1];\r
                }\r
 \r
                $settings = $core->user->getSettings('books');\r
@@ -502,100 +502,9 @@ html{height:100%}' . "\n";
                $book_id = $args[1];\r
                $time = $args[2];\r
 \r
-               $daoBook = new wsDAOBook($core->con);\r
-               $pages = $daoBook->getPagesOfBook($book_id);\r
-\r
                $dao = new wsDAODocument($core->con);\r
                $dao->getLinksAndRulers($book_id, $links, $rulers, $time);\r
-\r
-               $cols = array('document_id' => __('Document'), 'document_page' => __('Page du document'),\r
-                       'page' => __('Page de la publication'), 'left' => __('x'), 'top' => __('y'), 'width' => __('Largeur'), 'height' => __('Hauteur'),\r
-                       'type' => __('Type'), 'to' => __('Destination'), 'target' => __('Cible'),\r
-                       'infobulle' => __('Infobulle'), 'numerotation' => __('Numérotation'),\r
-                       'display_area' => __('Activer la surbrillance'),\r
-                       'video_loop' => __('Video : boucle'), 'video_auto_start' => __('Video : démarrage automatique'), 'video_controls' => __('Vidéo : afficher les contrôles'), 'video_sound_on' => __('Vidéo : activer le son'),\r
-                       'inline' => __('Vidéo : afficher dans la page'), 'video_width' => __('Vidéo : Largeur du popup'), 'video_height' => __('Vidéo : Hauteur du popup'),\r
-                       'interactive' => __('Interactivité'), 'video_service' => __('Webvideo : service'),\r
-                       'display_area' => __('Afficher le lien au rollover')\r
-               );\r
-\r
-               $xls = new PHPExcel();\r
-               $s = $xls->setActiveSheetIndex(0);\r
-               $s->setTitle('Links');\r
-\r
-\r
-\r
-               // Labels\r
-               $i = 0;\r
-               foreach ($cols as $id => $label) {\r
-                       $s->setCellValueByColumnAndRow($i, 1, $id);\r
-                       $s->getColumnDimensionByColumn($i)->setAutoSize(true);\r
-                       $s->getStyleByColumnAndRow($i, 1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);\r
-                       $i++;\r
-               }\r
-               // Links\r
-               $j = 2;\r
-               foreach ($links as $l) {\r
-                       $i = 0;\r
-                       foreach ($cols as $id => $label) {\r
-                               if ($id == 'document_id' || $id == 'document_page') {\r
-                                       $infos = $pages[$l['page']];\r
-                                       $value = $infos[$id];\r
-                               } else {\r
-                                       if (is_bool($l[$id])) {\r
-                                               $l[$id] = $l[$id] ? 1 : 0;\r
-                                       }\r
-                                       if ($id == 'numerotation') {\r
-                                               if ($l[$id] == 'false') {\r
-                                                       $l[$id] = 'physical';\r
-                                               }\r
-                                       } else if ($id == 'display_area') {\r
-                                               if ($l[$id] == '') {\r
-                                                       $l[$id] = '1';\r
-                                               }\r
-                                       }\r
-                                       $value = $l[$id];\r
-                               }\r
-\r
-                               $s->setCellValueByColumnAndRow($i, $j, $value);\r
-                               $s->getStyleByColumnAndRow($i, $j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);\r
-                               $i++;\r
-                       }\r
-                       $j++;\r
-               }\r
-               // Rulers\r
-               $s = $xls->createSheet();\r
-               $s->setTitle('Rulers');\r
-\r
-               $rcols = array('document_id', 'document_page', 'page', 'type', 'pos');\r
-               $i = 0;\r
-               // Labels\r
-               foreach ($rcols as $id) {\r
-                       $s->setCellValueByColumnAndRow($i, 1, $id);\r
-                       $s->getColumnDimensionByColumn($i)->setAutoSize(true);\r
-                       $s->getStyleByColumnAndRow($i, 1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);\r
-                       $i++;\r
-               }\r
-\r
-               // Contents\r
-               $j = 2;\r
-               foreach ($rulers as $r) {\r
-                       $i = 0;\r
-                       foreach ($rcols as $id) {\r
-                               if ($id == 'document_id' || $id == 'document_page') {\r
-                                       $infos = $pages[$r['page']];\r
-                                       $value = $infos[$id];\r
-                               } else {\r
-                                       $value = $r[$id];\r
-                               }\r
-                               $s->setCellValueByColumnAndRow($i, $j, $value);\r
-                               $s->getStyleByColumnAndRow($i, $j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);\r
-                               $i++;\r
-                       }\r
-                       $j++;\r
-               }\r
-\r
-               $xls->setActiveSheetIndex(0);\r
+               $xls = $dao->getLinksAsExcel($links, $rulers);\r
 \r
                ob_end_clean();\r
                files::registerMimeTypes(array('xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'));\r
index fe93ec2d606039b9507bca9853223e30bc1910fa..b23d97023e1a0fcebb709b2a2fe736163a1fa80e 100644 (file)
@@ -205,9 +205,35 @@ class wsDAOBook extends commonDAO {
                return $r->nb;\r
        }\r
 \r
+       public function getPagesOfBookAt($book_id, $time) {\r
+               $r = $this->con->select('SELECT * FROM book_pages_versions WHERE book_id=\'' . $this->con->escape($book_id) . '\' ORDER BY `update`');\r
+               if (!$r->count()) {\r
+                       return $this->getPagesOfBook($book_id);\r
+               }\r
+               if ($r->count() == 1) {\r
+                       $pages = unserialize($r->composition);\r
+                       if (!count($pages)) {\r
+                               return $this->getPagesOfBook($book_id);\r
+                       }\r
+                       return $pages;\r
+               }\r
+               $pages = null;\r
+               while ($r->fetch()) {\r
+                       if ($r->update > $time) {\r
+                               if (is_null($pages)) {\r
+                                       return $this->getPagesOfBook($book_id);\r
+                               }\r
+                               return unserialize($pages);\r
+                       }\r
+                       $pages = $r->composition;\r
+               }\r
+               return unserialize($pages);\r
+       }\r
+\r
        public function getPagesOfBook($book_id) {\r
                $pages = array();\r
                $r = $this->con->select('SELECT b.*,d.numberSections AS num,d.conversionInfos AS conversion,d.pages AS doc_pages,d.version AS version FROM book_pages b JOIN documents d ON d.document_id=b.document_id WHERE b.book_id=\'' . $this->con->escape($book_id) . '\' ORDER BY book_page');\r
+               $update = $r->composition_update;\r
                while ($r->fetch()) {\r
                        $n = explode(',', $r->num);\r
                        if ($r->conversion != '') {\r
@@ -415,11 +441,14 @@ class wsDAOBook extends commonDAO {
                $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
        }\r
 \r
-       public function saveCompositionVersion($book_id) {\r
+       public function saveCompositionVersion($book_id, $time=null) {\r
+\r
+               $time = is_null($time) ? TIME : $time;\r
+\r
                $pages = $this->getPagesOfBook($book_id);\r
 \r
                $c = $this->con->openCursor('book_pages_versions');\r
-               $c->update = TIME;\r
+               $c->update = $time;\r
                $c->book_id = $book_id;\r
                $c->composition = serialize($pages);\r
                $c->insert();\r
index f2884d9b60e86fcdfe2d115720c7326b1a29ba01..1399ca7bafad97c10fb6552406c83114aaffe383 100644 (file)
@@ -34,7 +34,16 @@ class wsDAODocument extends commonDAO {
        }\r
 \r
        public function restoreLinksVersion($book_id, $update, $user=0) {\r
-               $sql = 'INSERT INTO document_links_versions (document_id,links,rulers,`update`,comments,user) SELECT document_id,links,rulers,' . TIME . ',\'Links from a previous version\',' . $user . ' FROM document_links_versions WHERE `update`=' . $update . ' AND document_id IN (SELECT document_id FROM book_pages WHERE book_id=' . $book_id . ')';\r
+\r
+               $daoBook = new wsDAOBook($this->con);\r
+               $pages = $daoBook->getPagesOfBookAt($book_id, $update);\r
+\r
+               $docs = array();\r
+               foreach ($pages as $infos) {\r
+                       $docs[] = $infos['document_id'];\r
+               }\r
+\r
+               $sql = 'INSERT INTO document_links_versions (document_id,links,rulers,`update`,comments,user) SELECT document_id,links,rulers,' . TIME . ',\'Links from a previous version\',' . $user . ' FROM document_links_versions WHERE `update`=' . $update . ' AND document_id IN (' . implode(',', $docs) . ')';\r
                $this->con->execute($sql);\r
        }\r
 \r
@@ -61,7 +70,7 @@ class wsDAODocument extends commonDAO {
 \r
                        $log[] = 'Links file of page ' . $page . ' found';\r
 \r
-                       \r
+\r
                        $fp = fopen($csv, 'rb');\r
 \r
                        while (true) {\r
@@ -279,7 +288,7 @@ class wsDAODocument extends commonDAO {
                }\r
 \r
                $daoBook = new wsDAOBook($this->con);\r
-               $pages = $daoBook->getPagesOfBook($book_id);\r
+               $pages = $daoBook->getPagesOfBookAt($book_id,$time);\r
 \r
                foreach ($pages as $p => $infos) {\r
                        $documents[] = $infos['document_id'];\r
@@ -334,8 +343,18 @@ class wsDAODocument extends commonDAO {
        }\r
 \r
        public function getLinksVersions($book_id) {\r
+               // Get composition versions\r
+               $r = $this->con->select('SELECT * FROM book_pages_versions WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
+               $docs = array();\r
+               while ($r->fetch()) {\r
+                       $c = unserialize($r->composition);\r
+                       foreach ($c as $infos) {\r
+                               $docs[] = $infos['document_id'];\r
+                       }\r
+               }\r
+\r
                $res = array();\r
-               $r = $this->con->select('SELECT l.*,u.prenom,u.nom FROM document_links_versions l LEFT JOIN utilisateurs u ON l.user=u.utilisateur_id WHERE document_id IN(SELECT document_id FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\')');\r
+               $r = $this->con->select('SELECT l.*,u.prenom,u.nom FROM document_links_versions l LEFT JOIN utilisateurs u ON l.user=u.utilisateur_id WHERE document_id IN(' . implode(',', $docs) . ')');\r
                while ($r->fetch()) {\r
                        if (!isset($res[$r->update])) {\r
                                $res[$r->update] = array('links' => 0, 'rulers' => 0);\r
@@ -443,6 +462,96 @@ class wsDAODocument extends commonDAO {
                return $this->sauve($data);\r
        }\r
 \r
+       public function getLinksAsExcel($links, $rulers) {\r
+               $cols = array('document_id' => __('Document'), 'document_page' => __('Page du document'),\r
+                       'page' => __('Page de la publication'), 'left' => __('x'), 'top' => __('y'), 'width' => __('Largeur'), 'height' => __('Hauteur'),\r
+                       'type' => __('Type'), 'to' => __('Destination'), 'target' => __('Cible'),\r
+                       'infobulle' => __('Infobulle'), 'numerotation' => __('Numérotation'),\r
+                       'display_area' => __('Activer la surbrillance'),\r
+                       'video_loop' => __('Video : boucle'), 'video_auto_start' => __('Video : démarrage automatique'), 'video_controls' => __('Vidéo : afficher les contrôles'), 'video_sound_on' => __('Vidéo : activer le son'),\r
+                       'inline' => __('Vidéo : afficher dans la page'), 'video_width' => __('Vidéo : Largeur du popup'), 'video_height' => __('Vidéo : Hauteur du popup'),\r
+                       'interactive' => __('Interactivité'), 'video_service' => __('Webvideo : service'),\r
+                       'display_area' => __('Afficher le lien au rollover')\r
+               );\r
+\r
+               $xls = new PHPExcel();\r
+               $s = $xls->setActiveSheetIndex(0);\r
+               $s->setTitle('Links');\r
+\r
+               // Labels\r
+               $i = 0;\r
+               foreach ($cols as $id => $label) {\r
+                       $s->setCellValueByColumnAndRow($i, 1, $id);\r
+                       $s->getColumnDimensionByColumn($i)->setAutoSize(true);\r
+                       $s->getStyleByColumnAndRow($i, 1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);\r
+                       $i++;\r
+               }\r
+               // Links\r
+               $j = 2;\r
+               foreach ($links as $l) {\r
+                       $i = 0;\r
+                       foreach ($cols as $id => $label) {\r
+                               if ($id == 'document_id' || $id == 'document_page') {\r
+                                       $infos = $pages[$l['page']];\r
+                                       $value = $infos[$id];\r
+                               } else {\r
+                                       if (is_bool($l[$id])) {\r
+                                               $l[$id] = $l[$id] ? 1 : 0;\r
+                                       }\r
+                                       if ($id == 'numerotation') {\r
+                                               if ($l[$id] == 'false') {\r
+                                                       $l[$id] = 'physical';\r
+                                               }\r
+                                       } else if ($id == 'display_area') {\r
+                                               if ($l[$id] == '') {\r
+                                                       $l[$id] = '1';\r
+                                               }\r
+                                       }\r
+                                       $value = $l[$id];\r
+                               }\r
+\r
+                               $s->setCellValueByColumnAndRow($i, $j, $value);\r
+                               $s->getStyleByColumnAndRow($i, $j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);\r
+                               $i++;\r
+                       }\r
+                       $j++;\r
+               }\r
+               // Rulers\r
+               $s = $xls->createSheet();\r
+               $s->setTitle('Rulers');\r
+\r
+               $rcols = array('document_id', 'document_page', 'page', 'type', 'pos');\r
+               $i = 0;\r
+               // Labels\r
+               foreach ($rcols as $id) {\r
+                       $s->setCellValueByColumnAndRow($i, 1, $id);\r
+                       $s->getColumnDimensionByColumn($i)->setAutoSize(true);\r
+                       $s->getStyleByColumnAndRow($i, 1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);\r
+                       $i++;\r
+               }\r
+\r
+               // Contents\r
+               $j = 2;\r
+               foreach ($rulers as $r) {\r
+                       $i = 0;\r
+                       foreach ($rcols as $id) {\r
+                               if ($id == 'document_id' || $id == 'document_page') {\r
+                                       $infos = $pages[$r['page']];\r
+                                       $value = $infos[$id];\r
+                               } else {\r
+                                       $value = $r[$id];\r
+                               }\r
+                               $s->setCellValueByColumnAndRow($i, $j, $value);\r
+                               $s->getStyleByColumnAndRow($i, $j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);\r
+                               $i++;\r
+                       }\r
+                       $j++;\r
+               }\r
+\r
+               $xls->setActiveSheetIndex(0);\r
+               return $xls;\r
+       }\r
+\r
 }\r
 \r
 ?>
\ No newline at end of file