add('name', PLUGIN_EVENT_YQ_NAME);
$propbag->add('description', PLUGIN_EVENT_YQ_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Rasmus Lerdorf');
$propbag->add('version', '1.3');
$propbag->add('requirements', array(
'serendipity' => '0.8',
'smarty' => '2.6.7',
'php' => '4.1.0'
));
$propbag->add('event_hooks', array(
'frontend_display:html:per_entry' => true,
'frontend_header' => true
));
$propbag->add('configuration', array('results', 'context_length', 'add_context'));
$propbag->add('groups', array('FRONTEND_EXTERNAL_SERVICES'));
}
function introspect_config_item($name, &$propbag) {
switch($name) {
case 'results':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_EVENT_YQ_RESULTS);
$propbag->add('description', PLUGIN_EVENT_YQ_RESULTS_DESC);
$propbag->add('default', '5');
break;
case 'context_length':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_EVENT_YQ_CONTEXT_LENGTH);
$propbag->add('description', PLUGIN_EVENT_YQ_CONTEXT_LENGTH_DESC);
$propbag->add('default', '5');
break;
case 'add_context':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_EVENT_YQ_ADD_CONTEXT);
$propbag->add('description', PLUGIN_EVENT_YQ_ADD_CONTEXT_DESC);
$propbag->add('default', '');
break;
}
return true;
}
function event_hook($event, &$bag, &$eventData, $addData = null) {
global $serendipity, $IE;
static $hookno = 0;
$hookno++;
$hooks = &$bag->get('event_hooks');
$results = $this->get_config('results');
$context_length = $this->get_config('context_length');
$add_context = htmlentities($this->get_config('add_context'), ENT_COMPAT, LANG_CHARSET);
$links = array();
if (isset($hooks[$event])) {
switch($event) {
case 'frontend_header':
echo ''."\n";
break;
case 'frontend_display:html:per_entry':
$title = htmlentities($eventData['title'], ENT_COMPAT, LANG_CHARSET);
$tmp = strip_tags($eventData['body']);
$tmp = wordwrap($tmp, 80, '<>');
$tmp = explode('<>', $tmp);
$tmp = array_slice($tmp, 0, $context_length); /* should be $context_length here */
$context = str_replace('"','',trim(implode(" ", $tmp)));
$pos = strlen(strrchr($context, '.'));
if($pos < strlen($context)) $context = substr($context, 0, -($pos-1));
$body = &$eventData['body'];
$last_word = substr(strrchr($context, ' '),1);
$last_word = preg_quote($last_word,'/');
if($IE) {
$st_off = "";
$js_on = "document.getElementById('myyq$hookno').style.background='#FFFDE6'";
$js_off = "document.getElementById('myyq$hookno').style.background='#FFFFFF'";
} else {
$st_off = "border: 1px solid #FFFFFF;";
$js_on = "document.getElementById('myyq$hookno').style.border='1px dashed #ccc'";
$js_on .= ";document.getElementById('myyq$hookno').style.background='#FFFDE6'";
$js_off = "document.getElementById('myyq$hookno').style.border='1px solid #FFFFFF'";
$js_off.= ";document.getElementById('myyq$hookno').style.background='#FFFFFF'";
}
$blurb = <<
EOC;
$len = strlen($context)-strlen($last_word);
$body = preg_replace('/(.*'.$last_word.')/','\1', $body, 1);
$body = $blurb . $body;
return true;
break;
default:
return false;
break;
}
} else {
return false;
}
}
}
/* vim: set sts=4 ts=4 expandtab : */
?>