| OLD | NEW | 
|---|
| 1 define discourse::sitesetting( | 1 define discourse::sitesetting( | 
| 2   $setting = $title, | 2   $setting = $title, | 
| 3   $value = undef, | 3   $value = undef, | 
| 4   $type = 1, | 4   $type = 1, | 
| 5   $ensure = 'present' | 5   $ensure = 'present' | 
| 6 ) { | 6 ) { | 
| 7   # Attempt some escaping | 7 | 
| 8   $escaped_value = regsubst($value, '[\'\\]', '\\\1', 'G') | 8   $escaped_value = postgresql_escape($value) | 
| 9   $escaped_setting = regsubst($setting, '[\'\\]', '\\\1', 'G') | 9   $escaped_setting = postgresql_escape($setting) | 
| 10   $escaped_type = regsubst($type, '\D', '', 'G') | 10   $escaped_type = postgresql_escape($type) | 
| 11 | 11 | 
| 12   case $ensure { | 12   case $ensure { | 
| 13     default: { | 13     default: { | 
| 14       err("unknown ensure value ${ensure}") | 14       err("unknown ensure value ${ensure}") | 
| 15     } | 15     } | 
| 16     present: { | 16     present: { | 
| 17       # This is apparently how you do a conditional INSERT in PostgreSQL - sorry | 17       # This is apparently how you do a conditional INSERT in PostgreSQL - sorry | 
| 18       $update_sql = "UPDATE site_settings SET value = '$escaped_value', data_typ
    e = $escaped_type WHERE name = '$escaped_setting' RETURNING 1" | 18       $update_sql = "UPDATE site_settings SET value = '$escaped_value', data_typ
    e = $escaped_type WHERE name = '$escaped_setting' RETURNING 1" | 
| 19       $columns = "name, data_type, value, created_at, updated_at" | 19       $columns = "name, data_type, value, created_at, updated_at" | 
| 20       $values = "SELECT '$escaped_setting', $escaped_type, '$escaped_value', CUR
    RENT_TIMESTAMP, CURRENT_TIMESTAMP" | 20       $values = "SELECT '$escaped_setting', $escaped_type, '$escaped_value', CUR
    RENT_TIMESTAMP, CURRENT_TIMESTAMP" | 
| 21 | 21 | 
| 22       postgresql_psql {"WITH upd AS ($update_sql) INSERT INTO site_settings ($co
    lumns) $values WHERE NOT EXISTS (SELECT * FROM upd)": | 22       postgresql_psql {"WITH upd AS ($update_sql) INSERT INTO site_settings ($co
    lumns) $values WHERE NOT EXISTS (SELECT * FROM upd)": | 
| 23         db => 'discourse', | 23         db => 'discourse', | 
| 24         psql_user => 'discourse', | 24         psql_user => 'discourse', | 
| 25         notify => Service['discourse'], | 25         notify => Service['discourse'], | 
| 26         unless => "SELECT 1 FROM site_settings WHERE name = '$escaped_setting' A
    ND value = '$escaped_value' AND data_type = $escaped_type", | 26         unless => "SELECT 1 FROM site_settings WHERE name = '$escaped_setting' A
    ND value = '$escaped_value' AND data_type = $escaped_type", | 
| 27       } | 27       } | 
| 28     } | 28     } | 
| 29     absent: { | 29     absent: { | 
| 30       postgresql_psql {"DELETE FROM site_settings WHERE name = '$escaped_setting
    '": | 30       postgresql_psql {"DELETE FROM site_settings WHERE name = '$escaped_setting
    '": | 
| 31         db => 'discourse', | 31         db => 'discourse', | 
| 32         psql_user => 'discourse', | 32         psql_user => 'discourse', | 
| 33         notify => Service['discourse'], | 33         notify => Service['discourse'], | 
| 34         unless => "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM site_settings WHERE 
    name = '$escaped_setting')", | 34         unless => "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM site_settings WHERE 
    name = '$escaped_setting')", | 
| 35       } | 35       } | 
| 36     } | 36     } | 
| 37   } | 37   } | 
| 38 } | 38 } | 
| OLD | NEW | 
|---|