acquia_commercemanager-8.x-1.122/modules/acm_promotion/acm_promotion.install
modules/acm_promotion/acm_promotion.install
<?php /** * @file * Contains install hooks for acm_promotion. */ use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\user\Entity\Role; /** * Implements hook_install(). */ function acm_promotion_install() { // Add permissions into ACM role. $role = Role::load('acm'); if (!is_null($role)) { $permissions = [ 'create acm_promotion content', 'delete acm_promotion revisions', 'delete any acm_promotion content', 'delete own acm_promotion content', 'edit any acm_promotion content', 'edit own acm_promotion content', 'restful post acm_promotionsync', 'revert acm_promotion revisions', 'view acm_promotion revisions', ]; foreach ($permissions as $permission) { $role->grantPermission($permission); } $role->save(); } } /** * Implements hook_uninstall(). */ function acm_promotion_uninstall() { // Remove permissions from ACM role. $role = Role::load('acm'); if (!is_null($role)) { $permissions = [ 'create acm_promotion content', 'delete acm_promotion revisions', 'delete any acm_promotion content', 'delete own acm_promotion content', 'edit any acm_promotion content', 'edit own acm_promotion content', 'restful post acm_promotionsync', 'revert acm_promotion revisions', 'view acm_promotion revisions', ]; foreach ($permissions as $permission) { if ($role->hasPermission($permission)) { $role->revokePermission($permission); } } $role->save(); } } /** * Create 'Always On?' field. */ function acm_promotion_update_8001() { $entityTypeManager = \Drupal::entityTypeManager(); $storages = $entityTypeManager->getStorage('field_storage_config') ->loadByProperties(['id' => 'node.field_acm_promotion_always_on']); if (empty($storages)) { $storage = FieldStorageConfig::create([ 'field_name' => 'field_acm_promotion_always_on', 'entity_type' => 'node', 'type' => 'boolean', 'cardinality' => '1', 'translatable' => TRUE, ]); $storage->save(); } else { $storage = reset($storages); } $fields = $entityTypeManager->getStorage('field_config') ->loadByProperties(['id' => 'node.acm_promotion.field_acm_promotion_always_on']); if (empty($fields)) { FieldConfig::create([ 'field_storage' => $storage, 'bundle' => 'acm_promotion', 'label' => 'Always On?', 'description' => 'Check this field if this promotion should always apply to users (ie a sale or a promotion without a marketing link).', 'required' => FALSE, 'translatable' => FALSE, 'settings' => [ 'on_label' => 'On', 'off_label' => 'Off', ], ])->save(); } } /** * Add taxonomy-related and product REST-related permissions to ACM role. */ function acm_promotion_update_8002() { // Add permissions into ACM role. $role = Role::load('acm'); if (!is_null($role)) { $permissions = [ 'create acm_promotion content', 'delete acm_promotion revisions', 'delete any acm_promotion content', 'delete own acm_promotion content', 'edit any acm_promotion content', 'edit own acm_promotion content', 'restful post acm_promotionsync', 'revert acm_promotion revisions', 'view acm_promotion revisions', ]; foreach ($permissions as $permission) { $role->grantPermission($permission); } $role->save(); } } /** * Create 'Coupon code' field. */ function acm_promotion_update_8003() { $entityTypeManager = \Drupal::entityTypeManager(); $storages = $entityTypeManager->getStorage('field_storage_config') ->loadByProperties(['id' => 'node.field_coupon_code']); if (empty($storages)) { $storage = FieldStorageConfig::create([ 'field_name' => 'field_coupon_code', 'entity_type' => 'node', 'type' => 'string', 'cardinality' => '-1', 'translatable' => TRUE, ]); $storage->save(); } else { $storage = reset($storages); } $fields = $entityTypeManager->getStorage('field_config') ->loadByProperties(['id' => 'node.acm_promotion.field_coupon_code']); if (empty($fields)) { FieldConfig::create([ 'field_storage' => $storage, 'bundle' => 'acm_promotion', 'label' => 'Coupon code', 'required' => FALSE, 'translatable' => FALSE, ])->save(); } }