66 foreach($endpointList as $endpoint)
68 $arResult[$endpoint[
'MODULE_ID']][$endpoint[
'CODE']][] = $endpoint[
'FIELDS'];
94 foreach(
$items as $num => $field)
98 foreach($field as $fieldName => $fieldValue)
113 if(is_array($fieldValue))
130 if ($field && is_string($field))
134 $field = Json::decode($field);
140 else if ($field && is_array($field))
194 $connectors = static::getConnectorList(
array($endpoint));
209 public static function getConnectorList(
array $endpointList =
null)
211 $connectorList =
array();
213 $connectorClassList = static::getConnectorClassList($endpointList);
214 foreach($connectorClassList as $connectorDescription)
217 $connector =
new $connectorDescription[
'CLASS_NAME'];
218 $connector->setModuleId($connectorDescription[
'MODULE_ID']);
222 return $connectorList;
231 public static function getConnectorClassList(
array $endpointList =
null)
233 $resultList =
array();
234 $moduleIdFilter =
null;
235 $moduleConnectorFilter =
null;
239 $moduleIdFilter =
array();
240 foreach($endpointList as $endpoint)
242 $moduleIdFilter[] = $endpoint[
'MODULE_ID'];
243 $moduleConnectorFilter[$endpoint[
'MODULE_ID']][] = $endpoint[
'CODE'];
248 $event =
new Event(
'sender',
'OnConnectorList',
array(
$data), $moduleIdFilter);
251 foreach (
$event->getResults() as $eventResult)
253 if ($eventResult->getType() == EventResult::ERROR)
258 $eventResultParameters = $eventResult->getParameters();
260 if($eventResultParameters && array_key_exists(
'CONNECTOR', $eventResultParameters))
262 $connectorClassNameList = $eventResultParameters[
'CONNECTOR'];
263 if (!is_array($eventResultParameters[
'CONNECTOR']))
265 $connectorClassNameList =
array($connectorClassNameList);
267 foreach ($connectorClassNameList as $connectorClassName)
269 if(!is_subclass_of($connectorClassName,
'\Bitrix\Sender\Connector'))
277 $connectorInstance =
new $connectorClassName;
279 $connectorCode = $connectorInstance->getCode();
280 if($moduleConnectorFilter && !in_array($connectorCode, $moduleConnectorFilter[$eventResult->getModuleId()]))
285 $connectorName = $connectorInstance->getName();
286 $connectorRequireConfigure =$connectorInstance->requireConfigure();
288 $resultList[] =
array(
289 'MODULE_ID' => $eventResult->getModuleId(),
290 'CLASS_NAME' => $connectorClassName,
291 'CODE' => $connectorCode,
292 'NAME' => $connectorName,
293 'REQUIRE_CONFIGURE' => $connectorRequireConfigure,
299 if(!empty($resultList))
300 usort($resultList,
array(__CLASS__,
'sort'));
314 if (
$a[
'NAME'] == $b[
'NAME'])
317 return (
$a[
'NAME'] < $b[
'NAME']) ? -1 : 1;