editor->is_edit_mode() ) {
return true;
}
return 'internal' !== get_option( 'elementor_css_print_method' );
}
/**
* @param array $fonts
* @return void
*/
private function enqueue_fonts( array $fonts ) {
foreach ( $fonts as $font ) {
Plugin::elementor()->frontend->enqueue_font( $font );
}
}
/**
* @param $icon_fonts
* @return void
*/
private function enqueue_icon_fonts( $icon_fonts ) {
$icons_types = Icons_Manager::get_icon_manager_tabs();
foreach ( $icon_fonts as $icon_font ) {
if ( ! isset( $icons_types[ $icon_font ] ) ) {
continue;
}
Plugin::elementor()->frontend->enqueue_font( $icon_font );
}
}
private function enqueue_font_links() {
$meta = $this->get_meta();
if ( Base::CSS_STATUS_EMPTY === $meta['status'] ) {
return;
}
// First time after clear cache etc.
if ( '' === $meta['status'] || $this->is_update_required() ) {
$this->update();
$meta = $this->get_meta();
}
// Handle fonts.
if ( ! empty( $meta['fonts'] ) ) {
$this->enqueue_fonts( $meta['fonts'] );
}
if ( ! empty( $meta['icons'] ) ) {
$this->enqueue_icon_fonts( $meta['icons'] );
}
}
/**
* @param array $early_access_google_fonts
* @return void
*/
private function print_early_access_google_font_link_tags( array $early_access_google_fonts ) {
$early_access_google_fonts_urls = Plugin::elementor()->frontend->get_early_access_google_font_urls( $early_access_google_fonts );
foreach ( $early_access_google_fonts_urls as $font_url ) {
echo '';
}
}
private function print_fonts_links() {
$google_fonts = Plugin::elementor()->frontend->get_list_of_google_fonts_by_type();
if ( ! empty( $google_fonts['google'] ) ) {
$stable_google_fonts_url = Plugin::elementor()->frontend->get_stable_google_fonts_url( $google_fonts['google'] );
echo '';
}
if ( ! empty( $google_fonts['early'] ) ) {
$this->print_early_access_google_font_link_tags( $google_fonts['early'] );
}
}
public function enqueue_and_print_font_links() {
$this->enqueue_font_links();
$this->print_fonts_links();
}
public function print_all_css( int $post_id ) {
// Avoid re-print CSS
if ( isset( self::$printed_with_css[ $this->get_file_handle_id() ] ) ) {
return;
}
$template_custom_css = $post_id > 0 ? $this->get_custom_css( $post_id ) : '';
echo ''; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
if ( Plugin::elementor()->editor->is_edit_mode() && method_exists( Plugin::elementor()->frontend, 'get_list_of_google_fonts_by_type' ) ) {
$this->enqueue_and_print_font_links();
}
// Avoid re-print CSS
self::$printed_with_css[ $this->get_file_handle_id() ] = true;
}
private function get_custom_css( $post_id ) {
$loop_doc = Plugin::elementor()->documents->get( $post_id );
return $loop_doc->get_settings( 'custom_css' );
}
public function print_css() {
$this->print_all_css( 0 );
}
public function print_dynamic_css( $post_id, $post_id_for_data ) {
$document = Plugin::elementor()->documents->get_doc_for_frontend( $post_id_for_data );
if ( ! $document ) {
return;
}
Plugin::elementor()->documents->switch_to_document( $document );
$css_file = Loop_Dynamic_CSS::create( $post_id, $post_id_for_data );
$post_css = $css_file->get_content();
if ( empty( $post_css ) ) {
return;
}
$css = '';
$css = str_replace( '.elementor-' . $post_id, '.e-loop-item-' . $post_id, $post_css );
$css = sprintf( '', 'loop-dynamic-' . $post_id_for_data, $css );
echo $css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
Plugin::elementor()->documents->restore_document();
}
}