app = $app; $this->versionProbes = array( new Probe31($this->app), new Probe35($this->app), new Probe38($this->app), ); } public function getRequirements() { if ($this->requirements) { return $this->requirements; } $this->requirements = array( BinariesProbe::create($this->app), CacheServerProbe::create($this->app), DataboxStructureProbe::create($this->app), OpcodeCacheProbe::create($this->app), FilesystemProbe::create($this->app), LocalesProbe::create($this->app), PhpProbe::create($this->app), PhraseaProbe::create($this->app), SearchEngineProbe::create($this->app), SubdefsPathsProbe::create($this->app), SystemProbe::create($this->app), ); return $this->requirements; } public function registerVersionProbe(VersionProbeInterface $probe) { $this->versionProbes[] = $probe; } /** * Return true if got the latest configuration file. * * @return type */ public function isInstalled() { return $this->app['phraseanet.configuration']->isSetup(); } /** * */ public function isUpToDate() { return $this->isInstalled() && !$this->isUpgradable(); } /** * */ public function isBlank() { return !$this->isInstalled() && !$this->isMigrable(); } /** * * @return boolean */ public function isUpgradable() { if (!$this->isInstalled()) { return false; } $upgradable = version_compare($this->app['phraseanet.appbox']->get_version(), $this->app['phraseanet.version']->getNumber(), ">"); if (!$upgradable) { foreach ($this->app['phraseanet.appbox']->get_databoxes() as $databox) { if (version_compare($databox->get_version(), $this->app['phraseanet.version']->getNumber(), "<")) { $upgradable = true; break; } } } return $upgradable; } /** * Returns true if a major migration script can be executed * * @return type */ public function isMigrable() { return (Boolean) $this->getMigrations(); } public function getMigrations() { $migrations = array(); if ($this->isUpToDate()) { return $migrations; } foreach ($this->versionProbes as $probe) { if ($probe->isMigrable()) { $migrations[] = $probe->getMigration(); } } return $migrations; } }