LuckyCoinkydink/plugins/serendipity_plugin_history/serendipity_plugin_history.php

233 lines
9.2 KiB
PHP

<?php
if (IN_serendipity !== true) {
die ("Don't hack!");
}
@serendipity_plugin_api::load_language(dirname(__FILE__));
class serendipity_plugin_history extends serendipity_plugin
{
var $title = PLUGIN_HISTORY_NAME;
function introspect(&$propbag)
{
global $serendipity;
$this->title = $this->get_config('title', $this->title);
$propbag->add('name', PLUGIN_HISTORY_NAME);
$propbag->add('description', PLUGIN_HISTORY_DESC);
$propbag->add('stackable', true);
$propbag->add('author', 'Jannis Hermanns');
$propbag->add('version', '1.7');
$propbag->add('requirements', array(
'serendipity' => '1.6',
'smarty' => '2.6.7',
'php' => '4.1.0'
));
$propbag->add('groups', array('FRONTEND_VIEWS'));
$propbag->add('configuration', array('title',
'intro',
'outro',
'maxlength',
'specialage',
'min_age',
'max_age',
'max_entries',
'full',
'amount',
'displaydate',
'displayauthor',
'dateformat'));
}
function introspect_config_item($name, &$propbag)
{
switch($name) {
case 'title':
$propbag->add('type', 'string');
$propbag->add('name', TITLE);
$propbag->add('description', '');
$propbag->add('default', PLUGIN_HISTORY_NAME);
break;
case 'intro':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_INTRO);
$propbag->add('description', PLUGIN_HISTORY_INTRO_DESC);
$propbag->add('default', '');
break;
case 'outro':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_OUTRO);
$propbag->add('description', PLUGIN_HISTORY_OUTRO_DESC);
$propbag->add('default', '');
break;
case 'maxlength':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_MAXLENGTH);
$propbag->add('description', PLUGIN_HISTORY_MAXLENGTH_DESC);
$propbag->add('default', 30);
break;
case 'specialage':
$propbag->add('type', 'select');
$propbag->add('name', PLUGIN_HISTORY_SPECIALAGE);
$propbag->add('description', PLUGIN_HISTORY_SPECIALAGE_DESC);
$propbag->add('default', 'year');
$propbag->add('select_values', array('year'=>PLUGIN_HISTORY_OYA,'custom'=>PLUGIN_HISTORY_MYSELF));
break;
case 'min_age':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_MIN_AGE);
$propbag->add('description', PLUGIN_HISTORY_MIN_AGE_DESC);
$propbag->add('default', 365);
break;
case 'max_age':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_MAX_AGE);
$propbag->add('description', PLUGIN_HISTORY_MAX_AGE_DESC);
$propbag->add('default', 365);
break;
case 'max_entries':
$propbag->add('type', 'string');
$propbag->add('name', PLUGIN_HISTORY_MAX_ENTRIES);
$propbag->add('description', PLUGIN_HISTORY_MAX_ENTRIES_DESC);
$propbag->add('default', 5);
break;
case 'dateformat':
$propbag->add('type', 'string');
$propbag->add('name', GENERAL_PLUGIN_DATEFORMAT);
$propbag->add('description', sprintf(GENERAL_PLUGIN_DATEFORMAT_BLAHBLAH, '%a, %d.%m.%Y %H:%M'));
$propbag->add('default', '%a, %d.%m.%Y %H:%M');
break;
case 'full':
$propbag->add('type', 'boolean');
$propbag->add('name', PLUGIN_HISTORY_SHOWFULL);
$propbag->add('description', PLUGIN_HISTORY_SHOWFULL_DESC);
$propbag->add('default', 'false');
break;
case 'displaydate':
$propbag->add('type', 'boolean');
$propbag->add('name', PLUGIN_HISTORY_DISPLAYDATE);
$propbag->add('description', PLUGIN_HISTORY_DISPLAYDATE_DESC);
$propbag->add('default', 'true');
break;
case 'displayauthor':
$propbag->add('type', 'boolean');
$propbag->add('name', PLUGIN_HISTORY_DISPLAYAUTHOR);
$propbag->add('description', '');
$propbag->add('default', 'false');
break;
default:
return false;
}
return true;
}
function generate_content(&$title)
{
global $serendipity;
$title = $this->get_config('title', $this->title);
$intro = $this->get_config('intro');
$outro = $this->get_config('outro');
$maxlength = $this->get_config('maxlength');
$max_entries = $this->get_config('max_entries');
$min_age = $this->get_config('min_age');
$max_age = $this->get_config('max_age');
$specialage = $this->get_config('specialage');
$displaydate = serendipity_db_bool($this->get_config('displaydate', 'true'));
$dateformat = $this->get_config('dateformat');
$full = serendipity_db_bool($this->get_config('full', 'false'));
$displayauthor = serendipity_db_bool($this->get_config('displayauthor', 'false'));
if (!is_numeric($min_age) || $min_age < 0 || $specialage == 'year') {
$min_age = 365 + date('L', serendipity_serverOffsetHour());
}
if (!is_numeric($max_age) || $max_age < 1 || $specialage == 'year') {
$max_age = 365 + date('L', serendipity_serverOffsetHour());
}
if (!is_numeric($max_entries) || $max_entries < 1) {
$max_entries = 5;
}
if (!is_numeric($maxlength) ||$maxlength <0)
$maxlength = 30;
if (strlen($dateformat) < 1) {
$dateformat = '%a, %d.%m.%Y %H:%M';
}
$oldLim = $serendipity['fetchLimit'];
if (isset($serendipity['GET']['page'])) {
$oldPage = $serendipity['GET']['page'];
unset($serendipity['GET']['page']);
}
$nowts = serendipity_serverOffsetHour();
$maxts = mktime(23, 59, 59, date('m', $nowts), date('d', $nowts), date('Y', $nowts));
$mints = mktime(0, 0, 0, date('m', $nowts), date('d', $nowts), date('Y', $nowts));
$e = serendipity_fetchEntries(array(($mints-$max_age*86400),
($maxts-$min_age*86400)), $full, $max_entries);
$serendipity['fetchLimit'] = $oldLim;
if (isset($oldPage)) {
$serendipity['GET']['page'] = $oldPage;
}
echo (empty($intro)) ? '' : '<div class="serendipity_history_intro">' . $intro . '</div>' . "\n";
if (!is_array($e)) {
return false;
}
if ( ($e_c = count($e)) == 0 ) {
return false;
}
for($x=0; $x < $e_c; $x++) {
$url = serendipity_archiveURL($e[$x]['id'],
$e[$x]['title'],
'serendipityHTTPPath',
true,
array('timestamp' => $e[$x]['timestamp'])
);
$date = (!$displaydate) ? '' : serendipity_strftime($dateformat,$e[$x]['timestamp']);
$author = ($displayauthor) ? $e[$x]['author'] . ': ' : '';
echo '<div class="serendipity_history_info">';
if ($displayauthor) {
echo '<span class="serendipity_history_author">' . $author . ' </span>';
}
if ($displaydate) {
echo '<span class="serendipity_history_date">' . $date . ' </span>';
}
$t = ($maxlength==0 || strlen($e[$x]['title']) <= $maxlength) ? $e[$x]['title']
: (trim(mb_substr($e[$x]['title'], 0, $maxlength-3)).' [...]');
echo '<a href="' . $url . '" title="' . str_replace("'", "`", serendipity_specialchars($e[$x]['title'])) . '">"' . serendipity_specialchars($t) . '"</a></div>';
if ($full) {
echo '<div class="serendipity_history_body">' . strip_tags($e[$x]['body']) . '</div>';
}
}
echo (empty($outro)) ? '' : '<div class="serendipity_history_outro">' . $outro . '</div>';
}
}
/* vim: set sts=4 ts=4 expandtab : */
?>