diff --git a/administrator/components/com_fields/src/Model/FieldModel.php b/administrator/components/com_fields/src/Model/FieldModel.php index 586224d4a1a4c..db44abc384813 100644 --- a/administrator/components/com_fields/src/Model/FieldModel.php +++ b/administrator/components/com_fields/src/Model/FieldModel.php @@ -1168,6 +1168,16 @@ protected function batchCopy($value, $pks, $contexts) foreach ($pks as $pk) { if ($user->authorise('core.create', $component . '.fieldgroup.' . $value)) { + // Find all assigned categories to this field + $db = $this->getDatabase(); + $query = $db->getQuery(true); + + $query->select($db->quoteName('category_id')) + ->from($db->quoteName('#__fields_categories')) + ->where($db->quoteName('field_id') . ' = ' . (int) $pk); + + $assignedCatIds = $db->setQuery($query)->loadColumn(); + $table->reset(); $table->load($pk); @@ -1194,6 +1204,17 @@ protected function batchCopy($value, $pks, $contexts) // Get the new item ID $newId = $table->id; + // Inset the assigned categories + if (!empty($assignedCatIds)) { + $tuple = new \stdClass(); + $tuple->field_id = $newId; + + foreach ($assignedCatIds as $catId) { + $tuple->category_id = $catId; + $db->insertObject('#__fields_categories', $tuple); + } + } + // Add the new ID to the array $newIds[$pk] = $newId; } else {