sobota, 23 marca 2013

Dni wolne od pracy

Musiałem na liście dni miesiąca zaznaczyć polskie dni wolne od pracy. Napisałem funkcję w PHP która to robi.

function dni_wolne($data)
{
$year=substr($data,0,4);
$swieta[]=$year."01-01";
$swieta[]=$year."01-06";
$swieta[]=date("Y-m-d",easter_date($year));
$swieta[]=date("Y-m-d",easter_date($year)+86400);
$swieta[]=$year."05-01";
$swieta[]=$year."05-03";
$swieta[]=$year."08-15";
$swieta[]=$year."11-01";
$swieta[]=$year."12-25";
$swieta[]=$year."12-26";
$dzien_tyg=date("N",strtotime($data));
$wynik=0;
if(in_array($data,$swieta)) $wynik=2;
if($dzien_tyg==7) $wynik=2;
if($dzien_tyg==6) $wynik=1;
return $wynik;
}


zwraca 0 dla dni roboczych, 1 dla sobót, 2 dla niedziel i świąt.

Ponieważ używam Smarty napisałem plugin pozwalajacy w szablonach na sprawdzenie czy dzień z podaną datą jest dniem wolnym od pracy:

/**
 * Smarty plugin
 * @package Smarty
 * @subpackage plugins
 */
include_once("dni_wolne.php");

function smarty_modifier_dzien_wolny($data)
{
  return dni_wolne($data);
}
?>


w głównym folderze lub gdzieś w ścieżce szukania PHP trzeba zapisać plik z funkcją dni_wolne().