• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/update/timemanversion19converter.php
  • Класс: BitrixTimemanUpdateTimemanVersion19Converter
  • Вызов: TimemanVersion19Converter::saveTempDataForRestore
private function saveTempDataForRestore()
{
	$connection = Application::getConnection();

	$sqlEntities = 'INSERT IGNORE INTO `b_timeman_converter_processed_entities` (ENTITY_CODE) VALUES ';
	$valuesEntities = [];
	foreach ($this->processedEntitiesData as $code => $value)
	{
		$valuesEntities[] = '("' . $code . '")';
	}
	if (!empty($valuesEntities))
	{
		$sqlEntities .= implode(",n", $valuesEntities);
		$connection->query($sqlEntities);
	}


	$sql = 'REPLACE INTO `b_timeman_converter_collected_schedules` 
	(SCHEDULE_KEY, SCHEDULE_FORM_DATA, ASSIGNMENTS, ASSIGNMENTS_EXCLUDED, SCHEDULE_ID, SHIFT_ID, USERS_RECORDS_UPDATED) VALUES ';
	$values = [];
	foreach ($this->scheduleForms as $scheduleKey => $scheduleForm)
	{
		$scheduleForm->validate();
		/** @var ScheduleForm $scheduleForm */
		$formData = [
			'maxExactStart' => $scheduleForm->violationForm->maxExactStart,
			'minExactEnd' => $scheduleForm->violationForm->minExactEnd,
			'minDayDuration' => $scheduleForm->violationForm->minDayDuration,
			'maxAllowedToEditWorkTime' => $scheduleForm->violationForm->maxAllowedToEditWorkTime,
		];

		$values[] = '("' . $connection->getSqlHelper()->forSql($scheduleKey) . '", '
					. '"' . $connection->getSqlHelper()->forSql(json_encode($formData)) . '", '
					. '"' . $connection->getSqlHelper()->forSql(json_encode($scheduleForm->assignments)) . '", '
					. '"' . $connection->getSqlHelper()->forSql(json_encode($scheduleForm->assignmentsExcluded)) . '", '
					. ($this->savedSchedulesMap[$scheduleKey]['scheduleId']) . ', '
					. ($this->savedSchedulesMap[$scheduleKey]['shiftId']) . ', '
					. ($this->savedSchedulesMap[$scheduleKey]['usersUpdated'] === true ? '1' : '0')
					. ')';
	}
	if (!empty($values))
	{
		$sql .= implode(",n", $values);
		$connection->query($sql);
	}

	$this->saveTempViolations($connection);
}