From 79da2952dc329dbb1af06046855a28b08b87cbbb Mon Sep 17 00:00:00 2001 From: garvinhicking Date: Thu, 29 Nov 2007 12:27:50 +0000 Subject: [PATCH] Add new "joinown" and "entryprops" parameters to {serendipity_fetchPrintEntries} --- docs/NEWS | 5 +++++ include/functions_entries.inc.php | 16 ++++++++++++++-- include/functions_smarty.inc.php | 17 ++++++++++++++++- templates/bulletproof/index.tpl | 1 + 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/docs/NEWS b/docs/NEWS index b04b5db..26390e1 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,11 @@ Version 1.3 () ------------------------------------------------------------------------ + * Added new parameter "joinown" and "entryprops" to {serendipity_ + fetchPrintEntries} smarty function, to be able to fetch entries + according to their entryprops or other custom SQL. + (garvinhicking) + * Added LifeType importer (garvinhicking) * Updated Textile library to 2.0, by Lars Strojny diff --git a/include/functions_entries.inc.php b/include/functions_entries.inc.php index 3258f63..f88c56d 100644 --- a/include/functions_entries.inc.php +++ b/include/functions_entries.inc.php @@ -206,9 +206,10 @@ function &serendipity_fetchEntryCategories($entryid) { * @param string If set to "array", the array of entries will be returned. "flat-array" will only return the articles without their entryproperties. "single" will only return a 1-dimensional array. "query" will only return the used SQL. * @param bool Should an SQL-join be made to the AUTHORS DB table? * @param bool Should an SQL-join be made to the CATEGORIES DB table? + * @param string SQL-Parts to add to JOIN * @return array Holds the super-array of all entries with all additional information */ -function &serendipity_fetchEntries($range = null, $full = true, $limit = '', $fetchDrafts = false, $modified_since = false, $orderby = 'timestamp DESC', $filter_sql = '', $noCache = false, $noSticky = false, $select_key = null, $group_by = null, $returncode = 'array', $joinauthors = true, $joincategories = true) { +function &serendipity_fetchEntries($range = null, $full = true, $limit = '', $fetchDrafts = false, $modified_since = false, $orderby = 'timestamp DESC', $filter_sql = '', $noCache = false, $noSticky = false, $select_key = null, $group_by = null, $returncode = 'array', $joinauthors = true, $joincategories = true, $joinown = null) { global $serendipity; $cond = array(); @@ -393,6 +394,10 @@ function &serendipity_fetchEntries($range = null, $full = true, $limit = '', $fe LEFT JOIN {$serendipity['dbPrefix']}category c ON ec.categoryid = c.categoryid"; } + + if ($joinown) { + $cond['joins'] .= $joinown; + } $serendipity['fullCountQuery'] .=" {$cond['joins']} @@ -813,7 +818,14 @@ function serendipity_printEntryFooter($suffix = '.html', $totalEntries = null) { if ($totalEntries === null) { $totalEntries = serendipity_getTotalEntries(); } - $totalPages = ceil($totalEntries / $serendipity['fetchLimit']); + + $limits = explode(',', $serendipity['fetchLimit']); + if (!empty($limits[1])) { + $limit = (int)$limits[1]; + } else { + $limit = (int)$limits[0]; + } + $totalPages = ceil($totalEntries / $limit); if (!isset($serendipity['GET']['page'])) { $serendipity['GET']['page'] = 1; diff --git a/include/functions_smarty.inc.php b/include/functions_smarty.inc.php index 4d86fcf..7c71bc9 100644 --- a/include/functions_smarty.inc.php +++ b/include/functions_smarty.inc.php @@ -146,6 +146,8 @@ function serendipity_ifRemember($name, $value, $isDefault = false, $att = 'check * returncode (string) If set to "array", the array of entries will be returned. "flat-array" will only return the articles without their entryproperties. "single" will only return a 1-dimensional array. "query" will only return the used SQL. * joinauthors (bool) Should an SQL-join be made to the AUTHORS DB table? * joincategories (bool) Should an SQL-join be made to the CATEGORIES DB table? + * joinown (string) SQL-Parts to add to the "JOIN" query + * entryprops (string) Condition list of commaseparated entryproperties that an entry must have to be displayed (example: "ep_CustomField='customVal',ep_CustomField2='customVal2'") * * [PRINTING] * template: (string) Name of the template file to print entries with @@ -184,6 +186,18 @@ function serendipity_smarty_fetchPrintEntries($params, &$smarty) { if (empty($params['fetchDrafts'])) { $params['fetchDrafts'] = false; } + + if (!empty($params['entryprops'])) { + if (preg_match_all('@(.*)(!)?=[\'"]*(.*)[\'"]*(,|$)@imsU', $params['entryprops'], $m)) { + foreach($m[0] AS $idx => $p) { + $params['joinown'] .= "\n JOIN {$serendipity['dbPrefix']}entryproperties + AS ep" . $idx . " + ON (ep" . $idx . ".entryid = e.id AND + ep" . $idx . ".property = '" . serendipity_db_escape_string($m[1][$idx]) . "' AND + ep" . $idx . ".value " . $m[2][$idx] . "= '" . serendipity_db_escape_string($m[3][$idx]) . "') \n"; + } + } + } if (empty($params['modified_since'])) { $params['modified_since'] = false; @@ -295,7 +309,8 @@ function serendipity_smarty_fetchPrintEntries($params, &$smarty) { $params['group_by'], $params['returncode'], $params['joinauthors'], - $params['joincategories'] + $params['joincategories'], + $params['joinown'] ); // Check whether the returned entries shall be grouped specifically diff --git a/templates/bulletproof/index.tpl b/templates/bulletproof/index.tpl index dc4f704..5bc046c 100644 --- a/templates/bulletproof/index.tpl +++ b/templates/bulletproof/index.tpl @@ -363,6 +363,7 @@ {/if} {$raw_data} + {serendipity_hookPlugin hook="frontend_footer"} {if $is_embedded != true} -- 2.39.5