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;
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');
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');
['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],
return self::$_farmServers;
}
- public static function pickOneServer($preferLocal,$params)
+ public static function pickOneServer($preferLocal, $params)
{
$hat = [];
$pingCache = self::_pingCache();
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;
$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) {
'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.',
- ],
];
}