refTable = $refTable; $this->refKey = $refKey; $this->targetTable = $targetTable; $this->targetKey = $targetKey; $this->refTypeColumn = $refTypeColumn; } /** * @return mixed */ public function getReferenceTable() { return $this->refTable; } /** * @return mixed */ public function getReferenceKey() { return $this->refKey; } /** * @return null */ public function getTypeColumn() { return $this->refTypeColumn; } /** * @return null */ public function getTargetTable() { return $this->targetTable; } /** * @return string */ public function getTargetKey() { return $this->targetKey; } /** * @param string $tableName * * @return bool */ public function matchesTargetTable($tableName) { return ($this->getTargetTable() === $tableName); } /** * @param CRM_Core_DAO $targetDao * * @return Object */ public function findReferences($targetDao) { $targetColumn = $this->getTargetKey(); $select = 'id'; // CRM-19385: Since id is removed, return all rows for cache tables. if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($this->getReferenceTable(), 'id')) { $select = '*'; } $params = [ 1 => [$targetDao->$targetColumn, 'String'], ]; $sql = <<getReferenceTable()} WHERE {$this->getReferenceKey()} = %1 EOS; $daoName = CRM_Core_DAO_AllCoreTables::getClassForTable($this->getReferenceTable()); $result = CRM_Core_DAO::executeQuery($sql, $params, TRUE, $daoName); return $result; } /** * @param CRM_Core_DAO $targetDao * * @return array */ public function getReferenceCount($targetDao) { $targetColumn = $this->getTargetKey(); $params = [ 1 => [$targetDao->$targetColumn, 'String'], ]; $sql = <<getReferenceTable()} WHERE {$this->getReferenceKey()} = %1 EOS; return [ 'name' => implode(':', ['sql', $this->getReferenceTable(), $this->getReferenceKey()]), 'type' => get_class($this), 'table' => $this->getReferenceTable(), 'key' => $this->getReferenceKey(), 'count' => CRM_Core_DAO::singleValueQuery($sql, $params), ]; } }