From 99639213745a20ab480af31e72c294e2ae1a1124 Mon Sep 17 00:00:00 2001 From: William Hearn Date: Thu, 17 Nov 2016 16:12:25 -0500 Subject: [PATCH] Issue #2428371 by iStryker, joseph.olstad: Upgrade from 1.3 to 1.4 with drush fails --- workbench_moderation.module | 60 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/workbench_moderation.module b/workbench_moderation.module index c28261b..35f90ce 100644 --- a/workbench_moderation.module +++ b/workbench_moderation.module @@ -1562,8 +1562,13 @@ function workbench_moderation_state_delete($state) { function workbench_moderation_transitions() { $transitions = &drupal_static(__FUNCTION__); if (!isset($transitions)) { - $query = db_select('workbench_moderation_transitions', 't') - ->fields('t', array('id', 'name', 'from_name', 'to_name')); + $query = db_select('workbench_moderation_transitions', 't'); + if (_workbench_moderation_transitions_are_entities()) { + $query->fields('t', array('id', 'name', 'from_name', 'to_name')); + } + else { + $query->fields('t', array('from_name', 'to_name')); + } $alias_from = $query->addJoin('INNER', 'workbench_moderation_states', NULL, 't.from_name = %alias.name'); $alias_to = $query->addJoin('INNER', 'workbench_moderation_states', NULL, 't.to_name = %alias.name'); @@ -1578,6 +1583,27 @@ function workbench_moderation_transitions() { } /** + * Helper function to check if transitions are entities. + */ +function _workbench_moderation_transitions_are_entities() { + $transitions_are_entities = &drupal_static(__FUNCTION__); + if (!isset($transitions_are_entities)) { + // Drupal core include file is not always loaded. + require_once(DRUPAL_ROOT . '/includes/install.inc'); + // As of schema 7009 all transitions are entities. + // Minor addition by WxT which used patch before was committed in 7009 rev. + if ((drupal_get_installed_schema_version('workbench_moderation') >= 7009) && + (drupal_get_installed_schema_version('wetkit_core') >= 7406)) { + $transitions_are_entities = TRUE; + } + else { + $transitions_are_entities = FALSE; + } + } + return $transitions_are_entities; +} + +/** * Saves a moderation state transition. * * Invokes hook_workbench_moderation_transition_save(). @@ -1593,14 +1619,20 @@ function workbench_moderation_transitions() { * @see hook_workbench_moderation_transition_save() */ function workbench_moderation_transition_save($transition) { - $status = db_merge('workbench_moderation_transitions') - ->key(array( + $status = db_merge('workbench_moderation_transitions'); + if (_workbench_moderation_transitions_are_entities()) { + $status->key(array( 'name' => $transition->name, 'from_name' => $transition->from_name, 'to_name' => $transition->to_name, - )) - ->fields((array) $transition) - ->execute(); + )); + } + else { + $status->key(array( + 'from_name' => $transition->from_name, + 'to_name' => $transition->to_name)); + } + $status->fields((array) $transition)->execute(); foreach (module_implements('workbench_moderation_transition_save') as $module) { // Don't call this function! That would lead to infinite recursion. @@ -2335,7 +2367,9 @@ function workbench_moderation_transition_access($op, $profile = NULL, $account = * Label callback for workbench_moderation_transitions, for reference fields. */ function workbench_moderation_transition_label_callback($workbench_moderation_transition, $type) { - return empty($workbench_moderation_transition->name) ? 'Unnamed Workbench Moderation Transition' : $workbench_moderation_transition->name; + if (_workbench_moderation_transition_are_entities()) { + return empty($workbench_moderation_transition->name) ? 'Unnamed Workbench Moderation Transition' : $workbench_moderation_transition->name; + } } /** @@ -2353,8 +2387,10 @@ function workbench_moderation_transition_label_callback($workbench_moderation_tr * @see workbench_moderation_transition_load_multiple() */ function workbench_moderation_transition_load($id, $reset = FALSE) { - $workbench_moderation_transition = workbench_moderation_transition_load_multiple(array($id), array(), $reset); - return reset($workbench_moderation_transition); + if (_workbench_moderation_transitions_are_entities()) { + $workbench_moderation_transition = workbench_moderation_transition_load_multiple(array($id), array(), $reset); + return reset($workbench_moderation_transition); + } } /** @@ -2375,7 +2411,9 @@ function workbench_moderation_transition_load($id, $reset = FALSE) { * @see workbench_moderation_transition_load() */ function workbench_moderation_transition_load_multiple($ids = array(), $conditions = array(), $reset = FALSE) { - return entity_load('workbench_moderation_transition', $ids, $conditions, $reset); + if (_workbench_moderation_transitions_are_entities()) { + return entity_load('workbench_moderation_transition', $ids, $conditions, $reset); + } } /** -- 2.5.4 (Apple Git-61)