/** * Builds InboundMessage objects from parsed XML * @param SimpleXMLElement $node The captured elements to build from * @return MoodletxtInboundMessage[] Inbound messages built from the XML * @version 2012101001 * @since 2011033101 */ private function buildInboundMessage($node) { $receivedMessages = array(); // Check that required children exist for object build if (isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_MESSAGE_TEXT}) && isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_PHONE}) && isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DELIVERY_DATE}) && isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_TICKET}) && isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DESTINATION})) { try { // Create object and shove onto array $messageObject = new MoodletxtInboundMessage((string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_TICKET}, (string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_MESSAGE_TEXT}, new MoodletxtPhoneNumber((string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_PHONE}), (string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DELIVERY_DATE}, false); $messageObject->setDestinationNumber(new MoodletxtPhoneNumber((string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DESTINATION})); // If this field exists, we're parsing a pushed inbound message, // rather than one retrieved manually if (isset($node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DESTINATION_ACC})) { $messageObject->setDestinationAccountUsername((string) $node->{MoodletxtXMLConstants::$RESPONSE_INBOUND_DESTINATION_ACC}); } else { $messageObject->setDestinationAccountId($this->getTxttoolsAccountObject()->getId()); $messageObject->setDestinationAccountUsername($this->getTxttoolsAccountObject()->getUsername()); } } catch (InvalidPhoneNumberException $ex) { // Invalid message content - ignore and continue } array_push($receivedMessages, $messageObject); } return $receivedMessages; }
/** * Builds response JSON to send back to the webpage * @param MoodletxtInboundMessage $message Message to build JSON from * @return array JSON structure ready for encoding * @TODO Return destination accounts when stored by system * @version 2012050401 * @since 2012050301 */ private function buildMessageJSON(MoodletxtInboundMessage $message) { $JSON = array('source' => array('firstName' => $message->getSourceFirstName(), 'lastName' => $message->getSourceLastName(), 'displayName' => $message->getSourceNameForDisplay(), 'number' => $message->getSourceNumber()->getPhoneNumber()), 'ticket' => $message->getMessageTicket(), 'messageText' => $message->getMessageText(), 'timeReceived' => $message->getTimeReceived('%H:%M:%S, %d %B %Y'), 'hasBeenRead' => $message->getHasBeenRead()); if ($message->hasOwner()) { $JSON['owner'] = array('userId' => $message->getOwner()->getId(), 'username' => $message->getOwner()->getUsername(), 'firstName' => $message->getOwner()->getFirstName(), 'lastName' => $message->getOwner()->getLastName(), 'displayName' => $message->getOwner()->getFullNameForDisplay()); } return $JSON; }
/** * Converts a message object down to a basic data object for use in the DB * @param MoodletxtInboundMessage $bean Message to convert * @return array One or more raw database row objects * @TODO Store and retrieve destination txttools accounts * @version 2012050401 * @since 2011080401 */ private function convertBeanToStandardClasses(MoodletxtInboundMessage $bean) { $returnedObjects = array(); // Existing record - update if ($bean->getId() > 0) { $stdObject = new stdClass(); $stdObject->id = $bean->getId(); $stdObject->userid = $bean->getOwner()->getId(); $stdObject->ticket = $bean->getMessageTicket(); $stdObject->messagetext = $bean->getMessageText(); $stdObject->source = $bean->getSourceNumber()->getPhoneNumber(); $stdObject->sourcefirstname = $bean->getSourceFirstName(); $stdObject->sourcelastname = $bean->getSourceLastName(); $stdObject->timereceived = $bean->getTimeReceived(); $stdObject->hasbeenread = $bean->getHasBeenRead(); } else { // Fresh from being filtered or forwarded - make new // message objects for destination users foreach ($bean->getDestinationUserIds() as $userId) { $stdObject = new stdClass(); $stdObject->userid = $userId; $stdObject->ticket = $bean->getMessageTicket(); $stdObject->messagetext = $bean->getMessageText(); $stdObject->source = $bean->getSourceNumber()->getPhoneNumber(); $stdObject->sourcefirstname = $bean->getSourceFirstName(); $stdObject->sourcelastname = $bean->getSourceLastName(); $stdObject->timereceived = $bean->getTimeReceived(); $stdObject->hasbeenread = $bean->getHasBeenRead(); array_push($returnedObjects, $stdObject); } } return $returnedObjects; }