From 44fb4138e53093b1965aa4dd9460de006c4493d2 Mon Sep 17 00:00:00 2001
From: Andrew Berry <deviantintegral@gmail.com>
Date: Thu, 30 Jun 2011 14:53:14 -0400
Subject: [PATCH] Issue #1205472: Rename the vocab_perms variable and fix
 double serialization.

---
 vocabperms.install |   27 +++++++++++++++++++++++++++
 vocabperms.module  |   10 +++++-----
 2 files changed, 32 insertions(+), 5 deletions(-)
 create mode 100644 vocabperms.install

diff --git a/vocabperms.install b/vocabperms.install
new file mode 100644
index 0000000..95d87c8
--- /dev/null
+++ b/vocabperms.install
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @file
+ * Install and update hooks for the Vocabulary Permissions module.
+ */
+
+/**
+ * Rename all vocab_perms variables to match the module name of vocabperms.
+ * Update the stored value of each vocabulary permission to not be doubly-
+ * serialized.
+ */
+function vocabperms_update_6001() {
+  $result = db_query("SELECT name FROM {variable} WHERE name LIKE 'vocab_perms-%'");
+  while ($v = db_result($result)) {
+    $vocab_perms = variable_get($v, FALSE);
+    if ($vocab_perms) {
+      $vocab_perms = unserialize($vocab_perms);
+      $vid = substr($v, 12);
+      variable_set("vocabperms-" . $vid, $vocab_perms);
+      variable_del($v);
+    }
+  }
+
+  return array();
+}
+
diff --git a/vocabperms.module b/vocabperms.module
index 6f9b03e..649d6aa 100644
--- a/vocabperms.module
+++ b/vocabperms.module
@@ -41,7 +41,7 @@ function vocabperms_form_alter(&$form, &$form_state, $form_id) {
       $vid = $form['vid']['#value'];
 
       // get the saved permissions for this vocabulary
-      $perms = unserialize(variable_get('vocab_perms-'. $vid, ''));
+      $perms = variable_get('vocabperms-'. $vid, '');
 
       // save the permission options that used repetitively below
       $options = array(
@@ -95,7 +95,7 @@ function vocabperms_taxonomy($op, $type, $edit) {
         break;
       case 'delete':
         // good housekeeping - remove permissions when vocabularies are deleted
-        variable_del('vocab_perms-'. $edit['vid']);
+        variable_del('vocabperms-'. $edit['vid']);
         break;
     }
   }
@@ -118,7 +118,7 @@ function vocabperms_taxonomy_form_vocabulary_submit($form, &$form_state) {
         $perms[$rid] = $value;
       }
     }
-    variable_set('vocab_perms-'. $vid, serialize($perms));
+    variable_set('vocabperms-'. $vid, $perms);
   }
 }
 
@@ -149,7 +149,7 @@ function _vocabperms_node_form_remove_field(&$field) {
   foreach ($field as $vid => $elem) {
     if (is_int($vid)) {
       // get the saved permissions for this vocabulary
-      if ($perms = unserialize(variable_get('vocab_perms-'. $vid, ''))) {
+      if ($perms = variable_get('vocabperms-'. $vid, '')) {
         $perm = VOCABPERMS_NONE;
         foreach ($user->roles as $rid => $rolename) {
           if (isset($perms[$rid]) && $perms[$rid] < $perm) {
@@ -214,7 +214,7 @@ function vocabperms_node_remove(&$node) {
   if ($user->uid != 1 && isset($node->taxonomy)) {
     foreach ($node->taxonomy as $tid => $elem) {
       // get the saved permissions for this vocabulary
-      if ($perms = unserialize(variable_get('vocab_perms-'. $elem->vid, ''))) {
+      if ($perms = variable_get('vocabperms-'. $elem->vid, '')) {
         $perm = 2;
         foreach ($user->roles as $rid => $rolename) {
           if (isset($perms[$rid]) && $perms[$rid] < $perm) {
-- 
1.7.5.4

