[geeklog-cvs] geeklog: Minor speedup of the story list by caching the results ...
geeklog-cvs at lists.geeklog.net
geeklog-cvs at lists.geeklog.net
Sun Mar 22 16:57:21 EDT 2009
details: http://project.geeklog.net/cgi-bin/hgweb.cgi/rev/5e8fb0521910
changeset: 6851:5e8fb0521910
user: Dirk Haun <dirk at haun-online.de>
date: Sun Mar 22 15:36:21 2009 +0100
description:
Minor speedup of the story list by caching the results of SEC_hasTopicAccess; plus some source code cosmetics
diffstat:
1 file changed, 91 insertions(+), 75 deletions(-)
system/lib-admin.php | 166 +++++++++++++++++++++++++++-----------------------
diffs (186 lines):
diff -r d734244b9ef5 -r 5e8fb0521910 system/lib-admin.php
--- a/system/lib-admin.php Sun Mar 22 10:49:26 2009 +0100
+++ b/system/lib-admin.php Sun Mar 22 15:36:21 2009 +0100
@@ -848,91 +848,107 @@
{
global $_CONF, $_TABLES, $LANG_ADMIN, $LANG24, $LANG_ACCESS, $_IMAGE_TYPE;
- static $topics;
+ static $topics, $topic_access;
- if (!isset ($topics)) {
- $topics = array ();
+ if (!isset($topics)) {
+ $topics = array();
+ }
+ if (!isset($topic_access)) {
+ $topic_access = array();
}
$retval = '';
- switch($fieldname) {
- case "unixdate":
- $curtime = COM_getUserDateTimeFormat ($A['unixdate']);
- $retval = strftime($_CONF['daytime'], $curtime[1]);
- break;
- case "title":
- $A['title'] = str_replace('$', '$', $A['title']);
- $article_url = COM_buildUrl ($_CONF['site_url'] . '/article.php?story='
- . $A['sid']);
- $retval = COM_createLink(stripslashes($A['title']), $article_url);
- break;
- case "draft_flag":
- if ($A['draft_flag'] == 1) {
- $retval = $LANG24[35];
- } else {
- $retval = $LANG24[36];
+ switch ($fieldname) {
+ case 'unixdate':
+ $curtime = COM_getUserDateTimeFormat($A['unixdate']);
+ $retval = strftime($_CONF['daytime'], $curtime[1]);
+ break;
+
+ case 'title':
+ $A['title'] = str_replace('$', '$', $A['title']);
+ $article_url = COM_buildUrl($_CONF['site_url'] . '/article.php?story='
+ . $A['sid']);
+ $retval = COM_createLink(stripslashes($A['title']), $article_url);
+ break;
+
+ case 'draft_flag':
+ if ($A['draft_flag'] == 1) {
+ $retval = $LANG24[35];
+ } else {
+ $retval = $LANG24[36];
+ }
+ break;
+
+ case 'access':
+ case 'edit':
+ case 'edit_adv':
+ $access = SEC_hasAccess($A['owner_id'], $A['group_id'],
+ $A['perm_owner'], $A['perm_group'],
+ $A['perm_members'], $A['perm_anon']);
+ if ($access == 3) {
+ if (!isset($topic_access[$A['tid']])) {
+ $topic_access[$A['tid']] = SEC_hasTopicAccess($A['tid']);
}
- break;
- case "access":
- case "edit":
- case "edit_adv":
- $access = SEC_hasAccess ($A['owner_id'], $A['group_id'],
- $A['perm_owner'], $A['perm_group'],
- $A['perm_members'], $A['perm_anon']);
- if ($access == 3) {
- if (SEC_hasTopicAccess ($A['tid']) == 3) {
- $access = $LANG_ACCESS['edit'];
- } else {
- $access = $LANG_ACCESS['readonly'];
- }
+ if ($topic_access[$A['tid']] == 3) {
+ $access = $LANG_ACCESS['edit'];
} else {
$access = $LANG_ACCESS['readonly'];
}
- if ($fieldname == 'access') {
- $retval = $access;
- } else if ($access == $LANG_ACCESS['edit']) {
- if ($fieldname == 'edit_adv') {
- $retval = COM_createLink($icon_arr['edit'],
- "{$_CONF['site_admin_url']}/story.php?mode=edit&editor=adv&sid={$A['sid']}");
- } else if ($fieldname == 'edit') {
- $retval = COM_createLink($icon_arr['edit'],
- "{$_CONF['site_admin_url']}/story.php?mode=edit&editor=std&sid={$A['sid']}");
- }
+ } else {
+ $access = $LANG_ACCESS['readonly'];
+ }
+ if ($fieldname == 'access') {
+ $retval = $access;
+ } elseif ($access == $LANG_ACCESS['edit']) {
+ if ($fieldname == 'edit_adv') {
+ $editmode = 'adv';
+ } elseif ($fieldname == 'edit') {
+ $editmode = 'std';
}
- break;
- case "featured":
- if ($A['featured'] == 1) {
- $retval = $LANG24[35];
- } else {
- $retval = $LANG24[36];
- }
- break;
- case "ping":
- $pingico = '<img src="' . $_CONF['layout_url'] . '/images/sendping.'
- . $_IMAGE_TYPE . '" alt="' . $LANG24[21] . '" title="'
- . $LANG24[21] . '"' . XHTML . '>';
- if (($A['draft_flag'] == 0) && ($A['unixdate'] < time())) {
- $url = $_CONF['site_admin_url']
- . '/trackback.php?mode=sendall&id=' . $A['sid'];
- $retval = COM_createLink($pingico, $url);
- } else {
- $retval = '';
- }
- break;
- case 'tid':
- if (!isset ($topics[$A['tid']])) {
- $topics[$A['tid']] = DB_getItem ($_TABLES['topics'], 'topic',
- "tid = '{$A['tid']}'");
- }
- $retval = $topics[$A['tid']];
- break;
- case 'username':
- $retval = COM_getDisplayName ($A['uid'], $A['username'], $A['fullname']);
- break;
- default:
- $retval = $fieldvalue;
- break;
+ $editurl = $_CONF['site_admin_url']
+ . '/story.php?mode=edit&editor=' . $editmode
+ . '&sid=' . $A['sid'];
+ $retval = COM_createLink($icon_arr['edit'], $editurl);
+ }
+ break;
+
+ case 'featured':
+ if ($A['featured'] == 1) {
+ $retval = $LANG24[35];
+ } else {
+ $retval = $LANG24[36];
+ }
+ break;
+
+ case 'ping':
+ $pingico = '<img src="' . $_CONF['layout_url'] . '/images/sendping.'
+ . $_IMAGE_TYPE . '" alt="' . $LANG24[21] . '" title="'
+ . $LANG24[21] . '"' . XHTML . '>';
+ if (($A['draft_flag'] == 0) && ($A['unixdate'] < time())) {
+ $url = $_CONF['site_admin_url']
+ . '/trackback.php?mode=sendall&id=' . $A['sid'];
+ $retval = COM_createLink($pingico, $url);
+ } else {
+ $retval = '';
+ }
+ break;
+
+ case 'tid':
+ if (!isset($topics[$A['tid']])) {
+ $topics[$A['tid']] = DB_getItem($_TABLES['topics'], 'topic',
+ "tid = '{$A['tid']}'");
+ }
+ $retval = $topics[$A['tid']];
+ break;
+
+ case 'username':
+ $retval = COM_getDisplayName($A['uid'], $A['username'], $A['fullname']);
+ break;
+
+ default:
+ $retval = $fieldvalue;
+ break;
}
return $retval;
More information about the geeklog-cvs
mailing list