|
- #!/usr/bin/php
- <?php
-
- chdir(dirname(__FILE__));
- require_once 'common.php';
- require_once '../library/HTMLPurifier.auto.php';
- assertCli();
-
- /**
- * @file
- * Renames a configuration directive. This involves renaming the file,
- * adding an alias, and then regenerating the cache. You still have to
- * manually go through and fix any calls to the directive.
- * @warning This script doesn't handle multi-stringhash files.
- */
-
- $argv = $_SERVER['argv'];
- if (count($argv) < 3) {
- echo "Usage: {$argv[0]} OldName NewName\n";
- exit(1);
- }
-
- chdir('../library/HTMLPurifier/ConfigSchema/schema');
-
- $old = $argv[1];
- $new = $argv[2];
-
- if (!file_exists("$old.txt")) {
- echo "Cannot move undefined configuration directive $old\n";
- exit(1);
- }
-
- if ($old === $new) {
- echo "Attempting to move to self, aborting\n";
- exit(1);
- }
-
- if (file_exists("$new.txt")) {
- echo "Cannot move to already defined directive $new\n";
- exit(1);
- }
-
- $file = "$old.txt";
- $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
- $interchange = new HTMLPurifier_ConfigSchema_Interchange();
- $builder->buildFile($interchange, $file);
- $contents = file_get_contents($file);
-
- if (strpos($contents, "\r\n") !== false) {
- $nl = "\r\n";
- } elseif (strpos($contents, "\r") !== false) {
- $nl = "\r";
- } else {
- $nl = "\n";
- }
-
- // replace name with new name
- $contents = str_replace($old, $new, $contents);
-
- if ($interchange->directives[$old]->aliases) {
- $pos_alias = strpos($contents, 'ALIASES:');
- $pos_ins = strpos($contents, $nl, $pos_alias);
- if ($pos_ins === false) $pos_ins = strlen($contents);
- $contents =
- substr($contents, 0, $pos_ins) . ", $old" . substr($contents, $pos_ins);
- file_put_contents($file, $contents);
- } else {
- $lines = explode($nl, $contents);
- $insert = false;
- foreach ($lines as $n => $line) {
- if (strncmp($line, '--', 2) === 0) {
- $insert = $n;
- break;
- }
- }
- if (!$insert) {
- $lines[] = "ALIASES: $old";
- } else {
- array_splice($lines, $insert, 0, "ALIASES: $old");
- }
- file_put_contents($file, implode($nl, $lines));
- }
-
- rename("$old.txt", "$new.txt") || exit(1);
|