/** * Aggregates and groups the index results according to the required data result. * * @param array $tableIndexRows * @param string|null $tableName * * @return array */ protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null) { $result = array(); foreach ($tableIndexRows as $tableIndex) { $indexName = $keyName = $tableIndex['key_name']; if ($tableIndex['primary']) { $keyName = 'primary'; } $keyName = strtolower($keyName); if (!isset($result[$keyName])) { $result[$keyName] = array('name' => $indexName, 'columns' => array($tableIndex['column_name']), 'unique' => $tableIndex['non_unique'] ? false : true, 'primary' => $tableIndex['primary'], 'flags' => isset($tableIndex['flags']) ? $tableIndex['flags'] : array()); } else { $result[$keyName]['columns'][] = $tableIndex['column_name']; } } $eventManager = $this->_platform->getEventManager(); $indexes = array(); foreach ($result as $indexKey => $data) { $index = null; $defaultPrevented = false; if (null !== $eventManager && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) { $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn); $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs); $defaultPrevented = $eventArgs->isDefaultPrevented(); $index = $eventArgs->getIndex(); } if (!$defaultPrevented) { $index = new Index($data['name'], $data['columns'], $data['unique'], $data['primary'], $data['flags']); } if ($index) { $indexes[$indexKey] = $index; } } return $indexes; }
/** * @param mixed $value * @param AbstractPlatform $platform * * @return null|FamilyInterface * @throws MissingFamilyException */ public function convertToPHPValue($value, AbstractPlatform $platform) { if (null === $value) { return null; } $listeners = $platform->getEventManager()->getListeners('sidus_family_configuration'); /** @var FamilyConfigurationHandler $familyConfigurationHandler */ $familyConfigurationHandler = array_shift($listeners); return $familyConfigurationHandler->getFamily($value); }