1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
numeratorsequence.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\Numerator\Model;
4
5use Bitrix\Main\DB\SqlQueryException;
6use Bitrix\Main\ORM\Data\DataManager;
7use Bitrix\Main\ORM\Fields\IntegerField;
8use Bitrix\Main\ORM\Fields\StringField;
9use Bitrix\Main\Application;
10use Bitrix\Main\Result;
11
30{
34 public static function getTableName()
35 {
36 return 'b_numerator_sequence';
37 }
38
43 public static function getMap()
44 {
45 return [
46 (new IntegerField('NUMERATOR_ID'))
47 ->configureRequired(true)
48 ->configurePrimary(true)
49 ,
50 (new StringField('KEY'))
51 ->configureRequired(true)
52 ->configurePrimary(true)
53 ,
54 (new StringField('TEXT_KEY'))
55 ->configureRequired(true)
56 ,
57 (new IntegerField('NEXT_NUMBER')),
58 (new IntegerField('LAST_INVOCATION_TIME'))
59 ->configureRequired(true)
60 ,
61 ];
62 }
63
72 public static function updateSettings($numeratorId, $numberHash, $fields, $whereNextNumber = null)
73 {
74 if ($whereNextNumber)
75 {
77 $helper = $conn->getSqlHelper();
78 $update = $helper->prepareUpdate(static::getTableName(), $fields);
79 $query = 'UPDATE ' . $helper->quote(static::getTableName())
80 . ' SET ' . $update[0]
81 . ' WHERE NUMERATOR_ID = ' . intval($numeratorId)
82 . ' AND ' . $helper->quote('KEY') . ' = ' . $helper->convertToDbString(md5($numberHash))
83 . ' AND NEXT_NUMBER = ' . intval($whereNextNumber);
84 $conn->query($query);
85
86 return $conn->getAffectedRowsCount();
87 }
88 $res = static::update([
89 'NUMERATOR_ID' => intval($numeratorId),
90 'KEY' => md5($numberHash),
91 ], $fields);
92 if ($res->isSuccess())
93 {
94 return $res->getAffectedRowsCount();
95 }
96
97 return 0;
98 }
99
104 public static function deleteByNumeratorId($id)
105 {
106 $result = new Result();
107
108 $list = static::getList([
109 'filter' => [
110 '=NUMERATOR_ID' => (int)$id,
111 ]
112 ]);
113 while($row = $list->fetchObject())
114 {
115 $deleteResult = $row->delete();
116 if (!$deleteResult->isSuccess())
117 {
118 $result->addErrors($deleteResult->getErrors());
119 }
120 }
121
122 return $result;
123 }
124
133 public static function getSettings($numeratorId, $numberHash)
134 {
135 $sequenceSettings = static::getList([
136 'select' => ['NEXT_NUMBER', 'LAST_INVOCATION_TIME'],
137 'filter' => ['=NUMERATOR_ID' => $numeratorId, '=KEY' => md5($numberHash),],
138 ])->fetch();
139 return $sequenceSettings;
140 }
141
150 public static function setSettings($numeratorId, $numberHash, $defaultNumber, $lastInvocationTime)
151 {
152 try
153 {
154 $result = static::add([
155 'NUMERATOR_ID' => $numeratorId,
156 'KEY' => md5($numberHash),
157 'TEXT_KEY' => mb_substr($numberHash, 0, 50),
158 'LAST_INVOCATION_TIME' => $lastInvocationTime,
159 'NEXT_NUMBER' => $defaultNumber,
160 ]);
161 if ($result->isSuccess())
162 {
163 return $result->getData();
164 }
165 return [];
166 }
167 catch (SqlQueryException $exc)
168 {
169 if (mb_stripos($exc->getMessage(), "Duplicate entry") !== false)
170 {
171 return [];
172 }
173 throw $exc;
174 }
175 }
176}
static getConnection($name="")
Определения application.php:638
static setSettings($numeratorId, $numberHash, $defaultNumber, $lastInvocationTime)
Определения numeratorsequence.php:150
static getSettings($numeratorId, $numberHash)
Определения numeratorsequence.php:133
static updateSettings($numeratorId, $numberHash, $fields, $whereNextNumber=null)
Определения numeratorsequence.php:72
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
$query
Определения get_search.php:11
$fields
Определения yandex_run.php:501