Removing cache after application group create/delete
authorAlexander Ebert <ebert@woltlab.com>
Sun, 4 Nov 2012 23:13:07 +0000 (00:13 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Sun, 4 Nov 2012 23:13:07 +0000 (00:13 +0100)
wcfsetup/install/files/lib/data/application/ApplicationAction.class.php
wcfsetup/install/files/lib/data/application/group/ApplicationGroupAction.class.php

index 2fa25a99a635571ddc99110829c445c62b63b923..88f53ffafe400648616a3138757e9d440139004b 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 namespace wcf\data\application;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\data\package\PackageCache;
+use wcf\system\cache\CacheHandler;
 use wcf\system\WCF;
 use wcf\util\FileUtil;
 
@@ -81,6 +83,8 @@ class ApplicationAction extends AbstractDatabaseObjectAction {
                        }
                }
                WCF::getDB()->commitTransaction();
+               
+               $this->clearCache();
        }
        
        /**
@@ -90,7 +94,7 @@ class ApplicationAction extends AbstractDatabaseObjectAction {
                if (empty($this->objects)) {
                        $this->readObjects();
                }
-               
+               $this->clearCache();
                $sql = "UPDATE  wcf".WCF_N."_application
                        SET     groupID = ?,
                                cookieDomain = domainName,
@@ -106,5 +110,19 @@ class ApplicationAction extends AbstractDatabaseObjectAction {
                        ));
                }
                WCF::getDB()->commitTransaction();
+               
+               $this->clearCache();
+       }
+       
+       /**
+        * Clears application cache.
+        */
+       protected function clearCache() {
+               foreach ($this->objects as $application) {
+                       $directory = PackageCache::getInstance()->getPackage($application->packageID)->packageDir;
+                       $directory = FileUtil::getRealPath(WCF_DIR.$directory);
+                       
+                       CacheHandler::getInstance()->clear($directory.'cache', '*.php');
+               }
        }
 }
index 3db19655c1f9840b63bd946e7e394fbcdad915d7..be1c5aabfbdc3ab7de9c365d36529b705bc27cee 100644 (file)
@@ -3,6 +3,8 @@ namespace wcf\data\application\group;
 use wcf\data\application\ApplicationAction;
 use wcf\data\application\ApplicationList;
 use wcf\data\AbstractDatabaseObjectAction;
+use wcf\system\cache\CacheHandler;
+use wcf\system\language\LanguageFactory;
 
 /**
  * Executes application group-related actions.
@@ -57,6 +59,13 @@ class ApplicationGroupAction extends AbstractDatabaseObjectAction {
                $applicationAction = new ApplicationAction($applicationList->getObjects(), 'ungroup');
                $applicationAction->executeAction();
                
+               // delete language cache and compiled templates
+               LanguageFactory::getInstance()->deleteLanguageCache();
+               
+               // delete WCF cache
+               CacheHandler::getInstance()->clear(WCF_DIR.'cache', '*.php');
+               CacheHandler::getInstance()->clear(WCF_DIR.'cache/templateListener', '*.php');
+               
                return parent::delete();
        }
 }