You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.2 KiB
84 lines
2.2 KiB
#!/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);
|
|
|