[pLog-svn] r4724 - plog/branches/lifetype-1.2/class/dao

oscar at devel.lifetype.net oscar at devel.lifetype.net
Tue Feb 13 06:26:05 EST 2007


Author: oscar
Date: 2007-02-13 06:26:05 -0500 (Tue, 13 Feb 2007)
New Revision: 4724

Modified:
   plog/branches/lifetype-1.2/class/dao/commentscommon.class.php
Log:
Loading all the comments and then getting the ones we wanted via the cache just wasn't optimal enough, specially in situations where we had thousands of them (in fact, it wouldn't even work at all as we would hit the memory_limit anyway)

Modified: plog/branches/lifetype-1.2/class/dao/commentscommon.class.php
===================================================================
--- plog/branches/lifetype-1.2/class/dao/commentscommon.class.php	2007-02-13 11:04:48 UTC (rev 4723)
+++ plog/branches/lifetype-1.2/class/dao/commentscommon.class.php	2007-02-13 11:26:05 UTC (rev 4724)
@@ -107,69 +107,38 @@
 								  $page = -1, 
 								  $itemsPerPage = DEFAULT_ITEMS_PER_PAGE )
 		{
-			if( $order == COMMENT_ORDER_NEWEST_FIRST ){
-				$order = Array( "date" => "DESC" );
-				$cache_item = CACHE_ARTICLE_COMMENTS_BYARTICLE_NEWEST_TO_OLDEST;
-			}
-			else{
-				$order = Array( "date" => "ASC" );
-				$cache_item = CACHE_ARTICLE_COMMENTS_BYARTICLE_OLDEST_TO_NEWEST;
-			}
-		
-			$comments = $this->getMany( "article_id",
-										$artid,
-										$cache_item,
-										Array(),
-										$order,
-										"",
-										$page,
-										$itemsPerPage );
+			$query = "SELECT * FROM ".$this->getPrefix()."articles_comments ".
+			         "WHERE article_id = '".Db::qstr( $artid )."'";
+			
+			if( $status != COMMENT_STATUS_ALL )
+				 $query .= "AND status = '".Db::qstr( $status )."'";
+			
+			if( $type != COMMENT_TYPE_ANY )
+				$query .= " AND type = '".Db::qstr( $type )."'";				
+			
+			if( $order == COMMENT_ORDER_NEWEST_FIRST )
+				$query .= " ORDER BY date DESC";
+			else
+				$query .=" ORDER BY date ASC";
+				
+			print($query);
+			
+			$result = $this->Execute( $query, $page, $itemsPerPage );
+			
+			if( !$result )
+				return( Array());
 													
-			$result = Array();
+			$results = Array();
 			
-			if( $comments ) {
-				// load the post to get the blog in order to get the time difference
-				$articles = new Articles();
-				$article = $articles->getArticle( $artid );
-				$blog = $article->getBlogInfo();
-				$blogSettings = $blog->getSettings();
-				$timeDiff = $blogSettings->getValue( "time_offset" );
-				lt_include( PLOG_CLASS_PATH."class/data/timestamp.class.php" );
-				foreach( $comments as $comment ) {
-					if( $this->check( $comment, $type, $status )) {
-						$result[] = $comment;
-					}
-				}
+			while( $row = $result->FetchRow()) {
+				$results[] = $this->mapRow( $row );
 			}
-			else
-				$result = Array();
 				
 				
-			return( $result );						   
+			return( $results );						   
 		}
 		
 		/**
-		 * @param comment
-		 * @param type
-		 * @param status
-		 * @private
-		 */
-		function check( $comment, $type, $status )
-		{
-			if( $type != COMMENT_TYPE_ANY ) {
-				if( $comment->getType() != $type ) {
-					return false;
-				}
-			}
-					
-			if( $status != COMMENT_STATUS_ALL )
-				if( $comment->getStatus() != $status )
-					return false;
-				
-			return( true );
-		}
-		
-		/**
 		 * Returns the total number of comments for a post
 		 *
 		 * @param artId the post id



More information about the pLog-svn mailing list