public function GetCondisionsByRelationship($relationship) { $relstionshipDAO = new RelationshipDAO(); $links = $relstionshipDAO->GetLinksByRelId($relationship->relId, 1); $conditionsArr = array(); $dataMatchingCheckerDAO = new DataMatchingCheckerDAO(); foreach ($links as $key => $link) { if (isset($relationship->selectedLinks)) { //no selected property might be setup because, in case we just use all links $shouldBeIncluded = $this->isLinkSelected($link, $relationship->selectedLinks); if (!$shouldBeIncluded) { continue; } } $condition = " [{$relationship->sidFrom->tableName}{$relationship->sidFrom->sid}].[{$link->fromPart}] = [{$relationship->sidTo->tableName}{$relationship->sidTo->sid}].[{$link->toPart}] "; $encodeToDecodeMap = array($link->fromPartEncoded => $link->fromPart, $link->toPartEncoded => $link->toPart); $synonums = $dataMatchingCheckerDAO->getSynonymnsByCids($link->fromPartEncoded, $link->toPartEncoded); if (isset($synonums) && count($synonums) > 0) { $synCondArr = array(); foreach ($synonums as $key => $syn) { $synStr = " ( [{$relationship->sidFrom->tableName}{$relationship->sidFrom->sid}].[{$encodeToDecodeMap[$syn->linkFrom]}] = '{$syn->valueFrom}' AND [{$relationship->sidTo->tableName}{$relationship->sidTo->sid}].[{$encodeToDecodeMap[$syn->linkTo]}] = '{$syn->valueTo}' ) "; $synCondArr[] = $synStr; } $synCond = implode(" OR ", $synCondArr); $conditionsArr[] = "( {$condition} OR {$synCond} )"; } else { $conditionsArr[] = "( {$condition} )"; } } return implode(" and ", $conditionsArr); }