243 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| // Switches
 | |
| const CRAYON_DEBUG = FALSE;
 | |
| 
 | |
| const CRAYON_TAG_EDITOR = TRUE;
 | |
| const CRAYON_THEME_EDITOR = TRUE;
 | |
| 
 | |
| const CRAYON_MINIFY = TRUE;
 | |
| 
 | |
| // Constants
 | |
| 
 | |
| // General definitions
 | |
| const CRAYON_DOMAIN = 'crayon-syntax-highlighter';
 | |
| 
 | |
| // These are overridden by functions since v1.1.1
 | |
| $CRAYON_VERSION = '2.8.6';
 | |
| $CRAYON_DATE = '29th November, 2021';
 | |
| $CRAYON_AUTHOR = 'Darko Luketic';
 | |
| $CRAYON_AUTHOR_SITE = 'https://icod.de';
 | |
| $CRAYON_WEBSITE = 'https://git.icod.de/dalu/crayon-syntax-highlighter';
 | |
| $CRAYON_EMAIL = 'redacted@redacted';
 | |
| $CRAYON_TWITTER = 'http://twitter.com/crayonsyntax';
 | |
| $CRAYON_GIT = 'https://git.icod.de/dalu/crayon-syntax-highlighter';
 | |
| 
 | |
| // XXX Used to name the class
 | |
| 
 | |
| const CRAYON_HIGHLIGHTER = 'CrayonHighlighter';
 | |
| const CRAYON_ELEMENT_CLASS = 'CrayonElement';
 | |
| const CRAYON_SETTING_CLASS = 'CrayonSetting';
 | |
| 
 | |
| // Directories
 | |
| 
 | |
| define('CRAYON_DIR', crayon_pf(basename(dirname(__FILE__))));
 | |
| define('CRAYON_LANG_DIR', crayon_s('langs'));
 | |
| define('CRAYON_THEME_DIR', crayon_s('themes'));
 | |
| define('CRAYON_FONT_DIR', crayon_s('fonts'));
 | |
| define('CRAYON_UTIL_DIR', crayon_s('util'));
 | |
| define('CRAYON_CSS_DIR', crayon_s('css'));
 | |
| define('CRAYON_CSS_SRC_DIR', CRAYON_CSS_DIR . crayon_s('src'));
 | |
| define('CRAYON_CSS_MIN_DIR', CRAYON_CSS_DIR . crayon_s('min'));
 | |
| define('CRAYON_JS_DIR', crayon_s('js'));
 | |
| define('CRAYON_JS_SRC_DIR', CRAYON_JS_DIR . crayon_s('src'));
 | |
| define('CRAYON_JS_MIN_DIR', CRAYON_JS_DIR . crayon_s('min'));
 | |
| define('CRAYON_TRANS_DIR', crayon_s('trans'));
 | |
| define('CRAYON_THEME_EDITOR_DIR', crayon_s('theme-editor'));
 | |
| define('CRAYON_TAG_EDITOR_DIR', crayon_s('tag-editor'));
 | |
| 
 | |
| // Paths
 | |
| 
 | |
| define('CRAYON_ROOT_PATH', crayon_pf(dirname(__FILE__)));
 | |
| const CRAYON_LANG_PATH = CRAYON_ROOT_PATH . CRAYON_LANG_DIR;
 | |
| const CRAYON_THEME_PATH = CRAYON_ROOT_PATH . CRAYON_THEME_DIR;
 | |
| const CRAYON_FONT_PATH = CRAYON_ROOT_PATH . CRAYON_FONT_DIR;
 | |
| const CRAYON_UTIL_PATH = CRAYON_ROOT_PATH . CRAYON_UTIL_DIR;
 | |
| const CRAYON_TAG_EDITOR_PATH = CRAYON_ROOT_PATH . CRAYON_UTIL_DIR . CRAYON_TAG_EDITOR_DIR;
 | |
| const CRAYON_THEME_EDITOR_PATH = CRAYON_ROOT_PATH . CRAYON_UTIL_DIR . CRAYON_THEME_EDITOR_DIR;
 | |
| 
 | |
| // Files
 | |
| 
 | |
| const CRAYON_LOG_FILE = CRAYON_ROOT_PATH . 'log.txt';
 | |
| const CRAYON_TOUCH_FILE = CRAYON_UTIL_PATH . 'touch.txt';
 | |
| const CRAYON_LOG_MAX_SIZE = 50000; // Bytes
 | |
| 
 | |
| const CRAYON_LANG_EXT = CRAYON_LANG_PATH . 'extensions.txt';
 | |
| const CRAYON_LANG_ALIAS = CRAYON_LANG_PATH . 'aliases.txt';
 | |
| const CRAYON_LANG_DELIM = CRAYON_LANG_PATH . 'delimiters.txt';
 | |
| 
 | |
| // Minified
 | |
| const CRAYON_JS_MIN = CRAYON_JS_MIN_DIR . 'crayon.min.js';
 | |
