Chris@17: moduleExists('content_moderation')) { Chris@17: $requirements['content_moderation_incompatibility'] = [ Chris@17: 'severity' => REQUIREMENT_ERROR, Chris@17: 'description' => t('Workspaces can not be installed when Content Moderation is also installed.'), Chris@17: ]; Chris@17: } Chris@17: if (\Drupal::moduleHandler()->moduleExists('workspace')) { Chris@17: $requirements['workspace_incompatibility'] = [ Chris@17: 'severity' => REQUIREMENT_ERROR, Chris@17: 'description' => t('Workspaces can not be installed when the contributed Workspace module is also installed. See the upgrade path page for more information on how to upgrade.', [ Chris@17: ':link' => 'https://www.drupal.org/node/2987783', Chris@17: ]), Chris@17: ]; Chris@17: } Chris@17: } Chris@17: Chris@17: return $requirements; Chris@17: } Chris@17: Chris@17: /** Chris@17: * Implements hook_install(). Chris@17: */ Chris@17: function workspaces_install() { Chris@17: // Set the owner of these default workspaces to be first user which which has Chris@17: // the 'administrator' role. This way we avoid hard coding user ID 1 for sites Chris@17: // that prefer to not give it any special meaning. Chris@17: $admin_roles = \Drupal::entityTypeManager()->getStorage('user_role')->getQuery() Chris@17: ->condition('is_admin', TRUE) Chris@17: ->execute(); Chris@17: if (!empty($admin_roles)) { Chris@17: $query = \Drupal::entityTypeManager()->getStorage('user')->getQuery() Chris@17: ->condition('roles', $admin_roles, 'IN') Chris@17: ->condition('status', 1) Chris@17: ->sort('uid', 'ASC') Chris@17: ->range(0, 1); Chris@17: $result = $query->execute(); Chris@17: } Chris@17: Chris@17: // Default to user ID 1 if we could not find any other administrator users. Chris@17: $owner_id = !empty($result) ? reset($result) : 1; Chris@17: Chris@17: // Create two workspaces by default, 'live' and 'stage'. Chris@17: Workspace::create([ Chris@17: 'id' => 'live', Chris@17: 'label' => 'Live', Chris@17: 'uid' => $owner_id, Chris@17: ])->save(); Chris@17: Chris@17: Workspace::create([ Chris@17: 'id' => 'stage', Chris@17: 'label' => 'Stage', Chris@17: 'uid' => $owner_id, Chris@17: ])->save(); Chris@17: }