From 56b2f49e0e79bf6218bb0aefb0de2848881ce9b6 Mon Sep 17 00:00:00 2001 From: sparkyx Date: Mon, 15 Dec 2025 08:52:22 +0100 Subject: [PATCH] PEPPOL : improve search and display --- include/ajax/ajax_search_peppol.php | 92 ++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/include/ajax/ajax_search_peppol.php b/include/ajax/ajax_search_peppol.php index 47fd92e9c..40c616c8a 100644 --- a/include/ajax/ajax_search_peppol.php +++ b/include/ajax/ajax_search_peppol.php @@ -62,6 +62,16 @@ class PEPPOL_Entity_Record var $name; var $countryCode; var $regDate; + var $additionalInfo; + var array $website; + var array $contact; +} +class PEPPOL_Entity_Contact { + var $type; + var $name; + var $phone; + var $email; + } $msg = _("La recherche par nom et numéro de TVA sont limitées à la Belgique"); @@ -137,10 +147,31 @@ switch ($filter) default: throw new \Exception("ASP129 unknown filter",129); } -$str = file_get_contents("https://directory.peppol.eu/search/1.0/xml?" . $search); -//$str= file_get_contents("/tmp/result.xml"); +try { + $curl = curl_init("https://directory.peppol.eu/search/1.0/xml?{$search}"); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + + $str = curl_exec($curl); + if ( curl_errno($curl) != 0 ) { + $info = "AJX147 connexion fails"; + if ($curl != null) + { + $info = curl_error($curl) . "\n----\n"; + $info .= var_export(curl_getinfo($curl), true); + } + throw new \Exception($info,147); + } + + curl_close($curl); +} catch (\Exception $e) { + \record_log($e); + echo p(_("Vérification impossible")); + return; +} + $xml = new DOMDocument(); $xml->loadXML($str); +file_put_contents("/tmp/alchimerys.xml",$xml->saveXML()); $root = $xml->getElementsByTagName("resultlist"); if (count($root) == 0) { @@ -175,6 +206,8 @@ for ($i = 0; $i < $nb_match; $i++) } elseif ($node->childNodes->item($e)->tagName == 'entity') { $obj->entity = new PEPPOL_Entity_Record(); + $obj->entity->contact=array(); + $obj->entity->website=array(); for ($f=0;$f< $node->childNodes->item($e)->childElementCount;$f++) { if ( $node->childNodes->item($e)->childNodes->item($f)->tagName == 'name') @@ -183,6 +216,21 @@ for ($i = 0; $i < $nb_match; $i++) $obj->entity->countryCode=$node->childNodes->item($e)->childNodes->item($f)->textContent; if ($node->childNodes->item($e)->childNodes->item($f)->tagName=='regDate') $obj->entity->regDate=$node->childNodes->item($e)->childNodes->item($f)->textContent; + if ($node->childNodes->item($e)->childNodes->item($f)->tagName=='additionalInfo') + $obj->entity->additionalInfo=$node->childNodes->item($e)->childNodes->item($f)->textContent; + if ($node->childNodes->item($e)->childNodes->item($f)->tagName=='additionalInfo') + $obj->entity->additionalInfo=$node->childNodes->item($e)->childNodes->item($f)->textContent; + if ($node->childNodes->item($e)->childNodes->item($f)->tagName=='website') + $obj->entity->website[]=$node->childNodes->item($e)->childNodes->item($f)->textContent; + if ($node->childNodes->item($e)->childNodes->item($f)->tagName=='contact') + { $a=array(); + $a['type']=$node->childNodes->item($e)->childNodes->item($f)->getAttribute("type"); + $a['name']=$node->childNodes->item($e)->childNodes->item($f)->getAttribute("name"); + $a['phone']=$node->childNodes->item($e)->childNodes->item($f)->getAttribute("phone"); + $a['email']=$node->childNodes->item($e)->childNodes->item($f)->getAttribute("email"); + + $obj->entity->contact[]=$a; + } } } @@ -205,6 +253,10 @@ $nb_result=count($result); entity->website); + + ($result[$i]->entity->website != "") ? :""; ?>
@@ -214,9 +266,45 @@ for ($i=0;$i < $nb_result;$i++)
entity->name?> + (entity->countryCode?>) +
+
+
+
+ website : + %s
',$result[$i]->entity->website[$x],$result[$i]->entity->website[$x]); + } + } + ?> +
+
+ contact : + entity->contact); + for ($h=0;$h< $nb_contact;$h++) { + $email=mailTo($result[$i]->entity->contact[$h]['email']); + ?> +
+ entity->contact[$h]['type']?> + entity->contact[$h]['name']?> + entity->contact[$h]['phone']?> + +
+ +
+
+ Info: + entity->additionalInfo?> +
+ '; // div class content