'akram_template', 'post_status' => 'publish', 'posts_per_page' => 100, 'fields' => 'ids', 'meta_query' => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query -- bounded query on a builder meta key. array( 'key' => '_akram_type', 'value' => 'popup', ), ), ) ); foreach ( $ids as $id ) { $s = Theme_Builder::get_settings( $id ); $users = $s['users'] ?? 'all'; if ( 'guests' === $users && is_user_logged_in() || 'logged' === $users && ! is_user_logged_in() ) { continue; } if ( ! empty( $s['roles'] ) && is_user_logged_in() && ! array_intersect( (array) $s['roles'], (array) wp_get_current_user()->roles ) ) { continue; } if ( Theme_Builder::score( Theme_Builder::get_conditions( $id ) ) > 0 ) { self::$active[] = (int) $id; } } return self::$active; } public static function render() { $ids = self::active(); if ( ! $ids ) { return; } Frontend::add_module( 'popup' ); Frontend::print_style( 'akram-popup', self::style_url() ); // no-op when already printed in the head foreach ( $ids as $id ) { $s = Theme_Builder::get_settings( $id ); $layout = preg_replace( '/[^a-z-]/', '', $s['layout'] ?? 'center' ); $anim = preg_replace( '/[^a-z-]/', '', $s['anim'] ?? 'zoom' ); $cfg = array( 'id' => $id, 'trigger' => array( 'type' => $s['trigger'] ?? 'load', 'delay' => (float) ( $s['delay'] ?? 3 ), 'pct' => (int) ( $s['scroll'] ?? 50 ), 'sel' => $s['selector'] ?? '', 'secs' => (int) ( $s['idle'] ?? 30 ), ), 'freq' => $s['freq'] ?? 'session', 'days' => (int) ( $s['days'] ?? 7 ), 'maxShows' => (int) ( $s['maxShows'] ?? 0 ), 'views' => (int) ( $s['views'] ?? 0 ), 'devices' => array_values( (array) ( $s['devices'] ?? array() ) ), 'overlayClose' => ! isset( $s['overlayClose'] ) || $s['overlayClose'], 'esc' => ! isset( $s['esc'] ) || $s['esc'], 'lock' => ! empty( $s['lock'] ), 'autoClose' => (int) ( $s['autoClose'] ?? 0 ), 'closeAfterSubmit' => (int) ( $s['closeAfterSubmit'] ?? 2 ), 'ref' => $s['ref'] ?? '', ); $style = ''; if ( ! empty( $s['width'] ) ) { $style .= '--pw:' . esc_attr( (string) $s['width'] ) . ( is_numeric( $s['width'] ) ? 'px' : '' ) . ';'; } if ( ! empty( $s['overlay'] ) ) { $style .= '--po:' . esc_attr( (string) $s['overlay'] ) . ';'; } if ( ! empty( $s['blur'] ) ) { $style .= '--pb:' . (int) $s['blur'] . 'px;'; } $close = empty( $s['hideClose'] ) ? '' : ''; printf( '