]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 5 Oct 2009 08:21:38 +0000 (08:21 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 5 Oct 2009 08:21:38 +0000 (08:21 +0000)
inc/extranet/DAO/class.ws.dao.book.php
inc/extranet/Metier/class.ws.document.php

index b8061daad300989d8d3727ea9623daede4f585d9..863b096414d4e36ab618dfeee48741a21c02c470 100644 (file)
@@ -127,6 +127,57 @@ class wsDAOBook extends extranetDAO {
                return $pages;\r
        }\r
 \r
+       public function appendDocument($book_id, $document_id)\r
+       {\r
+               $r = $core->con->select('SELECT MAX(book_page) AS book_page FROM books WHERE book_id=\'' . $core->con->escape($book_id) . '\'');\r
+               $lastPage = $r->book_page;\r
+               $this->insertDocument($book_id, $lastPage, $document_id);\r
+       }\r
+\r
+       public function removePage($book_id, $book_page)\r
+       {\r
+               // Supprime la page\r
+               $core->con->execute('DELETE FROM book_pages WHERE book_page=\'' . $core->con->escape($book_page) . '\' AND book_id=\'' . $core->con->escape($book_id) . '\'');\r
+               // Décale les pages suivantes vers le haut\r
+               $this->decalePages($book_id, $book_page, -1);\r
+       }\r
+\r
+       public function insertPage($book_id, $after_page, $document_id, $document_page)\r
+       {\r
+               // Décale les pages vers le bas\r
+               $this->decalePages($book_id, $after_page, 1);\r
+               // Insère la page\r
+               $c = $core->con->openCursor('book_pages');\r
+               $c->book_id = $book_id;\r
+               $c->book_page = $after_page + 1;\r
+               $c->document_id = $document_id;\r
+               $c->document_page = $document_page;\r
+               $c->insert();\r
+       }\r
+\r
+       public function insertDocument($book_id, $after_page, $document_id)\r
+       {\r
+               // Obtiens le nombre de pages\r
+               $r = $core->con->select('SELECT pages FROM documents WHERE document_id=\'' . $core->con->escape($document_id) . '\'');\r
+               // Décale les pages vers le bas\r
+               $this->decalePages($book_id, $after_page, $r->pages);\r
+               // Insère les pages\r
+               $c = $core->con->openCursor('book_pages');\r
+               $c->book_id = $book_id;\r
+               $c->document_id = $r->document_id;\r
+               for($i = 1;$i <= $r->pages;$i++) {\r
+                       $c->document_page = $i;\r
+                       $c->book_page = $after_page + $i;\r
+                       $c->insert();\r
+               }\r
+       }\r
+\r
+       protected function decalePages($book_id, $after_page, $decalage)\r
+       {\r
+               $decalage = ($decalage >= 0)?'+' . $decalage:$decalage;\r
+               $core->con->execute('UPDATE book_pages SET book_page=book_page' . $decalage . ' WHERE book_page>' . $core->con->escape($book_page) . ' AND book_id=\'' . $core->con->escape($book_id) . '\'');\r
+       }\r
+\r
        public function getListe($orderby = null, $sens = null, $limit = null)\r
        {\r
                if (!is_null($this->q)) {\r
index 1a08788aa5bc1edf380b743dfacf8f7c5c0f8608..0803e765782fe2999a692185f603d8fc5bad18ad 100644 (file)
@@ -3,7 +3,7 @@ class wsDocument extends cubeMetier {
        protected $document_id;\r
        protected $file;\r
        protected $proprietaire;\r
-       protected $pagesNumber;\r
+       protected $pages;\r
        protected $trim;\r
        protected $date;\r
        protected $localInfos;\r
@@ -15,8 +15,6 @@ class wsDocument extends cubeMetier {
        protected $infos;\r
        protected $textes;\r
 \r
-       protected $pages;\r
-\r
        public function copyOriginal($tmp_file)\r
        {\r
                $this->out = ROOT . '/docs/' . $this->document_id . '/';\r
@@ -47,9 +45,32 @@ class wsDocument extends cubeMetier {
                $pdftk->execute();\r
                $this->addToLog($pdftk);\r
 \r
+               $docInfos = $this->parseInfos($pdfinfo->output . $pdftk->output);\r
+\r
                file_put_contents($this->infos, $pdfinfo->output . $pdftk->output);\r
        }\r
 \r
+       public function parseInfos($data)\r
+       {\r
+               $res = array();\r
+               $lines = explode("\n", $data);\r
+               foreach($lines as $line) {\r
+                       $line = trim(cubeText::condenseWhite($line));\r
+                       $e = explode(':', $line, 2);\r
+                       $k = trim($e[0]);\r
+                       $v = trim($e[1]);\r
+                       if ($k == 'Pages' || $k == 'NumberOfPages') {\r
+                               $res['pages'] = $v;\r
+                       } elseif (preg_match('|Page ([0-9]+) (.*)Box: ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*)|iu', $line, $m)) {\r
+                               $res['page'][$m[1]][strtolower($m[2])] = array($m[3], $m[4], $m[5], $m[6]);\r
+                       } elseif (preg_match('|Page ([0-9]+) size: ([0-9.]*)([\sx]+)([0-9.]*)(.*)|iu', $line, $m)) {\r
+                               $res['page'][$m[1]]['size'] = array($m[2], $m[4]);\r
+                       }\r
+               }\r
+\r
+               return $res;\r
+       }\r
+\r
        public function getTexts()\r
        {\r
                $pdftotext = new cubeCommandLine('pdftotext', null, true);\r