Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php # $Id: serendipity_event_nl2br.php 966 2006-02-21 12:36:55Z garvinhicking $
- // Probe for a language include with constants. Still include defines later on, if some constants were missing
- $probelang = dirname(__FILE__) . '/' . $serendipity['charset'] . 'lang_' . $serendipity['lang'] . '.inc.php';
- if (file_exists($probelang)) {
- include $probelang;
- }
- include dirname(__FILE__) . '/lang_en.inc.php';
- class serendipity_event_nl2br extends serendipity_event
- {
- var $title = PLUGIN_EVENT_NL2BR_NAME;
- function introspect(&$propbag)
- {
- global $serendipity;
- $propbag->add('name', PLUGIN_EVENT_NL2BR_NAME);
- $propbag->add('description', PLUGIN_EVENT_NL2BR_DESC);
- $propbag->add('stackable', false);
- $propbag->add('author', 'Serendipity Team');
- $propbag->add('version', '1.5');
- $propbag->add('requirements', array(
- 'serendipity' => '0.8',
- 'smarty' => '2.6.7',
- 'php' => '4.1.0'
- ));
- $propbag->add('cachable_events', array('frontend_display' => true));
- $propbag->add('event_hooks', array('frontend_display' => true));
- $propbag->add('groups', array('MARKUP'));
- $this->markup_elements = array(
- array(
- 'name' => 'ENTRY_BODY',
- 'element' => 'body',
- ),
- array(
- 'name' => 'EXTENDED_BODY',
- 'element' => 'extended',
- ),
- array(
- 'name' => 'COMMENT',
- 'element' => 'comment',
- ),
- array(
- 'name' => 'HTML_NUGGET',
- 'element' => 'html_nugget',
- )
- );
- $conf_array = array();
- $conf_array[] = 'isolate';
- foreach($this->markup_elements as $element) {
- $conf_array[] = $element['name'];
- }
- $propbag->add('configuration', $conf_array);
- }
- function install() {
- serendipity_plugin_api::hook_event('backend_cache_entries', $this->title);
- }
- function uninstall() {
- serendipity_plugin_api::hook_event('backend_cache_purge', $this->title);
- serendipity_plugin_api::hook_event('backend_cache_entries', $this->title);
- }
- function generate_content(&$title) {
- $title = $this->title;
- }
- function introspect_config_item($name, &$propbag)
- {
- switch($name) {
- case 'isolate':
- $propbag->add('type', 'string');
- $propbag->add('name', PLUGIN_EVENT_NL2BR_ISOLATE_TAGS);
- $propbag->add('description', PLUGIN_EVENT_NL2BR_ISOLATE_TAGS_DESC);
- $propbag->add('default', '');
- break;
- default:
- $propbag->add('type', 'boolean');
- $propbag->add('name', constant($name));
- $propbag->add('description', sprintf(APPLY_MARKUP_TO, constant($name)));
- $propbag->add('default', 'true');
- }
- return true;
- }
- function isolate($src, $regexp = NULL) {
- if($regexp) return preg_replace_callback($regexp, array($this, 'isolate'), $src);
- global $_buf;
- $_buf[] = $src[0];
- return "\001" . (count($_buf) - 1);
- }
- function restore($text) {
- global $_buf;
- return preg_replace('~\001(\d+)~e', '$_buf[$1]', $text);
- }
- function event_hook($event, &$bag, &$eventData) {
- global $serendipity;
- static $isolate = null;
- global $_buf;
- $hooks = &$bag->get('event_hooks');
- if (isset($hooks[$event])) {
- switch($event) {
- case 'frontend_display':
- if ($isolate === null) {
- $isolate = $this->get_config('isolate');
- $tags = (array)explode(',', $isolate);
- $isolate = array();
- foreach($tags AS $tag) {
- $tag = trim($tag);
- if (!empty($tag)) {
- $isolate[] = $tag;
- }
- }
- if (count($isolate) < 1) {
- $isolate = false;
- }
- }
- foreach ($this->markup_elements as $temp) {
- if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']]) &&
- !$eventData['properties']['ep_disable_markup_' . $this->instance] &&
- !isset($serendipity['POST']['properties']['disable_markup_' . $this->instance]) &&
- !$eventData['properties']['ep_no_nl2br'] &&
- !isset($serendipity['POST']['properties']['ep_no_nl2br'])) {
- $element = $temp['element'];
- if ($isolate) {
- $eventData[$element] = $this->isolate($eventData[$element], '~[<\[](textarea|pre|geshi).*?[>\]].*?[<\[]/\1[>\]]~si');
- $eventData[$element] = nl2br($eventData[$element]);
- $eventData[$element] = $this->restore($eventData[$element]);
- }else{
- $eventData[$element] = nl2br($eventData[$element]);
- }
- }
- }
- return true;
- break;
- default:
- return false;
- }
- } else {
- return false;
- }
- }
- }
- /* vim: set sts=4 ts=4 expandtab : */
- ?>
Add Comment
Please, Sign In to add comment