[geeklog-hg] geeklog: Optimized TOPIC_breadcrumbs function
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Sat Jun 8 03:21:36 EDT 2013
changeset 9087:24e079a051fc
url: http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/24e079a051fc
user: dengen
date: Sat Jun 08 16:21:06 2013 +0900
description:
Optimized TOPIC_breadcrumbs function
diffstat:
public_html/layout/denim/breadcrumbs/breadcrumb.thtml | 4 +-
public_html/layout/denim/breadcrumbs/breadcrumb_child.thtml | 2 +-
public_html/layout/denim/breadcrumbs/breadcrumb_nolink.thtml | 2 +-
public_html/layout/denim/breadcrumbs/breadcrumbs.thtml | 2 +-
public_html/layout/modern_curve/breadcrumbs/breadcrumb.thtml | 4 +-
public_html/layout/modern_curve/breadcrumbs/breadcrumb_child.thtml | 2 +-
public_html/layout/modern_curve/breadcrumbs/breadcrumb_nolink.thtml | 2 +-
public_html/layout/modern_curve/breadcrumbs/breadcrumbs.thtml | 2 +-
public_html/layout/professional/breadcrumbs/breadcrumb.thtml | 4 +-
public_html/layout/professional/breadcrumbs/breadcrumb_child.thtml | 2 +-
public_html/layout/professional/breadcrumbs/breadcrumb_nolink.thtml | 2 +-
public_html/layout/professional/breadcrumbs/breadcrumbs.thtml | 2 +-
public_html/layout/professional_css/breadcrumbs/breadcrumb.thtml | 4 +-
public_html/layout/professional_css/breadcrumbs/breadcrumb_child.thtml | 2 +-
public_html/layout/professional_css/breadcrumbs/breadcrumb_nolink.thtml | 2 +-
public_html/layout/professional_css/breadcrumbs/breadcrumbs.thtml | 2 +-
system/lib-topic.php | 198 ++++-----
17 files changed, 104 insertions(+), 134 deletions(-)
diffs (truncated from 396 to 300 lines):
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/denim/breadcrumbs/breadcrumb.thtml
--- a/public_html/layout/denim/breadcrumbs/breadcrumb.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/denim/breadcrumbs/breadcrumb.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,5 +1,5 @@
-<a href="{url}" itemprop="url">
- <span itemprop="title">{name}</span>
+<a href="{url}"{!if microdata} itemprop="url"{!endif}>
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span>
</a> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/denim/breadcrumbs/breadcrumb_child.thtml
--- a/public_html/layout/denim/breadcrumbs/breadcrumb_child.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/denim/breadcrumbs/breadcrumb_child.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
-<span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<span{!if microdata} itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumb}
</span>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/denim/breadcrumbs/breadcrumb_nolink.thtml
--- a/public_html/layout/denim/breadcrumbs/breadcrumb_nolink.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/denim/breadcrumbs/breadcrumb_nolink.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
- <span itemprop="title">{name}</span> {separator}
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/denim/breadcrumbs/breadcrumbs.thtml
--- a/public_html/layout/denim/breadcrumbs/breadcrumbs.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/denim/breadcrumbs/breadcrumbs.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,5 +1,5 @@
<!-- Start of Breadcrumbs Navigation -->
-<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="bc_navigation">
+<div {!if microdata}itemscope itemtype="http://data-vocabulary.org/Breadcrumb" {!endif}class="bc_navigation">
{breadcrumbs_list}
</div>
<!-- End of Breadcrumbs Navigation -->
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/modern_curve/breadcrumbs/breadcrumb.thtml
--- a/public_html/layout/modern_curve/breadcrumbs/breadcrumb.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/modern_curve/breadcrumbs/breadcrumb.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,5 +1,5 @@
-<a href="{url}" itemprop="url">
- <span itemprop="title">{name}</span>
+<a href="{url}"{!if microdata} itemprop="url"{!endif}>
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span>
</a> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/modern_curve/breadcrumbs/breadcrumb_child.thtml
--- a/public_html/layout/modern_curve/breadcrumbs/breadcrumb_child.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/modern_curve/breadcrumbs/breadcrumb_child.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
-<span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<span{!if microdata} itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumb}
</span>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/modern_curve/breadcrumbs/breadcrumb_nolink.thtml
--- a/public_html/layout/modern_curve/breadcrumbs/breadcrumb_nolink.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/modern_curve/breadcrumbs/breadcrumb_nolink.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
- <span itemprop="title">{name}</span> {separator}
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/modern_curve/breadcrumbs/breadcrumbs.thtml
--- a/public_html/layout/modern_curve/breadcrumbs/breadcrumbs.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/modern_curve/breadcrumbs/breadcrumbs.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,6 +1,6 @@
<!-- Start of Breadcrumbs Navigation -->
<p>
-<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<div{!if microdata} itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumbs_list}
</div>
</p>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional/breadcrumbs/breadcrumb.thtml
--- a/public_html/layout/professional/breadcrumbs/breadcrumb.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional/breadcrumbs/breadcrumb.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,5 +1,5 @@
-<a href="{url}" itemprop="url">
- <span itemprop="title">{name}</span>
+<a href="{url}"{!if microdata} itemprop="url"{!endif}>
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span>
</a> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional/breadcrumbs/breadcrumb_child.thtml
--- a/public_html/layout/professional/breadcrumbs/breadcrumb_child.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional/breadcrumbs/breadcrumb_child.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
-<span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<span{!if microdata} itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumb}
</span>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional/breadcrumbs/breadcrumb_nolink.thtml
--- a/public_html/layout/professional/breadcrumbs/breadcrumb_nolink.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional/breadcrumbs/breadcrumb_nolink.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,3 +1,3 @@
- <span itemprop="title">{name}</span> {separator}
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional/breadcrumbs/breadcrumbs.thtml
--- a/public_html/layout/professional/breadcrumbs/breadcrumbs.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional/breadcrumbs/breadcrumbs.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,6 +1,6 @@
<!-- Start of Breadcrumbs Navigation -->
<p>
-<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<div{!if microdata} itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumbs_list}
</div>
</p>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional_css/breadcrumbs/breadcrumb.thtml
--- a/public_html/layout/professional_css/breadcrumbs/breadcrumb.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional_css/breadcrumbs/breadcrumb.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,8 +1,8 @@
<!-- breadcrumbs/breadcrumb.thtml { -->
-<a href="{url}" itemprop="url">
- <span itemprop="title">{name}</span>
+<a href="{url}"{!if microdata} itemprop="url"{!endif}>
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span>
</a> {separator}
{breadcrumb_child}
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional_css/breadcrumbs/breadcrumb_child.thtml
--- a/public_html/layout/professional_css/breadcrumbs/breadcrumb_child.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional_css/breadcrumbs/breadcrumb_child.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,7 +1,7 @@
<!-- breadcrumbs/breadcrumb_child.thtml { -->
-<span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<span{!if microdata} itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumb}
</span>
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional_css/breadcrumbs/breadcrumb_nolink.thtml
--- a/public_html/layout/professional_css/breadcrumbs/breadcrumb_nolink.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional_css/breadcrumbs/breadcrumb_nolink.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -1,7 +1,7 @@
<!-- breadcrumbs/breadcrumb_nolink.thtml { -->
- <span itemprop="title">{name}</span> {separator}
+ <span{!if microdata} itemprop="title"{!endif}>{name}</span> {separator}
{breadcrumb_child}
<!-- } breadcrumbs/breadcrumb_nolink.thtml -->
diff -r e37edd00d3d6 -r 24e079a051fc public_html/layout/professional_css/breadcrumbs/breadcrumbs.thtml
--- a/public_html/layout/professional_css/breadcrumbs/breadcrumbs.thtml Sat May 25 22:00:10 2013 -0400
+++ b/public_html/layout/professional_css/breadcrumbs/breadcrumbs.thtml Sat Jun 08 16:21:06 2013 +0900
@@ -3,7 +3,7 @@
<!-- Start of Breadcrumbs Navigation -->
<p>
-<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
+<div{!if microdata} itemscope itemtype="http://data-vocabulary.org/Breadcrumb"{!endif}>
{breadcrumbs_list}
</div>
</p>
diff -r e37edd00d3d6 -r 24e079a051fc system/lib-topic.php
--- a/system/lib-topic.php Sat May 25 22:00:10 2013 -0400
+++ b/system/lib-topic.php Sat Jun 08 16:21:06 2013 +0900
@@ -1376,9 +1376,9 @@
}
/**
-* If found returns one or more html breadcrumb. Used by Topics, Stories and Plugins.
+* If found returns one or more html breadcrumb. Used by Topics, Stories and Plugins.
*
-* @param string $type Type of object to create breadcrumb trail
+* @param string $type Type of object to create breadcrumb trail
* @param string/array $id ID of object
* @return string 1 or more breadcrumb trail in html
*
@@ -1386,135 +1386,105 @@
function TOPIC_breadcrumbs($type, $id)
{
global $_CONF, $_TABLES, $LANG27, $_TOPICS, $topic;
-
-
+
$breadcrumbs_output = '';
-
+
// see if breadcrumbs is disabled
- if (($_CONF['disable_breadcrumbs_topics'] && $type == 'topic') || ($_CONF['disable_breadcrumbs_articles'] && $type == 'article') || ($_CONF['disable_breadcrumbs_plugins'] && $type != 'topic' && $type != 'article') ) {
+ if (($_CONF['disable_breadcrumbs_topics'] && $type == 'topic') ||
+ ($_CONF['disable_breadcrumbs_articles'] && $type == 'article') ||
+ ($_CONF['disable_breadcrumbs_plugins'] && $type != 'topic' && $type != 'article')) {
return $breadcrumbs_output;
}
-
- $breadcrumb_t = COM_newTemplate($_CONF['path_layout'] . 'breadcrumbs/');
- $breadcrumb_t->set_file (array ('breadcrumbs_t' => 'breadcrumbs.thtml',
- 'breadcrumb_child_t' => 'breadcrumb_child.thtml',
- 'breadcrumb_root_t' => 'breadcrumb_root.thtml',
- 'breadcrumb_nolink_t' => 'breadcrumb_nolink.thtml',
- 'breadcrumb_t' => 'breadcrumb.thtml'));
-
+
if ($type == 'topic') {
- $sql = "SELECT tid FROM {$_TABLES['topics']}
- WHERE tid = '{$id}'" . COM_getPermSQL('AND', 0, 2);
+ $sql = "SELECT tid, topic, parent_id FROM {$_TABLES['topics']} "
+ . "WHERE tid = '$id'" . COM_getPermSQL('AND', 0, 2);
} else {
// Retrieve all topics assignments that point to this object
- $sql = "SELECT ta.tid FROM {$_TABLES['topic_assignments']} ta, {$_TABLES['topics']} t
- WHERE ta.type = '{$type}' AND ta.id = '{$id}' and t.tid = ta.tid" . COM_getPermSQL('AND', 0, 2, 't');
-
- if (!$_CONF['multiple_breadcrumbs']) {
- $sql .= " AND ta.tid = '{$topic}'";
- }
+ $sql = "SELECT t.tid, t.topic, t.parent_id "
+ . "FROM {$_TABLES['topic_assignments']} ta, {$_TABLES['topics']} t "
+ . "WHERE ta.type = '$type' AND ta.id = '$id' AND t.tid = ta.tid"
+ . COM_getPermSQL('AND', 0, 2, 't');
+
+ if (!$_CONF['multiple_breadcrumbs']) {
+ $sql .= " AND ta.tid = '$topic'";
+ }
}
$result = DB_query($sql);
- $nrows = DB_numRows($result);
+ if (DB_numRows($result) > 0) {
+ $breadcrumb_t = COM_newTemplate($_CONF['path_layout'] . 'breadcrumbs/');
+ $breadcrumb_t->set_file(array(
+ 'breadcrumbs_t' => 'breadcrumbs.thtml',
+ 'breadcrumb_child_t' => 'breadcrumb_child.thtml',
+ 'breadcrumb_root_t' => 'breadcrumb_root.thtml',
+ 'breadcrumb_nolink_t' => 'breadcrumb_nolink.thtml',
+ 'breadcrumb_t' => 'breadcrumb.thtml'));
+ if (in_array($_CONF['doctype'], array('html5', 'xhtml5'))) {
+ $breadcrumb_t->set_var('microdata', true);
+ }
+ $rootname = $_CONF['breadcrumb_root_site_name'] ?
+ $_CONF['site_name'] : $LANG27['breadcrumb_root'];
+ $separator = htmlspecialchars($LANG27['breadcrumb_separator']);
- if ($nrows > 0) {
while ($A = DB_fetchArray($result)) {
- $sql = "SELECT tid, topic, parent_id FROM {$_TABLES['topics']} WHERE tid = '{$A['tid']}'";
- $resultB = DB_query($sql);
- while ($B = DB_fetchArray($resultB)) {
- $breadcrumb_a = array();
-
- $breadcrumb_a[]['id'] = $B['tid'];
- end($breadcrumb_a);
- $breadcrumb_a[key($breadcrumb_a)]['title'] = $B['topic'];
-
- if ($B['parent_id'] != TOPIC_ROOT) {
- $sql = "SELECT tid, topic, parent_id FROM {$_TABLES['topics']} WHERE tid = '{$B['parent_id']}'";
- $resultC = DB_query($sql);
- while ($C = DB_fetchArray($resultC)) {
- $breadcrumb_a[]['id'] = $C['tid'];
- end($breadcrumb_a);
- $breadcrumb_a[key($breadcrumb_a)]['title'] = $C['topic'];
-
- if ($C['parent_id'] != TOPIC_ROOT) {
- $sql = "SELECT tid, topic, parent_id FROM {$_TABLES['topics']} WHERE tid = '{$C['parent_id']}'";
- $resultC = DB_query($sql);
- } else {
- $breadcrumb_a[]['id'] = TOPIC_ROOT;
- end($breadcrumb_a);
-
- if ($_CONF['breadcrumb_root_site_name']) {
- $rootname = $_CONF['site_name'];
- } else {
- $rootname = $LANG27['breadcrumb_root'];
- }
- $breadcrumb_a[key($breadcrumb_a)]['title'] = $rootname;
- }
+ $breadcrumb_a = array();
+ $breadcrumb_a[] = $A;
+ $parent_id = $A['parent_id'];
+ while ($parent_id != TOPIC_ROOT) {
+ $sql = "SELECT tid, topic, parent_id "
+ . "FROM {$_TABLES['topics']} WHERE tid = '$parent_id'";
+ $resultB = DB_query($sql);
+ if (DB_numRows($resultB) !== 1) break;
+ $B = DB_fetchArray($resultB);
+ $breadcrumb_a[] = $B;
+ $parent_id = $B['parent_id'];
+ }
+ $breadcrumb_a[] = array(
+ 'tid' => TOPIC_ROOT,
+ 'topic' => $rootname,
+ 'parent_id' => '');
+
+ $retval = '';
+ foreach ($breadcrumb_a as $value) {
+ // double check access (users may have access to a subtopic
+ // but not a parent topic, this shouldn't really happen though)
+ $topic_access = 0;
+ $topic_index = TOPIC_getIndex($value['tid']);
+ if ($topic_index > 0) {
More information about the geeklog-cvs
mailing list