mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-14 09:18:41 +00:00
85 lines
2.1 KiB
PHP
85 lines
2.1 KiB
PHP
|
#!/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);
|