[pLog-svn] r3227 - in plog/trunk: class/summary/actionclass/summary/dao class/summary/view templates/summary

Mark Wu markplace at gmail.com
Tue Apr 11 09:50:02 GMT 2006


Hi Oscar:

I thnik most of the summary changes already done. And still has one todo
.... Add rss feed for post list and blog list.

And, can you take a look at summarystats, there are two functions:

getRecentArticles() and getRecentPostsByGlobalCategory(). Actaully they are
90% the same..

The only different is I use "group by (a.blog_id)"  to get the articles list
with distinct blog_id ...

I have no idea about the performance is better or worse if we use "group by
(a.blog_id)", but it get the same results as getRecentArticles() 

So, if the performance is the same, I will considering to combine these two
functions and make the code more clean.

Mark

> -----Original Message-----
> From: plog-svn-bounces at devel.lifetype.net 
> [mailto:plog-svn-bounces at devel.lifetype.net] On Behalf Of 
> mark at devel.lifetype.net
> Sent: Tuesday, April 11, 2006 4:54 PM
> To: plog-svn at devel.lifetype.net
> Subject: [pLog-svn] r3227 - in plog/trunk: 
> class/summary/actionclass/summary/dao class/summary/view 
> templates/summary
> 
> Author: mark
> Date: 2006-04-11 08:53:41 +0000 (Tue, 11 Apr 2006) New Revision: 3227
> 
> Modified:
>    plog/trunk/class/summary/action/summarydefaultaction.class.php
>    plog/trunk/class/summary/action/summaryrssaction.class.php
>    plog/trunk/class/summary/dao/summarystats.class.php
>    plog/trunk/class/summary/view/summarypostlistview.class.php
>    plog/trunk/templates/summary/index.template
>    plog/trunk/templates/summary/recent.template
> Log:
> Now, when we click on the globalarticlecategory, we will stay 
> in summary front page, instead of jumping to postlist page.
> 
> Modified: 
> plog/trunk/class/summary/action/summarydefaultaction.class.php
> ===================================================================
> --- 
> plog/trunk/class/summary/action/summarydefaultaction.cl
> ass.php	2006-04-11 07:42:56 UTC (rev 3226)
> +++ 
> plog/trunk/class/summary/action/summarydefaultaction.cl
> ass.php	2006-04-11 08:53:41 UTC (rev 3227)
> @@ -2,7 +2,8 @@
>  
>  	include_once( 
> PLOG_CLASS_PATH."class/summary/action/summaryaction.class.php" );
>      include_once( 
> PLOG_CLASS_PATH."class/summary/dao/summarystats.class.php" );
> -    include_once( 
> PLOG_CLASS_PATH."class/dao/globalarticlecategories.class.php" );     
> +    include_once( 
> PLOG_CLASS_PATH."class/dao/globalarticlecategories.class.php" );
> +    include_once( 
> + PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
>  
>       /**
>        * This is the one and only default action. It simply 
> fetches all the most recent @@ -24,27 +25,52 @@
>          {
>              include_once( 
> PLOG_CLASS_PATH."class/dao/blogs.class.php" );
>  
> -			$this->_view = new SummaryCachedView( 
> "index", Array( "summary" => "default" ));
> +            // get the blogCategoryId from request
> +			$globalArticleCategoryId = 
> $this->_request->getValue( "globalArticleCategoryId" );
> +			$val = new IntegerValidator();
> +			if( !$val->validate( $globalArticleCategoryId ))
> +				$globalArticleCategoryId = 
> ALL_GLOBAL_ARTICLE_CATEGORIES;
> +				
> +			$this->_view = new SummaryCachedView( "index", 
> +								
> 				  Array( "summary" => "default",
> +								
> 				  "globalArticleCategoryId" => 
> $globalArticleCategoryId ));
>  			if( $this->_view->isCached()) {
>  				// if the view is already 
> cached... move along! nothing to see here
>  				return true;
>  			}
> -			
> +
>              $blogs       = new Blogs();
>              $stats       = new SummaryStats();
>  
>              // get all blog category
>              $categories = new GlobalArticleCategories();
>              $globalArticleCategories = 
> $categories->getGlobalArticleCategories();
> -            $min = $categories->getMinNumActiveArticles();
> -            $max = $categories->getMaxNumActiveArticles();
> +
> +            $min = 0;
> +            $max = 0;
> + 
> +            foreach( $globalArticleCategories as 
> $globalArticleCategory ){
> +            	$numActiveArticles = 
> $globalArticleCategory->getNumActiveArticles();
> +            	if( $numActiveArticles < $min ) {
> +            		$min = $numActiveArticles;
> +            		continue;
> +            	}
> +            	if( $numActiveArticles > $max ) {
> +            		$max = $numActiveArticles;
> +            		continue;
> +            	}
> +            }
> +            
>              $step = ( $max - $min )/6;
>              if($step == 0) 
> -            	$step = $min + 1;
> +            	$step = $min + 1;
>  			
> +			$currentGlobalArticleCategory = 
> +$categories->getGlobalArticleCategory( $globalArticleCategoryId );
> +
>  			// export the value for global article 
> categories
>  			$this->_view->setValue( "summaryStats", 
> $stats );
>  			$this->_view->setValue( 
> "globalArticleCategories", $globalArticleCategories );
> +			$this->_view->setValue( 
> "currentGlobalArticleCategory", 
> +$currentGlobalArticleCategory);
>  			$this->_view->setValue( "min", $min );
>  			$this->_view->setValue( "step", $step );
>  		
> 
> Modified: plog/trunk/class/summary/action/summaryrssaction.class.php
> ===================================================================
> --- 
> plog/trunk/class/summary/action/summaryrssaction.class.php	
> 2006-04-11 07:42:56 UTC (rev 3226)
> +++ 
> plog/trunk/class/summary/action/summaryrssaction.class.php	
> 2006-04-11 08:53:41 UTC (rev 3227)
> @@ -6,6 +6,8 @@
>      include_once( PLOG_CLASS_PATH."class/dao/blogs.class.php" );
>  	include_once( 
> PLOG_CLASS_PATH."class/summary/view/summaryrssview.class.php" );
>  	include_once( 
> PLOG_CLASS_PATH."class/net/rawrequestgenerator.class.php" );
> +    include_once( 
> PLOG_CLASS_PATH."class/dao/globalarticlecategories.class.php" );
> +    include_once( 
> + PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
>  	
>  	define( "SUMMARY_RSS_TYPE_DEFAULT", "default" );
>  	define( "SUMMARY_RSS_TYPE_MOST_COMMENTED", 
> "mostcommented" ); @@ -41,7 +43,7 @@
>  				$this->_mode = SUMMARY_RSS_TYPE_DEFAULT;
>  			}
>  			
> -			$this->_profile = 
> $this->_request->getValue( "profile" );			
> +			$this->_profile = 
> $this->_request->getValue( "profile" );
>  			
>  			return true;
>  		}
> @@ -55,8 +57,15 @@
>                  $this->_mode == SUMMARY_RSS_TYPE_MOST_READ ||
>                  $this->_mode == SUMMARY_RSS_TYPE_DEFAULT ) {	
>                 
>  	                
> +            	// get the blogCategoryId from request
> +				$globalArticleCategoryId = 
> $this->_request->getValue( "globalArticleCategoryId" );
> +				$val = new IntegerValidator();
> +				if( !$val->validate( 
> $globalArticleCategoryId ))
> +					
> $globalArticleCategoryId = ALL_GLOBAL_ARTICLE_CATEGORIES;
> +				    			
>  	            // RSS feeds for posts stuff
>  	            $this->_view = new SummaryRssView( 
> $this->_profile, Array( "summary" => "rss", 
> +			                                       
> "globalArticleCategoryId" => 
> +$globalArticleCategoryId,
>  			                                       
> "mode" => $this->_mode,
>  								
> 				   "profile" => $this->_profile ));
>  				if( $this->_view->isCached()) {
> @@ -73,7 +82,13 @@
>  					$posts = 
> $stats->getMostReadArticles();			
>  				}
>  				else {
> -					$posts = 
> $stats->getRecentArticles();
> +					$categories = new 
> GlobalArticleCategories();
> +					$currentGlobalArticleCategory = 
> +$categories->getGlobalArticleCategory( $globalArticleCategoryId );
> +					
> +					if( 
> empty($currentGlobalArticleCategory) )
> +						
> $globalArticleCategoryId = ALL_GLOBAL_ARTICLE_CATEGORIES;
> +					
> +					$posts = 
> $stats->getRecentArticles( $globalArticleCategoryId );
>  				}
>  	
>  	            if( !$posts ) {
> 
> Modified: plog/trunk/class/summary/dao/summarystats.class.php
> ===================================================================
> --- plog/trunk/class/summary/dao/summarystats.class.php	
> 2006-04-11 07:42:56 UTC (rev 3226)
> +++ plog/trunk/class/summary/dao/summarystats.class.php	
> 2006-04-11 08:53:41 UTC (rev 3227)
> @@ -229,7 +229,7 @@
>           * @param maxPosts The maximum number of posts to return
>           * @return An array of Article objects with the most 
> recent articles.
>           */
> -        function getRecentArticles( $maxPosts = 0 )
> +        function getRecentArticles( $globaArticleCategoryId = 
> + ALL_GLOBAL_ARTICLE_CATEGORIES, $maxPosts = 0 )
>          {
>              include_once( PLOG_CLASS_PATH . 
> "class/data/timestamp.class.php" );
>              include_once( 
> PLOG_CLASS_PATH."class/dao/articles.class.php" ); @@ -247,6 +247,9 @@
>  					        AND a.status = 
> ".POST_STATUS_PUBLISHED."
>  							AND 
> a.in_summary_page = '1'";
>  
> +			if($globaArticleCategoryId != 
> ALL_GLOBAL_ARTICLE_CATEGORIES)
> +				$query .= " AND a.global_category_id = 
> +'".Db::qstr($globaArticleCategoryId)."'";
> +				
>  			$query .= " GROUP BY a.id ORDER BY a.date DESC";
>  
>              if( $maxPosts <= 0 )
> 
> Modified: plog/trunk/class/summary/view/summarypostlistview.class.php
> ===================================================================
> --- 
> plog/trunk/class/summary/view/summarypostlistview.class.php	
> 2006-04-11 07:42:56 UTC (rev 3226)
> +++ 
> plog/trunk/class/summary/view/summarypostlistview.class.php	
> 2006-04-11 08:53:41 UTC (rev 3227)
> @@ -61,7 +61,7 @@
>  			$currentGlobalArticleCategory = 
> $categories->getGlobalArticleCategory( $globalArticleCategoryId );
>  
>  			if( empty($currentGlobalArticleCategory) )
> -				$globalArticleCategoryId = 
> ALL_GLOBAL_ARTICLE_CATEGORIES;			
> +				$globalArticleCategoryId = 
> ALL_GLOBAL_ARTICLE_CATEGORIES;
>  
>  			// get the data itself
>  			$stats = new SummaryStats();
> 
> Modified: plog/trunk/templates/summary/index.template
> ===================================================================
> --- plog/trunk/templates/summary/index.template	
> 2006-04-11 07:42:56 UTC (rev 3226)
> +++ plog/trunk/templates/summary/index.template	
> 2006-04-11 08:53:41 UTC (rev 3227)
> @@ -48,7 +48,7 @@
>  	<h4>{$locale->tr("global_article_categories")}</h4>
>  	{foreach from=$globalArticleCategories 
> item=globalArticleCategory}
>  		{math assign=fontSize 
> equation="(int)((x-y)/step)+12" 
> x=$globalArticleCategory->getNumActiveArticles() y=$min step=$step}
> -		<span class="tag"><a style="font-size: 
> {$fontSize}px" 
> href="?op=PostList&amp;globalArticleCategoryId={$globalArticle
> Category->getId()}">{$globalArticleCategory->getName()}</a></span>
> +		<span class="tag"><a style="font-size: {$fontSize}px" 
> +href="?op=Summary&amp;globalArticleCategoryId={$globalArticle
> Category->
> +getId()}">{$globalArticleCategory->getName()}</a></span>
>  	{/foreach}
>      </div>    
>      {include file="summary/recent.template"}
> 
> Modified: plog/trunk/templates/summary/recent.template
> ===================================================================
> --- plog/trunk/templates/summary/recent.template	
> 2006-04-11 07:42:56 UTC (rev 3226)
> +++ plog/trunk/templates/summary/recent.template	
> 2006-04-11 08:53:41 UTC (rev 3227)
> @@ -1,9 +1,25 @@
> -<h4>{$locale->tr("summary_latest_posts")}
> -  {assign var=posts value=$summaryStats->getRecentArticles()}
> +<h4>{$locale->tr("summary_latest_posts")} (
> +  {if empty($currentGlobalArticleCategory)}
> +   	{$locale->tr("all")}
> +  {else}
> +   	{$currentGlobalArticleCategory->getName()}
> +  {/if})
> +  {if $currentGlobalArticleCategory}
> +    {assign var=globalArticleCategoryId 
> value=$currentGlobalArticleCategory->getId()}
> +    {assign var=posts 
> +value=$summaryStats->getRecentArticles($globalArticleCategoryId)}
> +  {else}
> +    {assign var=posts value=$summaryStats->getRecentArticles()}
> +  {/if}
>    {if $posts}
> -    <a href="{$url->getRssUrl()}?summary=1">
> -      <img src="{$url->getUrl("/imgs/rss_logo_small.gif")}" 
> -        alt="RSS" /></a>
> +    {if $currentGlobalArticleCategory}
> +      <a 
> href="{$url->getRssUrl()}?summary=1&amp;globalArticleCategoryI
> d={$globalArticleCategoryId}">
> +        <img 
> src="{$url->getUrl("/imgs/rss_logo_small.gif")}" alt="RSS" />
> +      </a>
> +    {else}
> +      <a href="{$url->getRssUrl()}?summary=1">
> +        <img 
> src="{$url->getUrl("/imgs/rss_logo_small.gif")}" alt="RSS" />
> +      </a>
> +    {/if}    
>    {/if}
>  </h4>
>  {foreach from=$posts item=post}
> 
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://devel.lifetype.net/mailman/listinfo/plog-svn



More information about the pLog-svn mailing list