/** * Helper functions font settings. * * @package Bsf_Custom_Fonts * @since 2.0.0 */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Return image media ID on basis of file URL. * * @param string $url file url. * @since 2.0.0 * @return string */ function bcf_get_media_image_id_by_url( $url ) { global $wpdb; $image = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid='%s';", $url ) ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.QuotedSimplePlaceholder if ( ! empty( $image ) ) { return $image[0]; } return false; } /** * Create css for font-face * * @param array $font selected font from custom font list. * * @return array Font data. * @since 2.0.0 */ function bcf_prepare_backward_font_data( $font ) { $fonts = Bsf_Custom_Fonts_Taxonomy::get_links_by_name( $font ); $font_data = array(); $temp_arr = array(); $counter = 0; $font_wt_loop_count = 0; foreach ( $fonts as $font_key => $font_data_array ) { $font_data['font_name'] = $font_key; foreach ( $font_data_array as $key => $value ) { if ( 7 === $font_wt_loop_count ) { // 7 is all array font repeater keys count - weight, eot, woff, woff2, ttf, svg, otf. $font_wt_loop_count = 0; $counter++; } $temp_arr[ $counter ]['id'] = $counter + 1; $temp_arr[ $counter ]['font_style'] = 'normal'; if ( strpos( $key, 'display' ) !== false ) { $font_data['font_display'] = $value; continue; } if ( strpos( $key, 'fallback' ) !== false ) { $font_data['font_fallback'] = $value; continue; } if ( strpos( $key, 'weight' ) !== false ) { $temp_arr[ $counter ]['font_weight'] = $value; $font_wt_loop_count++; continue; } if ( strpos( $key, 'font_woff_2' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } if ( strpos( $key, 'font_woff-' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } if ( strpos( $key, 'font_ttf-' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } if ( strpos( $key, 'font_eot-' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } if ( strpos( $key, 'font_svg-' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } if ( strpos( $key, 'font_otf-' ) !== false ) { $font_wt_loop_count++; if ( $value ) { $temp_arr[ $counter ]['font_url'][] = esc_url( $value ); $temp_arr[ $counter ]['font_file'] = bcf_get_media_image_id_by_url( $value ); } continue; } } $final_font_arr = array(); if ( ! empty( $temp_arr ) ) { foreach ( $temp_arr as $index => $data ) { if ( ! empty( $data['font_weight'] ) ) { $final_font_arr[] = $data; } } } $font_data['variations'] = $final_font_arr; } return $font_data; } /** * Make font_file variation meta as array, whereas previously it was string type. * Case: 2.0.0 to 2.0.2 update. * * @param array $font_meta_data Meta font data. * * @return array Passed Font meta data. * @since 2.0.2 */ function bcf_make_font_url_meta_as_array( $font_meta_data ) { $variation_data = ! empty( $font_meta_data['variations'] ) ? $font_meta_data['variations'] : array(); if ( ! empty( $variation_data ) ) { foreach ( $variation_data as $index => $data ) { if ( is_string( $data['font_url'] ) ) { $font_meta_data['variations'][ $index ]['font_url'] = array( $data['font_url'] ); } elseif ( is_array( $data['font_url'] ) ) { $font_meta_data['variations'][ $index ]['font_url'] = $data['font_url']; } else { $font_meta_data['variations'][ $index ]['font_url'] = array(); } } } return $font_meta_data; } /** * Sanitize data recursively, eg: font-face data. * * @param array $data Data to sanitize. * * @return array * @since 2.0.0 */ function bcf_sanitize_text_field_recursive( $data ) { if ( is_array( $data ) ) { foreach ( $data as $key => $value ) { $data[ $key ] = bcf_sanitize_text_field_recursive( $value ); } return $data; } return sanitize_text_field( $data ); } /** * Get font source as per the asked type. * * @param string $font_type Font type. * @param string $font_url Font URL. * * @return string * @since 2.0.0 */ function bcf_get_font_src( $font_type, $font_url ) { $font_src = 'url(\'' . esc_url( $font_url ) . '\') '; switch ( $font_type ) { case 'woff': case 'woff2': case 'svg': $font_src .= 'format(\'' . $font_type . '\')'; break; case 'ttf': $font_src .= 'format(\'truetype\')'; break; case 'otf': $font_src .= 'format(\'OpenType\')'; break; case 'eot': $font_src = 'url(\'' . esc_url( $font_url ) . '?#iefix\') format(\'embedded-opentype\')'; break; } return $font_src; } /** * Get the file extension of font file. * * @param string $font_url Font URL. * * @return mixed * @since 2.0.0 */ function bcf_get_font_file_extension( $font_url ) { $file_last_chunk = substr( $font_url, -6 ); if ( strpos( $file_last_chunk, '.woff2' ) !== false ) { return 'woff2'; } if ( strpos( $file_last_chunk, '.woff' ) !== false ) { return 'woff'; } if ( strpos( $file_last_chunk, '.ttf' ) !== false ) { return 'ttf'; } if ( strpos( $file_last_chunk, '.eot' ) !== false ) { return 'eot'; } if ( strpos( $file_last_chunk, '.svg' ) !== false ) { return 'svg'; } if ( strpos( $file_last_chunk, '.otf' ) !== false ) { return 'otf'; } return false; } /** * Based on the font post data create font-face CSS. * * @param string $font_family Font family name. * @param array $font_data Font data. * @param array $variation_data Font variation data. * * @return string * @since 2.0.0 */ function bcf_prepare_gfont_face_css( $font_family, $font_data, $variation_data ) { $src = array(); $font_urls = $variation_data['font_url']; foreach ( $font_urls as $url ) { $file_extension = bcf_get_font_file_extension( $url ); if ( ! $file_extension ) { return ''; } foreach ( array( 'eot', 'woff2', 'woff', 'ttf', 'svg', 'otf' ) as $type ) { if ( empty( $url ) || $file_extension !== $type ) { continue; } $src[] = bcf_get_font_src( $type, $url ); } } $font_face = '@font-face {' . PHP_EOL; $font_face .= "\tfont-family: '" . $font_family . "';" . PHP_EOL; $font_face .= ! empty( $variation_data['font_style'] ) ? "\tfont-style: " . $variation_data['font_style'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $variation_data['font_weight'] ) ? "\tfont-weight: " . $variation_data['font_weight'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $font_data['font_display'] ) ? "\tfont-display: " . $font_data['font_display'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $font_data['font_fallback'] ) ? "\tfont-fallback: " . $font_data['font_fallback'] . ';' . PHP_EOL : ''; if ( empty( $font_urls ) ) { $font_face .= '}'; return $font_face; } $font_face .= "\tsrc: " . implode( ',' . PHP_EOL . "\t\t", $src ) . ';' . PHP_EOL . '}'; return $font_face; } /** * Based on the post-meta create font-face CSS. * * @param string $font_family Font family name. * @param array $font_data Font data. * @param array $variation_data Font variation data. * * @return string * @since 2.0.0 */ function bcf_prepare_lfont_face_css( $font_family, $font_data, $variation_data ) { $src = array(); $font_face = '@font-face {' . PHP_EOL; $font_face .= "\tfont-family: '" . $font_family . "';" . PHP_EOL; $font_face .= ! empty( $variation_data['font_style'] ) ? "\tfont-style: " . $variation_data['font_style'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $variation_data['font_weight'] ) ? "\tfont-weight: " . $variation_data['font_weight'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $font_data['font_display'] ) ? "\tfont-display: " . $font_data['font_display'] . ';' . PHP_EOL : ''; $font_face .= ! empty( $font_data['font_fallback'] ) ? "\tfont-fallback: " . $font_data['font_fallback'] . ';' . PHP_EOL : ''; $variation_urls = $variation_data['font_url']; if ( empty( $variation_urls ) ) { $font_face .= '}'; return $font_face; } if ( is_array( $variation_urls ) && ! empty( $variation_urls ) ) { foreach ( $variation_urls as $url ) { $file_extension = bcf_get_font_file_extension( $url ); if ( ! $file_extension ) { return ''; } foreach ( array( 'eot', 'woff2', 'woff', 'ttf', 'svg', 'otf' ) as $type ) { if ( empty( $url ) || $file_extension !== $type ) { continue; } $src[] = bcf_get_font_src( $type, $url ); } } } else { $file_extension = bcf_get_font_file_extension( $variation_urls ); if ( ! $file_extension ) { return ''; } foreach ( array( 'eot', 'woff2', 'woff', 'ttf', 'svg', 'otf' ) as $type ) { if ( empty( $variation_urls ) || $file_extension !== $type ) { continue; } $src[] = bcf_get_font_src( $type, $variation_urls ); } } $font_face .= "\tsrc: " . implode( ',' . PHP_EOL . "\t\t", $src ) . ';' . PHP_EOL . '}'; return $font_face; } /** * Retrieve font-face CSS for assigned $post_id. * * @param int $post_id Post ID. * @param array $font_data Font data. * @param bool $force_update Force update. * @param bool $is_google_font Is Google font. * * @since 2.0.0 * @return string css */ function bcf_get_font_face_css( $post_id, $font_data = array(), $force_update = false, $is_google_font = false ) { $saved = get_post_meta( $post_id, 'fonts-face', true ); if ( ! empty( $saved ) && false === $force_update ) { return $saved; } $font_face = ''; if ( true === $is_google_font ) { $font_family = ! empty( $font_data['font_name'] ) ? $font_data['font_name'] : ''; } else { $font_family = get_the_title( $post_id ); } if ( empty( $font_data ) ) { $font_data = get_post_meta( $post_id, 'fonts-data', true ); } if ( empty( $font_data ) || ( ! empty( $font_data ) && empty( $font_data['variations'] ) ) ) { return ''; } foreach ( $font_data['variations'] as $key => $variation_data ) { if ( true === $is_google_font ) { $font_face .= bcf_prepare_gfont_face_css( $font_family, $font_data, $variation_data ) . PHP_EOL; } else { $font_face .= bcf_prepare_lfont_face_css( $font_family, $font_data, $variation_data ) . PHP_EOL; } } return $font_face; } privacy-policy – WordPress privacy-policy – WordPress

Privacy Policy of Vrombr
Last Updated: February 22, 2024
Polyptik SAS (hereinafter “Polyptik”) has established this Vrombr Privacy Policy (hereinafter
“Policy”) which describes the processing of your information by Polyptik through the use of
the Vrombr application (hereinafter “the Application”).
To use the Application, you must accept this Policy. Before accepting this Policy, please read
all sections of this Policy. By using the Application, you must also accept the Vrombr User
Agreement. This Policy is part of the Vrombr User Agreement.
If you are below the age of majority where you reside, you must have a legal representative,
such as a parent or guardian, to accept this Policy on your behalf.
1. Information Collected by Polyptik
Polyptik may collect the following types of information from you when you use the
Application. If you refuse to provide the following information to Polyptik, you may be unable
to use the Application.
1.1 Information About You
When you use the Application, Polyptik may collect certain information you provide. This
information may include all or part of the following elements: your first and last name, your
email, your country or region of residence, your language settings, your username, your
opinion, your inquiries, and your friendships.
1.2 Information Collected by Polyptik When You Use the Application
Polyptik may collect information about your use of the Application and your actions within the
Application. This may include information about your device, your location, your interactions
with other users, the content you create, and your purchases.
1.2.1 Information About Your Device and Connection Environment
Polyptik may collect information about your device and connection environment from your
device, such as product model and name, operating system (“OS”), Internet service provider,
device and browser settings, Application version, IP address, and other unique device
identifiers (including, but not limited to, the Universal Unique Identifier). Polyptik may also
collect information about your advertising identifier from Apple, Inc. and/or Google, Inc.
1.2.2 Information About Your Use and Interactions With Other Users
When you use the Application or interact with other users on the Application, Polyptik may
collect the content you create, the information you provide, and your gaming and usage
history (including, but not limited to, access statistics and browsing history). This may include
information about your gaming history, purchase history, rewards received, relationships with
other users, images, and crash reports.
1.2.3 Information About Your Purchases
When purchasing In-Game Currency (i.e., game currency that can be purchased using your
residence currency and exchanged for content within the Application) in the Application,
Polyptik may collect information regarding the date/time of purchase, currency and amount,
item purchased, and rewards received as part of your purchase. Polyptik will not directly
obtain purchase information (payment information such as credit card numbers, account
authentication information, and contact information such as billing address) as the purchase
of In-Game Currency is handled by third-party payment services. However, if necessary,
Polyptik may, to the fullest extent permitted by law, obtain the aforementioned information
from post-payment service companies. Polyptik may also collect information regarding your
spending of In-Game Currency, including, but not limited to, date and territory of
consumption, In-Game Currency balance, and OS.
1.2.4 Cookies
Polyptik may use cookies (including similar technologies) when you use the Application.
Cookies are small data files downloaded to your device. They are used to help the
Application operate securely and smoothly, and for Polyptik to obtain information about your
preferred settings.
1.2.5 Location Information
With your consent, Polyptik may collect information about your precise location to provide a
feature enabling matching with other nearby users.
2. Use of Information
Polyptik may use your information for the following purposes during the existence period of
such purposes. Unless otherwise authorized by law, Polyptik will obtain your prior consent
before using your information for any purpose not related to those described in this Policy.
2.1 Provision of Services on the Application
Polyptik may use your information to provide, maintain, and improve services on the
Application, to protect you and Polyptik, to prevent and investigate illegal activities, and to
prevent and investigate violations of the Vrombr User Agreement. Regarding your location
data, it will only be used to enable matching with other nearby users for multiplayer mode.
2.2 Market Research for Service and Product Improvement
Polyptik may use your information for Polyptik and third parties in the computer and video
game industry to improve services and products, and to develop and provide new services.
2.3 Advertising and Marketing
Polyptik may use your information to provide you with information about Polyptik’s services
and products and third-party companies. To the fullest extent permitted by law, this may
include presentations of features specific to you, personalized content and offers, as well as
advertisements and promotions tailored to you (including through the Application notification
page, within services provided by Polyptik, or within third-party web services, including
related services).
2.4 Handling of Support Requests
If you address support requests to Polyptik regarding issues arising from your use of the
Application, Polyptik may use your information to resolve these issues.
2.5 Creation and Provision of Depersonalized Data
Polyptik may provide your information to its third-party partners to improve product and
service usability, as well as for reference in the development of new products and services.
In this case, the information will be provided in a depersonalized form, and Polyptik will
prohibit any activity that would re-identify you as an individual from this information.
2.6 Creation and Provision of Statistical Information
Polyptik may use your information for statistical purposes in an anonymized format in which
you cannot be identified as an individual. Polyptik or third parties appointed by Polyptik may
use this information to improve services, operations, and marketing activities, to improve
product and service usability, as well as for reference in the development of new products
and services.
3. Information Sharing
Polyptik may share your information with a third party in the following cases.
3.1 Disclosure Within the Application or on a Website
Your information, such as your username, player status, game character, game logs, and
game history, may be disclosed to other users within the Application or on a website as part
of the use of the Application.
3.2 Processing of Information by Third Parties
Polyptik may delegate the processing of your information to its affiliated companies and
subcontractors based on Polyptik’s instructions.
3.3 With Your Consent
In some cases, with your consent, Polyptik may share your information with a third party.
3.4 When Required by Law
When disclosure is required by law, Polyptik may disclose your information to a third party
without your consent.
4. Information Control
4.1 Disclosure and Revision of Your Information
In certain cases, you may be able to review or delete the information you have provided to
Polyptik, or exercise control over certain uses of that information, via the Application
settings. You may also request details about revisions, additions, and deletions of the
information you have provided and information collected by Polyptik about you through the
Application by submitting a request to Polyptik’s contact points for requests described in
Article 8 of this Policy. However, Polyptik may decide not to disclose certain details about
your information if any of the following situations apply. Polyptik will inform you promptly if
Polyptik decides not to disclose certain or all of your information.
If the disclosure of such information could result in a violation of your rights or those of a
third party, such as physical harm or financial malfeasance.
If the disclosure of such information could have a significant impact on the reasonable
conduct of Polyptik’s activities.
If the disclosure of such information would violate other laws.
4.2 Disabling Cookies
Through your browser settings, you can disable cookies or receive warnings when cookies
are sent. If you disable cookies, you may become unable to use some or all features of the
Application.
4.3 Ceasing the Provision of Location Data
You may at any time cease providing your location data by modifying your device settings. If
you cease providing your location data, you may become unable to use some or all features
of the Application.
5. Information Protection
Polyptik takes reasonable measures, and has established reasonable safeguards, to help
protect your information against loss, theft, misuse, unauthorized access, disclosure,
alteration, and destruction.
6. Retention and Transfer of Your Information
To the extent necessary to achieve the purpose of use defined in Article 2, your information
will be transferred, stored, and processed in France. Your information may be subject to data
protection rules other than those of your country of residence, depending on where your data
has been transferred.
7. Changes to this Policy
Polyptik may modify this Policy at any time. Polyptik will publish revisions to this Policy on
the Application. Revisions to this Policy will be effective from the time of their publication. If
you object to such revisions within 15 days of receiving notification from Polyptik, your
objection will be considered notice of termination of the Vrombr User Agreement. Your
continued use of the Application after such changes will constitute acceptance of the same.
When using the Application, please check the most recent version of this Policy at any time.
8.Contact Information
If you wish to contact Polyptik regarding this Policy or how your information is processed by
Polyptik, you may send an email to the following address: postmaster@vrombr.games.