Server : Apache System : Linux ls31.server.ly 3.10.0-962.3.2.lve1.5.68.el7.x86_64 #1 SMP Wed Apr 6 11:12:23 UTC 2022 x86_64 User : medchoco ( 2906) PHP Version : 8.3.16 Disable Function : mail Directory : /home/medchoco/www/wp-content/plugins/mailchimp-for-wp/includes/ |
Upload File : |
<?php /** * Class MC4WP_Field_Formatter * * Formats values based on what the Mailchimp API expects or accepts for the given field types. */ class MC4WP_Field_Formatter { /** * @param mixed $value * @param object $options * @return array */ public function address( $value, $options = null ) { // auto-format if this is a string if ( is_string( $value ) ) { // addr1, addr2, city, state, zip, country $address_pieces = explode( ',', $value ); $address_pieces = array_filter( $address_pieces ); $address_pieces = array_values( $address_pieces ); // try to fill it.... this is a long shot $value = array( 'addr1' => $address_pieces[0], 'city' => isset( $address_pieces[1] ) ? $address_pieces[1] : '', 'state' => isset( $address_pieces[2] ) ? $address_pieces[2] : '', 'zip' => isset( $address_pieces[3] ) ? $address_pieces[3] : '', ); if ( ! empty( $address_pieces[4] ) ) { $value['country'] = $address_pieces[4]; } } elseif ( is_array( $value ) ) { // merge with array of empty defaults to allow skipping certain fields $default = array_fill_keys( array( 'addr1', 'city', 'state', 'zip' ), '' ); $value = array_merge( $default, $value ); } return $value; } /** * @param mixed $value * @param object $options * @return string */ public function birthday( $value, $options = null ) { $format = is_object( $options ) && isset( $options->date_format ) ? $options->date_format : 'MM/DD'; if ( is_array( $value ) ) { // allow for "day" and "month" fields if ( isset( $value['month'] ) && isset( $value['day'] ) ) { $value = $value['month'] . '/' . $value['day']; } else { // if other array, just join together $value = join( '/', $value ); } } $value = trim( $value ); if ( empty( $value ) ) { return $value; } // always use slashes as delimiter, so next part works $value = str_replace( array( '.', '-' ), '/', $value ); // if format = DD/MM OR if first part is definitely a day value (>12), then flip order // this allows `strtotime` to understand `dd/mm` values $values = explode( '/', $value ); if ( $format === 'DD/MM' || ( $values[0] > 12 && $values[0] <= 31 && isset( $values[1] ) && $values[1] <= 12 ) ) { $values = array_reverse( $values ); $value = join( '/', $values ); } // Mailchimp expects a MM/DD format, regardless of their display preference $value = (string) gmdate( 'm/d', strtotime( $value ) ); return $value; } /** * @param mixed $value * @param object $options * @return string */ public function date( $value, $options = null ) { if ( is_array( $value ) ) { // allow for "year", "month" and "day" keys if ( isset( $value['year'] ) && isset( $value['month'] ) && isset( $value['day'] ) ) { $value = $value['year'] . '/' . $value['month'] . '/' . $value['day']; } else { // if other array, just join together $value = join( '/', $value ); } } $value = trim( $value ); if ( empty( $value ) ) { return $value; } // Mailchimp expects a Y-m-d format no matter the display preference return (string) gmdate( 'Y-m-d', strtotime( $value ) ); } /** * @param string $value * @param object $options * @return string */ public function language( $value, $options = null ) { $value = trim( $value ); $exceptions = array( 'pt_PT', 'es_ES', 'fr_CA', ); if ( ! in_array( $value, $exceptions, true ) ) { $value = substr( $value, 0, 2 ); } return $value; } /** * @param mixed $value * @param object $options * @return bool */ public function boolean( $value, $options = null ) { $falsey = array( 'false', '0' ); if ( in_array( $value, $falsey, true ) ) { return false; } // otherwise, just cast. return (bool) $value; } }