diff --git a/core/components/minishop3/src/Processors/Category/Update.php b/core/components/minishop3/src/Processors/Category/Update.php index 0b386940..71a8501e 100644 --- a/core/components/minishop3/src/Processors/Category/Update.php +++ b/core/components/minishop3/src/Processors/Category/Update.php @@ -2,40 +2,20 @@ namespace MiniShop3\Processors\Category; -use MODX\Revolution\Processors\Resource\Update as UpdateProcessor; use MiniShop3\Model\msCategory; -use MODX\Revolution\modResource; +use MiniShop3\Processors\Resource\EnsureTargetClassKeyTrait; +use MODX\Revolution\Processors\Resource\Update as UpdateProcessor; class Update extends UpdateProcessor { + use EnsureTargetClassKeyTrait; + public $classKey = msCategory::class; public $languageTopics = ['resource', 'minishop3:default']; public $permission = 'mscategory_save'; public $beforeSaveEvent = 'OnBeforeDocFormSave'; public $afterSaveEvent = 'OnDocFormSave'; - /** - * @return bool|null|string - */ - public function initialize() - { - $primaryKey = $this->getProperty($this->primaryKeyField, false); - if (empty($primaryKey)) { - return $this->modx->lexicon($this->classKey . '_err_ns'); - } - - if (!$this->modx->getCount($this->classKey, ['id' => $primaryKey, 'class_key' => $this->classKey])) { - $res = $this->modx->getObject(modResource::class, ['id' => $primaryKey]); - if ($res) { - $res->set('class_key', $this->classKey); - $res->save(); - } - } - - return parent::initialize(); - } - - /** * @return int|mixed|string */ diff --git a/core/components/minishop3/src/Processors/Product/Update.php b/core/components/minishop3/src/Processors/Product/Update.php index 4bc07eb3..882f6b53 100644 --- a/core/components/minishop3/src/Processors/Product/Update.php +++ b/core/components/minishop3/src/Processors/Product/Update.php @@ -4,6 +4,7 @@ use MiniShop3\Model\msCategory; use MiniShop3\Model\msProduct; +use MiniShop3\Processors\Resource\EnsureTargetClassKeyTrait; use MiniShop3\Utils\Utils; use MODX\Revolution\modX; use MODX\Revolution\Processors\Processor; @@ -11,6 +12,7 @@ class Update extends UpdateProcessor { + use EnsureTargetClassKeyTrait; use ProductDataPayloadTrait; public $classKey = msProduct::class; diff --git a/core/components/minishop3/src/Processors/Resource/EnsureTargetClassKeyTrait.php b/core/components/minishop3/src/Processors/Resource/EnsureTargetClassKeyTrait.php new file mode 100644 index 00000000..15bda914 --- /dev/null +++ b/core/components/minishop3/src/Processors/Resource/EnsureTargetClassKeyTrait.php @@ -0,0 +1,52 @@ +ensureTargetClassKeyExists(); + if ($err !== null) { + return $err; + } + + return parent::initialize(); + } + + /** + * @return string|null Error lexicon string or null on success + */ + protected function ensureTargetClassKeyExists(): ?string + { + $primaryKey = $this->getProperty($this->primaryKeyField, false); + if (empty($primaryKey)) { + return $this->modx->lexicon($this->classKey . '_err_ns'); + } + + if (!$this->modx->getCount($this->classKey, ['id' => $primaryKey, 'class_key' => $this->classKey])) { + $res = $this->modx->getObject(modResource::class, ['id' => $primaryKey]); + if ($res) { + $res->set('class_key', $this->classKey); + $res->save(); + } + } + + return null; + } +}