loadXML ($data); $xml->xinclude(); $xml = simplexml_import_dom($xml); //print_r($xml); return $xml; } /****************** functions for MEDIA COLLECTIONS ****************/ function getCollectionTitle($simpleXML) { return preg_replace("#sms collection\:#i","",$simpleXML->channel->title); } function getCollectionDescription($simpleXML) { return $simpleXML->channel->description; } function getCollectionTTL($simpleXML) { return $simpleXML->channel->ttl; } /* can derive these */ function getCollectionImageURL($simpleXML) { global $imageCollectionBaseURL; return $imageCollectionBaseURL.getCollectionId($simpleXML); } function getCollectionId($simpleXML) { $ids=split('_', (string) $simpleXML->channel->item->guid); return (string) $ids[2]; } /********** these functions [getCollectionItemXXXX()] work on fields available per media item in collection level RSS feeds, or ones which can be derived, and expect to be fed just the simpleXML Object for an item from the collection level feed e.g. foreach($collectionxml->channel->item as $item) { getCollectionItemTitle($item) // etc ) */ function getCollectionItemTitle($simpleXML) { return (string) $simpleXML->title; } function getCollectionItemRSSLink($simpleXML) { return $simpleXML->link; } function getCollectionItemGUID($simpleXML) { return $simpleXML->guid; } function getCollectionItemDescription($simpleXML) { return $simpleXML->description; } /* can derive theses */ function getCollectionItemImageURL($simpleXML) { global $imageItemBaseURL; return $imageItemBaseURL.getCollectionItemId($simpleXML).'.jpg'; } function getCollectionItemId($simpleXML) { $ids=split('_', (string) $simpleXML->guid); return (string) $ids[3]; } /* * array = getCollectionArray(Simple XML Object $simpleXML) * * returns a neat associative array keyed by timestamp for each item. * each item in turn contains an associative array of values keyed by name. * */ function getCollectionArray($simpleXML) { global $imageItemBaseURL; $itemsarray=array(); foreach ($simpleXML->channel->item as $item) { $itemSimpleXML = getSmsRssSimpleXML($item->link); // get a data time group stamp so we can build array based on it $dtg=strtotime(getMediaItemPubDate($itemSimpleXML)); // store everything into array keyed by timestamp ($dtg) */ $itemsarray[$dtg]['title']=(string) $item->title; $itemsarray[$dtg]['description']= (string) $item->description; $itemsarray[$dtg]['pubdate']=getMediaItemPubDate($itemSimpleXML); $itemsarray[$dtg]['duration']=getMediaItemDuration($itemSimpleXML); $itemsarray[$dtg]['itemrss']=(string) $item->link; $itemsarray[$dtg]['mediaid']= getMediaItemId($itemSimpleXML); $itemsarray[$dtg]['guid']=getMediaItemGUID($itemSimpleXML); $itemsarray[$dtg]['collectionid']= getCollectionId($itemSimpleXML); $itemsarray[$dtg]['imageurl']= $imageItemBaseURL.getMediaItemId($itemSimpleXML); } /* reverse sort based on $dtg*/ krsort($itemsarray); return $itemsarray; } /********** Functions for Media ITEMS **********************/ function getMediaItemFormatsArray($simpleXML) { $mediaFormats = array(); foreach($simpleXML->channel->item as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); foreach ($media->group->content as $content) { $attrs = $content->attributes(); #push data into array //print_r($attrs); $key = (string) $attrs['type']."-".$attrs['fileSize']; $mediaFormats[$key]['channels'] = (string) $attrs['channels']; $mediaFormats[$key]['duration'] = (string) $attrs['duration']; $mediaFormats[$key]['framerate'] = (string) $attrs['framerate']; $mediaFormats[$key]['height'] = (string) $attrs['height']; $mediaFormats[$key]['width'] = (string) $attrs['width']; $mediaFormats[$key]['samplingrate'] = (string) $attrs['samplingrate']; $mediaFormats[$key]['expression'] = (string) $attrs['expression']; $mediaFormats[$key]['isdefault'] = (string) $attrs['isDefault']; $mediaFormats[$key]['lang'] = (string) $attrs['lang']; $mediaFormats[$key]['type'] = (string) $attrs['type']; switch($attrs['type']) { case 'video/mpeg': $mediaFormats[$key]['extension'] = '.mp3'; break; case 'video/x-flv': $mediaFormats[$key]['extension'] = '.flv'; break; case 'video/quicktime': $mediaFormats[$key]['extension'] = '.mov'; break; case 'video/x-ms-wmv': $mediaFormats[$key]['extension'] = '.wmv'; break; case 'video/x-m4v': $mediaFormats[$key]['extension'] = '.m4v'; break; case 'video/': $mediaFormats[$key]['extension'] = 'none'; break; default: $mediaFormats[$key]['extension'] = 'none'; break; } $mediaFormats[$key]['bitrate'] = (string) $attrs['bitrate']; $mediaFormats[$key]['url'] = (string) $attrs['url']; $mediaFormats[$key]['filesize'] = (string) number_format($attrs['fileSize']/1048576,1); //$mediaFormats[$key]['3gp5MPEG4'] = (string) $attrs['3gp5MPEG4']; } } ksort($mediaFormats,SORT_STRING); //print_r($mediaFormats); return ($mediaFormats); } function getMediaItemFormatsArrayHTML($mediaFormats,$class='offsite') { $output = ''; foreach ($mediaFormats as $mediaTypeEntry) { //print_r($mediaTypeEntry)."
"; switch($mediaTypeEntry['extension']){ case '.mp3': $text = 'MP3 Audio file for mp3 players and iPods '; break; case 'flv': $text = ''; #echo "
  • FLV file? file for mp3 players and iPods (".$filesize." MB, ".$media_attr[1]." kbps)
  • "; # do nothing this is the flash stream break; case '.mov': $text='Video file for Quicktime '; break; case '.wmv': $text = 'Video file for Windows Media '; break; case '.m4v': $text = 'Video file for IPod '; break; case 'none': case '.flv': $text = ''; // echo nothing - these are the archive versions of video and aif audio break; default: $text='file'; } if($text != '') { $output=$output."

    $text(".$mediaTypeEntry['extension'].", ".$mediaTypeEntry['filesize']." MB, ".$mediaTypeEntry['samplingrate']." kbps)

    "; } } return $output; } function getMediaItemFlashHTML($simplexml) { global $mediaPlayerURL; $output=''; $media_formats = array(); foreach($simplexml->channel->item as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); $url=''; foreach($media->group->content as $content) { $attrs = $content->attributes(); if($attrs['type']=="video/x-flv" && $attrs['width']=="480") { $url=$attrs['url']; $height=$attrs['height']; $width=$attrs['width']; $duration=$attrs['duration']; } if($attrs['type']=="video/x-flv" && $attrs['width']=="320" && $url=='') { $url=$attrs['url']; $height=$attrs['height']; $width=$attrs['width']; $duration=$attrs['duration']; } #push date to array //array_push($media_formats, $attrs['type']."|".$attrs['bitrate']."|".$attrs['url']."|".$attrs['fileSize']."|".$attrs['3gp5MPEG4']); } $output = $output."\n"; $output = $output."\n"; $output = $output."\n"; $output = $output.""; $output = $output.""; } return $output; } function getMediaItemDescription($simpleXML) { return (string) $simpleXML->channel->description; } function getMediaItemTitle($simpleXML) { return (string) $simpleXML->channel->title; } function getMediaItemPubDate($simpleXML,$format='D, j M Y H:i:s O') { return date($format,strtotime($simpleXML->channel->item->pubDate)); } function getMediaItemRssUrl($simpleXML) { global $smsRssRootURL, $smsRssMedia; $ids=split('_', (string) $simpleXML->channel->item->guid); return (string) $smsRssRootURL.$smsRssMedia.$ids[3]; } function getMediaItemId($simpleXML) { global $smsRssRootURL, $smsRssMedia; $ids=split('_', (string) $simpleXML->channel->item->guid); return (string) $ids[3]; } function getMediaItemGUID($simpleXML) { global $smsRssRootURL, $smsRssMedia; return (string) $simpleXML->channel->item->guid; } function getMediaItemDuration($simpleXML) { $duration=-1; foreach($simpleXML->channel->item as $entry) { // get nodes in media: namespace for media information $media = $entry->children('http://search.yahoo.com/mrss/'); foreach($media->group->content as $content) { $attrs = $content->attributes(); //print_r($attrs); if($attrs['type']=="video/x-flv" && $attrs['width']=="320") { $duration=$attrs['duration']; } } if($duration == -1) { $returnval = "unknown"; } else { $minutes = intval($duration/60); $seconds = str_pad($duration%60,2,"0",STR_PAD_LEFT); $returnval = "$minutes:$seconds"; } } return $returnval; } function getMediaItemImageURL($simpleXML) { global $imageItemBaseURL; return $imageItemBaseURL.getMediaItemId($simpleXML); }