From e2f3715b6a2fe71654ff0856b2cbd95880d07304 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sat, 17 Dec 2016 22:42:26 +0100 Subject: api : implement eCampaign webservices : automatic mobile number export --- api/export_ecampaign_cron.php | 79 ++++++++++++++++++++++++++++++++++++++++ api/export_ecampaign_genxml.php | 80 +++++++++++++++++++++++++++++++++++++++++ api/inc/config.default.php | 9 +++++ 3 files changed, 168 insertions(+) create mode 100644 api/export_ecampaign_cron.php create mode 100644 api/export_ecampaign_genxml.php diff --git a/api/export_ecampaign_cron.php b/api/export_ecampaign_cron.php new file mode 100644 index 0000000..b3e51f3 --- /dev/null +++ b/api/export_ecampaign_cron.php @@ -0,0 +1,79 @@ + + * Copyright 2016 Cyril Gousse + * + * This file is part of CHD Gestion. + * + * CHD Gestion is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CHD Gestion is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CHD Gestion. If not, see . +**/ + +include_once('inc/config.php'); +unset($db_config); +$user = $ecampaign_config['user_api']; +$pass_api = $ecampaign_config['pass_api']; +$user_cb = urlencode($ecampaign_config['user_cb']); +$pass_cb = urlencode($ecampaign_config['pass_cb']); +$grp_id = $ecampaign_config['grp_id']; +unset($ecampaign_config); + +// Supprime la base +make_request( +'http://api.ecampaign.prosoluce.fr/manageGroup/'.$grp_id.'/emptyGroup', +" + +{$user} +{$pass_api} + + + +" +); + +// Importe la base +make_request( +'http://api.ecampaign.prosoluce.fr/manageGroup/'.$grp_id.'/importMembers', +" + + {$user} + {$pass_api} + + + + https://{$user_cb}:{$pass_cb}@priv.chd.sx/api/export_ecampaign_genxml.php + https://{$user_cb}:{$pass_cb}@priv.chd.sx/api/export_ecampaign_callback.php + + +"); + +function make_request($url, $dataxml){ + $data = array('xml' => $dataxml); + + $options = array( + 'http' => array( + 'header' => "Content-type: application/x-www-form-urlencoded\r\n", + 'method' => 'POST', + 'content' => http_build_query($data) + ) + ); + + + $context = stream_context_create($options); + $result = file_get_contents($url, false, $context); + if ($result === FALSE) { + echo "Erreur pendant l'appel de l'API d'import"; + } + +} + diff --git a/api/export_ecampaign_genxml.php b/api/export_ecampaign_genxml.php new file mode 100644 index 0000000..6d0d137 --- /dev/null +++ b/api/export_ecampaign_genxml.php @@ -0,0 +1,80 @@ + + * Copyright 2016 Cyril Gousse + * + * This file is part of CHD Gestion. + * + * CHD Gestion is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CHD Gestion is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CHD Gestion. If not, see . +**/ + +include_once('inc/config.php'); +$mysqli = new mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database']); +if (mysqli_connect_errno()) { + die(mysqli_connect_error()); +} +unset($db_config); +$mysqli->set_charset("utf8") or die($mysqli->error); + +function parse_phone($number){ + $number = str_replace( + array(' ', '-', '.', '+'), + '', $number); + + if( substr($number, 0, 2) == '33' && strlen($number) == 11 ){ + return substr($number, 2); + } + elseif( substr($number, 0, 1) == '0' && strlen($number) == 10 ){ + return substr($number, 1); + } + else return ''; +} + +$xml = new SimpleXMLElement(''); + +$sql = "SELECT * FROM v_adt_sms;"; +$res = $mysqli->query($sql); +$i=0; +while ( $row = $res->fetch_assoc() ) { + + $member = $xml->addChild('member'); + + $infos = $member->addChild('adh'); + $infos->addChild('value', $row['id']); + + $infos = $member->addChild('mobile1'); + $mob1 = parse_phone($row['tel_mobile1']); + if( $mob1 != '' ){ + $infos->addChild('indicatif', '33'); + $infos->addChild('value', $mob1); + } + + $infos = $member->addChild('mobile2'); + $mob2 = parse_phone($row['tel_mobile2']); + if( $mob2 != '' ){ + $infos->addChild('indicatif', '33'); + $infos->addChild('value', $mob2); + } + + $infos = $member->addChild('mail_contact'); + $infos->addChild('value', $row['mail_contact']); + + $infos = $member->addChild('relais'); + $infos->addChild('value', $row['relais']); + + $i++; +} + +header('Content-Type: text/xml'); +echo $xml->asXML(); diff --git a/api/inc/config.default.php b/api/inc/config.default.php index 84c42ed..07808c4 100644 --- a/api/inc/config.default.php +++ b/api/inc/config.default.php @@ -6,3 +6,12 @@ $db_config=array( 'password' => 'DATABASE_PASSWORD', 'database' => 'DATABASE_NAME', ); + +$ecampaign_config = array ( + 'user_cb' => 'ECAMPAIGN_CALLBACK_USER', + 'pass_cb' => 'ECAMPAIGN_CALLBACK_PASS', + 'user_api' => 'ECAMPAIGN_API_USER', + 'pass_api' => 'ECAMPAIGN_API_PASS', + 'grp_id' => 42, +); + -- cgit v1.1