static function _000104($from, $to) { $datadir = gb::$site_dir . '/data/'; $added = array(); # create data/ if (!file_exists($datadir)) { gb::log('creating directory %s', $datadir); mkdir($datadir, 0775); chmod($datadir, 0775); } # load old site.json gb::log('loading %s', gb::$site_dir . '/site.json'); gb::$site_state = is_readable(gb::$site_dir . '/site.json') ? json_decode(file_get_contents(gb::$site_dir . '/site.json'), true) : array(); # move site.json:plugins to data/plugins.json $plugins = isset(gb::$site_state['plugins']) ? gb::$site_state['plugins'] : array(); gb::log('creating data:plugins'); gb::data('plugins')->storage()->set($plugins); unset(gb::$site_state['plugins']); # write data/site.json gb::log('moving %s -> data:site', gb::$site_dir . '/site.json'); # gb_maint::sync_site_state() will be called after this method returns @unlink(gb::$site_dir . '/site.json'); # remove /site.json from .gitignore if (gb_maint::gitignore_sub('/(?:\\r?\\n)\\/site\\.json([\\t\\s \\r\\n]+|^)/m', '$1')) { gb::log('removed "/site.json" from .gitignore'); $added[] = git::add('.gitignore'); } # load settings.json gb::log('loading %s', gb::$site_dir . '/settings.json'); $settings = is_readable(gb::$site_dir . '/settings.json') ? json_decode(file_get_contents(gb::$site_dir . '/settings.json'), true) : array(); # move settings.json:* to data/plugins/* foreach ($settings as $pluginn => $d) { if (!is_array($d)) { $d = $d !== null ? array($d) : array(); } if ($d) { gb::log('copying %s:%s -> data:plugins/%s', gb::$site_dir . '/settings.json', $pluginn, $pluginn); gb::data('plugins/' . $pluginn)->storage()->set($d); } } gb::log('removing old %s', gb::$site_dir . '/settings.json'); @unlink(gb::$site_dir . '/settings.json'); # load gb-users.php $users = array(); if (is_readable(gb::$site_dir . '/gb-users.php')) { gb::log('loading %s', gb::$site_dir . '/gb-users.php'); eval('class GBUserAccount { static function __set_state($state) { return GBUser::__set_state($state); } }'); require gb::$site_dir . '/gb-users.php'; if (isset($db)) { $admin = isset($db['_admin']) ? $db['_admin'] : ''; foreach ($db as $email => $user) { if (is_object($user)) { $user->admin = $email === $admin; $users[$email] = $user; gb::log('transponded user %s', $email); } } } } # move gb-users.php to data/users.json gb::log('moving %s -> data:users', gb::$site_dir . '/gb-users.php'); GBUser::storage()->set($users); @unlink(gb::$site_dir . '/gb-users.php'); # commit any modifications if ($added) { try { git::commit('upgrade 0.1.4 modified ' . implode(', ', $added), GBUser::findAdmin()->gitAuthor(), $added); } catch (GitError $e) { if (strpos($e->getMessage(), 'no changes added to commit') === false) { throw $e; } } } }