From: konrad Date: Sun, 21 Oct 2007 12:20:26 +0000 (+0000) Subject: can write rooms now X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=c00e8ae2bf9ae81f393297ec19018e3dd576e6ab;p=konrad%2Fsmoke.git can write rooms now git-svn-id: https://silmor.de/svn/softmagic/smoke/trunk@57 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33 --- diff --git a/www/inc/room.php b/www/inc/room.php index 4df6e6e..40daa21 100644 --- a/www/inc/room.php +++ b/www/inc/room.php @@ -44,7 +44,41 @@ function getRoomsXml($xmldata) function setRoomsXml($xmldata) { - //TODO:implement + //TODO:do more extensive syntax checking and better error reporting + //get XML + $xml=new DOMDocument; + if($xml->loadXML($xmldata)===false){ + header("X-MagicSmoke-Status: SyntaxError"); + echo "Unable to parse XML."; + return; + } + //stage 2: extract data from XML + $doc=$xml->documentElement; + global $db; + foreach($doc->getElementsByTagName("Room") as $room){ + //get data + $cap=$room->getAttribute("capacity")+0; + $id=false; + $descr=false; + foreach($room->getElementsByTagName("ID") as $el) + foreach($el->childNodes as $cn) + if($cn->nodeType==XML_TEXT_NODE) + $id=trim($cn->wholeText); + foreach($room->getElementsByTagName("Description") as $el) + foreach($el->childNodes as $cn) + if($cn->nodeType==XML_TEXT_NODE) + $descr=trim($cn->wholeText); + if($id===false)continue; + $db->beginTransaction(); + $res=$db->select("room","roomid","roomid=".$db->escapeString($id)); + if(count($res)>0){ + $db->update("room",array("capacity"=>$cap,"description"=>$descr),"roomid=".$db->escapeString($id)); + }else{ + $db->insert("room",array("roomid"=>$id,"capacity"=>$cap,"description"=>$descr)); + } + $db->commitTransaction(); + } + header("X-MagicSmoke-Status: Ok"); } ?> \ No newline at end of file