title)) { throw new Exception("Mallformed activity xml"); } // remember to either type cast to (string) or trim() the string so we don't get // SimpleXMLString types in the internal data representation. I often prefer // using trim() since it cleans up the data too $activity['id'] = isset($xml->id) ? trim($xml->id) : ''; $activity['title'] = trim($xml->title); $activity['body'] = isset($xml->summary) ? trim($xml->summary) : ''; $activity['streamTitle'] = isset($activityXml->streamTitle) ? trim($activityXml->streamTitle) : ''; $activity['streamId'] = isset($activityXml->streamId) ? trim($activityXml->streamId) : ''; $activity['updated'] = isset($xml->updated) ? trim($xml->updated) : ''; if (isset($activityXml->mediaItems)) { $activity['mediaItems'] = array(); foreach ($activityXml->mediaItems->MediaItem as $mediaItem) { $item = array(); if (! isset($mediaItem->type) || ! isset($mediaItem->mimeType) || ! isset($mediaItem->url)) { throw new Exception("Invalid media item in activity xml"); } $item['type'] = trim($mediaItem->type); $item['mimeType'] = trim($mediaItem->mimeType); $item['url'] = trim($mediaItem->url); $activity['mediaItems'][] = $item; } } return $activity; } public static function convertMessages($requestParam, $xml, $content) { $message = array(); if (! isset($xml->title) || ! isset($content)) { throw new Exception("Invalid message structure"); } $message['id'] = isset($xml->id) ? trim($xml->id) : null; $message['title'] = trim($xml->title); $message['body'] = trim($content); // retrieve recipients by looking at the osapi name space $xml = self::loadString($requestParam, "http://opensocial.org/2008/opensocialapi"); if (! isset($xml->recipient)) { throw new Exception("Invalid message structure"); } $message['recipients'] = array(); foreach ($xml->recipient as $recipient) { $message['recipients'][] = trim($recipient); } return $message; } }