sector_portfolio-8.x-1.0-beta2/sector_portfolio.install

sector_portfolio.install
<?php

use \Drupal\block\Entity\Block;

/**
 * Implements hook_install().
 *
 * Adds the portfolio path condition to the mainmenu3 block if it exists.
 */
function sector_portfolio_install() {
  _sector_portfolio_setup_permissions();
  _sector_portfolio_setup_xml_sitemap();
  _sector_portfolio_setup_menu_block_on_install();
}

/**
 * Helper function
 *
 * Set up the permissions for the portfolio content type.
 */
function _sector_portfolio_setup_permissions() {
  $roles = [
    'content_administrator',
    'content_editor'
  ];
  foreach ($roles as $role) {
    user_role_grant_permissions(
      $role,
      [
        'create portfolio content',
        'delete any portfolio content',
        'delete own portfolio content',
        'edit any portfolio content',
        'edit own portfolio content',
        'revert portfolio revisions',
        'view portfolio revisions',
      ]
    );
  }
}

/**
 * Helper function.
 *
 * Set up the sitemap settings on install.
 */
function _sector_portfolio_setup_xml_sitemap() {
  // Check Xmlsitemap module is enabled.
  $moduleHandler = \Drupal::service('module_handler');
  if($moduleHandler->moduleExists('xmlsitemap')) {
    // Default data array for portfolios.
    $data = [
      'status' => TRUE,
      'priority' => 0.5,
      'changefreq' => 86400,
    ];
    // Load the config and save our default data.
    \Drupal::configFactory()->getEditable("xmlsitemap.settings.node.portfolio")->setData($data)->save();
  }
}

/**
 * Helper function.
 *
 * Add the portfolio link to the menu block on install.
 */
function _sector_portfolio_setup_menu_block_on_install() {
  $block = Block::load('mainmenu_3');
  if ($block) {
    $blockConditions = $block->getVisibilityConditions();
    if (!$blockConditions->has('request_path')) {
      // Create the block condition for the /portfolios path and save.
      $requestConditions =
        [
          'id' => 'request_path',
          'pages' => '/portfolios' . PHP_EOL,
          'negate' => FALSE,
          'context_mapping' => [],
        ];
      $block->setVisibilityConfig('request_path', $requestConditions);
      $block->save();
      return;
    }
    // Load the existing conditions.
    $blockRequestConditions = $block->getVisibilityCondition('request_path')->getConfiguration();
    // Check if the portfolio link is already there.
    $pos = strpos($blockRequestConditions['pages'], '/portfolios');
    if ($pos !== FALSE) {
      return;
    }
    // Add the portfolio link and save.
    $blockRequestConditions['pages'] .= PHP_EOL . '/portfolios';
    $block->setVisibilityConfig('request_path', $blockRequestConditions);
    $block->save();
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc