Commit a0bd60a71b74ab6a36b3ca8764887eb07d58fed0
- Diff rendering mode:
- inline
- side by side
MollomPlugin.php
(34 / 34)
|   | |||
| 552 | 552 | return $xmlrpc_message; | |
| 553 | 553 | } | |
| 554 | 554 | ||
| 555 | /** | ||
| 556 | * Parse an XML-RPC message. If parsing fails, the faultCode and faultString | ||
| 557 | * will be added to the message object. | ||
| 558 | * | ||
| 559 | * @param $xmlrpc_message | ||
| 560 | * Object generated by xmlrpc_message() | ||
| 561 | * @return | ||
| 562 | * TRUE if parsing succeeded; FALSE otherwise | ||
| 563 | */ | ||
| 564 | function xmlrpc_message_parse(&$xmlrpc_message) { | ||
| 565 | // First remove the XML declaration | ||
| 566 | $xmlrpc_message->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $xmlrpc_message->message); | ||
| 567 | if (trim($xmlrpc_message->message) == '') { | ||
| 568 | return FALSE; | ||
| 569 | } | ||
| 570 | $xmlrpc_message->_parser = xml_parser_create(); | ||
| 571 | // Set XML parser to take the case of tags into account. | ||
| 572 | xml_parser_set_option($xmlrpc_message->_parser, XML_OPTION_CASE_FOLDING, FALSE); | ||
| 573 | // Set XML parser callback functions | ||
| 574 | xml_set_element_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_tag_open'), array('MollomPlugin', 'xmlrpc_message_tag_close')); | ||
| 575 | xml_set_character_data_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_cdata')); | ||
| 576 | $this->xmlrpc_message_set($xmlrpc_message); | ||
| 577 | if (!xml_parse($xmlrpc_message->_parser, $xmlrpc_message->message)) { | ||
| 578 | return FALSE; | ||
| 579 | } | ||
| 580 | xml_parser_free($xmlrpc_message->_parser); | ||
| 581 | // Grab the error messages, if any | ||
| 582 | $xmlrpc_message = $this->xmlrpc_message_get(); | ||
| 583 | if ($xmlrpc_message->messagetype == 'fault') { | ||
| 584 | $xmlrpc_message->fault_code = $xmlrpc_message->params[0]['faultCode']; | ||
| 585 | $xmlrpc_message->fault_string = $xmlrpc_message->params[0]['faultString']; | ||
| 586 | } | ||
| 587 | return TRUE; | ||
| 588 | } | ||
| 555 | /** | ||
| 556 | * Parse an XML-RPC message. If parsing fails, the faultCode and faultString | ||
| 557 | * will be added to the message object. | ||
| 558 | * | ||
| 559 | * @param $xmlrpc_message | ||
| 560 | * Object generated by xmlrpc_message() | ||
| 561 | * @return | ||
| 562 | * TRUE if parsing succeeded; FALSE otherwise | ||
| 563 | */ | ||
| 564 | function xmlrpc_message_parse(&$xmlrpc_message) { | ||
| 565 | // First remove the XML declaration | ||
| 566 | $xmlrpc_message->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $xmlrpc_message->message); | ||
| 567 | if (trim($xmlrpc_message->message) == '') { | ||
| 568 | return FALSE; | ||
| 569 | } | ||
| 570 | $xmlrpc_message->_parser = xml_parser_create(); | ||
| 571 | // Set XML parser to take the case of tags into account. | ||
| 572 | xml_parser_set_option($xmlrpc_message->_parser, XML_OPTION_CASE_FOLDING, FALSE); | ||
| 573 | // Set XML parser callback functions | ||
| 574 | xml_set_element_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_tag_open'), array('MollomPlugin', 'xmlrpc_message_tag_close')); | ||
| 575 | xml_set_character_data_handler($xmlrpc_message->_parser, array('MollomPlugin', 'xmlrpc_message_cdata')); | ||
| 576 | $this->xmlrpc_message_set($xmlrpc_message); | ||
| 577 | if (!xml_parse($xmlrpc_message->_parser, $xmlrpc_message->message)) { | ||
| 578 | return FALSE; | ||
| 579 | } | ||
| 580 | xml_parser_free($xmlrpc_message->_parser); | ||
| 581 | // Grab the error messages, if any | ||
| 582 | $xmlrpc_message = $this->xmlrpc_message_get(); | ||
| 583 | if ($xmlrpc_message->messagetype == 'fault') { | ||
| 584 | $xmlrpc_message->fault_code = $xmlrpc_message->params[0]['faultCode']; | ||
| 585 | $xmlrpc_message->fault_string = $xmlrpc_message->params[0]['faultString']; | ||
| 586 | } | ||
| 587 | return TRUE; | ||
| 588 | } | ||
| 589 | 589 | ||
| 590 | 590 | /** | |
| 591 | 591 | * Store a copy of the $xmlrpc_message object temporarily. |

