Index: feedapi_mapper.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/feedapi_mapper/feedapi_mapper.module,v
retrieving revision 1.1.2.7.2.24
diff -u -p -r1.1.2.7.2.24 feedapi_mapper.module
--- feedapi_mapper.module	11 Apr 2009 00:16:36 -0000	1.1.2.7.2.24
+++ feedapi_mapper.module	15 Apr 2009 21:28:24 -0000
@@ -26,6 +26,23 @@ function feedapi_mapper_menu() {
     'access callback' => 'feedapi_mapper_access_mapper',
     'access arguments' => array(1),
   );
+  $items['node/%node/map/map'] = array(
+    'title' => 'Map',
+    'page callback' => 'feedapi_mapper_page',
+    'page arguments' => array(1),
+    'type' => MENU_DEFAULT_LOCAL_TASK,
+    'access callback' => 'feedapi_mapper_access_mapper',
+    'access arguments' => array(1),
+  );
+  $items['node/%node/map/export'] = array(
+    'title' => 'Export',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('feedapi_mapper_export_page', 1),
+    'type' => MENU_LOCAL_TASK,
+    'access callback' => 'feedapi_mapper_access_mapper',
+    'access arguments' => array(1),
+    'weight' => 2,
+  );
   foreach (node_get_types() as $type) {
     $type_url_str = str_replace('_', '-', $type->type);
     $items['admin/content/node-type/'. $type_url_str .'/map'] = array(
@@ -36,7 +53,24 @@ function feedapi_mapper_menu() {
       'type' => MENU_LOCAL_TASK,
       'access callback' => 'feedapi_mapper_access_mapper',
       'access arguments' => array(3),
-      );
+    );
+    $items['admin/content/node-type/'. $type_url_str .'/map/map'] = array(
+      'title' => 'Map',
+      'page callback' => 'feedapi_mapper_page',
+      'page arguments' => array(1),
+      'type' => MENU_DEFAULT_LOCAL_TASK,
+      'access callback' => 'feedapi_mapper_access_mapper',
+      'access arguments' => array(1),
+    );
+    $items['admin/content/node-type/'. $type_url_str .'/map/export'] = array(
+      'title' => 'Export',
+      'page callback' => 'drupal_get_form',
+      'page arguments' => array('feedapi_mapper_export_page', 1),
+      'type' => MENU_LOCAL_TASK,
+      'access callback' => 'feedapi_mapper_access_mapper',
+      'access arguments' => array(1),
+      'weight' => 2,
+    );
   }
   return $items;
 }
@@ -170,6 +204,32 @@ function feedapi_mapper_page($node) {
   return $output;
 }
 
+function feedapi_mapper_feedapi_mapper_default() {
+return array(229 => array (
+  'a:2:{i:0;s:7:"options";i:1;s:12:"original_url";}' => 'a:2:{i:0;s:7:"emimage";i:1;s:13:"field_emimage";}',
+));
+}
+
+
+/**
+ * Callback function for hook_menu().
+ */
+function feedapi_mapper_export_page($form_state, $node) {
+  $mapping = array();
+  $type = is_string($node) ? $node : $node->nid;
+  $mapping = _feedapi_mapper_load_mapping($type);
+  $head = "
+return array($type => ";
+  $tail = ');';
+  $form['show'] = array(
+    '#title' => t('PHP code'),
+    '#type' => 'textarea',
+    '#default_value' => $head . var_export($mapping, TRUE) . $tail,
+    '#description' => t('To import the mapping to another site you should put the code above into a hook_feedapi_mapper_default() implementation.'),
+  );
+  return $form;
+}
+
 /**
  * Mapping form.
  */
@@ -310,17 +370,33 @@ function _feedapi_mapper_store_mapping($
  */
 function _feedapi_mapper_load_mapping($param) {
   static $mappings;
+  if (isset($mappings[$param])) {
+    return $mappings[$param];
+  }
+  $from_db = $imported_mappings = $imported_mapping = array();
+  $implementors = module_implements('feedapi_mapper_default');
+  foreach ($implementors as $module) {
+    $imported_mappings += module_invoke($module, 'feedapi_mapper_default');
+  }
+  if (isset($imported_mappings[$param])) {
+    $imported_mapping = $imported_mappings[$param];
+  }
   if (is_numeric($param)) {
-    if (isset($mappings[$param])) {
-      return $mappings[$param];
-    }
     if ($mapping = db_result(db_query('SELECT mapping FROM {feedapi_mapper} WHERE nid = %d', $param))) {
       $mappings[$param] = unserialize($mapping);
-      return $mappings[$param];
+      $from_db = $mappings[$param];
     }
   }
   else if (is_string($param)) {
-    return variable_get('feedapi_mapper_mapping_'. $param, array());
+    $from_db = variable_get('feedapi_mapper_mapping_'. $param, array());
+  }
+  if (!empty($imported_mapping) && empty($from_db)) {
+    $mappings[$param] = $imported_mapping;
+    return $imported_mapping;
+  }
+  else {
+    $mappings[$param] = $from_db;
+    return $from_db;
   }
 }
 
