[pLog-svn] r1720 - in plog/branches/plog-1.1-ben/class: action action/admin cache

ork at devel.plogworld.net ork at devel.plogworld.net
Mon Apr 4 23:57:20 GMT 2005


Author: ork
Date: 2005-04-04 23:57:20 +0000 (Mon, 04 Apr 2005)
New Revision: 1720

Added:
   plog/branches/plog-1.1-ben/class/cache/bloginfomanager.class.php
Modified:
   plog/branches/plog-1.1-ben/class/action/admin/adminaction.class.php
   plog/branches/plog-1.1-ben/class/action/admin/adminmainaction.class.php
   plog/branches/plog-1.1-ben/class/action/admin/adminupdateblogsettingsaction.class.php
   plog/branches/plog-1.1-ben/class/action/blogaction.class.php
Log:
implemented a BlogInfoManager to handle all request for blogInfos.. just a singleton accessing the cache and returning the cached object.
changed adminupdateblogsettingsaction to use BlogInfoManager as well.. so a changed bloginfo gets removed from the cache.

i'm not sure if class/cache is the right place for this.. didn't want to place it in dao/ either.. i'm welcome to any opinion :)



Modified: plog/branches/plog-1.1-ben/class/action/admin/adminaction.class.php
===================================================================
--- plog/branches/plog-1.1-ben/class/action/admin/adminaction.class.php	2005-04-04 23:52:07 UTC (rev 1719)
+++ plog/branches/plog-1.1-ben/class/action/admin/adminaction.class.php	2005-04-04 23:57:20 UTC (rev 1720)
@@ -81,10 +81,15 @@
          */
         function _getBlogInfo()
         {
+            // TBD: this is not good yet.. 
+            require_once( PLOG_CLASS_PATH . "class/cache/bloginfomanager.class.php" );
+
             $session = HttpVars::getSession();
             $sessionInfo = $session["SessionInfo"];
+            $blogInfoManager = BlogInfoManager::getBlogInfoManager();
 
-            $this->_blogInfo = $sessionInfo->getValue( "blogInfo" );
+            $blogId = $sessionInfo->getValue( "blogId" );
+            $this->_blogInfo = $blogInfoManager->getBlogInfo( $blogId );
         }
 
         /**
@@ -147,7 +152,7 @@
          */
         function saveSession()
         {
-        	$this->_session->setValue( "blogInfo", $this->_blogInfo );
+        	$this->_session->setValue( "blogId", $this->_blogInfo->getId() );
             $this->_session->setValue( "userInfo", $this->_userInfo );
         	//$_SESSION["SessionInfo"] = $this->_session;
             $session = HttpVars::getSession();

Modified: plog/branches/plog-1.1-ben/class/action/admin/adminmainaction.class.php
===================================================================
--- plog/branches/plog-1.1-ben/class/action/admin/adminmainaction.class.php	2005-04-04 23:52:07 UTC (rev 1719)
+++ plog/branches/plog-1.1-ben/class/action/admin/adminmainaction.class.php	2005-04-04 23:57:20 UTC (rev 1720)
@@ -51,8 +51,9 @@
             }
 
 			// load the blog
