From 8f693b5a8cd5a52e28e4f011b9ae3ed100ba5694 Mon Sep 17 00:00:00 2001 From: Michael Stenta Date: Wed, 5 Jul 2017 09:45:04 -0400 Subject: [PATCH] Add a helper function for building Feeds Tamper plugins. --- .../farm_import.feeds_tamper_default.inc | 98 ++----------------- modules/farm/farm_import/farm_import.module | 76 ++++++++++++++ 2 files changed, 83 insertions(+), 91 deletions(-) diff --git a/modules/farm/farm_import/farm_import.feeds_tamper_default.inc b/modules/farm/farm_import/farm_import.feeds_tamper_default.inc index 400a1516..0b25a561 100644 --- a/modules/farm/farm_import/farm_import.feeds_tamper_default.inc +++ b/modules/farm/farm_import/farm_import.feeds_tamper_default.inc @@ -17,37 +17,12 @@ function farm_import_feeds_tamper_default() { foreach ($asset_types as $bundle => $type) { // Make asset name field required. - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'farm_asset_' . $bundle . '-name-required'; - $feeds_tamper->importer = 'farm_asset_' . $bundle; - $feeds_tamper->source = 'Name'; - $feeds_tamper->plugin_id = 'required'; - $feeds_tamper->settings = array( - 'invert' => 0, - 'log' => 0, - ); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'Required field'; + $feeds_tamper = farm_import_feeds_tamper_plugin('farm_asset', $bundle, 'Name', 'required'); $export[$feeds_tamper->id] = $feeds_tamper; // If a "Parent IDs" field exists, explode it into an array of IDs. if (!empty(field_info_instance('farm_asset', 'field_farm_parent', $bundle))) { - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'farm_asset_' . $bundle . '-parent_ids-explode'; - $feeds_tamper->importer = 'farm_asset_' . $bundle; - $feeds_tamper->source = 'Parent IDs'; - $feeds_tamper->plugin_id = 'explode'; - $feeds_tamper->settings = array( - 'separator' => ',', - 'limit' => '', - 'real_separator' => ',', - ); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'Explode'; + $feeds_tamper = farm_import_feeds_tamper_plugin('farm_asset', $bundle, 'Parent IDs', 'explode'); $export[$feeds_tamper->id] = $feeds_tamper; } } @@ -59,89 +34,30 @@ function farm_import_feeds_tamper_default() { foreach ($log_types as $bundle => $type) { // Convert date to timestamp. - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'log_' . $bundle . '-date-strtotime'; - $feeds_tamper->importer = 'log_' . $bundle; - $feeds_tamper->source = 'Date'; - $feeds_tamper->plugin_id = 'strtotime'; - $feeds_tamper->settings = array(); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'String to Unix timestamp'; + $feeds_tamper = farm_import_feeds_tamper_plugin('log', $bundle, 'Date', 'strtotime'); $export[$feeds_tamper->id] = $feeds_tamper; // Make date field required. - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'log_' . $bundle . '-date-required'; - $feeds_tamper->importer = 'log_' . $bundle; - $feeds_tamper->source = 'Date'; - $feeds_tamper->plugin_id = 'required'; - $feeds_tamper->settings = array( - 'invert' => 0, - 'log' => 0, - ); + $feeds_tamper = farm_import_feeds_tamper_plugin('log', $bundle, 'Date', 'required'); $feeds_tamper->weight = 1; - $feeds_tamper->description = 'Required field'; $export[$feeds_tamper->id] = $feeds_tamper; // If an "Asset IDs" field exists, explode it into an array of IDs. if (!empty(field_info_instance('log', 'field_farm_asset', $bundle))) { - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'log_' . $bundle . '-asset_ids-explode'; - $feeds_tamper->importer = 'log_' . $bundle; - $feeds_tamper->source = 'Asset IDs'; - $feeds_tamper->plugin_id = 'explode'; - $feeds_tamper->settings = array( - 'separator' => ',', - 'limit' => '', - 'real_separator' => ',', - ); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'Explode'; + $feeds_tamper = farm_import_feeds_tamper_plugin('log', $bundle, 'Asset IDs', 'explode'); $export[$feeds_tamper->id] = $feeds_tamper; } // If an "Area names" field exists, explode it into an array of area names. if (!empty(field_info_instance('log', 'field_farm_area', $bundle))) { - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'log_' . $bundle . '-area_names-explode'; - $feeds_tamper->importer = 'log_' . $bundle; - $feeds_tamper->source = 'Area names'; - $feeds_tamper->plugin_id = 'explode'; - $feeds_tamper->settings = array( - 'separator' => ',', - 'limit' => '', - 'real_separator' => ',', - ); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'Explode'; + $feeds_tamper = farm_import_feeds_tamper_plugin('log', $bundle, 'Area names', 'explode'); $export[$feeds_tamper->id] = $feeds_tamper; } // If a "Category names" field exists, explode it into an array of category // names. if (!empty(field_info_instance('log', 'field_farm_log_category', $bundle))) { - $feeds_tamper = new stdClass(); - $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ - $feeds_tamper->api_version = 2; - $feeds_tamper->id = 'log_' . $bundle . '-category_names-explode'; - $feeds_tamper->importer = 'log_' . $bundle; - $feeds_tamper->source = 'Category names'; - $feeds_tamper->plugin_id = 'explode'; - $feeds_tamper->settings = array( - 'separator' => ',', - 'limit' => '', - 'real_separator' => ',', - ); - $feeds_tamper->weight = 0; - $feeds_tamper->description = 'Explode'; + $feeds_tamper = farm_import_feeds_tamper_plugin('log', $bundle, 'Category names', 'explode'); $export[$feeds_tamper->id] = $feeds_tamper; } } diff --git a/modules/farm/farm_import/farm_import.module b/modules/farm/farm_import/farm_import.module index 04a8df41..250165cd 100644 --- a/modules/farm/farm_import/farm_import.module +++ b/modules/farm/farm_import/farm_import.module @@ -68,3 +68,79 @@ function farm_import_farm_ui_actions() { return $actions; } + +/** + * Helper function for generating standardized tamper plugin definitions. + * + * @param string $entity_type + * The entity type. + * @param string $bundle + * The entity bundle. + * @param string $source + * The name of the Feeds source (column header in CSV imports). + * @param string $plugin + * The Feeds Tamper plugin machine name. + * + * @return object + * Returns a Feeds Tamper plugin object. + */ +function farm_import_feeds_tamper_plugin($entity_type, $bundle, $source, $plugin) { + + // Build the importer machine name. + $importer = $entity_type . '_' . $bundle; + + // Generate a machine name from the source. + $source_machine = feeds_tamper_make_machine($source); + + // Build the tamper plugin ID. + $id = $importer . '-' . $source_machine . '-' . $plugin; + + // Build the description and settings based on the plugin type. + switch ($plugin) { + + // Explode. + case 'explode': + $description = 'Explode'; + $settings = array( + 'separator' => ',', + 'limit' => '', + 'real_separator' => ',', + ); + break; + + // Required. + case 'required': + $description = 'Required field'; + $settings = array( + 'invert' => 0, + 'log' => 0, + ); + break; + + // String to Unix timestamp. + case 'strtotime': + $description = 'String to Unix timestamp'; + $settings = array(); + break; + + // Empty defaults. + default: + $description = ''; + $settings = array(); + } + + // Build the plugin. + $feeds_tamper = new stdClass(); + $feeds_tamper->disabled = FALSE; /* Edit this to true to make a default feeds_tamper disabled initially */ + $feeds_tamper->api_version = 2; + $feeds_tamper->id = $id; + $feeds_tamper->importer = $importer; + $feeds_tamper->source = $source; + $feeds_tamper->plugin_id = $plugin; + $feeds_tamper->settings = $settings; + $feeds_tamper->weight = 0; + $feeds_tamper->description = $description; + + // Return the plugin. + return $feeds_tamper; +}