static function upgrade($fromVersion)
{
self::sync_site_state();
# this can potentially take a very long time
set_time_limit(120);
$stages = gb_upgrade::perform($fromVersion, gb::$version);
gb::log('triggering rebuild as an effect of the upgrade to %s', gb::$version);
$failures = GBRebuilder::rebuild($stages ? true : false);
gb::log('gitblog is now version %s', gb::$version);
if ($failures) {
gb::log(LOG_WARNING, 'rebuilding failed with %d failures', count($failures));
return false;
}
return true;
}
/** * Verify integrity of the site, automatically taking any actions to restore * it if broken. * * Return values: * 0 Nothing done (everything is probably OK). * -1 Error (the error has been logged through trigger_error). * 1 gitblog cache was updated. * 2 gitdir is missing and need to be created (git init). * 3 upgrade performed */ static function verify_integrity() { $r = 0; if (!is_dir(gb::$site_dir . '/.git/info/gitblog')) { if (!is_dir(gb::$site_dir . '/.git')) { # 2: no repo/not initialized return 2; } # 1: gitblog cache updated gb_maint::sync_site_state(); GBRebuilder::rebuild(true); return 1; } # load site.json $r = self::load_site_state(); # check site state if ($r === false || !isset(gb::$site_state['url']) || !gb::$site_state['url'] || gb::$site_state['url'] !== gb::$site_url && strpos(gb::$site_url, '://localhost') === false && strpos(gb::$site_url, '://127.0.0.1') === false) { return gb_maint::sync_site_state() === false ? -1 : 0; } elseif (gb::$site_state['version'] !== gb::$version) { return gb_maint::upgrade(gb::$site_state['version']) ? 0 : -1; } elseif (gb::$site_state['posts_pagesize'] !== gb::$posts_pagesize) { gb_maint::sync_site_state(); GBRebuilder::rebuild(true); return 1; } return 0; }