Forum Moderators: open
-- ############################################
-- # BOUNDARIES & PUNCTUATION
-- ############################################
SET @left = '(^|[ \n]|<br/>|<t>|<r>)';
SET @right = '($|[ \n]|<br/>|</t>|</r>)';
SET @punct_unit = '(?:[.,!?:;()\-]|<|>|&)';
SET @punct_opt = CONCAT(@punct_unit, '*');
SET @punct_2p = CONCAT(@punct_unit, '{2,}');
-- #########################################################
-- # TITLE CASE UPDATES (4 patterns, separate updates)
-- # Converts any occurrence of bad_low (any case) to title_case
-- # Handles punctuation and boundaries on left, right, or both sides
-- # Skipped entirely if @use_title_case = 0
-- #########################################################
-- 1) Normal boundaries (optional punctuation)
UPDATE phpbb_posts p
JOIN nepa_forum_dictionary d ON d.bad_low = @bad_low
SET p.post_text = REGEXP_REPLACE(
p.post_text,
CONCAT('(?i)', @left, '(', @punct_opt, ')', d.bad_low, '(', @punct_opt, ')', @right),
CONCAT('\\1\\2', d.title_case, '\\3\\4')
)
WHERE @use_title_case = 1
AND d.title_case IS NOT NULL
AND @forced_processed_update_now = 0;
-- 2) Right-side 2+ punctuation
UPDATE phpbb_posts p
JOIN nepa_forum_dictionary d ON d.bad_low = @bad_low
SET p.post_text = REGEXP_REPLACE(
p.post_text,
CONCAT('(?i)', @left, '(', @punct_opt, ')', d.bad_low, '(', @punct_2p, ')'),
CONCAT('\\1\\2', d.title_case, '\\3')
)
WHERE @use_title_case = 1
AND d.title_case IS NOT NULL
AND @forced_processed_update_now = 0;
-- 3) Left-side 2+ punctuation
UPDATE phpbb_posts p
JOIN nepa_forum_dictionary d ON d.bad_low = @bad_low
SET p.post_text = REGEXP_REPLACE(
p.post_text,
CONCAT('(?i)', '(', @punct_2p, ')', d.bad_low, '(', @punct_opt, ')', @right),
CONCAT('\\1', d.title_case, '\\2\\3')
)
WHERE @use_title_case = 1
AND d.title_case IS NOT NULL
AND @forced_processed_update_now = 0;
-- 4) Both sides 2+ punctuation
UPDATE phpbb_posts p
JOIN nepa_forum_dictionary d ON d.bad_low = @bad_low
SET p.post_text = REGEXP_REPLACE(
p.post_text,
CONCAT('(?i)', '(', @punct_2p, ')', d.bad_low, '(', @punct_2p, ')'),
CONCAT('\\1', d.title_case, '\\2')
)
WHERE @use_title_case = 1
AND d.title_case IS NOT NULL
AND @forced_processed_update_now = 0;