summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2016-12-17 22:42:26 +0100
committerLudovic Pouzenc <ludovic@pouzenc.fr>2016-12-17 22:42:26 +0100
commite2f3715b6a2fe71654ff0856b2cbd95880d07304 (patch)
tree6a5e938bf8f8cf26f9ef34be271bb947a22c9dfa
parent93c1851c355240b272ec2aaa0e7b8b06d6f83897 (diff)
downloadchd_gestion-e2f3715b6a2fe71654ff0856b2cbd95880d07304.zip
chd_gestion-e2f3715b6a2fe71654ff0856b2cbd95880d07304.tar.gz
chd_gestion-e2f3715b6a2fe71654ff0856b2cbd95880d07304.tar.bz2
api : implement eCampaign webservices : automatic mobile number export
-rw-r--r--api/export_ecampaign_cron.php79
-rw-r--r--api/export_ecampaign_genxml.php80
-rw-r--r--api/inc/config.default.php9
3 files changed, 168 insertions, 0 deletions
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 @@
+<?php
+/**
+ * Copyright 2016 Ludovic Pouzenc <ludovic@pouzenc.fr>
+ * Copyright 2016 Cyril Gousse <contact@cyril.fr>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+**/
+
+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',
+"<ecampaign>
+<login>
+<user>{$user}</user>
+<password>{$pass_api}</password>
+</login>
+<manageGroup>
+</manageGroup>
+</ecampaign>"
+);
+
+// Importe la base
+make_request(
+'http://api.ecampaign.prosoluce.fr/manageGroup/'.$grp_id.'/importMembers',
+"<ecampaign>
+ <login>
+ <user>{$user}</user>
+ <password>{$pass_api}</password>
+ </login>
+ <manageGroup>
+ <importMembers>
+ <xmlUrl>https://{$user_cb}:{$pass_cb}@priv.chd.sx/api/export_ecampaign_genxml.php</xmlUrl>
+ <callbackUrl>https://{$user_cb}:{$pass_cb}@priv.chd.sx/api/export_ecampaign_callback.php</callbackUrl>
+ </importMembers>
+ </manageGroup>
+</ecampaign>");
+
+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 @@
+<?php
+/**
+ * Copyright 2016 Ludovic Pouzenc <ludovic@pouzenc.fr>
+ * Copyright 2016 Cyril Gousse <contact@cyril.fr>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+**/
+
+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('<?xml version="1.0" encoding="UTF-8"?><groupMembers/>');
+
+$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,
+);
+