Backport ObjectTypeCache improvement
authorAlexander Ebert <ebert@woltlab.com>
Sun, 28 Jun 2015 16:30:12 +0000 (18:30 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Sun, 28 Jun 2015 16:30:12 +0000 (18:30 +0200)
wcfsetup/install/files/lib/data/object/type/ObjectTypeCache.class.php
wcfsetup/install/files/lib/system/cache/builder/ObjectTypeCacheBuilder.class.php

index 928c9e5c55f4a237ab8366e4fbbed255f214b81b..1dbeb1aa56ea5903d30b6330dd5a0c0f83a18a6f 100644 (file)
@@ -57,14 +57,7 @@ class ObjectTypeCache extends SingletonFactory {
                
                // get object type cache
                $this->objectTypes = ObjectTypeCacheBuilder::getInstance()->getData(array(), 'objectTypes');
-               foreach ($this->objectTypes as $objectType) {
-                       $definition = $this->getDefinition($objectType->definitionID);
-                       if (!isset($this->groupedObjectTypes[$definition->definitionName])) {
-                               $this->groupedObjectTypes[$definition->definitionName] = array();
-                       }
-                       
-                       $this->groupedObjectTypes[$definition->definitionName][$objectType->objectType] = $objectType;
-               }
+               $this->groupedObjectTypes = ObjectTypeCacheBuilder::getInstance()->getData(array(), 'groupedObjectTypes');
        }
        
        /**
index e6ef706360aec134ac2def0e45a5ab67942af35e..45e97a3b72816f75376c9dfb5b61216b503caab6 100644 (file)
@@ -22,7 +22,8 @@ class ObjectTypeCacheBuilder extends AbstractCacheBuilder {
                $data = array(
                        'categories' => array(),
                        'definitions' => array(),
-                       'objectTypes' => array()
+                       'objectTypes' => array(),
+                       'groupedObjectTypes' => array()
                );
                
                // get definitions
@@ -48,7 +49,11 @@ class ObjectTypeCacheBuilder extends AbstractCacheBuilder {
                $statement = WCF::getDB()->prepareStatement($sql);
                $statement->execute();
                while ($row = $statement->fetchArray()) {
-                       $data['objectTypes'][$row['objectTypeID']] = new ObjectType(null, $row);
+                       $data['objectTypes'][$row['objectTypeID']] = $objectType = new ObjectType(null, $row);
+                       
+                       $definition = $data['definitions'][$objectType->definitionID];
+                       if (!isset($data['groupedObjectTypes'][$definition->definitionName])) $data['groupedObjectTypes'][$definition->definitionName] = array();
+                       $data['groupedObjectTypes'][$definition->definitionName][$objectType->objectType] = $objectType;
                }
                
                return $data;