Автозакрытие просроченного дня: формирование timestamp
 
Автозакрытие просроченного дня: формирование timestamp
07.02.2014 10:04:24
Битрикс
384
Дано:
есть корпортал, на котором присутствует "просроченный" рабочий день - то есть, начат ранее, чем текущая дата

Требуется:

из помощи внешнего приложения осуществить закрытие рабочего дня тем числом, которым он был открыт, и временем 19:00

Проблему авторизации стороннего приложения на портале в данном посте не рассматриваем

Решение

реализуется при помощи кода:

				if (CModule::IncludeModule('timeman'))          {                    $TMUSER = new CTimeManUser($USER_ID);          $state =  $TMUSER->State();           if ($state == 'EXPIRED')             {             $USER->Authorize($USER_ID);             $last_entry = CTimeManEntry::GetLast($USER_ID);             $timestamp = ConvertTimeStamp(MakeTimeStamp($last_entry['DATE_START'], FORMAT_DATETIME), 'SHORT');             $tmstp = MakeTimeStamp($timestamp." 19:00:00", FORMAT_DATETIME);                 $TMUSER->CloseDay($tmstp, "my report", false);                }             }   
			
где:
				if (CModule::IncludeModule('timeman'))
			
Подключение модуля для работы с функциями рабочего дня корпортала
				$TMUSER = new CTimeManUser($USER_ID);
			
Новый экземпляр класса TimeMan для текущего пользователя
				$state =  $TMUSER->State();
			
Получение статуса рабочего дня для данного пользователя
				if ($state == 'EXPIRED')  
			
"EXPIRED" - просроченный рабочий день
				$last_entry = CTimeManEntry::GetLast($USER_ID);
			
получение записи о последнем рабочем дне данного пользователя
				$timestamp = ConvertTimeStamp(MakeTimeStamp($last_entry['DATE_START'], FORMAT_DATETIME), 'SHORT');
			
$last_entry["DATE_START"] - содержит дату и время начала рабочего дня.

В переменную $timestamp выдергиваем только дату, без времени при помощи формата "SHORT"

				$tmstp = MakeTimeStamp($timestamp." 19:00:00", FORMAT_DATETIME);
			
- прибавляем к дате начала рабочего дня время его завершения - 19:00
				$TMUSER->CloseDay($tmstp, "my report", false);
			
Закрываем рабочий день:

$tmstp - сформированная дата+время закрытия рабочего дня

"my report" - произвольный текстовый комментарий, обязателен для просроченных рабочих дней

false - необходимо, чтобы команда сработала без присутствия пользователя на портале в явном виде

Загрузка...