<?php

require_once ("include/config.php");
require_once ("include/database.php");
require_once ("include/utils.php");


    $link = connect();

    $dataofsms = array();

    if ($_SERVER['REQUEST_METHOD'] == "POST"){
        if ($_SERVER['CONTENT_TYPE'] == "application/json"){
            $dataofsms['type'] = "json";
        } else if ($_SERVER['CONTENT_TYPE'] == "application/xml"){
            $dataofsms['type'] = "xml";
        } else {
            $dataofsms['type'] = "form";
        }
    } else {
        $dataofsms['type'] = "get";
    }

    $dataofsms['uname'] = "";
    $dataofsms['apikey'] = "";
    $dataofsms['num'] = "";
    $dataofsms['msg'] = "";
    $dataofsms['progtime'] = "";
    $dataofsms['sendgroup'] = -1;

    switch ($dataofsms['type']) {
        case "get":
            if (isset($_GET['uname']))
                $dataofsms['uname'] = strip_tags($_GET['uname']);
            if (isset($_GET['apikey']))
                $dataofsms['apikey'] = strip_tags($_GET['apikey']);
            if (isset($_GET['num']))
                $dataofsms['num'] = strip_tags($_GET['num']);
            if (isset($_GET['msg']))
                $dataofsms['msg'] = strip_tags($_GET['msg']);
            if (isset($_GET['progtime']))
                $dataofsms['progtime'] = strip_tags($_GET['progtime']);
            if (isset($_GET['sendgroup'])) 
                $dataofsms['sendgroup'] = strip_tags($_GET['sendgroup']);
            break;
        case "form":
            if (isset($_POST['uname']))
                $dataofsms['uname'] = strip_tags($_POST['uname']);
            if (isset($_POST['apikey']))
                $dataofsms['apikey'] = strip_tags($_POST['apikey']);
            if (isset($_POST['num']))
                $dataofsms['num'] = strip_tags($_POST['num']);
            if (isset($_POST['msg']))
                $dataofsms['msg'] = strip_tags($_POST['msg']);
            if (isset($_POST['progtime']))
                $dataofsms['progtime'] = strip_tags($_POST['progtime']);
            if (isset($_POST['sendgroup']))
                $dataofsms['sendgroup'] = strip_tags($_POST['sendgroup']);
            break;
        case "json":
            $entityBody = file_get_contents('php://input');       
            $jsonData = json_decode($entityBody, true);
            if (!is_null($jsonData)){
                if (isset($jsonData['uname']))
                    $dataofsms['uname'] = strip_tags($jsonData['uname']);
                if (isset($jsonData['apikey']))
                    $dataofsms['apikey'] = strip_tags($jsonData['apikey']);
                if (isset($jsonData['num']))
                    $dataofsms['num'] = strip_tags($jsonData['num']);
                if (isset($jsonData['msg']))
                    $dataofsms['msg'] = strip_tags($jsonData['msg']);
                if (isset($jsonData['progtime']))
                    $dataofsms['progtime'] = strip_tags($jsonData['progtime']);
                if (isset($jsonData['sendgroup']))
                    $dataofsms['sendgroup'] = strip_tags($jsonData['sendgroup']);
            }
            break;
        case "xml":
            break;
        default:
    }

    // Validate user & discount msg
    $sql = "select id, money, defaultpriority, limitdiary, sendgroup from users where uname='" . mysqli_real_escape_string($link, $dataofsms['uname']) . "' and apikey='" . mysqli_real_escape_string($link, $dataofsms['apikey']) . "' limit 1;";
    $query = mysqli_query($link, $sql);
    $dataofuser = array();
    $dataofuser = mysqli_fetch_array($query);

    // Fix & sanitize message and number
    $dataofsms['msg'] = urldecode($dataofsms['msg']);
    $dataofsms['msg'] = substr($dataofsms['msg'], 0, 160);
    mb_regex_encoding("UTF-8");
    //$dataofsms['msg'] = utf8_encode($dataofsms['msg']);
    $pattern = array("[ÀÁÂÃÄÅÆ]", "[ÈÉÊË]", "[ÌÍÎÏ]", "[ÒÓÔÕÖØ]", "[ÙÚÛÜ]", "[àáâãäå]", "[èéêë]", "[ìíîï]", "[òóôõöø]", "[üùúû]", "[ñ]", "[Ñ]");
    $replacement = array('A', 'E', 'I', 'O', 'U', 'a', 'e', 'i', 'o', 'u', 'n', 'N');
    for ($i=0; $i<sizeof($pattern); $i++) {
        $dataofsms['msg'] = mb_ereg_replace($pattern[$i], $replacement[$i], $dataofsms['msg']);
    }
    $dataofsms['msg'] = mb_ereg_replace ("[^A-Za-z0-9 \/\-\!\>\<\@\%\&\+\#\*\=\.\,\[\]\"\;\:\(\)\$\{\}\?\r\n\_]", "-", $dataofsms['msg']);
    $dataofsms['msg'] = substr($dataofsms['msg'], 0, 160);

    if (isset($dataofsms['progtime']) && validUserDate($dataofsms['progtime'])){
        $dataofsms['progtime'] = userDate2mySQLDate($dataofsms['progtime']);
    } else {
        $dataofsms['progtime'] = makeMySQLDate(time());
    }

    $limit = (int)($dataofuser['limitdiary']);
    if ($dataofsms['sendgroup'] == -1) {
      $dataofsms['sendgroup'] = (int) ($dataofuser['sendgroup']);
    }
    
    $validateParams['msgType'] = 0;
    $validateParams['error'] = 0;

    if (($dataofuser['id'] != "") && ($dataofsms['apikey'] != "")) {
        foreach (explodeNumbers($dataofsms['num']) as $numberItem){
            $numberItem = trim($numberItem);
            $validateParams = validateNumber($numberItem);        
            if ($validateParams['error'] == 0) {
                $dataofsms['msg'] = substr($dataofsms['msg'], 0, 160);
                if (($dataofuser['money']/$prizelocalsms) >= 1.0 ) {
                     if ($limit > (totalSentToday($dataofuser['id']) + 1)) {
                        $dataofuser['money'] = $dataofuser['money'] - $prizelocalsms;
                        $ip = getenv('REMOTE_ADDR');
                        $sql = "update users set money = '" . mysqli_real_escape_string($link, $dataofuser['money']) . "', lastip = '" . $ip . "', lastlogin = NOW() where id = '" . mysqli_real_escape_string($link, $dataofuser['id']) . "' limit 1;";
                        if (mysqli_query($link, $sql)) {
                            // Add data to message stack
                            $sql = "insert into outbox (id, usersid, number, message, status, priority, type, subtype, stack, send, prog, "
                                    . "sendgroup, ip, inter) VALUES (NULL, '" .
                                    mysqli_real_escape_string($link, $dataofuser['id']) . "', '" .
                                    mysqli_real_escape_string($link, $numberItem) . "', '" .
                                    mysqli_real_escape_string($link, $dataofsms['msg']) . "', 'W', " .
                                    ($dataofuser['defaultpriority']*1.0 + getFracPriority(getWaitingSMS($dataofuser['id']))) .
                                    ", 'API', '', NOW( ) , NULL, '" .
                                    mysqli_real_escape_string($link, $dataofsms['progtime']) . "', " .
                                    $dataofsms['sendgroup'] . ", '" . $ip . "'," . $validateParams['msgType'] . ");";
                            mysqli_query($link, $sql);
                            if (mysqli_affected_rows($link) == 1) {
                                echo "[ok][" . (int)($dataofuser['money']/$prizelocalsms) . "]\n";
                            } else {
                                echo "[insert error][" . (int)($dataofuser['money']/$prizelocalsms) . "]\n";
                            }
                        }
                    } else {
                        echo "[override limit][". (int)($dataofuser['money']/$prizelocalsms) . "]\n";;
                    }
                } else {
                    echo "[no sms left][0]";
                }
            } else {
                echo "[invalid parameters][". (int)($dataofuser['money']/$prizelocalsms) . "]\n";;
            }
        }
    } else {
        echo "[invalid password][0]\n";;
    }

    disconnect($link);

    
?>
