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

Source for file Serbia.php

Documentation is available at Serbia.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  3. /**
  4.  * Serbia
  5.  *
  6.  * PHP Version 4
  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   Boban Acimovic <boban.acimovic@gmail.com>
  21.  * @license  http://www.php.net/license/3_01.txt PHP License 3.0.1
  22.  * @version  0.1
  23.  * @link     http://pear.php.net/package/Date_Holidays
  24.  */
  25.  
  26. /**
  27.  * Driver class that calculates Serbian holidays
  28.  *
  29.  * @category   Date
  30.  * @package    Date_Holidays
  31.  * @subpackage Driver
  32.  * @author     Boban Acimovic <boban.acimovic@gmail.com>
  33.  * @license    http://www.php.net/license/3_01.txt PHP License 3.0.1
  34.  * @version    0.1
  35.  * @link       http://pear.php.net/package/Date_Holidays
  36.  */
  37. class Date_Holidays_Driver_Serbia extends Date_Holidays_Driver
  38. {
  39.     /**
  40.      * Constructor
  41.      *
  42.      * Use the Date_Holidays::factory() method to construct an object of
  43.      * a certain driver
  44.      *
  45.      * @access   protected
  46.      */
  47.     function Date_Holidays_Driver_Serbia()
  48.     {
  49.     }
  50.  
  51.     /**
  52.      * Build the internal arrays that contain data about the calculated holidays
  53.      *
  54.      * @access   protected
  55.      * @return   boolean true on success, otherwise a PEAR_ErrorStack object
  56.      * @throws   object PEAR_ErrorStack
  57.      */
  58.     function _buildHolidays()
  59.     {
  60.         /**
  61.          * Nova godina
  62.          */
  63.         $this->_addHoliday('novagodina'$this->_year '-01-01''Nova godina');
  64.  
  65.         /**
  66.          * Božić - Rođenje Gospoda Isusa Hrista
  67.          */
  68.         $this->_addHoliday('bozic'$this->_year '-01-07''Božić - Rođenje Gospoda Isusa Hrista');
  69.  
  70.         /**
  71.          * Sretenje - Dan državnosti Srbije
  72.          */
  73.         $this->_addHoliday('sretenje'$this->_year '-01-15''Sretenje - Dan državnosti Srbije');
  74.  
  75.         /**
  76.          * Veliki petak
  77.          */
  78.         $this->_addHoliday('velikipetak'$this->_year $this->_getGoodFriday()'Veliki petak');
  79.  
  80.         /**
  81.          * Vaskrs
  82.          */
  83.         $this->_addHoliday('vaskrs'$this->_year $this->_getEaster()'Vaskrsenje Gospoda Isusa Hrista');
  84.  
  85.         /**
  86.          * Praznik rada
  87.          */
  88.         $this->_addHoliday('praznikrada'$this->_year '-05-01''Praznik rada');
  89.  
  90.         /**
  91.          * Dan primirja u Prvom svetskom ratu
  92.          */
  93.         $this->_addHoliday('danprimirja'$this->_year '-11-11''Dan primirja u Prvom svetskom ratu');
  94.  
  95.         if (Date_Holidays::errorsOccurred()) {
  96.             return Date_Holidays::getErrorStack();
  97.         }
  98.         return true;
  99.     }
  100.  
  101.     /**
  102.      * Helper method that Calculates Orthodox Easter date in Julian calendar
  103.      * Meeus Julian algorithm
  104.      *
  105.      * @static
  106.      * @access private
  107.      * @return string 
  108.      */
  109.     function _calcEaster()
  110.     {
  111.         $a $this->_year % 4;
  112.         $b $this->_year % 7;
  113.         $c $this->_year % 19;
  114.         $d (19 * $c + 15% 30;
  115.         $e (2 * $a + 4 * $b $d + 34% 7;
  116.         $month floor(($d $e + 114/ 31);
  117.         $day (($d $e + 114% 31+ 1;
  118.         return array($month$day);
  119.     }
  120.  
  121.     /**
  122.      * Helper method that returns formatted Orthodox Easter date
  123.      *
  124.      * @static
  125.      * @access private
  126.      * @return string 
  127.      */
  128.     function _getEaster()
  129.     {
  130.         list($month$day$this->_calcEaster();
  131.         // Add 13 days to convert from Julian to Gregorian calendar
  132.         $day += 13;
  133.         if ($day > 30{
  134.             if ($month == 5{
  135.                 $day -= 31;
  136.             }
  137.             if ($month == 4{
  138.                 $day -= 30;
  139.             }
  140.             $month++;
  141.         }
  142.         // Format numbers
  143.         $month sprintf'%02d'$month);
  144.         $day sprintf'%02d'$day);
  145.         return "-$month-$day";
  146.     }
  147.  
  148.     /**
  149.      * Helper method that returns formatted Orthodox Good Friday date
  150.      *
  151.      * @static
  152.      * @access private
  153.      * @return string 
  154.      */
  155.     function _getGoodFriday()
  156.     {
  157.         list($month$day$this->_calcEaster();
  158.         // Add 13 days to convert from Julian to Gregorian calendar
  159.         $day += 13;
  160.         // Remove 2 days to get Good Friday intead of Easter
  161.         $day -= 2;
  162.         if ($day > 30{
  163.             if ($month == 5{
  164.                 $day -= 31;
  165.             }
  166.             if ($month == 4{
  167.                 $day -= 30;
  168.             }
  169.             $month++;
  170.         }
  171.         // Format numbers
  172.         $month sprintf'%02d'$month);
  173.         $day sprintf'%02d'$day);
  174.         return "-$month-$day";
  175.     }
  176.  
  177.     /**
  178.      * Method that returns an array containing the ISO3166 codes that may possibly
  179.      * identify a driver.
  180.      *
  181.      * @static
  182.      * @access public
  183.      * @return array possible ISO3166 codes
  184.      */
  185.     function getISO3166Codes()
  186.     {
  187.         return array('rs''srb');
  188.     }
  189. }
  190. ?>

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