protected function getMetaDataStorageProperties(DataControllerCallContext $callcontext, $sourceDatasetName) { $metamodel = data_controller_get_metamodel(); $dataset = $metamodel->getDataset($sourceDatasetName); $databaseName = $dataset->source->database; $namespace = NameSpaceHelper::getNameSpace($dataset->name); $metadataDatasetName = NameSpaceHelper::addNameSpace($namespace, self::$DATASET__METADATA); $schemaDocumentId = self::$PROPERTY__DOCUMENT_IDENTIFIER__SCHEMA_TEMPLATE . '@' . $databaseName; return array($metadataDatasetName, $schemaDocumentId); }
protected function getDatasetHandler(DataControllerCallContext $callcontext, $datasetName) { $metamodel = data_controller_get_metamodel(); $dataset = $metamodel->getDataset($datasetName); $namespace = NameSpaceHelper::getNameSpace($dataset->datasourceName); $classname = $dataset->source; $foundScriptName = NULL; // TODO load the configuration only once when instance of the class is initialized // reuse the cached data here to look for PHP script $metamodelConfigurations = module_invoke_all('dp_metamodel'); foreach ($metamodelConfigurations as $metamodelConfiguration) { $path = $metamodelConfiguration['path']; $scriptName = "$path/metamodel/metamodel/$namespace/php/" . $classname . '.php'; if (file_exists($scriptName)) { if (isset($foundScriptName)) { throw new IllegalStateException(t( "Found several PHP scripts to support '@className' dataset: [@previousScriptName, @scriptName]", array('@className' => $classname, '@previousScriptName' => $foundScriptName, '@scriptName' => $scriptName))); } $foundScriptName = $scriptName; } } if (isset($foundScriptName)) { require_once($foundScriptName); } else { throw new IllegalStateException(t("Could not find PHP script to support '@datasetName' dataset", array('@datasetName' => $dataset->publicName))); } return new $classname; }