2namespace Bitrix\Rest\Api;
4use Bitrix\Rest\AccessException;
5use Bitrix\Rest\AppTable;
6use Bitrix\Rest\AuthTypeException;
7use Bitrix\Rest\HandlerHelper;
8use Bitrix\Rest\OAuth\Auth;
9use Bitrix\Rest\PlacementLangTable;
10use Bitrix\Rest\PlacementTable;
11use Bitrix\Rest\RestException;
12use Bitrix\Rest\UserField\Callback;
14use Bitrix\Rest\Exceptions;
24 static::SCOPE_USERFIELDTYPE =>
array(
25 'userfieldtype.list' =>
array(
26 'callback' =>
array(__CLASS__,
'getList'),
29 'userfieldtype.add' =>
array(
30 'callback' =>
array(__CLASS__,
'add'),
33 'userfieldtype.update' =>
array(
34 'callback' =>
array(__CLASS__,
'update'),
37 'userfieldtype.delete' =>
array(
38 'callback' =>
array(__CLASS__,
'delete'),
41 \CRestUtil::PLACEMENTS =>
array(
42 static::PLACEMENT_UF_TYPE =>
array(
52 static::checkPermission($server);
58 '=PLACEMENT' => static::PLACEMENT_UF_TYPE,
62 'USER_TYPE_ID' =>
'ADDITIONAL',
63 'HANDLER' =>
'PLACEMENT_HANDLER',
65 'DESCRIPTION' =>
'COMMENT'
70 'count_total' =>
true,
74 while($handler =
$dbRes->fetch())
79 return static::setNavData(
82 "count" =>
$dbRes->getCount(),
105 static::checkPermission($server);
107 $param = array_change_key_case($param, CASE_UPPER);
109 $userTypeId = mb_strtolower($param[
'USER_TYPE_ID'] ??
'');
110 $placementHandler = $param[
'HANDLER'] ??
'';
112 if ($userTypeId ==
'')
117 if ($placementHandler ==
'')
126 $placementBind =
array(
127 'APP_ID' => $appInfo[
'ID'],
128 'PLACEMENT' => static::PLACEMENT_UF_TYPE,
129 'PLACEMENT_HANDLER' => $placementHandler,
130 'TITLE' => $userTypeId,
131 'ADDITIONAL' => $userTypeId,
132 'OPTIONS' => static::prepareOption($param[
'OPTIONS'] ??
null),
135 $placementBind = array_merge(
144 'TITLE' => $placementBind[
'TITLE'] ??
null
149 if ($placementBind[
'LANG_ALL'])
151 $langAll = $placementBind[
'LANG_ALL'];
153 unset($placementBind[
'LANG_ALL']);
155 $result = PlacementTable::add($placementBind);
160 'Unable to set placement handler: '.implode(
', ',
$errorMessage),
166 $placementId =
$result->getId();
167 foreach ($langAll as
$lang => $item)
169 $item[
'PLACEMENT_ID'] = $placementId;
170 $item[
'LANGUAGE_ID'] =
$lang;
172 if (!
$res->isSuccess())
175 'Error: ' . implode(
', ',
$res->getErrorMessages()),
181 'ID' => $placementId,
182 'APP_ID' => $appInfo[
'ID'],
183 'ADDITIONAL' => $userTypeId,
192 static::checkPermission($server);
194 $param = array_change_key_case($param, CASE_UPPER);
196 $userTypeId = mb_strtolower($param[
'USER_TYPE_ID'] ??
'');
198 if($userTypeId ==
'')
203 $updateFields =
array();
204 if(!empty($param[
'HANDLER']))
209 $updateFields[
'PLACEMENT_HANDLER'] = $param[
'HANDLER'];
212 if (array_key_exists(
'OPTIONS', $param))
214 $updateFields[
'OPTIONS'] = static::prepareOption($param[
'OPTIONS']);
217 $updateFields = array_merge(
226 'TITLE' => $updateFields[
'TITLE'] ??
null
231 if ($updateFields[
'LANG_ALL'])
233 $langAll = $updateFields[
'LANG_ALL'];
235 unset($updateFields[
'LANG_ALL']);
237 if(
count($updateFields) > 0)
242 '=ADDITIONAL' => $userTypeId
244 'select' =>
array(
'ID',
'APP_ID',
'ADDITIONAL')
246 $placementInfo =
$dbRes->fetch();
249 $updateResult = PlacementTable::update($placementInfo[
'ID'], $updateFields);
250 if($updateResult->isSuccess())
253 foreach ($langAll as
$lang => $item)
255 $item[
'PLACEMENT_ID'] = $placementInfo[
'ID'];
256 $item[
'LANGUAGE_ID'] =
$lang;
258 if (!
$res->isSuccess())
261 'Error: ' . implode(
', ',
$res->getErrorMessages()),
273 'Unable to update User Field Type: '.implode(
', ',
$errorMessage),
293 static::checkPermission($server);
295 $param = array_change_key_case($param, CASE_UPPER);
297 $userTypeId = mb_strtolower($param[
'USER_TYPE_ID'] ??
'');
299 if($userTypeId ==
'')
306 '=REST_APP.CLIENT_ID' => $server->getClientId(),
307 '=ADDITIONAL' => $userTypeId
309 'select' =>
array(
'ID',
'APP_ID',
'ADDITIONAL')
311 $placementInfo =
$dbRes->fetch();
314 $deleteResult = PlacementTable::delete($placementInfo[
'ID']);
315 if($deleteResult->isSuccess())
323 'Unable to delete User Field Type: '.implode(
', ',
$errorMessage),
343 if(!\CRestUtil::isAdmin())
static onRestServiceBuildDescription()
const SCOPE_USERFIELDTYPE
static getList($param, $nav, \CRestServer $server)
static add($param, $n, \CRestServer $server)
static update($param, $n, \CRestServer $server)
static checkPermission(\CRestServer $server)
static getByClientId($clientId)
static checkCallback($handlerUrl, $appInfo=array(), $checkInstallUrl=true)
static fillCompatibility(array $param, array $fieldList, array $defaultValues=[])
static deleteByPlacement(int $placementId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
while($arParentIBlockProperty=$dbParentIBlockProperty->Fetch()) $errorMessage
if(!defined('SITE_ID')) $lang
</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."%"