', '', '') as $close) {
$len = strlen($close);
if (substr($trimmed, -$len) === $close) {
return substr($trimmed, 0, -$len) . $markup . $close;
}
}
return $html . $markup;
}
public static function surface_html() {
if (self::$placed) {
return '';
}
if (!class_exists('AIEO_Semantic_Reco_Source') || !AIEO_Semantic_Reco_Source::available()) {
return '';
}
if (class_exists('AIEO_DMM_Product_Display')
&& !AIEO_DMM_Product_Display::reco_surface_visible(self::SURFACE)) {
return '';
}
self::$placed = true;
return '
';
}
private static function is_reco_cluster($block) {
if (empty($block['blockName']) || 'core/group' !== $block['blockName']) {
return false;
}
$class = isset($block['attrs']['className']) ? (string) $block['attrs']['className'] : '';
$is = ('' !== $class && (false !== strpos($class, 'rooster-recos-cluster') || false !== strpos($class, 'ff-recommendations-cluster')));
return (bool) apply_filters('aieo_semantic_related_is_reco_cluster', $is, $block);
}
private static function is_main_region($block) {
$name = isset($block['blockName']) ? (string) $block['blockName'] : '';
$is = ('core/post-content' === $name)
|| ('core/group' === $name
&& isset($block['attrs']['tagName'])
&& 'main' === $block['attrs']['tagName']);
return (bool) apply_filters('aieo_semantic_related_is_main_region', $is, $block);
}
}