четверг, 5 ноября 2009 г.

Fatal error: Call to undefined function: cal_days_in_month() и как с этим бороться

Несколько недель назад у меня появилась задача сделать архив новостей для Drupal 6.x. Базой я выбрал модуль Archive. Продукт неплохой, но не совсем, то что мне нужно было. В результате, я сделал свой модуль, более простой и с AJAX (по требованию заказчика). Но сейчас не об этом.

При работе с Archive, у меня появилась такая проблема: на интернет-хосте пропала функция cal_days_in_month(), хотя на localhost'e было все ок.

Что бы функция заработала, нужно ее написать, правильно? :)

1. Открываем archive/archive.module
2. Вставляем функцию:

// the entire month into the block.
$prev_month = $month==1?12:$month-1;
$prev_year = $month==1?$year-1:$year;
+ //some old php versions don't have cal_days_in_month(), this code accounts for that
+ if(!function_exists('cal_days_in_month')){
+ function cal_days_in_month($calendar,$month, $year)
+ {
+ // $calendar just gets ignored, assume gregorian
+ // calculate number of days in a month
+ return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31);
+ } 
+ }
$num_days_prev = cal_days_in_month(CAL_GREGORIAN, $month-1, $year);
$next_month = $month==12?1:$month+1;
$next_year = $month==12?$year+1:$year;

Плюсиками я обозначил код, который мы вставляем. enjoy ;)


Комментариев нет:

Отправить комментарий