1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
15:
16: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
17:
18: 19: 20: 21: 22: 23:
24: abstract class cWYSIWYGEditor {
25: 26: 27: 28:
29: protected static $_sConfigPrefix = '[\'wysiwyg\']';
30:
31: 32: 33: 34:
35: protected $_sPath;
36:
37: 38: 39: 40:
41: protected $_sEditor;
42:
43: 44: 45: 46:
47: protected $_sEditorName;
48:
49: 50: 51: 52:
53: protected $_sEditorContent;
54:
55: 56: 57: 58:
59: protected $_aSettings;
60:
61: 62: 63: 64: 65:
66: public function __construct($sEditorName, $sEditorContent) {
67: $cfg = cRegistry::getConfig();
68:
69: $this->_sPath = $cfg['path']['all_wysiwyg_html'];
70: $this->_setEditorName($sEditorName);
71: $this->_setEditorContent($sEditorContent);
72: }
73:
74: 75: 76: 77:
78: protected function _setEditorContent($sEditorContent) {
79: $this->_sEditorContent = $sEditorContent;
80: }
81:
82: 83: 84: 85:
86: protected function _setEditor($sEditor) {
87: global $cfg;
88:
89: if (is_dir($cfg['path']['all_wysiwyg'] . $sEditor)) {
90: if (substr($sEditor, strlen($sEditor) - 1, 1) != "/") {
91: $sEditor = $sEditor . "/";
92: }
93:
94: $this->_sEditor = $sEditor;
95: }
96: }
97:
98: 99: 100: 101: 102: 103: 104: 105:
106: protected function _setSetting($sKey, $sValue, $bForceSetting = false) {
107: if ($bForceSetting || !array_key_exists($sKey, $this->_aSettings)) {
108: $this->_aSettings[$sKey] = $sValue;
109: }
110: }
111:
112: 113: 114: 115:
116: protected function _unsetSetting($sKey) {
117: unset($this->_aSettings[$sKey]);
118: }
119:
120: 121: 122: 123:
124: protected function _getEditorPath() {
125: return $this->_sPath . $this->_sEditor;
126: }
127:
128: 129: 130: 131:
132: protected function _setEditorName($sEditorName) {
133: $this->_sEditorName = $sEditorName;
134: }
135:
136: 137: 138: 139: 140:
141: protected function _getScripts() {
142: throw new cBadMethodCallException('You need to override the method _getScripts');
143: }
144:
145: 146: 147: 148: 149:
150: protected function _getEditor() {
151: throw new cBadMethodCallException('You need to override the method _getEditor');
152: }
153:
154: 155: 156: 157:
158: public static function getCurrentWysiwygEditorName() {
159:
160: define('DEFAULT_WYSIWYG_EDITOR', 'tinymce3');
161:
162: $curWysiwygEditor = getEffectiveSetting('wysiwyg', 'editor', constant('DEFAULT_WYSIWYG_EDITOR'));
163:
164:
165:
166: if (0 === strlen($curWysiwygEditor)
167: || false === cFileHandler::exists(cRegistry::getConfigValue('path', 'all_wysiwyg') . $curWysiwygEditor)
168: || false !== strpos($curWysiwygEditor, '.')
169: || false !== strpos($curWysiwygEditor, '/')
170: || false !== strpos($curWysiwygEditor, '\\')) {
171: $curWysiwygEditor = constant('DEFAULT_WYSIWYG_EDITOR');
172: }
173:
174: return $curWysiwygEditor;
175: }
176:
177: 178: 179: 180: 181: 182: 183:
184: public static function safeConfig($config) {
185: $erroneousSettings = array();
186:
187:
188:
189: $configFile = 'config.wysiwyg_' . static::getCurrentWysiwygEditorName() . '.php';
190:
191:
192: $configPath = cRegistry::getConfigValue('path', 'contenido_config');
193:
194:
195: $filePrefix = '<?php ' . PHP_EOL;
196: $filePrefix .= "defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');\n";
197: $filePrefix .= 'global $cfg;' . PHP_EOL . PHP_EOL;
198:
199: $content = $filePrefix . '$cfg' . static::$_sConfigPrefix . ' = ' . var_export($config, true) . ';' . PHP_EOL;
200:
201:
202: if (true !== cFileHandler::write($configPath . $configFile, $content)) {
203:
204: $erroneusSettings['saving'] = array('config_file' => 'wysiwyg config file could not be written');
205:
206: error_log('Error writing ' . $configPath . $configFile);
207: return $erroneusSettings;
208: }
209:
210: return $erroneousSettings;
211: }
212: }
213: