<commit_before><?php
/**
 * User: gbtux
 * Date: 17/12/16
 * Time: 19:54
 */

namespace Mumbee\SmsModeBundle\Service;

use Mumbee\SmsModeBundle\Entity\SmsModeResult;

/**
 * Class SmsModeService
 * @package Mumbee\SmsModeBundle\Service
 */
class SmsModeService
{
    /**
     * @var
     */
    private $urlEnvoiSms;

    /**
     * @var
     */
    private $urlCompteRenduSms;

    /**
     * @var
     */
    private $urlSoldeCompteClient;

    /**
     * @var
     */
    private $urlCreationSousCompteClient;

    /**
     * @var
     */
    private $urlSuppressionSousCompteClient;

    /**
     * @var
     */
    private $urlSuppressionSms;

    /**
     * @var
     */
    private $urlListeSms;

    /**
     * @var
     */
    private $urlStatutSms;

    /**
     * @var
     */
    private $urlListeReponsesSms;

    /**
     * Constructor
     * @param $urlEnvoiSms
     * @param $urlCompteRenduSms
     * @param $urlSoldeCompteClient
     */
    public function __construct($urlEnvoiSms, $urlCompteRenduSms, $urlSoldeCompteClient, $urlCreationSousCompteClient,
                                $urlSuppressionSousCompteClient, $urlSuppressionSms, $urlListeSms, $urlStatutSms, $urlListeReponsesSms)
    {
        $this->urlEnvoiSms = $urlEnvoiSms;
        $this->urlCompteRenduSms = $urlCompteRenduSms;
        $this->urlSoldeCompteClient = $urlSoldeCompteClient;
        $this->urlCreationSousCompteClient = $urlCreationSousCompteClient;
        $this->urlSuppressionSousCompteClient = $urlSuppressionSousCompteClient;
        $this->urlSuppressionSms = $urlSuppressionSms;
        $this->urlListeSms = $urlListeSms;
        $this->urlStatutSms = $urlStatutSms;
        $this->urlListeReponsesSms = $urlListeReponsesSms;
    }

    /**
     * @param $pseudo : pseudo du compte client (non obligatoire si utilisation de l'accessToken)
     * @param $pass : password du compte client (non obligatoire si utilisation de l'accessToken)
     * @param $message : message non formatté
     * @param array $numeros : array de numeros
     * @param null $accessToken : token à utiliser si pseudo et pass sont absents
     * @param null $emetteur : chaine affichée comme émetteur du SMS
     * @param null $groupe : si numeros vides : identifiant du groupe de numeros renseigné sur SMSMode
     * @param int $classeMsg : 2 par défaut ou 4 avec réponse autorisée
     * @param null $stop : 1 pour intégrer STOP SMS si pas de conso en +, 2 quelle que soit la conso en plus, non envoyé par défaut
     * @param \DateTime|null $dateEnvoi : si envoi non simultanné
     * @param null $refClient : utilisé en cas de compte-rendu automatique (ex : ID client en BDD)
     * @param null $notificationUrl : URL de callback lors d'un changement de statut du SMS
     * @param null $notificationUrlReponse : : URL de callback lors d'une réponse à un SMS (si classeMsg == 4)
     * @return SmsModeResult
     * @throws \Exception
     */
    public function envoyerSms($pseudo, $pass, $message,
                               array $numeros, $accessToken=null, $emetteur = null, $groupe = null, $classeMsg = 2, $stop = null,
                                \DateTime $dateEnvoi = null, $refClient = null, $notificationUrl = null, $notificationUrlReponse = null                            )
    {
        $texte = mb_convert_encoding($message, "ISO-8859-15", "auto");
        $fields = "";
        if(null == $accessToken){
            $fields = sprintf('accessToken=%s', $accessToken);
        }else{
            $fields = sprintf('pseudo=%s&pass=%s', $pseudo, $pass);
        }
        $fields .= sprintf('&message=%s', urlencode($texte));
        if((null == $numeros && null == $groupe) || empty($numeros))
            throw new \Exception('Numero ou groupe obligatoire et numero non vide');

        if(null != $numeros && !empty($numeros)){
            $phones = implode(',', $numeros);
            $fields .= sprintf('&numero=%s', $phones);
        }

        if(null == $numeros && null != $groupe)
            $fields .= sprintf('&groupe=%s', $groupe);

        if($classeMsg != 2 && $classeMsg == 4)
            $fields .= "&classe_msg=4";

        if($dateEnvoi != null)
            $fields .= sprintf('&date_envoi=%s', $dateEnvoi->format('dmY-H:i')); //ddmmyyyy-hh:mm

        if(null != $emetteur && sizeof($emetteur) <12 && $classeMsg == 2)
            $fields .= sprintf('&emetteur=%s', $emetteur);

        if($stop == 1 || $stop == 2)
            $fields .= sprintf('&stop=%d', $stop);

        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $this->urlEnvoiSms);
        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);

        $result = curl_exec($ch);

        curl_close($ch);
        return new SmsModeResult($result);
    }


    public function compteRendu($pseudo, $pass, $smsID, $accessToken=null)
    {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $this->urlCompteRenduSms);
        $fields = "";
        if(null == $accessToken){
            $fields = sprintf('accessToken=%s', $accessToken);
        }else{
            $fields = sprintf('pseudo=%s&pass=%s', $pseudo, $pass);
        }
        $fields .= sprintf('&smsID=%s', $smsID);

        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

}<commit_msg>begin compte rendu command<commit_after><?php
/**
 * User: gbtux
 * Date: 17/12/16
 * Time: 19:54
 */

