public static function updateMap(EntityConversionMap $map) { //Synchonize dynamic bindings only $srcEntitTypeID = $map->getSourceEntityTypeID(); $dstEntitTypeID = $map->getDestinationEntityTypeID(); $outdatedItems = array(); foreach ($map->getItems() as $item) { $srcFieldID = $item->getSourceField(); $dstFieldID = $item->getDestinationField(); if ($dstFieldID === '') { $dstFieldID = $srcFieldID; } $isDynamicSrc = EntityConversionMapItem::isDynamicField($srcFieldID); $isDynamicDst = EntityConversionMapItem::isDynamicField($dstFieldID); $srcField = $isDynamicSrc ? self::getUserField($srcEntitTypeID, $srcFieldID) : null; $dstField = $isDynamicDst ? self::getUserField($dstEntitTypeID, $dstFieldID) : null; if ($isDynamicSrc && $srcField === null || $isDynamicDst && $dstField === null) { $outdatedItems[] = $item; continue; } elseif ($isDynamicSrc && $srcField !== null && $isDynamicDst && $dstField !== null && !$item->isLocked()) { $srcCode = UserFieldSynchronizer::getFieldComplianceCode($srcField); $dstCode = UserFieldSynchronizer::getFieldComplianceCode($dstField); if ($srcCode !== $dstCode) { $outdatedItems[] = $item; continue; } } } if (!empty($outdatedItems)) { foreach ($outdatedItems as $item) { $map->removeItem($item); } } $intersections = UserFieldSynchronizer::getIntersection($srcEntitTypeID, $dstEntitTypeID); foreach ($intersections as $intersection) { $srcFieldID = $intersection['SRC_FIELD_NAME']; $dstFieldID = $intersection['DST_FIELD_NAME']; if ($map->findItemBySourceID($srcFieldID) === null) { $map->createItem($srcFieldID, $dstFieldID); } } }
public function internalize(array $params) { $this->srcEntityTypeID = isset($params['srcEntityTypeID']) ? $params['srcEntityTypeID'] : ''; $this->dstEntityTypeID = isset($params['dstEntityTypeID']) ? $params['dstEntityTypeID'] : ''; if (isset($params['time'])) { $this->time = new DateTime($params['time'], \DateTime::ISO8601); } //if(isset($params['sync'])) //{ // $this->isSynchronized = $params['sync']; //} if (isset($params['items']) && is_array($params['items'])) { foreach ($params['items'] as $itemParams) { $item = new EntityConversionMapItem(); $item->internalize($itemParams); $this->setItem($item); } } }