public function indexAction() { $address = $this->getRequest()->getParam('address'); $address = mb_convert_encoding(urldecode($address), 'UTF-8'); $address = self::stripAccents($address); $zipcode = $this->getRequest()->getParam('zipcode'); $zipcode = trim(urldecode($zipcode)); $zipcode = mb_convert_encoding($zipcode, 'UTF-8'); $city = $this->getRequest()->getParam('city'); $city = mb_convert_encoding(urldecode($city), 'UTF-8'); $city = self::stripAccents($city); if (empty($zipcode)) { echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('The field Postal Code is mandatory!') . '</li></ul></li></ul>'; } else { if (empty($city)) { echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('The field City is mandatory!') . '</li></ul></li></ul>'; } else { $serviceurl = Mage::getStoreConfig('carriers/dpdfrrelais/serviceurl'); $firmid = Mage::getStoreConfig('carriers/dpdfrrelais/indentifier'); $key = Mage::getStoreConfig('carriers/dpdfrrelais/key'); // Paramètres d'appel au WS MyPudo $variables = array('carrier' => $firmid, 'key' => $key, 'address' => $address, 'zipCode' => $zipcode, 'city' => $city, 'countrycode' => 'FR', 'requestID' => '1234', 'request_id' => '1234', 'date_from' => date('d/m/Y'), 'max_pudo_number' => '', 'max_distance_search' => '', 'weight' => '', 'category' => '', 'holiday_tolerant' => ''); // Message d'erreur si PHP_SOAP manquant if (!extension_loaded('soap')) { echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('ATTENTION! L\'extension PHP SOAP n\'est pas activée sur ce serveur. Vous devez l\'activer pour utiliser le module DPD Relais.') . '</li></ul></li></ul>'; } // Appel WS try { ini_set("default_socket_timeout", 3); $soappudo = new SoapClient($serviceurl, array('connection_timeout' => 3, 'cache_wsdl' => WSDL_CACHE_NONE, 'exceptions' => true)); $GetPudoList = $soappudo->getPudoList($variables); // appel SOAP a l'applicatif GetPudoList } catch (Exception $e) { echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('An error ocurred while fetching the DPD Pickup points. Please try again') . '</li></ul></li></ul>'; exit; } $doc_xml = new SimpleXMLElement($GetPudoList->GetPudoListResult->any); // parsage XML de la réponse SOAP $quality = (int) $doc_xml->attributes()->quality; // indice de qualité de la réponse SOAP if ($doc_xml->xpath('ERROR')) { // si le webservice répond un code erreur, afficher un message d'indisponibilité echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('An error ocurred while fetching the DPD Pickup points. Please try again') . '</li></ul></li></ul>'; } else { if ((int) $quality == 0) { // Si la qualité de la réponse est 0, "merci d'indiquer une autre adresse" echo '<ul class="messages"><li class="warnmsg"><ul><li>' . Mage::helper('dpdfrrelais')->__('There are no DPD Pickup points for the selected adress. Please modify it.') . '</li></ul></li></ul>'; } else { $allpudoitems = $doc_xml->xpath('PUDO_ITEMS'); // acceder a la balise pudo_items foreach ($allpudoitems as $singlepudoitem) { $result = $singlepudoitem->xpath('PUDO_ITEM'); $i = 0; foreach ($result as $result2) { $offset = $i; $LATITUDE = (double) str_replace(",", ".", (string) $result2->LATITUDE); $LONGITUDE = (double) str_replace(",", ".", (string) $result2->LONGITUDE); $html = ' <div> <span class="dpdfrrelais_logo"><img src="' . Mage::getBaseUrl('media') . 'dpdfrance/front/relais/pointrelais.png" alt="-"/></span> <span class="s1"><strong>' . self::stripAccents($result2->NAME) . '</strong><br/>' . self::stripAccents($result2->ADDRESS1) . ' <br/> ' . $result2->ZIPCODE . ' ' . self::stripAccents($result2->CITY) . '</span> <span class="s2">' . sprintf("%01.2f", (int) $result2->DISTANCE / 1000) . ' km </span> <span class="s3"><a href="#!" onClick="openDialog(\'relaydetail' . $offset . '\',\'map_canvas' . $offset . '\',\'' . $LATITUDE . '\',\'' . $LONGITUDE . '\',\'' . Mage::getBaseUrl('media') . '\')">' . Mage::helper('dpdfrrelais')->__('More details') . '</a></span> <input type="radio" id="relay-point' . $offset . '" name="relay-point" class="dpdfrrelais_radio" value="' . self::stripAccents($result2->ADDRESS1) . ' ' . self::stripAccents($result2->ADDRESS2) . '|||' . self::stripAccents($result2->NAME) . ' ' . (string) $result2->PUDO_ID . '|||' . $result2->ZIPCODE . '|||' . self::stripAccents($result2->CITY) . '"> <label class="dpdfrrelais_button_ici" for="relay-point' . $offset . '"><span><span></span></span><b>ICI</b></label> </div> '; $days = array(1 => 'monday', 2 => 'tuesday', 3 => 'wednesday', 4 => 'thursday', 5 => 'friday', 6 => 'saturday', 7 => 'sunday'); $point = array(); $item = (array) $result2; if (count($item['OPENING_HOURS_ITEMS']->OPENING_HOURS_ITEM) > 0) { foreach ($item['OPENING_HOURS_ITEMS']->OPENING_HOURS_ITEM as $k => $oh_item) { $oh_item = (array) $oh_item; $point[$days[$oh_item['DAY_ID']]][] = $oh_item['START_TM'] . ' - ' . $oh_item['END_TM']; } } if (empty($point['monday'])) { $h1 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['monday'][1])) { $h1 = $point['monday'][0]; } else { $h1 = $point['monday'][0] . ' & ' . $point['monday'][1]; } } if (empty($point['tuesday'])) { $h2 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['tuesday'][1])) { $h2 = $point['tuesday'][0]; } else { $h2 = $point['tuesday'][0] . ' & ' . $point['tuesday'][1]; } } if (empty($point['wednesday'])) { $h3 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['wednesday'][1])) { $h3 = $point['wednesday'][0]; } else { $h3 = $point['wednesday'][0] . ' & ' . $point['wednesday'][1]; } } if (empty($point['thursday'])) { $h4 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['thursday'][1])) { $h4 = $point['thursday'][0]; } else { $h4 = $point['thursday'][0] . ' & ' . $point['thursday'][1]; } } if (empty($point['friday'])) { $h5 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['friday'][1])) { $h5 = $point['friday'][0]; } else { $h5 = $point['friday'][0] . ' & ' . $point['friday'][1]; } } if (empty($point['saturday'])) { $h6 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['saturday'][1])) { $h6 = $point['saturday'][0]; } else { $h6 = $point['saturday'][0] . ' & ' . $point['saturday'][1]; } } if (empty($point['sunday'])) { $h7 = Mage::helper('dpdfrrelais')->__('Closed'); } else { if (empty($point['sunday'][1])) { $h7 = $point['sunday'][0]; } else { $h7 = $point['sunday'][0] . ' & ' . $point['sunday'][1]; } } $html .= '<div id="relaydetail' . $offset . '" style="display:none;"> <div class="dpdfrrelaisboxcarto" id="map_canvas' . $offset . '" style="width:100%;"></div> <div id="dpdfrrelaisboxbottom" class="dpdfrrelaisboxbottom"> <div id="dpdfrrelaisboxadresse" class="dpdfrrelaisboxadresse"> <div class="dpdfrrelaisboxadresseheader"><img src="' . Mage::getBaseUrl('media') . 'dpdfrance/front/relais/pointrelais.png" alt="-" width="32" height="32"/><br/>' . Mage::helper('dpdfrrelais')->__('Your DPD Pickup point') . '</div> <strong>' . $result2->NAME . '</strong></br> ' . $result2->ADDRESS1 . '</br>'; if (!empty($result2->ADDRESS2)) { $html .= $result2->ADDRESS2 . '</br>'; } $html .= $result2->ZIPCODE . ' ' . $result2->CITY . '<br/>'; if (!empty($result2->LOCAL_HINT)) { $html .= '<p>' . Mage::helper('dpdfrrelais')->__('info') . ' : ' . $result2->LOCAL_HINT . '</p>'; } $html .= '</div>'; $html .= '<div class="dpdfrrelaisboxhoraires"> <div class="dpdfrrelaisboxhorairesheader"><img src="' . Mage::getBaseUrl('media') . 'dpdfrance/front/relais/horaires.png" alt="-" width="32" height="32"/><br/>' . Mage::helper('dpdfrrelais')->__('Opening hours') . '</div> <p><span>' . Mage::helper('dpdfrrelais')->__('Monday') . ' : </span>' . $h1 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Tuesday') . ' : </span>' . $h2 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Wednesday') . ' : </span>' . $h3 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Thursday') . ' : </span>' . $h4 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Friday') . ' : </span>' . $h5 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Saturday') . ' : </span>' . $h6 . '</p> <p><span>' . Mage::helper('dpdfrrelais')->__('Sunday') . ' : </span>' . $h7 . '</p> </div>'; $html .= '<div class="dpdfrrelaisboxinfos"> <div class="dpdfrrelaisboxinfosheader"><img src="' . Mage::getBaseUrl('media') . 'dpdfrance/front/relais/info.png" alt="-" width="32" height="32"/><br/>' . Mage::helper('dpdfrrelais')->__('More info') . '</div> <div><h5>' . Mage::helper('dpdfrrelais')->__('Distance in KM') . ' : </h5><strong>' . sprintf("%01.2f", $result2->DISTANCE / 1000) . ' km </strong></div> <div><h5>' . Mage::helper('dpdfrrelais')->__('DPD Pickup ID#') . ' : </h5><strong>' . (string) $result2->PUDO_ID . '</strong></div>'; if (count($result2->HOLIDAY_ITEMS->HOLIDAY_ITEM) > 0) { foreach ($result2->HOLIDAY_ITEMS->HOLIDAY_ITEM as $holiday_item) { $holiday_item = (array) $holiday_item; $html .= '<div><img id="dpdfrrelaisboxinfoswarning" src="' . Mage::getBaseUrl('media') . 'dpdfrance/front/relais/warning.png" alt="-" width="16" height="16"/> <h4>' . Mage::helper('dpdfrrelais')->__('Closing period') . ' : </h4> ' . $holiday_item['START_DTM'] . ' - ' . $holiday_item['END_DTM'] . '</div>'; } } $html .= '</div>'; $html .= '</div></div>'; // dpdfrrelaisboxbottom et relaydetail echo $html; $i++; $hd1 = $hd2 = $hd3 = $hd4 = $hd5 = $hd6 = $hd7 = $h1 = $h2 = $h3 = $h4 = $h5 = $h6 = $h7 = null; if ($i == 5) { // Nombre de points relais à afficher - max 10 exit; } } } } } } } }