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

Source for file Composite.php

Documentation is available at Composite.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  3. /**
  4.  * Holiday.php
  5.  *
  6.  * PHP Version 5
  7.  *
  8.  * Copyright (c) 1997-2008 The PHP Group
  9.  *
  10.  * This source file is subject to version 3.0 of the PHP license,
  11.  * that is bundled with this package in the file LICENSE, and is
  12.  * available at through the world-wide-web at
  13.  * http://www.php.net/license/3_01.txt.
  14.  * If you did not receive a copy of the PHP license and are unable to
  15.  * obtain it through the world-wide-web, please send a note to
  16.  * license@php.net so we can mail you a copy immediately.
  17.  *
  18.  * @category Date
  19.  * @package  Date_Holidays
  20.  * @author   Carsten Lucke <luckec@tool-garage.de>
  21.  * @license  http://www.php.net/license/3_01.txt PHP License 3.0.1
  22.  * @version  CVS: $Id$
  23.  * @link     http://pear.php.net/package/Date_Holidays
  24.  */
  25.  
  26. /**
  27.  * Filter not found
  28.  *
  29.  * @access  public
  30.  */
  31. define('DATE_HOLIDAYS_FILTER_NOT_FOUND'200);
  32.  
  33. /**
  34.  * Class that acts like a single filter but actually is a compound of
  35.  * an arbitrary number of filters.
  36.  *
  37.  * @category   Date
  38.  * @package    Date_Holidays
  39.  * @subpackage Filter
  40.  * @author     Carsten Lucke <luckec@tool-garage.de>
  41.  * @license    http://www.php.net/license/3_01.txt PHP License 3.0.1
  42.  * @version    CVS: $Id$
  43.  * @link       http://pear.php.net/package/Date_Holidays
  44.  */
  45. {
  46.     /**
  47.      * List of filters.
  48.      *
  49.      * @access   private
  50.      * @var      array 
  51.      */
  52.     var $_filters = array();
  53.  
  54.     /**
  55.      * Constructor.
  56.      */
  57.     function __construct()
  58.     {
  59.         parent::__construct(array());
  60.     }
  61.  
  62.     /**
  63.      * Constructor.
  64.      */
  65.     function Date_Holidays_Filter_Composite()
  66.     {
  67.         $this->__construct();
  68.     }
  69.  
  70.     /**
  71.      * Lets the filter decide whether a holiday shall be processed or not.
  72.      *
  73.      * @param string $holiday a holidays' internal name
  74.      *
  75.      * @return   boolean true, if a holidays shall be processed, false otherwise
  76.      */
  77.     function accept($holiday)
  78.     {
  79.         foreach (array_keys($this->_filtersas $fId{
  80.             if ($this->_filters[$fId]->accept($holiday)) {
  81.                 return true;
  82.             }
  83.         }
  84.         return false;
  85.     }
  86.  
  87.     /**
  88.      * Add a filter to the compound.
  89.      *
  90.      * @param Date_Holidays_Filter $filter filter object
  91.      *
  92.      * @access   public
  93.      * @return   boolean true on success, false otherwise
  94.      */
  95.     function addFilter($filter)
  96.     {
  97.         if (is_a($filter'Date_Holidays_Filter')) {
  98.             return false;
  99.         }
  100.  
  101.         $id                  md5(serialize($filter));
  102.         $this->_filters[$id$filter;
  103.         return true;
  104.     }
  105.  
  106.     /**
  107.      * Remove a filter from the compound.
  108.      *
  109.      * @param Date_Holidays_Filter $filter filter object
  110.      *
  111.      * @access   public
  112.      * @return   boolean     true on success, otherwise a PEAR_Error object
  113.      * @throws   PEAR_Error  DATE_HOLIDAYS_FILTER_NOT_FOUND
  114.      */
  115.     function removeFilter($filter)
  116.     {
  117.         if (is_a($filter'Date_Holidays_Filter')) {
  118.             return false;
  119.         }
  120.  
  121.         $id md5(serialize($filter));
  122.         // unset filter object
  123.         if (isset($this->_filters[$id])) {
  124.             return Date_Holidays::raiseError(DATE_HOLIDAYS_FILTER_NOT_FOUND,
  125.                                              'Filter not found');
  126.         }
  127.         unset($this->_drivers[$id]);
  128.         return true;
  129.     }
  130. }
  131. ?>

Documentation generated on Tue, 22 Jan 2013 01:00:07 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.