コード例 #1
0
 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);
 }