%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/Clickatell.php

<?php

namespace humhub\modules\sms\components;

use Yii;
use humhub\models\Setting;

/**
 * Clickatell implements the interface to the Clickatell Sms Provider Api.
 *
 * @see //sms/docs/clickatell_http_sms_api.pdf
 *
 * @author Sebastian Stumpf
 *
 */
class Clickatell
{

    public $baseUrl;
    public $api_id;
    public $user_id;
    public $pass;

    function __construct()
    {
        $this->baseUrl = "http://api.clickatell.com/http/sendmsg";
        $this->api_id = Setting::Get('apiid_clickatell', 'sms');
        $this->user_id = Setting::Get('username_clickatell', 'sms');
        $this->pass = Setting::Get('password_clickatell', '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)
    {

        $values = array();
        foreach (explode("\n", $response) as $line) {
            $keyValuePair = explode(":", $line);
            if (sizeof($keyValuePair) >= 2) {
                $values[$keyValuePair[0]] = $keyValuePair[1];
            }
        }

        $retVal = array();
        $retVal['furtherInfo'] = $values;

        if (array_key_exists('ERR', $values)) {
            $retVal['error'] = true;
            $errorInfo = explode(", ", $values['ERR']);
            if (sizeof($errorInfo) >= 2) {
                $retVal['statusMsg'] = $errorInfo[1];
            } else {
                $retVal['statusMsg'] = $values['ERR'];
            }
        } else if (array_key_exists('ID')) {
            $retVal['error'] = false;
            $retVal['statusMsg'] = Yii::t('SmsModule.base', 'SMS has been successfully sent.');
        } else {
            $retVal['error'] = true;
            $retVal['statusMsg'] = Yii::t('SmsModule.base', 'An unknown error occurred.');
        }

        return $retVal;
    }

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

        $url = ($this->baseUrl) . "?";
        $url .= http_build_query(array(
            'api_id' => $this->api_id,
            'user' => $this->user_id,
            'pass' => $this->pass,
            'to' => $receiver,
            'text' => $msg,
            'from' => $sender,
        ));
        return $url;
    }

}

?>

Zerion Mini Shell 1.0