namespace Mumbee\SmsModeBundle\Service;

use Mumbee\SmsModeBundle\Entity\SmsModeResult;

/**
 * Class SmsModeService
 * @package Mumbee\SmsModeBundle\Service
 */
class SmsModeService
{
    /**
     * @var
     */
    private $urlEnvoiSms;

    /**
     * @var
     */
    private $urlCompteRenduSms;

    /**
     * @var
     */
    private $urlSoldeCompteClient;

    /**
     * @var
     */
    private $urlCreationSousCompteClient;

    /**
     * @var
     */
    private $urlSuppressionSousCompteClient;

    /**
     * @var
     */
    private $urlSuppressionSms;

    /**
     * @var
     */
    private $urlListeSms;

    /**
     * @var
     */
    private $urlStatutSms;

    /**
     * @var
     */
    private $urlListeReponsesSms;

    /**
     * Constructor
     * @param $urlEnvoiSms
     * @param $urlCompteRenduSms
     * @param $urlSoldeCompteClient
     */
    public function __construct($urlEnvoiSms, $urlCompteRenduSms, $urlSoldeCompteClient, $urlCreationSousCompteClient,
                                $urlSuppressionSousCompteClient, $urlSuppressionSms, $urlListeSms, $urlStatutSms, $urlListeReponsesSms)
    {
        $this->urlEnvoiSms = $urlEnvoiSms;
        $this->urlCompteRenduSms = $urlCompteRenduSms;
        $this->urlSoldeCompteClient = $urlSoldeCompteClient;
        $this->urlCreationSousCompteClient = $urlCreationSousCompteClient;
        $this->urlSuppressionSousCompteClient = $urlSuppressionSousCompteClient;
        $this->urlSuppressionSms = $urlSuppressionSms;
        $this->urlListeSms = $urlListeSms;
        $this->urlStatutSms = $urlStatutSms;
        $this->urlListeReponsesSms = $urlListeReponsesSms;
    }

    /**
     * @param $pseudo : pseudo du compte client (non obligatoire si utilisation de l'accessToken)
     * @param $pass : password du compte client (non obligatoire si utilisation de l'accessToken)
     * @param $message : message non formatté
     * @param array $numeros : array de numeros
     * @param null $accessToken : token à utiliser si pseudo et pass sont absents
     * @param null $emetteur : chaine affichée comme émetteur du SMS
     * @param null $groupe : si numeros vides : identifiant du groupe de numeros renseigné sur SMSMode
     * @param int $classeMsg : 2 par défaut ou 4 avec réponse autorisée
     * @param null $stop : 1 pour intégrer STOP SMS si pas de conso en +, 2 quelle que soit la conso en plus, non envoyé par défaut
     * @param \DateTime|null $dateEnvoi : si envoi non simultanné
     * @param null $refClient : utilisé en cas de compte-rendu automatique (ex : ID client en BDD)
     * @param null $notificationUrl : URL de callback lors d'un changement de statut du SMS
     * @param null $notificationUrlReponse : : URL de callback lors d'une réponse à un SMS (si classeMsg == 4)
     * @return SmsModeResult
     * @throws \Exception
     */
    public function envoyerSms($pseudo, $pass, $message,
                               array $numeros, $accessToken=null, $emetteur = null, $groupe = null, $classeMsg = 2, $stop = null,
                                \DateTime $dateEnvoi = null, $refClient = null, $notificationUrl = null, $notificationUrlReponse = null                            )
    {
        $texte = mb_convert_encoding($message, "ISO-8859-15", "auto");
        $fields = "";
        if(null == $accessToken){
            $fields = sprintf('accessToken=%s', $accessToken);
        }else{
            $fields = sprintf('pseudo=%s&pass=%s', $pseudo, $pass);
        }
        $fields .= sprintf('&message=%s', urlencode($texte));
        if((null == $numeros && null == $groupe) || empty($numeros))
            throw new \Exception('Numero ou groupe obligatoire et numero non vide');

        if(null != $numeros && !empty($numeros)){
            $phones = implode(',', $numeros);
            $fields .= sprintf('&numero=%s', $phones);
        }

        if(null == $numeros && null != $groupe)
            $fields .= sprintf('&groupe=%s', $groupe);

        if($classeMsg != 2 && $classeMsg == 4)
            $fields .= "&classe_msg=4";

        if($dateEnvoi != null)
            $fields .= sprintf('&date_envoi=%s', $dateEnvoi->format('dmY-H:i')); //ddmmyyyy-hh:mm

        if(null != $emetteur && sizeof($emetteur) <12 && $classeMsg == 2)
            $fields .= sprintf('&emetteur=%s', $emetteur);

        if($stop == 1 || $stop == 2)
            $fields .= sprintf('&stop=%d', $stop);

        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $this->urlEnvoiSms);
        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);

        $result = curl_exec($ch);

        curl_close($ch);
        return new SmsModeResult($result);
    }


    public function compteRendu($pseudo, $pass, $smsID, $accessToken=null)
    {
        $fields = "";
        if(null == $accessToken){
            $fields = sprintf('accessToken=%s', $accessToken);
        }else{
            $fields = sprintf('pseudo=%s&pass=%s', $pseudo, $pass);
        }
        $fields .= sprintf('&smsID=%s', $smsID);
        var_dump($fields);die;
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $this->urlCompteRenduSms);
        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

}
{'fraction_non_alphanumeric': 0.1348717477245564, 'fraction_numerical': 0.005883975360853177, 'mean_word_length': 2.4977491961414793, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4522227', 'n_tokens_mistral': 3692, 'n_tokens_neox': 3620, 'n_words': 780}