wp/wp-includes/atomlib.php
author ymh <ymh.work@gmail.com>
Tue, 22 Oct 2019 16:11:46 +0200
changeset 15 3d4e9c994f10
parent 7 cf61fcea0001
child 16 a86126ab1dd4
permissions -rw-r--r--
Upgrade jquery-ui in in-motion theme version from 1.8.14 to 1.8.22 to avoid 'a.curCSS is not a function' errors in console that caused problems with circles and navigation.
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
 * Atom Syndication Format PHP Library
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * @package AtomLib
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * @link http://code.google.com/p/phpatomlib/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * @author Elias Torres <elias@torrez.us>
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * @version 0.4
5
5e2f62d02dcd upgrade wordpress + plugins
ymh <ymh.work@gmail.com>
parents: 0
diff changeset
    10
 * @since 2.3.0
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 * Structure that store common Atom Feed Properties
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 * @package AtomLib
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
class AtomFeed {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
	 * Stores Links
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
	 * @var array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	 * @access public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    var $links = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
     * Stores Categories
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
     * @var array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
     * @access public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    var $categories = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
	 * Stores Entries
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
	 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
	 * @var array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
	 * @access public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    var $entries = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
 * Structure that store Atom Entry Properties
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
 * @package AtomLib
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
class AtomEntry {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
	/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	 * Stores Links
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
	 * @var array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
	 * @access public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
	 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    var $links = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    /**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
     * Stores Categories
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
     * @var array
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	 * @access public
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
     */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    var $categories = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
 * AtomLib Atom Parser API
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
 * @package AtomLib
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
class AtomParser {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
    var $NS = 'http://www.w3.org/2005/Atom';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    var $ATOM_CONTENT_ELEMENTS = array('content','summary','title','subtitle','rights');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    var $ATOM_SIMPLE_ELEMENTS = array('id','updated','published','draft');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    var $debug = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    var $depth = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
    var $indent = 2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    var $in_content;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    var $ns_contexts = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    var $ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    var $content_ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    var $content_ns_contexts = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    var $is_xhtml = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    var $is_html = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    var $is_text = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    var $skipped_div = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    var $FILE = "php://input";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    var $feed;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    var $current;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    90
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    91
	 * PHP5 constructor.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    92
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    93
    function __construct() {
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
        $this->feed = new AtomFeed();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
        $this->current = null;
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    97
        $this->map_attrs_func = array( __CLASS__, 'map_attrs' );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
    98
        $this->map_xmlns_func = array( __CLASS__, 'map_xmlns' );
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   101
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   102
	 * PHP4 constructor.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   103
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   104
	public function AtomParser() {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   105
		self::__construct();
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   106
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   107
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   108
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   109
	 * Map attributes to key="val"
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   110
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   111
	 * @param string $k Key
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   112
	 * @param string $v Value
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   113
	 * @return string
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   114
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   115
	public static function map_attrs($k, $v) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   116
		return "$k=\"$v\"";
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   117
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   118
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   119
	/**
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   120
	 * Map XML namespace to string.
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   121
	 *
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   122
	 * @param indexish $p XML Namespace element index
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   123
	 * @param array $n Two-element array pair. [ 0 => {namespace}, 1 => {url} ]
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   124
	 * @return string 'xmlns="{url}"' or 'xmlns:{namespace}="{url}"'
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   125
	 */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   126
	public static function map_xmlns($p, $n) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   127
		$xd = "xmlns";
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   128
		if( 0 < strlen($n[0]) ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   129
			$xd .= ":{$n[0]}";
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   130
		}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   131
		return "{$xd}=\"{$n[1]}\"";
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   132
	}
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   133
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
    function _p($msg) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
        if($this->debug) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
            print str_repeat(" ", $this->depth * $this->indent) . $msg ."\n";
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
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
    function error_handler($log_level, $log_text, $error_file, $error_line) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
        $this->error = $log_text;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
    function parse() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
        set_error_handler(array(&$this, 'error_handler'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
        array_unshift($this->ns_contexts, array());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   150
        if ( ! function_exists( 'xml_parser_create_ns' ) ) {
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   151
        	trigger_error( __( "PHP's XML extension is not available. Please contact your hosting provider to enable PHP's XML extension." ) );
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   152
        	return false;
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   153
        }
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   154
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
        $parser = xml_parser_create_ns();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
        xml_set_object($parser, $this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
        xml_set_element_handler($parser, "start_element", "end_element");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
        xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
        xml_set_character_data_handler($parser, "cdata");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
        xml_set_default_handler($parser, "_default");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
        xml_set_start_namespace_decl_handler($parser, "start_ns");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
        xml_set_end_namespace_decl_handler($parser, "end_ns");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
        $this->content = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
        $ret = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
        $fp = fopen($this->FILE, "r");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
        while ($data = fread($fp, 4096)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
            if($this->debug) $this->content .= $data;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
            if(!xml_parse($parser, $data, feof($fp))) {
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   174
                /* translators: 1: error message, 2: line number */
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   175
                trigger_error(sprintf(__('XML Error: %1$s at line %2$s')."\n",
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
                    xml_error_string(xml_get_error_code($parser)),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
                    xml_get_current_line_number($parser)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
                $ret = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
                break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
        fclose($fp);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
        xml_parser_free($parser);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
        restore_error_handler();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
        return $ret;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
    function start_element($parser, $name, $attrs) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   193
        $tag = array_pop(explode(":", $name));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
        switch($name) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
            case $this->NS . ':feed':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
                $this->current = $this->feed;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
                break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
            case $this->NS . ':entry':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
                $this->current = new AtomEntry();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
                break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
        };
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
        $this->_p("start_element('$name')");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
        #$this->_p(print_r($this->ns_contexts,true));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
        #$this->_p('current(' . $this->current . ')');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
        array_unshift($this->ns_contexts, $this->ns_decls);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
        $this->depth++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
            $this->content_ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
            if($this->is_html || $this->is_text)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
                trigger_error("Invalid content in element found. Content must not be of type text or html if it contains markup.");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
            $attrs_prefix = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
            // resolve prefixes for attributes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
            foreach($attrs as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
                $with_prefix = $this->ns_to_prefix($key, true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
                $attrs_prefix[$with_prefix[1]] = $this->xml_escape($value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
            $attrs_str = join(' ', array_map($this->map_attrs_func, array_keys($attrs_prefix), array_values($attrs_prefix)));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
            if(strlen($attrs_str) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
                $attrs_str = " " . $attrs_str;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
            $with_prefix = $this->ns_to_prefix($name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
            if(!$this->is_declared_content_ns($with_prefix[0])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
                array_push($this->content_ns_decls, $with_prefix[0]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
            $xmlns_str = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
            if(count($this->content_ns_decls) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
                array_unshift($this->content_ns_contexts, $this->content_ns_decls);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
                $xmlns_str .= join(' ', array_map($this->map_xmlns_func, array_keys($this->content_ns_contexts[0]), array_values($this->content_ns_contexts[0])));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
                if(strlen($xmlns_str) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
                    $xmlns_str = " " . $xmlns_str;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
            array_push($this->in_content, array($tag, $this->depth, "<". $with_prefix[1] ."{$xmlns_str}{$attrs_str}" . ">"));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
        } else if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS) || in_array($tag, $this->ATOM_SIMPLE_ELEMENTS)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
            $this->in_content = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
            $this->is_xhtml = $attrs['type'] == 'xhtml';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
            $this->is_html = $attrs['type'] == 'html' || $attrs['type'] == 'text/html';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
            $this->is_text = !in_array('type',array_keys($attrs)) || $attrs['type'] == 'text';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
            $type = $this->is_xhtml ? 'XHTML' : ($this->is_html ? 'HTML' : ($this->is_text ? 'TEXT' : $attrs['type']));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
            if(in_array('src',array_keys($attrs))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
                $this->current->$tag = $attrs;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
                array_push($this->in_content, array($tag,$this->depth, $type));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
        } else if($tag == 'link') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
            array_push($this->current->links, $attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
        } else if($tag == 'category') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
            array_push($this->current->categories, $attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
        $this->ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
    function end_element($parser, $name) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   272
        $tag = array_pop(explode(":", $name));
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
        $ccount = count($this->in_content);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
        # if we are *in* content, then let's proceed to serialize it
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
            # if we are ending the original content element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
            # then let's finalize the content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
            if($this->in_content[0][0] == $tag &&
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
                $this->in_content[0][1] == $this->depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
                $origtype = $this->in_content[0][2];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
                array_shift($this->in_content);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
                $newcontent = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
                foreach($this->in_content as $c) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
                    if(count($c) == 3) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
                        array_push($newcontent, $c[2]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
                    } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
                        if($this->is_xhtml || $this->is_text) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
                            array_push($newcontent, $this->xml_escape($c));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
                        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
                            array_push($newcontent, $c);
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
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
                if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
                    $this->current->$tag = array($origtype, join('',$newcontent));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
                } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
                    $this->current->$tag = join('',$newcontent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
                $this->in_content = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
            } else if($this->in_content[$ccount-1][0] == $tag &&
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
                $this->in_content[$ccount-1][1] == $this->depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
                $this->in_content[$ccount-1][2] = substr($this->in_content[$ccount-1][2],0,-1) . "/>";
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
                # else, just finalize the current element's content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
                $endtag = $this->ns_to_prefix($name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
                array_push($this->in_content, array($tag, $this->depth, "</$endtag[1]>"));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
        array_shift($this->ns_contexts);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
        $this->depth--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
        if($name == ($this->NS . ':entry')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
            array_push($this->feed->entries, $this->current);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
            $this->current = null;
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
        $this->_p("end_element('$name')");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
    function start_ns($parser, $prefix, $uri) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
        $this->_p("starting: " . $prefix . ":" . $uri);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
        array_push($this->ns_decls, array($prefix,$uri));
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
    function end_ns($parser, $prefix) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
        $this->_p("ending: #" . $prefix . "#");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
    function cdata($parser, $data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
        $this->_p("data: #" . str_replace(array("\n"), array("\\n"), trim($data)) . "#");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
            array_push($this->in_content, $data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
    function _default($parser, $data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
        # when does this gets called?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
    function ns_to_prefix($qname, $attr=false) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
        # split 'http://www.w3.org/1999/xhtml:div' into ('http','//www.w3.org/1999/xhtml','div')
7
cf61fcea0001 resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents: 5
diff changeset
   347
        $components = explode(":", $qname);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
        # grab the last one (e.g 'div')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
        $name = array_pop($components);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
        if(!empty($components)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
            # re-join back the namespace component
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
            $ns = join(":",$components);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
            foreach($this->ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
                foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
                    if($mapping[1] == $ns && strlen($mapping[0]) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
                        return array($mapping, "$mapping[0]:$name");
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
        if($attr) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
            return array(null, $name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
            foreach($this->ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
                foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
                    if(strlen($mapping[0]) == 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
                        return array($mapping, $name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
                    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    function is_declared_content_ns($new_mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
        foreach($this->content_ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
            foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
                if($new_mapping == $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
                    return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
    function xml_escape($string)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
             return str_replace(array('&','"',"'",'<','>'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
                array('&amp;','&quot;','&apos;','&lt;','&gt;'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
                $string );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
}