📄 serendipity_event_trackexits.php
字号:
<?php # $Id: serendipity_event_trackexits.php,v 1.3.4.1 2004/04/13 10:01:14 garvinhicking Exp $
/*******************************************************汉化作者:youngong(http://youngong.blogbus.com) **官方主页:http://www.s9y.corg **我的信箱:youngong@163.com **如果有问题,欢迎和作者及汉化作者联系。 ********************************************************/
switch ($serendipity['lang']) {
case 'de':
@define('PLUGIN_EVENT_TRACKBACK_NAME', 'Textformatierung: Externe Links z鋒len');
@define('PLUGIN_EVENT_TRACKBACK_DESC', 'Click auf Externe Links verfolgen');
break;
case 'cn':
@define('PLUGIN_EVENT_TRACKBACK_NAME', '标记: Track exits');
@define('PLUGIN_EVENT_TRACKBACK_DESC', '引用的外部链接');
break;
case 'en':
default:
@define('PLUGIN_EVENT_TRACKBACK_NAME', 'Markup: Track exits');
@define('PLUGIN_EVENT_TRACKBACK_DESC', 'Track clicks on external URLs');
break;
}
class serendipity_event_trackexits extends serendipity_event
{
function introspect(&$propbag)
{
global $serendipity;
$propbag->add('name', PLUGIN_EVENT_TRACKBACK_NAME);
$propbag->add('description', PLUGIN_EVENT_TRACKBACK_DESC);
$propbag->add('event_hooks', array('frontend_display' => true));
$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();
foreach($this->markup_elements as $element) {
$conf_array[] = $element['name'];
}
$propbag->add('configuration', $conf_array);
}
function generate_content(&$title) {
$title = PLUGIN_EVENT_TRACKBACK_NAME;
}
function introspect_config_item($name, &$propbag)
{
$propbag->add('type', 'boolean');
$propbag->add('name', $name);
$propbag->add('description', sprintf(APPLY_MARKUP_TO, $name));
return true;
}
function event_hook($event, &$bag, &$eventData) {
global $serendipity;
$hooks = &$bag->get('event_hooks');
if (isset($hooks[$event])) {
switch($event) {
case 'frontend_display':
foreach ($this->markup_elements as $temp) {
if (serendipity_db_bool($this->get_config($temp['name'], true)) && isset($eventData[$temp['element']])) {
$element = $temp['element'];
$serendipity['encodeExitsCallback_entry_id'] = (isset($eventData['entry_id']) ? $eventData['entry_id'] : $eventData['id']);
$eventData[$element] = preg_replace_callback(
"#<a(.*)href=(\"|')http://([^\"']+)(\"|')#isUm",
array($this, '_encodeExitsCallback'),
$eventData[$element]
);
}
}
return true;
break;
default:
return false;
}
} else {
return false;
}
}
/**
* Transforms '<a href="http://url/">' into
* '<a href="exit.php?url=encurl" ...>'.
*/
function _encodeExitsCallback($buffer) {
global $serendipity;
$entry_id = $serendipity['encodeExitsCallback_entry_id'];
$url = 'http://' . $buffer[3];
return sprintf(
'<a%shref="%sexit.php?url=%s%s" title="%s" onmouseover="window.status=\'%s\';return true;" onmouseout="window.status=\'\';return true;"',
$buffer[1],
$serendipity['baseURL'],
base64_encode($url),
($entry_id != 0) ? '&entry_id=' . $entry_id : '',
$url,
$url
);
}
}
/* vim: set sts=4 ts=4 expandtab : */
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -