/** * Returns the cache breaking string * * @return mixed */ public function get() { if (!$this->storage->has(self::STORAGE_KEY)) { $this->update(); } return $this->storage->get(self::STORAGE_KEY); }
/** * Checks which classes lack a cache entry and removes their reflection data * accordingly. * * @return void */ protected function forgetChangedClasses() { $frozenNamespaces = array(); /** @var $package \TYPO3\Flow\Package */ foreach ($this->packageManager->getAvailablePackages() as $packageKey => $package) { if ($this->packageManager->isPackageFrozen($packageKey)) { $frozenNamespaces[] = $package->getNamespace(); } } $classNames = array_keys($this->classReflectionData); foreach ($frozenNamespaces as $namespace) { $namespace .= '\\'; $namespaceLength = strlen($namespace); foreach ($classNames as $index => $className) { if (substr($className, 0, $namespaceLength) === $namespace) { unset($classNames[$index]); } } } foreach ($classNames as $className) { if (!$this->statusCache->has(str_replace('\\', '_', $className))) { $this->forgetClass($className); } } }
/** * Prepares a mirror of public package resources that is accessible through * the web server directly. * * @param array $activePackages * @return void */ public function publishPublicPackageResources(array $activePackages) { if ($this->settings['resource']['publishing']['detectPackageResourceChanges'] === FALSE && $this->statusCache->has('packageResourcesPublished')) { return; } foreach ($activePackages as $packageKey => $package) { $this->resourcePublisher->publishStaticResources($package->getResourcesPath() . 'Public/', 'Packages/' . $packageKey . '/'); } if (!$this->statusCache->has('packageResourcesPublished')) { $this->statusCache->set('packageResourcesPublished', 'y', array(\TYPO3\Flow\Cache\Frontend\FrontendInterface::TAG_PACKAGE)); } }
/** * Checks which classes lack a cache entry and removes their reflection data * accordingly. * * @return void */ protected function forgetChangedClasses() { $frozenNamespaces = []; /** @var $package \TYPO3\Flow\Package */ foreach ($this->packageManager->getAvailablePackages() as $packageKey => $package) { if ($this->packageManager->isPackageFrozen($packageKey)) { $frozenNamespaces[] = $package->getNamespace(); } } $classNames = array_keys($this->classReflectionData); foreach ($frozenNamespaces as $namespace) { $namespace .= '\\'; foreach ($classNames as $index => $className) { if (strpos($className, $namespace) === 0) { unset($classNames[$index]); } } } foreach ($classNames as $className) { if (!$this->statusCache->has($this->produceCacheIdentifierFromClassName($className))) { $this->forgetClass($className); } } }
/** * @param string $key * @return boolean */ public function has($key) { return $this->cache->has($key); }
/** * Initializes this monitor * * @return void */ public function initializeObject() { if ($this->cache->has($this->identifier . '_directoriesAndFiles')) { $this->directoriesAndFiles = json_decode($this->cache->get($this->identifier . '_directoriesAndFiles'), TRUE); } }