| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964 | <?php/** * SimplePie * * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: * * 	* Redistributions of source code must retain the above copyright notice, this list of * 	  conditions and the following disclaimer. * * 	* Redistributions in binary form must reproduce the above copyright notice, this list * 	  of conditions and the following disclaimer in the documentation and/or other materials * 	  provided with the distribution. * * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used * 	  to endorse or promote products derived from this software without specific prior * 	  written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie * @version 1.3.1 * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue * @author Ryan Parman * @author Geoffrey Sneddon * @author Ryan McCue * @link http://simplepie.org/ SimplePie * @license http://www.opensource.org/licenses/bsd-license.php BSD License *//** * Manages all item-related data * * Used by {@see SimplePie::get_item()} and {@see SimplePie::get_items()} * * This class can be overloaded with {@see SimplePie::set_item_class()} * * @package SimplePie * @subpackage API */class SimplePie_Item{	/**	 * Parent feed	 *	 * @access private	 * @var SimplePie	 */	var $feed;	/**	 * Raw data	 *	 * @access private	 * @var array	 */	var $data = array();	/**	 * Registry object	 *	 * @see set_registry	 * @var SimplePie_Registry	 */	protected $registry;	/**	 * Create a new item object	 *	 * This is usually used by {@see SimplePie::get_items} and	 * {@see SimplePie::get_item}. Avoid creating this manually.	 *	 * @param SimplePie $feed Parent feed	 * @param array $data Raw data	 */	public function __construct($feed, $data)	{		$this->feed = $feed;		$this->data = $data;	}	/**	 * Set the registry handler	 *	 * This is usually used by {@see SimplePie_Registry::create}	 *	 * @since 1.3	 * @param SimplePie_Registry $registry	 */	public function set_registry(SimplePie_Registry $registry)	{		$this->registry = $registry;	}	/**	 * Get a string representation of the item	 *	 * @return string	 */	public function __toString()	{		return md5(serialize($this->data));	}	/**	 * Remove items that link back to this before destroying this object	 */	public function __destruct()	{		if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))		{			unset($this->feed);		}	}	/**	 * Get data for an item-level element	 *	 * This method allows you to get access to ANY element/attribute that is a	 * sub-element of the item/entry tag.	 *	 * See {@see SimplePie::get_feed_tags()} for a description of the return value	 *	 * @since 1.0	 * @see http://simplepie.org/wiki/faq/supported_xml_namespaces	 * @param string $namespace The URL of the XML namespace of the elements you're trying to access	 * @param string $tag Tag name	 * @return array	 */	public function get_item_tags($namespace, $tag)	{		if (isset($this->data['child'][$namespace][$tag]))		{			return $this->data['child'][$namespace][$tag];		}		else		{			return null;		}	}	/**	 * Get the base URL value from the parent feed	 *	 * Uses `<xml:base>`	 *	 * @param array $element	 * @return string	 */	public function get_base($element = array())	{		return $this->feed->get_base($element);	}	/**	 * Sanitize feed data	 *	 * @access private	 * @see SimplePie::sanitize()	 * @param string $data Data to sanitize	 * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants	 * @param string $base Base URL to resolve URLs against	 * @return string Sanitized data	 */	public function sanitize($data, $type, $base = '')	{		return $this->feed->sanitize($data, $type, $base);	}	/**	 * Get the parent feed	 *	 * Note: this may not work as you think for multifeeds!	 *	 * @link http://simplepie.org/faq/typical_multifeed_gotchas#missing_data_from_feed	 * @since 1.0	 * @return SimplePie	 */	public function get_feed()	{		return $this->feed;	}	/**	 * Get the unique identifier for the item	 *	 * This is usually used when writing code to check for new items in a feed.	 *	 * Uses `<atom:id>`, `<guid>`, `<dc:identifier>` or the `about` attribute	 * for RDF. If none of these are supplied (or `$hash` is true), creates an	 * MD5 hash based on the permalink and title. If either of those are not	 * supplied, creates a hash based on the full feed data.	 *	 * @since Beta 2	 * @param boolean $hash Should we force using a hash instead of the supplied ID?	 * @return string	 */	public function get_id($hash = false)	{		if (!$hash)		{			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id'))			{				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id'))			{				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))			{				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier'))			{				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier'))			{				return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif (isset($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about']))			{				return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif (($return = $this->get_permalink()) !== null)			{				return $return;			}			elseif (($return = $this->get_title()) !== null)			{				return $return;			}		}		if ($this->get_permalink() !== null || $this->get_title() !== null)		{			return md5($this->get_permalink() . $this->get_title());		}		else		{			return md5(serialize($this->data));		}	}	/**	 * Get the title of the item	 *	 * Uses `<atom:title>`, `<title>` or `<dc:title>`	 *	 * @since Beta 2 (previously called `get_item_title` since 0.8)	 * @return string|null	 */	public function get_title()	{		if (!isset($this->data['title']))		{			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title'))			{				$this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			else			{				$this->data['title'] = null;			}		}		return $this->data['title'];	}	/**	 * Get the content for the item	 *	 * Prefers summaries over full content , but will return full content if a	 * summary does not exist.	 *	 * To prefer full content instead, use {@see get_content}	 *	 * Uses `<atom:summary>`, `<description>`, `<dc:description>` or	 * `<itunes:subtitle>`	 *	 * @since 0.8	 * @param boolean $description_only Should we avoid falling back to the content?	 * @return string|null	 */	public function get_description($description_only = false)	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))		{			return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))		{			return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);		}		elseif (!$description_only)		{			return $this->get_content(true);		}		else		{			return null;		}	}	/**	 * Get the content for the item	 *	 * Prefers full content over summaries, but will return a summary if full	 * content does not exist.	 *	 * To prefer summaries instead, use {@see get_description}	 *	 * Uses `<atom:content>` or `<content:encoded>` (RSS 1.0 Content Module)	 *	 * @since 1.0	 * @param boolean $content_only Should we avoid falling back to the description?	 * @return string|null	 */	public function get_content($content_only = false)	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))		{			return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))		{			return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));		}		elseif (!$content_only)		{			return $this->get_description(true);		}		else		{			return null;		}	}	/**	 * Get a category for the item	 *	 * @since Beta 3 (previously called `get_categories()` since Beta 2)	 * @param int $key The category that you want to return.  Remember that arrays begin with 0, not 1	 * @return SimplePie_Category|null	 */	public function get_category($key = 0)	{		$categories = $this->get_categories();		if (isset($categories[$key]))		{			return $categories[$key];		}		else		{			return null;		}	}	/**	 * Get all categories for the item	 *	 * Uses `<atom:category>`, `<category>` or `<dc:subject>`	 *	 * @since Beta 3	 * @return array|null List of {@see SimplePie_Category} objects	 */	public function get_categories()	{		$categories = array();		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)		{			$term = null;			$scheme = null;			$label = null;			if (isset($category['attribs']['']['term']))			{				$term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($category['attribs']['']['scheme']))			{				$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($category['attribs']['']['label']))			{				$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);			}			$categories[] = $this->registry->create('Category', array($term, $scheme, $label));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)		{			// This is really the label, but keep this as the term also for BC.			// Label will also work on retrieving because that falls back to term.			$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);			if (isset($category['attribs']['']['domain']))			{				$scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT);			}			else			{				$scheme = null;			}			$categories[] = $this->registry->create('Category', array($term, $scheme, null));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)		{			$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)		{			$categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));		}		if (!empty($categories))		{			return array_unique($categories);		}		else		{			return null;		}	}	/**	 * Get an author for the item	 *	 * @since Beta 2	 * @param int $key The author that you want to return.  Remember that arrays begin with 0, not 1	 * @return SimplePie_Author|null	 */	public function get_author($key = 0)	{		$authors = $this->get_authors();		if (isset($authors[$key]))		{			return $authors[$key];		}		else		{			return null;		}	}	/**	 * Get a contributor for the item	 *	 * @since 1.1	 * @param int $key The contrbutor that you want to return.  Remember that arrays begin with 0, not 1	 * @return SimplePie_Author|null	 */	public function get_contributor($key = 0)	{		$contributors = $this->get_contributors();		if (isset($contributors[$key]))		{			return $contributors[$key];		}		else		{			return null;		}	}	/**	 * Get all contributors for the item	 *	 * Uses `<atom:contributor>`	 *	 * @since 1.1	 * @return array|null List of {@see SimplePie_Author} objects	 */	public function get_contributors()	{		$contributors = array();		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor)		{			$name = null;			$uri = null;			$email = null;			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))			{				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))			{				$uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));			}			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))			{				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if ($name !== null || $email !== null || $uri !== null)			{				$contributors[] = $this->registry->create('Author', array($name, $uri, $email));			}		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor)		{			$name = null;			$url = null;			$email = null;			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))			{				$name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))			{				$url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));			}			if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))			{				$email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if ($name !== null || $email !== null || $url !== null)			{				$contributors[] = $this->registry->create('Author', array($name, $url, $email));			}		}		if (!empty($contributors))		{			return array_unique($contributors);		}		else		{			return null;		}	}	/**	 * Get all authors for the item	 *	 * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`	 *	 * @since Beta 2	 * @return array|null List of {@see SimplePie_Author} objects	 */	public function get_authors()	{		$authors = array();		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author)		{			$name = null;			$uri = null;			$email = null;			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']))			{				$name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']))			{				$uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]));			}			if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data']))			{				$email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if ($name !== null || $email !== null || $uri !== null)			{				$authors[] = $this->registry->create('Author', array($name, $uri, $email));			}		}		if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author'))		{			$name = null;			$url = null;			$email = null;			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data']))			{				$name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data']))			{				$url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]));			}			if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data']))			{				$email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);			}			if ($name !== null || $email !== null || $url !== null)			{				$authors[] = $this->registry->create('Author', array($name, $url, $email));			}		}		if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author'))		{			$authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author)		{			$authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author)		{			$authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));		}		foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author)		{			$authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));		}		if (!empty($authors))		{			return array_unique($authors);		}		elseif (($source = $this->get_source()) && ($authors = $source->get_authors()))		{			return $authors;		}		elseif ($authors = $this->feed->get_authors())		{			return $authors;		}		else		{			return null;		}	}	/**	 * Get the copyright info for the item	 *	 * Uses `<atom:rights>` or `<dc:rights>`	 *	 * @since 1.1	 * @return string	 */	public function get_copyright()	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights'))		{			return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights'))		{			return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);		}		else		{			return null;		}	}	/**	 * Get the posting date/time for the item	 *	 * Uses `<atom:published>`, `<atom:updated>`, `<atom:issued>`,	 * `<atom:modified>`, `<pubDate>` or `<dc:date>`	 *	 * Note: obeys PHP's timezone setting. To get a UTC date/time, use	 * {@see get_gmdate}	 *	 * @since Beta 2 (previously called `get_item_date` since 0.8)	 *	 * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)	 * @return int|string|null	 */	public function get_date($date_format = 'j F Y, g:i a')	{		if (!isset($this->data['date']))		{			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))			{				$this->data['date']['raw'] = $return[0]['data'];			}			if (!empty($this->data['date']['raw']))			{				$parser = $this->registry->call('Parse_Date', 'get');				$this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']);			}			else			{				$this->data['date'] = null;			}		}		if ($this->data['date'])		{			$date_format = (string) $date_format;			switch ($date_format)			{				case '':					return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);				case 'U':					return $this->data['date']['parsed'];				default:					return date($date_format, $this->data['date']['parsed']);			}		}		else		{			return null;		}	}	/**	 * Get the update date/time for the item	 *	 * Uses `<atom:updated>`	 *	 * Note: obeys PHP's timezone setting. To get a UTC date/time, use	 * {@see get_gmdate}	 *	 * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data)	 * @return int|string|null	 */	public function get_updated_date($date_format = 'j F Y, g:i a')	{		if (!isset($this->data['updated']))		{			if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))			{				$this->data['updated']['raw'] = $return[0]['data'];			}			if (!empty($this->data['updated']['raw']))			{				$parser = $this->registry->call('Parse_Date', 'get');				$this->data['updated']['parsed'] = $parser->parse($this->data['date']['raw']);			}			else			{				$this->data['updated'] = null;			}		}		if ($this->data['updated'])		{			$date_format = (string) $date_format;			switch ($date_format)			{				case '':					return $this->sanitize($this->data['updated']['raw'], SIMPLEPIE_CONSTRUCT_TEXT);				case 'U':					return $this->data['updated']['parsed'];				default:					return date($date_format, $this->data['updated']['parsed']);			}		}		else		{			return null;		}	}	/**	 * Get the localized posting date/time for the item	 *	 * Returns the date formatted in the localized language. To display in	 * languages other than the server's default, you need to change the locale	 * with {@link http://php.net/setlocale setlocale()}. The available	 * localizations depend on which ones are installed on your web server.	 *	 * @since 1.0	 *	 * @param string $date_format Supports any PHP date format from {@see http://php.net/strftime} (empty for the raw data)	 * @return int|string|null	 */	public function get_local_date($date_format = '%c')	{		if (!$date_format)		{			return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT);		}		elseif (($date = $this->get_date('U')) !== null && $date !== false)		{			return strftime($date_format, $date);		}		else		{			return null;		}	}	/**	 * Get the posting date/time for the item (UTC time)	 *	 * @see get_date	 * @param string $date_format Supports any PHP date format from {@see http://php.net/date}	 * @return int|string|null	 */	public function get_gmdate($date_format = 'j F Y, g:i a')	{		$date = $this->get_date('U');		if ($date === null)		{			return null;		}		return gmdate($date_format, $date);	}	/**	 * Get the update date/time for the item (UTC time)	 *	 * @see get_updated_date	 * @param string $date_format Supports any PHP date format from {@see http://php.net/date}	 * @return int|string|null	 */	public function get_updated_gmdate($date_format = 'j F Y, g:i a')	{		$date = $this->get_updated_date('U');		if ($date === null)		{			return null;		}		return gmdate($date_format, $date);	}	/**	 * Get the permalink for the item	 *	 * Returns the first link available with a relationship of "alternate".	 * Identical to {@see get_link()} with key 0	 *	 * @see get_link	 * @since 0.8	 * @return string|null Permalink URL	 */	public function get_permalink()	{		$link = $this->get_link();		$enclosure = $this->get_enclosure(0);		if ($link !== null)		{			return $link;		}		elseif ($enclosure !== null)		{			return $enclosure->get_link();		}		else		{			return null;		}	}	/**	 * Get a single link for the item	 *	 * @since Beta 3	 * @param int $key The link that you want to return.  Remember that arrays begin with 0, not 1	 * @param string $rel The relationship of the link to return	 * @return string|null Link URL	 */	public function get_link($key = 0, $rel = 'alternate')	{		$links = $this->get_links($rel);		if ($links[$key] !== null)		{			return $links[$key];		}		else		{			return null;		}	}	/**	 * Get all links for the item	 *	 * Uses `<atom:link>`, `<link>` or `<guid>`	 *	 * @since Beta 2	 * @param string $rel The relationship of links to return	 * @return array|null Links found for the item (strings)	 */	public function get_links($rel = 'alternate')	{		if (!isset($this->data['links']))		{			$this->data['links'] = array();			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)			{				if (isset($link['attribs']['']['href']))				{					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));				}			}			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)			{				if (isset($link['attribs']['']['href']))				{					$link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate';					$this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));				}			}			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link'))			{				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));			}			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link'))			{				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));			}			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link'))			{				$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));			}			if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid'))			{				if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true')				{					$this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0]));				}			}			$keys = array_keys($this->data['links']);			foreach ($keys as $key)			{				if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key)))				{					if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]))					{						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]);						$this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key];					}					else					{						$this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key];					}				}				elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY)				{					$this->data['links'][substr($key, 41)] =& $this->data['links'][$key];				}				$this->data['links'][$key] = array_unique($this->data['links'][$key]);			}		}		if (isset($this->data['links'][$rel]))		{			return $this->data['links'][$rel];		}		else		{			return null;		}	}	/**	 * Get an enclosure from the item	 *	 * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.	 *	 * @since Beta 2	 * @todo Add ability to prefer one type of content over another (in a media group).	 * @param int $key The enclosure that you want to return.  Remember that arrays begin with 0, not 1	 * @return SimplePie_Enclosure|null	 */	public function get_enclosure($key = 0, $prefer = null)	{		$enclosures = $this->get_enclosures();		if (isset($enclosures[$key]))		{			return $enclosures[$key];		}		else		{			return null;		}	}	/**	 * Get all available enclosures (podcasts, etc.)	 *	 * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS.	 *	 * At this point, we're pretty much assuming that all enclosures for an item	 * are the same content.  Anything else is too complicated to	 * properly support.	 *	 * @since Beta 2	 * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).	 * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).	 * @return array|null List of SimplePie_Enclosure items	 */	public function get_enclosures()	{		if (!isset($this->data['enclosures']))		{			$this->data['enclosures'] = array();			// Elements			$captions_parent = null;			$categories_parent = null;			$copyrights_parent = null;			$credits_parent = null;			$description_parent = null;			$duration_parent = null;			$hashes_parent = null;			$keywords_parent = null;			$player_parent = null;			$ratings_parent = null;			$restrictions_parent = null;			$thumbnails_parent = null;			$title_parent = null;			// Let's do the channel and item-level ones first, and just re-use them if we need to.			$parent = $this->get_feed();			// CAPTIONS			if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))			{				foreach ($captions as $caption)				{					$caption_type = null;					$caption_lang = null;					$caption_startTime = null;					$caption_endTime = null;					$caption_text = null;					if (isset($caption['attribs']['']['type']))					{						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['lang']))					{						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['start']))					{						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['end']))					{						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['data']))					{						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));				}			}			elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text'))			{				foreach ($captions as $caption)				{					$caption_type = null;					$caption_lang = null;					$caption_startTime = null;					$caption_endTime = null;					$caption_text = null;					if (isset($caption['attribs']['']['type']))					{						$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['lang']))					{						$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['start']))					{						$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['attribs']['']['end']))					{						$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($caption['data']))					{						$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));				}			}			if (is_array($captions_parent))			{				$captions_parent = array_values(array_unique($captions_parent));			}			// CATEGORIES			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)			{				$term = null;				$scheme = null;				$label = null;				if (isset($category['data']))				{					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}				if (isset($category['attribs']['']['scheme']))				{					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);				}				else				{					$scheme = 'http://search.yahoo.com/mrss/category_schema';				}				if (isset($category['attribs']['']['label']))				{					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);				}				$categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));			}			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category)			{				$term = null;				$scheme = null;				$label = null;				if (isset($category['data']))				{					$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}				if (isset($category['attribs']['']['scheme']))				{					$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);				}				else				{					$scheme = 'http://search.yahoo.com/mrss/category_schema';				}				if (isset($category['attribs']['']['label']))				{					$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);				}				$categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));			}			foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category)			{				$term = null;				$scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd';				$label = null;				if (isset($category['attribs']['']['text']))				{					$label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);				}				$categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));				if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category']))				{					foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory)					{						if (isset($subcategory['attribs']['']['text']))						{							$label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT);						}						$categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label));					}				}			}			if (is_array($categories_parent))			{				$categories_parent = array_values(array_unique($categories_parent));			}			// COPYRIGHT			if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))			{				$copyright_url = null;				$copyright_label = null;				if (isset($copyright[0]['attribs']['']['url']))				{					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);				}				if (isset($copyright[0]['data']))				{					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}				$copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));			}			elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright'))			{				$copyright_url = null;				$copyright_label = null;				if (isset($copyright[0]['attribs']['']['url']))				{					$copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);				}				if (isset($copyright[0]['data']))				{					$copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}				$copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label));			}			// CREDITS			if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))			{				foreach ($credits as $credit)				{					$credit_role = null;					$credit_scheme = null;					$credit_name = null;					if (isset($credit['attribs']['']['role']))					{						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($credit['attribs']['']['scheme']))					{						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$credit_scheme = 'urn:ebu';					}					if (isset($credit['data']))					{						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));				}			}			elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit'))			{				foreach ($credits as $credit)				{					$credit_role = null;					$credit_scheme = null;					$credit_name = null;					if (isset($credit['attribs']['']['role']))					{						$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($credit['attribs']['']['scheme']))					{						$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$credit_scheme = 'urn:ebu';					}					if (isset($credit['data']))					{						$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));				}			}			if (is_array($credits_parent))			{				$credits_parent = array_values(array_unique($credits_parent));			}			// DESCRIPTION			if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))			{				if (isset($description_parent[0]['data']))				{					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}			}			elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description'))			{				if (isset($description_parent[0]['data']))				{					$description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}			}			// DURATION			if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration'))			{				$seconds = null;				$minutes = null;				$hours = null;				if (isset($duration_parent[0]['data']))				{					$temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));					if (sizeof($temp) > 0)					{						$seconds = (int) array_pop($temp);					}					if (sizeof($temp) > 0)					{						$minutes = (int) array_pop($temp);						$seconds += $minutes * 60;					}					if (sizeof($temp) > 0)					{						$hours = (int) array_pop($temp);						$seconds += $hours * 3600;					}					unset($temp);					$duration_parent = $seconds;				}			}			// HASHES			if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))			{				foreach ($hashes_iterator as $hash)				{					$value = null;					$algo = null;					if (isset($hash['data']))					{						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($hash['attribs']['']['algo']))					{						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$algo = 'md5';					}					$hashes_parent[] = $algo.':'.$value;				}			}			elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash'))			{				foreach ($hashes_iterator as $hash)				{					$value = null;					$algo = null;					if (isset($hash['data']))					{						$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($hash['attribs']['']['algo']))					{						$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$algo = 'md5';					}					$hashes_parent[] = $algo.':'.$value;				}			}			if (is_array($hashes_parent))			{				$hashes_parent = array_values(array_unique($hashes_parent));			}			// KEYWORDS			if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))			{				if (isset($keywords[0]['data']))				{					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));					foreach ($temp as $word)					{						$keywords_parent[] = trim($word);					}				}				unset($temp);			}			elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))			{				if (isset($keywords[0]['data']))				{					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));					foreach ($temp as $word)					{						$keywords_parent[] = trim($word);					}				}				unset($temp);			}			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords'))			{				if (isset($keywords[0]['data']))				{					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));					foreach ($temp as $word)					{						$keywords_parent[] = trim($word);					}				}				unset($temp);			}			elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords'))			{				if (isset($keywords[0]['data']))				{					$temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));					foreach ($temp as $word)					{						$keywords_parent[] = trim($word);					}				}				unset($temp);			}			if (is_array($keywords_parent))			{				$keywords_parent = array_values(array_unique($keywords_parent));			}			// PLAYER			if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))			{				if (isset($player_parent[0]['attribs']['']['url']))				{					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);				}			}			elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player'))			{				if (isset($player_parent[0]['attribs']['']['url']))				{					$player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);				}			}			// RATINGS			if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))			{				foreach ($ratings as $rating)				{					$rating_scheme = null;					$rating_value = null;					if (isset($rating['attribs']['']['scheme']))					{						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$rating_scheme = 'urn:simple';					}					if (isset($rating['data']))					{						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));				}			}			elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))			{				foreach ($ratings as $rating)				{					$rating_scheme = 'urn:itunes';					$rating_value = null;					if (isset($rating['data']))					{						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));				}			}			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating'))			{				foreach ($ratings as $rating)				{					$rating_scheme = null;					$rating_value = null;					if (isset($rating['attribs']['']['scheme']))					{						$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);					}					else					{						$rating_scheme = 'urn:simple';					}					if (isset($rating['data']))					{						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));				}			}			elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit'))			{				foreach ($ratings as $rating)				{					$rating_scheme = 'urn:itunes';					$rating_value = null;					if (isset($rating['data']))					{						$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));				}			}			if (is_array($ratings_parent))			{				$ratings_parent = array_values(array_unique($ratings_parent));			}			// RESTRICTIONS			if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))			{				foreach ($restrictions as $restriction)				{					$restriction_relationship = null;					$restriction_type = null;					$restriction_value = null;					if (isset($restriction['attribs']['']['relationship']))					{						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($restriction['attribs']['']['type']))					{						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($restriction['data']))					{						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));				}			}			elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))			{				foreach ($restrictions as $restriction)				{					$restriction_relationship = 'allow';					$restriction_type = null;					$restriction_value = 'itunes';					if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')					{						$restriction_relationship = 'deny';					}					$restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));				}			}			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction'))			{				foreach ($restrictions as $restriction)				{					$restriction_relationship = null;					$restriction_type = null;					$restriction_value = null;					if (isset($restriction['attribs']['']['relationship']))					{						$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($restriction['attribs']['']['type']))					{						$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($restriction['data']))					{						$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);					}					$restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));				}			}			elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block'))			{				foreach ($restrictions as $restriction)				{					$restriction_relationship = 'allow';					$restriction_type = null;					$restriction_value = 'itunes';					if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes')					{						$restriction_relationship = 'deny';					}					$restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));				}			}			if (is_array($restrictions_parent))			{				$restrictions_parent = array_values(array_unique($restrictions_parent));			}			else			{				$restrictions_parent = array(new SimplePie_Restriction('allow', null, 'default'));			}			// THUMBNAILS			if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))			{				foreach ($thumbnails as $thumbnail)				{					if (isset($thumbnail['attribs']['']['url']))					{						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);					}				}			}			elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))			{				foreach ($thumbnails as $thumbnail)				{					if (isset($thumbnail['attribs']['']['url']))					{						$thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);					}				}			}			// TITLES			if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))			{				if (isset($title_parent[0]['data']))				{					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}			}			elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title'))			{				if (isset($title_parent[0]['data']))				{					$title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);				}			}			// Clear the memory			unset($parent);			// Attributes			$bitrate = null;			$channels = null;			$duration = null;			$expression = null;			$framerate = null;			$height = null;			$javascript = null;			$lang = null;			$length = null;			$medium = null;			$samplingrate = null;			$type = null;			$url = null;			$width = null;			// Elements			$captions = null;			$categories = null;			$copyrights = null;			$credits = null;			$description = null;			$hashes = null;			$keywords = null;			$player = null;			$ratings = null;			$restrictions = null;			$thumbnails = null;			$title = null;			// If we have media:group tags, loop through them.			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group)			{				if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))				{					// If we have media:content tags, loop through them.					foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)					{						if (isset($content['attribs']['']['url']))						{							// Attributes							$bitrate = null;							$channels = null;							$duration = null;							$expression = null;							$framerate = null;							$height = null;							$javascript = null;							$lang = null;							$length = null;							$medium = null;							$samplingrate = null;							$type = null;							$url = null;							$width = null;							// Elements							$captions = null;							$categories = null;							$copyrights = null;							$credits = null;							$description = null;							$hashes = null;							$keywords = null;							$player = null;							$ratings = null;							$restrictions = null;							$thumbnails = null;							$title = null;							// Start checking the attributes of media:content							if (isset($content['attribs']['']['bitrate']))							{								$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['channels']))							{								$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['duration']))							{								$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);							}							else							{								$duration = $duration_parent;							}							if (isset($content['attribs']['']['expression']))							{								$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['framerate']))							{								$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['height']))							{								$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['lang']))							{								$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['fileSize']))							{								$length = ceil($content['attribs']['']['fileSize']);							}							if (isset($content['attribs']['']['medium']))							{								$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['samplingrate']))							{								$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['type']))							{								$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['attribs']['']['width']))							{								$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);							}							$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);							// Checking the other optional media: elements. Priority: media:content, media:group, item, channel							// CAPTIONS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)								{									$caption_type = null;									$caption_lang = null;									$caption_startTime = null;									$caption_endTime = null;									$caption_text = null;									if (isset($caption['attribs']['']['type']))									{										$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['lang']))									{										$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['start']))									{										$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['end']))									{										$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['data']))									{										$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));								}								if (is_array($captions))								{									$captions = array_values(array_unique($captions));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)								{									$caption_type = null;									$caption_lang = null;									$caption_startTime = null;									$caption_endTime = null;									$caption_text = null;									if (isset($caption['attribs']['']['type']))									{										$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['lang']))									{										$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['start']))									{										$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['attribs']['']['end']))									{										$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($caption['data']))									{										$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));								}								if (is_array($captions))								{									$captions = array_values(array_unique($captions));								}							}							else							{								$captions = $captions_parent;							}							// CATEGORIES							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))							{								foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)								{									$term = null;									$scheme = null;									$label = null;									if (isset($category['data']))									{										$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($category['attribs']['']['scheme']))									{										$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$scheme = 'http://search.yahoo.com/mrss/category_schema';									}									if (isset($category['attribs']['']['label']))									{										$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$categories[] = $this->registry->create('Category', array($term, $scheme, $label));								}							}							if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))							{								foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)								{									$term = null;									$scheme = null;									$label = null;									if (isset($category['data']))									{										$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($category['attribs']['']['scheme']))									{										$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$scheme = 'http://search.yahoo.com/mrss/category_schema';									}									if (isset($category['attribs']['']['label']))									{										$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$categories[] = $this->registry->create('Category', array($term, $scheme, $label));								}							}							if (is_array($categories) && is_array($categories_parent))							{								$categories = array_values(array_unique(array_merge($categories, $categories_parent)));							}							elseif (is_array($categories))							{								$categories = array_values(array_unique($categories));							}							elseif (is_array($categories_parent))							{								$categories = array_values(array_unique($categories_parent));							}							// COPYRIGHTS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))							{								$copyright_url = null;								$copyright_label = null;								if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))								{									$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))								{									$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))							{								$copyright_url = null;								$copyright_label = null;								if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))								{									$copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))								{									$copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));							}							else							{								$copyrights = $copyrights_parent;							}							// CREDITS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)								{									$credit_role = null;									$credit_scheme = null;									$credit_name = null;									if (isset($credit['attribs']['']['role']))									{										$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($credit['attribs']['']['scheme']))									{										$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$credit_scheme = 'urn:ebu';									}									if (isset($credit['data']))									{										$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));								}								if (is_array($credits))								{									$credits = array_values(array_unique($credits));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)								{									$credit_role = null;									$credit_scheme = null;									$credit_name = null;									if (isset($credit['attribs']['']['role']))									{										$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($credit['attribs']['']['scheme']))									{										$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$credit_scheme = 'urn:ebu';									}									if (isset($credit['data']))									{										$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));								}								if (is_array($credits))								{									$credits = array_values(array_unique($credits));								}							}							else							{								$credits = $credits_parent;							}							// DESCRIPTION							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))							{								$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))							{								$description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);							}							else							{								$description = $description_parent;							}							// HASHES							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)								{									$value = null;									$algo = null;									if (isset($hash['data']))									{										$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($hash['attribs']['']['algo']))									{										$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$algo = 'md5';									}									$hashes[] = $algo.':'.$value;								}								if (is_array($hashes))								{									$hashes = array_values(array_unique($hashes));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)								{									$value = null;									$algo = null;									if (isset($hash['data']))									{										$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($hash['attribs']['']['algo']))									{										$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$algo = 'md5';									}									$hashes[] = $algo.':'.$value;								}								if (is_array($hashes))								{									$hashes = array_values(array_unique($hashes));								}							}							else							{								$hashes = $hashes_parent;							}							// KEYWORDS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))							{								if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))								{									$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));									foreach ($temp as $word)									{										$keywords[] = trim($word);									}									unset($temp);								}								if (is_array($keywords))								{									$keywords = array_values(array_unique($keywords));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))							{								if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))								{									$temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));									foreach ($temp as $word)									{										$keywords[] = trim($word);									}									unset($temp);								}								if (is_array($keywords))								{									$keywords = array_values(array_unique($keywords));								}							}							else							{								$keywords = $keywords_parent;							}							// PLAYER							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))							{								$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))							{								$player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);							}							else							{								$player = $player_parent;							}							// RATINGS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)								{									$rating_scheme = null;									$rating_value = null;									if (isset($rating['attribs']['']['scheme']))									{										$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$rating_scheme = 'urn:simple';									}									if (isset($rating['data']))									{										$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));								}								if (is_array($ratings))								{									$ratings = array_values(array_unique($ratings));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)								{									$rating_scheme = null;									$rating_value = null;									if (isset($rating['attribs']['']['scheme']))									{										$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);									}									else									{										$rating_scheme = 'urn:simple';									}									if (isset($rating['data']))									{										$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));								}								if (is_array($ratings))								{									$ratings = array_values(array_unique($ratings));								}							}							else							{								$ratings = $ratings_parent;							}							// RESTRICTIONS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)								{									$restriction_relationship = null;									$restriction_type = null;									$restriction_value = null;									if (isset($restriction['attribs']['']['relationship']))									{										$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($restriction['attribs']['']['type']))									{										$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($restriction['data']))									{										$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));								}								if (is_array($restrictions))								{									$restrictions = array_values(array_unique($restrictions));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)								{									$restriction_relationship = null;									$restriction_type = null;									$restriction_value = null;									if (isset($restriction['attribs']['']['relationship']))									{										$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($restriction['attribs']['']['type']))									{										$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);									}									if (isset($restriction['data']))									{										$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);									}									$restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));								}								if (is_array($restrictions))								{									$restrictions = array_values(array_unique($restrictions));								}							}							else							{								$restrictions = $restrictions_parent;							}							// THUMBNAILS							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))							{								foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)								{									$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);								}								if (is_array($thumbnails))								{									$thumbnails = array_values(array_unique($thumbnails));								}							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))							{								foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)								{									$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);								}								if (is_array($thumbnails))								{									$thumbnails = array_values(array_unique($thumbnails));								}							}							else							{								$thumbnails = $thumbnails_parent;							}							// TITLES							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))							{								$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);							}							elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))							{								$title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);							}							else							{								$title = $title_parent;							}							$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));						}					}				}			}			// If we have standalone media:content tags, loop through them.			if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']))			{				foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content)				{					if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))					{						// Attributes						$bitrate = null;						$channels = null;						$duration = null;						$expression = null;						$framerate = null;						$height = null;						$javascript = null;						$lang = null;						$length = null;						$medium = null;						$samplingrate = null;						$type = null;						$url = null;						$width = null;						// Elements						$captions = null;						$categories = null;						$copyrights = null;						$credits = null;						$description = null;						$hashes = null;						$keywords = null;						$player = null;						$ratings = null;						$restrictions = null;						$thumbnails = null;						$title = null;						// Start checking the attributes of media:content						if (isset($content['attribs']['']['bitrate']))						{							$bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['channels']))						{							$channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['duration']))						{							$duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT);						}						else						{							$duration = $duration_parent;						}						if (isset($content['attribs']['']['expression']))						{							$expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['framerate']))						{							$framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['height']))						{							$height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['lang']))						{							$lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['fileSize']))						{							$length = ceil($content['attribs']['']['fileSize']);						}						if (isset($content['attribs']['']['medium']))						{							$medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['samplingrate']))						{							$samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['type']))						{							$type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['width']))						{							$width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT);						}						if (isset($content['attribs']['']['url']))						{							$url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);						}						// Checking the other optional media: elements. Priority: media:content, media:group, item, channel						// CAPTIONS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption)							{								$caption_type = null;								$caption_lang = null;								$caption_startTime = null;								$caption_endTime = null;								$caption_text = null;								if (isset($caption['attribs']['']['type']))								{									$caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($caption['attribs']['']['lang']))								{									$caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($caption['attribs']['']['start']))								{									$caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($caption['attribs']['']['end']))								{									$caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($caption['data']))								{									$caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text));							}							if (is_array($captions))							{								$captions = array_values(array_unique($captions));							}						}						else						{							$captions = $captions_parent;						}						// CATEGORIES						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category']))						{							foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category)							{								$term = null;								$scheme = null;								$label = null;								if (isset($category['data']))								{									$term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($category['attribs']['']['scheme']))								{									$scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);								}								else								{									$scheme = 'http://search.yahoo.com/mrss/category_schema';								}								if (isset($category['attribs']['']['label']))								{									$label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$categories[] = $this->registry->create('Category', array($term, $scheme, $label));							}						}						if (is_array($categories) && is_array($categories_parent))						{							$categories = array_values(array_unique(array_merge($categories, $categories_parent)));						}						elseif (is_array($categories))						{							$categories = array_values(array_unique($categories));						}						elseif (is_array($categories_parent))						{							$categories = array_values(array_unique($categories_parent));						}						else						{							$categories = null;						}						// COPYRIGHTS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright']))						{							$copyright_url = null;							$copyright_label = null;							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url']))							{								$copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT);							}							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data']))							{								$copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);							}							$copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label));						}						else						{							$copyrights = $copyrights_parent;						}						// CREDITS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit)							{								$credit_role = null;								$credit_scheme = null;								$credit_name = null;								if (isset($credit['attribs']['']['role']))								{									$credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($credit['attribs']['']['scheme']))								{									$credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);								}								else								{									$credit_scheme = 'urn:ebu';								}								if (isset($credit['data']))								{									$credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name));							}							if (is_array($credits))							{								$credits = array_values(array_unique($credits));							}						}						else						{							$credits = $credits_parent;						}						// DESCRIPTION						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description']))						{							$description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);						}						else						{							$description = $description_parent;						}						// HASHES						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash)							{								$value = null;								$algo = null;								if (isset($hash['data']))								{									$value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($hash['attribs']['']['algo']))								{									$algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT);								}								else								{									$algo = 'md5';								}								$hashes[] = $algo.':'.$value;							}							if (is_array($hashes))							{								$hashes = array_values(array_unique($hashes));							}						}						else						{							$hashes = $hashes_parent;						}						// KEYWORDS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords']))						{							if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data']))							{								$temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT));								foreach ($temp as $word)								{									$keywords[] = trim($word);								}								unset($temp);							}							if (is_array($keywords))							{								$keywords = array_values(array_unique($keywords));							}						}						else						{							$keywords = $keywords_parent;						}						// PLAYER						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))						{							$player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);						}						else						{							$player = $player_parent;						}						// RATINGS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating)							{								$rating_scheme = null;								$rating_value = null;								if (isset($rating['attribs']['']['scheme']))								{									$rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT);								}								else								{									$rating_scheme = 'urn:simple';								}								if (isset($rating['data']))								{									$rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value));							}							if (is_array($ratings))							{								$ratings = array_values(array_unique($ratings));							}						}						else						{							$ratings = $ratings_parent;						}						// RESTRICTIONS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction)							{								$restriction_relationship = null;								$restriction_type = null;								$restriction_value = null;								if (isset($restriction['attribs']['']['relationship']))								{									$restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($restriction['attribs']['']['type']))								{									$restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);								}								if (isset($restriction['data']))								{									$restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT);								}								$restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value));							}							if (is_array($restrictions))							{								$restrictions = array_values(array_unique($restrictions));							}						}						else						{							$restrictions = $restrictions_parent;						}						// THUMBNAILS						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail']))						{							foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)							{								$thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);							}							if (is_array($thumbnails))							{								$thumbnails = array_values(array_unique($thumbnails));							}						}						else						{							$thumbnails = $thumbnails_parent;						}						// TITLES						if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title']))						{							$title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);						}						else						{							$title = $title_parent;						}						$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width));					}				}			}			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link)			{				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')				{					// Attributes					$bitrate = null;					$channels = null;					$duration = null;					$expression = null;					$framerate = null;					$height = null;					$javascript = null;					$lang = null;					$length = null;					$medium = null;					$samplingrate = null;					$type = null;					$url = null;					$width = null;					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));					if (isset($link['attribs']['']['type']))					{						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($link['attribs']['']['length']))					{						$length = ceil($link['attribs']['']['length']);					}					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor					$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));				}			}			foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link)			{				if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure')				{					// Attributes					$bitrate = null;					$channels = null;					$duration = null;					$expression = null;					$framerate = null;					$height = null;					$javascript = null;					$lang = null;					$length = null;					$medium = null;					$samplingrate = null;					$type = null;					$url = null;					$width = null;					$url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link));					if (isset($link['attribs']['']['type']))					{						$type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($link['attribs']['']['length']))					{						$length = ceil($link['attribs']['']['length']);					}					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor					$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));				}			}			if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure'))			{				if (isset($enclosure[0]['attribs']['']['url']))				{					// Attributes					$bitrate = null;					$channels = null;					$duration = null;					$expression = null;					$framerate = null;					$height = null;					$javascript = null;					$lang = null;					$length = null;					$medium = null;					$samplingrate = null;					$type = null;					$url = null;					$width = null;					$url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0]));					if (isset($enclosure[0]['attribs']['']['type']))					{						$type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT);					}					if (isset($enclosure[0]['attribs']['']['length']))					{						$length = ceil($enclosure[0]['attribs']['']['length']);					}					// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor					$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));				}			}			if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width))			{				// Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor				$this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));			}			$this->data['enclosures'] = array_values(array_unique($this->data['enclosures']));		}		if (!empty($this->data['enclosures']))		{			return $this->data['enclosures'];		}		else		{			return null;		}	}	/**	 * Get the latitude coordinates for the item	 *	 * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications	 *	 * Uses `<geo:lat>` or `<georss:point>`	 *	 * @since 1.0	 * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo	 * @link http://www.georss.org/ GeoRSS	 * @return string|null	 */	public function get_latitude()	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat'))		{			return (float) $return[0]['data'];		}		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))		{			return (float) $match[1];		}		else		{			return null;		}	}	/**	 * Get the longitude coordinates for the item	 *	 * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications	 *	 * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>`	 *	 * @since 1.0	 * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo	 * @link http://www.georss.org/ GeoRSS	 * @return string|null	 */	public function get_longitude()	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long'))		{			return (float) $return[0]['data'];		}		elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon'))		{			return (float) $return[0]['data'];		}		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))		{			return (float) $match[2];		}		else		{			return null;		}	}	/**	 * Get the `<atom:source>` for the item	 *	 * @since 1.1	 * @return SimplePie_Source|null	 */	public function get_source()	{		if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source'))		{			return $this->registry->create('Source', array($this, $return[0]));		}		else		{			return null;		}	}}
 |