Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions core/components/minishop3/config/routes/manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@
$controller = new \MiniShop3\Controllers\Api\ConfigController($modx);
return $controller->updatePageFields($params);
});
$router->delete('/page-fields/{page_key}/{field_name}', function($params) use ($modx) {
$controller = new \MiniShop3\Controllers\Api\ConfigController($modx);
return $controller->deleteFieldOverride($params);
});
$router->get('/sections/{page_key}', function($params) use ($modx) {
$controller = new \MiniShop3\Controllers\Api\ConfigController($modx);
return $controller->getSections($params);
Expand Down
48 changes: 6 additions & 42 deletions core/components/minishop3/src/Controllers/Api/ConfigController.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class ConfigController extends BaseApiController
{
/**
* GET /api/mgr/config/page-fields/{page_key}
* Get page field configuration with applied overrides
* Get page field configuration from ms3_product_fields
*
* @param array $params
* @return Response
Expand Down Expand Up @@ -40,7 +40,7 @@ public function getPageFields(array $params): Response

/**
* GET /api/mgr/config/page-fields/{page_key}/all
* Get ALL available fields (including hidden) from model with overrides
* Get all available fields (including hidden) from ms3_product_fields
*
* @param array $params
* @return Response
Expand Down Expand Up @@ -68,7 +68,7 @@ public function getAllPageFields(array $params): Response

/**
* PUT /api/mgr/config/page-fields/{page_key}
* Save bulk field overrides
* Save field configuration to ms3_product_fields
*
* @param array $params
* @return Response
Expand All @@ -91,54 +91,18 @@ public function updatePageFields(array $params): Response
/** @var \MiniShop3\Services\ConfigService */
$configService = $this->modx->services->get('ms3_config_service');

$success = $configService->saveFieldsConfig($pageKey, $data['fields']);
$success = $configService->saveFieldsConfig($data['fields']);

if ($success) {
return Response::success([
'message' => 'Configuration saved successfully',
]);
} else{
return Response::error('Failed to save configuration', HttpStatus::INTERNAL_SERVER_ERROR);
}
} catch (\Exception $e) {
$this->modx->log(\MODX\Revolution\modX::LOG_LEVEL_ERROR, '[ConfigController] ' . $e->getMessage());
return Response::error('Failed to save config: ' . $e->getMessage(), HttpStatus::INTERNAL_SERVER_ERROR);
}
}

/**
* DELETE /api/mgr/config/page-fields/{page_key}/{field_name}
* Delete override for specific field
*
* @deprecated Table ms3_field_config_overrides removed. Endpoint kept for backward compatibility.
* @param array $params
* @return Response
*/
public function deleteFieldOverride(array $params): Response
{
$pageKey = $params['page_key'] ?? '';
$fieldName = $params['field_name'] ?? '';

if (empty($pageKey) || empty($fieldName)) {
return Response::error('Page key and field name are required', HttpStatus::BAD_REQUEST);
}

try {
/** @var \MiniShop3\Services\ConfigService */
$configService = $this->modx->services->get('ms3_config_service');

$success = $configService->removeFieldOverride($pageKey, $fieldName);

if ($success) {
return Response::success([
'message' => 'Override removed successfully',
]);
} else {
return Response::error('Failed to remove override', HttpStatus::INTERNAL_SERVER_ERROR);
}
return Response::error('Failed to save configuration', HttpStatus::INTERNAL_SERVER_ERROR);
} catch (\Exception $e) {
$this->modx->log(\MODX\Revolution\modX::LOG_LEVEL_ERROR, '[ConfigController] ' . $e->getMessage());
return Response::error('Failed to remove override: ' . $e->getMessage(), HttpStatus::INTERNAL_SERVER_ERROR);
return Response::error('Failed to save config: ' . $e->getMessage(), HttpStatus::INTERNAL_SERVER_ERROR);
}
}

Expand Down
46 changes: 13 additions & 33 deletions core/components/minishop3/src/Services/ConfigService.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function __construct(modX $modx)
}

