<?php\r
+\r
class wsDAOBook extends commonDAO {\r
+\r
/**\r
* wsDAOBook::singleton()\r
*\r
* @param mixed $r\r
* @return\r
*/\r
- protected function singleton($r)\r
- {\r
+ protected function singleton($r) {\r
$book = new wsBook();\r
$book->book_id = $r->book_id;\r
$book->nom = $r->nom;\r
return $book;\r
}\r
\r
- protected function cree($r)\r
- {\r
+ protected function cree($r) {\r
$book = new wsBook();\r
$book->book_id = 'new';\r
$book->nom = '';\r
return $book;\r
}\r
\r
- protected function getNextId()\r
- {\r
+ protected function getNextId() {\r
$r = $this->con->select('SELECT MAX(book_id) AS book_id FROM books');\r
if ($r->book_id < 10000) {\r
return 10000;\r
return $r->book_id + 1;\r
}\r
\r
- public function selectById($book_id = null)\r
- {\r
+ public function selectById($book_id = null) {\r
if (is_null($book_id)) {\r
return $this->cree();\r
}\r
* @param mixed $data\r
* @return\r
*/\r
- public function sauve($createur, $data)\r
- {\r
+ public function sauve($createur, $data) {\r
$c = $this->con->openCursor('books');\r
if (isset($data['nom'])) {\r
$c->nom = $data['nom'];\r
return $this->selectById($book_id);\r
}\r
\r
- public function duplicate($book_id, $createur, $nom)\r
- {\r
+ public function duplicate($book_id, $createur, $nom) {\r
$r = $this->con->select('SELECT * FROM books_vue WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
\r
$parametres = unserialize($r->parametres);\r
return $this->selectById($book_id);\r
}\r
\r
- public function creeEmpty($createur, $lang, $nom)\r
- {\r
+ public function creeEmpty($createur, $lang, $nom) {\r
$c = $this->con->openCursor('books');\r
\r
$parametres = new wsBookParametres($this);\r
return $this->selectById($book_id);\r
}\r
\r
- public function supprime($book_id)\r
- {\r
+ public function supprime($book_id) {\r
$this->con->execute('DELETE FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
return $this->con->execute('DELETE FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function count($limitedToUserRights = false)\r
- {\r
+ public function count($limitedToUserRights = false) {\r
$filters = $this->makeWhereFromFiltres();\r
if ($filters == '1=1') {\r
$table = 'books';\r
return $r->nb;\r
}\r
\r
- public function getPagesOfBook($book_id)\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
while ($r->fetch()) {\r
$c = unserialize($r->conversion);\r
$c = $c->pages[$r->document_page];\r
}\r
- if (isset($n[$r->document_page-1])) {\r
- $num = $n[$r->document_page-1];\r
+ if (isset($n[$r->document_page - 1])) {\r
+ $num = $n[$r->document_page - 1];\r
} else {\r
$num = '';\r
}\r
'version' => $r->version,\r
'defaultNum' => $num,\r
'nb_pages' => $r->doc_pages\r
- );\r
+ );\r
\r
$qp = array('resolution', 'method', 'quality', 'objects');\r
- foreach($qp as $p) {\r
+ foreach ($qp as $p) {\r
if (isset($c) && isset($c->$p)) {\r
$pages[$r->book_page][$p] = $c->$p;\r
}\r
return $pages;\r
}\r
\r
- public function appendDocument($book_id, $document_id)\r
- {\r
+ public function appendDocument($book_id, $document_id) {\r
$r = $this->con->select('SELECT MAX(book_page) AS book_page FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
- $lastPage = is_null($r->book_page)?0:$r->book_page;\r
+ $lastPage = is_null($r->book_page) ? 0 : $r->book_page;\r
$this->insertDocument($book_id, $lastPage, $document_id);\r
}\r
\r
- public function removePage($book_id, $book_page)\r
- {\r
+ public function removePage($book_id, $book_page) {\r
// Supprime la page\r
$this->con->execute('DELETE FROM book_pages WHERE book_page=\'' . $this->con->escape($book_page) . '\' AND book_id=\'' . $this->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
+ public function insertPage($book_id, $after_page, $document_id, $document_page) {\r
// Décale les pages vers le bas\r
$this->decalePages($book_id, $after_page, 1);\r
// Insère la page\r
$c->insert();\r
}\r
\r
- public function insertDocument($book_id, $after_page, $document_id)\r
- {\r
+ public function insertDocument($book_id, $after_page, $document_id) {\r
// Obtiens le book\r
$book = $this->selectById($book_id);\r
$num = $book->numerotation;\r
$c = $this->con->openCursor('book_pages');\r
$c->book_id = $book_id;\r
$c->document_id = $document_id;\r
- for($i = 1;$i <= $r->pages;$i++) {\r
+ for ($i = 1; $i <= $r->pages; $i++) {\r
$c->document_page = $i;\r
$c->book_page = $after_page + $i;\r
$c->insert();\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- protected function decalePages($book_id, $after_page, $decalage)\r
- {\r
- $decalage = ($decalage >= 0)?'+' . $decalage:$decalage;\r
+ protected function decalePages($book_id, $after_page, $decalage) {\r
+ $decalage = ($decalage >= 0) ? '+' . $decalage : $decalage;\r
$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) . '\'');\r
}\r
\r
- public function getListe($orderby = null, $sens = null, $limit = null, $limitedToUserRights = false)\r
- {\r
+ public function getListe($orderby = null, $sens = null, $limit = null, $limitedToUserRights = false) {\r
if (!is_null($this->q)) {\r
$where = '(';\r
if ($this->search_id) {\r
}\r
$where .= $this->limitToUserRights($limitedToUserRights);\r
\r
- $orderby = is_null($orderby)?'book_id':$orderby;\r
- $sens = is_null($sens)?'DESC':$sens;\r
- $limit = is_null($limit)?'':$this->con->limit($limit);\r
+ $orderby = is_null($orderby) ? 'book_id' : $orderby;\r
+ $sens = is_null($sens) ? 'DESC' : $sens;\r
+ $limit = is_null($limit) ? '' : $this->con->limit($limit);\r
\r
$sql = 'SELECT * FROM books_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit;\r
$r = $this->con->select($sql);\r
return $this->factory($r);\r
}\r
\r
- protected function limitToUserRights($utilisateur)\r
- {\r
+ protected function limitToUserRights($utilisateur) {\r
if ($utilisateur) {\r
return ' AND proprietaire IN (' . $utilisateur->ws_rights . ')';\r
}\r
return '';\r
}\r
\r
- protected function makeWhereFromFiltres()\r
- {\r
+ protected function makeWhereFromFiltres() {\r
if (!is_null($this->filtres)) {\r
$w = array('1=1');\r
if (commonFiltre::test('admin_book', $this->filtres)) {\r
}\r
}\r
\r
- public function setChapters($book_id, $json)\r
- {\r
+ public function setChapters($book_id, $json) {\r
$c = $this->con->openCursor('books');\r
$c->chapters = json_encode(json_decode($json, false));\r
$c->changedate = TIME;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setTheme($book_id, $theme)\r
- {\r
+ public function setTheme($book_id, $theme) {\r
$c = $this->con->openCursor('books');\r
$c->theme = $theme;\r
$c->changedate = TIME;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setStatus($book_id, $status)\r
- {\r
+ public function setStatus($book_id, $status) {\r
$c = $this->con->openCursor('books');\r
$c->status = $status;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
return $this->selectById($book_id);\r
}\r
\r
- public function setChaptersFromOldFluidbook($book_id)\r
- {\r
+ public function setChaptersFromOldFluidbook($book_id) {\r
$book = $this->selectById($book_id);\r
$n = explode(',', $book->numerotation);\r
\r
$xml = simplexml_load_file('http://ws.fluidbook.com/books/' . $book_id . '/data/links.xml');\r
$res = array();\r
$chapters = $xml->xpath('//chapters');\r
- foreach($chapters as $ch) {\r
+ foreach ($chapters as $ch) {\r
$c = array();\r
- $c['label'] = (string)$ch->txt;\r
+ $c['label'] = (string) $ch->txt;\r
\r
- $p = intval((string)$ch->page);\r
+ $p = intval((string) $ch->page);\r
if ($p <= 0) {\r
continue;\r
}\r
$c['page'] = $n[$p];\r
- $c['level'] = intval((string)$ch->level);\r
+ $c['level'] = intval((string) $ch->level);\r
$res[] = $c;\r
}\r
\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setLang($book_id, $base, $traductions)\r
- {\r
+ public function setLang($book_id, $base, $traductions) {\r
// Cleanup user translations\r
$traductions = json_decode($traductions, true);\r
- foreach($traductions as $k => $v) {\r
+ foreach ($traductions as $k => $v) {\r
$traductions[$k] = trim($v);\r
}\r
\r
$lang = $daoLang->selectById($base);\r
// Cleanup base translations\r
$baseTraductions = $lang->traductions;\r
- foreach($baseTraductions as $k => $v) {\r
+ foreach ($baseTraductions as $k => $v) {\r
$baseTraductions[$k] = trim($v);\r
}\r
// Then compare them. If there is no differences, we don't save translations in the book\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setSettings($book_id, $settings)\r
- {\r
+ public function setSettings($book_id, $settings) {\r
$book = $this->selectById($book_id);\r
$parametres = $book->parametres;\r
$new = json_decode($settings, false);\r
- foreach($new as $k => $v) {\r
+ foreach ($new as $k => $v) {\r
if ($k == '_empty_') {\r
continue;\r
}\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setProprietaire($book_id, $proprietaire_id)\r
- {\r
+ public function setProprietaire($book_id, $proprietaire_id) {\r
$c = $this->con->openCursor('books');\r
$c->proprietaire = $proprietaire_id;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function setTache($book_id, $tache)\r
- {\r
+ public function setTache($book_id, $tache) {\r
$c = $this->con->openCursor('books');\r
$c->tache = $tache;\r
$c->status = 2;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function touch($book_id)\r
- {\r
+ public function touch($book_id) {\r
$c = $this->con->openCursor('books');\r
$c->changedate = TIME;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function touchCompile($book_id)\r
- {\r
+ public function touchCompile($book_id) {\r
$c = $this->con->openCursor('books');\r
$c->compiledate = TIME;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
}\r
\r
- public function isUpToDate($book_id)\r
- {\r
+ public function isUpToDate($book_id) {\r
$r = $this->con->select('SELECT changedate,compiledate FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
return $r->compiledate > $r->changedate;\r
}\r
\r
- public function setComposition($book_id, $pages)\r
- {\r
+ public function setComposition($book_id, $pages) {\r
$numerotation = array();\r
$nb_pages = 0;\r
- foreach($pages as $p) {\r
+ foreach ($pages as $p) {\r
$numerotation[] = $p->virtual;\r
$nb_pages++;\r
}\r
$c = $this->con->openCursor('book_pages');\r
$c->book_id = $book_id;\r
$i = 1;\r
- foreach($pages as $p) {\r
+ foreach ($pages as $p) {\r
$c->document_id = $p->document_id;\r
$c->document_page = $p->document_page;\r
$c->book_page = $i;\r
}\r
}\r
\r
- public function makeTextsIndexes($book_id, &$index, &$textes)\r
- {\r
+ public function makeTextsIndexes($book_id, &$index, &$textes) {\r
$pages = $this->getPagesOfBook($book_id);\r
$index = array();\r
$textes = array();\r
- foreach($pages as $book_page => $infos) {\r
+ foreach ($pages as $book_page => $infos) {\r
$tfile = WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page'] . '.txt';\r
$ifile = WS_DOCS . '/' . $infos['document_id'] . '/i' . $infos['document_page'] . '.txt';\r
$text = file_get_contents($tfile);\r
ksort($index);\r
}\r
\r
- protected function fillIndexWithWords(&$index, $page, $ipage)\r
- {\r
+ protected function fillIndexWithWords(&$index, $page, $ipage) {\r
$twords = explode("\n", trim($ipage));\r
\r
- foreach($twords as $woadata) {\r
+ foreach ($twords as $woadata) {\r
$w1 = explode(',', trim($woadata));\r
if (count($w1) <= 1) {\r
continue;\r
\r
$words = explode("\t", $wordslist);\r
\r
- foreach($words as $word) {\r
+ foreach ($words as $word) {\r
list($wordwa, $count) = explode('$', $word, 2);\r
if (!isset($index[$woa]['words'][$wordwa])) {\r
$index[$woa]['words'][$wordwa] = array('total' => 0, 'pages' => array());\r
}\r
}\r
\r
- public function getNumerotationFromDocs($book_id)\r
- {\r
+ public function getNumerotationFromDocs($book_id) {\r
$pages = $this->getPagesOfBook($book_id);\r
}\r
\r
- public function compile($book_id, $version = 3, $complete = false)\r
- {\r
+ public function compile($book_id, $version = 3, $complete = false) {\r
if ($version == 3) {\r
return $this->compile3($book_id, $complete);\r
}\r
* @param mixed $complete\r
* @return\r
*/\r
- public function compile3($book_id, $complete)\r
- {\r
+ public function compile3($book_id, $complete) {\r
cubePHP::neverStop();\r
$filesToCopy = array();\r
$finalDir = WS_BOOKS . '/final/' . $book_id . '/';\r
\r
$flex = new cubeFlexCompiler('FluidbookDatas', $compilerDir, 'flash.display.Sprite', explode(';', AS3_SOURCES), MXMLC_PATH);\r
$flexLight = new cubeFlexCompiler('FluidbookDatasLight', $compilerDir, 'flash.display.Sprite', explode(';', AS3_SOURCES), MXMLC_PATH);\r
- $flex->addVariable('links', $links , false, true, 'JSONObject');\r
+ $flex->addVariable('links', $links, false, true, 'JSONObject');\r
\r
- foreach($links as $link) {\r
+ foreach ($links as $link) {\r
if ($link['type'] == 15) {\r
$flex->addBitmap($workingDir . '/' . $link['to'], 'link_datas_' . $link['id']);\r
}\r
$flexLight->addVariable('datas', $book->parametres->toStandardObject(), false, true, 'JSONObject');\r
$flexLight->addVariable('id', $book_id, false, true, 'uint');\r
\r
- $traductions = (!count($book->traductions))?$lang->traductions:$book->traductions;\r
+ $traductions = (!count($book->traductions)) ? $lang->traductions : $book->traductions;\r
$allTraductions = array();\r
- foreach($langs as $lang) {\r
+ foreach ($langs as $lang) {\r
$allTraductions[$lang->lang_id] = $lang->traductions;\r
}\r
\r
$flex->addVariable('index', $index, false, true, 'JSONObject');\r
$flex->addVariable('textes', $textes, false, true, 'JSONObject');\r
\r
- foreach($pages as $i => $infos) {\r
+ foreach ($pages as $i => $infos) {\r
$base = WS_DOCS . '/' . $infos['document_id'] . '/p' . $infos['document_page'];\r
$swffile = $base . '.swf';\r
if (file_exists($swffile)) {\r
}\r
// Icons assets\r
$iconsRoot = WS_ICONS . '/' . $theme->parametres->iconSet . '/';\r
- foreach(wsIcone::$files as $file) {\r
+ foreach (wsIcone::$files as $file) {\r
$flex->addBitmap($iconsRoot . 'nav-' . $file . '.png', 'nav_' . $file);\r
}\r
// Fonts\r
$res .= $flex->compile() . "\n\n-------------------\n\n";\r
$flexLight->addVariable('datasSize', filesize($compilerDir . '/FluidbookDatas.swf'));\r
$res .= $flexLight->compile();\r
+ // Basket\r
+ if ($book->parametres->basket) { \r
+ $formats = array('jpg', 'png', 'jpeg');\r
+ $referencesFile = $workingDir . '/' . $book->parametres->basketReferences;\r
+ $references = array();\r
+ if (file_exists($referencesFile)) {\r
+ $fp = fopen($reference_file, "rb");\r
+ $i = 0;\r
+ while ($line = fgetcsv($fp)) {\r
+ $references[] = $line;\r
+ if ($i > 0) {\r
+ $refid = trim($line[0]);\r
+ foreach ($formats as $f) {\r
+ $refimage = $workingDir . '/' . $refid . '.' . $f;\r
+ if (file_exists($refimage)) {\r
+ $flex->addBitmap($refimage, "basket_image_" + ($i - 1));\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ $i++;\r
+ }\r
+ }\r
+ $flex->addVariable('basketReferences', $references, "JSONObject");\r
+ }\r
\r
$filesToCopy['FluidbookDatas.swf'] = $compilerDir . '/FluidbookDatas.swf';\r
$filesToCopy['FluidbookDatasLight.swf'] = $compilerDir . '/FluidbookDatasLight.swf';\r
}\r
}\r
\r
- foreach($filesToCopy as $local => $source) {\r
+ foreach ($filesToCopy as $local => $source) {\r
$localPath = $finalDir . $local;\r
// if (!file_exists($localPath) || filemtime($localPath) < filemtime($source) || filesize($localPath) != filesize($source)) {\r
copy($source, $localPath);\r
return $res;\r
}\r
\r
- public function compilePDF($book, $pages)\r
- {\r
+ public function compilePDF($book, $pages) {\r
$finalPDF = WS_BOOKS . '/final/' . $book->book_id . '/data/document.pdf';\r
\r
if (!$book->parametres->pdf) {\r
$nb_pages = array();\r
$j = 0;\r
$k = 0;\r
- foreach($pages as $i => $infos) {\r
+ foreach ($pages as $i => $infos) {\r
$doc = WS_DOCS . '/' . $infos['document_id'] . '/crop.pdf';\r
if (!isset($pdfList[$doc])) {\r
$pdfList[$doc] = $j;\r
}\r
\r
$args = '';\r
- foreach($pdfList as $doc => $index) {\r
+ foreach ($pdfList as $doc => $index) {\r
$lettre = cubeMath::toPDFLetter($index, true);\r
$args .= $lettre . '=' . $doc . ' ';\r
}\r
$ranges = array();\r
$currentRange = null;\r
\r
- foreach($pagesList as $p) {\r
+ foreach ($pagesList as $p) {\r
$lettre = cubeMath::toPDFLetter($p[0], true);\r
$page = $p[1];\r
\r
}\r
}\r
\r
- foreach($ranges as $range) {\r
+ foreach ($ranges as $range) {\r
$args .= ' ' . $range['lettre'] . $range['start'];\r
if ($range['start'] == $range['end']) {\r
continue;\r
$pdftk->setManualArg($args);\r
$pdftk->execute();\r
}\r
+\r
}\r
\r
?>
\ No newline at end of file