Services_Apns
[ class tree: Services_Apns ] [ index: Services_Apns ] [ all elements ]

Source for file Alert.php

Documentation is available at Alert.php

  1. <?php
  2.  
  3. /**
  4.  * Simple alert entity implementation for
  5.  * Apple Push Notification Service (APNS) gateway
  6.  *
  7.  * This file contains simple alert implementation
  8.  * that can be sent to Apple Push Notifications Service (APNS).
  9.  * 
  10.  * PHP version 5
  11.  *
  12.  * LICENSE:
  13.  *
  14.  * Copyright (c) 2013, Yahav Gindi Bar; Pear Technology Investments, Ltd.
  15.  * All rights reserved.
  16.  *
  17.  * Redistribution and use in source and binary forms, with or without
  18.  * modification, are permitted provided that the following conditions
  19.  * are met:
  20.  *
  21.  *  * Redistributions of source code must retain the above copyright
  22.  *    notice, this list of conditions and the following disclaimer.
  23.  *  * Redistributions in binary form must reproduce the above copyright
  24.  *    notice, this list of conditions and the following disclaimer in
  25.  *    the documentation and/or other materials provided with the distribution.
  26.  *  * Neither the name of the PHP_LexerGenerator nor the names of its
  27.  *    contributors may be used to endorse or promote products derived
  28.  *    from this software without specific prior written permission.
  29.  *
  30.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
  31.  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
  32.  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  33.  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  34.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  35.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  36.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  37.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  38.  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  39.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  40.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  41.  *
  42.  * @category  Services
  43.  * @package   Services_Apns
  44.  * @author    Yahav Gindi Bar <g.b.yahav@gmail.com>
  45.  * @copyright 2013 Yahav Gindi Bar
  46.  * @license   http://www.opensource.org/licenses/bsd-license.php The BSD License
  47.  * @version   SVN: $Id:$
  48.  * @link      https://github.com/YahavGB/Services_APNS
  49.  */
  50.  
  51. // {{{ Services_Apns_Alert
  52.  
  53. /**
  54.  * Alert entity that can be used as a message body
  55.  * to query Apple Push Notifications Service.
  56.  * 
  57.  * An alert is a plain message. However, you can use an alert to
  58.  * specify a localization key from your plist file for localization.
  59.  * 
  60.  * In addition, you can send extra arguments,
  61.  * in case you've used them in the localization strings.
  62.  *
  63.  * @category  Services
  64.  * @package   Services_Apns
  65.  * @author    Yahav Gindi Bar <g.b.yahav@gmail.com>
  66.  * @copyright 2013 Yahav Gindi Bar
  67.  * @license   http://www.opensource.org/licenses/bsd-license.php The BSD License
  68.  * @version   Release: 0.1.0
  69.  * @link      https://github.com/YahavGB/Services_APNS
  70.  */
  71. {
  72.     /// {{{ Properties
  73.     
  74.     /**
  75.     * The alert body
  76.     * @var string|null
  77.     */
  78.     protected $body = null;
  79.  
  80.     /**
  81.     * The action localized key
  82.     * @var string|null
  83.     */
  84.     protected $bodyLocalizedKey = null;
  85.     
  86.     /**
  87.     * Additional arguments for body localization
  88.     * @var array 
  89.     */
  90.     protected $bodyLocalizedArgs = array();
  91.     
  92.     /**
  93.     * The action localized key
  94.     * @var string|null
  95.     */
  96.     protected $actionLocalizedKey = null;
  97.  
  98.     /**
  99.     * Path to a launch image to use
  100.     * @var string|null
  101.     */
  102.     protected $launchImage = null;
  103.     
  104.     /// }}}
  105.     
  106.     /// {{{ ctor
  107.     
  108.     /**
  109.     * Construct a new Alert message
  110.     * 
  111.     * @param string|null$body               The message body.
  112.     * @param string|null$localizedBodyKey   The body localized key
  113.     * @param array       $bodyLocalizedArgs  The body localized arguments
  114.     * @param string|null$actionLocalizedKey The action localized key
  115.     * @param string|null$launchImage        A launch image to display
  116.     */
  117.     public function __construct($body$localizedBodyKey = null,
  118.         array $bodyLocalizedArgs = array()$actionLocalizedKey = null,
  119.         $launchImage = null
  120.     {
  121.         $this->setBody($body);
  122.         
  123.         $this->setBodyLocalizedKey($localizedBodyKey);
  124.         
  125.         $this->setBodyLocalizationArgs($bodyLocalizedArgs);
  126.         
  127.         $this->setActionLocalizedKey($actionLocalizedKey);
  128.         
  129.         $this->setLaunchImage($launchImage);
  130.     }
  131.     
  132.     /// }}}
  133.     
  134.     /// {{{ Getters & Setters
  135.     
  136.     /**
  137.     * Set the alert body
  138.     * 
  139.     * @param string $value The body value to assign
  140.     * 
  141.     * @return Services_Apns_Message_Alert 
  142.     */
  143.     public function setBody($value)
  144.     {
  145.         if (!is_null($value&& !is_scalar($value)) {
  146.             throw new Services_Apns_Exception(
  147.                 'The value must be null or a scalar type.'
  148.             );
  149.         }
  150.         
  151.         $this->body = $value;
  152.         return $this;
  153.     }
  154.     
  155.     /**
  156.     * Gets the alert body
  157.     * 
  158.     * @return string|null
  159.     */
  160.     public function getBody()
  161.     {
  162.         return $this->body;
  163.     }
  164.     
  165.     /**
  166.     * Set the alert action localized key
  167.     * 
  168.     * @param string|null$value The localized action key string
  169.     * 
  170.     * @return Services_Apns_Message_Alert 
  171.     */
  172.     public function setActionLocalizedKey($value)
  173.     {
  174.         if (!is_null($value&& !is_string($value)) {
  175.             throw new Services_Apns_Exception(
  176.                 'The value must be null or a string type.'
  177.             );
  178.         }
  179.         
  180.         $this->actionLocalizedKey = $value;
  181.         return $this;
  182.     }
  183.     
  184.     /**
  185.     * Gets the action localized key
  186.     * 
  187.     * @return string|null
  188.     */
  189.     public function getActionLocalizedKey()
  190.     {
  191.         return $this->actionLocalizedKey;
  192.     }
  193.  
  194.     /**
  195.     * Set the alert body localized key
  196.     * 
  197.     * @param string|null$value The alert body localized key
  198.     * 
  199.     * @return Services_Apns_Message_Alert 
  200.     */
  201.     public function setBodyLocalizedKey($value)
  202.     {
  203.         if (!is_null($value&& !is_string($value)) {
  204.             throw new Services_Apns_Exception(
  205.                 'The value must be null or a string type.'
  206.             );
  207.         }
  208.         
  209.         $this->bodyLocalizedKey = $value;
  210.         return $this;
  211.     }
  212.     
  213.     /**
  214.     * Gets the body localized key
  215.     *
  216.     * @return string|null
  217.     */
  218.     public function getBodyLocalizedKey()
  219.     {
  220.         return $this->bodyLocalizedKey;
  221.     }
  222.  
  223.     /**
  224.     * Set the alert launch image to use
  225.     * in case the user requested to open the App.
  226.     * 
  227.     * @param string|null$value The launch image file path
  228.     * 
  229.     * @return Services_Apns_Message_Alert 
  230.     */
  231.     public function setLaunchImage($value)
  232.     {
  233.         if (!is_null($value&& !is_string($value)) {
  234.             throw new Services_Apns_Exception(
  235.                 'The value must be null or a string type.'
  236.             );
  237.         }
  238.         
  239.         $this->launchImage = $value;
  240.         return $this;
  241.     }
  242.     
  243.     /**
  244.     * Gets the launch image
  245.     * 
  246.     * @return string|null
  247.     */
  248.     public function getLaunchImage()
  249.     {
  250.         return $this->launchImage;
  251.     }
  252.     
  253.     /**
  254.     * Set the alert body localization args
  255.     * 
  256.     * @param array $args The alert body localized message extra args
  257.     * 
  258.     * @return Services_Apns_Message_Alert 
  259.     */
  260.     public function setBodyLocalizationArgs(array $args)
  261.     {
  262.         $args = array_values($args);
  263.         foreach ($args as $arg{
  264.             if (!is_scalar($arg)) {
  265.                 throw new Services_Apns_Exception(
  266.                     'Each argument value must be a scalar type.'
  267.                 );
  268.             }
  269.         }
  270.         
  271.         $this->bodyLocalizedArgs = $args;
  272.         return $this;
  273.     }
  274.     
  275.     /**
  276.     * Gets the body localization args
  277.     * 
  278.     * @return array 
  279.     */
  280.     public function getBodyLocalizationArgs()
  281.     {
  282.         return $this->bodyLocalizedArgs;
  283.     }
  284.     
  285.     /// }}}
  286.     
  287.     /// {{{ getPayload()
  288.     
  289.     /**
  290.     * Get the alert message data payload as array
  291.     * 
  292.     * @return array 
  293.     */
  294.     public function getPayload()
  295.     {
  296.         $payload = array();
  297.         
  298.         if (!is_null($this->actionLocalizedKey)) {
  299.             $payload['loc_key'$this->actionLocalizedKey;
  300.         }
  301.         
  302.         if (!is_null($this->bodyLocalizedKey)) {
  303.             $payload['loc_key'$this->bodyLocalizedKey;
  304.         else if (!is_null($this->body)) {
  305.             $payload['body'trim($this->body);
  306.         }
  307.         
  308.         if (!is_null($this->launchImage)) {
  309.             $payload['launch_image'$this->launchImage;
  310.         }
  311.         
  312.         if (count($this->bodyLocalizedArgs> 0{
  313.             $payload['loc_args'$this->bodyLocalizedArgs;
  314.         }
  315.         
  316.         // If we didn't got any special argument, and we're not localizing this value
  317.         // we don't need an nested array and can just return the plain raw value
  318.         if (count($payload=== 1
  319.             && !isset($payload['loc_key'])
  320.         {
  321.             return $payload['body'];
  322.         }
  323.         
  324.         return $payload;
  325.     }
  326.     
  327.     /// }}}
  328. }
  329.  
  330. /*
  331.  * Local variables:
  332.  * tab-width: 4
  333.  * c-basic-offset: 4
  334.  * c-hanging-comment-ender-p: nil
  335.  * End:
  336. */

Documentation generated on Tue, 19 Feb 2013 14:30:02 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.