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: 107: 108:
109: protected function _setSetting($sKey, $sValue, $bForceSetting = false) {
110: if ($bForceSetting || !array_key_exists($sKey, $this->_aSettings)) {
111: $this->_aSettings[$sKey] = $sValue;
112: }
113: }
114:
115: 116: 117: 118:
119: protected function _unsetSetting($sKey) {
120: unset($this->_aSettings[$sKey]);
121: }
122:
123: 124: 125: 126:
127: protected function _getEditorPath() {
128: return $this->_sPath . $this->_sEditor;
129: }
130:
131: 132: 133: 134:
135: protected function _setEditorName($sEditorName) {
136: $this->_sEditorName = $sEditorName;
137: }
138:
139: 140: 141: 142: 143:
144: protected function _getScripts() {
145: throw new cBadMethodCallException('You need to override the method _getScripts');
146: }
147:
148: 149: 150: 151: 152:
153: protected function _getEditor() {
154: throw new cBadMethodCallException('You need to override the method _getEditor');
155: }
156:
157: 158: 159: 160: 161:
162: public static function getCurrentWysiwygEditorName() {
163:
164: define('DEFAULT_WYSIWYG_EDITOR', cRegistry::getConfigValue('wysiwyg', 'editor', 'tinymce3'));
165:
166: $curWysiwygEditor = getEffectiveSetting('wysiwyg', 'editor', constant('DEFAULT_WYSIWYG_EDITOR'));
167:
168:
169:
170: if (0 === strlen($curWysiwygEditor)
171: || false === cFileHandler::exists(cRegistry::getConfigValue('path', 'all_wysiwyg') . $curWysiwygEditor)
172: || false !== strpos($curWysiwygEditor, '.')
173: || false !== strpos($curWysiwygEditor, '/')
174: || false !== strpos($curWysiwygEditor, '\\')) {
175: $curWysiwygEditor = constant('DEFAULT_WYSIWYG_EDITOR');
176: }
177:
178: return $curWysiwygEditor;
179: }
180:
181: 182: 183: 184: 185: 186: 187: 188: 189:
190: public static function saveConfig($config) {
191:
192:
193:
194: $configFile = 'config.wysiwyg_' . static::getCurrentWysiwygEditorName() . '.php';
195:
196:
197: $configPath = cRegistry::getConfigValue('path', 'contenido_config');
198:
199:
200: $filePrefix = '<?php ' . PHP_EOL;
201: $filePrefix .= "defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');\n";
202: $filePrefix .= 'global $cfg;' . PHP_EOL . PHP_EOL;
203:
204: $content = $filePrefix . '$cfg' . static::$_sConfigPrefix . ' = ' . var_export($config, true) . ';' . PHP_EOL;
205:
206:
207: if (true !== cFileHandler::write($configPath . $configFile, $content)) {
208: $erroneousSettings = array();
209:
210:
211: $erroneusSettings['saving'] = array('config_file' => 'wysiwyg config file could not be written');
212:
213: error_log('Error writing ' . $configPath . $configFile);
214: return $erroneusSettings;
215: }
216:
217:
218: global $cfg;
219: $cfg['wysiwyg'][static::getCurrentWysiwygEditorName()] = $config;
220:
221: return array();
222: }
223: }
224: