Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class GETRequest {
- private $requestUrl;
- public function __construct($url,$params) {
- $this->requestUrl = $url."?".http_build_query($params);
- }
- public function send() {
- return file_get_contents($this->requestUrl);
- }
- }
- class User {
- public function register($telNum,$subId) {
- if ($this->get($telNum) == null) {
- $first_visit_at = date ("Y-m-d H:i:s");
- $query = sprintf("INSERT INTO users (user_id,sub_id,first_visit_at) VALUES('%s',%d,'%s') ",
- mysql_real_escape_string($telNum),$subId,$first_visit_at);
- mysql_query($query) or die(mysql_error());
- }
- }
- public function saveCode($telNum,$code){
- $query = sprintf("UPDATE users set access_code='%s' WHERE user_id='%s'",
- mysql_real_escape_string($code),
- mysql_real_escape_string($telNum)
- );
- mysql_query($query) or die(mysql_error());
- }
- public function get($telNum) {
- $query=sprintf("SELECT * FROM users where user_id ='%s'",
- mysql_real_escape_string($telNum));
- $result=mysql_query($query) or die(mysql_error());
- $num=mysql_numrows($result);
- if ($num == 0 ) return null; else
- return mysql_fetch_object($result);
- }
- public function subscribe($telNum) {
- if ($this->get($telNum)!=null) {
- $subscribed_at = date ("Y-m-d H:i:s");
- $query = sprintf("UPDATE users set subscribed=1, subscribed_at='%s' WHERE user_id='%s'",
- $subscribed_at,
- mysql_real_escape_string($telNum)
- );
- mysql_query($query) or die(mysql_error());
- }
- }
- public function unSubscribe($telNum) {
- $query = sprintf(
- "INSERT INTO unsubscriptions (smsid,unsubscribe_date,user_id,sub_id,skey)
- VALUES('%s','%s','%s','%s','%s')",
- $_GET['smsid'],
- $_GET['date'],
- $_GET['user_id'],
- $_GET['sub_id'],
- $_GET['skey']);
- mysql_query($query) or die(mysql_error());
- if ($this->get($telNum)!==null) {
- $unsubscribed_at = date ("Y-m-d H:i:s");
- $query = sprintf("UPDATE users set subscribed = 0, unsubscribed_at='%s' WHERE user_id='%s'",
- $unsubscribed_at,
- mysql_real_escape_string($telNum));
- mysql_query($query) or die(mysql_error());
- }
- }
- public function canAccess($telNum,$code) {
- $query=sprintf("SELECT * FROM users where (user_id ='%s') and (subscribed=1) and access_code='%s'",
- mysql_real_escape_string($telNum),
- mysql_real_escape_string($code));
- $result=mysql_query($query) or die(mysql_error());
- $num=mysql_numrows($result);
- return $num > 0;
- }
- }
- class MTSubsriptionEventHandler {
- private $user;
- public function __construct() {
- $this->user = new User();
- }
- public function onRegisterUser($telNum,$subId) {
- $user = $this->user->get($telNum);
- if ($user == null) {
- $this->user->register($telNum,$subId);
- }
- }
- public function onCheckCode($telNum,$code,$successfull) {
- if ($successfull) {
- $user = $this->user->get($telNum);
- if ($user == null || $user->access_code != $code) {
- $this->user->saveCode($telNum,$code);
- $this->user->subscribe($telNum);
- }
- }
- }
- public function onReBill() {
- $query = sprintf(
- "INSERT INTO payments (smsid,payment_date,cost,currency,abonent_cost,abonent_currency,user_id,num,operator_id,country_id,sub_id,skey,pay_status,period) VALUES('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s')",
- $_GET['smsid'],
- $_GET['date'],
- $_GET['cost'],
- $_GET['currency'],
- $_GET['abonent_cost'],
- $_GET['abonent_currency'],
- $_GET['user_id'],
- $_GET['num'],
- $_GET['operator_id'],
- $_GET['country_id'],
- $_GET['sub_id'],
- $_GET['skey'],
- $_GET['pay_status']=='ok'?1:0,
- $_GET['period']);
- mysql_query($query) or die(mysql_error());
- }
- public function onUnSubscribe() {
- $telNum = isset($_GET['user_id'])?$_GET['user_id']:null;
- if ($telNum != null) {
- $this->user->unSubscribe($telNum);
- }
- }
- }
- class MTSubscription {
- private $login;
- private $password;
- private $subsriptionId;
- private $siteUrl;
- private $eventHandler;
- function __construct($params) {
- $this->login = $params['login'];
- $this->password = $params['password'];
- $this->subscriptionId = $params['subscriptionId'];
- $this->siteUrl = $params['siteUrl'];
- $this->eventHandler = new MTSubsriptionEventHandler();
- }
- private function processRegisterUserResponse($responseXml) {
- try {
- $response = new SimpleXMLElement($responseXml);
- if (isset($response->message) && $response->message == "ok") {
- echo "OK";
- return true;
- } else if (isset($response->errors[0]->error)){
- echo $response->errors[0]->error;
- return false;
- } else {
- echo "unknown error";
- return false;
- }
- } catch (exception $e) {
- echo "parse error";
- return false;
- }
- }
- private function processCheckCodeResponse($responseXml) {
- try {
- $response = new SimpleXMLElement($responseXml);
- if (isset($response->message)
- && $response->message == "ok"
- && isset($response->sub_id)
- && isset($response->user_id)) {
- return $response;
- } else if (isset($response->errors[0]->error)){
- echo $response->errors[0]->error;
- return $false;
- } else {
- echo "unknown error";
- return false;
- }
- } catch (exception $e) {
- echo "parse error";
- return false;
- }
- }
- public function registerUser($telNumber,$sub_id) {
- $user = new User();
- $user->register($telNumber,$sub_id);
- $request = new GETRequest($this->siteUrl."/reg_user",
- array(
- 'abonent'=>$telNumber,
- 'sub_id'=>$this->subscriptionId,
- 'login'=>$this->login,
- 'password'=>$this->password
- ));
- $responseXml = $request->send();
- $sucessfull = $this->processRegisterUserResponse($responseXml);
- }
- public function checkCode($code) {
- $request = new GETRequest($this->siteUrl."/check_code",
- array(
- 'code'=>$code,
- 'login'=>$this->login,
- 'password'=>$this->password
- )
- );
- $responseXml = $request->send();
- $response = $this->processCheckCodeResponse($responseXml);
- if ($response !== false) {
- $eventHandler->onCheckCode($response->user_id,$code,true);
- return true;
- } else {
- return false;
- }
- }
- }
- $username="root";
- $password="123456";
- $database="subscription_db";
- mysql_connect('localhost',$username,$password);
- @mysql_select_db($database) or die( "Unable to select database");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement