0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-22 16:31:53 +00:00

Release 4.7.0.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
This commit is contained in:
Edward Z. Yang 2015-08-04 18:03:42 -07:00
parent e34a858ca9
commit ae1828d955
11 changed files with 13 additions and 189 deletions

View File

@ -31,7 +31,7 @@ PROJECT_NAME = HTMLPurifier
# This could be handy for archiving the generated documentation or # This could be handy for archiving the generated documentation or
# if some version control system is used. # if some version control system is used.
PROJECT_NUMBER = 4.6.0 PROJECT_NUMBER = 4.7.0
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.

13
FOCUS
View File

@ -1,13 +0,0 @@
9 - Major security fixes
[ Appendix A: Release focus IDs ]
0 - N/A
1 - Initial freshmeat announcement
2 - Documentation
3 - Code cleanup
4 - Minor feature enhancements
5 - Major feature enhancements
6 - Minor bugfixes
7 - Major bugfixes
8 - Minor security fixes
9 - Major security fixes

2
NEWS
View File

@ -9,7 +9,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
. Internal change . Internal change
========================== ==========================
4.7.0, unknown release date 4.7.0, released 2015-08-04
# opacity is now considered a "tricky" CSS property rather than a # opacity is now considered a "tricky" CSS property rather than a
proprietary one. proprietary one.
! %AutoFormat.RemoveEmpty.Predicate for specifying exactly when ! %AutoFormat.RemoveEmpty.Predicate for specifying exactly when

2
TODO
View File

@ -32,7 +32,7 @@ Things to do as soon as possible:
FUTURE VERSIONS FUTURE VERSIONS
--------------- ---------------
4.6 release [OMG CONFIG PONIES] 4.8 release [OMG CONFIG PONIES]
! Fix Printer. It's from the old days when we didn't have decent XML classes ! Fix Printer. It's from the old days when we didn't have decent XML classes
! Factor demo.php into a set of Printer classes, and then create a stub ! Factor demo.php into a set of Printer classes, and then create a stub
file for users here (inside the actual HTML Purifier library) file for users here (inside the actual HTML Purifier library)

View File

@ -1 +1 @@
4.6.0 4.7.0

View File

@ -1,5 +1,4 @@
HTML Purifier 4.6.0 is a major security release, fixing numerous bad HTML Purifier 4.7.0 is a bugfix release, collecting two years
quadratic asymptotics in HTML Purifier's core algorithms. Most users will worth of accumulated bug fixes. Highlighted bugfixes are updated
see a decent speedup on large inputs, although small inputs may take YouTube filter code, corrected rgb() CSS parsing, and one new
longer. Additionally, the secure URI munging algorithm has changed to configuration option, %AutoFormat.RemoveEmpty.Predicate.
do a proper HMAC. There are some other miscellaneous bugfixes as well.

View File

@ -7,7 +7,7 @@
* primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS * primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS
* FILE, changes will be overwritten the next time the script is run. * FILE, changes will be overwritten the next time the script is run.
* *
* @version 4.6.0 * @version 4.7.0
* *
* @warning * @warning
* You must *not* include any other HTML Purifier files before this file, * You must *not* include any other HTML Purifier files before this file,

View File

