- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/classes/general/timeman_report_full.php
- Класс: CUserReportFull
- Вызов: CUserReportFull::Recalc
public function Recalc()
{
$settings = $this->GetSettings();
$lastReportDate = $this->GetLastDate();
$submitDay = $settings["UF_TM_REPORT_DATE"];
$submitDayTime = CTimeman::MakeShortTS($settings["UF_TM_TIME"]);
$fields = [
"DATE_FROM" => "",
"DATE_TO" => "",
"DATE_SUBMIT" => ""
];
if (!$settings["UF_REPORT_PERIOD"])
{
return $fields;
}
switch ($settings["UF_REPORT_PERIOD"])
{
case "WEEK":
if ($settings["UF_TM_DAY"]<=4)//mon,tue,wen,thu
{
if ($lastReportDate>strtotime("last sun -1 week") && $lastReportDate<=strtotime("last sun"))
$fields["DATE_FROM"] = $lastReportDate+$this->oneDayTime;
else
$fields["DATE_FROM"] = strtotime("next mon",$lastReportDate);
$fields["DATE_TO"] = strtotime("next sun", $fields["DATE_FROM"]);
if (!is_numeric($settings["UF_TM_DAY"]))
{
$fields["DATE_SUBMIT"] = strtotime(
"next " . reset($this->days), $fields["DATE_TO"]
) + $submitDayTime;
}
else
{
$fields["DATE_SUBMIT"] = strtotime(
"next " . $this->days[$settings["UF_TM_DAY"] - 1],
$fields["DATE_TO"]
) + $submitDayTime;
}
}
else//fri,sat,sun
{
if ($lastReportDate>strtotime("last sun") && $lastReportDate<=strtotime("next sun"))
$fields["DATE_FROM"] = $lastReportDate+$this->oneDayTime;
else
$fields["DATE_FROM"] = strtotime("mon next week",$lastReportDate-date('Z'));
$fields["DATE_TO"] = strtotime("next sun", $fields["DATE_FROM"]);
if (!is_numeric($settings["UF_TM_DAY"]))
{
$fields["DATE_SUBMIT"] = strtotime(
"last " . reset($this->days),
$fields["DATE_TO"]
) + $submitDayTime;
}
else
{
$fields["DATE_SUBMIT"] = strtotime(
"last " . $this->days[$settings["UF_TM_DAY"] - 1],
$fields["DATE_TO"]
) + $submitDayTime;
}
}
break;
case "MONTH":
$fields["DATE_FROM"] = $lastReportDate + $this->oneDayTime;
$submitDate = $this->getSubmitDateForNextReport($lastReportDate, $submitDay);
$fields["DATE_TO"] = $submitDate;
$fields["DATE_SUBMIT"] = $submitDate + $submitDayTime;
break;
case "DAY":
$fields["DATE_FROM"] = $lastReportDate + $this->oneDayTime;
$fields["DATE_TO"] = $lastReportDate + $this->oneDayTime;
$fields["DATE_SUBMIT"] = CTimeMan::RemoveHoursTS($fields["DATE_FROM"]) + $submitDayTime;
break;
}
$fields["DATE_FROM"] = ConvertTimeStampForReport($fields["DATE_FROM"], "SHORT");
$fields["DATE_TO"] = ConvertTimeStampForReport($fields["DATE_TO"], "SHORT");
$fields["DATE_SUBMIT"] = ConvertTimeStampForReport($fields["DATE_SUBMIT"], "FULL");
return $fields;
}