WordPress.org

Make WordPress Core

Changeset 19890


Ignore:
Timestamp:
02/09/2012 08:15:22 PM (8 years ago)
Author:
ryan
Message:

Upgrade SimplePie to 1.2.1. Props nacin. fixes #18309

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/class-simplepie.php

    r16699 r19890  
    11<?php
    2 if ( !class_exists( 'SimplePie' ) ) :
     2if ( ! class_exists( 'SimplePie' ) ) :
    33/**
    44 * SimplePie
     
    77 * Takes the hard work out of managing a complete RSS/Atom solution.
    88 *
    9  * Copyright (c) 2004-2009, Ryan Parman and Geoffrey Sneddon
     9 * Copyright (c) 2004-2011, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
    1010 * All rights reserved.
    1111 *
     
    3535 *
    3636 * @package SimplePie
    37  * @version 1.2
    38  * @copyright 2004-2009 Ryan Parman, Geoffrey Sneddon
     37 * @version 1.2.1
     38 * @copyright 2004-2011 Ryan Parman, Geoffrey Sneddon, Ryan McCue
    3939 * @author Ryan Parman
    4040 * @author Geoffrey Sneddon
     41 * @author Ryan McCue
    4142 * @link http://simplepie.org/ SimplePie
    4243 * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums
     
    5354 * SimplePie Version
    5455 */
    55 define('SIMPLEPIE_VERSION', '1.2');
     56define('SIMPLEPIE_VERSION', '1.2.1');
    5657
    5758/**
    5859 * SimplePie Build
    5960 */
    60 define('SIMPLEPIE_BUILD', '20090627192103');
     61define('SIMPLEPIE_BUILD', '20111015034325');
    6162
    6263/**
     
    16731674                                if (!$cache->save($this))
    16741675                                {
    1675                                     trigger_error("$this->cache_location is not writeable", E_USER_WARNING);
     1676                                    trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
    16761677                                }
    16771678                                $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc');
     
    16811682                        else
    16821683                        {
    1683                             $this->error = "A feed could not be found at $this->feed_url";
     1684                            $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
    16841685                            SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
    16851686                            return false;
     
    17781779                            if ($cache && !$cache->save($this))
    17791780                            {
    1780                                 trigger_error("$cache->name is not writeable", E_USER_WARNING);
     1781                                trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
    17811782                            }
    17821783                            return true;
     
    17841785                        else
    17851786                        {
    1786                             $this->error = "A feed could not be found at $this->feed_url";
     1787                            $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
    17871788                            SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
    17881789                            return false;
     
    17911792                }
    17921793            }
    1793             if(isset($parser))
     1794            if (isset($parser))
    17941795            {
    17951796                // We have an error, just set SimplePie_Misc::error to it and quit
    1796                 $this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
     1797                $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
    17971798            }
    17981799            else
    17991800            {
    1800                 $this->error = 'The data could not be converted to UTF-8';
     1801                $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
    18011802            }
    18021803            SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__);
     
    18321833
    18331834    /**
    1834      * Return the error message for the occurred error
     1835     * Return the error message for the occured error
    18351836     *
    18361837     * @access public
     
    19851986                            else
    19861987                            {
    1987                                 trigger_error("$cache->name is not writeable", E_USER_WARNING);
     1988                                trigger_error("$cache->name is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
    19881989                                return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI);
    19891990                            }
     
    27752776    function get_latitude()
    27762777    {
     2778       
    27772779        if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))
    27782780        {
    27792781            return (float) $return[0]['data'];
    27802782        }
    2781         elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     2783        elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    27822784        {
    27832785            return (float) $match[1];
     
    27992801            return (float) $return[0]['data'];
    28002802        }
    2801         elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     2803        elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    28022804        {
    28032805            return (float) $match[2];
     
    32793281            return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    32803282        }
     3283        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
     3284        {
     3285            return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
     3286        }
     3287
    32813288        elseif (!$description_only)
    32823289        {
     
    36433650            return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);
    36443651        }
    3645         elseif (($date = $this->get_date('U')) !== null)
     3652        elseif (($date = $this->get_date('U')) !== null && $date !== false)
    36463653        {
    36473654            return strftime($date_format, $date);
     
    44294436            foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)
    44304437            {
    4431                 // If we have media:content tags, loop through them.
    4432                 foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
    4433                 {
    4434                     if (isset($content['attribs']['']['url']))
     4438                if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
     4439                {
     4440                    // If we have media:content tags, loop through them.
     4441                    foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
     4442                    {
     4443                        if (isset($content['attribs']['']['url']))
     4444                        {
     4445                            // Attributes
     4446                            $bitrate = null;
     4447                            $channels = null;
     4448                            $duration = null;
     4449                            $expression = null;
     4450                            $framerate = null;
     4451                            $height = null;
     4452                            $javascript = null;
     4453                            $lang = null;
     4454                            $length = null;
     4455                            $medium = null;
     4456                            $samplingrate = null;
     4457                            $type = null;
     4458                            $url = null;
     4459                            $width = null;
     4460
     4461                            // Elements
     4462                            $captions = null;
     4463                            $categories = null;
     4464                            $copyrights = null;
     4465                            $credits = null;
     4466                            $description = null;
     4467                            $hashes = null;
     4468                            $keywords = null;
     4469                            $player = null;
     4470                            $ratings = null;
     4471                            $restrictions = null;
     4472                            $thumbnails = null;
     4473                            $title = null;
     4474
     4475                            // Start checking the attributes of media:content
     4476                            if (isset($content['attribs']['']['bitrate']))
     4477                            {
     4478                                $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
     4479                            }
     4480                            if (isset($content['attribs']['']['channels']))
     4481                            {
     4482                                $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
     4483                            }
     4484                            if (isset($content['attribs']['']['duration']))
     4485                            {
     4486                                $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
     4487                            }
     4488                            else
     4489                            {
     4490                                $duration = $duration_parent;
     4491                            }
     4492                            if (isset($content['attribs']['']['expression']))
     4493                            {
     4494                                $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
     4495                            }
     4496                            if (isset($content['attribs']['']['framerate']))
     4497                            {
     4498                                $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
     4499                            }
     4500                            if (isset($content['attribs']['']['height']))
     4501                            {
     4502                                $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
     4503                            }
     4504                            if (isset($content['attribs']['']['lang']))
     4505                            {
     4506                                $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
     4507                            }
     4508                            if (isset($content['attribs']['']['fileSize']))
     4509                            {
     4510                                $length = ceil($content['attribs']['']['fileSize']);
     4511                            }
     4512                            if (isset($content['attribs']['']['medium']))
     4513                            {
     4514                                $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
     4515                            }
     4516                            if (isset($content['attribs']['']['samplingrate']))
     4517                            {
     4518                                $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
     4519                            }
     4520                            if (isset($content['attribs']['']['type']))
     4521                            {
     4522                                $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
     4523                            }
     4524                            if (isset($content['attribs']['']['width']))
     4525                            {
     4526                                $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
     4527                            }
     4528                            $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
     4529
     4530                            // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
     4531
     4532                            // CAPTIONS
     4533                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
     4534                            {
     4535                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
     4536                                {
     4537                                    $caption_type = null;
     4538                                    $caption_lang = null;
     4539                                    $caption_startTime = null;
     4540                                    $caption_endTime = null;
     4541                                    $caption_text = null;
     4542                                    if (isset($caption['attribs']['']['type']))
     4543                                    {
     4544                                        $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
     4545                                    }
     4546                                    if (isset($caption['attribs']['']['lang']))
     4547                                    {
     4548                                        $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
     4549                                    }
     4550                                    if (isset($caption['attribs']['']['start']))
     4551                                    {
     4552                                        $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
     4553                                    }
     4554                                    if (isset($caption['attribs']['']['end']))
     4555                                    {
     4556                                        $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
     4557                                    }
     4558                                    if (isset($caption['data']))
     4559                                    {
     4560                                        $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4561                                    }
     4562                                    $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
     4563                                }
     4564                                if (is_array($captions))
     4565                                {
     4566                                    $captions = array_values(SimplePie_Misc::array_unique($captions));
     4567                                }
     4568                            }
     4569                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
     4570                            {
     4571                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
     4572                                {
     4573                                    $caption_type = null;
     4574                                    $caption_lang = null;
     4575                                    $caption_startTime = null;
     4576                                    $caption_endTime = null;
     4577                                    $caption_text = null;
     4578                                    if (isset($caption['attribs']['']['type']))
     4579                                    {
     4580                                        $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
     4581                                    }
     4582                                    if (isset($caption['attribs']['']['lang']))
     4583                                    {
     4584                                        $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
     4585                                    }
     4586                                    if (isset($caption['attribs']['']['start']))
     4587                                    {
     4588                                        $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
     4589                                    }
     4590                                    if (isset($caption['attribs']['']['end']))
     4591                                    {
     4592                                        $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
     4593                                    }
     4594                                    if (isset($caption['data']))
     4595                                    {
     4596                                        $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4597                                    }
     4598                                    $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
     4599                                }
     4600                                if (is_array($captions))
     4601                                {
     4602                                    $captions = array_values(SimplePie_Misc::array_unique($captions));
     4603                                }
     4604                            }
     4605                            else
     4606                            {
     4607                                $captions = $captions_parent;
     4608                            }
     4609
     4610                            // CATEGORIES
     4611                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
     4612                            {
     4613                                foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
     4614                                {
     4615                                    $term = null;
     4616                                    $scheme = null;
     4617                                    $label = null;
     4618                                    if (isset($category['data']))
     4619                                    {
     4620                                        $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4621                                    }
     4622                                    if (isset($category['attribs']['']['scheme']))
     4623                                    {
     4624                                        $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4625                                    }
     4626                                    else
     4627                                    {
     4628                                        $scheme = 'http://search.yahoo.com/mrss/category_schema';
     4629                                    }
     4630                                    if (isset($category['attribs']['']['label']))
     4631                                    {
     4632                                        $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
     4633                                    }
     4634                                    $categories[] =& new $this->feed->category_class($term, $scheme, $label);
     4635                                }
     4636                            }
     4637                            if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
     4638                            {
     4639                                foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
     4640                                {
     4641                                    $term = null;
     4642                                    $scheme = null;
     4643                                    $label = null;
     4644                                    if (isset($category['data']))
     4645                                    {
     4646                                        $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4647                                    }
     4648                                    if (isset($category['attribs']['']['scheme']))
     4649                                    {
     4650                                        $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4651                                    }
     4652                                    else
     4653                                    {
     4654                                        $scheme = 'http://search.yahoo.com/mrss/category_schema';
     4655                                    }
     4656                                    if (isset($category['attribs']['']['label']))
     4657                                    {
     4658                                        $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
     4659                                    }
     4660                                    $categories[] =& new $this->feed->category_class($term, $scheme, $label);
     4661                                }
     4662                            }
     4663                            if (is_array($categories) && is_array($categories_parent))
     4664                            {
     4665                                $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
     4666                            }
     4667                            elseif (is_array($categories))
     4668                            {
     4669                                $categories = array_values(SimplePie_Misc::array_unique($categories));
     4670                            }
     4671                            elseif (is_array($categories_parent))
     4672                            {
     4673                                $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
     4674                            }
     4675
     4676                            // COPYRIGHTS
     4677                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
     4678                            {
     4679                                $copyright_url = null;
     4680                                $copyright_label = null;
     4681                                if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
     4682                                {
     4683                                    $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
     4684                                }
     4685                                if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
     4686                                {
     4687                                    $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4688                                }
     4689                                $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
     4690                            }
     4691                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
     4692                            {
     4693                                $copyright_url = null;
     4694                                $copyright_label = null;
     4695                                if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
     4696                                {
     4697                                    $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
     4698                                }
     4699                                if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
     4700                                {
     4701                                    $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4702                                }
     4703                                $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
     4704                            }
     4705                            else
     4706                            {
     4707                                $copyrights = $copyrights_parent;
     4708                            }
     4709
     4710                            // CREDITS
     4711                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
     4712                            {
     4713                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
     4714                                {
     4715                                    $credit_role = null;
     4716                                    $credit_scheme = null;
     4717                                    $credit_name = null;
     4718                                    if (isset($credit['attribs']['']['role']))
     4719                                    {
     4720                                        $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
     4721                                    }
     4722                                    if (isset($credit['attribs']['']['scheme']))
     4723                                    {
     4724                                        $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4725                                    }
     4726                                    else
     4727                                    {
     4728                                        $credit_scheme = 'urn:ebu';
     4729                                    }
     4730                                    if (isset($credit['data']))
     4731                                    {
     4732                                        $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4733                                    }
     4734                                    $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
     4735                                }
     4736                                if (is_array($credits))
     4737                                {
     4738                                    $credits = array_values(SimplePie_Misc::array_unique($credits));
     4739                                }
     4740                            }
     4741                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
     4742                            {
     4743                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
     4744                                {
     4745                                    $credit_role = null;
     4746                                    $credit_scheme = null;
     4747                                    $credit_name = null;
     4748                                    if (isset($credit['attribs']['']['role']))
     4749                                    {
     4750                                        $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
     4751                                    }
     4752                                    if (isset($credit['attribs']['']['scheme']))
     4753                                    {
     4754                                        $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4755                                    }
     4756                                    else
     4757                                    {
     4758                                        $credit_scheme = 'urn:ebu';
     4759                                    }
     4760                                    if (isset($credit['data']))
     4761                                    {
     4762                                        $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4763                                    }
     4764                                    $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
     4765                                }
     4766                                if (is_array($credits))
     4767                                {
     4768                                    $credits = array_values(SimplePie_Misc::array_unique($credits));
     4769                                }
     4770                            }
     4771                            else
     4772                            {
     4773                                $credits = $credits_parent;
     4774                            }
     4775
     4776                            // DESCRIPTION
     4777                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
     4778                            {
     4779                                $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4780                            }
     4781                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
     4782                            {
     4783                                $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4784                            }
     4785                            else
     4786                            {
     4787                                $description = $description_parent;
     4788                            }
     4789
     4790                            // HASHES
     4791                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
     4792                            {
     4793                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
     4794                                {
     4795                                    $value = null;
     4796                                    $algo = null;
     4797                                    if (isset($hash['data']))
     4798                                    {
     4799                                        $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4800                                    }
     4801                                    if (isset($hash['attribs']['']['algo']))
     4802                                    {
     4803                                        $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
     4804                                    }
     4805                                    else
     4806                                    {
     4807                                        $algo = 'md5';
     4808                                    }
     4809                                    $hashes[] = $algo.':'.$value;
     4810                                }
     4811                                if (is_array($hashes))
     4812                                {
     4813                                    $hashes = array_values(SimplePie_Misc::array_unique($hashes));
     4814                                }
     4815                            }
     4816                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
     4817                            {
     4818                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
     4819                                {
     4820                                    $value = null;
     4821                                    $algo = null;
     4822                                    if (isset($hash['data']))
     4823                                    {
     4824                                        $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4825                                    }
     4826                                    if (isset($hash['attribs']['']['algo']))
     4827                                    {
     4828                                        $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
     4829                                    }
     4830                                    else
     4831                                    {
     4832                                        $algo = 'md5';
     4833                                    }
     4834                                    $hashes[] = $algo.':'.$value;
     4835                                }
     4836                                if (is_array($hashes))
     4837                                {
     4838                                    $hashes = array_values(SimplePie_Misc::array_unique($hashes));
     4839                                }
     4840                            }
     4841                            else
     4842                            {
     4843                                $hashes = $hashes_parent;
     4844                            }
     4845
     4846                            // KEYWORDS
     4847                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
     4848                            {
     4849                                if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
     4850                                {
     4851                                    $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
     4852                                    foreach ($temp as $word)
     4853                                    {
     4854                                        $keywords[] = trim($word);
     4855                                    }
     4856                                    unset($temp);
     4857                                }
     4858                                if (is_array($keywords))
     4859                                {
     4860                                    $keywords = array_values(SimplePie_Misc::array_unique($keywords));
     4861                                }
     4862                            }
     4863                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
     4864                            {
     4865                                if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
     4866                                {
     4867                                    $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
     4868                                    foreach ($temp as $word)
     4869                                    {
     4870                                        $keywords[] = trim($word);
     4871                                    }
     4872                                    unset($temp);
     4873                                }
     4874                                if (is_array($keywords))
     4875                                {
     4876                                    $keywords = array_values(SimplePie_Misc::array_unique($keywords));
     4877                                }
     4878                            }
     4879                            else
     4880                            {
     4881                                $keywords = $keywords_parent;
     4882                            }
     4883
     4884                            // PLAYER
     4885                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
     4886                            {
     4887                                $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
     4888                            }
     4889                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
     4890                            {
     4891                                $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
     4892                            }
     4893                            else
     4894                            {
     4895                                $player = $player_parent;
     4896                            }
     4897
     4898                            // RATINGS
     4899                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
     4900                            {
     4901                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
     4902                                {
     4903                                    $rating_scheme = null;
     4904                                    $rating_value = null;
     4905                                    if (isset($rating['attribs']['']['scheme']))
     4906                                    {
     4907                                        $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4908                                    }
     4909                                    else
     4910                                    {
     4911                                        $rating_scheme = 'urn:simple';
     4912                                    }
     4913                                    if (isset($rating['data']))
     4914                                    {
     4915                                        $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4916                                    }
     4917                                    $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
     4918                                }
     4919                                if (is_array($ratings))
     4920                                {
     4921                                    $ratings = array_values(SimplePie_Misc::array_unique($ratings));
     4922                                }
     4923                            }
     4924                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
     4925                            {
     4926                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
     4927                                {
     4928                                    $rating_scheme = null;
     4929                                    $rating_value = null;
     4930                                    if (isset($rating['attribs']['']['scheme']))
     4931                                    {
     4932                                        $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
     4933                                    }
     4934                                    else
     4935                                    {
     4936                                        $rating_scheme = 'urn:simple';
     4937                                    }
     4938                                    if (isset($rating['data']))
     4939                                    {
     4940                                        $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4941                                    }
     4942                                    $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
     4943                                }
     4944                                if (is_array($ratings))
     4945                                {
     4946                                    $ratings = array_values(SimplePie_Misc::array_unique($ratings));
     4947                                }
     4948                            }
     4949                            else
     4950                            {
     4951                                $ratings = $ratings_parent;
     4952                            }
     4953
     4954                            // RESTRICTIONS
     4955                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
     4956                            {
     4957                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
     4958                                {
     4959                                    $restriction_relationship = null;
     4960                                    $restriction_type = null;
     4961                                    $restriction_value = null;
     4962                                    if (isset($restriction['attribs']['']['relationship']))
     4963                                    {
     4964                                        $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
     4965                                    }
     4966                                    if (isset($restriction['attribs']['']['type']))
     4967                                    {
     4968                                        $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
     4969                                    }
     4970                                    if (isset($restriction['data']))
     4971                                    {
     4972                                        $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4973                                    }
     4974                                    $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
     4975                                }
     4976                                if (is_array($restrictions))
     4977                                {
     4978                                    $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
     4979                                }
     4980                            }
     4981                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
     4982                            {
     4983                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
     4984                                {
     4985                                    $restriction_relationship = null;
     4986                                    $restriction_type = null;
     4987                                    $restriction_value = null;
     4988                                    if (isset($restriction['attribs']['']['relationship']))
     4989                                    {
     4990                                        $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
     4991                                    }
     4992                                    if (isset($restriction['attribs']['']['type']))
     4993                                    {
     4994                                        $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
     4995                                    }
     4996                                    if (isset($restriction['data']))
     4997                                    {
     4998                                        $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     4999                                    }
     5000                                    $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
     5001                                }
     5002                                if (is_array($restrictions))
     5003                                {
     5004                                    $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
     5005                                }
     5006                            }
     5007                            else
     5008                            {
     5009                                $restrictions = $restrictions_parent;
     5010                            }
     5011
     5012                            // THUMBNAILS
     5013                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
     5014                            {
     5015                                foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
     5016                                {
     5017                                    $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
     5018                                }
     5019                                if (is_array($thumbnails))
     5020                                {
     5021                                    $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
     5022                                }
     5023                            }
     5024                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
     5025                            {
     5026                                foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
     5027                                {
     5028                                    $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
     5029                                }
     5030                                if (is_array($thumbnails))
     5031                                {
     5032                                    $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
     5033                                }
     5034                            }
     5035                            else
     5036                            {
     5037                                $thumbnails = $thumbnails_parent;
     5038                            }
     5039
     5040                            // TITLES
     5041                            if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
     5042                            {
     5043                                $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     5044                            }
     5045                            elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
     5046                            {
     5047                                $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
     5048                            }
     5049                            else
     5050                            {
     5051                                $title = $title_parent;
     5052                            }
     5053
     5054                            $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
     5055                        }
     5056                    }
     5057                }
     5058            }
     5059
     5060            // If we have standalone media:content tags, loop through them.
     5061            if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
     5062            {
     5063                foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
     5064                {
     5065                    if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
    44355066                    {
    44365067                        // Attributes
     
    45175148                            $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
    45185149                        }
    4519                         $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    4520 
    4521                         // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
    4522 
    4523                         // CAPTIONS
    4524                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
     5150                        if (isset($content['attribs']['']['url']))
    45255151                        {
    4526                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
    4527                             {
    4528                                 $caption_type = null;
    4529                                 $caption_lang = null;
    4530                                 $caption_startTime = null;
    4531                                 $caption_endTime = null;
    4532                                 $caption_text = null;
    4533                                 if (isset($caption['attribs']['']['type']))
    4534                                 {
    4535                                     $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
    4536                                 }
    4537                                 if (isset($caption['attribs']['']['lang']))
    4538                                 {
    4539                                     $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
    4540                                 }
    4541                                 if (isset($caption['attribs']['']['start']))
    4542                                 {
    4543                                     $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
    4544                                 }
    4545                                 if (isset($caption['attribs']['']['end']))
    4546                                 {
    4547                                     $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
    4548                                 }
    4549                                 if (isset($caption['data']))
    4550                                 {
    4551                                     $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4552                                 }
    4553                                 $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
    4554                             }
    4555                             if (is_array($captions))
    4556                             {
    4557                                 $captions = array_values(SimplePie_Misc::array_unique($captions));
    4558                             }
     5152                            $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    45595153                        }
    4560                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))
    4561                         {
    4562                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)
    4563                             {
    4564                                 $caption_type = null;
    4565                                 $caption_lang = null;
    4566                                 $caption_startTime = null;
    4567                                 $caption_endTime = null;
    4568                                 $caption_text = null;
    4569                                 if (isset($caption['attribs']['']['type']))
    4570                                 {
    4571                                     $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
    4572                                 }
    4573                                 if (isset($caption['attribs']['']['lang']))
    4574                                 {
    4575                                     $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
    4576                                 }
    4577                                 if (isset($caption['attribs']['']['start']))
    4578                                 {
    4579                                     $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);
    4580                                 }
    4581                                 if (isset($caption['attribs']['']['end']))
    4582                                 {
    4583                                     $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);
    4584                                 }
    4585                                 if (isset($caption['data']))
    4586                                 {
    4587                                     $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4588                                 }
    4589                                 $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text);
    4590                             }
    4591                             if (is_array($captions))
    4592                             {
    4593                                 $captions = array_values(SimplePie_Misc::array_unique($captions));
    4594                             }
    4595                         }
    4596                         else
    4597                         {
    4598                             $captions = $captions_parent;
    4599                         }
    4600 
    4601                         // CATEGORIES
    4602                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
    4603                         {
    4604                             foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
    4605                             {
    4606                                 $term = null;
    4607                                 $scheme = null;
    4608                                 $label = null;
    4609                                 if (isset($category['data']))
    4610                                 {
    4611                                     $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4612                                 }
    4613                                 if (isset($category['attribs']['']['scheme']))
    4614                                 {
    4615                                     $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4616                                 }
    4617                                 else
    4618                                 {
    4619                                     $scheme = 'http://search.yahoo.com/mrss/category_schema';
    4620                                 }
    4621                                 if (isset($category['attribs']['']['label']))
    4622                                 {
    4623                                     $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
    4624                                 }
    4625                                 $categories[] =& new $this->feed->category_class($term, $scheme, $label);
    4626                             }
    4627                         }
    4628                         if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))
    4629                         {
    4630                             foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)
    4631                             {
    4632                                 $term = null;
    4633                                 $scheme = null;
    4634                                 $label = null;
    4635                                 if (isset($category['data']))
    4636                                 {
    4637                                     $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4638                                 }
    4639                                 if (isset($category['attribs']['']['scheme']))
    4640                                 {
    4641                                     $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4642                                 }
    4643                                 else
    4644                                 {
    4645                                     $scheme = 'http://search.yahoo.com/mrss/category_schema';
    4646                                 }
    4647                                 if (isset($category['attribs']['']['label']))
    4648                                 {
    4649                                     $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
    4650                                 }
    4651                                 $categories[] =& new $this->feed->category_class($term, $scheme, $label);
    4652                             }
    4653                         }
    4654                         if (is_array($categories) && is_array($categories_parent))
    4655                         {
    4656                             $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent)));
    4657                         }
    4658                         elseif (is_array($categories))
    4659                         {
    4660                             $categories = array_values(SimplePie_Misc::array_unique($categories));
    4661                         }
    4662                         elseif (is_array($categories_parent))
    4663                         {
    4664                             $categories = array_values(SimplePie_Misc::array_unique($categories_parent));
    4665                         }
    4666 
    4667                         // COPYRIGHTS
    4668                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
    4669                         {
    4670                             $copyright_url = null;
    4671                             $copyright_label = null;
    4672                             if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
    4673                             {
    4674                                 $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
    4675                             }
    4676                             if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
    4677                             {
    4678                                 $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4679                             }
    4680                             $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
    4681                         }
    4682                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))
    4683                         {
    4684                             $copyright_url = null;
    4685                             $copyright_label = null;
    4686                             if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))
    4687                             {
    4688                                 $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);
    4689                             }
    4690                             if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))
    4691                             {
    4692                                 $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4693                             }
    4694                             $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label);
    4695                         }
    4696                         else
    4697                         {
    4698                             $copyrights = $copyrights_parent;
    4699                         }
    4700 
    4701                         // CREDITS
    4702                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
    4703                         {
    4704                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
    4705                             {
    4706                                 $credit_role = null;
    4707                                 $credit_scheme = null;
    4708                                 $credit_name = null;
    4709                                 if (isset($credit['attribs']['']['role']))
    4710                                 {
    4711                                     $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
    4712                                 }
    4713                                 if (isset($credit['attribs']['']['scheme']))
    4714                                 {
    4715                                     $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4716                                 }
    4717                                 else
    4718                                 {
    4719                                     $credit_scheme = 'urn:ebu';
    4720                                 }
    4721                                 if (isset($credit['data']))
    4722                                 {
    4723                                     $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4724                                 }
    4725                                 $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
    4726                             }
    4727                             if (is_array($credits))
    4728                             {
    4729                                 $credits = array_values(SimplePie_Misc::array_unique($credits));
    4730                             }
    4731                         }
    4732                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))
    4733                         {
    4734                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)
    4735                             {
    4736                                 $credit_role = null;
    4737                                 $credit_scheme = null;
    4738                                 $credit_name = null;
    4739                                 if (isset($credit['attribs']['']['role']))
    4740                                 {
    4741                                     $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);
    4742                                 }
    4743                                 if (isset($credit['attribs']['']['scheme']))
    4744                                 {
    4745                                     $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4746                                 }
    4747                                 else
    4748                                 {
    4749                                     $credit_scheme = 'urn:ebu';
    4750                                 }
    4751                                 if (isset($credit['data']))
    4752                                 {
    4753                                     $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4754                                 }
    4755                                 $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name);
    4756                             }
    4757                             if (is_array($credits))
    4758                             {
    4759                                 $credits = array_values(SimplePie_Misc::array_unique($credits));
    4760                             }
    4761                         }
    4762                         else
    4763                         {
    4764                             $credits = $credits_parent;
    4765                         }
    4766 
    4767                         // DESCRIPTION
    4768                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
    4769                         {
    4770                             $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4771                         }
    4772                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))
    4773                         {
    4774                             $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4775                         }
    4776                         else
    4777                         {
    4778                             $description = $description_parent;
    4779                         }
    4780 
    4781                         // HASHES
    4782                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
    4783                         {
    4784                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
    4785                             {
    4786                                 $value = null;
    4787                                 $algo = null;
    4788                                 if (isset($hash['data']))
    4789                                 {
    4790                                     $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4791                                 }
    4792                                 if (isset($hash['attribs']['']['algo']))
    4793                                 {
    4794                                     $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
    4795                                 }
    4796                                 else
    4797                                 {
    4798                                     $algo = 'md5';
    4799                                 }
    4800                                 $hashes[] = $algo.':'.$value;
    4801                             }
    4802                             if (is_array($hashes))
    4803                             {
    4804                                 $hashes = array_values(SimplePie_Misc::array_unique($hashes));
    4805                             }
    4806                         }
    4807                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))
    4808                         {
    4809                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)
    4810                             {
    4811                                 $value = null;
    4812                                 $algo = null;
    4813                                 if (isset($hash['data']))
    4814                                 {
    4815                                     $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4816                                 }
    4817                                 if (isset($hash['attribs']['']['algo']))
    4818                                 {
    4819                                     $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);
    4820                                 }
    4821                                 else
    4822                                 {
    4823                                     $algo = 'md5';
    4824                                 }
    4825                                 $hashes[] = $algo.':'.$value;
    4826                             }
    4827                             if (is_array($hashes))
    4828                             {
    4829                                 $hashes = array_values(SimplePie_Misc::array_unique($hashes));
    4830                             }
    4831                         }
    4832                         else
    4833                         {
    4834                             $hashes = $hashes_parent;
    4835                         }
    4836 
    4837                         // KEYWORDS
    4838                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
    4839                         {
    4840                             if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
    4841                             {
    4842                                 $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
    4843                                 foreach ($temp as $word)
    4844                                 {
    4845                                     $keywords[] = trim($word);
    4846                                 }
    4847                                 unset($temp);
    4848                             }
    4849                             if (is_array($keywords))
    4850                             {
    4851                                 $keywords = array_values(SimplePie_Misc::array_unique($keywords));
    4852                             }
    4853                         }
    4854                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))
    4855                         {
    4856                             if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))
    4857                             {
    4858                                 $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));
    4859                                 foreach ($temp as $word)
    4860                                 {
    4861                                     $keywords[] = trim($word);
    4862                                 }
    4863                                 unset($temp);
    4864                             }
    4865                             if (is_array($keywords))
    4866                             {
    4867                                 $keywords = array_values(SimplePie_Misc::array_unique($keywords));
    4868                             }
    4869                         }
    4870                         else
    4871                         {
    4872                             $keywords = $keywords_parent;
    4873                         }
    4874 
    4875                         // PLAYER
    4876                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
    4877                         {
    4878                             $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    4879                         }
    4880                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
    4881                         {
    4882                             $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    4883                         }
    4884                         else
    4885                         {
    4886                             $player = $player_parent;
    4887                         }
    4888 
    4889                         // RATINGS
    4890                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
    4891                         {
    4892                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
    4893                             {
    4894                                 $rating_scheme = null;
    4895                                 $rating_value = null;
    4896                                 if (isset($rating['attribs']['']['scheme']))
    4897                                 {
    4898                                     $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4899                                 }
    4900                                 else
    4901                                 {
    4902                                     $rating_scheme = 'urn:simple';
    4903                                 }
    4904                                 if (isset($rating['data']))
    4905                                 {
    4906                                     $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4907                                 }
    4908                                 $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
    4909                             }
    4910                             if (is_array($ratings))
    4911                             {
    4912                                 $ratings = array_values(SimplePie_Misc::array_unique($ratings));
    4913                             }
    4914                         }
    4915                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))
    4916                         {
    4917                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)
    4918                             {
    4919                                 $rating_scheme = null;
    4920                                 $rating_value = null;
    4921                                 if (isset($rating['attribs']['']['scheme']))
    4922                                 {
    4923                                     $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);
    4924                                 }
    4925                                 else
    4926                                 {
    4927                                     $rating_scheme = 'urn:simple';
    4928                                 }
    4929                                 if (isset($rating['data']))
    4930                                 {
    4931                                     $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4932                                 }
    4933                                 $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value);
    4934                             }
    4935                             if (is_array($ratings))
    4936                             {
    4937                                 $ratings = array_values(SimplePie_Misc::array_unique($ratings));
    4938                             }
    4939                         }
    4940                         else
    4941                         {
    4942                             $ratings = $ratings_parent;
    4943                         }
    4944 
    4945                         // RESTRICTIONS
    4946                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
    4947                         {
    4948                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
    4949                             {
    4950                                 $restriction_relationship = null;
    4951                                 $restriction_type = null;
    4952                                 $restriction_value = null;
    4953                                 if (isset($restriction['attribs']['']['relationship']))
    4954                                 {
    4955                                     $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
    4956                                 }
    4957                                 if (isset($restriction['attribs']['']['type']))
    4958                                 {
    4959                                     $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
    4960                                 }
    4961                                 if (isset($restriction['data']))
    4962                                 {
    4963                                     $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4964                                 }
    4965                                 $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
    4966                             }
    4967                             if (is_array($restrictions))
    4968                             {
    4969                                 $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
    4970                             }
    4971                         }
    4972                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))
    4973                         {
    4974                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)
    4975                             {
    4976                                 $restriction_relationship = null;
    4977                                 $restriction_type = null;
    4978                                 $restriction_value = null;
    4979                                 if (isset($restriction['attribs']['']['relationship']))
    4980                                 {
    4981                                     $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);
    4982                                 }
    4983                                 if (isset($restriction['attribs']['']['type']))
    4984                                 {
    4985                                     $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
    4986                                 }
    4987                                 if (isset($restriction['data']))
    4988                                 {
    4989                                     $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    4990                                 }
    4991                                 $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value);
    4992                             }
    4993                             if (is_array($restrictions))
    4994                             {
    4995                                 $restrictions = array_values(SimplePie_Misc::array_unique($restrictions));
    4996                             }
    4997                         }
    4998                         else
    4999                         {
    5000                             $restrictions = $restrictions_parent;
    5001                         }
    5002 
    5003                         // THUMBNAILS
    5004                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
    5005                         {
    5006                             foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
    5007                             {
    5008                                 $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    5009                             }
    5010                             if (is_array($thumbnails))
    5011                             {
    5012                                 $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
    5013                             }
    5014                         }
    5015                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))
    5016                         {
    5017                             foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
    5018                             {
    5019                                 $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    5020                             }
    5021                             if (is_array($thumbnails))
    5022                             {
    5023                                 $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails));
    5024                             }
    5025                         }
    5026                         else
    5027                         {
    5028                             $thumbnails = $thumbnails_parent;
    5029                         }
    5030 
    5031                         // TITLES
    5032                         if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
    5033                         {
    5034                             $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    5035                         }
    5036                         elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))
    5037                         {
    5038                             $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
    5039                         }
    5040                         else
    5041                         {
    5042                             $title = $title_parent;
    5043                         }
    5044 
    5045                         $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width);
    5046                     }
    5047                 }
    5048             }
    5049 
    5050             // If we have standalone media:content tags, loop through them.
    5051             if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))
    5052             {
    5053                 foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)
    5054                 {
    5055                     if (isset($content['attribs']['']['url']))
    5056                     {
    5057                         // Attributes
    5058                         $bitrate = null;
    5059                         $channels = null;
    5060                         $duration = null;
    5061                         $expression = null;
    5062                         $framerate = null;
    5063                         $height = null;
    5064                         $javascript = null;
    5065                         $lang = null;
    5066                         $length = null;
    5067                         $medium = null;
    5068                         $samplingrate = null;
    5069                         $type = null;
    5070                         $url = null;
    5071                         $width = null;
    5072 
    5073                         // Elements
    5074                         $captions = null;
    5075                         $categories = null;
    5076                         $copyrights = null;
    5077                         $credits = null;
    5078                         $description = null;
    5079                         $hashes = null;
    5080                         $keywords = null;
    5081                         $player = null;
    5082                         $ratings = null;
    5083                         $restrictions = null;
    5084                         $thumbnails = null;
    5085                         $title = null;
    5086 
    5087                         // Start checking the attributes of media:content
    5088                         if (isset($content['attribs']['']['bitrate']))
    5089                         {
    5090                             $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);
    5091                         }
    5092                         if (isset($content['attribs']['']['channels']))
    5093                         {
    5094                             $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);
    5095                         }
    5096                         if (isset($content['attribs']['']['duration']))
    5097                         {
    5098                             $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);
    5099                         }
    5100                         else
    5101                         {
    5102                             $duration = $duration_parent;
    5103                         }
    5104                         if (isset($content['attribs']['']['expression']))
    5105                         {
    5106                             $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);
    5107                         }
    5108                         if (isset($content['attribs']['']['framerate']))
    5109                         {
    5110                             $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);
    5111                         }
    5112                         if (isset($content['attribs']['']['height']))
    5113                         {
    5114                             $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);
    5115                         }
    5116                         if (isset($content['attribs']['']['lang']))
    5117                         {
    5118                             $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);
    5119                         }
    5120                         if (isset($content['attribs']['']['fileSize']))
    5121                         {
    5122                             $length = ceil($content['attribs']['']['fileSize']);
    5123                         }
    5124                         if (isset($content['attribs']['']['medium']))
    5125                         {
    5126                             $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);
    5127                         }
    5128                         if (isset($content['attribs']['']['samplingrate']))
    5129                         {
    5130                             $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);
    5131                         }
    5132                         if (isset($content['attribs']['']['type']))
    5133                         {
    5134                             $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);
    5135                         }
    5136                         if (isset($content['attribs']['']['width']))
    5137                         {
    5138                             $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);
    5139                         }
    5140                         $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
    5141 
    51425154                        // Checking the other optional media: elements. Priority: media:content, media:group, item, channel
    51435155
     
    55815593            return (float) $return[0]['data'];
    55825594        }
    5583         elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     5595        elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    55845596        {
    55855597            return (float) $match[1];
     
    56015613            return (float) $return[0]['data'];
    56025614        }
    5603         elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     5615        elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    56045616        {
    56055617            return (float) $match[2];
     
    62246236            return (float) $return[0]['data'];
    62256237        }
    6226         elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     6238        elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    62276239        {
    62286240            return (float) $match[1];
     
    62446256            return (float) $return[0]['data'];
    62456257        }
    6246         elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match))
     6258        elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match))
    62476259        {
    62486260            return (float) $match[2];
     
    77287740                $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN;
    77297741                $url_parts = parse_url($url);
     7742                $socket_host = $url_parts['host'];
    77307743                if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https')
    77317744                {
    7732                     $url_parts['host'] = "ssl://$url_parts[host]";
     7745                    $socket_host = "ssl://$url_parts[host]";
    77337746                    $url_parts['port'] = 443;
    77347747                }
     
    77377750                    $url_parts['port'] = 80;
    77387751                }
    7739                 $fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout);
     7752                $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout);
    77407753                if (!$fp)
    77417754                {
     
    84838496                // Get the length of the extra field
    84848497                $len = current(unpack('v', substr($this->compressed_data, $this->position, 2)));
    8485                 $position += 2;
     8498                $this->position += 2;
    84868499
    84878500                // Check the length of the string is still valid
     
    92359248                    break;
    92369249            }
    9237             error_log("$note: $message in $file on line $line", 0);
    9238         }
     9250
     9251            $log_error = true;
     9252            if (!function_exists('error_log'))
     9253            {
     9254                $log_error = false;
     9255            }
     9256
     9257            $log_file = @ini_get('error_log');
     9258            if (!empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file))
     9259            {
     9260                $log_error = false;
     9261            }
     9262
     9263            if ($log_error)
     9264            {
     9265                @error_log("$note: $message in $file on line $line", 0);
     9266            }
     9267        }
     9268
    92399269        return $message;
    92409270    }
     
    94339463        }
    94349464        // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported).
    9435         elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && ($return = @mb_convert_encoding($data, $output, $input)))
     9465        elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && in_array($input, mb_list_encodings()) && ($return = @mb_convert_encoding($data, $output, $input)))
    94369466        {
    94379467            return $return;
     
    94499479    }
    94509480
     9481    /**
     9482     * Normalize an encoding name
     9483     *
     9484     * This is automatically generated by create.php
     9485     *
     9486     * To generate it, run `php create.php` on the command line, and copy the
     9487     * output to replace this function.
     9488     *
     9489     * @param string $charset Character set to standardise
     9490     * @return string Standardised name
     9491     */
    94519492    function encoding($charset)
    94529493    {
     
    94829523            case 'big5':
    94839524            case 'csbig5':
    9484             case 'xxbig5':
    94859525                return 'Big5';
    94869526
     
    96389678                return 'ES2';
    96399679
     9680            case 'cseucpkdfmtjapanese':
     9681            case 'eucjp':
     9682            case 'extendedunixcodepackedformatforjapanese':
     9683                return 'EUC-JP';
     9684
    96409685            case 'cseucfixwidjapanese':
    96419686            case 'extendedunixcodefixedwidthforjapanese':
    96429687                return 'Extended_UNIX_Code_Fixed_Width_for_Japanese';
    9643 
    9644             case 'cseucpkdfmtjapanese':
    9645             case 'eucjp':
    9646             case 'extendedunixcodepackedformatforjapanese':
    9647                 return 'Extended_UNIX_Code_Packed_Format_for_Japanese';
    96489688
    96499689            case 'gb18030':
     
    97249764                return 'IBM-Thai';
    97259765
    9726             case 'ccsid858':
    9727             case 'cp858':
    9728             case 'ibm858':
    9729             case 'pcmultilingual850euro':
    9730                 return 'IBM00858';
    9731 
    9732             case 'ccsid924':
    9733             case 'cp924':
    9734             case 'ebcdiclatin9euro':
    9735             case 'ibm924':
    9736                 return 'IBM00924';
    9737 
    9738             case 'ccsid1140':
    9739             case 'cp1140':
    9740             case 'ebcdicus37euro':
    9741             case 'ibm1140':
    9742                 return 'IBM01140';
    9743 
    9744             case 'ccsid1141':
    9745             case 'cp1141':
    9746             case 'ebcdicde273euro':
    9747             case 'ibm1141':
    9748                 return 'IBM01141';
    9749 
    9750             case 'ccsid1142':
    9751             case 'cp1142':
    9752             case 'ebcdicdk277euro':
    9753             case 'ebcdicno277euro':
    9754             case 'ibm1142':
    9755                 return 'IBM01142';
    9756 
    9757             case 'ccsid1143':
    9758             case 'cp1143':
    9759             case 'ebcdicfi278euro':
    9760             case 'ebcdicse278euro':
    9761             case 'ibm1143':
    9762                 return 'IBM01143';
    9763 
    9764             case 'ccsid1144':
    9765             case 'cp1144':
    9766             case 'ebcdicit280euro':
    9767             case 'ibm1144':
    9768                 return 'IBM01144';
    9769 
    9770             case 'ccsid1145':
    9771             case 'cp1145':
    9772             case 'ebcdices284euro':
    9773             case 'ibm1145':
    9774                 return 'IBM01145';
    9775 
    9776             case 'ccsid1146':
    9777             case 'cp1146':
    9778             case 'ebcdicgb285euro':
    9779             case 'ibm1146':
    9780                 return 'IBM01146';
    9781 
    9782             case 'ccsid1147':
    9783             case 'cp1147':
    9784             case 'ebcdicfr297euro':
    9785             case 'ibm1147':
    9786                 return 'IBM01147';
    9787 
    9788             case 'ccsid1148':
    9789             case 'cp1148':
    9790             case 'ebcdicinternational500euro':
    9791             case 'ibm1148':
    9792                 return 'IBM01148';
    9793 
    9794             case 'ccsid1149':
    9795             case 'cp1149':
    9796             case 'ebcdicis871euro':
    9797             case 'ibm1149':
    9798                 return 'IBM01149';
    9799 
    98009766            case 'cp37':
    98019767            case 'csibm37':
     
    99459911                return 'IBM857';
    99469912
     9913            case 'ccsid858':
     9914            case 'cp858':
     9915            case 'ibm858':
     9916            case 'pcmultilingual850euro':
     9917                return 'IBM00858';
     9918
    99479919            case '860':
    99489920            case 'cp860':
     
    1004710019                return 'IBM918';
    1004810020
     10021            case 'ccsid924':
     10022            case 'cp924':
     10023            case 'ebcdiclatin9euro':
     10024            case 'ibm924':
     10025                return 'IBM00924';
     10026
    1004910027            case 'cp1026':
    1005010028            case 'csibm1026':
     
    1005410032            case 'ibm1047':
    1005510033                return 'IBM1047';
     10034
     10035            case 'ccsid1140':
     10036            case 'cp1140':
     10037            case 'ebcdicus37euro':
     10038            case 'ibm1140':
     10039                return 'IBM01140';
     10040
     10041            case 'ccsid1141':
     10042            case 'cp1141':
     10043            case 'ebcdicde273euro':
     10044            case 'ibm1141':
     10045                return 'IBM01141';
     10046
     10047            case 'ccsid1142':
     10048            case 'cp1142':
     10049            case 'ebcdicdk277euro':
     10050            case 'ebcdicno277euro':
     10051            case 'ibm1142':
     10052                return 'IBM01142';
     10053
     10054            case 'ccsid1143':
     10055            case 'cp1143':
     10056            case 'ebcdicfi278euro':
     10057            case 'ebcdicse278euro':
     10058            case 'ibm1143':
     10059                return 'IBM01143';
     10060
     10061            case 'ccsid1144':
     10062            case 'cp1144':
     10063            case 'ebcdicit280euro':
     10064            case 'ibm1144':
     10065                return 'IBM01144';
     10066
     10067            case 'ccsid1145':
     10068            case 'cp1145':
     10069            case 'ebcdices284euro':
     10070            case 'ibm1145':
     10071                return 'IBM01145';
     10072
     10073            case 'ccsid1146':
     10074            case 'cp1146':
     10075            case 'ebcdicgb285euro':
     10076            case 'ibm1146':
     10077                return 'IBM01146';
     10078
     10079            case 'ccsid1147':
     10080            case 'cp1147':
     10081            case 'ebcdicfr297euro':
     10082            case 'ibm1147':
     10083                return 'IBM01147';
     10084
     10085            case 'ccsid1148':
     10086            case 'cp1148':
     10087            case 'ebcdicinternational500euro':
     10088            case 'ibm1148':
     10089                return 'IBM01148';
     10090
     10091            case 'ccsid1149':
     10092            case 'cp1149':
     10093            case 'ebcdicis871euro':
     10094            case 'ibm1149':
     10095                return 'IBM01149';
    1005610096
    1005710097            case 'csiso143iecp271':
     
    1059610636            case 'sen850200c':
    1059710637                return 'SEN_850200_C';
    10598 
    10599             case 'csshiftjis':
    10600             case 'mskanji':
    10601             case 'shiftjis':
    10602                 return 'Shift_JIS';
    1060310638
    1060410639            case 'csiso102t617bit':
     
    1070010735                return 'VISCII';
    1070110736
     10737            case 'csshiftjis':
    1070210738            case 'cswindows31j':
     10739            case 'mskanji':
     10740            case 'shiftjis':
    1070310741            case 'windows31j':
    1070410742                return 'Windows-31J';
     
    1136011398}
    1136111399        <?php
     11400    }
     11401
     11402
     11403
     11404    /**
     11405     * Format debugging information
     11406     */
     11407    function debug($sp)
     11408    {
     11409        $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n";
     11410        $info .= 'PHP ' . PHP_VERSION . "\n";
     11411        if ($sp->error() !== null)
     11412        {
     11413            $info .= 'Error occurred: ' . $sp->error() . "\n";
     11414        }
     11415        else
     11416        {
     11417            $info .= "No error found.\n";
     11418        }
     11419        $info .= "Extensions:\n";
     11420        $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml');
     11421        foreach ($extensions as $ext)
     11422        {
     11423            if (extension_loaded($ext))
     11424            {
     11425                $info .= "    $ext loaded\n";
     11426                switch ($ext)
     11427                {
     11428                    case 'pcre':
     11429                        $info .= '      Version ' . PCRE_VERSION . "\n";
     11430                        break;
     11431                    case 'curl':
     11432                        $version = curl_version();
     11433                        $info .= '      Version ' . $version['version'] . "\n";
     11434                        break;
     11435                    case 'mbstring':
     11436                        $info .= '      Overloading: ' . mb_get_info('func_overload') . "\n";
     11437                        break;
     11438                    case 'iconv':
     11439                        $info .= '      Version ' . ICONV_VERSION . "\n";
     11440                        break;
     11441                    case 'xml':
     11442                        $info .= '      Version ' . LIBXML_DOTTED_VERSION . "\n";
     11443                        break;
     11444                }
     11445            }
     11446            else
     11447            {
     11448                $info .= "    $ext not loaded\n";
     11449            }
     11450        }
     11451        return $info;
    1136211452    }
    1136311453}
     
    1183211922     * Replace invalid character with percent encoding
    1183311923     *
    11834      * @access private
    1183511924     * @param string $string Input string
    1183611925     * @param string $valid_chars Valid characters
     
    1183811927     * @return string
    1183911928     */
    11840     function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE)
    11841     {
     11929    function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE, $iprivate = false)
     11930    {
     11931        // Normalize as many pct-encoded sections as possible
     11932        $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array(&$this, 'remove_iunreserved_percent_encoded'), $string);
     11933
     11934        // Replace invalid percent characters
     11935        $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string);
     11936
     11937        // Add unreserved and % to $valid_chars (the latter is safe because all
     11938        // pct-encoded sections are now valid).
     11939        $valid_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%';
     11940
     11941        // Now replace any bytes that aren't allowed with their pct-encoded versions
     11942        $position = 0;
     11943        $strlen = strlen($string);
     11944        while (($position += strspn($string, $valid_chars, $position)) < $strlen)
     11945        {
     11946            $value = ord($string[$position]);
     11947
     11948            // Start position
     11949            $start = $position;
     11950
     11951            // By default we are valid
     11952            $valid = true;
     11953
     11954            // No one byte sequences are valid due to the while.
     11955            // Two byte sequence:
     11956            if (($value & 0xE0) === 0xC0)
     11957            {
     11958                $character = ($value & 0x1F) << 6;
     11959                $length = 2;
     11960                $remaining = 1;
     11961            }
     11962            // Three byte sequence:
     11963            elseif (($value & 0xF0) === 0xE0)
     11964            {
     11965                $character = ($value & 0x0F) << 12;
     11966                $length = 3;
     11967                $remaining = 2;
     11968            }
     11969            // Four byte sequence:
     11970            elseif (($value & 0xF8) === 0xF0)
     11971            {
     11972                $character = ($value & 0x07) << 18;
     11973                $length = 4;
     11974                $remaining = 3;
     11975            }
     11976            // Invalid byte:
     11977            else
     11978            {
     11979                $valid = false;
     11980                $length = 1;
     11981                $remaining = 0;
     11982            }
     11983
     11984            if ($remaining)
     11985            {
     11986                if ($position + $length <= $strlen)
     11987                {
     11988                    for ($position++; $remaining; $position++)
     11989                    {
     11990                        $value = ord($string[$position]);
     11991
     11992                        // Check that the byte is valid, then add it to the character:
     11993                        if (($value & 0xC0) === 0x80)
     11994                        {
     11995                            $character |= ($value & 0x3F) << (--$remaining * 6);
     11996                        }
     11997                        // If it is invalid, count the sequence as invalid and reprocess the current byte:
     11998                        else
     11999                        {
     12000                            $valid = false;
     12001                            $position--;
     12002                            break;
     12003                        }
     12004                    }
     12005                }
     12006                else
     12007                {
     12008                    $position = $strlen - 1;
     12009                    $valid = false;
     12010                }
     12011            }
     12012
     12013            // Percent encode anything invalid or not in ucschar
     12014            if (
     12015                // Invalid sequences
     12016                !$valid
     12017                // Non-shortest form sequences are invalid
     12018                || $length > 1 && $character <= 0x7F
     12019                || $length > 2 && $character <= 0x7FF
     12020                || $length > 3 && $character <= 0xFFFF
     12021                // Outside of range of ucschar codepoints
     12022                // Noncharacters
     12023                || ($character & 0xFFFE) === 0xFFFE
     12024                || $character >= 0xFDD0 && $character <= 0xFDEF
     12025                || (
     12026                    // Everything else not in ucschar
     12027                       $character > 0xD7FF && $character < 0xF900
     12028                    || $character < 0xA0
     12029                    || $character > 0xEFFFD
     12030                )
     12031                && (
     12032                    // Everything not in iprivate, if it applies
     12033                       !$iprivate
     12034                    || $character < 0xE000
     12035                    || $character > 0x10FFFD
     12036                )
     12037            )
     12038            {
     12039                // If we were a character, pretend we weren't, but rather an error.
     12040                if ($valid)
     12041                    $position--;
     12042
     12043                for ($j = $start; $j <= $position; $j++)
     12044                {
     12045                    $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1);
     12046                    $j += 2;
     12047                    $position += 2;
     12048                    $strlen += 2;
     12049                }
     12050            }
     12051        }
     12052
    1184212053        // Normalise case
    1184312054        if ($case & SIMPLEPIE_LOWERCASE)
     
    1185012061        }
    1185112062
    11852         // Store position and string length (to avoid constantly recalculating this)
    11853         $position = 0;
    11854         $strlen = strlen($string);
    11855 
    11856         // Loop as long as we have invalid characters, advancing the position to the next invalid character
    11857         while (($position += strspn($string, $valid_chars, $position)) < $strlen)
    11858         {
    11859             // If we have a % character
    11860             if ($string[$position] === '%')
    11861             {
    11862                 // If we have a pct-encoded section
    11863                 if ($position + 2 < $strlen && strspn($string, '0123456789ABCDEFabcdef', $position + 1, 2) === 2)
    11864                 {
    11865                     // Get the the represented character
    11866                     $chr = chr(hexdec(substr($string, $position + 1, 2)));
    11867 
    11868                     // If the character is valid, replace the pct-encoded with the actual character while normalising case
    11869                     if (strpos($valid_chars, $chr) !== false)
     12063        return $string;
     12064    }
     12065
     12066    /**
     12067     * Callback function for preg_replace_callback.
     12068     *
     12069     * Removes sequences of percent encoded bytes that represent UTF-8
     12070     * encoded characters in iunreserved
     12071     *
     12072     * @access private
     12073     * @param array $match PCRE match
     12074     * @return string Replacement
     12075     */
     12076    function remove_iunreserved_percent_encoded($match)
     12077    {
     12078        // As we just have valid percent encoded sequences we can just explode
     12079        // and ignore the first member of the returned array (an empty string).
     12080        $bytes = explode('%', $match[0]);
     12081
     12082        // Initialize the new string (this is what will be returned) and that
     12083        // there are no bytes remaining in the current sequence (unsurprising
     12084        // at the first byte!).
     12085        $string = '';
     12086        $remaining = 0;
     12087
     12088        // Loop over each and every byte, and set $value to its value
     12089        for ($i = 1, $len = count($bytes); $i < $len; $i++)
     12090        {
     12091            $value = hexdec($bytes[$i]);
     12092
     12093            // If we're the first byte of sequence:
     12094            if (!$remaining)
     12095            {
     12096                // Start position
     12097                $start = $i;
     12098
     12099                // By default we are valid
     12100                $valid = true;
     12101
     12102                // One byte sequence:
     12103                if ($value <= 0x7F)
     12104                {
     12105                    $character = $value;
     12106                    $length = 1;
     12107                }
     12108                // Two byte sequence:
     12109                elseif (($value & 0xE0) === 0xC0)
     12110                {
     12111                    $character = ($value & 0x1F) << 6;
     12112                    $length = 2;
     12113                    $remaining = 1;
     12114                }
     12115                // Three byte sequence:
     12116                elseif (($value & 0xF0) === 0xE0)
     12117                {
     12118                    $character = ($value & 0x0F) << 12;
     12119                    $length = 3;
     12120                    $remaining = 2;
     12121                }
     12122                // Four byte sequence:
     12123                elseif (($value & 0xF8) === 0xF0)
     12124                {
     12125                    $character = ($value & 0x07) << 18;
     12126                    $length = 4;
     12127                    $remaining = 3;
     12128                }
     12129                // Invalid byte:
     12130                else
     12131                {
     12132                    $valid = false;
     12133                    $remaining = 0;
     12134                }
     12135            }
     12136            // Continuation byte:
     12137            else
     12138            {
     12139                // Check that the byte is valid, then add it to the character:
     12140                if (($value & 0xC0) === 0x80)
     12141                {
     12142                    $remaining--;
     12143                    $character |= ($value & 0x3F) << ($remaining * 6);
     12144                }
     12145                // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence:
     12146                else
     12147                {
     12148                    $valid = false;
     12149                    $remaining = 0;
     12150                    $i--;
     12151                }
     12152            }
     12153
     12154            // If we've reached the end of the current byte sequence, append it to Unicode::$data
     12155            if (!$remaining)
     12156            {
     12157                // Percent encode anything invalid or not in iunreserved
     12158                if (
     12159                    // Invalid sequences
     12160                    !$valid
     12161                    // Non-shortest form sequences are invalid
     12162                    || $length > 1 && $character <= 0x7F
     12163                    || $length > 2 && $character <= 0x7FF
     12164                    || $length > 3 && $character <= 0xFFFF
     12165                    // Outside of range of iunreserved codepoints
     12166                    || $character < 0x2D
     12167                    || $character > 0xEFFFD
     12168                    // Noncharacters
     12169                    || ($character & 0xFFFE) === 0xFFFE
     12170                    || $character >= 0xFDD0 && $character <= 0xFDEF
     12171                    // Everything else not in iunreserved (this is all BMP)
     12172                    || $character === 0x2F
     12173                    || $character > 0x39 && $character < 0x41
     12174                    || $character > 0x5A && $character < 0x61
     12175                    || $character > 0x7A && $character < 0x7E
     12176                    || $character > 0x7E && $character < 0xA0
     12177                    || $character > 0xD7FF && $character < 0xF900
     12178                )
     12179                {
     12180                    for ($j = $start; $j <= $i; $j++)
    1187012181                    {
    11871                         if ($case & SIMPLEPIE_LOWERCASE)
    11872                         {
    11873                             $chr = strtolower($chr);
    11874                         }
    11875                         elseif ($case & SIMPLEPIE_UPPERCASE)
    11876                         {
    11877                             $chr = strtoupper($chr);
    11878                         }
    11879                         $string = substr_replace($string, $chr, $position, 3);
    11880                         $strlen -= 2;
    11881                         $position++;
     12182                        $string .= '%' . strtoupper($bytes[$j]);
    1188212183                    }
    11883 
    11884                     // Otherwise just normalise the pct-encoded to uppercase
    11885                     else
     12184                }
     12185                else
     12186                {
     12187                    for ($j = $start; $j <= $i; $j++)
    1188612188                    {
    11887                         $string = substr_replace($string, strtoupper(substr($string, $position + 1, 2)), $position + 1, 2);
    11888                         $position += 3;
     12189                        $string .= chr(hexdec($bytes[$j]));
    1188912190                    }
    1189012191                }
    11891                 // If we don't have a pct-encoded section, just replace the % with its own esccaped form
    11892                 else
    11893                 {
    11894                     $string = substr_replace($string, '%25', $position, 1);
    11895                     $strlen += 2;
    11896                     $position += 3;
    11897                 }
    11898             }
    11899             // If we have an invalid character, change into its pct-encoded form
    11900             else
    11901             {
    11902                 $replacement = sprintf("%%%02X", ord($string[$position]));
    11903                 $string = str_replace($string[$position], $replacement, $string);
    11904                 $strlen = strlen($string);
    11905             }
    11906         }
     12192            }
     12193        }
     12194
     12195        // If we have any bytes left over they are invalid (i.e., we are
     12196        // mid-way through a multi-byte sequence)
     12197        if ($remaining)
     12198        {
     12199            for ($j = $start; $j < $len; $j++)
     12200            {
     12201                $string .= '%' . strtoupper($bytes[$j]);
     12202            }
     12203        }
     12204
    1190712205        return $string;
    1190812206    }
     
    1213112429        else
    1213212430        {
    12133             $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:@/?');
     12431            $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$\'()*+,;:@/?&=');
    1213412432        }
    1213512433        $this->valid[__FUNCTION__] = true;
     
    1393414232        else
    1393514233        {
    13936             $this->state = 'standalone_name';
     14234            $this->state = false;
    1393714235        }
    1393814236    }
     
    1394814246        else
    1394914247        {
    13950             $this->state = false;
     14248            $this->state = 'standalone_name';
    1395114249        }
    1395214250    }
     
    1442614724                        if ($xml->namespaceURI !== '')
    1442714725                        {
    14428                             $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
     14726                            $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
    1442914727                        }
    1443014728                        else
     
    1443814736                        if ($xml->namespaceURI !== '')
    1443914737                        {
    14440                             $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
     14738                            $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
    1444114739                        }
    1444214740                        else
     
    1444914747                            if ($xml->namespaceURI !== '')
    1445014748                            {
    14451                                 $attrName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}";
     14749                                $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
    1445214750                            }
    1445314751                            else
     
    1491415212                                    else
    1491515213                                    {
    14916                                         trigger_error("$this->cache_location is not writeable", E_USER_WARNING);
     15214                                        trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
    1491715215                                    }
    1491815216                                }
Note: See TracChangeset for help on using the changeset viewer.