Funkcja może się przydać do robienia np w CRM widoku kalendarza na dni robocze
Może komuś się przyda ta funkcja.
podajemy jako argumenty dzien, miesiac, rok
funkcja zwraca nam dni robocze (od poniedzialku do piatku)
funkcja nie uwzglednia świąt etc. po prostu zwraca dni od pn-pt .
Może jest jakiś gotowy sposób na zrobienie tego - lecz ja nie znalazłem, dlatego podaję tutaj moją inwencje twórczą

public function days($day, $month , $year)
{
if(date('N', mktime(0
,0
,0
,$month,$day,$year) <> 1
)) {
$dayOfWeek = date('N', mktime(0
,0
,0
,$month,$day,$year)); if($day-$dayOfWeek < 1)
{
if($month == 1)
{
$lastMonth = date('t', mktime(0
,0
,0
,12
,1
,$year-1
)); $year -= 1;
}
else
$lastMonth = date('t', mktime(0
,0
,0
,$month-1
,1
,$year)); $day = $lastMonth-(date('d', mktime(0
,0
,0
,$month,$day,$year))-$day); if($month > 1)
$month -= 1;
else
$month = 12;
}
$day = $day-date('N', mktime(0
,0
,0
,$month,$day,$year))+1; }
for($x=1;$x<6;$x++)
{
{
$day=1;
if($month == 12)
{
$month = 1;
$year++;
}
else
$month++;
}
$ret[]= array('day' => $day, 'month' => $month, 'year' => $year); $day++;
}
return $ret;
}
kolejna funckja to linów +/- tydzien
jako parmetry funkcji ustawiamy wynik z funkcji days (pierwszy wpis do tablic) dzien, miesiac, rok ostanim parmetrem jest past jesli chcemy by zwrocil link do przodu (o 1 tydzien) ustawiamy go na 1;
public function makeDateLink($day, $month, $year, $past = 0)
{
if($past == 0)
{
if($day-7 > 0)
return $this->engine->router->clipLink(0, $day-7, $month, $year);
else
{
if($month == 1)
{
$lastMonth = date('t',mktime(0
,0
,0
,12
,1
,$year-1
)); $year--;
}
else
$lastMonth = date('t',mktime(0
,0
,0
,$month-1
,1
,$year)); $day = $lastMonth;
if($month > 1)
$month -= 1;
else
$month = 12;
return $this->engine->router->clipLink(0, $day-$odejmnij, $month, $year);
}
}
else
{
if($day+7>$daysOfMonth)
{
if($month == 12)
{
$year += 1;
}
else
$day = abs($nextMonth-($day+7
)); if($month == 12)
$month =1;
else
$month++;
}
else
$day += 7;
return $this->engine->router->clipLink(0, $day, $month, $year);
}
jeśli ktoś ma uwagi, proszę powiedzieć

temat można zamknąć gdyż działa mi już wszystko, rozwiązanie problemu pokazane wyżej