Mercurial > hg > rr-repo
diff sites/all/modules/schemaorg/schemaorg.features.inc @ 4:ce11bbd8f642
added modules
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 19 Sep 2013 10:38:44 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/schemaorg/schemaorg.features.inc Thu Sep 19 10:38:44 2013 +0100 @@ -0,0 +1,101 @@ +<?php +/** + * Implementation of hook_features_export(). + * + * Defines one or more component types that are available to Features for export + * and a variety of settings for each type. + */ +function schemaorg_features_export($data, &$export, $module_name = '') { + // Any feature exporting RDF mappings need the rdf and rdfx modules. + $export['dependencies']['rdf'] = 'rdf'; + $export['dependencies']['schemaorg'] = 'schemaorg'; + + foreach ($data as $name) { + $parts = explode('-', $name); + $entity_type = $parts[0]; + $bundle_name = $parts[1]; + + if ($rdf_mapping = rdf_mapping_load($entity_type, $bundle_name)) { + $export['features']['schemaorg'][$entity_type . '-' . $bundle_name] = $rdf_mapping; + } + } + + return array(); +} + +/** + * Implementation of hook_features_export_options(). + * + * Provides an array of components that can be exported for a given type. + */ +function schemaorg_features_export_options() { + $bundles = array(); + + foreach (entity_get_info() as $entity_type => $entity) { + foreach ($entity['bundles'] as $bundle_name => $bundle) { + $bundles[$entity_type . '-' . $bundle_name] = $entity['label'] . ': ' . $bundle['label']; + } + } + + return $bundles; +} + +/** + * Implementation of hook_features_export_render(). + * + * Renders a set of components to code as a defaults hook. + */ +function schemaorg_features_export_render($module, $data, $export = NULL) { + $code = array(); + $code[] = ' $schemaorg = array();'; + $code[] = ''; + + foreach ($data as $key => $entity_type_bundle) { + if (is_array($entity_type_bundle)) { + $entity_type_bundle = $key; + } + $parts = explode('-', $entity_type_bundle); + $entity_type = $parts[0]; + $bundle_name = $parts[1]; + if ($rdf_mapping = rdf_mapping_load($entity_type, $bundle_name)) { + $rdf_mapping_export = features_var_export($rdf_mapping, ' '); + $rdf_bundle = features_var_export($bundle_name); + $rdf_entity_type = features_var_export($entity_type); + $code[] = " // Exported RDF mapping: {$bundle_name}"; + $code[] = " \$schemaorg[$rdf_entity_type][$rdf_bundle] = $rdf_mapping_export;"; + $code[] = ""; + } + } + + $code[] = ' return $schemaorg;'; + $code = implode("\n", $code); + return array('rdf_default_mappings' => $code); +} + +/** + * Implementation of hook_features_revert(). + * + * Reverts components of a feature back to their default state. + */ +function schemaorg_features_revert($module) { + return schemaorg_features_rebuild($module); +} + +/** + * Implementation of hook_features_rebuild(). + * + * Updates faux-exportable components back to their default state. + */ +function schemaorg_features_rebuild($module) { + if ($defaults = features_get_default('schemaorg', $module)) { + foreach ($defaults as $entity_type => $bundles) { + foreach ($bundles as $bundle => $mapping) { + rdf_mapping_save(array( + 'type' => $entity_type, + 'bundle' => $bundle, + 'mapping' => $mapping, + )); + } + } + } +}