$class, 'message' => $message, 'is_dismissible' => $is_dismissible, ]; } /** * Display all admin notices. * * @since 1.11.0 * * @return void */ public static function display_admin_notices() { foreach ( self::$admin_notices as $notice ) { $dismissible = $notice['is_dismissible'] ? 'is-dismissible' : ''; ?>

$value ) { $current_key = $key; if ( $needle === $value or ( is_array( $value ) && self::recursive_array_search( $needle, $value ) !== false ) ) { return $current_key; } } return false; } /** * Determines appropriate Dashicon icon for a given icon class * * @since 1.11.0 * * @param string $iconClass Icon class. * * @return string Dashicon icon HTML. */ public static function determine_dashicon_icon( $iconClass ) { $dashicon_class = self::get_dashicon_icon_class( $iconClass ); return ''; } /** * Get the appropriate Dashicon class for a given icon class. * * @since 1.11.0 * * @param string $iconClass Icon class. * * @return string */ private static function get_dashicon_icon_class( $iconClass ) { $supported = [ 'archive' => 'media-archive', 'audio' => 'media-audio', 'code' => 'media-code', 'excel' => 'media-spreadsheet', 'image' => 'format-image', 'movie' => 'media-video', 'pdf' => 'pdf', 'photo' => 'format-image', 'picture' => 'format-image', 'sound' => 'media-audio', 'video' => 'media-video', 'zip' => 'media-archive', ]; if ( ! array_key_exists( $iconClass, $supported ) ) { // Default Dashicon. return 'media-document'; } return $supported[ $iconClass ]; } /** * Determines appropriate fa icon for a given icon class * * @since 1.9.0 * @deprecated 1.11.0 Removed Font Awesome library and moved to Dashicons. Use `WPML_Utils::determine_dashicon_icon()`. * @see WPML_Utils::determine_dashicon_icon() * * @param string $iconClass icon class. * * @return string returns fa icon. */ public static function determine_fa_icon( $iconClass ) { return ''; } /** * Find appropriate Dashicon icon from file path * * @since 1.9.0 * @since 1.11.0 Use Dashicons instead of Font Awesome for the icons. * * @param WPML_Attachment $attachment attachment. * * @return string */ public static function generate_attachment_icon( $attachment ) { return self::determine_dashicon_icon( $attachment->getIconClass() ); } /** * Get UTM URL. * * @since 1.11.0 * * @param string $url Base url. * @param array|string $utm Array of UTM params, or if string provided - utm_content URL parameter. * * @return string */ public static function get_utm_url( $url, $utm ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh // Defaults. $source = 'WordPress'; $medium = 'plugin'; $campaign = 'wp-mail-logging-plugin'; $content = 'general'; if ( is_array( $utm ) ) { if ( isset( $utm['source'] ) ) { $source = $utm['source']; } if ( isset( $utm['medium'] ) ) { $medium = $utm['medium']; } if ( isset( $utm['campaign'] ) ) { $campaign = $utm['campaign']; } if ( isset( $utm['content'] ) ) { $content = $utm['content']; } } elseif ( is_string( $utm ) ) { $content = $utm; } $query_args = [ 'utm_source' => esc_attr( rawurlencode( $source ) ), 'utm_medium' => esc_attr( rawurlencode( $medium ) ), 'utm_campaign' => esc_attr( rawurlencode( $campaign ) ), ]; if ( ! empty( $content ) ) { $query_args['utm_content'] = esc_attr( rawurlencode( $content ) ); } return add_query_arg( $query_args, $url ); } /** * Get the admin page base URL. * * @since 1.11.0 * * @return string */ public static function get_admin_page_url() { $settings = SettingsTab::get_settings(); if ( isset( $settings['top-level-menu'] ) && $settings['top-level-menu'] === '0' ) { $admin_base = admin_url( 'tools.php' ); } else { $admin_base = admin_url( 'admin.php' ); } return add_query_arg( 'page', self::ADMIN_PAGE_SLUG, $admin_base ); } /** * Check if the current user can access the WP Mail Logging submissions. * * @since 1.13.0 * * @return bool * * @throws \Exception If the service is not registered. */ public static function can_current_user_access_wp_mail_logging_submissions() { // Either an administrator or a user with the correct capability can see the submission data. return current_user_can( 'administrator' ) || current_user_can( WPML_Init::getInstance()->getService( 'plugin' )->getSetting( 'can-see-submission-data', 'manage_options' ) ); } /** * Clean the headers and return an array of headers. * * @since 1.13.0 * * @param mixed $raw_headers Raw headers. * * @return string[] */ public static function clean_headers( $raw_headers ) { if ( is_array( $raw_headers ) ) { return $raw_headers; } $clean_headers = str_replace( [ "\\r\\n", "\r\n", ",\n", ",\\n" ], "\n", $raw_headers ); $headers = explode( "\n", $clean_headers ); return array_filter( array_map( function( $header ) { return rtrim( $header, "," ); }, $headers ) ); } }