Source for file sms.php

Documentation is available at sms.php

  1. <?php
  2. /**
  3.  * smsAPI_HTTP_SMS
  4.  *
  5.  * Copyright (c) 2010, ComVision
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without modification,
  9.  * are permitted provided that the following conditions are met:
  10.  *
  11.  *  - Redistributions of source code must retain the above copyright notice,
  12.  *    this list of conditions and the following disclaimer.
  13.  *  - Redistributions in binary form must reproduce the above copyright notice,
  14.  *    this list of conditions and the following disclaimer in the documentation and/or
  15.  *    other materials provided with the distribution.
  16.  *  - Neither the name of the smsAPI.pl nor the names of its contributors may be used to
  17.  *    endorse or promote products derived from this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  20.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  21.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  22.  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
  23.  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  25.  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  26.  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  27.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28.  *
  29.  * @author ComVision <info@smsapi.pl>
  30.  * @copyright 2010 ComVision
  31.  * @license BSD-3
  32.  * @package smsapi
  33.  * @subpackage client\html
  34.  * @version 1.0 14.10.2010
  35.  */
  36.  
  37. /**
  38.  * Struktura danych dla send_sms
  39.  *
  40.  * @see smsAPI_HTTPClient
  41.  */
  42. class smsAPI_HTTP_SMS {
  43.  
  44.     /**
  45.      * Numer odbiorcy wiadomości w formacie 48xxxxxxxxx lub xxxxxxxxx.
  46.      *
  47.      * Np. 48505602702 lub 505602702.
  48.      *
  49.      * @var string 
  50.      */
  51.     public $to            = null;
  52.     /**
  53.      * Numer lub nazwa nadawcy wiadomości.
  54.      * 
  55.      * Pozostawienie pola pustego powoduje wysłanie wiadomości od „smsAPI.pl”.
  56.      * Przyjmowane są tylko numery i nazwy zweryfikowane. Pole nadawcy należy dodać
  57.      * po zalogowaniu na stronie smsAPI.pl, w zakładce Ustawienia → Pola nadawcy.
  58.      *
  59.      * @var string 
  60.      */
  61.     public $from        = null;
  62.     /**
  63.      * Treść wiadomości.
  64.      * 
  65.      * Standardowo do 160 znaków lub 70 znaków w przypadku wystąpienia chociaż
  66.      * jednego znaku specjalnego (polskie znaki uważane są za specjalne).
  67.      * Maksymalna długość wiadomości wynosi 457 znaków (lub 201 ze znakami
  68.      * specjalnymi) i jest wysłana jako 3 połączone SMSy, obciążając konto
  69.      * zgodnie z aktualnym cennikiem. Więcej szczegółów odnośnie znaków specjalnych
  70.      * znajduje się w dokumentacji.
  71.      *
  72.      * @see http://www.smsapi.pl/spec/smsAPI.pdf
  73.      * @var string 
  74.      */
  75.     public $message        = null;
  76.     /**
  77.      * Nazwa szablonu
  78.      *
  79.      * @deprecated
  80.      * @var string 
  81.      */
  82.     public $template    = null;
  83.     /**
  84.      * Parametr określa kodowanie polskich znaków w SMSie.
  85.      * 
  86.      * Domyślne kodowanie jest windows-1250. Jeżeli występuje konieczność zmiany
  87.      * kodowania, należy użyć parametru encoding z danymi:
  88.      * - dla iso-8859-2 (latin2) – należy podać wartość „iso-8859-2”,
  89.      * - dla utf-8 – należy podać wartość „utf-8”.
  90.      *
  91.      * @var string 
  92.      */
  93.     public $encoding    = null;
  94.     /**
  95.      * Wysyłanie wiadomości trybem „flash”,
  96.      * 
  97.      * odbywa się poprzez podanie parametru flash o wartości „1”. SMSy flash są
  98.      * automatycznie wyświetlane na ekranie głównym telefonu komórkowego i nie
  99.      * są przechowywane w skrzynce odbiorczej (jeśli nie zostaną zapisane).
  100.      *
  101.      * @var bool 
  102.      */
  103.     public $flash        = null;
  104.     /**
  105.      * W odpowiedzi zawarte jest więcej szczegółów.
  106.      *
  107.      * (Treść wiadomości, długość wiadomość, ilość części z jakich składa się wiadomość).
  108.      *
  109.      * @var bool 
  110.      */
  111.     public $details        = null;
  112.     /**
  113.      * Data w formacie timestamp.
  114.      *
  115.      * Określa kiedy wiadomość ma być wysłana.
  116.      * W przypadku wstawienia daty przeszłej wiadomość zostanie wysłana natychmiast.
  117.      *
  118.      * @var int 
  119.      */
  120.     public $date        = null;
  121.     /**
  122.      * Parametr pozwalający na wysyłanie wiadomości WAP PUSH.
  123.      *
  124.      * @var string 
  125.      */
  126.     public $datacoding    = null;
  127.     /**
  128.      * Opcjonalny parametr użytkownika wysyłany z wiadomością a następnie zwracany przy wywołaniu zwrotnym CALLBACK.
  129.      *
  130.      * @var string 
  131.      */
  132.     public $idx            = null;
  133.     /**
  134.      * @var array 
  135.      */
  136.     public $params        = null;
  137.     /**
  138.      * Ustawienie 1 zabezpiecza przed wysłaniem wiadomości składających się z kilku części. (ERROR:12)
  139.      *
  140.      * @var bool 
  141.      */
  142.     public $single        = null;
  143.     /**
  144.      * Ustawienie parametru spowoduje wysłanie wiadomości przy wykorzystaniu wiadomości Eco
  145.      *
  146.      * (brak możliwości wyboru pola nadawcy, wiadomość wysyłana z losowego
  147.      * numeru dziewięciocyfrowego) szczegóły dotyczące wiadomości Eco znajdują się na naszej
  148.      * stronie: http://www.smsapi.pl/
  149.      *
  150.      * @var bool 
  151.      */
  152.     public $eco            = null;
  153.     /**
  154.      * Ustawienie zabezpiecza przed wysłaniem wiadomości ze znakami specjalnymi (w tym polskimi)
  155.      *
  156.      * @var bool 
  157.      */
  158.     public $nounicode    = null;
  159.     /**
  160.      * Ustawienie spowoduje wysłanie wiadomości przy wykorzystaniu osobnego kanału zapewniającego szybkie doręczenie wiadomości (fastSMS).
  161.      * 
  162.      * Z parametru korzystać można wyłącznie podczas wysyłania wiadomości proSMS,
  163.      * Ilość punktów za wysyłkę pomnożona będzie przez 1.5 Uwaga! Dla tego parametru
  164.      * zabronione jest prowadzenie wysyłek masowych i marketingowych.
  165.      *
  166.      * @var bool 
  167.      */
  168.     public $priority    = null;
  169.     /**
  170.      * @var string 
  171.      */
  172.     public $udh            = null;
  173.     /**
  174.      * Wiadomość nie jest wysyłana, wyświetlana jest jedynie odpowiedź (w celach testowych).
  175.      *
  176.      * @var bool 
  177.      */
  178.     public $test        = null;
  179.  
  180.  
  181.     /**
  182.      * @ignore
  183.      * @var smsAPI_HTTPClient 
  184.      */
  185.     protected $httpclient null;
  186.  
  187.     /**
  188.      * Inicjalizacja
  189.      *
  190.      * @param array $params Tablica z parametrami
  191.      */
  192.     public function  __construct$params null$httpclient  null )
  193.     {
  194.         $this->httpclient $httpclient;
  195.         ifis_array($params) )
  196.         {
  197.             $params array_intersect_key($params$this->fields );
  198.             foreach $params as $k => $v )
  199.                 $this->$k $v;
  200.         }
  201.     }
  202.  
  203.     /**
  204.      * Dodaj nr. telefonu odbiorcy
  205.      *
  206.      * @param string 
  207.      */
  208.     public function add_to()
  209.     {
  210.         $numbers func_get_args();
  211.  
  212.         foreach $numbers as $number )
  213.         {
  214.             if$this->to === null $this->to = array$number );
  215.             else ifis_array$this->to ) ) $this->to[$number;
  216.             else $this->to = array$this->to$number );
  217.         }
  218.     }
  219.  
  220.     /**
  221.      * Wyslij wiadomosc
  222.      *
  223.      * @param smsAPI_HTTPClient $httpclient 
  224.      * @return stdClass 
  225.      */
  226.     public function send($httpclient null)
  227.     {
  228.         if!($httpclient instanceof smsAPI_HTTPClient) )
  229.             $httpclient $this->httpclient;
  230.  
  231.         if!($httpclient instanceof smsAPI_HTTPClient) )
  232.             throw new smsAPI_Exception ('Undefined HTTPClient'0);
  233.  
  234.         return $httpclient->send_sms$this );
  235.     }
  236.  
  237.     /**
  238.      *
  239.      * @ignore
  240.      * @var array 
  241.      */
  242.     protected $fields =    array(
  243.         'datacoding'    => 0,
  244.         'date'            => 0,
  245.         'details'        => 0,
  246.         'eco'            => 0,
  247.         'encoding'        => 0,
  248.         'flash'            => 0,
  249.         'from'            => 0,
  250.         'idx'            => 0,
  251.         'message'        => 0,
  252.         'nounicode'        => 0,
  253.         'params'        => 0,
  254.         'priority'        => 0,
  255.         'single'        => 0,
  256.         'template'        => 0,
  257.         'test'            => 0,
  258.         'to'            => 0,
  259.         'udh'            => 0
  260.     );
  261.  
  262.     /**
  263.      * @ignore
  264.      * @return array 
  265.      */
  266.     public function _get_params()
  267.     {
  268.         $ar array_intersect_key((array)$this$this->fields );
  269.  
  270.         ifisset$ar['to'AND is_array$ar['to') )
  271.             $ar['to'implode (','$ar['to']);
  272.  
  273.         ifisset$ar['idx'AND is_array$ar['idx') )
  274.             $ar['idx'implode ('|'$ar['idx']);
  275.  
  276.         ifisset$ar['params'AND is_array$ar['params') )
  277.         {
  278.             $c minarraycount($ar['params']4) ) );
  279.             
  280.             for$i 0$i $c $i++ )
  281.             {
  282.                 $v $ar['params'];
  283.                 ifisset($v) )
  284.                 {
  285.                     ifis_array($v) ) $v implode ('|'$v);
  286.                     $ar['param'($i+1)$v;
  287.                 }
  288.             }
  289.         }
  290.         unset$ar['params');
  291.  
  292.         ifisset$ar['message'AND isset$ar['template') )
  293.             unset$ar['template');
  294.  
  295.         return $ar;
  296.     }
  297. }

Documentation generated on Thu, 27 Jan 2011 16:17:33 +0100 by phpDocumentor 1.4.3