=') && version_compare(GANTRY_VERSION, '5.0.0', '<')) { if (!is_admin()) { add_filter('gantry_before_render_output', array( 'N2WordpressAssetInjector', 'platformRenderEnd' )); remove_action('shutdown', 'N2WordpressAssetInjector::closeOutputBuffers', -1 * self::$priority); return true; } } ob_start("N2WordpressAssetInjector::output_callback"); if (defined('SMART_SLIDER_OB_START')) { for ($i = 0; $i < SMART_SLIDER_OB_START; $i++) { ob_start(); } } /** * Ultimate reviews open a buffer on init and tries to close it on wp_footer. * To prevent that, lets open a new buffer which can be closed on wp_footer. * * @bug install Speed Contact Bar + Ultimate Reviews * @see https://wordpress.org/plugins/ultimate-reviews/ */ if (function_exists('EWD_URP_add_ob_start')) { ob_start(); } /** * Cart66 closes our output buffer in forceDownload method * @url http://www.cart66.com */ if (class_exists('Cart66')) { ob_start(); } return true; } public static function closeOutputBuffers() { $handlers = ob_list_handlers(); if (in_array('N2WordpressAssetInjector::output_callback', $handlers)) { for ($i = count($handlers) - 1; $i >= 0; $i--) { ob_end_flush(); if ($handlers[$i] === 'N2WordpressAssetInjector::output_callback') { break; } } } } public static function output_callback($buffer, $phase) { if ($phase & PHP_OUTPUT_HANDLER_FINAL || $phase & PHP_OUTPUT_HANDLER_END) { return self::platformRenderEnd($buffer); } return $buffer; } public static function platformRenderEnd($buffer) { static $once = false; if (!$once) { $once = true; self::finalizeCssJs(); if (self::$nextend_css != '' && strpos($buffer, '') !== false) { $buffer = str_replace('', self::$nextend_css, $buffer); self::$nextend_css = ''; } if (self::$nextend_css != '' || self::$nextend_js != '') { $parts = preg_split('/<\/head[\s]*>/', $buffer, 2); return implode(self::$nextend_css . self::$nextend_js . '', $parts); } } return $buffer; } public static function finalizeCssJs() { static $finalized = false; if (!$finalized) { $finalized = true; if (defined('N2LIBRARY')) { if (class_exists('N2AssetsManager')) { self::$nextend_css = N2AssetsManager::getCSS(); } if (class_exists('N2AssetsManager')) { self::$nextend_js = N2AssetsManager::getJs(); } } } return true; } public static function injectCSSComment() { static $once; if (!$once) { echo ""; $once = true; } } } N2WordpressAssetInjector::init();