--- empty	2008-04-01 03:22:48.000000000 -0400
+++ menu_trim.install	2008-03-31 15:26:27.000000000 -0400
@@ -0,0 +1,121 @@
+<?php
+// $Id: menu_trim.install,v 1.1 2007/01/13 00:59:05 davidlesieur Exp $
+
+/**
+ * Implementation of hook_install().
+ */
+function menu_trim_install() {
+  switch ($GLOBALS['db_type']) {
+    case 'mysql':
+    case 'mysqli':
+      db_query("CREATE TABLE {menu_trim} (
+        mid int NOT NULL default '0',
+        trim tinyint NOT NULL default '0',
+        PRIMARY KEY (mid),
+      ) /*!40100 DEFAULT CHARACTER SET UTF8 */ ");
+      break;
+    case 'pgsql':
+      db_query("CREATE TABLE {menu_trim} (
+        mid int NOT NULL default '0',
+        trim smallint NOT NULL default '0',
+        PRIMARY KEY (mid)
+      )");
+      break;
+  }
+}
+
+/**
+ * Implementation of hook_uninstall().
+ */
+function menu_trim_uninstall() {
+  if (db_table_exists('menu_trim')) {
+    db_query("DROP TABLE {menu_trim}");
+  }
+
+  variable_del('menu_trim');
+}
+
+function menu_trim_update_1() {
+  // Make sure new database schema is emplemented
+  if (!db_table_exists('menu_trim')) {
+    menu_trim_install();
+  }
+
+  if (!db_table_exists('menu_trim')) {
+      form_set_error('', t('There\'s a database table <em>menu_trim</em> creation issue.  Please contact you system administrator to help you resolve this issue.'));
+  }
+  else {
+    // Update trimmable items
+    $vars = db_query("SELECT * FROM {variable} WHERE name LIKE 'menu_trim_item_%%'");
+    if (!db_error() && $vars) {
+      // Iterate trimmable items
+      while ($var = db_fetch_object($vars)) {
+        $var_data = $var->value;
+        // Trimmable verification
+        if ($var_data) {
+          $var_name = str_replace('menu_trim_item_', '', $var->name);
+          // Menu ID validation
+          if (isset($var_name) && is_numeric($var_name)) {
+            // based on : _menu_trim_menu_set
+            $db_result_1 = db_result(db_query("SELECT mid FROM {menu_trim} WHERE mid=%d", $var_name));
+            if (!db_error()) {
+              // Entry verification
+              if ($db_result_1) {
+                // Try to update a menu
+                $db_result_2 = db_query("UPDATE {menu_trim} SET trim=%d WHERE mid=%d", $var_data, $var_name);
+              }
+              else {// Entry verification
+                // Try to insert a menu
+                $db_result_2 = db_query("INSERT INTO {menu_trim} (mid, trim) VALUES (%d, %d)", $var_name, $var_data);
+              } // Entry verification
+              if (!db_error() && $db_result_2) { 
+                variable_del($var->name);
+              }
+            }
+          } // Menu ID validation
+        } // Trimmable verification
+      } // Iterate trimmable items
+      // Remaining variable verification
+      $vars = db_result(db_query("SELECT COUNT(*) FROM {variable} WHERE name LIKE 'menu_trim_item_%%'"));
+      if (db_error() || $vars) {
+        form_set_error('', t('There\'s possibly variables in Drupal\'s database table <em>variable</em> starting with  <em>menu_trim_item_</em> that wasn\'t updated.  If a similar variables are in the table <em>menu_trim</em>, you may safely delete the corresponding ones from <em>variable</em>.'));
+      }
+    }
+  
+    // Update setting items
+    $vars = db_query("SELECT * FROM {variable} WHERE name LIKE 'menu_trim_menu_%%'");
+    if (db_error() || $vars) {
+      // Iterate setting items
+      while ($var = db_fetch_object($vars)) {
+        $var_data = $var->value;
+        // Trimmable verification
+        if ($var_data) {
+          $var_name = str_replace('menu_trim_menu_', '', $var->name);
+          // Menu ID validation
+          if (isset($var_name) && is_numeric($var_name)) {
+            // based on : menu_trim_admin_settings_submit and _menu_trim_settings_set
+            $menu[$var_name] = array('mthd' => $var_data, 'bl_tt' => 1, 'min_lvl' => '', 'min_lmt' => 0);
+          }
+        } // Trimmable verification
+      } // Iterate setting items
+      // Menu content verification
+      if ($menu) {
+        variable_set('menu_trim', $menu);
+        if (!db_error()) {
+          // Delete old setting items
+          $vars = db_result(db_query("SELECT COUNT(*) FROM {variable} WHERE name LIKE 'menu_trim_menu_%%'"));
+          // Iterate setting items
+          while ($var = db_fetch_object($vars)) {
+            variable_del($var->name);
+          }
+          // Remaining variable verification
+          $vars = db_query("SELECT COUNT(*) FROM {variable} WHERE name LIKE 'menu_trim_menu_%%'");
+          if (db_error() || $vars) {
+            form_set_error('', t('There\'s possibly variables in Drupal\'s database table <em>variable</em> starting with  <em>menu_trim_menu_</em> that wasn\'t updated.  If the variables data are included in the same table <em>menu_trim</em> variable, you may safely delete the corresponding ones starting with  <em>menu_trim_menu_</em>.'));
+          }
+        }
+      } // Menu content verification
+    }
+  }
+}
+
