From 4b1cd2641203ec273fe39506dfd471389d05c7d7 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 11 May 2021 21:35:50 +0200 Subject: [PATCH] wip #4465 @1.5 --- app/Console/Commands/WorkshopMigration.php | 21 +---- .../Admin/CompanyCrudController.php | 17 ++-- .../FluidbookPublicationCrudController.php | 25 ++++++ .../Admin/FluidbookQuoteCrudController.php | 7 +- .../Admin/FluidbookThemeCrudController.php | 28 ++++++ .../Admin/LocaleCrudController.php | 4 +- .../Controllers/Admin/QuizCrudController.php | 7 +- .../Admin/QuizatttemptCrudController.php | 4 +- .../Admin/QuiztranslationCrudController.php | 4 +- .../Admin/SettingsCrudController.php | 4 +- .../Admin/SignatureCrudController.php | 7 +- .../Admin/ToolboxTranslateCrudController.php | 4 +- .../Controllers/Admin/UsersCrudController.php | 18 ++-- app/Models/FluidbookTheme.php | 85 +++++++++++++++++++ routes/backpack/custom.php | 30 ++++--- routes/console.php | 3 - 16 files changed, 186 insertions(+), 82 deletions(-) create mode 100644 app/Http/Controllers/Admin/FluidbookPublicationCrudController.php create mode 100644 app/Http/Controllers/Admin/FluidbookThemeCrudController.php diff --git a/app/Console/Commands/WorkshopMigration.php b/app/Console/Commands/WorkshopMigration.php index 7e3564fc3..44cd67b35 100644 --- a/app/Console/Commands/WorkshopMigration.php +++ b/app/Console/Commands/WorkshopMigration.php @@ -97,10 +97,6 @@ class WorkshopMigration extends CubistCommand } $c->save(); - $storage = storage_path('themes/' . $e->theme_id . '/'); - if (!file_exists($storage)) { - mkdir($storage, 0777, true); - } $s = $this->_unserialize($e->parametres); @@ -110,23 +106,10 @@ class WorkshopMigration extends CubistCommand } $f = $c->getField($k); if ($f instanceof Files) { - if ($data) { - $file = $oldRoot . $data; - if (file_exists($file)) { - $copy = $storage . $data; - if (!file_exists($copy)) { - copy($file, $copy); - } - try { - $c->addMediaToField($k, $copy); - } catch (\Exception $e) { - echo $copy . "\n"; - } - } - } + $c->_handleWS2File($f, $data, $oldRoot); } else { if ($f instanceof Color) { - + $data = FluidbookTheme::_colorToWS3($data); } $c->setAttribute($k, $data); } diff --git a/app/Http/Controllers/Admin/CompanyCrudController.php b/app/Http/Controllers/Admin/CompanyCrudController.php index 08ed7bdfa..f397a4cd1 100644 --- a/app/Http/Controllers/Admin/CompanyCrudController.php +++ b/app/Http/Controllers/Admin/CompanyCrudController.php @@ -4,25 +4,20 @@ namespace App\Http\Controllers\Admin; class CompanyCrudController extends \Cubist\Backpack\Magic\Controllers\CubistMagicController { - use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation; - use \Cubist\Backpack\Http\Controllers\Operations\BulkPublishOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\BulkCloneOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation; - use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation; + use \Cubist\Backpack\Magic\Operations\CreateOperation; + use \Cubist\Backpack\Magic\Operations\UpdateOperation; use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation; /* - __('company') - __('companies') + __('client') + __('clients') */ protected $_modelNamespace = 'App\Models\Company'; protected $_routeURL = 'company'; - protected $_singular = 'company'; - protected $_plural = 'companies'; + protected $_singular = 'client'; + protected $_plural = 'clients'; protected $_oneInstance= false; } diff --git a/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php b/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php new file mode 100644 index 000000000..a3cd2010d --- /dev/null +++ b/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php @@ -0,0 +1,25 @@ +updateWS2Table(); } + + public function fromWS2($data) + { + $map = ['theme_id' => 'id', + 'nom' => 'name', + 'proprietaire' => 'owner', + 'date' => 'created_at',]; + + $ignore = ['extraXSpace', 'extraYSpace']; + + $oldRoot = $this->_oldRoot . 'themes/' . $data->theme_id . '/'; + + foreach ($map as $old => $new) { + $v = $data->$old; + if ($old === 'date') { + $date = new \DateTime(); + $date->setTimestamp($v); + $v = $date; + } + $this->setAttribute($new, $v); + } + $this->save(); + + + $s = self::_unserialize($data->parametres); + + foreach ($s->datas as $k => $v) { + if (in_array($k, $ignore)) { + continue; + } + $f = $this->getField($k); + if ($f instanceof Files) { + $this->_handleWS2File($f, $v, $oldRoot); + } else { + if ($f instanceof Color) { + $data = self::_colorToWS3($data); + } + $this->setAttribute($k, $v); + } + } + $this->save(); + return $this; + } + + public function getStorage() + { + $storage = storage_path('themes/' . $this->getAttribute('id') . '/'); + if (!file_exists($storage)) { + mkdir($storage, 0777, true); + } + return $storage; + } + + /** + * @param $field Files + * @param $data string + * @param $oldRoot string + */ + public function _handleWS2File($field, $data, $oldRoot) + { + if ($data) { + $file = $oldRoot . $data; + if (file_exists($file)) { + + $copy = $this->getStorage() . $data; + if (!file_exists($copy)) { + copy($file, $copy); + } + try { + $this->addMediaToField($field->getName(), $copy); + } catch (\Exception $e) { + echo $copy . "\n"; + } + } + } + } + + protected static function _unserialize($str) + { + $class = 'stdClass'; + $str = preg_replace('/^O:\d+:"[^"]++"/', 'O:' . strlen($class) . ':"' . $class . '"', $str); + $str = str_replace("s:8:\"\0*\0datas\"", 's:5:"datas"', $str); + return unserialize($str); + } } diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 07c835c91..2f11bb8c5 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -1,22 +1,24 @@ config('backpack.base.route_prefix', 'admin'), + 'prefix' => config('backpack.base.route_prefix', 'admin'), 'middleware' => ['web', config('backpack.base.middleware_key', 'admin')], - 'namespace' => 'App\Http\Controllers\Admin', + 'namespace' => 'App\Http\Controllers\Admin', ], function () { // custom admin routes try { - Route::crud('users', 'UsersCrudController'); - Route::crud('company', 'CompanyCrudController'); - Route::crud('fluidbook-quote', 'FluidbookQuoteCrudController'); - Route::crud('locale', 'LocaleCrudController'); - Route::crud('quiz', 'QuizCrudController'); - Route::crud('quizatttempt', 'QuizatttemptCrudController'); - Route::crud('quiztranslation', 'QuiztranslationCrudController'); - Route::crud('settings', 'SettingsCrudController'); - Route::crud('signature', 'SignatureCrudController'); - Route::crud('toolbox-translate', 'ToolboxTranslateCrudController'); - Route::crud('users', 'UsersCrudController'); - } catch(\Throwable $e) { + Route::crud('locale', 'LocaleCrudController'); + Route::crud('settings', 'SettingsCrudController'); + Route::crud('quiztranslation', 'QuiztranslationCrudController'); + Route::crud('fluidbook-theme', 'FluidbookThemeCrudController'); + Route::crud('fluidbook-quote', 'FluidbookQuoteCrudController'); + Route::crud('quizatttempt', 'QuizatttemptCrudController'); + Route::crud('toolbox-translate', 'ToolboxTranslateCrudController'); + Route::crud('fluidbook-publication', 'FluidbookPublicationCrudController'); + Route::crud('quiz', 'QuizCrudController'); + Route::crud('signature', 'SignatureCrudController'); + Route::crud('users', 'UsersCrudController'); + Route::crud('company', 'CompanyCrudController'); + Route::crud('users', 'UsersCrudController'); + } catch (\Throwable $e) { } }); diff --git a/routes/console.php b/routes/console.php index 75dd0cded..68d395f16 100644 --- a/routes/console.php +++ b/routes/console.php @@ -13,6 +13,3 @@ use Illuminate\Foundation\Inspiring; | */ -Artisan::command('inspire', function () { - $this->comment(Inspiring::quote()); -})->describe('Display an inspiring quote'); -- 2.39.5