diff --git a/profiles/wcm_base/CHANGELOG.txt b/profiles/wcm_base/CHANGELOG.txt
index 2e43ca4111073ff18dc942604324abf3ba7f35fc..757f0833b83c6c59fade729a97cf405253f55baa 100644
--- a/profiles/wcm_base/CHANGELOG.txt
+++ b/profiles/wcm_base/CHANGELOG.txt
@@ -1,3 +1,7 @@
+WCM Base 7.x-1.12-rc1, 2019-02-27
+---------------------------------
+- WCM Base: Updated Context to 3.10 per SA-CONTRIB-2019-028.
+
 WCM Base 7.x-1.11, 2019-02-25
 -----------------------------
 - WCM Base:
diff --git a/profiles/wcm_base/modules/contrib/context/context.core.inc b/profiles/wcm_base/modules/contrib/context/context.core.inc
index 41ed93a53ded50b5ef0ee16e1a2bd2d74d7067f1..9e19831473d3dbe0b031021a261643ec76e9421b 100644
--- a/profiles/wcm_base/modules/contrib/context/context.core.inc
+++ b/profiles/wcm_base/modules/contrib/context/context.core.inc
@@ -94,11 +94,27 @@ function context_theme_registry_alter(&$theme_registry) {
  */
 function context_ctools_render_alter($info, $page, $data) {
   extract($data);
-  if ($page && in_array($task['name'], array('node_view', 'node_edit'), TRUE)) {
-    foreach ($contexts as $ctools_context) {
-      if (in_array('node', $ctools_context->type) && !empty($ctools_context->data)) {
-        context_node_condition($ctools_context->data, $task['name'] === 'node_view' ? 'view' : 'form');
-        break;
+
+  // Check for page handlers.
+  if ($page) {
+    // Check for node page handler.
+    if (in_array($task['name'], array('node_view', 'node_edit'), TRUE)) {
+      foreach ($contexts as $ctools_context) {
+        if (in_array('node', $ctools_context->type) && !empty($ctools_context->data)) {
+          context_node_condition($ctools_context->data, $task['name'] === 'node_view' ? 'view' : 'form');
+          break;
+        }
+      }
+    }
+    // Check for taxonomy term page handler.
+    elseif (in_array($task['name'], array('term_view', 'term_edit'), TRUE)) {
+      foreach ($contexts as $ctools_context) {
+        if (in_array('taxonomy_term', $ctools_context->type) && !empty($ctools_context->data)) {
+          if ($plugin = context_get_plugin('condition', 'taxonomy_term')) {
+            $plugin->execute($ctools_context->data, $task['name'] === 'term_view' ? 'view' : 'form');
+          }
+          break;
+        }
       }
     }
   }
diff --git a/profiles/wcm_base/modules/contrib/context/context.info b/profiles/wcm_base/modules/contrib/context/context.info
index 159f142aaa639bdf7377e58fbb138d75baecd364..eef3a9c10292f146644ed8496d9cb333496a09e9 100644
--- a/profiles/wcm_base/modules/contrib/context/context.info
+++ b/profiles/wcm_base/modules/contrib/context/context.info
@@ -8,9 +8,8 @@ files[] = tests/context.test
 files[] = tests/context.conditions.test
 files[] = tests/context.reactions.test
 
-; Information added by Drupal.org packaging script on 2016-05-18
-version = "7.x-3.7"
+; Information added by Drupal.org packaging script on 2019-02-26
+version = "7.x-3.10"
 core = "7.x"
 project = "context"
-datestamp = "1463605446"
-
+datestamp = "1551220089"
diff --git a/profiles/wcm_base/modules/contrib/context/context.module b/profiles/wcm_base/modules/contrib/context/context.module
index 5c0bd5c8c353c5806721a09a68f9abd4a4f7c2a1..c83b15ef2e9a36d9bf45b3b37a8a9c5febce21a1 100644
--- a/profiles/wcm_base/modules/contrib/context/context.module
+++ b/profiles/wcm_base/modules/contrib/context/context.module
@@ -243,6 +243,11 @@ function context_preprocess_menu_link(&$variables) {
         //   css class to the link of this menu.
         // - Do not add class twice on current page.
         if (in_array($variables['element']['#href'], $reaction_menu_paths) && $variables['element']['#href'] != $_GET['q']) {
+          // Initialize classes array if not set.
+          if (!isset($variables['element']['#localized_options']['attributes']['class'])) {
+            $variables['element']['#localized_options']['attributes']['class'] = array();
+          }
+
           // Do not add the 'active' class twice in views tabs.
           if (!in_array('active', $variables['element']['#localized_options']['attributes']['class'])) {
             $variables['element']['#localized_options']['attributes']['class'][] = 'active';
diff --git a/profiles/wcm_base/modules/contrib/context/context_layouts/context_layouts.info b/profiles/wcm_base/modules/contrib/context/context_layouts/context_layouts.info
index 129c4cdbbf8066be286857b7ac13bf4234980afa..65880e38903f8d159b75a2cbbc602d0bd18c139a 100644
--- a/profiles/wcm_base/modules/contrib/context/context_layouts/context_layouts.info
+++ b/profiles/wcm_base/modules/contrib/context/context_layouts/context_layouts.info
@@ -6,9 +6,8 @@ core = 7.x
 
 files[] = plugins/context_layouts_reaction_block.inc
 
-; Information added by Drupal.org packaging script on 2016-05-18
-version = "7.x-3.7"
+; Information added by Drupal.org packaging script on 2019-02-26
+version = "7.x-3.10"
 core = "7.x"
 project = "context"
-datestamp = "1463605446"
-
+datestamp = "1551220089"
diff --git a/profiles/wcm_base/modules/contrib/context/context_ui/context_ui.info b/profiles/wcm_base/modules/contrib/context/context_ui/context_ui.info
index e6c51051b88cb7c4745cbd98196cdf444fd9788f..e5d17f8fc250b21ebcb84476165b7d9774c483f4 100644
--- a/profiles/wcm_base/modules/contrib/context/context_ui/context_ui.info
+++ b/profiles/wcm_base/modules/contrib/context/context_ui/context_ui.info
@@ -8,9 +8,8 @@ configure = admin/structure/context
 files[] = context.module
 files[] = tests/context_ui.test
 
-; Information added by Drupal.org packaging script on 2016-05-18
-version = "7.x-3.7"
+; Information added by Drupal.org packaging script on 2019-02-26
+version = "7.x-3.10"
 core = "7.x"
 project = "context"
-datestamp = "1463605446"
-
+datestamp = "1551220089"
diff --git a/profiles/wcm_base/modules/contrib/context/plugins/context_condition_query_string.inc b/profiles/wcm_base/modules/contrib/context/plugins/context_condition_query_string.inc
index 781d4cbb3a57d54e07695eac926fbc8e1968538b..b7bf5d515618e50fbac0b81c4c2a3a6f4c0cb38b 100644
--- a/profiles/wcm_base/modules/contrib/context/plugins/context_condition_query_string.inc
+++ b/profiles/wcm_base/modules/contrib/context/plugins/context_condition_query_string.inc
@@ -16,7 +16,7 @@ class context_condition_query_string extends context_condition_path {
    */
   function execute() {
     if ($this->condition_used()) {
-      $current_query_string = $_SERVER["QUERY_STRING"];
+      $current_query_string = empty($_SERVER["QUERY_STRING"]) ? '' : $_SERVER["QUERY_STRING"];
       foreach ($this->get_contexts() as $context) {
         $query_strings = $this->fetch_from_context($context, 'values');
         if ($this->match($current_query_string, $query_strings, TRUE)) {
diff --git a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.inc b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.inc
index abcafd87ea621f00407adbabf01316fce96ac8b9..90c005c64d01bd10c3f01f0f32b6da3fe52ec87f 100644
--- a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.inc
+++ b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.inc
@@ -400,13 +400,17 @@ class context_reaction_block extends context_reaction {
       unset($_context_blocks);
 
       foreach ($context_blocks as $r => $blocks) {
-        //only render blocks in an active region
+        // Only render blocks in an active region.
         if (array_key_exists($r, $active_regions)) {
           $context_blocks[$r] = _block_render_blocks($blocks);
 
-          // Make blocks editable if allowed.
-          if ($this->is_editable_region($r)) {
-            foreach ($context_blocks[$r] as $key => $block) {
+          $editable = $this->is_editable_region($r);
+          foreach ($context_blocks[$r] as $key => $block) {
+            // Add the region property to each block.
+            $context_blocks[$r][$key]->region = $r;
+
+            // Make blocks editable if allowed.
+            if ($editable) {
               $context_blocks[$r][$key] = $this->editable_block($block);
             }
           }
@@ -450,12 +454,9 @@ class context_reaction_block extends context_reaction {
    */
   protected function max_block_weight() {
     $blocks = $this->get_blocks();
-    $block_count = 0;
-    foreach ($blocks as $region => $block_list) {
-      $block_count += count($block_list);
-    }
-    // Add 2 to make sure there's space at either end of the block list
-    return round(($block_count + 2) / 2);
+
+    // Add 2 to make sure there's space at either end of the block list.
+    return round((count($blocks) + 2) / 2);
   }
 
   /**
diff --git a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.js b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.js
index fb0f3f1628cdb9bcfc79f43488eaa65e2d7766bb..192b956ff6cc834905d3ed2437b5233006324acb 100644
--- a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.js
+++ b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_block.js
@@ -68,7 +68,7 @@ DrupalContextBlockForm = function(blockForm) {
 
     // Hide enabled blocks from selector that are used
     $('table.context-blockform-region tr').each(function() {
-      var bid = $(this).attr('id');
+      var bid = Drupal.checkPlain($(this).attr('id'));
       $('div.context-blockform-selector input[value="'+bid+'"]').parents('div.form-item').eq(0).hide();
     });
     // Show blocks in selector that are unused
diff --git a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_region.inc b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_region.inc
index c4f0fd7c3bbb1c149df92b2ebf47fa29e4830a3b..d9c0a8ed3a89ccb8606c27007e700cf9e18332fd 100644
--- a/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_region.inc
+++ b/profiles/wcm_base/modules/contrib/context/plugins/context_reaction_region.inc
@@ -17,7 +17,7 @@ class context_reaction_region extends context_reaction {
           '#type' => 'fieldset',
           '#title' => "Disable Regions in {$theme->name} Theme",
           '#collapsible' => TRUE,
-          '#collapsed' => !array_reduce($default, create_function('$a, $b', 'return $a || $b;')),
+          '#collapsed' => !array_reduce($default, 'context_reaction_region::collapseRegion'),
         );
         $form[$theme->name]['disable'] = array(
           '#type' => 'checkboxes',
@@ -29,6 +29,10 @@ class context_reaction_region extends context_reaction {
     }
     return $form;
   }
+
+  function collapseRegion($a, $b) {
+    return $a || $b;
+  }
   
   function execute(&$page) {  
     global $theme;
diff --git a/profiles/wcm_base/wcm_base.make b/profiles/wcm_base/wcm_base.make
index d9df5b3e1d903bfe7cdd62ddc2e8bdad6be2bd73..68b6527a61ea659340d0a576ab956187ac785563 100644
--- a/profiles/wcm_base/wcm_base.make
+++ b/profiles/wcm_base/wcm_base.make
@@ -14,7 +14,7 @@ projects[calendar][subdir] = contrib
 projects[conditional_fields][version] = 3.0-alpha2
 projects[conditional_fields][subdir] = contrib
 
-projects[context][version] = 3.7
+projects[context][version] = 3.10
 projects[context][subdir] = contrib
 
 projects[context_omega][version] = 1.1