Description
Implement POST /v1/maintenance/_searchAndReplace in MaintenanceResource.java. Performs a database-wide find/replace across text content in contentlet, container, template, field, and links tables. This is a dangerous, irreversible operation — only working/live versions are affected.
Acceptance Criteria
- API caller must provide searchString (non-empty) and replaceString (non-null) in JSON body
- Endpoint must call
MaintenanceUtil.DBSearchAndReplace(searchString, replaceString)
- Endpoint must flush all caches and reset permission references after replacement
- API caller must receive a response indicating success or whether errors occurred during replacement
- Must require CMS Administrator role and Maintenance portlet access
- API caller must receive 400 Bad Request if searchString is empty
Priority
None
Additional Context
MaintenanceUtil.DBSearchAndReplace() uses parameterized SQL REPLACE() calls — no SQL injection risk
- Tables affected: contentlet (text1-25, text_area1-25), containers (code, pre_loop, post_loop), template (body), field (field_values), links (url)
- Only updates working/live versions via version_info joins
- Struts legacy:
ViewCMSMaintenanceAction.searchAndReplace() lines 404–440
Description
Implement
POST /v1/maintenance/_searchAndReplaceinMaintenanceResource.java. Performs a database-wide find/replace across text content in contentlet, container, template, field, and links tables. This is a dangerous, irreversible operation — only working/live versions are affected.Acceptance Criteria
MaintenanceUtil.DBSearchAndReplace(searchString, replaceString)Priority
None
Additional Context
MaintenanceUtil.DBSearchAndReplace()uses parameterized SQL REPLACE() calls — no SQL injection riskViewCMSMaintenanceAction.searchAndReplace()lines 404–440