File "fidelity.class.php"
Full Path: /srv/www/www.cadoro.it/src/classes/fidelity.class.php
File size: 5.35 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace classes;
// Carte fedeltà :
// 0401000000203 Attiva
// 0401001233730 Aggregata
// 0401000000326 Aggregante
// 0401000123193 Bloccata
// Gift card:
// 9800851674310 Scaduta
// 9800851311024 Attiva
class Fidelity {
static private function Execute($sql, $target="tessere", $first=false, $cache=true) {
global $memcached;
$r = null; # $cache ? $memcached->get("CADORO:WS:" . md5($sql)) : null;
if ($r) {
return json_decode($r, true);
}
if (DEBUG) {
$url = "http://89.251.185.23/devel.php";
$secret = "CADORO$321";
} else {
$url = "http://89.251.185.23/index.php";
$secret = "CADORO%123";
}
$data = array(
"sql" => $sql,
"secret" => md5($sql . $secret),
"target" => $target,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "api:cadoro.it");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 10000);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
if (preg_match('/(040[0-9]{10,})/', $sql, $matches)) {
$card = $matches[1];
} else {
$card = null;
}
\models\WSLog::add(array(
"card" => $card,
"request" => $sql,
"response" => $result,
));
if ($result == 'QUERY ERROR') {
$result = null;
} else{
$result = json_decode($result, true);
$result = $result ? ($first ? $result[0] : $result) : null;
if ($result) {
$memcached->set("CADORO:WS:" . md5($sql), json_encode($result), 60);
}
}
return $result;
}
static public function escape($data) {
if ( !isset($data) or empty($data) ) return '';
if ( is_numeric($data) ) return $data;
$non_displayables = array(
'/%0[0-8bcef]/', // url encoded 00-08, 11, 12, 14, 15
'/%1[0-9a-f]/', // url encoded 16-31
'/[\x00-\x08]/', // 00-08
'/\x0b/', // 11
'/\x0c/', // 12
'/[\x0e-\x1f]/' // 14-31
);
foreach ( $non_displayables as $regex )
$data = preg_replace( $regex, '', $data );
$data = str_replace("'", "''", $data );
return $data;
}
static public function CheckNuovaTessera($card, $store) {
return Fidelity::Execute(sprintf("exec sp_EXT_CheckNuovaTessera '%s', '%s'", $card, $store), "tessere", true);
}
static public function GetTessera($card) {
if($card) return Fidelity::Execute(sprintf("exec sp_EXT_GetTessera_2 '%s'", $card), "tessere", true);
}
static public function SetAnagrafica($card, $code='01', $params=array()) {
return Fidelity::Execute(sprintf("exec sp_EXT_SetAnagrafica_2 '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s'",
$card,
$code,
Fidelity::escape($params['lastname']),
Fidelity::escape($params['firstname']),
Fidelity::escape($params['address']),
Fidelity::escape($params['address_no']),
Fidelity::escape($params['zipcode']),
Fidelity::escape($params['city']),
Fidelity::escape($params['province']),
Fidelity::escape($params['phone']),
Fidelity::escape($params['mobile']),
Fidelity::escape(_dd($params['birthday'])),
Fidelity::escape($params['gender']),
Fidelity::escape($params['email']),
Fidelity::escape($params['privacy1'] ? 'S' : 'N'),
Fidelity::escape($params['privacy2'] ? 'S' : 'N'),
Fidelity::escape($params['privacy3'] ? 'S' : 'N'),
Fidelity::escape(sprintf("%03d", $params['store']))
), "tessere", true, false);
}
static public function GetNuovaTessera($card) {
return Fidelity::Execute(sprintf("exec sp_EXT_GetNuovaTessera '%s'", $card), "tessere", true, false);
}
static public function SetPunti($card, $points) {
if($card) return Fidelity::Execute(sprintf("exec sp_EXT_SetPunti '%s', '%s'", $card, $points), "tessere", true, false);
}
static public function GetMigrazione($card) {
if($card) return Fidelity::Execute(sprintf("exec sp_EXT_GetMigrazione '%s'", $card), "tessere", true);
}
static public function GetGift($card, $card2) {
return Fidelity::Execute(sprintf("exec sp_EXT_GetGift '%s', '%s'", $card, $card2), "gift", true);
}
static public function BuoniPasto($id) {
return Fidelity::Execute(sprintf("SELECT * FROM VW_EXT_Negozi_Buonipasto WHERE NEGOZIO = '" . sprintf("%03d", $id*1) . "';"), "tessere", false);
}
static public function Orari($id) {
return Fidelity::Execute(sprintf("SELECT * FROM VW_EXT_Orari WHERE NEGOZIO = '" . sprintf("%03d", $id*1) . "';"), "tessere", false);
}
static public function Aziende() {
return Fidelity::Execute(sprintf("SELECT * FROM VW_EXT_Aziende;"), "tessere", false);
}
static public function Negozi() {
return Fidelity::Execute(sprintf("SELECT * FROM VW_EXT_Negozi;"), "tessere", false);
}
}
?>