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);
         }
     }
 }
Exemplo n.º 2
0
 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);
         }
     }
 }