From: <jon...@us...> - 2010-12-17 13:46:31
|
Revision: 31466 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=31466&view=rev Author: jonnybradley Date: 2010-12-17 13:46:24 +0000 (Fri, 17 Dec 2010) Log Message: ----------- [bp/r31465][FIX] articles: When getting a single articleId no need to use list_articles() which does a very slow and complicated query. Was over 2 seconds, now under 0.1 Only used in wikiplugin_article so far, other uses may be possible. Modified Paths: -------------- branches/proposals/6.x/lib/articles/artlib.php branches/proposals/6.x/lib/wiki-plugins/wikiplugin_article.php Modified: branches/proposals/6.x/lib/articles/artlib.php =================================================================== --- branches/proposals/6.x/lib/articles/artlib.php 2010-12-17 13:36:29 UTC (rev 31465) +++ branches/proposals/6.x/lib/articles/artlib.php 2010-12-17 13:46:24 UTC (rev 31466) @@ -1003,6 +1003,20 @@ $topicId = $this->getOne($query, array($topic) ); return $topicId; } + + function get_most_recent_article_id() { + $maxRecords = 1; + $sort_mode = 'publishDate_desc'; + $date_min = 0; + $date_max = $this->now; + $query = 'SELECT `tiki_articles`.`articleId` FROM `tiki_articles` INNER JOIN `tiki_article_types` on `tiki_articles`.`type` = `tiki_article_types`.`type` '. + 'WHERE `tiki_articles`.`publishDate`>=\'0\' AND (`tiki_articles`.`publishDate`<=? OR `tiki_article_types`.`show_pre_publ`=\'y\') AND '. + '(`tiki_articles`.`expireDate`>? OR `tiki_article_types`.`show_post_expire`=\'y\') AND `tiki_articles`.`ispublished`=\'y\' '. + 'ORDER BY `publishDate` DESC'; + $bindvars = array( $date_max, $date_max ); + $id = $this->getOne($query, $bindvars); + return $id; + } function list_articles( $offset = 0 , $maxRecords = -1 Modified: branches/proposals/6.x/lib/wiki-plugins/wikiplugin_article.php =================================================================== --- branches/proposals/6.x/lib/wiki-plugins/wikiplugin_article.php 2010-12-17 13:36:29 UTC (rev 31465) +++ branches/proposals/6.x/lib/wiki-plugins/wikiplugin_article.php 2010-12-17 13:46:24 UTC (rev 31466) @@ -54,8 +54,7 @@ if (empty($Id)) { global $artlib; include_once('lib/articles/artlib.php'); - $last = $artlib->list_articles(0,1); - $Id = $last['data'][0]["articleId"]; + $Id = $artlib->get_most_recent_article_id(); } if (!isset($Field)) { $Field = 'heading'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |