diff --git a/feeds.plugins.inc b/feeds.plugins.inc index cbba3f5cfcbc2b4104718c9db2cee504902079e9..08b9b98ae2a09521a56c2c07227e4ca575014987 100644 --- a/feeds.plugins.inc +++ b/feeds.plugins.inc @@ -21,7 +21,8 @@ function _feeds_feeds_plugins() { ), ); $info['FeedsMissingPlugin'] = array( - 'hidden' => TRUE, + 'name' => 'Missing plugin', + 'description' => 'There is a problem with your configuration.', 'handler' => array( 'class' => 'FeedsMissingPlugin', 'file' => 'FeedsPlugin.inc', diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc index b8ebfc69a27817a2bf4a18799976e0908d2f1603..b174d75d81aee62cbf34690672d7b90b4991f582 100644 --- a/feeds_ui/feeds_ui.admin.inc +++ b/feeds_ui/feeds_ui.admin.inc @@ -315,7 +315,8 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k break; case 'mapping': - $active_container['title'] = t('Mapping for !processor', array('!processor' => $plugins[$config['processor']['plugin_key']]['name'])); + $processor_name = isset($plugins[$config['processor']['plugin_key']]['name']) ? $plugins[$config['processor']['plugin_key']]['name'] : $plugins['FeedsMissingPlugin']['name']; + $active_container['title'] = t('Mapping for @processor', array('@processor' => $processor_name)); $active_container['body'] = drupal_get_form('feeds_ui_mapping_form', $importer); break; } @@ -349,7 +350,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k $config_info[] = $info; // Fetcher. - $fetcher = $plugins[$config['fetcher']['plugin_key']]; + $fetcher = isset($plugins[$config['fetcher']['plugin_key']]) ? $plugins[$config['fetcher']['plugin_key']] : $plugins['FeedsMissingPlugin']; $actions = array(); if ($importer->fetcher->hasConfigForm()) { $actions = array(l(t('Settings'), $path . '/settings/' . $config['fetcher']['plugin_key'])); @@ -366,7 +367,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k $config_info[] = $info; // Parser. - $parser = $plugins[$config['parser']['plugin_key']]; + $parser = isset($plugins[$config['parser']['plugin_key']]) ? $plugins[$config['parser']['plugin_key']] : $plugins['FeedsMissingPlugin']; $actions = array(); if ($importer->parser->hasConfigForm()) { $actions = array(l(t('Settings'), $path . '/settings/' . $config['parser']['plugin_key'])); @@ -383,7 +384,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k $config_info[] = $info; // Processor. - $processor = $plugins[$config['processor']['plugin_key']]; + $processor = isset($plugins[$config['processor']['plugin_key']]) ? $plugins[$config['processor']['plugin_key']] : $plugins['FeedsMissingPlugin']; $actions = array(); if ($importer->processor->hasConfigForm()) { $actions[] = l(t('Settings'), $path . '/settings/' . $config['processor']['plugin_key']); diff --git a/plugins/FeedsPlugin.inc b/plugins/FeedsPlugin.inc index ec489a89d8e50fba7f14870d067e607a52e00389..4bad07e1106c9e7c8baed94f3a99a604b0871696 100644 --- a/plugins/FeedsPlugin.inc +++ b/plugins/FeedsPlugin.inc @@ -272,9 +272,78 @@ class FeedsMissingPlugin extends FeedsPlugin { public function pluginType() { return 'missing'; } + + public function save() {} + + /** + * Fetcher methods. + */ + public function fetch(FeedsSource $source) { + return new FeedsFetcherResult(''); + } + + public function clear(FeedsSource $source) {} + + public function request($feed_nid = 0) { + drupal_access_denied(); + } + public function menuItem() { return array(); } + + public function subscribe(FeedsSource $source) {} + + public function unsubscribe(FeedsSource $source) {} + + public function importPeriod(FeedsSource $source) {} + + /** + * Parser methods. + */ + public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) { + return new FeedsParserResult(); + } + + public function getMappingSources() { + return array(); + } + + /** + * Processor methods. + */ + public function process(FeedsSource $source, FeedsParserResult $parser_result) {} + + public function entityType() {} + + public function bundle() {} + + public function bundleOptions() { + return array(); + } + + public function getLimit() { + return 0; + } + + public function getMappings() { + return array(); + } + + public function getMappingTargets() { + return array(); + } + + public function expire(FeedsSource $source, $time = NULL) {} + + public function itemCount(FeedsSource $source) { + return 0; + } + + public function expiryTime() { + return FEEDS_EXPIRE_NEVER; + } + } /**