1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
stateservice.php
См. документацию.
1<?
2include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/bizproc/classes/general/stateservice.php");
3
5 extends CBPAllStateService
6{
7 public function SetState($workflowId, $arState, $arStatePermissions = array())
8 {
9 global $DB;
10
11 $workflowId = trim($workflowId);
12 if (strlen($workflowId) <= 0)
13 throw new Exception("workflowId");
14
15 $state = trim($arState["STATE"]);
16 $stateTitle = trim($arState["TITLE"]);
17 $stateParameters = "";
18 if (count($arState["PARAMETERS"]) > 0)
19 $stateParameters = serialize($arState["PARAMETERS"]);
20
21 $DB->Query(
22 "UPDATE b_bp_workflow_state SET ".
23 " STATE = ".(strlen($state) > 0 ? "'".$DB->ForSql($state)."'" : "NULL").", ".
24 " STATE_TITLE = ".(strlen($stateTitle) > 0 ? "'".$DB->ForSql($stateTitle)."'" : "NULL").", ".
25 " STATE_PARAMETERS = ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").", ".
26 " MODIFIED = ".$DB->CurrentTimeFunction()." ".
27 "WHERE ID = '".$DB->ForSql($workflowId)."' "
28 );
29
30 if ($arStatePermissions !== false)
31 {
32 $arState = self::GetWorkflowState($workflowId);
34 if (!isset($runtime) || !is_object($runtime))
35 $runtime = CBPRuntime::GetRuntime();
36 $documentService = $runtime->GetService("DocumentService");
37 $documentService->SetPermissions($arState["DOCUMENT_ID"], $workflowId, $arStatePermissions, true);
38 $documentType = $documentService->GetDocumentType($arState["DOCUMENT_ID"]);
39 if ($documentType)
40 $arStatePermissions = $documentService->toInternalOperations($documentType, $arStatePermissions);
41
42 $DB->Query(
43 "DELETE FROM b_bp_workflow_permissions ".
44 "WHERE WORKFLOW_ID = '".$DB->ForSql($workflowId)."' "
45 );
46
47 foreach ($arStatePermissions as $permission => $arObjects)
48 {
49 foreach ($arObjects as $object)
50 {
51 $DB->Query(
52 "INSERT INTO b_bp_workflow_permissions (WORKFLOW_ID, OBJECT_ID, PERMISSION) ".
53 "VALUES ('".$DB->ForSql($workflowId)."', '".$DB->ForSql($object)."', '".$DB->ForSql($permission)."')"
54 );
55 }
56 }
57 }
58 }
59
60 public function SetStateParameters($workflowId, $arStateParameters = array())
61 {
62 global $DB;
63
64 $workflowId = trim($workflowId);
65 if (strlen($workflowId) <= 0)
66 throw new Exception("workflowId");
67
68 $stateParameters = "";
69 if (count($arStateParameters) > 0)
70 $stateParameters = serialize($arStateParameters);
71
72 $DB->Query(
73 "UPDATE b_bp_workflow_state SET ".
74 " STATE_PARAMETERS = ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").", ".
75 " MODIFIED = ".$DB->CurrentTimeFunction()." ".
76 "WHERE ID = '".$DB->ForSql($workflowId)."' "
77 );
78 }
79
80 public function AddStateParameter($workflowId, $arStateParameter)
81 {
82 global $DB;
83
84 $workflowId = trim($workflowId);
85 if (strlen($workflowId) <= 0)
86 throw new Exception("workflowId");
87
88 $dbResult = $DB->Query(
89 "SELECT STATE_PARAMETERS ".
90 "FROM b_bp_workflow_state ".
91 "WHERE ID = '".$DB->ForSql($workflowId)."' "
92 );
93
94 if ($arResult = $dbResult->Fetch())
95 {
96 $stateParameters = array();
97 if (strlen($arResult["STATE_PARAMETERS"]) > 0)
98 $stateParameters = unserialize($arResult["STATE_PARAMETERS"]);
99
100 $stateParameters[] = $arStateParameter;
101
102 $stateParameters = serialize($stateParameters);
103
104 $DB->Query(
105 "UPDATE b_bp_workflow_state SET ".
106 " STATE_PARAMETERS = ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").", ".
107 " MODIFIED = ".$DB->CurrentTimeFunction()." ".
108 "WHERE ID = '".$DB->ForSql($workflowId)."' "
109 );
110 }
111 }
112
113 public function DeleteStateParameter($workflowId, $name)
114 {
115 global $DB;
116
117 $workflowId = trim($workflowId);
118 if (strlen($workflowId) <= 0)
119 throw new Exception("workflowId");
120
121 $dbResult = $DB->Query(
122 "SELECT STATE_PARAMETERS ".
123 "FROM b_bp_workflow_state ".
124 "WHERE ID = '".$DB->ForSql($workflowId)."' "
125 );
126
127 if ($arResult = $dbResult->Fetch())
128 {
129 $stateParameters = array();
130 if (strlen($arResult["STATE_PARAMETERS"]) > 0)
131 $stateParameters = unserialize($arResult["STATE_PARAMETERS"]);
132
133 $ar = array();
134 foreach ($stateParameters as $v)
135 {
136 if ($v["NAME"] != $name)
137 $ar[] = $v;
138 }
139
140 $stateParameters = "";
141 if (count($ar) > 0)
142 $stateParameters = serialize($ar);
143
144 $DB->Query(
145 "UPDATE b_bp_workflow_state SET ".
146 " STATE_PARAMETERS = ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").", ".
147 " MODIFIED = ".$DB->CurrentTimeFunction()." ".
148 "WHERE ID = '".$DB->ForSql($workflowId)."' "
149 );
150 }
151 }
152
153 public static function __InsertStateHack($id, $moduleId, $entity, $documentId, $templateId, $state, $stateTitle, $stateParameters, $arStatePermissions)
154 {
155 global $DB;
156
157 $DB->Query(
158 "INSERT INTO b_bp_workflow_state (ID, MODULE_ID, ENTITY, DOCUMENT_ID, DOCUMENT_ID_INT, WORKFLOW_TEMPLATE_ID, MODIFIED, STATE, STATE_TITLE, STATE_PARAMETERS) ".
159 "VALUES ('".$DB->ForSql($id)."', '".$DB->ForSql($moduleId)."', '".$DB->ForSql($entity)."', '".$DB->ForSql($documentId)."', ".intval($documentId).", ".intval($templateId).", ".$DB->CurrentTimeFunction().", '".$DB->ForSql($state)."', '".$DB->ForSql($stateTitle)."', ".(strlen($stateParameters) > 0 ? "'".$DB->ForSql($stateParameters)."'" : "NULL").")"
160 );
161
162 foreach ($arStatePermissions as $permission => $arObjects)
163 {
164 foreach ($arObjects as $object)
165 {
166 $DB->Query(
167 "INSERT INTO b_bp_workflow_permissions (WORKFLOW_ID, OBJECT_ID, PERMISSION) ".
168 "VALUES ('".$DB->ForSql($id)."', '".$DB->ForSql($object)."', '".$DB->ForSql($permission)."')"
169 );
170 }
171 }
172 }
173}
174?>
$arResult
Определения generate_coupon.php:16
$runtime
Определения runtimeservice.php:5
Определения stateservice.php:9
AddStateParameter($workflowId, $arStateParameter)
Определения stateservice.php:80
static __InsertStateHack($id, $moduleId, $entity, $documentId, $templateId, $state, $stateTitle, $stateParameters, $arStatePermissions)
Определения stateservice.php:153
DeleteStateParameter($workflowId, $name)
Определения stateservice.php:113
SetStateParameters($workflowId, $arStateParameters=array())
Определения stateservice.php:60
SetState($workflowId, $arState, $arStatePermissions=array())
Определения stateservice.php:7
$templateId
Определения component_props2.php:51
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$entity
$moduleId
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$name
Определения menu_edit.php:35
$ar
Определения options.php:199
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$dbResult
Определения updtr957.php:3