mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 08:21:52 +00:00
Release 4.7.0.
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
This commit is contained in:
parent
e34a858ca9
commit
ae1828d955
2
Doxyfile
2
Doxyfile
@ -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
13
FOCUS
@ -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
2
NEWS
@ -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
2
TODO
@ -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)
|
||||||
|
9
WHATSNEW
9
WHATSNEW
@ -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.
|
|
||||||
|
@ -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,
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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) ||
|
||||||
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user