-            $blogs = new Blogs();
-            $this->_blogInfo = $blogs->getBlogInfo( $this->_blogId );
+            require_once( PLOG_CLASS_PATH . "class/cache/bloginfomanager.class.php" );
+            $blogInfoManager = BlogInfoManager::getBlogInfoManager();
+            $this->_blogInfo = $blogInfoManager->getBlogInfo( $this->_blogId );
 			 
 			// check if the blog really exists
 			if( !$this->_blogInfo ) {
@@ -77,7 +78,7 @@
             // if all correct, we can now set the blogInfo object in the session for later
             // use
             $session = HttpVars::getSession();
-            $session["SessionInfo"]->setValue( "blogInfo", $this->_blogInfo );
+            $session["SessionInfo"]->setValue( "blogId", $this->_blogInfo->getId() );
             HttpVars::setSession( $session );
 
             return true;

Modified: plog/branches/plog-1.1-ben/class/action/admin/adminupdateblogsettingsaction.class.php
===================================================================
--- plog/branches/plog-1.1-ben/class/action/admin/adminupdateblogsettingsaction.class.php	2005-04-04 23:52:07 UTC (rev 1719)
+++ plog/branches/plog-1.1-ben/class/action/admin/adminupdateblogsettingsaction.class.php	2005-04-04 23:57:20 UTC (rev 1720)
@@ -52,6 +52,8 @@
          */
         function perform()
         {
+            require_once( PLOG_CLASS_PATH . "class/cache/bloginfomanager.class.php" );
+
         	// fetch the settings from the db and update them accordingly
             $blogs = new Blogs();
             $blogSettings = $blogs->getBlogSettings( $this->_blogInfo->getId());
@@ -77,7 +79,8 @@
             // and now update the settings in the database
             $blogs = new Blogs();
 			$this->notifyEvent( EVENT_PRE_BLOG_UPDATE, Array( "blog" => &$this->_blogInfo ));
-            if( !$blogs->updateBlog( $this->_blogInfo->getId(), $this->_blogInfo )) {
+            $blogInfoManager = BlogInfoManager::getBlogInfoManager();
+            if( !$blogInfoManager->updateBlogInfo( $this->_blogInfo->getId(), $this->_blogInfo )) {
             	$this->_view = new AdminBlogSettingsView( $this->_blogInfo );
                 $this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
                	$this->setCommonData();

Modified: plog/branches/plog-1.1-ben/class/action/blogaction.class.php
===================================================================
--- plog/branches/plog-1.1-ben/class/action/blogaction.class.php	2005-04-04 23:52:07 UTC (rev 1719)
+++ plog/branches/plog-1.1-ben/class/action/blogaction.class.php	2005-04-04 23:57:20 UTC (rev 1720)
@@ -175,11 +175,17 @@
             }
 			
             // fetch the BlogInfo object
-            $blogs = new Blogs();
-            if( $blogId )
-                $this->_blogInfo = $blogs->getBlogInfo( $blogId );
-            else
+            if( $blogId ) {
+                require_once( PLOG_CLASS_PATH . "class/cache/bloginfomanager.class.php" );
+
+                $blogInfoManager =& BlogInfoManager::getBlogInfoManager();
+                $this->_blogInfo = $blogInfoManager->getBlogInfo( $blogId );
+                
+                // $this->_blogInfo = $blogs->getBlogInfo( $blogId );
+            } else {
+                $blogs = new Blogs();
                 $this->_blogInfo = $blogs->getBlogInfoByName( $blogName );
+            }
 
             // security checks...
             if( $this->_blogInfo == false ) {

Added: plog/branches/plog-1.1-ben/class/cache/bloginfomanager.class.php
===================================================================
--- plog/branches/plog-1.1-ben/class/cache/bloginfomanager.class.php	2005-04-04 23:52:07 UTC (rev 1719)
+++ plog/branches/plog-1.1-ben/class/cache/bloginfomanager.class.php	2005-04-04 23:57:20 UTC (rev 1720)
@@ -0,0 +1,55 @@
+<?php
+
+    class BlogInfoManager extends Object
+    {
+
+        var $_knownBlogs = array();
+
+        function getBlogInfo( $blogId )
+        {
+            if( array_key_exists( $blogId, $this->_knownBlogs) )
+                return $this->_knownBlogs[$blogId];
+
+            require_once( PLOG_CLASS_PATH . "class/cache/cachemanager.class.php" );
+            require_once( PLOG_CLASS_PATH . "class/dao/blogsettings.class.php" );
+
+            $cache =& CacheManager::getCache();
+            $blogInfo = $cache->getData( $blogId, CACHE_BLOGINFOS );
+
+            if( !$blogInfo ) {
+                require_once( PLOG_CLASS_PATH . "class/dao/blogs.class.php" );
+                $blogs = new Blogs();
+                $blogInfo = $blogs->getBlogInfo( $blogId );
+                $cache->setData( $blogId, CACHE_BLOGINFOS, $blogInfo );
+            }
+
+            $this->_knownBlogs[ $blogId ] = $blogInfo;
+            return $blogInfo;
+        }
+
+        function updateBlogInfo( $blogId, $blogInfo )
+        {
+            require_once( PLOG_CLASS_PATH . "class/dao/blogs.class.php" );
+
+            // remove all cached info
+            $cache =& CacheManager::getCache();
+            $cache->removeData( $blogId, CACHE_BLOGINFOS );
+
+            // save the new blogInfo
+            // this is slow right now, but we don't care at this point
+            $blogs = new Blogs(); 
+            return $blogs->updateBlog( $blogId, $blogInfo );
+        }
+
+        function &getBlogInfoManager()
+        {
+            static $manager;
+
+            if( !is_object($manager) ) {
+                $manager = new BlogInfoManager();
+            }
+
+            return $manager;
+        }
+    }
+?>


Property changes on: plog/branches/plog-1.1-ben/class/cache/bloginfomanager.class.php
___________________________________________________________________
Name: svn:executable
   + *




More information about the pLog-svn mailing list