wp/wp-includes/SimplePie/Sanitize.php
author ymh <ymh.work@gmail.com>
Tue, 15 Dec 2020 13:49:49 +0100
changeset 16 a86126ab1dd4
parent 0 d970ebf37754
child 19 3d72ae0968f4
permissions -rw-r--r--
update enmi-conf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 * SimplePie
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * A PHP-Based RSS and Atom Feed Framework.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * Takes the hard work out of managing a complete RSS/Atom solution.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
     8
 * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * All rights reserved.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 * Redistribution and use in source and binary forms, with or without modification, are
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
 * permitted provided that the following conditions are met:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 * 	* Redistributions of source code must retain the above copyright notice, this list of
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * 	  conditions and the following disclaimer.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 * 	* Redistributions in binary form must reproduce the above copyright notice, this list
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 * 	  of conditions and the following disclaimer in the documentation and/or other materials
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
 * 	  provided with the distribution.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
 * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
 * 	  to endorse or promote products derived from this software without specific prior
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
 * 	  written permission.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
 * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
 * POSSIBILITY OF SUCH DAMAGE.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
 * @package SimplePie
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    36
 * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
 * @author Ryan Parman
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    38
 * @author Sam Sneddon
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
 * @author Ryan McCue
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
 * @link http://simplepie.org/ SimplePie
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
 * Used for data cleanup and post-processing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
 * This class can be overloaded with {@see SimplePie::set_sanitize_class()}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
 * @package SimplePie
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
 * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
