--- /dev/null
+<?php
+
+namespace App\Console\Commands;
+
+use App\Console\Commands\Base\ToolboxCommand;
+use App\Models\FluidbookCollection;
+use App\Models\FluidbookAuditLink;
+
+class AuditLink extends ToolboxCommand
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature = 'collection:audit-link {id} {--sync}';
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description = 'Audit link in fluidbook collection';
+
+ /**
+ * Execute the console command.
+ */
+ public function handle()
+ {
+ //
+ $c = FluidbookCollection::find($this->argument('id'));
+ $c->runAuditLink($this->option('sync', false));
+ //$f->generateThumbnailsPreview($this->option('sync', false));
+ }
+}
--- /dev/null
+<?php
+
+namespace App\Jobs;
+
+use App\Fluidbook\Link\LinksData;
+use App\Models\FluidbookPublication;
+use App\Models\FluidbookCollection;
+use Cubist\Util\CommandLine;
+use Cubist\Util\Files\Files;
+use Illuminate\Support\Facades\Log;
+
+class AuditLink extends Base
+{
+ public $c;
+ /**
+ * Create a new job instance.
+ */
+ public function __construct(FluidbookCollection $collection) {
+ $this->c = $collection;
+ }
+ public function handle()
+ {
+ $externalLinks = [];
+ foreach ($this->c->publications as $publication) {
+ LinksData::getLinksAndRulers($publication['fluidbook'], $links, $rulers);
+
+ // We want only url link begin with http or https and webvideo link
+ // type // 10: web video // 2: url
+ $links = array_filter($links, function($n){
+ return ($n['type'] == 2 && preg_match('/https?:\/\//', $n['to']) ) || $n['type'] == 10;
+ });
+
+ foreach ($links as $link) {
+ $externalLinks[] = [
+ 'fluidbook_id' => $publication['fluidbook'],
+ 'page' => $link['page'],
+ 'link_id' => $link['uid'],
+ 'error_code' => false,
+ 'first_time_error' => '', // Datetime of the first time we saw this error
+ 'last_date_test' => '',
+ 'url' => $link['to'],
+ 'new_url' => '',
+ 'redirection_code' => '',
+ 'final_code_url' => '',
+ 'final_target' => '',
+ ];
+ }
+ //$externalLinks[] = array_filter($links);
+ }
+ dd($externalLinks);
+
+ Log::info('Job exécuté avec succès');
+ }
+}
$this->addField('link_id', Integer::class, '',[]);
$this->addField('error_code', Text::class, '',[]);
$this->addField('first_time_error', Text::class, '',[]);
+ $this->addField('last_date_test', Text::class, '',[]);
$this->addField('url', Text::class, '',[]);
$this->addField('new_url', Text::class, '',[]);
$this->addField('redirection_code', Text::class, '',[]);
use App\Fields\FluidbookExportVersion;
use App\Fields\FluidbookStatus;
+use App\Fluidbook\Compiler\Links;
use App\Http\Controllers\Admin\Operations\ChangeownerOperation;
use App\Http\Controllers\Admin\Operations\ChangestatusOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\PreviewOperation;
use App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation;
+use App\Jobs\AuditLink;
use App\Jobs\FluidbookCollectionRefreshIndex;
+use App\Jobs\GenerateDeliveryThumbnailsPreview;
use App\Models\Base\ToolboxDownloadable;
use App\Jobs\RefreshUsersTree;
use App\Models\Base\ToolboxStatusModel;
["name" => ".*", "type" => "auto"]
]
];
-
+
$client = $this->_connectToSearchServer();
$client->collections['fluidbooks']->delete();
$client->collections->create($booksSchema);
dispatch(new FluidbookCollectionRefreshIndex($this->id));
return $res;
}
+
+ public function runAuditLink($sync = false)
+ {
+ dispatch_sync(new AuditLink($this));
+ //dispatch(new GenerateDeliveryThumbnailsPreview($this, 'mobile'))->onQueue('theme');
+ }
}