wp/wp-includes/atomlib.php
author ymh <ymh.work@gmail.com>
Wed, 21 Sep 2022 18:19:35 +0200
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 19 3d72ae0968f4
permissions -rw-r--r--
Site enmi version 09/2022
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))) {
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   174
                /* translators: 1: Error message, 2: Line number. */
7
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);
16
a86126ab1dd4 update enmi-conf
ymh <ymh.work@gmail.com>
parents: 7
diff changeset
   185
        unset($parser);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
        restore_error_handler();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
        return $ret;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
    function start_element($parser, $name, $attrs) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   194
        $name_parts = explode(":", $name);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   195
        $tag        = array_pop($name_parts);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
        switch($name) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
            case $this->NS . ':feed':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
                $this->current = $this->feed;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
                break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
            case $this->NS . ':entry':
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
                $this->current = new AtomEntry();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
                break;
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
        $this->_p("start_element('$name')");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
        #$this->_p(print_r($this->ns_contexts,true));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
        #$this->_p('current(' . $this->current . ')');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
        array_unshift($this->ns_contexts, $this->ns_decls);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
        $this->depth++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
            $this->content_ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
            if($this->is_html || $this->is_text)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
                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
   220
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
            $attrs_prefix = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
            // resolve prefixes for attributes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
            foreach($attrs as $key => $value) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
                $with_prefix = $this->ns_to_prefix($key, true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
                $attrs_prefix[$with_prefix[1]] = $this->xml_escape($value);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
            $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
   230
            if(strlen($attrs_str) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
                $attrs_str = " " . $attrs_str;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
            $with_prefix = $this->ns_to_prefix($name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
            if(!$this->is_declared_content_ns($with_prefix[0])) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
                array_push($this->content_ns_decls, $with_prefix[0]);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
            $xmlns_str = '';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
            if(count($this->content_ns_decls) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
                array_unshift($this->content_ns_contexts, $this->content_ns_decls);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
                $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
   244
                if(strlen($xmlns_str) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
                    $xmlns_str = " " . $xmlns_str;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
            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
   250
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
        } 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
   252
            $this->in_content = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
            $this->is_xhtml = $attrs['type'] == 'xhtml';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
            $this->is_html = $attrs['type'] == 'html' || $attrs['type'] == 'text/html';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
            $this->is_text = !in_array('type',array_keys($attrs)) || $attrs['type'] == 'text';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
            $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
   257
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
            if(in_array('src',array_keys($attrs))) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
                $this->current->$tag = $attrs;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
                array_push($this->in_content, array($tag,$this->depth, $type));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
        } else if($tag == 'link') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
            array_push($this->current->links, $attrs);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
        } else if($tag == 'category') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
            array_push($this->current->categories, $attrs);
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
        $this->ns_decls = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
    function end_element($parser, $name) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
18
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   274
        $name_parts = explode(":", $name);
be944660c56a Site enmi version 09/2022
ymh <ymh.work@gmail.com>
parents: 16
diff changeset
   275
        $tag        = array_pop($name_parts);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
        $ccount = count($this->in_content);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
        # if we are *in* content, then let's proceed to serialize it
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
            # if we are ending the original content element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
            # then let's finalize the content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
            if($this->in_content[0][0] == $tag &&
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
                $this->in_content[0][1] == $this->depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
                $origtype = $this->in_content[0][2];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
                array_shift($this->in_content);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
                $newcontent = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
                foreach($this->in_content as $c) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
                    if(count($c) == 3) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
                        array_push($newcontent, $c[2]);
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
                        if($this->is_xhtml || $this->is_text) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
                            array_push($newcontent, $this->xml_escape($c));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
                        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
                            array_push($newcontent, $c);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
                        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
                    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
                if(in_array($tag, $this->ATOM_CONTENT_ELEMENTS)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
                    $this->current->$tag = array($origtype, join('',$newcontent));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
                } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
                    $this->current->$tag = join('',$newcontent);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
                }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
                $this->in_content = array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
            } else if($this->in_content[$ccount-1][0] == $tag &&
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
                $this->in_content[$ccount-1][1] == $this->depth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
                $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
   308
            } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
                # else, just finalize the current element's content
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
                $endtag = $this->ns_to_prefix($name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
                array_push($this->in_content, array($tag, $this->depth, "</$endtag[1]>"));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
        array_shift($this->ns_contexts);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
        $this->depth--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
        if($name == ($this->NS . ':entry')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
            array_push($this->feed->entries, $this->current);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
            $this->current = null;
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
        $this->_p("end_element('$name')");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
    function start_ns($parser, $prefix, $uri) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
        $this->_p("starting: " . $prefix . ":" . $uri);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
        array_push($this->ns_decls, array($prefix,$uri));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
    function end_ns($parser, $prefix) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
        $this->_p("ending: #" . $prefix . "#");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
    function cdata($parser, $data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
        $this->_p("data: #" . str_replace(array("\n"), array("\\n"), trim($data)) . "#");
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
        if(!empty($this->in_content)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
            array_push($this->in_content, $data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
    function _default($parser, $data) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
        # when does this gets called?
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
    function ns_to_prefix($qname, $attr=false) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
        # 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
   350
        $components = explode(":", $qname);
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
        # grab the last one (e.g 'div')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
        $name = array_pop($components);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
        if(!empty($components)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
            # re-join back the namespace component
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
            $ns = join(":",$components);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
            foreach($this->ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
                foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
                    if($mapping[1] == $ns && strlen($mapping[0]) > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
                        return array($mapping, "$mapping[0]:$name");
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
            }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
        }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
        if($attr) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
            return array(null, $name);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
        } else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
            foreach($this->ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
                foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
                    if(strlen($mapping[0]) == 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
                        return array($mapping, $name);
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
        }
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
    function is_declared_content_ns($new_mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
        foreach($this->content_ns_contexts as $context) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
            foreach($context as $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
                if($new_mapping == $mapping) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
                    return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
                }
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
        return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
    function xml_escape($string)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
    {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
             return str_replace(array('&','"',"'",'<','>'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
                array('&amp;','&quot;','&apos;','&lt;','&gt;'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
                $string );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
    }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
}