From 85a7e278c44e8406670193889979427843ff2e71 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Tue, 3 May 2011 08:06:32 +0000 Subject: [PATCH] --- inc/ws/DAO/class.ws.dao.book.php | 202 +++++++++++++++---------------- 1 file changed, 97 insertions(+), 105 deletions(-) diff --git a/inc/ws/DAO/class.ws.dao.book.php b/inc/ws/DAO/class.ws.dao.book.php index b18e87f68..3130b3fb7 100644 --- a/inc/ws/DAO/class.ws.dao.book.php +++ b/inc/ws/DAO/class.ws.dao.book.php @@ -1,13 +1,14 @@ book_id = $r->book_id; $book->nom = $r->nom; @@ -37,8 +38,7 @@ class wsDAOBook extends commonDAO { return $book; } - protected function cree($r) - { + protected function cree($r) { $book = new wsBook(); $book->book_id = 'new'; $book->nom = ''; @@ -58,8 +58,7 @@ class wsDAOBook extends commonDAO { return $book; } - protected function getNextId() - { + protected function getNextId() { $r = $this->con->select('SELECT MAX(book_id) AS book_id FROM books'); if ($r->book_id < 10000) { return 10000; @@ -67,8 +66,7 @@ class wsDAOBook extends commonDAO { return $r->book_id + 1; } - public function selectById($book_id = null) - { + public function selectById($book_id = null) { if (is_null($book_id)) { return $this->cree(); } @@ -84,8 +82,7 @@ class wsDAOBook extends commonDAO { * @param mixed $data * @return */ - public function sauve($createur, $data) - { + public function sauve($createur, $data) { $c = $this->con->openCursor('books'); if (isset($data['nom'])) { $c->nom = $data['nom']; @@ -118,8 +115,7 @@ class wsDAOBook extends commonDAO { return $this->selectById($book_id); } - public function duplicate($book_id, $createur, $nom) - { + public function duplicate($book_id, $createur, $nom) { $r = $this->con->select('SELECT * FROM books_vue WHERE book_id=\'' . $this->con->escape($book_id) . '\''); $parametres = unserialize($r->parametres); @@ -145,8 +141,7 @@ class wsDAOBook extends commonDAO { return $this->selectById($book_id); } - public function creeEmpty($createur, $lang, $nom) - { + public function creeEmpty($createur, $lang, $nom) { $c = $this->con->openCursor('books'); $parametres = new wsBookParametres($this); @@ -170,14 +165,12 @@ class wsDAOBook extends commonDAO { return $this->selectById($book_id); } - public function supprime($book_id) - { + public function supprime($book_id) { $this->con->execute('DELETE FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\''); return $this->con->execute('DELETE FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function count($limitedToUserRights = false) - { + public function count($limitedToUserRights = false) { $filters = $this->makeWhereFromFiltres(); if ($filters == '1=1') { $table = 'books'; @@ -191,8 +184,7 @@ class wsDAOBook extends commonDAO { return $r->nb; } - public function getPagesOfBook($book_id) - { + public function getPagesOfBook($book_id) { $pages = array(); $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'); while ($r->fetch()) { @@ -201,8 +193,8 @@ class wsDAOBook extends commonDAO { $c = unserialize($r->conversion); $c = $c->pages[$r->document_page]; } - if (isset($n[$r->document_page-1])) { - $num = $n[$r->document_page-1]; + if (isset($n[$r->document_page - 1])) { + $num = $n[$r->document_page - 1]; } else { $num = ''; } @@ -211,10 +203,10 @@ class wsDAOBook extends commonDAO { 'version' => $r->version, 'defaultNum' => $num, 'nb_pages' => $r->doc_pages - ); + ); $qp = array('resolution', 'method', 'quality', 'objects'); - foreach($qp as $p) { + foreach ($qp as $p) { if (isset($c) && isset($c->$p)) { $pages[$r->book_page][$p] = $c->$p; } @@ -223,23 +215,20 @@ class wsDAOBook extends commonDAO { return $pages; } - public function appendDocument($book_id, $document_id) - { + public function appendDocument($book_id, $document_id) { $r = $this->con->select('SELECT MAX(book_page) AS book_page FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\''); - $lastPage = is_null($r->book_page)?0:$r->book_page; + $lastPage = is_null($r->book_page) ? 0 : $r->book_page; $this->insertDocument($book_id, $lastPage, $document_id); } - public function removePage($book_id, $book_page) - { + public function removePage($book_id, $book_page) { // Supprime la page $this->con->execute('DELETE FROM book_pages WHERE book_page=\'' . $this->con->escape($book_page) . '\' AND book_id=\'' . $this->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) - { + 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 @@ -251,8 +240,7 @@ class wsDAOBook extends commonDAO { $c->insert(); } - public function insertDocument($book_id, $after_page, $document_id) - { + public function insertDocument($book_id, $after_page, $document_id) { // Obtiens le book $book = $this->selectById($book_id); $num = $book->numerotation; @@ -266,7 +254,7 @@ class wsDAOBook extends commonDAO { $c = $this->con->openCursor('book_pages'); $c->book_id = $book_id; $c->document_id = $document_id; - for($i = 1;$i <= $r->pages;$i++) { + for ($i = 1; $i <= $r->pages; $i++) { $c->document_page = $i; $c->book_page = $after_page + $i; $c->insert(); @@ -282,14 +270,12 @@ class wsDAOBook extends commonDAO { $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - protected function decalePages($book_id, $after_page, $decalage) - { - $decalage = ($decalage >= 0)?'+' . $decalage:$decalage; + protected function decalePages($book_id, $after_page, $decalage) { + $decalage = ($decalage >= 0) ? '+' . $decalage : $decalage; $this->con->execute('UPDATE book_pages SET book_page=book_page' . $decalage . ' WHERE book_page>' . $this->con->escape($after_page) . ' AND book_id=\'' . $this->con->escape($book_id) . '\''); } - public function getListe($orderby = null, $sens = null, $limit = null, $limitedToUserRights = false) - { + public function getListe($orderby = null, $sens = null, $limit = null, $limitedToUserRights = false) { if (!is_null($this->q)) { $where = '('; if ($this->search_id) { @@ -305,25 +291,23 @@ class wsDAOBook extends commonDAO { } $where .= $this->limitToUserRights($limitedToUserRights); - $orderby = is_null($orderby)?'book_id':$orderby; - $sens = is_null($sens)?'DESC':$sens; - $limit = is_null($limit)?'':$this->con->limit($limit); + $orderby = is_null($orderby) ? 'book_id' : $orderby; + $sens = is_null($sens) ? 'DESC' : $sens; + $limit = is_null($limit) ? '' : $this->con->limit($limit); $sql = 'SELECT * FROM books_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit; $r = $this->con->select($sql); return $this->factory($r); } - protected function limitToUserRights($utilisateur) - { + protected function limitToUserRights($utilisateur) { if ($utilisateur) { return ' AND proprietaire IN (' . $utilisateur->ws_rights . ')'; } return ''; } - protected function makeWhereFromFiltres() - { + protected function makeWhereFromFiltres() { if (!is_null($this->filtres)) { $w = array('1=1'); if (commonFiltre::test('admin_book', $this->filtres)) { @@ -338,48 +322,44 @@ class wsDAOBook extends commonDAO { } } - public function setChapters($book_id, $json) - { + public function setChapters($book_id, $json) { $c = $this->con->openCursor('books'); $c->chapters = json_encode(json_decode($json, false)); $c->changedate = TIME; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setTheme($book_id, $theme) - { + public function setTheme($book_id, $theme) { $c = $this->con->openCursor('books'); $c->theme = $theme; $c->changedate = TIME; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setStatus($book_id, $status) - { + public function setStatus($book_id, $status) { $c = $this->con->openCursor('books'); $c->status = $status; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); return $this->selectById($book_id); } - public function setChaptersFromOldFluidbook($book_id) - { + public function setChaptersFromOldFluidbook($book_id) { $book = $this->selectById($book_id); $n = explode(',', $book->numerotation); $xml = simplexml_load_file('http://ws.fluidbook.com/books/' . $book_id . '/data/links.xml'); $res = array(); $chapters = $xml->xpath('//chapters'); - foreach($chapters as $ch) { + foreach ($chapters as $ch) { $c = array(); - $c['label'] = (string)$ch->txt; + $c['label'] = (string) $ch->txt; - $p = intval((string)$ch->page); + $p = intval((string) $ch->page); if ($p <= 0) { continue; } $c['page'] = $n[$p]; - $c['level'] = intval((string)$ch->level); + $c['level'] = intval((string) $ch->level); $res[] = $c; } @@ -389,11 +369,10 @@ class wsDAOBook extends commonDAO { $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setLang($book_id, $base, $traductions) - { + public function setLang($book_id, $base, $traductions) { // Cleanup user translations $traductions = json_decode($traductions, true); - foreach($traductions as $k => $v) { + foreach ($traductions as $k => $v) { $traductions[$k] = trim($v); } @@ -401,7 +380,7 @@ class wsDAOBook extends commonDAO { $lang = $daoLang->selectById($base); // Cleanup base translations $baseTraductions = $lang->traductions; - foreach($baseTraductions as $k => $v) { + foreach ($baseTraductions as $k => $v) { $baseTraductions[$k] = trim($v); } // Then compare them. If there is no differences, we don't save translations in the book @@ -418,12 +397,11 @@ class wsDAOBook extends commonDAO { $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setSettings($book_id, $settings) - { + public function setSettings($book_id, $settings) { $book = $this->selectById($book_id); $parametres = $book->parametres; $new = json_decode($settings, false); - foreach($new as $k => $v) { + foreach ($new as $k => $v) { if ($k == '_empty_') { continue; } @@ -436,46 +414,40 @@ class wsDAOBook extends commonDAO { $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setProprietaire($book_id, $proprietaire_id) - { + public function setProprietaire($book_id, $proprietaire_id) { $c = $this->con->openCursor('books'); $c->proprietaire = $proprietaire_id; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function setTache($book_id, $tache) - { + public function setTache($book_id, $tache) { $c = $this->con->openCursor('books'); $c->tache = $tache; $c->status = 2; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function touch($book_id) - { + public function touch($book_id) { $c = $this->con->openCursor('books'); $c->changedate = TIME; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function touchCompile($book_id) - { + public function touchCompile($book_id) { $c = $this->con->openCursor('books'); $c->compiledate = TIME; $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } - public function isUpToDate($book_id) - { + public function isUpToDate($book_id) { $r = $this->con->select('SELECT changedate,compiledate FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\''); return $r->compiledate > $r->changedate; } - public function setComposition($book_id, $pages) - { + public function setComposition($book_id, $pages) { $numerotation = array(); $nb_pages = 0; - foreach($pages as $p) { + foreach ($pages as $p) { $numerotation[] = $p->virtual; $nb_pages++; } @@ -495,7 +467,7 @@ class wsDAOBook extends commonDAO { $c = $this->con->openCursor('book_pages'); $c->book_id = $book_id; $i = 1; - foreach($pages as $p) { + foreach ($pages as $p) { $c->document_id = $p->document_id; $c->document_page = $p->document_page; $c->book_page = $i; @@ -504,12 +476,11 @@ class wsDAOBook extends commonDAO { } } - public function makeTextsIndexes($book_id, &$index, &$textes) - { + public function makeTextsIndexes($book_id, &$index, &$textes) { $pages = $this->getPagesOfBook($book_id); $index = array(); $textes = array(); - foreach($pages as $book_page => $infos) { + foreach ($pages as $book_page => $infos) { $tfile = WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page'] . '.txt'; $ifile = WS_DOCS . '/' . $infos['document_id'] . '/i' . $infos['document_page'] . '.txt'; $text = file_get_contents($tfile); @@ -521,11 +492,10 @@ class wsDAOBook extends commonDAO { ksort($index); } - protected function fillIndexWithWords(&$index, $page, $ipage) - { + protected function fillIndexWithWords(&$index, $page, $ipage) { $twords = explode("\n", trim($ipage)); - foreach($twords as $woadata) { + foreach ($twords as $woadata) { $w1 = explode(',', trim($woadata)); if (count($w1) <= 1) { continue; @@ -544,7 +514,7 @@ class wsDAOBook extends commonDAO { $words = explode("\t", $wordslist); - foreach($words as $word) { + foreach ($words as $word) { list($wordwa, $count) = explode('$', $word, 2); if (!isset($index[$woa]['words'][$wordwa])) { $index[$woa]['words'][$wordwa] = array('total' => 0, 'pages' => array()); @@ -558,13 +528,11 @@ class wsDAOBook extends commonDAO { } } - public function getNumerotationFromDocs($book_id) - { + public function getNumerotationFromDocs($book_id) { $pages = $this->getPagesOfBook($book_id); } - public function compile($book_id, $version = 3, $complete = false) - { + public function compile($book_id, $version = 3, $complete = false) { if ($version == 3) { return $this->compile3($book_id, $complete); } @@ -578,8 +546,7 @@ class wsDAOBook extends commonDAO { * @param mixed $complete * @return */ - public function compile3($book_id, $complete) - { + public function compile3($book_id, $complete) { cubePHP::neverStop(); $filesToCopy = array(); $finalDir = WS_BOOKS . '/final/' . $book_id . '/'; @@ -623,9 +590,9 @@ class wsDAOBook extends commonDAO { $flex = new cubeFlexCompiler('FluidbookDatas', $compilerDir, 'flash.display.Sprite', explode(';', AS3_SOURCES), MXMLC_PATH); $flexLight = new cubeFlexCompiler('FluidbookDatasLight', $compilerDir, 'flash.display.Sprite', explode(';', AS3_SOURCES), MXMLC_PATH); - $flex->addVariable('links', $links , false, true, 'JSONObject'); + $flex->addVariable('links', $links, false, true, 'JSONObject'); - foreach($links as $link) { + foreach ($links as $link) { if ($link['type'] == 15) { $flex->addBitmap($workingDir . '/' . $link['to'], 'link_datas_' . $link['id']); } @@ -635,9 +602,9 @@ class wsDAOBook extends commonDAO { $flexLight->addVariable('datas', $book->parametres->toStandardObject(), false, true, 'JSONObject'); $flexLight->addVariable('id', $book_id, false, true, 'uint'); - $traductions = (!count($book->traductions))?$lang->traductions:$book->traductions; + $traductions = (!count($book->traductions)) ? $lang->traductions : $book->traductions; $allTraductions = array(); - foreach($langs as $lang) { + foreach ($langs as $lang) { $allTraductions[$lang->lang_id] = $lang->traductions; } @@ -654,7 +621,7 @@ class wsDAOBook extends commonDAO { $flex->addVariable('index', $index, false, true, 'JSONObject'); $flex->addVariable('textes', $textes, false, true, 'JSONObject'); - foreach($pages as $i => $infos) { + foreach ($pages as $i => $infos) { $base = WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page']; $swffile = $base . '.swf'; if (file_exists($swffile)) { @@ -702,7 +669,7 @@ class wsDAOBook extends commonDAO { } // Icons assets $iconsRoot = WS_ICONS . '/' . $theme->parametres->iconSet . '/'; - foreach(wsIcone::$files as $file) { + foreach (wsIcone::$files as $file) { $flex->addBitmap($iconsRoot . 'nav-' . $file . '.png', 'nav_' . $file); } // Fonts @@ -713,6 +680,31 @@ class wsDAOBook extends commonDAO { $res .= $flex->compile() . "\n\n-------------------\n\n"; $flexLight->addVariable('datasSize', filesize($compilerDir . '/FluidbookDatas.swf')); $res .= $flexLight->compile(); + // Basket + if ($book->parametres->basket) { + $formats = array('jpg', 'png', 'jpeg'); + $referencesFile = $workingDir . '/' . $book->parametres->basketReferences; + $references = array(); + if (file_exists($referencesFile)) { + $fp = fopen($reference_file, "rb"); + $i = 0; + while ($line = fgetcsv($fp)) { + $references[] = $line; + if ($i > 0) { + $refid = trim($line[0]); + foreach ($formats as $f) { + $refimage = $workingDir . '/' . $refid . '.' . $f; + if (file_exists($refimage)) { + $flex->addBitmap($refimage, "basket_image_" + ($i - 1)); + break; + } + } + } + $i++; + } + } + $flex->addVariable('basketReferences', $references, "JSONObject"); + } $filesToCopy['FluidbookDatas.swf'] = $compilerDir . '/FluidbookDatas.swf'; $filesToCopy['FluidbookDatasLight.swf'] = $compilerDir . '/FluidbookDatasLight.swf'; @@ -732,7 +724,7 @@ class wsDAOBook extends commonDAO { } } - foreach($filesToCopy as $local => $source) { + foreach ($filesToCopy as $local => $source) { $localPath = $finalDir . $local; // if (!file_exists($localPath) || filemtime($localPath) < filemtime($source) || filesize($localPath) != filesize($source)) { copy($source, $localPath); @@ -745,8 +737,7 @@ class wsDAOBook extends commonDAO { return $res; } - public function compilePDF($book, $pages) - { + public function compilePDF($book, $pages) { $finalPDF = WS_BOOKS . '/final/' . $book->book_id . '/data/document.pdf'; if (!$book->parametres->pdf) { @@ -762,7 +753,7 @@ class wsDAOBook extends commonDAO { $nb_pages = array(); $j = 0; $k = 0; - foreach($pages as $i => $infos) { + foreach ($pages as $i => $infos) { $doc = WS_DOCS . '/' . $infos['document_id'] . '/crop.pdf'; if (!isset($pdfList[$doc])) { $pdfList[$doc] = $j; @@ -776,7 +767,7 @@ class wsDAOBook extends commonDAO { } $args = ''; - foreach($pdfList as $doc => $index) { + foreach ($pdfList as $doc => $index) { $lettre = cubeMath::toPDFLetter($index, true); $args .= $lettre . '=' . $doc . ' '; } @@ -786,7 +777,7 @@ class wsDAOBook extends commonDAO { $ranges = array(); $currentRange = null; - foreach($pagesList as $p) { + foreach ($pagesList as $p) { $lettre = cubeMath::toPDFLetter($p[0], true); $page = $p[1]; @@ -817,7 +808,7 @@ class wsDAOBook extends commonDAO { } } - foreach($ranges as $range) { + foreach ($ranges as $range) { $args .= ' ' . $range['lettre'] . $range['start']; if ($range['start'] == $range['end']) { continue; @@ -832,6 +823,7 @@ class wsDAOBook extends commonDAO { $pdftk->setManualArg($args); $pdftk->execute(); } + } ?> \ No newline at end of file -- 2.39.5