From a69171985c10fc25588ed9872eb4d0dff40efc60 Mon Sep 17 00:00:00 2001
From: Bram Goffings <bramgoffings@gmail.com>
Date: Mon, 30 Jul 2012 16:55:55 +0200
Subject: [PATCH] forum upgrade

---
 .../tests/upgrade/drupal-6.forum.database.php      | 14 +++++++
 .../simpletest/tests/upgrade/upgrade.forum.test    |  6 ++-
 modules/system/system.install                      | 49 +++++++++++++++++-----
 3 files changed, 57 insertions(+), 12 deletions(-)

diff --git a/modules/simpletest/tests/upgrade/drupal-6.forum.database.php b/modules/simpletest/tests/upgrade/drupal-6.forum.database.php
index 5a2cc33..059af6d 100644
--- a/modules/simpletest/tests/upgrade/drupal-6.forum.database.php
+++ b/modules/simpletest/tests/upgrade/drupal-6.forum.database.php
@@ -258,3 +258,17 @@ db_insert('vocabulary_node_types')->fields(array(
 ))
 ->execute();
 
+// Provide all users with the ability to create forum topics.
+$results = db_select('permission', 'p')
+  ->fields('p')
+  ->execute();
+
+foreach ($results as $result) {
+  $permissions = $result->perm . ', create forum topics';
+  db_update('permission')
+    ->fields(array(
+      'perm' => $permissions,
+    ))
+    ->condition('rid', $result->rid)
+    ->execute();
+}
diff --git a/modules/simpletest/tests/upgrade/upgrade.forum.test b/modules/simpletest/tests/upgrade/upgrade.forum.test
index 99269d9..ebac854 100644
--- a/modules/simpletest/tests/upgrade/upgrade.forum.test
+++ b/modules/simpletest/tests/upgrade/upgrade.forum.test
@@ -56,5 +56,9 @@ class ForumUpgradePathTestCase extends UpgradePathTestCase {
 
     $this->drupalGet("forum/$tid");
     $this->assertText('Bananas');
-    }
+    $this->drupalLogout();
+
+    $this->drupalGet("node/add/forum/$tid");
+    $this->assertResponse(200, t('User can access forum creation page.'));
+  }
 }
diff --git a/modules/system/system.install b/modules/system/system.install
index 6d81420..3e62929 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -1711,17 +1711,18 @@ function system_update_dependencies() {
 function system_update_7000() {
   $result = db_query("SELECT rid, perm FROM {permission} ORDER BY rid");
   foreach ($result as $role) {
-    $renamed_permission = preg_replace('/(?<=^|,\ )create\ blog\ entries(?=,|$)/', 'create blog content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ blog\ entries(?=,|$)/', 'edit own blog content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ blog\ entry(?=,|$)/', 'edit any blog content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ blog\ entries(?=,|$)/', 'delete own blog content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ blog\ entry(?=,|$)/', 'delete any blog content', $role->perm);
-
-    $renamed_permission = preg_replace('/(?<=^|,\ )create\ forum\ topics(?=,|$)/', 'create forum content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ forum\ topic(?=,|$)/', 'delete any forum content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ forum\ topics(?=,|$)/', 'delete own forum content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ forum\ topic(?=,|$)/', 'edit any forum content', $role->perm);
-    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ forum\ topics(?=,|$)/', 'edit own forum content', $role->perm);
+    $renamed_permission = $role->perm;
+    $renamed_permission = preg_replace('/(?<=^|,\ )create\ blog\ entries(?=,|$)/', 'create blog content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ blog\ entries(?=,|$)/', 'edit own blog content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ blog\ entry(?=,|$)/', 'edit any blog content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ blog\ entries(?=,|$)/', 'delete own blog content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ blog\ entry(?=,|$)/', 'delete any blog content', $renamed_permission);
+
+    $renamed_permission = preg_replace('/(?<=^|,\ )create\ forum\ topics(?=,|$)/', 'create forum content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ forum\ topic(?=,|$)/', 'delete any forum content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ forum\ topics(?=,|$)/', 'delete own forum content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ forum\ topic(?=,|$)/', 'edit any forum content', $renamed_permission);
+    $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ forum\ topics(?=,|$)/', 'edit own forum content', $renamed_permission);
 
     if ($renamed_permission != $role->perm) {
       db_update('permission')
@@ -3037,6 +3038,32 @@ function system_update_7074() {
 }
 
 /**
+ * Fix renamed queries from system_update_7000().
+ */
+function system_update_7075() {
+  $permission_changes = array(
+    'create blog entries' => 'create blog content',
+    'edit own blog entries' => 'edit own blog content',
+    'edit any blog entry' => 'edit any blog content',
+    'delete own blog entries' => 'delete own blog content',
+    'delete any blog entry' => 'delete any blog content',
+
+    'create forum topics' => 'create forum content',
+    'edit own forum topics' => 'edit own forum content',
+    'edit any forum topic' => 'edit any forum content',
+    'delete own forum topics' => 'delete own forum content',
+    'delete any forum topic' => 'delete any forum content',
+  );
+
+  foreach ($permission_changes as $permission_key => $permission_change) {
+    db_update('role_permission')
+      ->fields(array('permission' => $permission_change))
+      ->condition('permission', $permission_key)
+      ->execute();
+  }
+}
+
+/**
  * @} End of "defgroup updates-7.x-extra".
  * The next series of updates should start at 8000.
  */
-- 
1.7.11.msysgit.1

