%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/sms/components/
Upload File :
Create Path :
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/sms/components/Sms77.php

<?php

namespace humhub\modules\sms\components;

use Yii;
use humhub\models\Setting;

/**
 * Sms77 implements the interface to the Sms77 Sms Provider Api.
 *
 * @see https://www.sms77.io/en/docs/gateway/http-api/sms-disptach/
 *
 * @author sms77 e.K.
 *
 */
class Sms77
{

    public $baseUrl;
    public $apiKey;

    function __construct()
    {
        $this->baseUrl = "https://gateway.sms77.io/api/sms";
        $this->apiKey = Setting::Get('apikey_sms77', 'sms');
    }

    /**
     * @see SmsProvider.sendSms(...)
     */
    public function sendSms($sender, $receiver, $msg)
    {
        $url = $this->generateUrl($sender, $receiver, $msg);
        $handle = fopen($url, "rb");
        $retVal = array();
        if ($handle == false) {
            $retVal['error'] = true;
            $retVal['statusMsg'] = Yii::t('SmsModule.base', 'Could not open connection to SMS-Provider, please contact an administrator.');
        } else {
            $serverResponse = stream_get_contents($handle);
            $retVal = $this->interpretResponse($serverResponse);
        }
        return $retVal;
    }

    /**
     * Interpret a string response from the server and convert to a predefined array.
     * @param string $response the server response to a send sms.
     * @return array[string] an array containing following keys: {error, statusMsg, furtherInfo}, where error is true/false, statusMsg the status message and furtherInfo an array with further information
     *  
     */
    private function interpretResponse($response)
    {
        $json = json_decode($response, true);

        switch ((int)$json['success']) {
            case 100:
                $success = true;
                $msg = 'SMS has been successfully sent.';
                break;
            case 101:
                $msg = 'Transmission to at least one recipient failed.';
                break;
            case 201:
                $msg = 'Sender invalid. A maximum of 11 alphanumeric or 16 numeric characters are allowed.';
                break;
            case 202:
                $msg = 'Recipient number invalid.';
                break;
            case 301:
                $msg = 'Variable to not set.';
                break;
            case 305:
                $msg = 'Variable text not set.';
                break;
            case 401:
                $msg = 'Variable text is too long.';
                break;
            case 402:
                $msg = 'Reload Lock – this SMS has already been sent within the last 180 seconds.';
                break;
            case 403:
                $msg = 'Max. limit per day reached for this number.';
                break;
            case 500:
                $msg = 'Too little credit available.';
                break;
            case 600:
                $msg = 'Carrier delivery failed.';
                break;
            case 700:
                $msg = 'Unknown error.';
                break;
            case 900:
                $msg = 'Authentication failed. Please check your api key.';
                break;
            case 903:
                $msg = 'Server IP is wrong.';
                break;
            default:
                $msg = 'An unknown error occurred.';
                break;
        }

        $i = 1;
        foreach ($json['messages'] as $message) {
            foreach ($message as $key => $value) {
                $json['message_' . $i . '_' . $key] =
                    is_array($value) ? implode(',', $value) : $value;
            }

            $i++;
        }
        unset($json['messages']);

        $retVal = [
            'error' => !isset($success),
            'furtherInfo' => $json,
            'statusMsg' => Yii::t('SmsModule.base', $msg),
        ];

        return $retVal;
    }

    /**
     * Build SMS API Url
     */
    private function generateUrl($sender, $receiver, $msg)
    {

        $url = $this->baseUrl . "?";
        $url .= http_build_query(array(
            'p' => $this->apiKey,
            'json' => 1,
            'SentWith' => 'HumHub',
            'to' => $receiver,
            'text' => $msg,
            'from' => $sender,
        ));
        return $url;
    }

}

?>

Zerion Mini Shell 1.0