Bolt\Configuration\LowlevelChecks::doDatabaseSqliteCheck PHP Method

doDatabaseSqliteCheck() protected method

protected doDatabaseSqliteCheck ( $config )
    protected function doDatabaseSqliteCheck($config)
    {
        if (!$this->sqliteLoaded) {
            return $this->getExceptionController()->databaseDriver('missing', 'SQLite', 'pdo_sqlite');
        }
        // If in-memory connection, skip path checks
        if (isset($config['memory']) && $config['memory'] === true) {
            return null;
        }
        // If the file is present, make sure it is writable
        $file = $config['path'];
        if (file_exists($file)) {
            if (!is_writable($file)) {
                return $this->getExceptionController()->databasePath('file', $file, 'is not writable');
            }
            return null;
        }
        // If the file isn't present, make sure the directory
        // exists and is writable so the file can be created
        $dir = dirname($file);
        if (!file_exists($dir)) {
            // At this point, it is possible that the site has been moved and
            // the configured Sqlite database file path is no longer relevant
            // to the site's root path
            $cacheJson = $this->config->getPath('cache/config-cache.json');
            if (file_exists($cacheJson)) {
                unlink($cacheJson);
                $this->config->app['config']->initialize();
                $config = $this->config->app['config']->get('general/database');
                if (!file_exists(dirname($config['path']))) {
                    return $this->getExceptionController()->databasePath('folder', $dir, 'does not exist');
                }
            } else {
                return $this->getExceptionController()->databasePath('folder', $dir, 'does not exist');
            }
        }
        if (!is_writable($dir)) {
            return $this->getExceptionController()->databasePath('folder', $dir, 'is not writable');
        }
    }