<?php
-class wsDAODocument extends commonDAO {
+class wsDAODocument extends commonDAO
+{
public static $normal = array('document_id', 'file', 'proprietaire', 'pages', 'date', 'numberSections', 'version');
public static $complex = array('localInfos', 'bookmarks', 'generalInfos', 'conversionInfos', 'trim');
- public function singleton($r) {
+ public function singleton($r)
+ {
$document = new wsDocument();
foreach (self::$normal as $k) {
$document->$k = $r->$k;
return $document;
}
- public function setFluidbookLinksFromCSV($book_id) {
+ public function setFluidbookLinksFromCSV($book_id)
+ {
$daoBook = new wsDAOBook($this->con);
$pages = $daoBook->getPagesOfBook($book_id);
}
}
- public function restoreLinksVersion($book_id, $update, $user = 0) {
+ public function restoreLinksVersion($book_id, $update, $user = 0)
+ {
wsLinks::getLinksAndRulers($book_id, $links, $rulers, $update);
$this->setLinksAndRulers($book_id, json_encode($links), json_encode($rulers), 'Restore links from ' . date('Y-m-d H:i:s', $update), $user);
}
}
- public function putLinksFromCSV($document_id) {
+ public function putLinksFromCSV($document_id)
+ {
$log = array('Copie des liens du PDF vers la base de données');
$document = $this->selectById($document_id);
return implode("\n", $log);
}
- public function setLinksAndRulers($book_id, $links, $rulers, $comments = '', $user = 0) {
+ public function setLinksAndRulers($book_id, $links, $rulers, $comments = '', $user = 0)
+ {
$daoBook = new wsDAOBook($this->con);
$pages = $daoBook->getPagesOfBook($book_id, false);
$links = json_decode($links, false);
$rulers = json_decode($rulers, false);
+ $links = wsLinks::encryptLinks($links);
+
$t = array();
foreach ($links as $link) {
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');
}
- public function copyLinks($from, $to) {
+ public function copyLinks($from, $to)
+ {
$sql = 'REPLACE INTO document_links_versions (`document_id`,`links`,`rulers`,`update`) '
. 'SELECT \'' . $to . '\',`links`,`rulers`,`update` FROM document_links_versions WHERE document_id=\'' . $from . '\'';
$this->con->execute($sql);
}
- public function setLinksFromOldFluidbook($book_id) {
+ public function setLinksFromOldFluidbook($book_id)
+ {
$daoBook = new wsDAOBook($this->con);
$pages = $daoBook->getPagesOfBook($book_id);
$c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\'');
}
- public function getLinksAndRulers($book_id, &$links, &$rulers, $time = null) {
+ public function getLinksAndRulers($book_id, &$links, &$rulers, $time = null)
+ {
return wsLinks::getLinksAndRulers($book_id, $links, $rulers, $time);
}
- public function getLinksVersions($book_id) {
+ public function getLinksVersions($book_id)
+ {
$r = $this->con->select('SELECT * FROM special_links_versions WHERE book_id=\'' . $this->con->escape($book_id) . '\'');
$specials = array();
}
$res = array();
- $sql='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) . ')';
+ $sql = '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 = $this->con->select($sql);
return $res;
}
- public function getNextId() {
+ public function getNextId()
+ {
$r = $this->con->select('SELECT MAX(document_id) AS document_id FROM documents');
if ($r->document_id < 100000) {
return 100000;
return $r->document_id + 1;
}
- public function selectById($document_id) {
+ public function selectById($document_id)
+ {
$r = $this->con->select('SELECT * FROM documents WHERE document_id=\'' . $this->con->escape($document_id) . '\'');
return $this->singleton($r);
}
- public function selectByBookId($book_id) {
+ public function selectByBookId($book_id)
+ {
$r = $this->con->select('SELECT * FROM documents WHERE document_id IN(SELECT document_id FROM book_pages WHERE book_id=\'' . $this->con->escape($book_id) . '\')');
return $this->factory($r);
}
- public function selectInList($documents_id) {
+ public function selectInList($documents_id)
+ {
$r = $this->con->select('SELECT * FROM documents WHERE document_id IN(' . implode(',', $documents_id) . ')');
return $this->factory($r);
}
- public function cree() {
+ public function cree()
+ {
$document = new wsDocument();
$document->document_id = 'new';
$document->file = '';
return $document;
}
- public function sauve($data) {
+ public function sauve($data)
+ {
if (!isset($data['document_id'])) {
$data['document_id'] = 'new';
}
return $doc;
}
- public function updateField($document_id, $fieldName, $value) {
+ public function updateField($document_id, $fieldName, $value)
+ {
$c = $this->con->openCursor('documents');
$c->$fieldName = $value;
$c->update('WHERE document_id=\'' . $this->con->escape($document_id) . '\'');
}
- public function updateFromObject($document) {
+ public function updateFromObject($document)
+ {
$data = array();
foreach (self::$normal as $k) {
$data[$k] = $document->$k;
return $this->sauve($data);
}
- public function getLinksAsExcel($links, $rulers) {
+ public function getLinksAsExcel($links, $rulers)
+ {
return wsLinks::linksToExcel($links, $rulers);
}
class wsLinks
{
protected static $_testLinkCache = null;
+ protected static $_linksKey = null;
public static function linksToExcel($links, $rulers, $pages = null)
{
'infobulle' => '', 'numerotation' => $numerotation, 'display_area' => '1');
}
}
+
+ public static function _getLinkKey()
+ {
+ if (self::$_linksKey === null) {
+ self::$_linksKey = base64_decode('o2p2yYGI8yMEHf+Y5/e6NdTINbbXg3NIo8BODgdhPxI=');
+ }
+ return self::$_linksKey;
+ }
+
+ public static function encryptLinks($links)
+ {
+ $res = [];
+ foreach ($links as $key => $link) {
+ $res[$key] = self::encryptLinkAttrs($link);
+ }
+ return $res;
+ }
+
+ public static function encryptLinkAttrs($link)
+ {
+ if (is_array($link)) {
+ $link = CubeIT_Util_Object::asObject($link);
+ }
+
+ if ($link->type != 13 && $link->type != 14) {
+ return $link;
+ }
+
+ $attrs = ['image_rollover'];
+ foreach ($attrs as $attr) {
+ $link->$attr = trim($link->$attr);
+ if (strpos($link->$attr, '///') === 0 || $link->$attr == '') {
+ continue;
+ }
+ $link->$attr = '///' . CubeIT_Crypt::safeEncrypt($link->uid . '|||' . $link->$attr, self::_getLinkKey());
+ }
+ return $link;
+ }
+
+ public static function decryptLink($link)
+ {
+ if (is_array($link)) {
+ $link = CubeIT_Util_Object::asObject($link);
+ }
+
+ foreach ($link as $attr => $item) {
+ if (strpos($item, '///') !== 0) {
+ continue;
+ }
+ $v = CubeIT_Crypt::safeDecrypt(substr($item, 3), self::_getLinkKey());
+ $e = explode('|||', $v);
+ if ($e[0] === $link->uid) {
+ $link->$attr = $e[1];
+ } else {
+ $link->$attr = '';
+ }
+ }
+ return $link;
+ }
+
+ public static function decryptLinks($links)
+ {
+ $res = [];
+ foreach ($links as $key => $link) {
+ $res[$key] = self::decryptLink($link);
+ }
+ return $res;
+ }
}
\ No newline at end of file