X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FAdmin%2FPage%2FCKEditorConfig.php;h=a99ae20aeebbf62bfa687e74dee7d4ae40fcae11;hb=56afc088f70196cddc7ea55dd05bc48a3cdc2999;hp=05f039d43c47c7115f6cac3ed723f10f5c5d1af4;hpb=34d388cc4ad0fe4bbe3f4052695f6ac6d0d16050;p=civicrm-core.git diff --git a/CRM/Admin/Page/CKEditorConfig.php b/CRM/Admin/Page/CKEditorConfig.php index 05f039d43c..a99ae20aee 100644 --- a/CRM/Admin/Page/CKEditorConfig.php +++ b/CRM/Admin/Page/CKEditorConfig.php @@ -1,9 +1,9 @@ $settings, )); - $configUrl = self::getConfigUrl($this->preset); - if (!$configUrl) { - $configUrl = self::getConfigUrl('default'); - } + $configUrl = self::getConfigUrl($this->preset) ?: self::getConfigUrl('default'); $this->assign('preset', $this->preset); $this->assign('presets', CRM_Core_OptionGroup::values('wysiwyg_presets', FALSE, FALSE, FALSE, NULL, 'label', TRUE, FALSE, 'name')); @@ -132,7 +129,13 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { $val = trim($val); if (strpos($key, 'config_') === 0 && strlen($val)) { if ($val != 'true' && $val != 'false' && $val != 'null' && $val[0] != '{' && $val[0] != '[' && !is_numeric($val)) { - $val = json_encode($val); + $val = json_encode($val, JSON_UNESCAPED_SLASHES); + } + elseif ($val[0] == '{' || $val[0] == '[') { + if (!is_array(json_decode($val, TRUE))) { + // Invalid JSON. Do not save. + continue; + } } $pos = strrpos($config, '};'); $key = preg_replace('/^config_/', 'config.', $key); @@ -201,10 +204,7 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { */ private function getConfigSettings() { $matches = $result = array(); - $file = self::getConfigFile($this->preset); - if (!$file) { - $file = self::getConfigFile('default'); - } + $file = self::getConfigFile($this->preset) ?: self::getConfigFile('default'); $result['skin'] = 'moono'; if ($file) { $contents = file_get_contents($file); @@ -270,7 +270,7 @@ class CRM_Admin_Page_CKEditorConfig extends CRM_Core_Page { if (!is_dir(Civi::paths()->getPath('[civicrm.files]/persist'))) { mkdir(Civi::paths()->getPath('[civicrm.files]/persist')); } - $newFileName = Civi::paths()->getPath('[civicrm.files]/persist/crm-ckeditor-default.js'); + $newFileName = Civi::paths()->getPath(self::CONFIG_FILEPATH . 'default.js'); file_put_contents($newFileName, $config); } }