private static function _processFileBlocks() { self::$_fileBlocks = []; self::$_fileGlobalBlocks = []; $blockCounter = []; $templateCount = 0; foreach (self::$_fileTemplateBlocks as $template => $blocks) { if (strpos($template, '__core_') !== 0) { $templateCount++; } else { // move non template specific blocks (repeater blocks) to end of array unset(self::$_fileTemplateBlocks[$template]); self::$_fileTemplateBlocks[$template] = $blocks; } } $blockOrders = []; foreach (self::$_allBlocks as $block => $details) { $blockOrders[$block] = $details->order; } // force template adds from overwrite file if (!empty(self::$_blockSettings)) { foreach (self::$_blockSettings as $block => $fields) { if (!empty($fields['templates'])) { if ($fields['templates'] == '*') { foreach (self::$_fileTemplateBlocks as $template => $blocks) { if (!in_array($block, self::$_fileTemplateBlocks[$template]) && strpos($template, '__core_') !== 0) { self::$_fileTemplateBlocks[$template][] = $block; PageBuilder::setData('template', $template); PageBuilder::block($block); } } } else { $templates = explode(',', $fields['templates']); if (!empty($templates)) { foreach ($templates as $template) { if (isset(self::$_fileTemplateBlocks[$template])) { if (!in_array($block, self::$_fileTemplateBlocks[$template])) { self::$_fileTemplateBlocks[$template][] = $block; PageBuilder::setData('template', $template); PageBuilder::block($block); } } } } } } } } // create fileBlockTemplates array self::$_fileBlockTemplates = []; self::$_fileCoreBlockTemplates = []; foreach (self::$_fileTemplateBlocks as $template => $blocks) { if (strpos($template, '__core_') !== 0) { foreach ($blocks as $block) { if (!isset(self::$_fileBlockTemplates[$block])) { self::$_fileBlockTemplates[$block] = []; } self::$_fileBlockTemplates[$block][] = $template; } } foreach ($blocks as $block) { if (!isset(self::$_fileCoreBlockTemplates[$block])) { self::$_fileCoreBlockTemplates[$block] = []; } self::$_fileCoreBlockTemplates[$block][] = $template; } } // get full block list and details in one array foreach (self::$_fileTemplateBlocks as $template => $blocks) { $order = 10; foreach ($blocks as $k => $block) { if (!isset(self::$_fileBlocks[$block])) { if (!empty(self::$_blockSettings[$block]['order'])) { $blockOrders[$block] = self::$_blockSettings[$block]['order']; } else { if (isset($blocks[$k - 1]) && !empty($blockOrders[$blocks[$k - 1]])) { $order = $blockOrders[$blocks[$k - 1]] + 10; } else { $order += 10; } $blockOrders[$block] = $order; } $blockCounter[$block] = 0; self::$_fileBlocks[$block] = ['order' => $blockOrders[$block]]; self::$_fileBlocks[$block] = ['order' => $blockOrders[$block]]; if (in_array($block, self::$_repeaterBlocks)) { self::$_fileBlocks[$block]['type'] = 'repeater'; } } if (strpos($template, '__core_') !== 0) { $blockCounter[$block]++; } } } foreach ($blockCounter as $block => $count) { if ($count / $templateCount >= 0.7) { self::$_fileGlobalBlocks[$block] = 1; } } }