-
Notifications
You must be signed in to change notification settings - Fork 37
/
serendipity_event_entrylastmodified.php
134 lines (116 loc) · 6.1 KB
/
serendipity_event_entrylastmodified.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php #
if (IN_serendipity !== true) {
die ("Don't hack!");
}
@serendipity_plugin_api::load_language(dirname(__FILE__));
class serendipity_event_entrylastmodified extends serendipity_event {
var $title = PLUGIN_EVENT_ENTRYLASTMODIFIED_NAME;
function introspect(&$propbag) {
global $serendipity;
$propbag->add('name', PLUGIN_EVENT_ENTRYLASTMODIFIED_NAME);
$propbag->add('description', PLUGIN_EVENT_ENTRYLASTMODIFIED_DESC);
$propbag->add('stackable', false);
$propbag->add('author', 'Garvin Hicking');
$propbag->add('version', '1.10.1');
$propbag->add('requirements', array(
'serendipity' => '0.8',
'smarty' => '2.6.7',
'php' => '4.1.0'
));
$propbag->add('event_hooks', array('entry_display' => true));
$propbag->add('groups', array('FRONTEND_ENTRY_RELATED'));
$propbag->add('configuration', array('notmodified', 'position'));
}
function introspect_config_item($name, &$propbag)
{
global $serendipity;
switch($name) {
case 'position':
$propbag->add('type','radio');
$propbag->add('name',PLUGIN_EVENT_ENTRYLASTMODIFIED_POSITION);
$propbag->add('description',PLUGIN_EVENT_ENTRYLASTMODIFIED_POSITION_DESC);
$propbag->add('radio',array(
'value' => array('left','center','right'),
'desc' => array(PLUGIN_EVENT_ENTRYLASTMODIFIED_LEFT,PLUGIN_EVENT_ENTRYLASTMODIFIED_CENTER,PLUGIN_EVENT_ENTRYLASTMODIFIED_RIGHT)
));
$propbag->add('default','right');
// languages for which options per row are 2, add your language if appropriate
$per_row_2 = array(1 => 'bg');
// languages for which options per row are 3, add your language if appropriate
$per_row_3 = array(1 => 'en');
$lang = $serendipity['lang'];
if (in_array($lang,$per_row_2) == true)
$per_row = 2;
else if (in_array($lang,$per_row_3) == true)
$per_row = 3;
else
$per_row = 1; // by default one option per row - for languages with very long words
unset($per_row_2, $per_row_3);
$propbag->add('radio_per_row', $per_row);
break;
case 'notmodified':
$propbag->add('type','boolean');
$propbag->add('name',PLUGIN_EVENT_ENTRYLASTMODIFIED_SHOWNOTMODIFIED);
$propbag->add('description',PLUGIN_EVENT_ENTRYLASTMODIFIED_SHOWNOTMODIFIED_DESC);
$propbag->add('default','true');
break;
default:
return false;
}
return true;
}
function generate_content(&$title) {
$title = $this->title;
}
function event_hook($event, &$bag, &$eventData, $addData = null) {
global $serendipity;
$hooks = &$bag->get('event_hooks');
$notmodified = $this->get_config('notmodified');
$position = $this->get_config('position');
// %1 = position, %2 = the message itself, %3 = last_modified timestamp
$format_string_mod = '<div class="entry_last_modified" style="text-align: %s">%s %s</div>';
// %1 = position, %2 = the message itself
$format_string_nomod = '<div class="entry_last_modified" style="text-align: %s">%s</div>';
if (isset($hooks[$event])) {
switch($event) {
case 'entry_display':
if (!isset($eventData[0])) continue;
$extended_key = &$this->getFieldReference('extended', $eventData);
if ($addData['extended'] || $addData['preview']) {
$eventData[0]['exflag'] = 1;
# 631152000 is 01.01.1990 00:00:00 GMT - earlier timestamps must be wrong
if ($eventData[0]['timestamp'] != $eventData[0]['last_modified'] && $eventData[0]['last_modified'] > 631152000) {
$lm = sprintf($format_string_mod, $position, PLUGIN_EVENT_ENTRYLASTMODIFIED_HTML, serendipity_formatTime(DATE_FORMAT_SHORT, $eventData[0]['last_modified']));
$eventData[0]['add_footer'] .= $lm;
$eventData[0]['string_last_modified'] .= $lm;
} elseif ($notmodified == true && PLUGIN_EVENT_ENTRYLASTMODIFIED_NOTMODIFIED != '') {
$lm = sprintf($format_string_nomod, $position, PLUGIN_EVENT_ENTRYLASTMODIFIED_NOTMODIFIED);
$eventData[0]['add_footer'] .= $lm;
$eventData[0]['string_last_modified'] .= $lm;
}
} elseif (is_array($eventData)) {
$elements = count($eventData);
for ($i = 0; $i < $elements; $i++) {
if (!isset($eventData[$i]['add_footer'])) {
$eventData[$i]['add_footer'] = '';
}
if ($eventData[$i]['timestamp'] != $eventData[$i]['last_modified']) {
$lm = sprintf($format_string_mod, $position, PLUGIN_EVENT_ENTRYLASTMODIFIED_HTML, serendipity_formatTime(DATE_FORMAT_SHORT, $eventData[$i]['last_modified']));
$eventData[$i]['add_footer'] .= $lm;
$eventData[$i]['string_last_modified'] .= $lm;
} elseif ($notmodified == true && PLUGIN_EVENT_ENTRYLASTMODIFIED_NOTMODIFIED != '') {
$lm = sprintf($format_string_nomod, $position, PLUGIN_EVENT_ENTRYLASTMODIFIED_NOTMODIFIED);
$eventData[$i]['add_footer'] .= $lm;
$eventData[$i]['string_last_modified'] .= $lm;
}
}
}
return true;
break;
}
}
return false;
}
}
/* vim: set sts=4 ts=4 expandtab : */
?>