From 57756fcd423e9b4cd609140aed38c4bcbaab9a5b Mon Sep 17 00:00:00 2001
From: Ron Shimshock <ron@shimshockgroup.com>
Date: Sat, 3 Sep 2016 05:36:14 -0500
Subject: [PATCH] Duplicate system path issue

---
 admin_views.module | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/admin_views.module b/admin_views.module
index 53e726f..8aace86 100644
--- a/admin_views.module
+++ b/admin_views.module
@@ -14,3 +14,29 @@ function admin_views_views_api() {
   );
 }
 
+/*
+ * Implements hook_menu_alter().
+ */
+function admin_views_menu_alter(&$items) {
+  // Check for duplicate paths and unset additional access arguments.
+  $duplicate_paths = array();
+  foreach ($items as $path => $item) {
+    if (isset($item['page callback']) && $item['page callback'] == 'views_page') {
+      if (isset($item['access callback']) && $item['access callback'] == 'user_access' && count($item['access arguments']) > 1) {
+        $duplicate_paths[] = $path;
+        // Remove all extra access arguments so only one view is accessible.
+        foreach ($item['access arguments'] as $key => $value) {
+          if ($key > 0) {
+            unset($items[$path]['access arguments'][$key]);
+          }
+        }
+      }
+    }
+  }
+  // Present error message to user notifying that views edits are required.
+  if (!empty($duplicate_paths)) {
+    $message = t('The following system paths exist on multiple views: <em>!paths</em>. Please disable or delete unneeded views. Access to the conflicting views will be limited until resolved.',
+      array('!paths' => implode(', ', $duplicate_paths)));
+    drupal_set_message($message, 'error');
+  }
+}
-- 
2.9.3

