}
public function handle()
+ {
+ $this->package();
+ }
+
+ public function package($notify = true)
{
App::setLocale($this->user->preferredLocale());
+ $res = [];
try {
$url = $this->_compileandpackage();
$translateVariables = ['title' => $this->_title(), 'nb' => $this->_id()];
$actions = [];
if ($this->action === 'download' || $this->action === 'scormcloud') {
$actions = ['Télécharger' => $url];
+ $res[] = $url;
if ($this->action === 'scormcloud') {
try {
$scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->_id());
$actions[__('Tester sur SCORM Cloud')] = $scormURL;
+ $res[] = $url;
} catch (\Exception $e) {
}
if (null !== $url) {
$actions = [__('Voir sur :server', ['server' => $server->name]) => $url];
}
-
+ $res[] = $url;
} else if ($this->action === 'loadbalancer') {
$path = $this->_compileandpackage(false);
$dest = protected_path('fluidbookpublication/loadbalancer/' . $this->entry->id . '_' . $this->entry->hash . '/');
Log::error($e);
}
- $this->sendNotification($subject, $text, $actions, $showTextIfNotEmail);
+ if ($notify) {
+ $this->sendNotification($subject, $text, $actions, $showTextIfNotEmail);
+ }
+ return $res;
}
-
protected function _compileandpackage($zip = true)
{
if ($this->entry->version == 3) {
--- /dev/null
+<?php
+
+namespace App\Http\Controllers\API;
+
+use App\Fluidbook\Packager\Download;
+use App\Http\Controllers\Controller;
+use App\Models\FluidbookPublication;
+use App\Models\User;
+
+class FluidbookPublicationAPIController extends Controller
+{
+ public function download($id, $version)
+ {
+ if (!FluidbookPublication::hasPermission($id, 'read')) {
+ abort(401);
+ }
+ $download = new Download(FluidbookPublication::find($id), $version, 'download', auth()->user());
+ $url = $download->package(false);
+ if (count($url)) {
+ return $url[0];
+ }
+ return false;
+ }
+
+ public function metadata($id)
+ {
+ if (!FluidbookPublication::hasPermission($id, 'read')) {
+ abort(401);
+ }
+ $fluidbook = FluidbookPublication::find($id);
+ return ['title' => $fluidbook->title,
+ 'lang' => $fluidbook->locale,
+ 'locale' => $fluidbook->locale,
+ 'date' => (new \DateTime($fluidbook->updated_at))->getTimestamp()];
+ }
+}
'middleware' => ['auth:api'],
'excluded_middleware' => ['verifycsrftoken']
], function () {
+ Route::get('fluidbook-publication/{id}/download/{version}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'download']);
+ Route::get('fluidbook-publication/{id}/metadata', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'metadata']);
+
Route::post('fluidbook-theme/{id}/clone', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'clonefromws2']);
Route::put('fluidbook-theme/{id}', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'updatefromws2']);
Route::put('fluidbook-theme/{id}/rename', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'renamefromws2']);