// .\r
$db->document_links_versions->primary('pk_document_links_version', 'document_id', 'update');\r
$db->document_links_versions->index('idx_document_links_version_update', 'BTREE', 'update');\r
+\r
+ $db->special_links_versions->book_id('integer', 0, false);\r
+ $db->special_links_versions->links('text', 0, false);\r
+ $db->special_links_versions->rulers('text', 0, false);\r
+ $db->special_links_versions->update('integer', 0, false);\r
+\r
+ $db->special_links_versions->primary('pk_special_links_versionsn', 'book_id', 'update');\r
+ $db->special_links_versions->index('idx_special_links_versions_update', 'BTREE', 'update');\r
+\r
// Table Books\r
$db->books->book_id('integer', 0, false);\r
$db->books->cid('varchar', 8, false);\r
$dao->getLinksAndRulers($book_id, $links, $rulers, $time);\r
$xls = $dao->getLinksAsExcel($links, $rulers);\r
\r
- self::getLinksFromExcel($xls, $nlinks, $nrulers);\r
+ wsLinks::getLinksFromExcel($xls, $nlinks, $nrulers);\r
\r
$dao = new wsDAODocument($core->con);\r
$dao->setLinksAndRulers($book_id, json_encode($nlinks), json_encode($nrulers), 'Restore links from ' . date('Y-m-d H:i:s', $time), $core->user->utilisateur_id);\r
}\r
\r
- public static function getLinksFromExcel($xls, &$links, &$rulers) {\r
- $s = $xls->setActiveSheetIndexByName('Links');\r
- $i = 0;\r
- $links = array();\r
- foreach ($s->getRowIterator() as $row) {\r
- $cellIterator = $row->getCellIterator();\r
- $cellIterator->setIterateOnlyExistingCells(false);\r
- if ($i == 0) {\r
- $cols = array();\r
- foreach ($cellIterator as $cell) {\r
- $cols[] = $cell->getValue();\r
- }\r
- } else {\r
- $link = array();\r
- $j = 0;\r
- foreach ($cellIterator as $cell) {\r
- $link[$cols[$j]] = $cell->getValue();\r
- $j++;\r
- }\r
- if ($link['display_area'] == '') {\r
- $link['display_area'] = '1';\r
- }\r
- if (trim($link['infobulle']) == '') {\r
- $link['infobulle'] = '';\r
- }\r
- $links[] = $link;\r
- }\r
-\r
- $i++;\r
- }\r
\r
- $i = 0;\r
- $rulers = array();\r
- $s = $xls->setActiveSheetIndexByName('Rulers');\r
- foreach ($s->getRowIterator() as $row) {\r
- $cellIterator = $row->getCellIterator();\r
- $cellIterator->setIterateOnlyExistingCells(false);\r
- if ($i == 0) {\r
- $cols = array();\r
- foreach ($cellIterator as $cell) {\r
- $cols[] = $cell->getValue();\r
- }\r
- } else {\r
- $link = array();\r
- $j = 0;\r
- foreach ($cellIterator as $cell) {\r
- $ruler[$cols[$j]] = $cell->getValue();\r
- $j++;\r
- }\r
-\r
- $rulers[] = $ruler;\r
- }\r
- $i++;\r
- }\r
- }\r
\r
public static function importLinksAsExcel($args) {\r
global $core;\r
$reader = new PHPExcel_Reader_Excel2007();\r
$xls = $reader->load($_FILES['file']['tmp_name']);\r
\r
- self::getLinksFromExcel($xls, $links, $rulers);\r
+ wsLinks::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
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>\r
<script type="text/javascript" src="/js/pdfprint.js"></script>\r
<link rel="stylesheet" type="text/css" href="/style/ws/printpdf.css" />\r
- \r
</head>\r
<body>\r
<iframe id="pdf" name="pdff" src="' . $dest['url'] . '" width="100%" height="100%"></iframe>\r
\r
if ($data['book_id'] == 'new' || $data['book_id'] == '') {\r
$c->date = TIME;\r
- $c->hash = md5(rand(0, 1234567893));\r
+ $c->hash = md5(rand(0, 123456789365469));\r
$c->compteur_visites = 20;\r
$c->parametres = serialize(new wsParametres());\r
$c->changedate = TIME;\r
}\r
\r
public function setSpecialLinksAndRulers($book_id, $links, $rulers) {\r
+ $c1 = $this->con->openCursor('special_links_versions');\r
$c = $this->con->openCursor('books');\r
- $c->specialLinks = json_encode(json_decode($links, false));\r
- $c->specialRulers = json_encode(json_decode($rulers, false));\r
- $c->changedate = TIME;\r
+\r
+ if (is_string($links)) {\r
+ $links = json_encode(json_decode($links, false));\r
+ }\r
+ if (is_string($rulers)) {\r
+ $rulers = json_encode(json_decode($rulers, false));\r
+ }\r
+\r
+ if (is_array($links)) {\r
+ $links = json_encode($links);\r
+ }\r
+ if (is_array($rulers)) {\r
+ $rulers = json_encode($rulers);\r
+ }\r
+\r
+\r
+\r
+ $c1->links = $c->specialLinks = $links;\r
+ $c1->rulers = $c->specialRulers = $rulers;\r
+ $c1->update = $c->changedate = TIME;\r
+ $c1->book_id = $book_id;\r
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
+ try {\r
+ $c1->insert();\r
+ } catch (Exception $e) {\r
+ $c1->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\' AND `update`=' . TIME);\r
+ }\r
}\r
\r
public function setTheme($book_id, $theme) {\r
}\r
\r
$file = '/home/stats/www/exclude/' . $book_id;\r
- \r
+\r
if (count($ip)) {\r
file_put_contents($file, implode(',', $ip));\r
chmod($file, 0777);\r
$flex->addFont(FONT_PATH . '/vagrounded/VAGRoundedStd-Light.otf', 'GeneralFont', $lang->charset);\r
$flex->addFont(FONT_PATH . '/FluidbookCredits.ttf', 'CreditsFont', 'ASCII');\r
$flexLight->addFont(FONT_PATH . '/vagrounded/VAGRoundedStd-Bold.otf', 'LoaderFont', 'Numerals');\r
- }else if($theme->parametres->fontKit=='gill'){\r
+ } else if ($theme->parametres->fontKit == 'gill') {\r
$flex->addFont(FONT_PATH . '/gill/gill.ttf', 'BoldFont', $lang->charset);\r
$flex->addFont(FONT_PATH . '/gill/gill.ttf', 'GeneralFont', $lang->charset);\r
$flex->addFont(FONT_PATH . '/FluidbookCredits.ttf', 'CreditsFont', 'ASCII');\r
while ($r->fetch()) {\r
wsLinks::setDocumentLinks($r->document_id, $r->links, $r->rulers, $user, 'Links restored from ' . date('Y-m-d H:i:s', $update) . ' version', TIME);\r
}\r
+\r
+ $r = $this->con->select('SELECT * FROM special_links_versions WHERE `update`=' . $update . ' AND book_id=\'' . $this->con->escape($book_id) . '\'');\r
+ if ($r->count()) {\r
+ $c = $this->con->openCursor('books');\r
+ $c->specialLinks = $r->links;\r
+ $c->specialRulers = $r->rulers;\r
+ $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
+ }\r
}\r
\r
public function putLinksFromCSV($document_id) {\r
}\r
}\r
\r
+ $specialLinks = array();\r
+ $specialRulers = array();\r
+\r
foreach ($t as $page => $tt) {\r
if (!is_int($page)) {\r
+ if (isset($tt['links'])) {\r
+ $specialLinks = array_merge($specialLinks, $tt['links']);\r
+ }\r
+ if (isset($tt['rulers'])) {\r
+ $specialRulers = array_merge($specialRulers, $tt['rulers']);\r
+ }\r
continue;\r
}\r
$infos = $pages[$page];\r
foreach ($links as $document_id => $dummy) {\r
wsLinks::setDocumentLinks($document_id, json_encode($links[$document_id]), json_encode($rulers[$document_id]), $user, $comments, TIME);\r
}\r
+ \r
+ $daoBook->setSpecialLinksAndRulers($book_id, $specialLinks, $specialRulers);\r
\r
$c = $this->con->openCursor('books');\r
$c->changedate = TIME;\r
}\r
\r
public function getLinksVersions($book_id) {\r
+ $r = $this->con->select('SELECT * FROM special_links_versions WHERE book_id=\'' . $this->con->escape($book_id) . '\'');\r
+ $specials = array();\r
+ while ($r->fetch()) {\r
+ $ll = json_decode($r->links);\r
+ $lr = json_decode($r->rulers);\r
+ $specials[$r->update] = array('links' => count($ll), 'rulers' => count($lr));\r
+ }\r
+\r
+\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
$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
+ if (isset($specials[$r->update])) {\r
+ $res[$r->update] = $specials[$r->update];\r
+ } else {\r
+ $res[$r->update] = array('links' => 0, 'rulers' => 0);\r
+ }\r
}\r
+\r
+\r
$ll = json_decode($r->links);\r
foreach ($ll as $lll) {\r
$res[$r->update]['links'] += count($lll);\r
$c->user = $user;
$c->update = $time;
$c->insert();
-
+
$core->con->execute('DELETE FROM document_links WHERE document_id=' . $document_id);
$c1->insert();
}
$links = array_merge($links, $book->specialLinks);
}
+ public static function getLinksFromExcel($xls, &$links, &$rulers) {
+ $s = $xls->setActiveSheetIndexByName('Links');
+ $i = 0;
+ $links = array();
+ foreach ($s->getRowIterator() as $row) {
+ $cellIterator = $row->getCellIterator();
+ $cellIterator->setIterateOnlyExistingCells(false);
+ if ($i == 0) {
+ $cols = array();
+ foreach ($cellIterator as $cell) {
+ $cols[] = $cell->getValue();
+ }
+ } else {
+ $link = array();
+ $j = 0;
+ foreach ($cellIterator as $cell) {
+ $link[$cols[$j]] = $cell->getValue();
+ $j++;
+ }
+ if ($link['display_area'] == '') {
+ $link['display_area'] = '1';
+ }
+ if (trim($link['infobulle']) == '') {
+ $link['infobulle'] = '';
+ }
+ $links[] = $link;
+ }
+
+ $i++;
+ }
+
+ $i = 0;
+ $rulers = array();
+ $s = $xls->setActiveSheetIndexByName('Rulers');
+ foreach ($s->getRowIterator() as $row) {
+ $cellIterator = $row->getCellIterator();
+ $cellIterator->setIterateOnlyExistingCells(false);
+ if ($i == 0) {
+ $cols = array();
+ foreach ($cellIterator as $cell) {
+ $cols[] = $cell->getValue();
+ }
+ } else {
+ $link = array();
+ $j = 0;
+ foreach ($cellIterator as $cell) {
+ $ruler[$cols[$j]] = $cell->getValue();
+ $j++;
+ }
+
+ $rulers[] = $ruler;
+ }
+ $i++;
+ }
+ }
+
}
?>
return false;\r
});\r
\r
-\r
-\r
-\r
-\r
$(".restoreLink").click(restoreLink);\r
\r
$(".hide_new_value").change(function() {\r