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

Source for file Application.php

Documentation is available at Application.php

  1. <?php
  2. /**
  3.  * Copyright (c) 2009-2013, Laurent Laville <pear@laurent-laville.org>
  4.  *                          Bertrand Mansion <bmansion@mamasam.com>
  5.  *
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  *
  12.  *     * Redistributions of source code must retain the above copyright
  13.  *       notice, this list of conditions and the following disclaimer.
  14.  *     * Redistributions in binary form must reproduce the above copyright
  15.  *       notice, this list of conditions and the following disclaimer in the
  16.  *       documentation and/or other materials provided with the distribution.
  17.  *     * Neither the name of the authors nor the names of its contributors
  18.  *       may be used to endorse or promote products derived from this software
  19.  *       without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  22.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
  25.  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  26.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  27.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  28.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  29.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  30.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  31.  * POSSIBILITY OF SUCH DAMAGE.
  32.  *
  33.  * PHP version 5
  34.  *
  35.  * @category Networking
  36.  * @package  Net_Growl
  37.  * @author   Laurent Laville <pear@laurent-laville.org>
  38.  * @author   Bertrand Mansion <bmansion@mamasam.com>
  39.  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD
  40.  * @version  SVN: $Id: Application.php 329338 2013-01-29 14:21:39Z farell $
  41.  * @link     http://growl.laurent-laville.org/
  42.  * @link     http://pear.php.net/package/Net_Growl
  43.  * @since    File available since Release 0.9.0
  44.  */
  45.  
  46. /**
  47.  * Application object for {@link Net_Growl}
  48.  *
  49.  * This object represents an application containing the notifications
  50.  * to be registered by {@link http://growl.info Growl}. Feel free to use
  51.  * your own application object as long as it implements the few public
  52.  * getter methods:
  53.  * - {@link Net_Growl_Application::getGrowlNotifications()}
  54.  * - {@link Net_Growl_Application::getGrowlIcon()}
  55.  * - {@link Net_Growl_Application::getGrowlName()}
  56.  * - {@link Net_Growl_Application::getGrowlPassword()}
  57.  * setter methods
  58.  * - {@link Net_Growl_Application::addGrowlNotifications()}
  59.  * - {@link Net_Growl_Application::setGrowlIcon()}
  60.  * - {@link Net_Growl_Application::setGrowlName()}
  61.  * - {@link Net_Growl_Application::setGrowlPassword()}
  62.  *
  63.  * @category Networking
  64.  * @package  Net_Growl
  65.  * @author   Laurent Laville <pear@laurent-laville.org>
  66.  * @author   Bertrand Mansion <bmansion@mamasam.com>
  67.  * @license  http://www.opensource.org/licenses/bsd-license.php  BSD
  68.  * @version  Release: 2.7.0
  69.  * @link     http://growl.laurent-laville.org/
  70.  * @link     http://pear.php.net/package/Net_Growl
  71.  * @since    Class available since Release 0.9.0
  72.  */
  73. {
  74.     /**
  75.      * Name of application to be registered by Growl
  76.      * @var string 
  77.      */
  78.     private $_growlAppName;
  79.  
  80.     /**
  81.      * Password for notifications
  82.      * @var string 
  83.      */
  84.     private $_growlAppPassword '';
  85.  
  86.     /**
  87.      * Icon of application to be registered by Growl
  88.      * @var Net_Growl_Icon 
  89.      */
  90.     private $_growlAppIcon '';
  91.  
  92.     /**
  93.      * Array of notifications
  94.      * @var array 
  95.      */
  96.     private $_growlNotifications = array();
  97.  
  98.     /**
  99.      * Constructor
  100.      * Constructs a new application to be registered by Growl
  101.      *
  102.      * @param string $appName       (optional) Application name
  103.      * @param array  $notifications (optional) Array of notifications
  104.      * @param string $password      (optional) Password to be used to notify Growl
  105.      * @param string $appIcon       (optional) Application icon
  106.      *
  107.      * @return void 
  108.      * @throws InvalidArgumentException
  109.      * @see    addGrowlNotifications()
  110.      * @see    setGrowlName(), setGrowlPassword(), setGrowlIcon()
  111.      */
  112.     public function __construct($appName = null$notifications = null,
  113.         $password = null$appIcon = null
  114.     {
  115.         if (!empty($appName)) {
  116.             $this->setGrowlName($appName);
  117.         }
  118.         if (!empty($password)) {
  119.             $this->setGrowlPassword($password);
  120.         }
  121.         if (!empty($appIcon)) {
  122.             $this->setGrowlIcon($appIcon);
  123.         }
  124.         if (!empty($notifications)) {
  125.             $this->addGrowlNotifications($notifications);
  126.         }
  127.     }
  128.  
  129.     /**
  130.      * Adds notifications supported by this application
  131.      *
  132.      * Expected array format is:
  133.      * <pre>
  134.      * array('notification name' => array('option name' => 'option value'))
  135.      * </pre>
  136.      * At the moment, only option name 'enabled' is supported for UDP. Example:
  137.      * <code>
  138.      * $notifications = array('Test Notification' => array('enabled' => true));
  139.      * </code>
  140.      *
  141.      * @param array $notifications Array of notifications to support
  142.      *
  143.      * @return void 
  144.      * @throws InvalidArgumentException
  145.      */
  146.     public function addGrowlNotifications($notifications)
  147.     {
  148.         if (!is_array($notifications)) {
  149.             throw new InvalidArgumentException;
  150.         }
  151.  
  152.         $default = array('enabled' => true);
  153.         foreach ($notifications as $name => $options{
  154.             if (is_int($name)) {
  155.                 $name $options;
  156.                 $options $default;
  157.             elseif (is_array($options)) {
  158.                 $options array_merge($default$options);
  159.             }
  160.             $this->_growlNotifications[$name$options;
  161.         }
  162.     }
  163.  
  164.     /**
  165.      * Returns the notifications accepted by Growl for this application
  166.      *
  167.      * Expected array format is:
  168.      * <pre>
  169.      * array('notification name' => array('option name' => 'option value'))
  170.      * </pre>
  171.      * At the moment, only option name 'enabled' is supported. Example:
  172.      * <code>
  173.      * $notifications = array('Test Notification' => array('enabled' => true));
  174.      * return $notifications;
  175.      * </code>
  176.      *
  177.      * @return array notifications
  178.      */
  179.     public function getGrowlNotifications()
  180.     {
  181.         return $this->_growlNotifications;
  182.     }
  183.  
  184.     /**
  185.      * Sets the application name for registration in Growl
  186.      *
  187.      * @param string $appName Application name
  188.      *
  189.      * @return void 
  190.      * @throws InvalidArgumentException
  191.      * @see getGrowlName()
  192.      */
  193.     public function setGrowlName($appName)
  194.     {
  195.         if (!is_string($appName)) {
  196.             throw new InvalidArgumentException;
  197.         }
  198.         $this->_growlAppName $appName;
  199.     }
  200.  
  201.     /**
  202.      * Returns the application name for registration in Growl
  203.      *
  204.      * @return string application name
  205.      * @see setGrowlName()
  206.      */
  207.     public function getGrowlName()
  208.     {
  209.         return $this->_growlAppName;
  210.     }
  211.  
  212.     /**
  213.      * Sets the password to be used by Growl to accept notification packets
  214.      *
  215.      * @param string $password Password to be used to notify Growl
  216.      *
  217.      * @return void 
  218.      * @throws InvalidArgumentException
  219.      * @see getGrowlPassword()
  220.      */
  221.     public function setGrowlPassword($password)
  222.     {
  223.         if (!is_string($password)) {
  224.             throw new InvalidArgumentException;
  225.         }
  226.         $this->_growlAppPassword $password;
  227.     }
  228.  
  229.     /**
  230.      * Returns the password to be used by Growl to accept notification packets
  231.      *
  232.      * @return string password
  233.      * @see setGrowlPassword()
  234.      */
  235.     public function getGrowlPassword()
  236.     {
  237.         return $this->_growlAppPassword;
  238.     }
  239.  
  240.     /**
  241.      * Sets the application icon for registration in Growl
  242.      *
  243.      * @param mixed $appIcon Application icon
  244.      *
  245.      * @return void 
  246.      * @throws InvalidArgumentException
  247.      * @see getGrowlIcon()
  248.      */
  249.     public function setGrowlIcon($appIcon)
  250.     {
  251.         if (!$appIcon instanceof Net_Growl_Icon{
  252.             if (!is_string($appIcon)) {
  253.                 throw new InvalidArgumentException(
  254.                     'Expect to be either a valid Url or a Net_Growl_Icon instance'
  255.                 );
  256.             }
  257.             $appIcon = new Net_Growl_Icon($appIcon);
  258.         }
  259.         $this->_growlAppIcon $appIcon;
  260.     }
  261.  
  262.     /**
  263.      * Returns the application icon for registration in Growl
  264.      *
  265.      * @return string application icon binary data or empty if default image
  266.      * @see setGrowlIcon()
  267.      */
  268.     public function getGrowlIcon()
  269.     {
  270.         if ($this->_growlAppIcon instanceof Net_Growl_Icon{
  271.             return $this->_growlAppIcon->getContents();
  272.         }
  273.         return '';
  274.     }
  275. }

Documentation generated on Tue, 29 Jan 2013 18:30:03 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.