danielebarchiesi@4
|
1 <?php
|
danielebarchiesi@4
|
2 /**
|
danielebarchiesi@4
|
3 * Implementation of hook_features_export().
|
danielebarchiesi@4
|
4 *
|
danielebarchiesi@4
|
5 * Defines one or more component types that are available to Features for export
|
danielebarchiesi@4
|
6 * and a variety of settings for each type.
|
danielebarchiesi@4
|
7 */
|
danielebarchiesi@4
|
8 function schemaorg_features_export($data, &$export, $module_name = '') {
|
danielebarchiesi@4
|
9 // Any feature exporting RDF mappings need the rdf and rdfx modules.
|
danielebarchiesi@4
|
10 $export['dependencies']['rdf'] = 'rdf';
|
danielebarchiesi@4
|
11 $export['dependencies']['schemaorg'] = 'schemaorg';
|
danielebarchiesi@4
|
12
|
danielebarchiesi@4
|
13 foreach ($data as $name) {
|
danielebarchiesi@4
|
14 $parts = explode('-', $name);
|
danielebarchiesi@4
|
15 $entity_type = $parts[0];
|
danielebarchiesi@4
|
16 $bundle_name = $parts[1];
|
danielebarchiesi@4
|
17
|
danielebarchiesi@4
|
18 if ($rdf_mapping = rdf_mapping_load($entity_type, $bundle_name)) {
|
danielebarchiesi@4
|
19 $export['features']['schemaorg'][$entity_type . '-' . $bundle_name] = $rdf_mapping;
|
danielebarchiesi@4
|
20 }
|
danielebarchiesi@4
|
21 }
|
danielebarchiesi@4
|
22
|
danielebarchiesi@4
|
23 return array();
|
danielebarchiesi@4
|
24 }
|
danielebarchiesi@4
|
25
|
danielebarchiesi@4
|
26 /**
|
danielebarchiesi@4
|
27 * Implementation of hook_features_export_options().
|
danielebarchiesi@4
|
28 *
|
danielebarchiesi@4
|
29 * Provides an array of components that can be exported for a given type.
|
danielebarchiesi@4
|
30 */
|
danielebarchiesi@4
|
31 function schemaorg_features_export_options() {
|
danielebarchiesi@4
|
32 $bundles = array();
|
danielebarchiesi@4
|
33
|
danielebarchiesi@4
|
34 foreach (entity_get_info() as $entity_type => $entity) {
|
danielebarchiesi@4
|
35 foreach ($entity['bundles'] as $bundle_name => $bundle) {
|
danielebarchiesi@4
|
36 $bundles[$entity_type . '-' . $bundle_name] = $entity['label'] . ': ' . $bundle['label'];
|
danielebarchiesi@4
|
37 }
|
danielebarchiesi@4
|
38 }
|
danielebarchiesi@4
|
39
|
danielebarchiesi@4
|
40 return $bundles;
|
danielebarchiesi@4
|
41 }
|
danielebarchiesi@4
|
42
|
danielebarchiesi@4
|
43 /**
|
danielebarchiesi@4
|
44 * Implementation of hook_features_export_render().
|
danielebarchiesi@4
|
45 *
|
danielebarchiesi@4
|
46 * Renders a set of components to code as a defaults hook.
|
danielebarchiesi@4
|
47 */
|
danielebarchiesi@4
|
48 function schemaorg_features_export_render($module, $data, $export = NULL) {
|
danielebarchiesi@4
|
49 $code = array();
|
danielebarchiesi@4
|
50 $code[] = ' $schemaorg = array();';
|
danielebarchiesi@4
|
51 $code[] = '';
|
danielebarchiesi@4
|
52
|
danielebarchiesi@4
|
53 foreach ($data as $key => $entity_type_bundle) {
|
danielebarchiesi@4
|
54 if (is_array($entity_type_bundle)) {
|
danielebarchiesi@4
|
55 $entity_type_bundle = $key;
|
danielebarchiesi@4
|
56 }
|
danielebarchiesi@4
|
57 $parts = explode('-', $entity_type_bundle);
|
danielebarchiesi@4
|
58 $entity_type = $parts[0];
|
danielebarchiesi@4
|
59 $bundle_name = $parts[1];
|
danielebarchiesi@4
|
60 if ($rdf_mapping = rdf_mapping_load($entity_type, $bundle_name)) {
|
danielebarchiesi@4
|
61 $rdf_mapping_export = features_var_export($rdf_mapping, ' ');
|
danielebarchiesi@4
|
62 $rdf_bundle = features_var_export($bundle_name);
|
danielebarchiesi@4
|
63 $rdf_entity_type = features_var_export($entity_type);
|
danielebarchiesi@4
|
64 $code[] = " // Exported RDF mapping: {$bundle_name}";
|
danielebarchiesi@4
|
65 $code[] = " \$schemaorg[$rdf_entity_type][$rdf_bundle] = $rdf_mapping_export;";
|
danielebarchiesi@4
|
66 $code[] = "";
|
danielebarchiesi@4
|
67 }
|
danielebarchiesi@4
|
68 }
|
danielebarchiesi@4
|
69
|
danielebarchiesi@4
|
70 $code[] = ' return $schemaorg;';
|
danielebarchiesi@4
|
71 $code = implode("\n", $code);
|
danielebarchiesi@4
|
72 return array('rdf_default_mappings' => $code);
|
danielebarchiesi@4
|
73 }
|
danielebarchiesi@4
|
74
|
danielebarchiesi@4
|
75 /**
|
danielebarchiesi@4
|
76 * Implementation of hook_features_revert().
|
danielebarchiesi@4
|
77 *
|
danielebarchiesi@4
|
78 * Reverts components of a feature back to their default state.
|
danielebarchiesi@4
|
79 */
|
danielebarchiesi@4
|
80 function schemaorg_features_revert($module) {
|
danielebarchiesi@4
|
81 return schemaorg_features_rebuild($module);
|
danielebarchiesi@4
|
82 }
|
danielebarchiesi@4
|
83
|
danielebarchiesi@4
|
84 /**
|
danielebarchiesi@4
|
85 * Implementation of hook_features_rebuild().
|
danielebarchiesi@4
|
86 *
|
danielebarchiesi@4
|
87 * Updates faux-exportable components back to their default state.
|
danielebarchiesi@4
|
88 */
|
danielebarchiesi@4
|
89 function schemaorg_features_rebuild($module) {
|
danielebarchiesi@4
|
90 if ($defaults = features_get_default('schemaorg', $module)) {
|
danielebarchiesi@4
|
91 foreach ($defaults as $entity_type => $bundles) {
|
danielebarchiesi@4
|
92 foreach ($bundles as $bundle => $mapping) {
|
danielebarchiesi@4
|
93 rdf_mapping_save(array(
|
danielebarchiesi@4
|
94 'type' => $entity_type,
|
danielebarchiesi@4
|
95 'bundle' => $bundle,
|
danielebarchiesi@4
|
96 'mapping' => $mapping,
|
danielebarchiesi@4
|
97 ));
|
danielebarchiesi@4
|
98 }
|
danielebarchiesi@4
|
99 }
|
danielebarchiesi@4
|
100 }
|
danielebarchiesi@4
|
101 }
|