/** * Parse a message from an xml element. * @param unknown $xmlElement */ public static function parseFromXml(CultureFeed_SimpleXMLElement $xmlElement) { $message = new self(); // General properties. $message->id = $xmlElement->xpath_str('id'); $message->type = $xmlElement->xpath_str('type'); $message->status = $xmlElement->xpath_str('status'); $message->creationDate = $xmlElement->xpath_time('creationDate'); $message->lastReply = $xmlElement->xpath_time('lastReply'); $message->subject = $xmlElement->xpath_str('subject'); $message->body = $xmlElement->xpath_str('body'); $message->role = $xmlElement->xpath_str('role'); // Parse sender. $user = new CultureFeed_User(); $user->id = $xmlElement->xpath_str('sender/rdf:id'); $user->nick = $xmlElement->xpath_str('sender/foaf:nick'); $user->depiction = $xmlElement->xpath_str('sender/foaf:depiction'); $message->sender = $user; // Parse recipients. $message->recipients = array(); $recipientElements = $xmlElement->xpath('recipients/recipient'); if ($recipientElements) { foreach ($recipientElements as $recipientElement) { $recipient = new CultureFeed_User(); $recipient->id = $recipientElement->xpath_str('rdf:id'); $recipient->nick = $recipientElement->xpath_str('foaf:nick'); $recipient->depiction = $recipientElement->xpath_str('foaf:depiction'); $message->recipients[$recipient->id] = $recipient; } } $senderPageId = $xmlElement->xpath_str('senderPageId'); if ($senderPageId) { $page = new CultureFeed_Cdb_Item_Page(); $page->setId($senderPageId); $page->setName($xmlElement->xpath_str('senderPageName')); $message->senderPage = $page; } $recipientPageId = $xmlElement->xpath_str('recipientPageId'); if ($recipientPageId) { $page = new CultureFeed_Cdb_Item_Page(); $page->setId($recipientPageId); $page->setName($xmlElement->xpath_str('recipientPageName')); $message->recipientPage = $page; } // If this is a thread, parse also the child messages. $message->children = array(); $childElements = $xmlElement->xpath('children/message'); if ($childElements) { foreach ($childElements as $childElement) { $message->children[] = CultureFeed_Messages_Message::parseFromXml($childElement); } } return $message; }
/** * @see CultureFeed_Messages::getMessage() */ public function getMessage($id) { $result = $this->oauth_client->authenticatedGetAsXml('message/' . $id); $xmlElement = $this->validateResult($result, CultureFeed_Messages_Default::CODE_SUCCESS); $threadElement = $xmlElement->xpath('/response/thread'); return CultureFeed_Messages_Message::parseFromXml($threadElement[0]); }