Example #1
0
 /**
  * Register different capsules that we can use
  * @param array $capsules
  */
 public function registerCapsules($capsules = array())
 {
     $cachePath = Config::get('base_path') . 'storage/cache/';
     if (is_file($cachePath . 'reactor.cache.php')) {
         require_once $cachePath . 'reactor.cache.php';
         $cached = true;
     } else {
         $cached = false;
         $toCache = '';
     }
     foreach ($capsules as $capsule) {
         //todo: load anything we need to, configs, etc
         $this->_capsules[] = $capsule;
         if (!$cached) {
             $reflector = new \ReflectionClass(get_class($capsule));
             $capsuleDir = !is_dir(dirname($reflector->getFileName()) . '/config/') ? $this->getConfigDirectory(dirname($reflector->getFileName())) : dirname($reflector->getFileName()) . '/config/';
             $capsuleArray = Virge::dirToArray($capsuleDir);
             //crawl the config directory if it exists
             $files = $capsuleArray ? $capsuleArray['file'] : array();
             foreach ($files as $file) {
                 $toCache .= str_replace(array("<?php", "?>"), '', file_get_contents($capsuleDir . $file)) . "\n";
                 require_once $capsuleDir . $file;
             }
         }
     }
     foreach ($capsules as $capsule) {
         $capsule->registerCapsule();
     }
     if (!$cached && Config::get('app', 'cache_reactor') === true) {
         //save cache
         file_put_contents($cachePath . 'reactor.cache.php', "<?php\n" . $this->sanitizeCache($toCache));
     }
 }
Example #2
0
 /**
  * Commit our migrations, pass in a directory will read all files within
  * and commit them as migrations
  * @param string $dir
  */
 public function commitMigrations($dir)
 {
     $fileArray = Virge::dirToArray($dir);
     //TODO: use the Virge ORM
     $sql = "SELECT DISTINCT(`filename`) AS `file` FROM `virge_migration`";
     $result = Database::query($sql);
     $existing = array();
     foreach ($result as $row) {
         $existing[] = $row['file'];
     }
     $files = $fileArray['file'];
     uasort($files, function ($a, $b) use($dir) {
         $aFilename = pathinfo($a, PATHINFO_FILENAME);
         $aDateTime = \DateTime::createFromFormat('Y-m-d-H-i-s', substr($aFilename, strlen($aFilename) - 19));
         $bFilename = pathinfo($b, PATHINFO_FILENAME);
         $bDateTime = \DateTime::createFromFormat('Y-m-d-H-i-s', substr($bFilename, strlen($bFilename) - 19));
         if ($aDateTime < $bDateTime) {
             return -1;
         }
         if ($aDateTime > $bDateTime) {
             return 1;
         }
         if (filemtime($dir . $a) < filemtime($dir . $b)) {
             return 1;
         }
         return -1;
     });
     foreach ($files as $file) {
         if (!in_array($file, $existing)) {
             include $dir . $file;
             $this->logMigration($file);
         }
     }
 }
Example #3
0
 /**
  * Compile the config
  */
 public static function compile()
 {
     $configPath = self::get('app_path') . 'config/';
     $configFiles = Virge::dirToArray($configPath);
     $distConfigs = array();
     if ($configFiles) {
         foreach ($configFiles['file'] as $configFile) {
             if (strpos($configFile, '.dist') === false) {
                 continue;
             }
             $configName = self::getConfigNameFromFile($configFile);
             $distConfigs[$configName] = (include_once $configPath . $configFile);
         }
     }
     $compiledConfig = array();
     foreach (self::$_config as $name => $config) {
         if (isset($distConfigs[$name])) {
             $distConfig = $distConfigs[$name];
             $compiledConfig[$name] = array_replace_recursive($distConfig, $config);
         } else {
             $compiledConfig[$name] = $config;
         }
     }
     file_put_contents($configPath . '_compiled.php', serialize($compiledConfig));
 }