/** * @test */ public function editorWorksWithoutDefiningAbspath() { file_put_contents($this->commonConfigPath, '<?php define(\'DB_NAME\', \'vp01\'); $table_prefix = \'wp_\'; require_once(ABSPATH . \'wp-settings.php\'); '); $a = new WpConfigEditor($this->commonConfigPath, false); $a->updateConfigConstant('TEST', 'value'); $expectedContent = '<?php define(\'DB_NAME\', \'vp01\'); $table_prefix = \'wp_\'; define(\'TEST\', \'value\'); require_once(ABSPATH . \'wp-settings.php\'); '; $this->assertEquals($expectedContent, file_get_contents($this->commonConfigPath)); }
require_once dirname(__FILE__) . '/bootstrap.php'; global $versionPressContainer; /** @var \VersionPress\Database\Database $database */ $database = $versionPressContainer->resolve(VersionPressServices::DATABASE); $queries[] = "DROP TABLE IF EXISTS `{$database->vp_id}`"; $vpOptionsReflection = new ReflectionClass(VersionPressOptions::class); $usermetaToDelete = array_values($vpOptionsReflection->getConstants()); $queryRestriction = '"' . join('", "', $usermetaToDelete) . '"'; $queries[] = "DELETE FROM `{$database->usermeta}` WHERE meta_key IN ({$queryRestriction})"; foreach ($queries as $query) { $database->query($query); } delete_option('vp_rest_api_plugin_version'); FileSystem::remove(VP_VPDB_DIR); $wpConfigPath = \VersionPress\Utils\WordPressMissingFunctions::getWpConfigPath(); \VersionPress\Utils\WpConfigEditor::removeVersionPressConstants([$wpConfigPath, dirname($wpConfigPath . '/' . WpConfigSplitter::COMMON_CONFIG_NAME)]); if (UninstallationUtil::uninstallationShouldRemoveGitRepo()) { $backupsDir = WP_CONTENT_DIR . '/vpbackups'; if (!file_exists($backupsDir)) { FileSystem::mkdir($backupsDir); file_put_contents($backupsDir . '/.gitignore', 'git-backup-*'); SecurityUtils::protectDirectory($backupsDir); } $backupPath = $backupsDir . '/git-backup-' . date("YmdHis"); FileSystem::rename(VP_PROJECT_ROOT . '/.git', $backupPath, true); $productionGitignore = VP_PROJECT_ROOT . '.gitignore'; $templateGitignore = __DIR__ . '/src/Initialization/.gitignore.tpl'; if (FileSystem::filesHaveSameContents($productionGitignore, $templateGitignore)) { FileSystem::remove($productionGitignore); } }
/** * Sets or updates constant or variable in wp-config.php * * ## OPTIONS * * <constant> * : Name of constant or variable that will be changed. * * <value> * : Desired value. Supported types are: string, int, float and bool. * * [--plain] * : The value will be used as is - without type detection, quoting etc. * * [--variable] * : Will set a variable instead of constant. Useful for $table_prefix. * * [--common] * : The constant / variable will be set in wp-config.common.php. * * @subcommand update-config * * * @when before_wp_load */ public function updateConfig($args = [], $assoc_args = []) { require_once __DIR__ . '/VPCommandUtils.php'; require_once __DIR__ . '/../Initialization/WpConfigSplitter.php'; require_once __DIR__ . '/../Utils/WpConfigEditor.php'; require_once __DIR__ . '/../Utils/WordPressMissingFunctions.php'; $wpConfigPath = WordPressMissingFunctions::getWpConfigPath(); $updateCommonConfig = isset($assoc_args['common']); if ($updateCommonConfig) { $wpConfigPath = dirname($wpConfigPath) . '/' . WpConfigSplitter::COMMON_CONFIG_NAME; } if ($wpConfigPath === false) { WP_CLI::error('Config file does not exist. Please run `wp core config` first.'); } $constantOrVariableName = $args[0]; $isVariable = isset($assoc_args['variable']); $usePlainValue = isset($assoc_args['plain']); $value = $usePlainValue ? $args[1] : VPCommandUtils::fixTypeOfValue($args[1]); $wpConfigEditor = new WpConfigEditor($wpConfigPath, $updateCommonConfig); try { if ($isVariable) { $wpConfigEditor->updateConfigVariable($constantOrVariableName, $value, $usePlainValue); } else { $wpConfigEditor->updateConfigConstant($constantOrVariableName, $value, $usePlainValue); } } catch (\Exception $e) { WP_CLI::error('Cannot find place for defining the ' . ($isVariable ? 'variable' : 'constant') . '. Config was probably edited manually.'); } }