class SimplePie_Sanitize
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	// Private vars
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	var $base;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
	// Options
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
	var $remove_div = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
	var $image_handler = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
	var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
	var $encode_instead_of_strip = false;
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    63
	var $strip_attributes = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    64
	var $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none'));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
	var $strip_comments = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
	var $output_encoding = 'UTF-8';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
	var $enable_cache = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
	var $cache_location = './cache';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
	var $cache_name_function = 'md5';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
	var $timeout = 10;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
	var $useragent = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	var $force_fsockopen = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	var $replace_url_attributes = null;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
	public function __construct()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
		// Set defaults
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		$this->set_url_replacements(null);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
	public function remove_div($enable = true)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
		$this->remove_div = (bool) $enable;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
	public function set_image_handler($page = false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
		if ($page)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
			$this->image_handler = (string) $page;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
			$this->image_handler = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
	public function set_registry(SimplePie_Registry $registry)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
		$this->registry = $registry;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
	public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		if (isset($enable_cache))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			$this->enable_cache = (bool) $enable_cache;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
		if ($cache_location)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
			$this->cache_location = (string) $cache_location;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
		if ($cache_name_function)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
			$this->cache_name_function = (string) $cache_name_function;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
	public function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
		if ($timeout)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			$this->timeout = (string) $timeout;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
		if ($useragent)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
			$this->useragent = (string) $useragent;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
		if ($force_fsockopen)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
			$this->force_fsockopen = (string) $force_fsockopen;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
	public function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
		if ($tags)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
			if (is_array($tags))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
				$this->strip_htmltags = $tags;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
				$this->strip_htmltags = explode(',', $tags);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
			$this->strip_htmltags = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
	public function encode_instead_of_strip($encode = false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
		$this->encode_instead_of_strip = (bool) $encode;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   163
	public function strip_attributes($attribs = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		if ($attribs)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
			if (is_array($attribs))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
				$this->strip_attributes = $attribs;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
				$this->strip_attributes = explode(',', $attribs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
			$this->strip_attributes = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   182
	public function add_attributes($attribs = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none')))
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   183
	{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   184
		if ($attribs)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   185
		{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   186
			if (is_array($attribs))
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   187
			{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   188
				$this->add_attributes = $attribs;
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   189
			}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   190
			else
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   191
			{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   192
				$this->add_attributes = explode(',', $attribs);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   193
			}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   194
		}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   195
		else
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   196
		{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   197
			$this->add_attributes = false;
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   198
		}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   199
	}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   200
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
	public function strip_comments($strip = false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
		$this->strip_comments = (bool) $strip;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
	public function set_output_encoding($encoding = 'UTF-8')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
		$this->output_encoding = (string) $encoding;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
	 * Set element/attribute key/value pairs of HTML attributes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
	 * containing URLs that need to be resolved relative to the feed
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
	 * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
	 * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
	 * |q|@cite
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
	 * @since 1.0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
	 * @param array|null $element_attribute Element/attribute key/value pairs, null for default
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
	public function set_url_replacements($element_attribute = null)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		if ($element_attribute === null)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
			$element_attribute = array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
				'a' => 'href',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
				'area' => 'href',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
				'blockquote' => 'cite',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
				'del' => 'cite',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
				'form' => 'action',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
				'img' => array(
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
					'longdesc',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
					'src'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
				),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
				'input' => 'src',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
				'ins' => 'cite',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
				'q' => 'cite'
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
			);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		$this->replace_url_attributes = (array) $element_attribute;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
	public function sanitize($data, $type, $base = '')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
		$data = trim($data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
		if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
			if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
				if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
					$type |= SIMPLEPIE_CONSTRUCT_HTML;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
					$type |= SIMPLEPIE_CONSTRUCT_TEXT;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
			if ($type & SIMPLEPIE_CONSTRUCT_BASE64)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
				$data = base64_decode($data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
			if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
				if (!class_exists('DOMDocument'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
				{
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   271
					throw new SimplePie_Exception('DOMDocument not found, unable to use sanitizer');
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
				$document = new DOMDocument();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
				$document->encoding = 'UTF-8';
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   275
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
				$data = $this->preprocess($data, $type);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
				set_error_handler(array('SimplePie_Misc', 'silence_errors'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
				$document->loadHTML($data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
				restore_error_handler();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   282
				$xpath = new DOMXPath($document);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   283
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
				// Strip comments
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
				if ($this->strip_comments)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
					$comments = $xpath->query('//comment()');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
					foreach ($comments as $comment)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
						$comment->parentNode->removeChild($comment);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
				// Strip out HTML tags and attributes that might cause various security problems.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
				// Based on recommendations by Mark Pilgrim at:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
				// http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
				if ($this->strip_htmltags)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
					foreach ($this->strip_htmltags as $tag)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
					{
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   302
						$this->strip_tag($tag, $document, $xpath, $type);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
				if ($this->strip_attributes)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
					foreach ($this->strip_attributes as $attrib)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
					{
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   310
						$this->strip_attr($attrib, $xpath);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   311
					}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   312
				}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   313
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   314
				if ($this->add_attributes)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   315
				{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   316
					foreach ($this->add_attributes as $tag => $valuePairs)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   317
					{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   318
						$this->add_attr($tag, $valuePairs, $document);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
				// Replace relative URLs
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
				$this->base = $base;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
				foreach ($this->replace_url_attributes as $element => $attributes)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
					$this->replace_urls($document, $element, $attributes);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
				// If image handling (caching, etc.) is enabled, cache and rewrite all the image tags.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
				if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
					$images = $document->getElementsByTagName('img');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
					foreach ($images as $img)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
						if ($img->hasAttribute('src'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
						{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
							$image_url = call_user_func($this->cache_name_function, $img->getAttribute('src'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
							$cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $image_url, 'spi'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
							if ($cache->load())
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
							{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
								$img->setAttribute('src', $this->image_handler . $image_url);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
							else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
							{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
								$file = $this->registry->create('File', array($img->getAttribute('src'), $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
								$headers = $file->headers;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
								if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
								{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
									if ($cache->save(array('headers' => $file->headers, 'body' => $file->body)))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
									{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
										$img->setAttribute('src', $this->image_handler . $image_url);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
									else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
									{
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   357
										trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   365
				// Get content node
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   366
				$div = $document->getElementsByTagName('body')->item(0)->firstChild;
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
				// Finally, convert to a HTML string
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   368
				$data = trim($document->saveHTML($div));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
				if ($this->remove_div)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
					$data = preg_replace('/<\/div>$/', '', $data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
					$data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
			if ($type & SIMPLEPIE_CONSTRUCT_IRI)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
				$absolute = $this->registry->call('Misc', 'absolutize_url', array($data, $base));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
				if ($absolute !== false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
					$data = $absolute;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
			if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
				$data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
			if ($this->output_encoding !== 'UTF-8')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
				$data = $this->registry->call('Misc', 'change_encoding', array($data, 'UTF-8', $this->output_encoding));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
		return $data;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
	protected function preprocess($html, $type)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
		$ret = '';
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   406
		$html = preg_replace('%</?(?:html|body)[^>]*?'.'>%is', '', $html);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
		if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
			// Atom XHTML constructs are wrapped with a div by default
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
			// Note: No protection if $html contains a stray </div>!
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
			$html = '<div>' . $html . '</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
			$ret .= '<!DOCTYPE html>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
			$content_type = 'text/html';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
			$ret .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
			$content_type = 'application/xhtml+xml';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
		$ret .= '<html><head>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
		$ret .= '<meta http-equiv="Content-Type" content="' . $content_type . '; charset=utf-8" />';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
		$ret .= '</head><body>' . $html . '</body></html>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
		return $ret;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
	public function replace_urls($document, $tag, $attributes)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
		if (!is_array($attributes))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
			$attributes = array($attributes);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
		if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
			$elements = $document->getElementsByTagName($tag);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
			foreach ($elements as $element)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
				foreach ($attributes as $attribute)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
					if ($element->hasAttribute($attribute))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
						$value = $this->registry->call('Misc', 'absolutize_url', array($element->getAttribute($attribute), $this->base));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
						if ($value !== false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
						{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
							$element->setAttribute($attribute, $value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
	public function do_strip_htmltags($match)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
		if ($this->encode_instead_of_strip)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
			if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
				$match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
				$match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
				return "&lt;$match[1]$match[2]&gt;$match[3]&lt;/$match[1]&gt;";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
				return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style')))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
			return $match[4];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
			return '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   479
	protected function strip_tag($tag, $document, $xpath, $type)
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
		$elements = $xpath->query('body//' . $tag);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
		if ($this->encode_instead_of_strip)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
			foreach ($elements as $element)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
				$fragment = $document->createDocumentFragment();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
				// For elements which aren't script or style, include the tag itself
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
				if (!in_array($tag, array('script', 'style')))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
					$text = '<' . $tag;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
					if ($element->hasAttributes())
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
						$attrs = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
						foreach ($element->attributes as $name => $attr)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
						{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
							$value = $attr->value;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
							// In XHTML, empty values should never exist, so we repeat the value
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
							if (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_XHTML))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
							{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
								$value = $name;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
							// For HTML, empty is fine
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
							elseif (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_HTML))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
							{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
								$attrs[] = $name;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
								continue;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
							// Standard attribute text
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
							$attrs[] = $name . '="' . $attr->value . '"';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
						$text .= ' ' . implode(' ', $attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
					$text .= '>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
					$fragment->appendChild(new DOMText($text));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
				$number = $element->childNodes->length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
				for ($i = $number; $i > 0; $i--)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
					$child = $element->childNodes->item(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
					$fragment->appendChild($child);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
				if (!in_array($tag, array('script', 'style')))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
					$fragment->appendChild(new DOMText('</' . $tag . '>'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
				$element->parentNode->replaceChild($fragment, $element);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
		elseif (in_array($tag, array('script', 'style')))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
			foreach ($elements as $element)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
				$element->parentNode->removeChild($element);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
			foreach ($elements as $element)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
				$fragment = $document->createDocumentFragment();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
				$number = $element->childNodes->length;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
				for ($i = $number; $i > 0; $i--)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
					$child = $element->childNodes->item(0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
					$fragment->appendChild($child);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
				$element->parentNode->replaceChild($fragment, $element);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   563
	protected function strip_attr($attrib, $xpath)
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
	{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
		$elements = $xpath->query('//*[@' . $attrib . ']');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
		foreach ($elements as $element)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
		{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
			$element->removeAttribute($attrib);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
	}
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   572
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   573
	protected function add_attr($tag, $valuePairs, $document)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   574
	{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   575
		$elements = $document->getElementsByTagName($tag);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   576
		foreach ($elements as $element)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   577
		{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   578
			foreach ($valuePairs as $attrib => $value)
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   579
			{
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   580
				$element->setAttribute($attrib, $value);
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   581
			}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   582
		}
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
   583
	}
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
}