/** * Scan for all versions * * @param string $dir Directory to scan * * @return ItemInterface[] */ public static function scanForVersions($dir) { $versions = []; $iterator = new DirectoryIterator($dir); foreach ($iterator as $fileinfo) { $filename = $fileinfo->getFilename(); if (!$fileinfo->isDir() || $fileinfo->isDot() || !VersionCollection::isCorrectVersion($filename)) { continue; } $versions[] = VersionCollection::createItem($filename); } return $versions; }
/** * Get latest completed migration version * * @param array $options Applications options * @return ItemInterface */ public static function getCurrentVersion($options) { self::connectionSetup($options); if (isset($options['migrationsInDb']) && (bool) $options['migrationsInDb']) { /** @var AdapterInterface $connection */ $connection = self::$_storage; $lastGoodMigration = $connection->query('SELECT * FROM ' . self::MIGRATION_LOG_TABLE . ' ORDER BY version DESC LIMIT 1'); if (0 == $lastGoodMigration->numRows()) { return VersionCollection::createItem(null); } else { $lastGoodMigration = $lastGoodMigration->fetchArray(); return VersionCollection::createItem($lastGoodMigration['version']); } } else { // Get and clean migration $version = file_exists(self::$_storage) ? file_get_contents(self::$_storage) : null; $version = trim($version) ?: null; return VersionCollection::createItem($version); } }