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);
 | 
