See More

Do not replace in tags, it matches e.g. the following for italic: * """ [...] http://"""! * * @package plugins */ class gmcode_plugin extends custom_tags_plugin { var $code = 'b2evGMco'; var $name = 'GM code'; var $priority = 45; var $group = 'rendering'; var $short_desc; var $long_desc; var $version = '7.3.0'; var $number_of_installs = 1; var $toolbar_label = 'GM code:'; var $configurable_post_list = true; var $configurable_comment_list = true; var $configurable_message_list = true; var $configurable_email_list = true; var $default_search_list = '** #\*\*(.+?)\*\*#x \\\\ #\\\\\\\\(.+?)\\\\\\\\#x // #(?<!:)\x2f\x2f(.+?)\x2f\x2f#x __ #__(.+?)__#x ## /\#\#(.+?)\#\#/x %% /%%(\s*?\n)?(.+?)(\n\s*?)?%%/sx'; var $default_replace_list = '$1 $1 $1 $1 $1

$2
'; /** * Init */ function PluginInit( & $params ) { $this->short_desc = T_('GreyMatter style formatting'); $this->long_desc = T_('**bold** \\\\italics\\\\ //italics// __underline__ ##tt## %%codeblock%%'); } function replace_callback( $content, $search, $replace ) { // Replace text outside of html tags return callback_on_non_matching_blocks( $content, '~<[^>]*>~s', array( $this, 'second_replace_callback' ), array( $search, $replace ) ); } function second_replace_callback( $content, $search, $replace) { return preg_replace( $search, $replace, $content ); } /** * The following function are here so the events will be registered * @see Plugins_admin::get_registered_events() */ function RenderItemAsHtml( & $params ) { parent::RenderItemAsHtml( $params ); } /** * Event handler: Called when displaying editor toolbars on post/item form. * * This is for post/item edit forms only. Comments, PMs and emails use different events. * * @param array Associative array of parameters * @return boolean did we display a toolbar? */ function AdminDisplayToolbar( & $params ) { $params['target_type'] = 'Item'; return $this->DisplayCodeToolbar( $params ); } /** * Event handler: Called when displaying editor toolbars on comment form. * * @param array Associative array of parameters * @return boolean did we display a toolbar? */ function DisplayCommentToolbar( & $params ) { $params['target_type'] = 'Comment'; return $this->DisplayCodeToolbar( $params ); } /** * Event handler: Called when displaying editor toolbars for message. * * @param array Associative array of parameters * @return boolean did we display a toolbar? */ function DisplayMessageToolbar( & $params ) { $params['target_type'] = 'Message'; return $this->DisplayCodeToolbar( $params ); } /** * Event handler: Called when displaying editor toolbars for email. * * @param array Associative array of parameters * @return boolean did we display a toolbar? */ function DisplayEmailToolbar( & $params ) { $apply_rendering = $this->get_email_setting( 'email_apply_rendering' ); if( ! empty( $apply_rendering ) && $apply_rendering != 'never' ) { $params['target_type'] = 'EmailCampaign'; return $this->DisplayCodeToolbar( $params ); } return false; } /** * Prepare a search list * * @param string String value of a search list * @return array The search list as array */ function prepare_search_list( $search_list_string ) { $search_list_array = explode( "\n", str_replace( "\r", '', $search_list_string ) ); foreach( $search_list_array as $l => $line ) { // Remove button name from regexp string $line = explode( ' ', $line, 2 ); $regexp = $line[1]; if( empty( $regexp ) ) { // Bad format of search string unset( $search_list_array[ $l ] ); } else { // Replace this line with regexp value (to delete a button name) $search_list_array[ $l ] = $regexp; } } return $search_list_array; } function get_tag_buttons( $search_list ) { $tagButtons = array(); foreach( $search_list as $line ) { // Init buttons from regexp lines $line = explode( ' ', $line, 2 ); $button_name = addslashes( $line[0] ); $button_exp = $line[1]; if( !empty( $button_name ) && !empty( $button_exp ) ) { $tagButtons[ $button_name ] = array( 'name' => $button_name, 'start' => $button_name, 'end' => $button_name, 'title' => $button_name ); } } return $tagButtons; } } ?>