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();
}
}
