fix entrypaging fallthrough smarty assignment
This commit is contained in:
parent
00e288eac1
commit
2a13ff7611
5
serendipity_event_entrypaging/ChangeLog
Normal file
5
serendipity_event_entrypaging/ChangeLog
Normal file
|
@ -0,0 +1,5 @@
|
|||
1.40:
|
||||
-----
|
||||
* Fix and allow Smarty option assignement to be used in entries tpl
|
||||
with Serendipity versions from 1.7+
|
||||
* Reset reqirement to S9y 1.6 and use modern lang include API
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -6,16 +6,17 @@
|
|||
* EN-Revision: 1.2
|
||||
*/
|
||||
|
||||
@define('PLUGIN_ENTRYPAGING_NAME', 'Връзки към предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_BLAHBLAH', 'Поставя връзки към предишната и следващата статия в страницата на настоящата статия. Това позволява по-лесно разглеждане на статиите.');
|
||||
@define('PLUGIN_ENTRYPAGING_PLACE', 'Място на връзките');
|
||||
@define('PLUGIN_ENTRYPAGING_TOP', 'Горе');
|
||||
@define('PLUGIN_ENTRYPAGING_BOTTOM', 'Долу');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM', 'Показва случайна статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_BLAHBLAH', 'Показва случайна статия над връзките за предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT', 'Случайна статия: ');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT', 'Име на връзката към следващата статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', 'Име на връзката към предишната статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'Въведете име на връзката. Ако го оставите празно, ще бъде използвано заглавието на статията.');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Следване на статии по категории');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Ако е позволено, последователността от статиите ще бъде от категорията, която е първа в списъка категории за текущо показаната статия.');
|
||||
@define('PLUGIN_ENTRYPAGING_NAME', 'Връзки към предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_BLAHBLAH', 'Поставя връзки към предишната и следващата статия в страницата на настоящата статия. Това позволява по-лесно разглеждане на статиите.');
|
||||
@define('PLUGIN_ENTRYPAGING_PLACE', 'Място на връзките');
|
||||
@define('PLUGIN_ENTRYPAGING_TOP', 'Горе');
|
||||
@define('PLUGIN_ENTRYPAGING_BOTTOM', 'Долу');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM', 'Показва случайна статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_BLAHBLAH', 'Показва случайна статия над връзките за предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT', 'Случайна статия: ');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT', 'Име на връзката към следващата статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', 'Име на връзката към предишната статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'Въведете име на връзката. Ако го оставите празно, ще бъде използвано заглавието на статията.');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Следване на статии по категории');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Ако е позволено, последователността от статиите ще бъде от категорията, която е първа в списъка категории за текущо показаната статия.');
|
||||
|
||||
|
|
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Použíat stránkování podle kategorií');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Pokud je povoleno, stránkování zobrazí odkazy na další/předchozí příspěvky pouze z kategorie příspěvku, ve kterém je zobrazeno.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Použíat stránkování podle kategorií');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Pokud je povoleno, stránkování zobrazí odkazy na další/předchozí příspěvky pouze z kategorie příspěvku, ve kterém je zobrazeno.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
|
@ -21,4 +21,5 @@
|
|||
|
||||
// Next lines were translated on 2009/08/20
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Linkauswahl auf Basis der aktuelle Kategorie');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Wenn aktiviert, werden nur Links zu Einträgen aus der Kategorie angezeigt, zu welcher auch der erste Eintrag gehörte.' );
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Wenn aktiviert, werden nur Links zu Einträgen aus der Kategorie angezeigt, zu welcher auch der erste Eintrag gehörte.' );
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -18,4 +18,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', '前へのリンクの題名');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'リンクの名前を入力します。もし空の場合、エントリの題名が使用されるでしょう。');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
# Translated by: Wesley Hwang-Chung <wesley96@gmail.com>
|
||||
# (c) 2005 http://www.tool-box.info/
|
||||
|
||||
|
@ -14,4 +14,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', '이전 링크에 붙일 제목');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', '링크 제목을 입력하십시오. 입력하지 않을 경우 해당 글의 제목이 사용됩니다.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Uzyj linkowania tylko w obrębie kategorii');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Jeśli włączone, linkowanie będzie się odbywało tylko do wpisów z kategorii (pierwszej zaznaczonej w polu wyboru kategorii w Edycji wpisu), do której przynależy dany wpis. A więc linkowane będą wpisy poprzednie/następne nie tylko według chronologii ale także w obrębie tej samej kategorii.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -6,16 +6,17 @@
|
|||
* EN-Revision: 1.2
|
||||
*/
|
||||
|
||||
@define('PLUGIN_ENTRYPAGING_NAME', 'Връзки към предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_BLAHBLAH', 'Поставя връзки към предишната и следващата статия в страницата на настоящата статия. Това позволява по-лесно разглеждане на статиите.');
|
||||
@define('PLUGIN_ENTRYPAGING_PLACE', 'Място на връзките');
|
||||
@define('PLUGIN_ENTRYPAGING_TOP', 'Горе');
|
||||
@define('PLUGIN_ENTRYPAGING_BOTTOM', 'Долу');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM', 'Показва случайна статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_BLAHBLAH', 'Показва случайна статия над връзките за предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT', 'Случайна статия: ');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT', 'Име на връзката към следващата статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', 'Име на връзката към предишната статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'Въведете име на връзката. Ако го оставите празно, ще бъде използвано заглавието на статията.');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Следване на статии по категории');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Ако е позволено, последователността от статиите ще бъде от категорията, която е първа в списъка категории за текущо показаната статия.');
|
||||
@define('PLUGIN_ENTRYPAGING_NAME', 'Връзки към предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_BLAHBLAH', 'Поставя връзки към предишната и следващата статия в страницата на настоящата статия. Това позволява по-лесно разглеждане на статиите.');
|
||||
@define('PLUGIN_ENTRYPAGING_PLACE', 'Място на връзките');
|
||||
@define('PLUGIN_ENTRYPAGING_TOP', 'Горе');
|
||||
@define('PLUGIN_ENTRYPAGING_BOTTOM', 'Долу');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM', 'Показва случайна статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_BLAHBLAH', 'Показва случайна статия над връзките за предишна/следваща статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT', 'Случайна статия: ');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT', 'Име на връзката към следващата статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', 'Име на връзката към предишната статия');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'Въведете име на връзката. Ако го оставите празно, ще бъде използвано заглавието на статията.');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Следване на статии по категории');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Ако е позволено, последователността от статиите ще бъде от категорията, която е първа в списъка категории за текущо показаната статия.');
|
||||
|
||||
|
|
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Použíat stránkování podle kategorií');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Pokud je povoleno, stránkování zobrazí odkazy na další/předchozí příspěvky pouze z kategorie příspěvku, ve kterém je zobrazeno.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Použíat stránkování podle kategorií');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Pokud je povoleno, stránkování zobrazí odkazy na další/předchozí příspěvky pouze z kategorie příspěvku, ve kterém je zobrazeno.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version 1.0
|
||||
|
@ -21,4 +21,5 @@
|
|||
|
||||
// Next lines were translated on 2009/08/20
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Linkauswahl auf Basis der aktuelle Kategorie');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Wenn aktiviert, werden nur Links zu Einträgen aus der Kategorie angezeigt, zu welcher auch der erste Eintrag gehörte.' );
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Wenn aktiviert, werden nur Links zu Einträgen aus der Kategorie angezeigt, zu welcher auch der erste Eintrag gehörte.' );
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -21,4 +21,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Use category-based pagination');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'If enabled, the pagination will only browse through pages of the same category as the entry\'s first category.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -18,4 +18,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', '前へのリンクの題名');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', 'リンクの名前を入力します。もし空の場合、エントリの題名が使用されるでしょう。');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
# Translated by: Wesley Hwang-Chung <wesley96@gmail.com>
|
||||
# (c) 2005 http://www.tool-box.info/
|
||||
|
||||
|
@ -14,4 +14,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_PREV', '이전 링크에 붙일 제목');
|
||||
@define('PLUGIN_ENTRYPAGING_RANDOM_TEXT_NEXT_DESC', '링크 제목을 입력하십시오. 입력하지 않을 경우 해당 글의 제목이 사용됩니다.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?php #
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version
|
||||
|
@ -20,4 +20,3 @@
|
|||
@define('PLUGIN_ENTRYPAGING_USECATEGORY', 'Uzyj linkowania tylko w obrębie kategorii');
|
||||
@define('PLUGIN_ENTRYPAGING_USECATEGORY_BLAHBLAH', 'Jeśli włączone, linkowanie będzie się odbywało tylko do wpisów z kategorii (pierwszej zaznaczonej w polu wyboru kategorii w Edycji wpisu), do której przynależy dany wpis. A więc linkowane będą wpisy poprzednie/następne nie tylko według chronologii ale także w obrębie tej samej kategorii.');
|
||||
|
||||
?>
|
||||
|
|
|
@ -1,17 +1,11 @@
|
|||
<?php #
|
||||
|
||||
<?php
|
||||
|
||||
if (IN_serendipity !== true) {
|
||||
die ("Don't hack!");
|
||||
}
|
||||
|
||||
// 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';
|
||||
// Load possible language files.
|
||||
@serendipity_plugin_api::load_language(dirname(__FILE__));
|
||||
|
||||
class serendipity_event_entrypaging extends serendipity_event
|
||||
{
|
||||
|
@ -26,11 +20,11 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
$propbag->add('description', PLUGIN_ENTRYPAGING_BLAHBLAH);
|
||||
$propbag->add('stackable', false);
|
||||
$propbag->add('author', 'Garvin Hicking, Wesley Hwang-Chung');
|
||||
$propbag->add('version', '1.39.1');
|
||||
$propbag->add('version', '1.40');
|
||||
$propbag->add('requirements', array(
|
||||
'serendipity' => '0.8',
|
||||
'serendipity' => '1.6',
|
||||
'smarty' => '2.6.7',
|
||||
'php' => '4.1.0'
|
||||
'php' => '5.1.0'
|
||||
));
|
||||
$propbag->add('groups', array('FRONTEND_ENTRY_RELATED'));
|
||||
$propbag->add('event_hooks', array('entry_display' => true, 'css' => true, 'entries_header' => true));
|
||||
|
@ -47,6 +41,7 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
$propbag->add('type', 'select');
|
||||
$propbag->add('select_values', $select);
|
||||
$propbag->add('name', PLUGIN_ENTRYPAGING_PLACE);
|
||||
$propbag->add('description', '');
|
||||
$propbag->add('default', 'top');
|
||||
break;
|
||||
|
||||
|
@ -84,11 +79,13 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
return true;
|
||||
}
|
||||
|
||||
function generate_content(&$title) {
|
||||
function generate_content(&$title)
|
||||
{
|
||||
$title = PLUGIN_ENTRYPAGING_NAME;
|
||||
}
|
||||
|
||||
function timeOffset($timestamp) {
|
||||
function timeOffset($timestamp)
|
||||
{
|
||||
if (function_exists('serendipity_serverOffsetHour')) {
|
||||
return serendipity_serverOffsetHour($timestamp, true);
|
||||
}
|
||||
|
@ -96,7 +93,8 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
return $timestamp;
|
||||
}
|
||||
|
||||
function makeLink($resultset, $type = 'next') {
|
||||
function makeLink($resultset, $type = 'next')
|
||||
{
|
||||
if (is_array($resultset) && is_numeric($resultset[0]['id'])) {
|
||||
// multilingual title support
|
||||
global $serendipity;
|
||||
|
@ -132,7 +130,8 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
return false;
|
||||
}
|
||||
|
||||
function event_hook($event, &$bag, &$eventData, $addData = null) {
|
||||
function event_hook($event, &$bag, &$eventData, $addData = null)
|
||||
{
|
||||
global $serendipity;
|
||||
|
||||
$hooks = &$bag->get('event_hooks');
|
||||
|
@ -157,111 +156,112 @@ class serendipity_event_entrypaging extends serendipity_event
|
|||
}
|
||||
|
||||
if ($event == 'entry_display' || $event == 'entries_header') {
|
||||
if (isset($serendipity['GET']['id']) && is_numeric($serendipity['GET']['id'])) {
|
||||
// top placement: 'entries_header' available since 0.8; 'entries_display' for fallback
|
||||
if (($placement == 'top' || $placement == 'smarty') &&
|
||||
(($event == 'entry_display' && !version_compare($serendipity['version'], '0.7.1', '>')) ||
|
||||
$event == 'entries_header')) {
|
||||
$disp = '1';
|
||||
}
|
||||
// bottom placement
|
||||
elseif ($placement == 'bottom' && $event == 'entry_display') {
|
||||
$disp = '2';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
// showPaging function integrated here
|
||||
$id = $serendipity['GET']['id'];
|
||||
$links = array();
|
||||
$cond = array();
|
||||
|
||||
$currentTimeSQL = serendipity_db_query("SELECT e.timestamp , ec.categoryid
|
||||
FROM {$serendipity['dbPrefix']}entries AS e
|
||||
LEFT OUTER JOIN {$serendipity['dbPrefix']}entrycat AS ec
|
||||
ON ec.entryid = e.id
|
||||
WHERE e.id = " . (int)$id . "
|
||||
ORDER BY ec.categoryid
|
||||
LIMIT 1", true);
|
||||
if (is_array($currentTimeSQL)) {
|
||||
$cond['compare'] = "e.timestamp [%1] " . $currentTimeSQL['timestamp'];
|
||||
} else {
|
||||
$cond['compare'] = "e.id [%1] " . (int) $id;
|
||||
}
|
||||
|
||||
$cond['and'] = " AND e.isdraft = 'false' AND e.timestamp <= " . $this->timeOffset(time());
|
||||
serendipity_plugin_api::hook_event('frontend_fetchentry', $cond);
|
||||
if (serendipity_db_bool($this->get_config('use_category')) && !empty($currentTimeSQL['categoryid'])) {
|
||||
$cond['joins'] .= " JOIN {$serendipity['dbPrefix']}entrycat AS ec ON (ec.categoryid = " . (int)$currentTimeSQL['categoryid'] . " AND ec.entryid = e.id)";
|
||||
}
|
||||
|
||||
$querystring = "SELECT
|
||||
e.id, e.title, e.timestamp
|
||||
FROM
|
||||
{$serendipity['dbPrefix']}entries e
|
||||
{$cond['joins']}
|
||||
WHERE
|
||||
{$cond['compare']}
|
||||
{$cond['and']}
|
||||
ORDER BY e.timestamp [%2]
|
||||
LIMIT 1";
|
||||
|
||||
// We cannot use sprintf() for parametrizing, because "%" strings can occur in checks for "LIKE '%serendipity...%'" SQL parts!
|
||||
$prevID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('<', 'DESC'), $querystring));
|
||||
$nextID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('>', 'ASC'), $querystring));
|
||||
|
||||
// display random link if selected
|
||||
$randomlink = "";
|
||||
if (serendipity_db_bool($this->get_config('showrandom', false))) {
|
||||
$cond['compare2'] = " e.id <> " . (int)$id ." AND e.isdraft = 'false' AND e.timestamp <= " . $this->timeOffset(time());
|
||||
|
||||
if ($serendipity['dbType'] == 'mysql' || $serendipity['dbType'] == 'mysqli') {
|
||||
$sql_order = "ORDER BY RAND()";
|
||||
if (isset($serendipity['GET']['id']) && is_numeric($serendipity['GET']['id'])) {
|
||||
// top placement: 'entries_header' available since 0.8; 'entries_display' for fallback
|
||||
if (($placement == 'top' || $placement == 'smarty') &&
|
||||
(($event == 'entry_display' && !version_compare($serendipity['version'], '0.7.1', '>')) ||
|
||||
$event == 'entries_header')) {
|
||||
$disp = '1';
|
||||
}
|
||||
// bottom placement
|
||||
elseif ($placement == 'bottom' && $event == 'entry_display') {
|
||||
$disp = '2';
|
||||
} else {
|
||||
// SQLite and PostgreSQL support this, hooray.
|
||||
$sql_order = "ORDER BY RANDOM()";
|
||||
}
|
||||
if ($placement != 'smarty') return false;
|
||||
}
|
||||
|
||||
// showPaging function integrated here
|
||||
$id = $serendipity['GET']['id'];
|
||||
$links = array();
|
||||
$cond = array();
|
||||
|
||||
$currentTimeSQL = serendipity_db_query("SELECT e.timestamp , ec.categoryid
|
||||
FROM {$serendipity['dbPrefix']}entries AS e
|
||||
LEFT OUTER JOIN {$serendipity['dbPrefix']}entrycat AS ec
|
||||
ON ec.entryid = e.id
|
||||
WHERE e.id = " . (int)$id . "
|
||||
ORDER BY ec.categoryid
|
||||
LIMIT 1", true);
|
||||
if (is_array($currentTimeSQL)) {
|
||||
$cond['compare'] = "e.timestamp [%1] " . $currentTimeSQL['timestamp'];
|
||||
} else {
|
||||
$cond['compare'] = "e.id [%1] " . (int) $id;
|
||||
}
|
||||
|
||||
$cond['and'] = " AND e.isdraft = 'false' AND e.timestamp <= " . $this->timeOffset(time());
|
||||
serendipity_plugin_api::hook_event('frontend_fetchentry', $cond);
|
||||
if (serendipity_db_bool($this->get_config('use_category')) && !empty($currentTimeSQL['categoryid'])) {
|
||||
$cond['joins'] .= " JOIN {$serendipity['dbPrefix']}entrycat AS ec ON (ec.categoryid = " . (int)$currentTimeSQL['categoryid'] . " AND ec.entryid = e.id)";
|
||||
}
|
||||
|
||||
$querystring = "SELECT
|
||||
e.id, e.title, e.timestamp
|
||||
FROM
|
||||
FROM
|
||||
{$serendipity['dbPrefix']}entries e
|
||||
WHERE
|
||||
{$cond['compare2']}
|
||||
$sql_order
|
||||
LIMIT 1";
|
||||
$randID = serendipity_db_query($querystring);
|
||||
{$cond['joins']}
|
||||
WHERE
|
||||
{$cond['compare']}
|
||||
{$cond['and']}
|
||||
ORDER BY e.timestamp [%2]
|
||||
LIMIT 1";
|
||||
|
||||
if ($link = $this->makeLink($randID, 'random')) {
|
||||
$randomlink = '<span class="serendipity_entrypaging_random">' . PLUGIN_ENTRYPAGING_RANDOM_TEXT . $link . '<br /></span>';
|
||||
// We cannot use sprintf() for parametrizing, because "%" strings can occur in checks for "LIKE '%serendipity...%'" SQL parts!
|
||||
$prevID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('<', 'DESC'), $querystring));
|
||||
$nextID = serendipity_db_query(str_replace(array('[%1]', '[%2]'), array('>', 'ASC'), $querystring));
|
||||
|
||||
// display random link if selected
|
||||
$randomlink = "";
|
||||
if (serendipity_db_bool($this->get_config('showrandom', 'false'))) {
|
||||
$cond['compare2'] = " e.id <> " . (int)$id ." AND e.isdraft = 'false' AND e.timestamp <= " . $this->timeOffset(time());
|
||||
|
||||
if ($serendipity['dbType'] == 'mysql' || $serendipity['dbType'] == 'mysqli') {
|
||||
$sql_order = "ORDER BY RAND()";
|
||||
} else {
|
||||
// SQLite and PostgreSQL support this, hooray.
|
||||
$sql_order = "ORDER BY RANDOM()";
|
||||
}
|
||||
|
||||
$querystring = "SELECT
|
||||
e.id, e.title, e.timestamp
|
||||
FROM
|
||||
{$serendipity['dbPrefix']}entries e
|
||||
WHERE
|
||||
{$cond['compare2']}
|
||||
$sql_order
|
||||
LIMIT 1";
|
||||
$randID = serendipity_db_query($querystring);
|
||||
|
||||
if ($link = $this->makeLink($randID, 'random')) {
|
||||
$randomlink = '<span class="serendipity_entrypaging_random">' . PLUGIN_ENTRYPAGING_RANDOM_TEXT . $link . '<br /></span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($link = $this->makeLink($prevID, 'prev')) {
|
||||
$links[] = '<span class="serendipity_entrypaging_left"><span class="epicon"><</span> ' . $link . '</span>';
|
||||
}
|
||||
if ($link = $this->makeLink($prevID, 'prev')) {
|
||||
$links[] = '<span class="serendipity_entrypaging_left"><span class="epicon"><</span> ' . $link . '</span>';
|
||||
}
|
||||
|
||||
if ($link = $this->makeLink($nextID, 'next')) {
|
||||
$links[] = '<span class="serendipity_entrypaging_right">' . $link . ' <span class="epicon">></span></span>';
|
||||
}
|
||||
if ($link = $this->makeLink($nextID, 'next')) {
|
||||
$links[] = '<span class="serendipity_entrypaging_right">' . $link . ' <span class="epicon">></span></span>';
|
||||
}
|
||||
|
||||
// choose method of display
|
||||
if ($placement == 'smarty' && is_object($serendipity['smarty'])) {
|
||||
$serendipity['smarty']->assign($this->smartylinks);
|
||||
} elseif ($disp == '1') {
|
||||
echo '<div class="serendipity_entrypaging">' . $randomlink . implode(' <span class="epicon">|</span> ', $links) . '</div>';
|
||||
} elseif ($disp == '2') {
|
||||
$eventData[0]['add_footer'] .= '<div class="serendipity_entrypaging">' . $randomlink . implode(' <span class="epicon">|</span> ', $links) . '</div>';
|
||||
} else {
|
||||
return false;
|
||||
// choose method of display
|
||||
if ($placement == 'smarty' && is_object($serendipity['smarty'])) {
|
||||
$serendipity['smarty']->assign('smarty_entrypaging', true);
|
||||
$serendipity['smarty']->assign($this->smartylinks);
|
||||
} elseif ($disp == '1') {
|
||||
echo '<div class="serendipity_entrypaging">' . $randomlink . implode(' <span class="epicon">|</span> ', $links) . '</div>';
|
||||
} elseif ($disp == '2') {
|
||||
$eventData[0]['add_footer'] .= '<div class="serendipity_entrypaging">' . $randomlink . implode(' <span class="epicon">|</span> ', $links) . '</div>';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim: set sts=4 ts=4 expandtab : */
|
||||
|
|
Loading…
Reference in a new issue