@ -19,7 +19,7 @@
*/ */
/* /*
HTML Purifier 4.6.0 - Standards Compliant HTML Filtering HTML Purifier 4.7.0 - Standards Compliant HTML Filtering
Copyright (C) 2006-2008 Edward Z. Yang Copyright (C) 2006-2008 Edward Z. Yang
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
@ -58,12 +58,12 @@ class HTMLPurifier
* Version of HTML Purifier. * Version of HTML Purifier.
* @type string * @type string
*/ */
public $version = '4.6.0'; public $version = '4.7.0';
/** /**
* Constant with version of HTML Purifier. * Constant with version of HTML Purifier.
*/ */
const VERSION = '4.6.0'; const VERSION = '4.7.0';
/** /**
* Global configuration object. * Global configuration object.

View File

@ -21,7 +21,7 @@ class HTMLPurifier_Config
* HTML Purifier's version * HTML Purifier's version
* @type string * @type string
*/ */
public $version = '4.6.0'; public $version = '4.7.0';
/** /**
* Whether or not to automatically finalize * Whether or not to automatically finalize

View File

@ -35,7 +35,6 @@ foreach ($files as $file) {
postfix_is('.phpt', $file) || postfix_is('.phpt', $file) ||
postfix_is('VERSION', $file) || postfix_is('VERSION', $file) ||
postfix_is('WHATSNEW', $file) || postfix_is('WHATSNEW', $file) ||
postfix_is('FOCUS', $file) ||
postfix_is('configdoc/usage.xml', $file) || postfix_is('configdoc/usage.xml', $file) ||
postfix_is('library/HTMLPurifier.includes.php', $file) || postfix_is('library/HTMLPurifier.includes.php', $file) ||
postfix_is('library/HTMLPurifier.safe-includes.php', $file) || postfix_is('library/HTMLPurifier.safe-includes.php', $file) ||

View File

@ -1,161 +0,0 @@
#!/usr/bin/php
<?php
chdir(dirname(__FILE__));
require_once 'common.php';
assertCli();
/**
* @file
* Updates Freshmeat's HTML Purifier with the latest information via XML RPC.
*/
class XmlRpc_Freshmeat
{
const URL = 'http://freshmeat.net/xmlrpc/';
public $chatty = false;
public $encodeOptions = array(
'encoding' => 'utf-8',
);
/**
* This array defines shortcut method signatures for dealing with simple
* XML RPC methods. More complex ones (publish_release) should use the named parameter
* syntax.
*/
public $signatures = array(
'login' => array('username', 'password'),
'fetch_branch_list' => array('project_name'),
'fetch_release' => array('project_name', 'branch_name', 'version'),
'withdraw_release' => array('project_name', 'branch_name', 'version'),
);
protected $sid = null;
/**
* @param $username Username to login with
* @param $password Password to login with
*/
public function __construct($username = null, $password = null)
{
if ($username && $password) {
$this->login($username, $password);
}
}
/**
* Performs a raw XML RPC call to self::URL
*/
protected function call($method, $params)
{
$request = xmlrpc_encode_request($method, $params, $this->encodeOptions);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-type: text/xml',
'Content-length: ' . strlen($request)
));
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$data = curl_exec($ch);
if ($errno = curl_errno($ch)) {
throw new Exception("Curl error [$errno]: " . curl_error($ch));
} else {
curl_close($ch);
return xmlrpc_decode($data);
}
}
/**
* Performs an XML RPC call to Freshmeat.
* @param $name Name of method to call, can be methodName or method_name
* @param $args Arguments of call, in form array('key1', 'val1', 'key2' ...)
*/
public function __call($name, $args)
{
$method = $this->camelToUnderscore($name);
$params = array();
if ($this->sid) $params['SID'] = $this->sid;
if (isset($this->signatures[$method])) {
for ($i = 0, $c = count($this->signatures[$method]); $i < $c; $i++) {
$params[$this->signatures[$method][$i]] = $args[$i];
}
} else {
for ($i = 0, $c = count($args); $i + 1 < $c; $i += 2) {
$params[$args[$i]] = $args[$i + 1];
}
}
$result = $this->call($method, $params);
switch ($method) {
case 'login':
$this->sid = $result['SID'];
break;
case 'logout':
$this->sid = null;
break;
}
if ($this->chatty) print_r($result);
return $result;
}
/**
* Munge methodName to method_name
*/
private function camelToUnderscore($name)
{
$method = '';
for ($i = 0, $c = strlen($name); $i < $c; $i++) {
$v = $name[$i];
if (ctype_lower($v)) $method .= $v;
else $method .= '_' . strtolower($v);
}
return $method;
}
/**
* Automatically logout at end of scope
*/
public function __destruct()
{
if ($this->sid) $this->logout();
}
}
$rpc = new XmlRpc_Freshmeat($argv[1], $argv[2]);
$rpc->chatty = true;
$project = 'htmlpurifier';
$branch = 'Default';
$version = file_get_contents('../VERSION');
$result = $rpc->fetchRelease($project, $branch, $version);
if (!isset($result['faultCode'])) {
echo "Freshmeat release already exists.\n";
exit(0);
}
$changes = strtr(file_get_contents('../WHATSNEW'), array("\r" => '', "\n" => ' '));
$focus = (int) trim(file_get_contents('../FOCUS'));
if (strlen($changes) > 600) {
echo "WHATSNEW entry is too long.\n";
exit(1);
}
$rpc->publishRelease(
'project_name', $project,
'branch_name', $branch,
'version', $version,
'changes', $changes,
'release_focus', $focus,
'url_tgz', "http://htmlpurifier.org/releases/htmlpurifier-$version.tar.gz",
'url_zip', "http://htmlpurifier.org/releases/htmlpurifier-$version.zip",
'url_changelog', "http://htmlpurifier.org/svnroot/htmlpurifier/tags/$version/NEWS"
);
// vim: et sw=4 sts=4