From 5c6c88ff9185d0d0350583e1daaca5057a864609 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 19 Aug 2022 18:25:46 +0200 Subject: [PATCH] wip #5399 --- composer.json | 3 +-- src/app/Magic/Fields/Model.php | 9 +++++++-- src/app/Magic/Fields/SelectFromModel.php | 5 +++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 7571a78..d87d194 100644 --- a/composer.json +++ b/composer.json @@ -53,8 +53,7 @@ "laravel/framework": "^v8.83", "laravel-lang/lang": "^10.1", "laravel-lang/publisher": "^10.3", - "spatie/laravel-permission": "^4.4|^5.5", - "opis/closure": "^3.6" + "spatie/laravel-permission": "^4.4|^5.5" }, "require-dev": { "filp/whoops": "^2.14", diff --git a/src/app/Magic/Fields/Model.php b/src/app/Magic/Fields/Model.php index d801b7d..205757f 100644 --- a/src/app/Magic/Fields/Model.php +++ b/src/app/Magic/Fields/Model.php @@ -5,6 +5,8 @@ namespace Cubist\Backpack\Magic\Fields; use Illuminate\Database\Query\Builder; +use Laravel\SerializableClosure\Exceptions\PhpVersionNotSupportedException; +use Laravel\SerializableClosure\SerializableClosure; class Model extends Field { @@ -29,6 +31,9 @@ class Model extends Field $this->pluck($this->getAttribute('attribute'), true, $force); } + /** + * @throws PhpVersionNotSupportedException + */ public function pluck($attr, $onlyGlobal = false, $force = false) { $bui = backpack_user() === null ? '' : backpack_user()->id; @@ -43,7 +48,7 @@ class Model extends Field $tag = 'model_' . $modelClass; if ($force || !isset(static::$_options[$globalCacheKey])) { start_measure($globalCacheKey, 'Get options for model ' . $modelClass . ' / ' . $attr); - $closure = function () use ($modelClass, $attr, $modelScope) { + $closure = new SerializableClosure(function () use ($modelClass, $attr, $modelScope) { set_time_limit(0); /** @var \Illuminate\Database\Eloquent\Model $inst */ $inst = new $modelClass(); @@ -53,7 +58,7 @@ class Model extends Field $q = $q->$modelScope(); } return $q->where('created_ok', 1)->get()->pluck($attr, $inst->getKeyName())->toArray(); - }; + }); $ttl = 86400; $cache = cache()->tags([$tag]); if ($force) { diff --git a/src/app/Magic/Fields/SelectFromModel.php b/src/app/Magic/Fields/SelectFromModel.php index 34909ba..47fad04 100644 --- a/src/app/Magic/Fields/SelectFromModel.php +++ b/src/app/Magic/Fields/SelectFromModel.php @@ -5,6 +5,7 @@ namespace Cubist\Backpack\Magic\Fields; use Cubist\Backpack\CubistBackpackServiceProvider; +use Laravel\SerializableClosure\SerializableClosure; class SelectFromModel extends Model { @@ -31,7 +32,7 @@ class SelectFromModel extends Model 'ajax' => $this->_ajax, 'order' => $this->_order, 'allows_null' => $this->_allows_null, - 'searchLogic' => function ($query, $column, $searchTerm) use ($field) { + 'searchLogic' => new SerializableClosure(function ($query, $column, $searchTerm) use ($field) { $pluckAttr = $field->getAttribute('column_attribute', $field->getAttribute('attribute')); $list = $field->pluck($pluckAttr); $findIds = []; @@ -44,7 +45,7 @@ class SelectFromModel extends Model } } $query->orWhereIn($field->getName(), $findIds); - }, + }), ] ); } -- 2.39.5