]> _ Git - cubeextranet.git/commitdiff
wip #3054 @2
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 24 Sep 2019 15:18:34 +0000 (15:18 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Tue, 24 Sep 2019 15:18:34 +0000 (15:18 +0000)
inc/ws/Util/class.ws.util.php
inc/ws/Util/html5/master/class.ws.html5.compiler.php
inc/ws/Util/html5/master/class.ws.html5.links.php

index 7e4b267be7ea9594ffa28fdcecd41b53408a3808..4c5dffda867eb2e0af9c862c0d54519b7a2cfb63 100644 (file)
 \r
 class wsUtil\r
 {\r
-       public static function excelToArray($excelFile, $assoc = false)\r
-       {\r
-               $worksheets = array();\r
-\r
-               if ($assoc) {\r
-                       $cacheBase = WS_CACHE . '/xlsx2assocarray/';\r
-               } else {\r
-                       $cacheBase = WS_CACHE . '/xlsx2array/';\r
-               }\r
-               if (!file_exists($cacheBase)) {\r
-                       mkdir($cacheBase, 0777, true);\r
-               }\r
-\r
-               if (CubeIT_Util_Url::isDistant($excelFile)) {\r
-                       $tmp = CubeIT_Files::tempnam();\r
-                       copy($excelFile, $tmp);\r
-\r
-                       $hash = hash_file('sha256', $tmp);\r
-                       $dest = $cacheBase . $hash . '.xlsx';\r
-\r
-                       if (!file_exists($dest)) {\r
-                               copy($tmp, $dest);\r
-                       }\r
-                       $excelFile = $dest;\r
-               }\r
-               if (!file_exists($excelFile)) {\r
-                       return array();\r
-               }\r
-\r
-               $cacheFile = $cacheBase . sha1($excelFile . '/' . filemtime($excelFile));\r
-\r
-               if (file_exists($cacheFile) && !$assoc) {\r
-                       $worksheets = json_decode(file_get_contents($cacheFile), true);\r
-               } else {\r
-                       set_time_limit(0);\r
-                       include_once ROOT . '/inc/ZendFramework/PHPExcel/PHPExcel.php';\r
-                       $objReader = PHPExcel_IOFactory::createReader('Excel2007');\r
-                       $objPHPExcel = $objReader->load($excelFile);\r
-\r
-                       foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {\r
-                               if ($worksheet->getSheetState() != PHPExcel_Worksheet::SHEETSTATE_VISIBLE) {\r
-                                       continue;\r
-                               }\r
-                               $title = $worksheet->getTitle();\r
-                               if (strlen($title) == 2 && cubeCountry::getCountry($title)) {\r
-                                       $title = cubeCountry::getCountry($title);\r
-                               }\r
-\r
-                               if ($assoc) {\r
-                                       $worksheets[$title] = self::_assocSheet($worksheet->toArray(null, true, true));\r
-                               } else {\r
-                                       $worksheets[$title] = $worksheet->toArray(null, true, true);\r
-                               }\r
-                       }\r
-                       file_put_contents($cacheFile, json_encode($worksheets));\r
-               }\r
-\r
-               return $worksheets;\r
-       }\r
-\r
-       protected static function _assocSheet($s)\r
-       {\r
-               $res = [];\r
-               $colslabels = [];\r
-               foreach ($s[0] as $j => $collabel) {\r
-                       if (trim($collabel) == '') {\r
-                               continue;\r
-                       }\r
-                       $colslabels[$j] = $collabel;\r
-               }\r
-               for ($i = 1; $i < count($s); $i++) {\r
-                       $r = [];\r
-                       foreach ($colslabels as $j => $collabel) {\r
-                               $r[$collabel] = $s[$i][$j];\r
-                       }\r
-                       $res[] = $r;\r
-               }\r
-\r
-               return $res;\r
-       }\r
-\r
-\r
-       public static function atlanticReferences($references, $dir, $log = null, $copy = 'copy')\r
-       {\r
-               if (!file_exists($dir)) {\r
-                       mkdir($dir, 0777, true);\r
-               }\r
-               foreach ($references as $i => $sheet) {\r
-                       foreach ($sheet as $j => $line) {\r
-                               foreach ($line as $k => $v) {\r
-                                       if (preg_match('|^http:\/\/atlantic-international-book-com\.com\/files\/(.*)$|', $v, $matches)) {\r
-                                               $local = $dir . '/' . $matches[1];\r
-                                               $ldir = dirname($local);\r
-                                               if (!file_exists($ldir)) {\r
-                                                       mkdir($ldir, 0777, true);\r
-                                               }\r
-                                               $url = str_replace(' ', '%20', $v);\r
-                                               $cache = WS_CACHE . '/atlantic/' . md5($url);\r
-                                               if (!file_exists($cache) || filemtime($url) > filemtime($cache)) {\r
-                                                       copy($url, $cache);\r
-                                                       $copylog = ' (copy) ';\r
-                                               } else {\r
-                                                       $copylog = ' ';\r
-                                               }\r
-                                               call_user_func($copy, $cache, $dir . '/' . $matches[1]);\r
-                                               $references[$i][$j][$k] = 'local/' . $matches[1];\r
-                                               if (null !== $log) {\r
-                                                       call_user_func($log, 'Done' . $copylog . $matches[1]);\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               return $references;\r
-       }\r
-\r
-       /**\r
-        * @param $book wsBook\r
-        */\r
-       public static function compilePDF($book, $pages = null)\r
-       {\r
-               global $core;\r
-\r
-               if (null === $pages) {\r
-                       $dao = new wsDAOBook($core->con);\r
-                       $pages = $dao->getPagesOfBook($book->book_id);\r
-               }\r
-\r
-               if (substr($book->parametres->pdfName, 0, 4) == 'http') {\r
-                       return false;\r
-               }\r
-\r
-               $cacheDir = WS_BOOKS . '/pdf/' . $book->book_id;\r
-               if (!file_exists($cacheDir)) {\r
-                       mkdir($cacheDir, 0777, true);\r
-               }\r
-\r
-               $normalPDF = $cacheDir . '/normal.pdf';\r
-               $originalPDF = $cacheDir . '/original.pdf';\r
-               $compressedPDF = $cacheDir . '/compressed.pdf';\r
-\r
-               $files = [$normalPDF, $originalPDF, $compressedPDF];\r
-\r
-               foreach ($files as $file) {\r
-                       if (file_exists($file) && filesize($file) == 0) {\r
-                               unlink($file);\r
-                       }\r
-               }\r
-\r
-               if (file_exists($originalPDF)) {\r
-                       $fmtime = filemtime($originalPDF);\r
-                       if ($fmtime >= $book->composition_update) {\r
-                               $invalid = false;\r
-                               foreach ($pages as $i => $infos) {\r
-                                       $doc = wsDocument::getDir($infos['document_id']) . 'crop.pdf';\r
-                                       if (file_exists($doc) && filemtime($doc) > $fmtime) {\r
-                                               $invalid = true;\r
-                                       }\r
-                               }\r
-                       } else {\r
-                               $invalid = true;\r
-                       }\r
-               } else {\r
-                       $invalid = true;\r
-               }\r
-\r
-\r
-               if ($invalid) {\r
-                       $pdfList = array();\r
-                       $pagesList = array();\r
-                       $nb_pages = array();\r
-                       $j = 0;\r
-                       $k = 0;\r
-                       $original = true;\r
-\r
-                       foreach ($pages as $i => $infos) {\r
-                               if (!isset($firstDoc)) {\r
-                                       $firstDoc = $infos['document_id'];\r
-                               }\r
-\r
-                               $doc = wsDocument::getDir($infos['document_id']) . 'crop.pdf';\r
-                               if (!isset($pdfList[$doc])) {\r
-                                       $pdfList[$doc] = $j;\r
-                                       $nb_pages[$doc] = $infos['nb_pages'];\r
-                                       $k = $j;\r
-                                       $j++;\r
-                               } else {\r
-                                       $k = $pdfList[$doc];\r
-                               }\r
-                               $pagesList[$i] = array($k, $infos['document_page']);\r
-\r
-                               if ($i != $infos['document_page'] || $infos['document_id'] != $firstDoc) {\r
-                                       $original = false;\r
-                               }\r
-                       }\r
-\r
-                       if ($original) {\r
-                               self::copy(wsDocument::getDir($firstDoc) . 'crop.pdf', $originalPDF);\r
-                       } else {\r
-                               $args = '';\r
-                               foreach ($pdfList as $doc => $index) {\r
-                                       $lettre = cubeMath::toPDFLetter($index, true);\r
-                                       $args .= $lettre . '=' . $doc . ' ';\r
-                               }\r
-\r
-                               $args .= ' cat ';\r
-\r
-                               $ranges = array();\r
-                               $currentRange = null;\r
-\r
-                               foreach ($pagesList as $p) {\r
-                                       $lettre = cubeMath::toPDFLetter($p[0], true);\r
-                                       $page = $p[1];\r
-\r
-                                       // Initialise l'intervale\r
-                                       if (is_null($currentRange)) {\r
-                                               $currentRange = array('lettre' => $lettre, 'start' => $page, 'end' => $page);\r
-                                               continue;\r
-                                       }\r
-\r
-                                       // Poursuit le remplissage si la lettre est identique et si la page suivante est bien la page suivante dans le document\r
-                                       if ($currentRange['lettre'] == $lettre && $currentRange['end'] + 1 == $page) {\r
-                                               $currentRange['end'] = $page;\r
-                                               continue;\r
-                                       }\r
-\r
-                                       // Ajoute l'intervale à la liste finale\r
-                                       $ranges[] = $currentRange;\r
-\r
-                                       // Réinitialise l'intervale suivant\r
-                                       $currentRange = array('lettre' => $lettre, 'start' => $page, 'end' => $page);\r
-                               }\r
-\r
-                               // Ajoute la dernière\r
-                               if (!is_null($currentRange)) {\r
-                                       $ranges[] = $currentRange;\r
-                               }\r
-                               // Si le pdf final est constitué du document complet d'un document\r
-                               if (count($ranges) == 1 && $ranges[0]['start'] == 1) {\r
-                                       $alldocs = array_keys($pdfList);\r
-                                       $doc = array_pop($alldocs);\r
-                                       if ($nb_pages[$doc] == $ranges[0]['end']) {\r
-                                               self::copy($doc, $originalPDF);\r
-                                               return;\r
-                                       }\r
-                               }\r
-\r
-                               foreach ($ranges as $range) {\r
-                                       $args .= ' ' . $range['lettre'] . $range['start'];\r
-                                       if ($range['start'] == $range['end']) {\r
-                                               continue;\r
-                                       }\r
-                                       $args .= '-' . $range['end'];\r
-                               }\r
-\r
-                               $hash = sha1($args);\r
-\r
-                               $args .= ' output ' . $originalPDF;\r
-\r
-                               $cached = WS_BOOKS . '/pdf/' . $hash . '.pdf';\r
-\r
-                               if (file_exists($cached) && filesize($cached) > 0) {\r
-                                       self::copy($cached, $originalPDF);\r
-                               } else {\r
-                                       $pdftk = new cubeCommandLine('pdftk');\r
-                                       $pdftk->setPath(CONVERTER_PATH);\r
-                                       $pdftk->setManualArg($args);\r
-                                       $pdftk->execute();\r
-                                       self::copy($normalPDF, $cached);\r
-                               }\r
-                       }\r
-               }\r
-\r
-\r
-               if ($book->parametres->pdfReplace) {\r
-                       $replace = WS_BOOKS . '/working/' . $book->book_id . '/' . $book->parametres->pdfReplace;\r
-                       if (file_exists($replace) && filesize($replace) > 0) {\r
-                               if (!file_exists($normalPDF) || filemtime($normalPDF) < filemtime($replace) || filesize($normalPDF) != filesize($replace)) {\r
-                                       self::copy($replace, $normalPDF);\r
-                               }\r
-                       }\r
-               } else {\r
-                       self::copy($originalPDF, $normalPDF);\r
-               }\r
-\r
-               if ($book->parametres->pdfCompress) {\r
-                       if (!file_exists($compressedPDF) || filemtime($compressedPDF) < filemtime($normalPDF)) {\r
-                               $gs = new cubeCommandLine('gs', null, true);\r
-                               $gs->setPath(CONVERTER_PATH);\r
-                               $gs->setEnv('GS_FONTPATH', '/home/ws/fonts');\r
-                               $gs->setArg('-dBATCH');\r
-                               $gs->setArg('-dNOPAUSE');\r
-                               $gs->setArg('-dNOPROMPT');\r
-                               $gs->setArg('-sOutputFile=' . $compressedPDF);\r
-                               $gs->setArg('-sDEVICE=pdfwrite');\r
-                               $gs->setArg('-dPDFSETTINGS=/ebook');\r
-                               $gs->setArg('-dColorImageResolution=72');\r
-                               $gs->setArg('-dAutoRotatePages=/None');\r
-                               $gs->setArg('-dColorConversionStrategy=/LeaveColorUnchanged');\r
-                               $gs->setArg(null, $normalPDF);\r
-                               $gs->execute();\r
-                       }\r
-                       return $compressedPDF;\r
-               }\r
-               return $normalPDF;\r
-       }\r
-\r
-       public static function copy($source, $dest)\r
-       {\r
-               copy($source, $dest);\r
-               touch($dest, filemtime($source));\r
-       }\r
+    public static function excelToArray($excelFile, $assoc = false)\r
+    {\r
+        $worksheets = array();\r
+\r
+        if ($assoc) {\r
+            $cacheBase = WS_CACHE . '/xlsx2assocarray/';\r
+        } else {\r
+            $cacheBase = WS_CACHE . '/xlsx2array/';\r
+        }\r
+        if (!file_exists($cacheBase)) {\r
+            mkdir($cacheBase, 0777, true);\r
+        }\r
+\r
+        if (CubeIT_Util_Url::isDistant($excelFile)) {\r
+            $tmp = CubeIT_Files::tempnam();\r
+            copy($excelFile, $tmp);\r
+\r
+            $hash = hash_file('sha256', $tmp);\r
+            $dest = $cacheBase . $hash . '.xlsx';\r
+\r
+            if (!file_exists($dest)) {\r
+                copy($tmp, $dest);\r
+            }\r
+            $excelFile = $dest;\r
+        }\r
+        if (!file_exists($excelFile)) {\r
+            return array();\r
+        }\r
+\r
+        $cacheFile = $cacheBase . sha1($excelFile . '/' . filemtime($excelFile));\r
+\r
+        if (file_exists($cacheFile) && !$assoc) {\r
+            $worksheets = json_decode(file_get_contents($cacheFile), true);\r
+        } else {\r
+            set_time_limit(0);\r
+            include_once ROOT . '/inc/ZendFramework/PHPExcel/PHPExcel.php';\r
+            $objReader = PHPExcel_IOFactory::createReader('Excel2007');\r
+            $objPHPExcel = $objReader->load($excelFile);\r
+\r
+            foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {\r
+                if ($worksheet->getSheetState() != PHPExcel_Worksheet::SHEETSTATE_VISIBLE) {\r
+                    continue;\r
+                }\r
+                $title = $worksheet->getTitle();\r
+                if (strlen($title) == 2 && cubeCountry::getCountry($title)) {\r
+                    $title = cubeCountry::getCountry($title);\r
+                }\r
+\r
+                if ($assoc) {\r
+                    $worksheets[$title] = self::_assocSheet($worksheet->toArray(null, true, true));\r
+                } else {\r
+                    $worksheets[$title] = $worksheet->toArray(null, true, true);\r
+                }\r
+            }\r
+            file_put_contents($cacheFile, json_encode($worksheets));\r
+        }\r
+\r
+        return $worksheets;\r
+    }\r
+\r
+    public static function excelToArrayKeyVal($excelFile)\r
+    {\r
+        $worksheets = self::excelToArray($excelFile);\r
+        $res = [];\r
+        foreach ($worksheets as $worksheet) {\r
+            foreach ($worksheet as $line) {\r
+                $res[trim($line[0])] = trim($line[1]);\r
+            }\r
+            break;\r
+        }\r
+        return $res;\r
+    }\r
+\r
+    protected static function _assocSheet($s)\r
+    {\r
+        $res = [];\r
+        $colslabels = [];\r
+        foreach ($s[0] as $j => $collabel) {\r
+            if (trim($collabel) == '') {\r
+                continue;\r
+            }\r
+            $colslabels[$j] = $collabel;\r
+        }\r
+        for ($i = 1; $i < count($s); $i++) {\r
+            $r = [];\r
+            foreach ($colslabels as $j => $collabel) {\r
+                $r[$collabel] = $s[$i][$j];\r
+            }\r
+            $res[] = $r;\r
+        }\r
+\r
+        return $res;\r
+    }\r
+\r
+\r
+    public static function atlanticReferences($references, $dir, $log = null, $copy = 'copy')\r
+    {\r
+        if (!file_exists($dir)) {\r
+            mkdir($dir, 0777, true);\r
+        }\r
+        foreach ($references as $i => $sheet) {\r
+            foreach ($sheet as $j => $line) {\r
+                foreach ($line as $k => $v) {\r
+                    if (preg_match('|^http:\/\/atlantic-international-book-com\.com\/files\/(.*)$|', $v, $matches)) {\r
+                        $local = $dir . '/' . $matches[1];\r
+                        $ldir = dirname($local);\r
+                        if (!file_exists($ldir)) {\r
+                            mkdir($ldir, 0777, true);\r
+                        }\r
+                        $url = str_replace(' ', '%20', $v);\r
+                        $cache = WS_CACHE . '/atlantic/' . md5($url);\r
+                        if (!file_exists($cache) || filemtime($url) > filemtime($cache)) {\r
+                            copy($url, $cache);\r
+                            $copylog = ' (copy) ';\r
+                        } else {\r
+                            $copylog = ' ';\r
+                        }\r
+                        call_user_func($copy, $cache, $dir . '/' . $matches[1]);\r
+                        $references[$i][$j][$k] = 'local/' . $matches[1];\r
+                        if (null !== $log) {\r
+                            call_user_func($log, 'Done' . $copylog . $matches[1]);\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        return $references;\r
+    }\r
+\r
+    /**\r
+     * @param $book wsBook\r
+     */\r
+    public static function compilePDF($book, $pages = null)\r
+    {\r
+        global $core;\r
+\r
+        if (null === $pages) {\r
+            $dao = new wsDAOBook($core->con);\r
+            $pages = $dao->getPagesOfBook($book->book_id);\r
+        }\r
+\r
+        if (substr($book->parametres->pdfName, 0, 4) == 'http') {\r
+            return false;\r
+        }\r
+\r
+        $cacheDir = WS_BOOKS . '/pdf/' . $book->book_id;\r
+        if (!file_exists($cacheDir)) {\r
+            mkdir($cacheDir, 0777, true);\r
+        }\r
+\r
+        $normalPDF = $cacheDir . '/normal.pdf';\r
+        $originalPDF = $cacheDir . '/original.pdf';\r
+        $compressedPDF = $cacheDir . '/compressed.pdf';\r
+\r
+        $files = [$normalPDF, $originalPDF, $compressedPDF];\r
+\r
+        foreach ($files as $file) {\r
+            if (file_exists($file) && filesize($file) == 0) {\r
+                unlink($file);\r
+            }\r
+        }\r
+\r
+        if (file_exists($originalPDF)) {\r
+            $fmtime = filemtime($originalPDF);\r
+            if ($fmtime >= $book->composition_update) {\r
+                $invalid = false;\r
+                foreach ($pages as $i => $infos) {\r
+                    $doc = wsDocument::getDir($infos['document_id']) . 'crop.pdf';\r
+                    if (file_exists($doc) && filemtime($doc) > $fmtime) {\r
+                        $invalid = true;\r
+                    }\r
+                }\r
+            } else {\r
+                $invalid = true;\r
+            }\r
+        } else {\r
+            $invalid = true;\r
+        }\r
+\r
+\r
+        if ($invalid) {\r
+            $pdfList = array();\r
+            $pagesList = array();\r
+            $nb_pages = array();\r
+            $j = 0;\r
+            $k = 0;\r
+            $original = true;\r
+\r
+            foreach ($pages as $i => $infos) {\r
+                if (!isset($firstDoc)) {\r
+                    $firstDoc = $infos['document_id'];\r
+                }\r
+\r
+                $doc = wsDocument::getDir($infos['document_id']) . 'crop.pdf';\r
+                if (!isset($pdfList[$doc])) {\r
+                    $pdfList[$doc] = $j;\r
+                    $nb_pages[$doc] = $infos['nb_pages'];\r
+                    $k = $j;\r
+                    $j++;\r
+                } else {\r
+                    $k = $pdfList[$doc];\r
+                }\r
+                $pagesList[$i] = array($k, $infos['document_page']);\r
+\r
+                if ($i != $infos['document_page'] || $infos['document_id'] != $firstDoc) {\r
+                    $original = false;\r
+                }\r
+            }\r
+\r
+            if ($original) {\r
+                self::copy(wsDocument::getDir($firstDoc) . 'crop.pdf', $originalPDF);\r
+            } else {\r
+                $args = '';\r
+                foreach ($pdfList as $doc => $index) {\r
+                    $lettre = cubeMath::toPDFLetter($index, true);\r
+                    $args .= $lettre . '=' . $doc . ' ';\r
+                }\r
+\r
+                $args .= ' cat ';\r
+\r
+                $ranges = array();\r
+                $currentRange = null;\r
+\r
+                foreach ($pagesList as $p) {\r
+                    $lettre = cubeMath::toPDFLetter($p[0], true);\r
+                    $page = $p[1];\r
+\r
+                    // Initialise l'intervale\r
+                    if (is_null($currentRange)) {\r
+                        $currentRange = array('lettre' => $lettre, 'start' => $page, 'end' => $page);\r
+                        continue;\r
+                    }\r
+\r
+                    // Poursuit le remplissage si la lettre est identique et si la page suivante est bien la page suivante dans le document\r
+                    if ($currentRange['lettre'] == $lettre && $currentRange['end'] + 1 == $page) {\r
+                        $currentRange['end'] = $page;\r
+                        continue;\r
+                    }\r
+\r
+                    // Ajoute l'intervale à la liste finale\r
+                    $ranges[] = $currentRange;\r
+\r
+                    // Réinitialise l'intervale suivant\r
+                    $currentRange = array('lettre' => $lettre, 'start' => $page, 'end' => $page);\r
+                }\r
+\r
+                // Ajoute la dernière\r
+                if (!is_null($currentRange)) {\r
+                    $ranges[] = $currentRange;\r
+                }\r
+                // Si le pdf final est constitué du document complet d'un document\r
+                if (count($ranges) == 1 && $ranges[0]['start'] == 1) {\r
+                    $alldocs = array_keys($pdfList);\r
+                    $doc = array_pop($alldocs);\r
+                    if ($nb_pages[$doc] == $ranges[0]['end']) {\r
+                        self::copy($doc, $originalPDF);\r
+                        return;\r
+                    }\r
+                }\r
+\r
+                foreach ($ranges as $range) {\r
+                    $args .= ' ' . $range['lettre'] . $range['start'];\r
+                    if ($range['start'] == $range['end']) {\r
+                        continue;\r
+                    }\r
+                    $args .= '-' . $range['end'];\r
+                }\r
+\r
+                $hash = sha1($args);\r
+\r
+                $args .= ' output ' . $originalPDF;\r
+\r
+                $cached = WS_BOOKS . '/pdf/' . $hash . '.pdf';\r
+\r
+                if (file_exists($cached) && filesize($cached) > 0) {\r
+                    self::copy($cached, $originalPDF);\r
+                } else {\r
+                    $pdftk = new cubeCommandLine('pdftk');\r
+                    $pdftk->setPath(CONVERTER_PATH);\r
+                    $pdftk->setManualArg($args);\r
+                    $pdftk->execute();\r
+                    self::copy($normalPDF, $cached);\r
+                }\r
+            }\r
+        }\r
+\r
+\r
+        if ($book->parametres->pdfReplace) {\r
+            $replace = WS_BOOKS . '/working/' . $book->book_id . '/' . $book->parametres->pdfReplace;\r
+            if (file_exists($replace) && filesize($replace) > 0) {\r
+                if (!file_exists($normalPDF) || filemtime($normalPDF) < filemtime($replace) || filesize($normalPDF) != filesize($replace)) {\r
+                    self::copy($replace, $normalPDF);\r
+                }\r
+            }\r
+        } else {\r
+            self::copy($originalPDF, $normalPDF);\r
+        }\r
+\r
+        if ($book->parametres->pdfCompress) {\r
+            if (!file_exists($compressedPDF) || filemtime($compressedPDF) < filemtime($normalPDF)) {\r
+                $gs = new cubeCommandLine('gs', null, true);\r
+                $gs->setPath(CONVERTER_PATH);\r
+                $gs->setEnv('GS_FONTPATH', '/home/ws/fonts');\r
+                $gs->setArg('-dBATCH');\r
+                $gs->setArg('-dNOPAUSE');\r
+                $gs->setArg('-dNOPROMPT');\r
+                $gs->setArg('-sOutputFile=' . $compressedPDF);\r
+                $gs->setArg('-sDEVICE=pdfwrite');\r
+                $gs->setArg('-dPDFSETTINGS=/ebook');\r
+                $gs->setArg('-dColorImageResolution=72');\r
+                $gs->setArg('-dAutoRotatePages=/None');\r
+                $gs->setArg('-dColorConversionStrategy=/LeaveColorUnchanged');\r
+                $gs->setArg(null, $normalPDF);\r
+                $gs->execute();\r
+            }\r
+            return $compressedPDF;\r
+        }\r
+        return $normalPDF;\r
+    }\r
+\r
+    public static function copy($source, $dest)\r
+    {\r
+        copy($source, $dest);\r
+        touch($dest, filemtime($source));\r
+    }\r
 }
\ No newline at end of file
index b107d2b632befa13e7c86a3396cd91fc97c9dcaa..823a2b44a740d58e20e27c83b7ee2db7e4caef17 100644 (file)
@@ -375,7 +375,10 @@ class wsHTML5Compiler
             $this->addLess('form/avery');
             $this->writeCountries();
         }
+        $this->config->seoArticles = $this->seoArticles;
+    }
 
+    public function writeCartConfig(){
         if ($this->config->basket) {
             $this->addJsLib('cart', 'js/libs/fluidbook/fluidbook.cart.js');
             switch ($this->config->basketManager) {
@@ -387,7 +390,8 @@ class wsHTML5Compiler
                 default:
                     break;
             }
-
+        }
+        if ($this->config->basketReferences) {
             if (file_exists($this->config->basketReferences) || CubeIT_Util_Url::isDistant($this->config->basketReferences)) {
                 $referencesFile = $this->config->basketReferences;
             } else {
@@ -397,7 +401,12 @@ class wsHTML5Compiler
             if (file_exists($referencesFile) || CubeIT_Util_Url::isDistant($referencesFile)) {
                 $ext = CubeIT_Files::getExtension($referencesFile);
                 if ($ext == 'xlsx') {
-                    $this->config->basketReferences = wsUtil::excelToArray($referencesFile);
+                    if($this->config->basketManager=="ZoomProductLink"){
+                        $function='excelToArrayKeyVal';
+                    }else{
+                        $function='excelToArray';
+                    }
+                    $this->config->basketReferences = wsUtil::$function($referencesFile);
                     if ($this->book->parametres->customLinkClass == 'AtlanticDownloadLink') {
                         $this->config->basketReferences = wsUtil::atlanticReferences($this->config->basketReferences, 'local/', array($this, 'log'), array($this->vdir, "copy"));
                     }
@@ -405,7 +414,6 @@ class wsHTML5Compiler
                 $this->log("Done cart references");
             }
         }
-        $this->config->seoArticles = $this->seoArticles;
     }
 
     public function writeGPUDatabase()
@@ -521,6 +529,7 @@ class wsHTML5Compiler
         $this->log('Plugins loaded');
         $this->writeImages();
         $this->log('Images written');
+        $this->writeCartConfig();
         $linksCSS = $this->writeLinks();
         $this->log('Links written');
         $this->writeLangs();
@@ -1107,8 +1116,8 @@ class wsHTML5Compiler
             $e = explode("\n", $ml);
             $m = array();
             foreach ($e as $l1) {
-                $l1=trim($l1);
-                if($l1==''){
+                $l1 = trim($l1);
+                if ($l1 == '') {
                     continue;
                 }
                 $l = explode(',', $l1);
@@ -1943,9 +1952,6 @@ class wsHTML5Compiler
             $res[] = '@font-face{font-family: "' . $hash . '";src:url("../../data/fonts/' . $hash . '.woff") format("woff");}';
         }
 
-        # ZoomPopup close button background
-        $res[] = '.zoomPopupClose {background-color:' . wsHTML5::colorToCSS($this->theme->parametres->couleurB) . ';}';
-
         if ($this->book->parametres->textPopupStylesheet) {
             $res[] = file_get_contents($this->wdir . '/' . $this->book->parametres->textPopupStylesheet);
         }
index 958a49a5b403ee021567153c76e98067edb615a1..af7b0405035fdc18718c4dd877655a9653ef487e 100644 (file)
@@ -1722,6 +1722,12 @@ class zoomLink extends normalLink
 {
     protected $maxzoom_default = 2;
 
+    public function init()
+    {
+        $this->compiler->addJsLib('fluidbook-zoomhd', 'js/libs/fluidbook/links/fluidbook.links.zoom.js');
+        parent::init();
+    }
+
     public function getHTMLContainerClass()
     {
         $class = ' zoomarea';
@@ -1857,18 +1863,25 @@ class zoomProductLink extends zoomLink
 {
     public function __construct($id, $init, &$compiler)
     {
+
+        $init['to'] = trim($init['to']);
         $init['group'] = $init['to'];
         parent::__construct($id, $init, $compiler);
     }
 
     public function getZoomAttributes()
     {
-        // $cart = $this->compiler->getCartData();
-        $url = '';
+        $url = isset($this->compiler->config->basketReferences[$this->to]) ? $this->compiler->config->basketReferences[$this->to] : '';
 
-        return array_merge(parent::getZoomAttributes(),
-            ['maxzoom' => $this->maxzoom_default, 'ref' => $this->to, 'shareurl' => $url, 'producturl' => $url]
+        $res = array_merge(parent::getZoomAttributes(),
+            ['maxzoom' => $this->maxzoom_default, 'ref' => $this->to]
         );
+        if ($url) {
+            $res['shareurl'] = $url;
+            $res['producturl'] = $url;
+        }
+
+        return $res;
     }
 }