danielebarchiesi@2: fields(array( danielebarchiesi@2: 'weight' => 10, danielebarchiesi@2: )) danielebarchiesi@2: ->condition('type', 'module') danielebarchiesi@2: ->condition('name', 'menu_attributes') danielebarchiesi@2: ->execute(); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Implements hook_uninstall(). danielebarchiesi@2: */ danielebarchiesi@2: function menu_attributes_uninstall() { danielebarchiesi@2: drupal_load('module', 'menu_attributes'); danielebarchiesi@2: $attributes = menu_attributes_menu_attribute_info(); danielebarchiesi@2: foreach (array_keys($attributes) as $attribute) { danielebarchiesi@2: variable_del("menu_attributes_{$attribute}_enable"); danielebarchiesi@2: variable_del("menu_attributes_{$attribute}_default"); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Update the module weight. danielebarchiesi@2: */ danielebarchiesi@2: function menu_attributes_update_1() { danielebarchiesi@2: db_update('system') danielebarchiesi@2: ->fields(array( danielebarchiesi@2: 'weight' => 10, danielebarchiesi@2: )) danielebarchiesi@2: ->condition('type', 'module') danielebarchiesi@2: ->condition('name', 'menu_attributes') danielebarchiesi@2: ->execute(); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Fix any menu links that had the class attribute saved as an string. danielebarchiesi@2: */ danielebarchiesi@2: function menu_attributes_update_7000(&$sandbox) { danielebarchiesi@2: if (!isset($sandbox['progress'])) { danielebarchiesi@2: $sandbox['progress'] = 0; danielebarchiesi@2: $sandbox['current_mlid'] = 0; danielebarchiesi@2: // Only count links that possibly have a key class with a string value in danielebarchiesi@2: // its serialized options array. danielebarchiesi@2: $sandbox['max'] = db_query("SELECT COUNT(DISTINCT mlid) FROM {menu_links} WHERE options LIKE '%s:5:\"class\";s:%'")->fetchField(); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: // Process twenty links at a time. danielebarchiesi@2: $limit = 20; danielebarchiesi@2: danielebarchiesi@2: $links = db_query_range("SELECT mlid, options FROM {menu_links} WHERE mlid > :mlid AND options LIKE '%s:5:\"class\";s:%' ORDER BY mlid", 0, $limit, array(':mlid' => $sandbox['current_mlid']))->fetchAllKeyed(); danielebarchiesi@2: foreach ($links as $mlid => $options) { danielebarchiesi@2: $options = unserialize($options); danielebarchiesi@2: danielebarchiesi@2: if (isset($options['attributes']['class']) && is_string($options['attributes']['class'])) { danielebarchiesi@2: // Convert classes to an array. danielebarchiesi@2: $options['attributes']['class'] = explode(' ', $options['attributes']['class']); danielebarchiesi@2: db_update('menu_links') danielebarchiesi@2: ->fields(array( danielebarchiesi@2: 'options' => serialize($options), danielebarchiesi@2: )) danielebarchiesi@2: ->condition('mlid', $mlid) danielebarchiesi@2: ->execute(); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $sandbox['progress']++; danielebarchiesi@2: $sandbox['current_mlid'] = $mlid; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $sandbox['#finished'] = empty($sandbox['max']) ? 1 : ($sandbox['progress'] / $sandbox['max']); danielebarchiesi@2: danielebarchiesi@2: // To display a message to the user when the update is completed, return it. danielebarchiesi@2: // If you do not want to display a completion message, simply return nothing. danielebarchiesi@2: return t('All menu links with non-array value for class attribute have been fixed.'); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Grant the 'administer menu attributes' permission to roles that currently danielebarchiesi@2: * have the 'administer menu' permission. danielebarchiesi@2: */ danielebarchiesi@2: function menu_attributes_update_7001() { danielebarchiesi@2: $roles = user_roles(FALSE, 'administer menu'); danielebarchiesi@2: foreach ($roles as $rid => $role) { danielebarchiesi@2: user_role_grant_permissions($rid, array('administer menu attributes')); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: return t("Every role with the 'administer menu' permission has also received the 'administer menu attributes' permission."); danielebarchiesi@2: }