public function queryRecordLink($sourceType, $destType, $sourceID, $destID)
{
list($sourceTable, $destTable, $linkTable, $sourceCol, $destCol) = $this->getRelationalTablesAndColumns($sourceType, $destType);
$key = $this->getCacheKey(array($sourceType, $destType, $sourceID, $destID));
if ($this->flagUseCache && ($cached = $this->getCached($linkTable, $key))) {
return $cached;
}
$sqlFilterStr = '';
if (count(self::$sqlFilters)) {
$sqlFilterStr = $this->getSQLFilterSnippet($destType);
}
if ($sourceTable === $destTable) {
$sql = "SELECT {$linkTable}.* {$sqlFilterStr} FROM {$linkTable}\n\t\t\t\tWHERE ( {$sourceCol} = ? AND {$destCol} = ? ) OR\n\t\t\t\t ( {$destCol} = ? AND {$sourceCol} = ? ) -- keep-cache";
$row = $this->adapter->getRow($sql, array($sourceID, $destID, $sourceID, $destID));
} else {
$sql = "SELECT {$linkTable}.* {$sqlFilterStr} FROM {$linkTable}\n\t\t\t\tWHERE {$sourceCol} = ? AND {$destCol} = ? -- keep-cache";
$row = $this->adapter->getRow($sql, array($sourceID, $destID));
}
$this->putResultInCache($linkTable, $key, $row);
return $row;
}