1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
taskservice.php
См. документацию.
1<?
2include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/bizproc/classes/general/taskservice.php");
3
5 extends CBPAllTaskService
6{
7 public function CreateTask($arFields)
8 {
9 return self::Add($arFields);
10 }
11
12 public static function Add($arFields)
13 {
14 global $DB;
15
16 self::ParseFields($arFields, 0);
17
18 $arInsert = $DB->PrepareInsert("b_bp_task", $arFields);
19
20 $strSql =
21 "INSERT INTO b_bp_task (".$arInsert[0].", MODIFIED) ".
22 "VALUES(".$arInsert[1].", ".$DB->CurrentTimeFunction().")";
23 $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__);
24
25 $taskId = intval($DB->LastID());
26
27 if ($taskId > 0)
28 {
29 $ar = array();
30 foreach ($arFields["USERS"] as $userId)
31 {
32 $userId = intval($userId);
33 if (in_array($userId, $ar))
34 continue;
35
36 $DB->Query(
37 "INSERT INTO b_bp_task_user (USER_ID, TASK_ID, ORIGINAL_USER_ID) ".
38 "VALUES (".intval($userId).", ".intval($taskId).", ".intval($userId).") "
39 );
40
41 CUserCounter::Increment($userId, 'bp_tasks', '**');
42
43 $ar[] = $userId;
44 }
45
47
48 foreach (GetModuleEvents("bizproc", "OnTaskAdd", true) as $arEvent)
49 ExecuteModuleEventEx($arEvent, array($taskId, $arFields));
50 }
51
52 return $taskId;
53 }
54
55 public static function Update($id, $arFields)
56 {
57 global $DB;
58
59 $id = intval($id);
60 if ($id <= 0)
61 throw new Exception("id");
62
63 self::ParseFields($arFields, $id);
64
65 $strUpdate = $DB->PrepareUpdate("b_bp_task", $arFields);
66
67 $strSql =
68 "UPDATE b_bp_task SET ".
69 " ".$strUpdate.", ".
70 " MODIFIED = ".$DB->CurrentTimeFunction()." ".
71 "WHERE ID = ".intval($id)." ";
72 $DB->Query($strSql, False, "File: ".__FILE__."<br>Line: ".__LINE__);
73
74 $removedUsers = array();
75
76 if (is_set($arFields, "USERS"))
77 {
78 $dbResUser = $DB->Query("SELECT USER_ID FROM b_bp_task_user WHERE TASK_ID = ".intval($id)." ");
79 while ($arResUser = $dbResUser->Fetch())
80 {
81 CUserCounter::Decrement($arResUser["USER_ID"], 'bp_tasks', '**');
82 $removedUsers[] = $arResUser["USER_ID"];
83 }
84 $DB->Query("DELETE FROM b_bp_task_user WHERE TASK_ID = ".intval($id)." ");
85
86 $ar = array();
87 foreach ($arFields["USERS"] as $userId)
88 {
89 $userId = intval($userId);
90 if (in_array($userId, $ar))
91 continue;
92
93 $DB->Query(
94 "INSERT INTO b_bp_task_user (USER_ID, TASK_ID, ORIGINAL_USER_ID) ".
95 "VALUES (".intval($userId).", ".intval($id).", ".intval($userId).") "
96 );
97
98 CUserCounter::Increment($userId, 'bp_tasks', '**');
99
100 $ar[] = $userId;
101 }
102 }
103
104 $userStatuses = array();
105 if (isset($arFields['STATUS']) && $arFields['STATUS'] > CBPTaskStatus::Running)
106 {
107 $dbResUser = $DB->Query("SELECT USER_ID FROM b_bp_task_user WHERE TASK_ID = ".$id." AND STATUS = ".CBPTaskUserStatus::Waiting);
108 while ($arResUser = $dbResUser->Fetch())
109 {
110 CUserCounter::Decrement($arResUser["USER_ID"], 'bp_tasks', '**');
111
112 if ($arFields['STATUS'] == CBPTaskStatus::Timeout)
113 $userStatuses[$arResUser["USER_ID"]] = CBPTaskUserStatus::No;
114 else
115 $removedUsers[] = $arResUser["USER_ID"];
116 }
117 if ($arFields['STATUS'] == CBPTaskStatus::Timeout)
118 {
119 $DB->Query("UPDATE b_bp_task_user SET STATUS = ".CBPTaskUserStatus::No.", DATE_UPDATE = ".$DB->CurrentTimeFunction()
120 ." WHERE TASK_ID = ".$id." AND STATUS = ".CBPTaskUserStatus::Waiting);
121 }
122 else
123 $DB->Query("DELETE FROM b_bp_task_user WHERE TASK_ID = ".$id." AND STATUS = ".CBPTaskUserStatus::Waiting);
124 }
125
126 foreach (GetModuleEvents("bizproc", "OnTaskUpdate", true) as $arEvent)
127 ExecuteModuleEventEx($arEvent, array($id, $arFields));
128
129 if ($removedUsers)
130 $arFields['USERS_REMOVED'] = $removedUsers;
131 if ($userStatuses)
132 $arFields['USERS_STATUSES'] = $userStatuses;
133
135 return $id;
136 }
137
138 public static function GetList($arOrder = array("ID" => "DESC"), $arFilter = array(), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array())
139 {
140 global $DB;
141
142 if (count($arSelectFields) <= 0)
143 $arSelectFields = array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS");
144
145 static $arFields = array(
146 "ID" => Array("FIELD" => "T.ID", "TYPE" => "int"),
147 "WORKFLOW_ID" => Array("FIELD" => "T.WORKFLOW_ID", "TYPE" => "string"),
148 "ACTIVITY" => Array("FIELD" => "T.ACTIVITY", "TYPE" => "string"),
149 "ACTIVITY_NAME" => Array("FIELD" => "T.ACTIVITY_NAME", "TYPE" => "string"),
150 "MODIFIED" => Array("FIELD" => "T.MODIFIED", "TYPE" => "datetime"),
151 "OVERDUE_DATE" => Array("FIELD" => "T.OVERDUE_DATE", "TYPE" => "datetime"),
152 "NAME" => Array("FIELD" => "T.NAME", "TYPE" => "string"),
153 "DESCRIPTION" => Array("FIELD" => "T.DESCRIPTION", "TYPE" => "string"),
154 "PARAMETERS" => Array("FIELD" => "T.PARAMETERS", "TYPE" => "string"),
155 "IS_INLINE" => Array("FIELD" => "T.IS_INLINE", "TYPE" => "string"),
156 "DELEGATION_TYPE" => Array("FIELD" => "T.DELEGATION_TYPE", "TYPE" => "int"),
157 "STATUS" => Array("FIELD" => "T.STATUS", "TYPE" => "int"),
158 'DOCUMENT_NAME' => Array("FIELD" => "T.DOCUMENT_NAME", "TYPE" => "string"),
159 "USER_ID" => Array("FIELD" => "TU.USER_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_bp_task_user TU ON (T.ID = TU.TASK_ID)"),
160 "USER_STATUS" => Array("FIELD" => "TU.STATUS", "TYPE" => "int", "FROM" => "INNER JOIN b_bp_task_user TU ON (T.ID = TU.TASK_ID)"),
161 "WORKFLOW_TEMPLATE_ID" => Array("FIELD" => "WS.WORKFLOW_TEMPLATE_ID", "TYPE" => "int", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
162 "MODULE_ID" => Array("FIELD" => "WS.MODULE_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
163 "ENTITY" => Array("FIELD" => "WS.ENTITY", "TYPE" => "string", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
164 "DOCUMENT_ID" => Array("FIELD" => "WS.DOCUMENT_ID", "TYPE" => "string", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
165 "WORKFLOW_TEMPLATE_NAME" => Array("FIELD" => "WT.NAME", "TYPE" => "string",
166 "FROM" => array("INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)",
167 "INNER JOIN b_bp_workflow_template WT ON (WS.WORKFLOW_TEMPLATE_ID = WT.ID)")),
168 "WORKFLOW_TEMPLATE_TEMPLATE_ID" => Array("FIELD" => "WS.WORKFLOW_TEMPLATE_ID", "TYPE" => "int",
169 "FROM" => array("INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)")),
170 'WORKFLOW_STATE' => array("FIELD" => "WS.STATE_TITLE", "TYPE" => "string", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
171 'WORKFLOW_STARTED' => array("FIELD" => "WS.STARTED", "TYPE" => "datetime", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
172 'WORKFLOW_STARTED_BY' => array("FIELD" => "WS.STARTED_BY", "TYPE" => "int", "FROM" => "INNER JOIN b_bp_workflow_state WS ON (T.WORKFLOW_ID = WS.ID)"),
173 );
174
175 $arSqls = CBPHelper::PrepareSql($arFields, $arOrder, $arFilter, $arGroupBy, $arSelectFields);
176
177 $arSqls["SELECT"] = str_replace("%%_DISTINCT_%%", "", $arSqls["SELECT"]);
178
179 if (is_array($arGroupBy) && count($arGroupBy)==0)
180 {
181 $strSql =
182 "SELECT ".$arSqls["SELECT"]." ".
183 "FROM b_bp_task T ".
184 " ".$arSqls["FROM"]." ";
185 if (strlen($arSqls["WHERE"]) > 0)
186 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
187 if (strlen($arSqls["GROUPBY"]) > 0)
188 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
189
190 $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
191 if ($arRes = $dbRes->Fetch())
192 return $arRes["CNT"];
193 else
194 return False;
195 }
196
197 $strSql =
198 "SELECT ".$arSqls["SELECT"]." ".
199 "FROM b_bp_task T ".
200 " ".$arSqls["FROM"]." ";
201 if (strlen($arSqls["WHERE"]) > 0)
202 $strSql .= "WHERE ".$arSqls["WHERE"]." ";
203 if (strlen($arSqls["GROUPBY"]) > 0)
204 $strSql .= "GROUP BY ".$arSqls["GROUPBY"]." ";
205 if (strlen($arSqls["ORDERBY"]) > 0)
206 $strSql .= "ORDER BY ".$arSqls["ORDERBY"]." ";
207
208 if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) <= 0)
209 {
210 $strSql_tmp =
211 "SELECT COUNT('x') as CNT ".
212 "FROM b_bp_task T ".
213 " ".$arSqls["FROM"]." ";
214 if (strlen($arSqls["WHERE"]) > 0)
215 $strSql_tmp .= "WHERE ".$arSqls["WHERE"]." ";
216 if (strlen($arSqls["GROUPBY"]) > 0)
217 $strSql_tmp .= "GROUP BY ".$arSqls["GROUPBY"]." ";
218
219 $dbRes = $DB->Query($strSql_tmp, false, "File: ".__FILE__."<br>Line: ".__LINE__);
220 $cnt = 0;
221 if (strlen($arSqls["GROUPBY"]) <= 0)
222 {
223 if ($arRes = $dbRes->Fetch())
224 $cnt = $arRes["CNT"];
225 }
226 else
227 {
228 $cnt = $dbRes->SelectedRowsCount();
229 }
230
231 $dbRes = new CDBResult();
232 $dbRes->NavQuery($strSql, $cnt, $arNavStartParams);
233 }
234 else
235 {
236 if (is_array($arNavStartParams) && IntVal($arNavStartParams["nTopCount"]) > 0)
237 $strSql .= "LIMIT ".intval($arNavStartParams["nTopCount"]);
238 $dbRes = $DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
239 }
240
242 return $dbRes;
243 }
244}
245?>
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
const Add
Определения constants.php:315
const Update
Определения constants.php:316
Определения taskservice.php:1075
Определения taskservice.php:7
static GetList($arOrder=array("ID"=> "DESC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения taskservice.php:138
static Add($arFields)
Определения taskservice.php:12
static onTaskChange($taskId, $taskData, $status)
Определения taskservice.php:435
CreateTask($arFields)
Определения taskservice.php:7
static Update($id, $arFields)
Определения taskservice.php:55
const Timeout
Определения constants.php:262
const Running
Определения constants.php:258
const No
Определения constants.php:275
const Waiting
Определения constants.php:273
$arFields
Определения dblapprove.php:5
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
is_set($a, $k=false)
Определения tools.php:2133
$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
$arRes
Определения options.php:104
$arFilter
Определения user_search.php:106
$dbRes
Определения yandex_detail.php:168