| const CRAYON_JS_TE_MIN = CRAYON_JS_MIN_DIR . 'crayon.te.min.js';
 | |
| 
 | |
| // Source
 | |
| const CRAYON_JQUERY_POPUP = CRAYON_JS_SRC_DIR . 'jquery.popup.js';
 | |
| const CRAYON_JS = CRAYON_JS_SRC_DIR . 'crayon.js';
 | |
| const CRAYON_JS_ADMIN = CRAYON_JS_SRC_DIR . 'crayon_admin.js';
 | |
| const CRAYON_JS_UTIL = CRAYON_JS_SRC_DIR . 'util.js';
 | |
| const CRAYON_CSSJSON_JS = CRAYON_JS_SRC_DIR . 'cssjson.js';
 | |
| 
 | |
| const CRAYON_CSS_JQUERY_COLORPICKER = CRAYON_JS_DIR . 'jquery-colorpicker/jquery.colorpicker.css';
 | |
| const CRAYON_JS_JQUERY_COLORPICKER = CRAYON_JS_DIR . 'jquery-colorpicker/jquery.colorpicker.js';
 | |
| const CRAYON_JS_TINYCOLOR = CRAYON_JS_DIR . 'tinycolor-min.js';
 | |
| const CRAYON_TAG_EDITOR_JS = 'crayon_tag_editor.js';
 | |
| const CRAYON_COLORBOX_JS = 'colorbox/jquery.colorbox-min.js';
 | |
| const CRAYON_COLORBOX_CSS = 'colorbox/colorbox.css';
 | |
| const CRAYON_TAG_EDITOR_PHP = CRAYON_TAG_EDITOR_PATH . 'crayon_tag_editor_wp.class.php';
 | |
| const CRAYON_TINYMCE_JS = 'crayon_tinymce.js';
 | |
| const CRAYON_QUICKTAGS_JS = 'crayon_qt.js';
 | |
| const CRAYON_STYLE = CRAYON_CSS_SRC_DIR . 'crayon_style.css';
 | |
| const CRAYON_STYLE_ADMIN = CRAYON_CSS_SRC_DIR . 'admin_style.css';
 | |
| const CRAYON_STYLE_GLOBAL = CRAYON_CSS_SRC_DIR . 'global_style.css';
 | |
| const CRAYON_STYLE_MIN = CRAYON_CSS_MIN_DIR . 'crayon.min.css';
 | |
| const CRAYON_LOGO = CRAYON_CSS_DIR . 'images/crayon_logo.png';
 | |
| const CRAYON_THEME_EDITOR_PHP = CRAYON_THEME_EDITOR_PATH . 'theme_editor.php';
 | |
| const CRAYON_THEME_EDITOR_JS = CRAYON_UTIL_DIR . CRAYON_THEME_EDITOR_DIR . 'theme_editor.js';
 | |
| const CRAYON_THEME_EDITOR_STYLE = CRAYON_UTIL_DIR . CRAYON_THEME_EDITOR_DIR . 'theme_editor.css';
 | |
| 
 | |
| // PHP Files
 | |
| const CRAYON_FORMATTER_PHP = CRAYON_ROOT_PATH . 'crayon_formatter.class.php';
 | |
| const CRAYON_HIGHLIGHTER_PHP = CRAYON_ROOT_PATH . 'crayon_highlighter.class.php';
 | |
| const CRAYON_LANGS_PHP = CRAYON_ROOT_PATH . 'crayon_langs.class.php';
 | |
| const CRAYON_PARSER_PHP = CRAYON_ROOT_PATH . 'crayon_parser.class.php';
 | |
| const CRAYON_SETTINGS_PHP = CRAYON_ROOT_PATH . 'crayon_settings.class.php';
 | |
| const CRAYON_THEMES_PHP = CRAYON_ROOT_PATH . 'crayon_themes.class.php';
 | |
| const CRAYON_FONTS_PHP = CRAYON_ROOT_PATH . 'crayon_fonts.class.php';
 | |
| const CRAYON_RESOURCE_PHP = CRAYON_ROOT_PATH . 'crayon_resource.class.php';
 | |
| const CRAYON_UTIL_PHP = CRAYON_UTIL_DIR . 'crayon_util.class.php';
 | |
| const CRAYON_TIMER_PHP = CRAYON_UTIL_DIR . 'crayon_timer.class.php';
 | |
| const CRAYON_LOG_PHP = CRAYON_UTIL_DIR . 'crayon_log.class.php';
 | |
| 
 | |
| // Script time
 | |
| 
 | |
| const CRAYON_LOAD_TIME = 'Load Time';
 | |
| //define('CRAYON_PARSE_TIME', 'Parse Time');
 | |
| const CRAYON_FORMAT_TIME = 'Format Time';
 | |
| 
 | |
| // Printing
 | |
| 
 | |
| const CRAYON_BR = "<br />";
 | |
| const CRAYON_NL = "\r\n";
 | |
| const CRAYON_BL = CRAYON_BR . CRAYON_NL;
 | |
| const CRAYON_DASH = "==============================================================================";
 | |
| const CRAYON_LINE = "------------------------------------------------------------------------------";
 | |
| 
 | |
| // Load utilities
 | |
| 
 | |
| require_once (CRAYON_UTIL_PHP);
 | |
| require_once (CRAYON_TIMER_PHP);
 | |
| require_once (CRAYON_LOG_PHP);
 | |
| 
 | |
| // Turn on the error & exception handlers
 | |
| //crayon_handler_on();
 | |
| 
 | |
| // GLOBAL FUNCTIONS
 | |
| 
 | |
| // Check for forwardslash/backslash in folder path to structure paths
 | |
| function crayon_s($url = '') {
 | |
|     $url = strval($url);
 | |
|     if (!empty($url) && !preg_match('#(\\\\|/)$#', $url)) {
 | |
|         return $url . '/';
 | |
|     } else if (empty($url)) {
 | |
|         return '/';
 | |
|     } else {
 | |
|         return $url;
 | |
|     }
 | |
| }
 | |
| 
 | |
| // Returns path using forward slashes, slash added at the end
 | |
| function crayon_pf($url, $slash = TRUE) {
 | |
|     $url = trim(strval($url));
 | |
|     if ($slash) {
 | |
|         $url = crayon_s($url);
 | |
|     }
 | |
|     return str_replace('\\', '/', $url);
 | |
| }
 | |
| 
 | |
| // Returns path using back slashes
 | |
| function crayon_pb($url) {
 | |
|     return str_replace('/', '\\', crayon_s(trim(strval($url))));
 | |
| }
 | |
| 
 | |
| // Get/Set plugin information
 | |
| function crayon_set_info($info_array) {
 | |
|     global $CRAYON_VERSION, $CRAYON_DATE, $CRAYON_AUTHOR, $CRAYON_WEBSITE;
 | |
|     if (!is_array($info_array)) {
 | |
|         return;
 | |
|     }
 | |
|     crayon_set_info_key('Version', $info_array, $CRAYON_VERSION);
 | |
|     crayon_set_info_key('Date', $info_array, $CRAYON_DATE);
 | |
|     crayon_set_info_key('AuthorName', $info_array, $CRAYON_AUTHOR);
 | |
|     crayon_set_info_key('PluginURI', $info_array, $CRAYON_WEBSITE);
 | |
| }
 | |
| 
 | |
| function crayon_set_info_key($key, $array, &$info) {
 | |
|     if (array_key_exists($key, $array)) {
 | |
|         $info = $array[$key];
 | |
|     } else {
 | |
|         return FALSE;
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon_vargs(&$var, $default) {
 | |
|     $var = isset($var) ? $var : $default;
 | |
| }
 | |
| 
 | |
| // Checks if the input is a valid PHP file and matches the $valid filename
 | |
| function crayon_is_php_file($filepath, $valid) {
 | |
|     $path = pathinfo(crayon_pf($filepath));
 | |
|     return is_file($filepath) && $path['extension'] === 'php' && $path['filename'] === $valid;
 | |
| }
 | |
| 
 | |
| // Stops the script if crayon_is_php_file() returns false or a remote path is given
 | |
| function crayon_die_if_not_php($filepath, $valid) {
 | |
|     if (!crayon_is_php_file($filepath, $valid) || crayon_is_path_url($filepath)) {
 | |
|         die("[ERROR] '$filepath' is not a valid PHP file for '$valid'");
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon_is_path_url($path) {
 | |
|     $parts = parse_url($path);
 | |
|     return isset($parts['scheme']) && strlen($parts['scheme']) > 1;
 | |
| }
 | |
| 
 | |
| // LANGUAGE TRANSLATION FUNCTIONS
 | |
| 
 | |
| function crayon_load_plugin_textdomain() {
 | |
|     if (function_exists('load_plugin_textdomain')) {
 | |
|         load_plugin_textdomain(CRAYON_DOMAIN, false, CRAYON_DIR . CRAYON_TRANS_DIR);
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon__($text) {
 | |
|     if (function_exists('__')) {
 | |
|         return __($text, CRAYON_DOMAIN);
 | |
|     } else {
 | |
|         return $text;
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon_e($text) {
 | |
|     if (function_exists('_e')) {
 | |
|         _e($text, CRAYON_DOMAIN);
 | |
|     } else {
 | |
|         echo $text;
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon_n($singular, $plural, $count) {
 | |
|     if (function_exists('_n')) {
 | |
|         return _n($singular, $plural, $count, CRAYON_DOMAIN);
 | |
|     } else {
 | |
|         return $count > 1 ? $plural : $singular;
 | |
|     }
 | |
| }
 | |
| 
 | |
| function crayon_x($text, $context) {
 | |
|     if (function_exists('_x')) {
 | |
|         return _x($text, $context, CRAYON_DOMAIN);
 | |
|     } else {
 | |
|         return $text;
 | |
|     }
 | |
| }
 |