コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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);
     }
 }