/**
* Get page field configuration with applied overrides
* Get page field configuration from ms3_product_fields
* Returns only VISIBLE fields and sections for display in form
*
* @param string $pageKey Page key (product_data, product_gallery, etc.)
Expand Down Expand Up @@ -129,12 +129,10 @@ public function getAllPageFields(string $pageKey, string $contextKey = 'web'): a
/**
* Save bulk field changes to ms3_product_fields table
*
* @param string $pageKey Page key
* @param array $fields Array of fields with settings
* @param string $contextKey Context key (default: web)
* @return bool
*/
public function saveFieldsConfig(string $pageKey, array $fields, string $contextKey = 'web'): bool
public function saveFieldsConfig(array $fields): bool
{
try {
foreach ($fields as $fieldData) {
Expand Down Expand Up @@ -217,24 +215,6 @@ public function saveFieldsConfig(string $pageKey, array $fields, string $context
}
}

/**
* Remove field override
*
* @deprecated Table ms3_field_config_overrides removed. Use ms3_product_fields for field management
* @param string $pageKey Page key
* @param string $fieldName Field name
* @param string $contextKey Context key (default: web)
* @return bool
*/
public function removeFieldOverride(string $pageKey, string $fieldName, string $contextKey = 'web'): bool
{
$this->modx->log(
modX::LOG_LEVEL_WARN,
'ConfigService::removeFieldOverride() is deprecated. Table ms3_field_config_overrides has been removed. Use ms3_product_fields instead.'
);
return true;
}

/**
* Get value from lexicon with fallback logic
*
Expand Down Expand Up @@ -355,20 +335,20 @@ public function saveSections(string $pageKey, array $sections): bool
$hidden = isset($section['hidden']) ? (bool)$section['hidden'] : false;
$sortOrder = $index;

$override = $this->modx->getObject('MiniShop3\\Model\\msPageSection', [
$pageSection = $this->modx->getObject('MiniShop3\\Model\\msPageSection', [
'page_key' => $pageKey,
'section_key' => $sectionKey,
]);

if (!$override) {
$override = $this->modx->newObject('MiniShop3\\Model\\msPageSection');
$override->set('page_key', $pageKey);
$override->set('section_key', $sectionKey);
$override->set('is_default', $isDefault);
if (!$pageSection) {
$pageSection = $this->modx->newObject('MiniShop3\\Model\\msPageSection');
$pageSection->set('page_key', $pageKey);
$pageSection->set('section_key', $sectionKey);
$pageSection->set('is_default', $isDefault);
}

$override->set('hidden', $hidden);
$override->set('sort_order', $sortOrder);
$pageSection->set('hidden', $hidden);
$pageSection->set('sort_order', $sortOrder);

// Build config from passed data
// Use array_key_exists() instead of isset() to handle null values correctly
Expand All @@ -381,11 +361,11 @@ public function saveSections(string $pageKey, array $sections): bool
}

// Always update config field (even if empty, to clear old values)
$override->set('config', !empty($config) ? json_encode($config, JSON_UNESCAPED_UNICODE) : null);
$pageSection->set('config', !empty($config) ? json_encode($config, JSON_UNESCAPED_UNICODE) : null);

if (!$override->save()) {
if (!$pageSection->save()) {
$this->modx->log(\MODX\Revolution\modX::LOG_LEVEL_ERROR,
"[ConfigService] Failed to save section override: {$sectionKey}");
"[ConfigService] Failed to save section: {$sectionKey}");
return false;
}
}
Expand Down
18 changes: 0 additions & 18 deletions core/components/minishop3/src/Services/FieldConfigManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -307,24 +307,6 @@ protected function mergeModelWithJson(array $modelFields, $jsonFields): array
return array_values($fieldsMap);
}

/**
* Save field configuration to database
*
* @deprecated Table ms3_field_config_overrides removed. Use ConfigService::saveFieldsConfig() for ms3_product_fields
* @param string $pageKey
* @param array $fields
* @param string $contextKey
* @return bool
*/
public function saveFieldsConfig(string $pageKey, array $fields, string $contextKey = 'web'): bool
{
$this->modx->log(
modX::LOG_LEVEL_WARN,
'FieldConfigManager::saveFieldsConfig() is deprecated'
);
return true;
}

/**
* Get lexicon value with fallback logic
*
Expand Down