File: /var/www/lipovac/wp-content/plugins/the-events-calendar/src/Tribe/Integrations/WPML/Meta.php
<?php
/**
* Translate post ids in Event meta data.
*
* @since 4.6.21
*/
class Tribe__Events__Integrations__WPML__Meta {
/**
* @since 4.6.21
*
*/
public function hook() {}
/**
* Translates post id in the Event meta data.
*
* @since 4.6.21
*
* @param string $value
* @param int $object_id
* @param string $meta_key
*
* @return mixed The translated id for _EventOrganizerID & _EventVenueID or false.
*/
public function translate_post_id( $value, $object_id, $meta_key ) {
if ( isset( $_POST ) && ! empty( $_POST ) ) {
return $value;
}
$accepted_values = array( '_EventOrganizerID', '_EventVenueID' );
if ( ! in_array( $meta_key, $accepted_values ) ) {
return $value;
}
$value = $this->get_post_meta( $object_id, $meta_key );
if ( empty( $value ) ) {
return false;
}
$type = strpos( 'Organizer', $meta_key )
? Tribe__Events__Organizer::POSTTYPE
: Tribe__Events__Venue::POSTTYPE;
foreach ( $value as & $post_id ) {
if ( is_serialized( $post_id ) ) {
$array = (array) unserialize( $post_id );
foreach ( $array as & $id ) {
/**
* Returns an element’s ID in the current language or in another specified language.
* @param int $id The ID of the post type or taxonomy term to filter
* @param string $type The type of element the ID belongs to.
* @param bool true If set to true it will always return a value (the original value, if translation is missing)
*/
$id = apply_filters( 'wpml_object_id', $id, $type, true );
}
$post_id = $array;
} else {
/**
* Returns an element’s ID in the current language or in another specified language.
* @param int $post_id The ID of the post type or taxonomy term to filter
* @param string $type The type of element the ID belongs to.
* @param bool true If set to true it will always return a value (the original value, if translation is missing)
*/
$post_id = apply_filters( 'wpml_object_id', $post_id, $type, true );
}
}
return $value;
}
/**
* Get meta value skipping filters (using direct DB query).
*
* @since 4.6.21
*
* @param int $post_id
* @param string $meta_key
* @return array
*/
private function get_post_meta( $post_id, $meta_key ) {
global $wpdb;
return $wpdb->get_col( $wpdb->prepare(
"SELECT meta_value FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s",
$post_id,
$meta_key
) );
}
/**
* Query all translations of organizer or venue to fetch events.
*
* @since 4.6.21
*
* @param object $q
*/
public function include_all_languages( $q ) {
$keys = array( 'venue', 'organizer' );
foreach ( $keys as $key ) {
if ( ! isset( $q->query_vars[ $key ] ) ) {
continue;
}
if ( ! is_int( $q->query_vars[ $key ] ) ) {
continue;
}
$var = $q->query_vars[ $key ];
/**
* Get trid (the ID of the translation group) of a translated element, which is
* required for the wpml_get_element_translations filter and others which expect this argument.
* https://wpml.org/wpml-hook/wpml_element_trid/
*
* @param mixed $empty_value This is usually the value the filter will be modifying.
* @param int $var The ID of the item.
* @param string $element_type The type of an element.
*/
$trid = apply_filters( 'wpml_element_trid', null, $var, "post_tribe_{$key}" );
/**
* Get the element translations info using trid
* https://wpml.org/wpml-hook/wpml_get_element_translations/
*
* @param mixed $empty_value This is usually the value the filter will be modifying.
* @param int $var The ID of the translation group
* @param string $element_type The type of an element.
*/
$translations = apply_filters( 'wpml_get_element_translations', null, $trid, "post_tribe_{$key}" );
$q->query_vars[ $key ] = wp_list_pluck( $translations, 'element_id' );
}
}
}