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)); }
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); }