From: vincent@cubedesigners.com Date: Mon, 5 Oct 2009 08:21:38 +0000 (+0000) Subject: (no commit message) X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=5c7e5ee53c122224d4a049e8a4b9ef48f6732a0d;p=cubeextranet.git --- diff --git a/inc/extranet/DAO/class.ws.dao.book.php b/inc/extranet/DAO/class.ws.dao.book.php index b8061daad..863b09641 100644 --- a/inc/extranet/DAO/class.ws.dao.book.php +++ b/inc/extranet/DAO/class.ws.dao.book.php @@ -127,6 +127,57 @@ class wsDAOBook extends extranetDAO { return $pages; } + public function appendDocument($book_id, $document_id) + { + $r = $core->con->select('SELECT MAX(book_page) AS book_page FROM books WHERE book_id=\'' . $core->con->escape($book_id) . '\''); + $lastPage = $r->book_page; + $this->insertDocument($book_id, $lastPage, $document_id); + } + + public function removePage($book_id, $book_page) + { + // Supprime la page + $core->con->execute('DELETE FROM book_pages WHERE book_page=\'' . $core->con->escape($book_page) . '\' AND book_id=\'' . $core->con->escape($book_id) . '\''); + // Décale les pages suivantes vers le haut + $this->decalePages($book_id, $book_page, -1); + } + + public function insertPage($book_id, $after_page, $document_id, $document_page) + { + // Décale les pages vers le bas + $this->decalePages($book_id, $after_page, 1); + // Insère la page + $c = $core->con->openCursor('book_pages'); + $c->book_id = $book_id; + $c->book_page = $after_page + 1; + $c->document_id = $document_id; + $c->document_page = $document_page; + $c->insert(); + } + + public function insertDocument($book_id, $after_page, $document_id) + { + // Obtiens le nombre de pages + $r = $core->con->select('SELECT pages FROM documents WHERE document_id=\'' . $core->con->escape($document_id) . '\''); + // Décale les pages vers le bas + $this->decalePages($book_id, $after_page, $r->pages); + // Insère les pages + $c = $core->con->openCursor('book_pages'); + $c->book_id = $book_id; + $c->document_id = $r->document_id; + for($i = 1;$i <= $r->pages;$i++) { + $c->document_page = $i; + $c->book_page = $after_page + $i; + $c->insert(); + } + } + + protected function decalePages($book_id, $after_page, $decalage) + { + $decalage = ($decalage >= 0)?'+' . $decalage:$decalage; + $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) . '\''); + } + public function getListe($orderby = null, $sens = null, $limit = null) { if (!is_null($this->q)) { diff --git a/inc/extranet/Metier/class.ws.document.php b/inc/extranet/Metier/class.ws.document.php index 1a08788aa..0803e7657 100644 --- a/inc/extranet/Metier/class.ws.document.php +++ b/inc/extranet/Metier/class.ws.document.php @@ -3,7 +3,7 @@ class wsDocument extends cubeMetier { protected $document_id; protected $file; protected $proprietaire; - protected $pagesNumber; + protected $pages; protected $trim; protected $date; protected $localInfos; @@ -15,8 +15,6 @@ class wsDocument extends cubeMetier { protected $infos; protected $textes; - protected $pages; - public function copyOriginal($tmp_file) { $this->out = ROOT . '/docs/' . $this->document_id . '/'; @@ -47,9 +45,32 @@ class wsDocument extends cubeMetier { $pdftk->execute(); $this->addToLog($pdftk); + $docInfos = $this->parseInfos($pdfinfo->output . $pdftk->output); + file_put_contents($this->infos, $pdfinfo->output . $pdftk->output); } + public function parseInfos($data) + { + $res = array(); + $lines = explode("\n", $data); + foreach($lines as $line) { + $line = trim(cubeText::condenseWhite($line)); + $e = explode(':', $line, 2); + $k = trim($e[0]); + $v = trim($e[1]); + if ($k == 'Pages' || $k == 'NumberOfPages') { + $res['pages'] = $v; + } elseif (preg_match('|Page ([0-9]+) (.*)Box: ([0-9.]*) ([0-9.]*) ([0-9.]*) ([0-9.]*)|iu', $line, $m)) { + $res['page'][$m[1]][strtolower($m[2])] = array($m[3], $m[4], $m[5], $m[6]); + } elseif (preg_match('|Page ([0-9]+) size: ([0-9.]*)([\sx]+)([0-9.]*)(.*)|iu', $line, $m)) { + $res['page'][$m[1]]['size'] = array($m[2], $m[4]); + } + } + + return $res; + } + public function getTexts() { $pdftotext = new cubeCommandLine('pdftotext', null, true);