From 9c546a59b5eff8a9beb8d217fb9f469eca78d604 Mon Sep 17 00:00:00 2001 From: Marton Kiss Date: Mon, 30 Jun 2014 14:48:38 +0200 Subject: [PATCH] Add drush import-static-pages command Drush import-static-pages invoke static page feed import. The source directory must be set in groups_feeds_markdown_directory variable. Add missing dependency of commons_pages module into groups.info. Change-Id: I7e8ae86614127f103c56eb13128c8d2236a5edee --- groups.info | 1 + .../groups_feeds/FeedsMarkdownParser.inc | 17 ++++++++++-- .../groups_feeds/groups_feeds.drush.inc | 27 +++++++++++++++++++ modules/groups/groups_feeds/groups_feeds.info | 5 ++-- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/groups.info b/groups.info index 4b6c4ff..73919df 100644 --- a/groups.info +++ b/groups.info @@ -98,6 +98,7 @@ dependencies[] = commons_location dependencies[] = commons_media dependencies[] = commons_misc dependencies[] = commons_notify +dependencies[] = commons_pages dependencies[] = commons_polls dependencies[] = commons_posts dependencies[] = commons_profile_base diff --git a/modules/groups/groups_feeds/FeedsMarkdownParser.inc b/modules/groups/groups_feeds/FeedsMarkdownParser.inc index 4943245..8ee509f 100644 --- a/modules/groups/groups_feeds/FeedsMarkdownParser.inc +++ b/modules/groups/groups_feeds/FeedsMarkdownParser.inc @@ -5,6 +5,11 @@ * jekyll like yaml headers. */ +/** + * Base class for all exceptions thrown by FeedsMarkdownParse + */ +class FeedsMarkdownException extends Exception {} + class FeedsMarkdownParser extends FeedsParser { /** @@ -15,7 +20,15 @@ class FeedsMarkdownParser extends FeedsParser { public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) { $result = new FeedsParserResult(); $raw = $fetcher_result->getRaw(); - $markdown = $this->parseMarkdown($raw); + if ($fetcher_result instanceof FeedsFileFetcherResult) { + var_dump($fetcher_result); + } + try { + $markdown = $this->parseMarkdown($raw); + } catch (FeedsMarkdownException $e) { + // catch invalid markdown formats here + return $result; + } $mandatory_fields = array('title', 'body'); $optional_fields = array('path', 'published'); $item = array(); @@ -100,7 +113,7 @@ class FeedsMarkdownParser extends FeedsParser { // parse header marker, we except --- here $line = fgets($fp); if ($line != "---\n") { - throw new Exception('Missing header mark'); + throw new FeedsMarkdownException('Missing header mark'); } // process content $line = fgets($fp); diff --git a/modules/groups/groups_feeds/groups_feeds.drush.inc b/modules/groups/groups_feeds/groups_feeds.drush.inc index 2c837fc..a00e3b4 100644 --- a/modules/groups/groups_feeds/groups_feeds.drush.inc +++ b/modules/groups/groups_feeds/groups_feeds.drush.inc @@ -27,6 +27,11 @@ function groups_feeds_drush_command() { 'bootstrap' => DRUSH_BOOTSTRAP_DRUSH, 'arguments' => array(), ); + $items['import-static-pages'] = array( + 'description' => 'Import static pages.', + 'bootstrap' => DRUSH_BOOTSTRAP_DRUSH, + 'arguments' => array(), + ); return $items; } @@ -50,4 +55,26 @@ function drush_groups_feeds_import_meetup_events() { echo 'Failed to import feed: '.$url."\n"; } } +} + +/** + * Trigger static pages import. + */ +function drush_groups_feeds_import_static_pages() { + $feedSource = feeds_source('static_page_import'); + $config = $feedSource->getConfig(); + $directory = variable_get('groups_feeds_markdown_directory', NULL); + if (empty($directory)) { + watchdog('drush_groups_feeds', 'Variable groups_feeds_markdown_directory missing.', array(), WATCHDOG_ERROR); + return FALSE; + } + $config['feeds_fetcher_directory_fetcher']['source'] = $directory; + $config['feeds_fetcher_directory_fetcher']['feed_files_fetched'] = array(); + $feedSource->setConfig($config); + try { + while (FEEDS_BATCH_COMPLETE != $feedSource->import()); + $feedSource->log('import', 'Import static page: !source', array('!directory' => $directory), WATCHDOG_INFO); + } catch (Exception $e) { + watchdog_exception('Groups Feeds', $e); + } } \ No newline at end of file diff --git a/modules/groups/groups_feeds/groups_feeds.info b/modules/groups/groups_feeds/groups_feeds.info index c2fc0e8..3aafcc0 100644 --- a/modules/groups/groups_feeds/groups_feeds.info +++ b/modules/groups/groups_feeds/groups_feeds.info @@ -1,8 +1,9 @@ name = Groups feeds description = Community portal Feeds module extension core = 7.x -package = groups +package = Groups - Building Blocks version = 7.x-1.0 project = groups_feeds -dependencies[] = feeds \ No newline at end of file +dependencies[] = feeds +dependencies[] = commons_pages \ No newline at end of file