• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/update/sectionstructureupdate.php
  • Класс: BitrixCalendarUpdateSectionStructureUpdate
  • Вызов: SectionStructureUpdate::execute
public function execute(array &$result)
{
	global $DB;
	$BATCH_SIZE = 1000;
	if (
		Loader::includeModule("calendar")
		&& Option::get('calendar', 'sectionStructureConverted', 'N') === 'Y'
	)
	{
		return self::FINISH_EXECUTION;
	}

	$status = $this->loadCurrentStatus();

	$newStatus = array(
		'count' => $status['count'],
		'steps' => $status['steps'],
		'lastEventId' => null,
		'finished' => $status['finished']
	);

	if (!$status['finished'])
	{
		$r = $DB->Query('SELECT ID FROM b_calendar_event 
          		WHERE SECTION_ID IS NULL ORDER BY ID ASC limit 1;',
			false,
			"File: ".__FILE__."
Line: ".__LINE__ ); if ($entry = $r->Fetch()) { $newStatus['lastEventId'] = $entry['ID']; if ((int)$status['lastEventId'] === (int)$newStatus['lastEventId']) { Option::set('calendar', 'sectionStructureConverted', 'Y'); Option::delete('calendar', ['name' => 'sectionStructureUpdaterStatus']); return self::FINISH_EXECUTION; } $DB->Query('UPDATE b_calendar_event CE INNER JOIN b_calendar_event_sect CES ON CE.ID = CES.EVENT_ID SET CE.SECTION_ID = CES.SECT_ID WHERE CE.SECTION_ID is null and CE.ID < '.((int)$entry['ID'] + $BATCH_SIZE), false, "File: ".__FILE__."
Line: ".__LINE__ ); $newStatus['steps'] = $newStatus['count'] - $this->getTotalCount(); Option::set('calendar', 'sectionStructureUpdaterStatus', serialize($newStatus)); $result = array( 'title' => Loc::getMessage("CALENDAR_UPDATE_STRUCTURE_TITLE"), 'count' => $newStatus['count'], 'steps' => $newStatus['steps'] ); return self::CONTINUE_EXECUTION; } Option::set('calendar', 'sectionStructureUpdaterStatus', serialize($newStatus)); } Option::set('calendar', 'sectionStructureConverted', 'Y'); Option::delete('calendar', ['name' => 'sectionStructureUpdaterStatus']); return self::FINISH_EXECUTION; }