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/ilovecveti.ru/bitrix/modules/bizproc/lib/script/entity/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/bizproc/lib/script/entity/scriptqueue.php
<?php

namespace Bitrix\Bizproc\Script\Entity;

use Bitrix\Bizproc\Script\Queue\Status;
use Bitrix\Main;
use Bitrix\Main\ORM\Fields\ExpressionField;

/**
 * Class ScriptQueueTable
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_ScriptQueue_Query query()
 * @method static EO_ScriptQueue_Result getByPrimary($primary, array $parameters = [])
 * @method static EO_ScriptQueue_Result getById($id)
 * @method static EO_ScriptQueue_Result getList(array $parameters = [])
 * @method static EO_ScriptQueue_Entity getEntity()
 * @method static \Bitrix\Bizproc\Script\Entity\EO_ScriptQueue createObject($setDefaultValues = true)
 * @method static \Bitrix\Bizproc\Script\Entity\EO_ScriptQueue_Collection createCollection()
 * @method static \Bitrix\Bizproc\Script\Entity\EO_ScriptQueue wakeUpObject($row)
 * @method static \Bitrix\Bizproc\Script\Entity\EO_ScriptQueue_Collection wakeUpCollection($rows)
 */
class ScriptQueueTable extends Main\Entity\DataManager
{
	/**
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_bp_script_queue';
	}

	/**
	 * @return array
	 */
	public static function getMap()
	{
		return [
			'ID' => [
				'data_type' => 'integer',
				'primary' => true,
				'autocomplete' => true,
			],
			'SCRIPT_ID' => [
				'data_type' => 'integer'
			],
			'STARTED_DATE' => [
				'data_type' => 'datetime'
			],
			'STARTED_BY' => [
				'data_type' => 'integer'
			],
			'STARTED_USER' => [
				'data_type' => Main\UserTable::class,
				'reference' => [
					'=this.STARTED_BY' => 'ref.ID'
				],
				'join_type' => 'LEFT',
			],
			'STATUS' => [
				'data_type' => 'integer'
			],
			'MODIFIED_DATE' => [
				'data_type' => 'datetime'
			],
			'MODIFIED_BY' => [
				'data_type' => 'integer',
				'default_value' => 0,
			],
			new Main\ORM\Fields\ArrayField('WORKFLOW_PARAMETERS'),
		];
	}

	/**
	 * @param int $queueId
	 * @return int[]
	 * @throws Main\ObjectPropertyException
	 * @throws Main\SystemException
	 */
	public static function getDocumentCounters(int $queueId): array
	{
		$scriptQueueRows =
			ScriptQueueDocumentTable::query()
				->addSelect('STATUS')
				->addSelect(new ExpressionField('CNT', 'COUNT(1)'))
				->where('QUEUE_ID', $queueId)
				->setGroup('STATUS')
				->exec()
				->fetchAll();
		;

		$all = 0;
		$queued = 0;
		foreach ($scriptQueueRows as $scriptGroupByStatus)
		{
			$all += (int)$scriptGroupByStatus['CNT'];
			if ((int)$scriptGroupByStatus['STATUS'] === Status::QUEUED)
			{
				$queued = (int)$scriptGroupByStatus['CNT'];
			}
		}

		return [
			'all' => $all,
			'queued' => $queued,
			'completed' => $all - $queued
		];
	}

	public static function getNextQueuedDocument(int $queueId): ?EO_ScriptQueueDocument
	{
		$document = ScriptQueueDocumentTable::getList([
			'filter' => [
				'=QUEUE_ID' => $queueId,
				'=STATUS' => Status::QUEUED,
			],
			'order' => ['ID' => 'ASC'],
			'limit' => 1
		])->fetchObject();

		return $document;
	}

	public static function markTerminated(int $queueId, int $userId)
	{
		static::update(
			$queueId,
			[
				'STATUS' => Status::TERMINATED,
				'MODIFIED_BY' => $userId
			]
		);

		$docResult = ScriptQueueDocumentTable::getList([
			'filter' => [
				'=QUEUE_ID' => $queueId,
				'=STATUS' => Status::QUEUED,
				],
			'select' => ['ID']
		]);

		$docIds = array_column($docResult->fetchAll(), 'ID');

		ScriptQueueDocumentTable::updateMulti($docIds, ['STATUS' => Status::TERMINATED], true);
	}

	public static function markExecuting(int $queueId)
	{
		static::update($queueId, ['STATUS' => Status::EXECUTING]);
	}

	public static function markCompleted(int $queueId)
	{
		static::update($queueId, ['STATUS' => Status::COMPLETED]);
	}

	public static function deleteByScript(int $scriptId)
	{
		$result = static::getList(['filter' => ['=SCRIPT_ID' => $scriptId], 'select' => ['ID']]);

		foreach ($result as $row)
		{
			static::delete($row['ID']);
			ScriptQueueDocumentTable::deleteByQueue($row['ID']);
		}
	}

	public static function onBeforeUpdate(Main\ORM\Event $event): Main\ORM\EventResult
	{
		$result = new Main\ORM\EventResult();

		$fields = $event->getParameter('fields');
		$modifyFields = ['MODIFIED_DATE' => new Main\Type\DateTime()];

		if(!isset($fields['MODIFIED_BY']))
		{
			$modifyFields['MODIFIED_BY'] = 0;
		}

		$result->modifyFields($modifyFields);

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit