first commit
This commit is contained in:
84
htmlpurifier-4.10.0/maintenance/rename-config.php
Executable file
84
htmlpurifier-4.10.0/maintenance/rename-config.php
Executable file
@ -0,0 +1,84 @@
|
||||
#!/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);
|
Reference in New Issue
Block a user