Outbound messages and simplexml_load_string (PHP) string comparison

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I am trying to use an IF statement in PHP to set a variable based on the value of an object returned by an outbound message being processed with simplexml_load_string().

It seems that comparing the resulting object to string in PHP is not working as I expected it would.

The relevant code is:

input', 'rb');
$content = fread($capturedData,5000);
$rcXML = simplexml_load_string($content);
…
$priority = $rcXML->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://soap.sforce.com/2005/09/outbound')->notifications->Notification->sObject->children('urn:sobject.enterprise.soap.sforce.com')->Priority.PHP_EOL;
…
ob_end_clean();
…
if ($priority == "Urgent") {
   $color = "red";
} 
…
?>

I have tried several variations of print_r() and (string) against $priority, but am still not getting the expected results (change $color to "red").

The googles tells me that I need to use asXML() since simplexml_load_string() does not return a standard PHP object, but I am having no luck in getting that to work either.

$priority->asXML() returns: PHP Fatal error: Call to a member function asXML() on string

And I cannot seem to figure out how to properly use that either I guess.

Admittedly, my coding skills are not that polished!

Has anyone done something like this or know how I might be able to get this to work?

profilepic.png
manpreet 2 years ago

ok - I was going down the wrong path on this....

Some additional debug and help from a coworker and the problem was this:

$priority was being saved with a newline at the end.

Simply add trim() to the if condition and wha-la!

if (trim($priority) == "High") {
   $color = "yellow";
} elseif (trim($priority) == "Urgent") {
   $color = "red";
} else {
   $color = "green";
}

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.