final public function formatColumnName($columnName, $matchRequired = FALSE) { if ($this->isStateChanged()) { $this->cleanInternalState(); } if (isset($this->formattedColumnNames[$columnName])) { $formattedColumnName = $this->formattedColumnNames[$columnName]; if ($formattedColumnName === FALSE) { $formattedColumnName = NULL; } } else { $formattedColumnName = $this->formatColumnNameImpl($columnName); if (isset($formattedColumnName) && isset($this->parent)) { $formattedColumnName = $this->parent->formatColumnName($formattedColumnName); } // checking if the same name is not mapped to two different columns if (isset($formattedColumnName) && isset($this->formattedColumnNames)) { $otherColumnName = array_search($formattedColumnName, $this->formattedColumnNames); if ($otherColumnName !== FALSE) { throw new IllegalStateException(t( 'Name mapping is ambiguous for %columnName column: [%mappedColumnNameA, %mappedColumnNameB]', array( '%columnName' => $formattedColumnName, '%mappedColumnNameA' => $otherColumnName, '%mappedColumnNameB' => $columnName))); } } $this->formattedColumnNames[$columnName] = isset($formattedColumnName) ? $formattedColumnName : FALSE; } if (!isset($formattedColumnName) && $matchRequired) { $this->errorRequiredFormattedColumnName($columnName); } return $formattedColumnName; }