From: Vincent Vanwaelscappel Date: Mon, 28 Oct 2024 12:18:21 +0000 (+0100) Subject: wait #7158 @1.5 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=c8b7d05e3b2e76b1aea808521f27f00f6ca892be;p=fluidbook-toolbox.git wait #7158 @1.5 --- diff --git a/app/Fluidbook/Compiler/Compiler.php b/app/Fluidbook/Compiler/Compiler.php index 3dbdcdf9b..dd9e11d8a 100644 --- a/app/Fluidbook/Compiler/Compiler.php +++ b/app/Fluidbook/Compiler/Compiler.php @@ -8,6 +8,7 @@ use App\Fluidbook\SocialImage; use App\Http\Controllers\Admin\Operations\Tools\Favicon; use App\Jobs\Base; use App\Jobs\FluidbookImagesPreprocess; +use App\Models\File; use App\Models\FluidbookHealthIssues; use App\Models\FluidbookPublication; use App\Models\FluidbookTheme; @@ -2423,6 +2424,16 @@ class Compiler extends Base implements CompilerInterface, IVirtualDirectoryError if (!file_exists($dir)) { Files::mkdir($dir); Zip::extract($zipPath, $dir, $junkPaths); + + $l = Files::listFilesAndDirectories($dir); + + if (count($l['directories']) === 1 && count($l['files']) === 0) { + $d = $l['directories'][0]; + `mv $dir/$d/* $dir`; + rmdir($dir . '/' . $d); + } + + if ($moveAssets) { `mv $dir/Assets/* $dir`; rmdir($dir . '/Assets'); @@ -2432,9 +2443,15 @@ class Compiler extends Base implements CompilerInterface, IVirtualDirectoryError return array('dir' => $dir, 'fdir' => $fdir); } - public function getConfigZIP($d) + public function getConfigZIP($d,$file=null, $uid = null, $page = null) { $res = array('type' => 'zip', 'width' => 0, 'height' => 0); + if (!file_exists($d . '/index.html') && !file_exists($d . '/init.js')) { + FluidbookHealthIssues::addIssue($this->book_id, FluidbookHealthIssues::TYPE_INVALID_MULTIMEDIA_ASSET, ['uid' => $uid, 'page' => $page,'file'=>$file]); + return null; + } + + if (file_exists($d . '/index.html')) { $doc = new DOMDocument(); @$doc->loadHTMLFile($d . '/index.html'); diff --git a/app/Fluidbook/Farm.php b/app/Fluidbook/Farm.php index 5fc32e23b..dc89a9d4c 100644 --- a/app/Fluidbook/Farm.php +++ b/app/Fluidbook/Farm.php @@ -25,7 +25,7 @@ class Farm ['name' => 'dracula', 'host' => 'dracula.cubedesigners.com', 'weight' => 1, 'region' => Region::EUROPE, 'local' => true], ['name' => 'dobermann', 'host' => 'dobermann.cubedesigners.com', 'weight' => 6, 'region' => Region::EUROPE, 'local' => false], ['name' => 'elephantman', 'host' => 'paris.cubedesigners.com', 'weight' => 2, 'region' => Region::EUROPE, 'local' => false], - ['name' => 'fastandfurious', 'host' => 'fastandfurious.cubedesigners.com', 'weight' => 2, 'region' => Region::EUROPE, 'local' => false], + ['name' => 'fastandfurious', 'host' => 'fastandfurious.cubedesigners.com', 'port' => 9460, 'weight' => 2, 'region' => Region::EUROPE, 'local' => false], //['name' => 'godzilla', 'host' => 'godzilla.cubedesigners.com', 'weight' => 1, 'region' => Region::EUROPE,'local'=>false], ['name' => 'isleofdogs', 'host' => 'paris.cubedesigners.com', 'port' => 9458, 'weight' => 2, 'region' => Region::EUROPE, 'local' => false], ['name' => 'jumanji', 'host' => 'paris.cubedesigners.com', 'port' => 9459, 'weight' => 2, 'region' => Region::EUROPE, 'local' => false], @@ -73,7 +73,7 @@ class Farm return self::$_farmServers; } - public static function pickOneServer($preferLocal,$params) + public static function pickOneServer($preferLocal, $params) { $hat = []; $pingCache = self::_pingCache(); diff --git a/app/Models/FluidbookHealthIssues.php b/app/Models/FluidbookHealthIssues.php index a10fda2ca..8ed325811 100644 --- a/app/Models/FluidbookHealthIssues.php +++ b/app/Models/FluidbookHealthIssues.php @@ -22,8 +22,9 @@ class FluidbookHealthIssues extends ToolboxModel const TYPE_TIMEOUT_MAKE_SVG = 9; const TYPE_NOT_VALID_IMAGE_IN_LINK = 10; const TYPE_TABS_INVALID_SVG = 11; - const TYPE_MISSING_JS=12; - const TYPE_MISSING_CSS=13; + const TYPE_MISSING_JS = 12; + const TYPE_MISSING_CSS = 13; + const TYPE_INVALID_MULTIMEDIA_ASSET = 14; const CRIT_ERROR = 5; const CRIT_WARNING = 3; @@ -53,6 +54,20 @@ class FluidbookHealthIssues extends ToolboxModel $data = json_encode($data); } $d = static::getTypeData($fluidbookId); + + if (isset($d['ignore']) && is_array($d['ignore'])) { + foreach ($d['ignore'] as $k => $ig) { + if (!isset($data[$k])) { + continue; + } + foreach ($ig as $i) { + if (stristr($data[$k], $i) !== false) { + return; + } + } + } + } + $issue = self::withoutGlobalScopes()->where('fluidbook', $fluidbookId)->where('type', $type)->where('data', $data)->first(); $crit = $d[$type]['criticality']; if (!$issue) { @@ -172,13 +187,22 @@ class FluidbookHealthIssues extends ToolboxModel 'summary' => __('Bibliothèque JS introuvable'), 'criticality' => self::CRIT_WARNING, 'text' => 'Fichier JS indisponible : :file. Certaines fonctionnalités peuvent ne pas fonctionner.', + 'ignore' => ['file' => ['fluidbook.links.animations.js']], + ], + static::TYPE_MISSING_CSS => + [ + 'summary' => __('Feuille de style introuvable'), + 'criticality' => self::CRIT_WARNING, + 'text' => 'Feuille de style introuvable : :file. Certaines fonctionnalités peuvent ne pas fonctionner.', + ], + static::TYPE_INVALID_MULTIMEDIA_ASSET => + [ + 'summary' => __('Contenu de lien multimedia invalide'), + 'criticality' => self::CRIT_ERROR, + 'text' => 'Le fichier :file chargé dans le lien :uid (page :page) est invalide. Il devrait contenir à la racine un des fichiers suivants (index.html ou init.js)', + 'fixText' => __('Aller sur l\'éditeur de liens'), + 'fixURL' => $linkeditorURL, ], - static::TYPE_MISSING_CSS=> - [ - 'summary' => __('Feuille de style introuvable'), - 'criticality' => self::CRIT_WARNING, - 'text' => 'Feuille de style introuvable : :file. Certaines fonctionnalités peuvent ne pas fonctionner.', - ], ]; }