agile_tix = $agile_tix; $this->version = $version; } static function agile_amy_movie_post_creator( $event, $commentStat, $postStat, $isNewEvent, $postID, $comingSoonEventData = null ) { // Coming soon events never have CurrentShowings $currentShowings = isset( $event['CurrentShowings'] ) && is_array( $event['CurrentShowings'] ) ? $event['CurrentShowings'] : array(); $firstShowing = ! empty( $currentShowings ) ? $currentShowings[0] : array(); $lastShowing = ! empty( $currentShowings ) ? $currentShowings[ count( $currentShowings ) - 1 ] : array(); $types = array(); $values = array(); if ( ! empty( $event['AdditionalMedia'] ) ) { foreach ( $event['AdditionalMedia'] as $media ) { $types[] = $media['Type']; $values[] = $media['Value']; } } $typeString = implode( ',', $types ); $valueString = implode( ',', $values ); $CustomProperties = self::groupCustomProperties( $event ); $ratingValue = ''; if ( array_key_exists( 'Rating', $CustomProperties ) ) { $ratingValue = $CustomProperties['Rating']; } $langaugeValue = ''; if ( array_key_exists( 'Original Langauge', $CustomProperties ) ) { $langaugeValue = $CustomProperties['Original Langauge']; } $thumbnailID = ''; if ( ! empty( $event['EventImage'] ) ) { $mediaLibImg = agile_tix_post_creator::add_image_to_media_library_from_uri( $event['EventImage'] ); if ( $mediaLibImg && array_key_exists( 'url', $mediaLibImg ) && array_key_exists( 'attachment_id', $mediaLibImg ) ) { $thumbnailID = $mediaLibImg['attachment_id']; } } $showingIDs = array(); foreach ( $currentShowings as $showing ) { array_push( $showingIDs, $showing['ID'] ); } $metaBase = agile_tix_post_creator::agile_create_universal_meta_fields( $event, $thumbnailID, $comingSoonEventData ); // Handle empty CurrentShowings (coming soon events never have CurrentShowings) $metaBase['_duration'] = ! empty( $firstShowing['Duration'] ) ? $firstShowing['Duration'] : ''; $metaBase['_layout'] = 'full'; $metaBase['_showtimes'] = ! empty( $firstShowing ) ? self::ats_SerializeShowTicketsArea( $firstShowing['LegacyPurchaseLink'] ?? '', $firstShowing['SalesMessage'] ?? '', $firstShowing['StartDate'] ?? '' ) : ''; $metaBase['_start_date'] = ! empty( $firstShowing['StartDate'] ) ? agile_tix_event_champ_integrate::ats_DateFormat( $firstShowing['StartDate'] ) : ''; $metaBase['_end_date'] = ! empty( $lastShowing['EndDate'] ) ? agile_tix_event_champ_integrate::ats_DateFormat( $lastShowing['EndDate'] ) : ''; $metaBase['_language'] = $langaugeValue; $metaBase['_mpaa'] = $ratingValue; $metaBase['amy_imdb_movie'] = '1'; $metaBase['custom_rating'] = '0'; $metaBase['_imdb'] = 'N/A';// TODO: come back and see if these can be set better $post_data = array( 'ID' => $postID, 'post_title' => $event['Name'], 'post_content' => agile_tix_post_creator::agile_create_universal_content_body( $event ) . '
\r\n\r\n \r\n\r\n \r\n\r\n' . $event['CorpOrgName'] . '
', 'post_name' => agile_tix_event_champ_integrate::ats_FormatEventSlug( $event['Name'], $event['ID'] ), 'post_status' => $postStat, 'post_type' => 'amy_movie', // 'post_author' => get_user_by('id', 1)->user_id, 'comment_status' => $commentStat, /* 'meta_input' => array( //meta data //required non-eventchamp meta for ats post searching //"ATS_ModifiedDate" => agile_tix_post_creator::agile_get_most_recent_lastUpdate($event) ?? '', //"ATS_firstEndDate" => $event['CurrentShowings'][0]['EndDate'] ?? '', //"ATS_showingIDs" => $showingIDs ?? [], //'OrgID' => $event['OrgID'] ?? '', //'CorpOrgID' => $event['CorpOrgID'] ?? '', // "ATS_EventID" => $event['ID'] ?? '', //"ATS_MediaLib_Img_ID" => $thumbnailID ?? '', //"ATS_HideFeatImg" => get_option('agile_field_render_carousel') ?? 0, //amy movie specific fields ),*/ 'meta_input' => $metaBase, ); if ( $isNewEvent ) { $postID = wp_insert_post( $post_data ); } else { $postID = wp_update_post( $post_data ); } update_post_meta( $postID, '_poster', self::ats_PosterImage( $event['EventImage'] ) ); update_post_meta( $postID, '_trailer', self::ats_HasTrailer( $typeString, $valueString ) ); if ( array_key_exists( 'Genre', $CustomProperties ) ) { wp_set_object_terms( $postID, $CustomProperties['Genre'], 'amy_genre' ); } if ( array_key_exists( 'Cast', $CustomProperties ) ) { wp_set_object_terms( $postID, $CustomProperties['Cast'], 'amy_actor' ); } if ( array_key_exists( 'Director', $CustomProperties ) ) { wp_set_object_terms( $postID, $CustomProperties['Director'], 'amy_director' ); } } static function image_exists_in_media_library( $image_url ) { global $wpdb; $file_name = basename( $image_url ); $query = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND post_mime_type LIKE %s AND guid LIKE %s", 'image/%', '%' . $wpdb->esc_like( $file_name ) ) ); return ! empty( $query ) ? $query : false; } static function ats_GetImageID( $image_url ) { $image_exists = self::image_exists_in_media_library( $image_url ); if ( $image_exists !== false ) { return $image_exists; } else { return 0; } } static function ats_PosterImage( $img_url ) { $imgID = self::ats_GetImageID( $img_url ); $image_url = ''; $width = 0; $height = 0; $title = ''; $desc = ''; $thumb_url = ''; if ( $imgID > 0 ) { if ( $imgID ) { $image_info_full = wp_get_attachment_image_src( $imgID, 'full' ); $image_info_thumb = wp_get_attachment_image_src( $imgID, 'thumbnail' ); if ( $image_info_full ) { $image_url = $image_info_full[0]; $width = $image_info_full[1]; $height = $image_info_full[2]; $title = get_the_title( $imgID ); $desc = get_post_field( 'post_content', $imgID ); } } $outer = array( 'url' => $image_url, 'id' => strval( $imgID ), 'width' => strval( $width ), 'height' => strval( $height ), 'thumbnail' => $image_info_thumb[0], 'alt' => get_post_meta( $imgID, '_wp_attachment_image_alt', true ), 'title' => $title, 'description' => $desc, ); } else { $dynamic_width = '550'; $dynamic_height = '1000'; $response = wp_remote_get( $img_url, array( 'timeout' => 15 ) ); if ( ! is_wp_error( $response ) && 200 === (int) wp_remote_retrieve_response_code( $response ) ) { $image_body = wp_remote_retrieve_body( $response ); if ( is_string( $image_body ) && '' !== $image_body ) { $image_size = @getimagesizefromstring( $image_body ); if ( $image_size ) { $dynamic_width = $image_size[0]; $dynamic_height = $image_size[1]; } } } $outer = array( 'url' => $img_url, 'id' => strval( wp_rand( 1, 999999999 ) ), 'width' => $dynamic_width, 'height' => $dynamic_height, 'thumbnail' => substr( $img_url, 0, -4 ) . '_thumb.jpg', 'alt' => 'main image', 'title' => 'post image', 'description' => '', ); } return $outer; } static function ats_HasTrailer( $mediaType, $mediaValue ) { $mediaTypeArray = explode( ',', $mediaType ); $mediaValueArray = explode( ',', $mediaValue ); $arrayCount = count( $mediaTypeArray ); $outer = array(); for ( $i = 0; $i < $arrayCount; $i++ ) { if ( $mediaTypeArray[ $i ] == 'YouTube' ) { $outer[ $i + 1 ] = array( '_link' => ( 'https://www.youtube.com/watch?v=' . $mediaValueArray[ $i ] ) ); } elseif ( $mediaTypeArray[ $i ] == 'Vimeo' ) { $outer[ $i + 1 ] = array( '_link' => ( 'https://www.vimeo.com/' . $mediaValueArray[ $i ] ) ); } } return $outer; } static function ats_SerializeShowTicketsArea( $buttonlink, $onSale, $dateTime ) { $buttonlinkArray = explode( ',', $buttonlink ); $onSaleArray = explode( ',', $onSale ); $dateTimeArray = explode( ',', $dateTime ); $arrayCount = count( $buttonlinkArray ); $outer = array(); for ( $i = 0; $i < $arrayCount; $i++ ) { if ( $onSaleArray[ $i ] == 'Buy Tickets' ) { $outer[ $i + 1 ] = array( 'date' => self::ats_DateFormat( $dateTimeArray[ $i ] ), 'hour' => self::ats_TimeFormat( $dateTimeArray[ $i ], true ), 'link' => $buttonlinkArray[ $i ] . '', ); } else { $outer[ $i + 1 ] = array( 'date' => self::ats_DateFormat( $dateTimeArray[ $i ] ), 'hour' => self::ats_TimeFormat( $dateTimeArray[ $i ], true ), 'link' => $buttonlinkArray[ $i ] . '', ); } } return $outer; } static function ats_DateFormat( $datetime ) { return wp_date( 'Y-m-d', strtotime( $datetime ) ); } static function ats_TimeFormat( $datetime, $showtime ) { $time = ''; if ( $showtime == 'True' ) { $time = wp_date( 'g:i a', strtotime( $datetime ) ); } return $time; } function ats_DateTimeFormat( $startdatetime, $enddatetime, $showtime, $showenddate ) { $formatted = wp_date( 'D, M j, Y', strtotime( $startdatetime ) ); if ( $showtime == 'True' ) { $formatted .= wp_date( ' g:i a', strtotime( $startdatetime ) ); } if ( $showenddate == 'True' ) { $formatted .= ' - ' . wp_date( 'D, M j, Y', strtotime( $enddatetime ) ); if ( $showtime == 'True' ) { $formatted .= wp_date( ' g:i a', strtotime( $enddatetime ) ); } } return $formatted; } function ats_ExpireDateTimeFormat( $enddatetime ) { return get_gmt_from_date( $enddatetime, 'Y-m-d H:i' ); } function ats_FormatEventSlug( $title, $eventid ) { return sanitize_title( $title ) . '-' . $eventid; } function ats_SerializeEventVenueValue( $venueid ) { $venueArray = array(); $venueArray[ intval( $venueid ) ] = $venueid; return serialize( $venueArray ); } function ats_SerializeTicketsArea( $buttonlink, $buttontext, $title, $subtitle, $style = 0 ) { return serialize( array( 0, array( 'title' => $title, 'active-style' => 'off', 'subtitle' => $subtitle, 'purchase-type' => 'external-link', 'event_tickets_package_feature' => '', 'woocommerce-product' => '', 'quantity' => 'default', 'price' => '', 'eventbrite-link' => '', 'meetup-link' => '', 'external-link' => $buttonlink . 'affid=ticketsnashville&', 'contact-form-link' => '', 'button-title' => $buttontext, 'button-target' => '_self', ), ) ); } function ats_SearializeSectionsArea() { return 'a:2:{i:0;a:10:{s:5:"title";s:7:"Tickets";s:4:"type";s:7:"tickets";s:24:"event_extra_tabs_content";s:0:"";s:13:"speaker-style";s:7:"default";s:14:"speaker-column";s:7:"default";s:20:"speaker-column-space";s:7:"default";s:13:"speaker-photo";s:7:"default";s:18:"speaker-profession";s:7:"default";s:15:"speaker-summary";s:7:"default";s:14:"speaker-social";s:7:"default";}i:1;a:10:{s:5:"title";s:3:"Map";s:4:"type";s:3:"map";s:24:"event_extra_tabs_content";s:0:"";s:13:"speaker-style";s:7:"default";s:14:"speaker-column";s:7:"default";s:20:"speaker-column-space";s:7:"default";s:13:"speaker-photo";s:7:"default";s:18:"speaker-profession";s:7:"default";s:15:"speaker-summary";s:7:"default";s:14:"speaker-social";s:7:"default";}}'; } function ats_SpecifyCategory( $category, $orgid ) { $catString = ''; if ( $category != 'orgbased' ) { $catString = $category; } else { switch ( $orgid ) { case 11878: case 12670: $catString = 'Cinema'; break; case 11879: $catString = 'Music'; break; case 11981: case 12666: $catString = 'Performing Arts'; break; case 14252: $catString = 'Dance'; break; case 14253: $catString = 'Family'; break; default: $catString = 'Other'; break; } } return $catString; } function ats_TagReturns( $customPropName, $customPropValue ) { $customPropNameArray = explode( ',', $customPropName ); $customPropValueArray = explode( ',', $customPropValue ); $arrayCount = count( $customPropNameArray ); $outer = ''; for ( $i = 0; $i < $arrayCount; $i++ ) { if ( isset( $customPropNameArray[ $i ], $customPropValueArray[ $i ] ) ) { if ( strtolower( trim( $customPropNameArray[ $i ] ) ) == 'tag' ) { $outer .= $customPropValueArray[ $i ] . ','; } } } $outer = rtrim( $outer, ',' ); return $outer; } static function groupCustomProperties( $data ) { $result = array(); if ( ! isset( $data['CustomProperties'] ) || ! is_array( $data['CustomProperties'] ) ) { return $result; } foreach ( $data['CustomProperties'] as $property ) { $name = $property['Name']; $value = $property['Value']; if ( ! isset( $result[ $name ] ) ) { $result[ $name ] = array(); } $result[ $name ][] = $value; } // Convert arrays to comma-separated strings foreach ( $result as $key => $values ) { $result[ $key ] = implode( ', ', $values ); } return $result; } }