<?php
class XMLAssocArray {
var $arrays, $keys, $node_flag, $depth, $xml_parser;
function xml2array($xml) {
$this->depth = -1;
$this->xml_parser = xml_parser_create();
xml_set_object($this->xml_parser, $this);
xml_parser_set_option ($this->xml_parser, XML_OPTION_CASE_FOLDING, 0);
xml_set_element_handler($this->xml_parser, "startElement", "endElement");
xml_set_character_data_handler($this->xml_parser, "characterData");
xml_parse($this->xml_parser, $xml, true);
xml_parser_free($this->xml_parser);
return $this->arrays[1];
}
function startElement($parser, $name, $attrs) {
$this->keys[] = $name;
$this->node_flag = 1;
$this->depth++;
}
function characterData($parser,$data) {
$key = end($this->keys);
$this->arrays[$this->depth][$key] = $data;
$this->node_flag = 0;
}
function endElement($parser, $name) {
$key = array_pop($this->keys);
if($this->node_flag == 1) {
$this->arrays[$this->depth][$key] = $this->arrays[$this->depth + 1];
unset($this->arrays[$this->depth + 1]);
}
$this->node_flag = 1;
$this->depth--;
}
}
$userid = $_GET["userid"];
$xml = $_POST["xml"];
$parser = new XMLAssocArray();
$arr = $parser->xml2array($xml);
$subref = $arr["submission_ref"];
$msisdn = $arr["msisdn"];
$status = $arr["status"];
$reason = $arr["reason"];
$retry = $arr["retry"];
mail(
"yourself@mydomain.com",
"DLR for SMS to $msisdn: $status",
"Mobile number: $msisdn\r\n
Submission reference: $subref\r\n
Delivered reason: $reason\r\n
Status: $status\r\n
Retry: $retry\r\n
userid: $userid\r\n
$XML: $xml\r\n",
"From: yourself@mydomain.com\r\nReply-To: yourself@mydomain.com\r\n");
print("OK"); //always return "OK" to let SMS Expert know it was received
?>
|