• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/status.php
  • Класс: BitrixImConnectorStatus
  • Вызов: Status::cleanupDuplicates
static function cleanupDuplicates()
{
	$statuses = [];

	$rows = StatusConnectorsTable::getList()->fetchAll();

	$connectors = Connector::getListConnectorReal();

	foreach ($rows as $row)
	{
		if($row['ACTIVE'] === 'N' || empty($connectors[$row['CONNECTOR']]))
		{
			StatusConnectorsTable::delete($row['ID']);
		}
		else
		{
			if (empty($statuses[$row['CONNECTOR']][$row['LINE']]))
			{
				$statuses[$row['CONNECTOR']][$row['LINE']] = $row;
			}
			else
			{
				$new = $row;
				$old = $statuses[$row['CONNECTOR']][$row['LINE']];
				$result = 'old';

				if ($old['REGISTER'] !== 'Y' && $new['REGISTER'] === 'Y')
				{
					$result = 'new';
				}
				elseif ($old['REGISTER'] !== 'Y' && $new['REGISTER'] !== 'Y')
				{
					if ($old['CONNECTION'] !== 'Y' && $new['CONNECTION'] === 'Y')
					{
						$result = 'new';
					}
					elseif ($old['CONNECTION'] !== 'Y' && $new['CONNECTION'] !== 'Y')
					{
						if (empty($old['DATA']) && !empty($new['DATA']))
						{
							$result = 'new';
						}
						elseif (empty($old['DATA']) && empty($new['DATA']))
						{
							if ($old['ERROR'] === 'Y' && $new['ERROR'] !== 'Y')
							{
								$result = 'new';
							}
							elseif ($old['ERROR'] === 'Y' && $new['ERROR'] === 'Y')
							{
								if ($new['ID'] < $old['ID'])
								{
									$result = 'new';
								}
							}
						}
					}
				}

				if ($result == 'new')
				{
					StatusConnectorsTable::delete($old['ID']);
					$statuses[$row['CONNECTOR']][$row['LINE']] = $new;
				}
				else
				{
					StatusConnectorsTable::delete($new['ID']);
					$statuses[$row['CONNECTOR']][$row['LINE']] = $old;
				}
			}
		}
	}

	//self::cleanCacheAll();
}