public static function prepareQueryField(DuplicateCriterion $criterion, $entityTypeID, $entityID, $userID)
 {
     $typeID = $criterion->getIndexTypeID();
     $matchHash = $criterion->getMatchHash();
     $sql = array();
     $query = new Main\Entity\Query(Entity\DuplicateIndexMismatchTable::getEntity());
     $query->addSelect('R_ENTITY_ID', 'ENTITY_ID');
     $query->addFilter('=USER_ID', $userID);
     $query->addFilter('=ENTITY_TYPE_ID', $entityTypeID);
     $query->addFilter('=TYPE_ID', $typeID);
     $query->addFilter('=MATCH_HASH', $matchHash);
     $query->addFilter('=L_ENTITY_ID', $entityID);
     $sql[] = $query->getQuery();
     $query = new Main\Entity\Query(Entity\DuplicateIndexMismatchTable::getEntity());
     $query->addSelect('L_ENTITY_ID', 'ENTITY_ID');
     $query->addFilter('=USER_ID', $userID);
     $query->addFilter('=ENTITY_TYPE_ID', $entityTypeID);
     $query->addFilter('=TYPE_ID', $typeID);
     $query->addFilter('=MATCH_HASH', $matchHash);
     $query->addFilter('=R_ENTITY_ID', $entityID);
     $sql[] = $query->getQuery();
     return new Main\DB\SqlExpression(implode(' UNION ALL ', $sql));
 }
예제 #2
0
 public function registerCriterionMismatch(Integrity\DuplicateCriterion $criterion, $leftEntityID, $rightEntityID)
 {
     $entityTypeID = $this->entityTypeID;
     $userID = $this->userID;
     $typeID = $criterion->getIndexTypeID();
     $matchHash = $criterion->getMatchHash();
     if ($matchHash === '') {
         throw new Main\ArgumentException('Match hash is empty', 'criterion');
     }
     Integrity\DuplicateIndexMismatch::register($entityTypeID, $leftEntityID, $rightEntityID, $typeID, $matchHash, $userID);
 }