/**
* Returns a data map for a given class name
- *
+ *
+ * @param string $className The class name you want to fetch the Data Map for
* @return Tx_Extbase_Persistence_Mapper_DataMap The data map
*/
public function getDataMap($className) {
if (is_array($persistenceSettings['mapping']['columns'])) {
$columnMapping = $persistenceSettings['mapping']['columns'];
}
- } else {
+ } elseif (class_exists($className)) {
foreach (class_parents($className) as $parentClassName) {
$persistenceSettings = $extbaseSettings['persistence']['classes'][$parentClassName];
if (is_array($persistenceSettings)) {
}
break;
}
+ } else {
+ throw new Tx_Extbase_Persistence_Exception('Could not determine a Data Map for given class name.', 1256067130);
}
- if (strlen($className) === 0) throw new Tx_Extbase_Persistence_Exception('Could not determine table name for given class.', 1256067130);
$dataMap = new Tx_Extbase_Persistence_Mapper_DataMap($className, $tableName, $columnMapping);
$this->dataMaps[$className] = $dataMap;
* @return void
*/
protected function addPageIdStatement($tableName, array &$sql) {
- if (is_array($GLOBALS['TCA'][$tableName]['ctrl']) && $this->dataMapper->getDataMap($tableName)->hasPidColumn()) {
+ $columns = $this->databaseHandle->admin_get_fields($tableName);
+ if (is_array($GLOBALS['TCA'][$tableName]['ctrl']) && array_key_exists('pid', $columns)) {
$extbaseFrameworkConfiguration = Tx_Extbase_Dispatcher::getExtbaseFrameworkConfiguration();
$sql['additionalWhereClause'][] = $tableName . '.pid IN (' . implode(', ', t3lib_div::intExplode(',', $extbaseFrameworkConfiguration['persistence']['storagePid'])) . ')';
}
$pageIdsToClear = array();
$storagePage = NULL;
- if ($this->dataMapper->getDataMap($tableName)->hasPidColumn()) {
+ $columns = $this->databaseHandle->admin_get_fields($tableName);
+ if (array_key_exists('pid', $columns)) {
$result = $this->databaseHandle->exec_SELECTquery('pid', $tableName, 'uid='.intval($uid));
if ($row = $this->databaseHandle->sql_fetch_assoc($result)) {
$storagePage = $row['pid'];