adaptivetheme-8.x-3.x-dev/at_core/forms/ext/mobile_blocks_submit.php
at_core/forms/ext/mobile_blocks_submit.php
<?php
/**
* @file
* Save Mobile Blocks CSS to file.
*/
use Drupal\Component\Utility\Html;
use Drupal\at_core\Ext\ExtGet;
use Drupal\Core\File\FileSystemInterface;
/**
* Submit Mobile Blocks settings.
*
* @param $values
* @param $theme
* @param $generated_files_path
*/
function at_core_submit_mobile_blocks($values, $theme, $generated_files_path) {
// Get stuff.
$ext_get = new ExtGet();
// Breakpoints.
$breakpoints = $ext_get->getBreakPoints()['breakpoints'];
$mobile_blocks_breakpoint_group = theme_get_setting('settings.mobile_blocks_breakpoint_group', $theme) ?: 'at_core.simple';
$mobile_blocks_breakpoints = $breakpoints[$mobile_blocks_breakpoint_group];
// Active themes active blocks.
$theme_blocks = $ext_get->getActiveThemeBlocks($theme);
if (!empty($theme_blocks) && !empty($mobile_blocks_breakpoints)) {
$output = [];
foreach (array_reverse($mobile_blocks_breakpoints) as $mbs_key => $mbs_value) {
$mbs_query = $mbs_value->getMediaQuery();
$mbs_breakpoints_all[$mbs_query] = $mbs_query;
$mbs_label = strtolower($mbs_value->getLabel());
$output[$mbs_label][] = '@media ' . $mbs_query . ' {' . "\n";
foreach ($theme_blocks as $block_key => $block_values) {
$block_id = $block_values->id();
$plugin_id = $block_values->getPluginId();
$block_plugin_id = str_replace(':', '_', $plugin_id);
$block_selector[$mbs_label] = '#block-' . Html::cleanCssIdentifier($block_id) . ', .block-plugin-id--' . Html::cleanCssIdentifier($block_plugin_id);
if (isset($values['settings_mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_plugin_id]) && $values['settings_mobile_block_hide_' . 'bp' . $mbs_label . '_' . $block_plugin_id] == 1) {
$output[$mbs_label][] = ' ' . $block_selector[$mbs_label] . ' {display:none}' . "\n";
}
elseif (isset($values['settings_mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_plugin_id]) && $values['settings_mobile_block_show_' . 'bp' . $mbs_label . '_' . $block_plugin_id] == 1) {
$output[$mbs_label][] = ' ' . $block_selector[$mbs_label] . ' {display:block}' . "\n";
}
}
$output[$mbs_label][] = '}';
$mobile_blocks_css[] = implode($output[$mbs_label]);
}
$mobile_blocks_css = isset($mobile_blocks_css) ? implode("\n", $mobile_blocks_css) : '';
if (!empty($mobile_blocks_css)) {
$file_name = 'mobile-blocks.css';
$filepath = $generated_files_path . '/' . $file_name;
/*file_unmanaged_save_data($mobile_blocks_css, $filepath, FILE_EXISTS_REPLACE);*/
\Drupal::service('file_system')->saveData($mobile_blocks_css, $filepath, FileSystemInterface::EXISTS_REPLACE);
}
}
}
