1: <?php
  2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12: 
 13: 
 14: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
 15: 
 16:  17:  18:  19:  20:  21: 
 22: abstract class cWYSIWYGEditor {
 23:      24:  25:  26: 
 27:     protected static $_configPrefix = '[\'wysiwyg\']';
 28: 
 29:      30:  31:  32: 
 33:     protected $_sPath;
 34: 
 35:      36:  37:  38: 
 39:     protected $_sEditor;
 40: 
 41:      42:  43:  44: 
 45:     protected $_sEditorName;
 46: 
 47:      48:  49:  50: 
 51:     protected $_sEditorContent;
 52: 
 53:      54:  55:  56: 
 57:     protected $_aSettings;
 58: 
 59:      60:  61:  62:  63:  64: 
 65:     public function __construct($editorName, $editorContent) {
 66:         $cfg = cRegistry::getConfig();
 67: 
 68:         $this->_sPath = $cfg['path']['all_wysiwyg_html'];
 69:         $this->_setEditorName($editorName);
 70:         $this->_setEditorContent($editorContent);
 71:     }
 72: 
 73:      74:  75:  76: 
 77:     protected function _setEditorContent($sEditorContent) {
 78:         $this->_sEditorContent = $sEditorContent;
 79:     }
 80: 
 81:      82:  83:  84: 
 85:     protected function _setEditor($sEditor) {
 86:         global $cfg;
 87: 
 88:         if (is_dir($cfg['path']['all_wysiwyg'] . $sEditor)) {
 89:             if (substr($sEditor, strlen($sEditor) - 1, 1) != "/") {
 90:                 $sEditor = $sEditor . "/";
 91:             }
 92: 
 93:             $this->_sEditor = $sEditor;
 94:         }
 95:     }
 96: 
 97:      98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 
109:     public function setSetting($type = null, $key, $value, $forceSetting = false) {
110:         if ($forceSetting || !array_key_exists($key, $this->_aSettings)) {
111:             $this->_aSettings[$key] = $value;
112:         }
113:     }
114: 
115:     116: 117: 118: 
119:     protected function _unsetSetting($key) {
120:         unset($this->_aSettings[$key]);
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::$_configPrefix . ' = ' . 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: