'; public function __construct() { $this->active = get_option($this->active_option_name, false); if ($this->active == 'true') { $this->init(); } // AJAX handlers add_action('wp_ajax_update_active_option_canonical_' . $this->active_option_name, array($this, 'update_active_option_callback')); } public function init() { // Initialize markdown parser functionality add_action('init', array($this, 'register_markdown_shortcodes')); } /** * Register markdown shortcodes */ public function register_markdown_shortcodes() { add_shortcode('markdown', array($this, 'markdown_shortcode')); } /** * Markdown shortcode handler */ public function markdown_shortcode($atts, $content = null) { if (empty($content)) { return ''; } return $this->parse_markdown($content); } /** * Parse markdown text to HTML */ public function parse_markdown($markdownText) { // Check if Parsedown class exists if (!class_exists('Parsedown')) { // Simple fallback parser for basic markdown return $this->simple_markdown_parser($markdownText); } $parsedown = new Parsedown(); $html = $parsedown->text($markdownText); return $html; } /** * Simple markdown parser fallback */ private function simple_markdown_parser($text) { // Convert headers $text = preg_replace('/^### (.*$)/m', '

$1

', $text); $text = preg_replace('/^## (.*$)/m', '

$1

', $text); $text = preg_replace('/^# (.*$)/m', '

$1

', $text); // Convert bold $text = preg_replace('/\*\*(.*?)\*\*/', '$1', $text); // Convert italic $text = preg_replace('/\*(.*?)\*/', '$1', $text); // Convert links $text = preg_replace('/\[([^\]]+)\]\(([^)]+)\)/', '$1', $text); // Convert line breaks $text = nl2br($text); return $text; } /** * Update active option callback */ public function update_active_option_callback() { check_ajax_referer('aiautotool_nonce', 'security'); if (!current_user_can('manage_options')) { wp_die(__('Permission denied', 'ai-auto-tool'), '', array('response' => 403)); } if (isset($_POST['active'])) { $active = sanitize_text_field($_POST['active']); update_option($this->active_option_name, $active, null, 'no'); wp_send_json_success(array('active' => $active)); } wp_send_json_error('Invalid request'); } /** * Render feature settings */ public function render_feature() { $box = new AutoToolBox( $this->icon . ' Markdown Parser', 'Convert markdown text to HTML with support for various syntax', admin_url('admin.php?page=aiautotool_integrations'), $this->active_option_name, $this->active, '', false ); echo $box->generateHTML(); } } } // Global function for backward compatibility if (!function_exists('markdown')) { function markdown($markdownText) { if (class_exists('AI_AutoTool_MarkdownParser')) { $parser = new AI_AutoTool_MarkdownParser(); return $parser->parse_markdown($markdownText); } // Fallback to simple parser return AI_AutoTool_MarkdownParser::simple_markdown_parser($markdownText); } }