403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/calendar/lib/update/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/calendar/lib/update/sectionstructureupdate.php
<?php

namespace Bitrix\Calendar\Update;

use \Bitrix\Main\Localization\Loc;
use \Bitrix\Main\Update\Stepper;
use \Bitrix\Main\Config\Option;
use \Bitrix\Main\Loader;


final class SectionStructureUpdate extends Stepper
{
	const PORTION = 40;

	protected static $moduleId = "calendar";

	public static function className()
	{
		return get_called_class();
	}

	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;'
			);

			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)
				);

				$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;
	}

	private function loadCurrentStatus()
	{
		$status = Option::get('calendar', 'sectionStructureUpdaterStatus', 'default');
		$status = ($status !== 'default' ? @unserialize($status, ['allowed_classes' => false]) : []);
		$status = (is_array($status) ? $status : []);

		if (empty($status))
		{
			$status = [
				'count' => $this->getTotalCount(),
				'steps' => 0,
				'lastEventId' => 0,
				'finished' => false
			];
		}

		return $status;
	}

	private function getTotalCount()
	{
		global $DB;
		$count = 0;
		$res = $DB->Query('SELECT count(*) AS c FROM b_calendar_event WHERE SECTION_ID is null');
		if($res = $res->Fetch())
		{
			$count = intval($res['c']);
		}

		return $count;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit