Jetpack::get_sync_error_idc_option PHP Method

get_sync_error_idc_option() public static method

Gets the value that is to be saved in the jetpack_sync_error_idc option.
Since: 4.4.0
public static get_sync_error_idc_option ( array $response = [] ) : array
$response array
return array Array of the local urls, wpcom urls, and error code
    public static function get_sync_error_idc_option($response = array())
    {
        $local_options = array('home' => get_home_url(), 'siteurl' => get_site_url());
        $options = array_merge($local_options, $response);
        $returned_values = array();
        foreach ($options as $key => $option) {
            if ('error_code' === $key) {
                $returned_values[$key] = $option;
                continue;
            }
            if (is_wp_error($normalized_url = self::normalize_url_protocol_agnostic($option))) {
                continue;
            }
            $returned_values[$key] = $normalized_url;
        }
        return $returned_values;
    }

Usage Example

 static function send_data($data, $codec_name, $sent_timestamp, $queue_id)
 {
     Jetpack::load_xml_rpc_client();
     $query_args = array('sync' => '1', 'codec' => $codec_name, 'timestamp' => $sent_timestamp, 'queue' => $queue_id, 'home' => get_home_url(), 'siteurl' => get_site_url());
     // Has the site opted in to IDC mitigation?
     if (Jetpack::sync_idc_optin()) {
         $query_args['idc'] = true;
     }
     if (Jetpack_Options::get_option('migrate_for_idc', false)) {
         $query_args['migrate_for_idc'] = true;
     }
     $query_args['timeout'] = Jetpack_Sync_Settings::is_doing_cron() ? 30 : 15;
     $url = add_query_arg($query_args, Jetpack::xmlrpc_api_url());
     $rpc = new Jetpack_IXR_Client(array('url' => $url, 'user_id' => JETPACK_MASTER_USER, 'timeout' => $query_args['timeout']));
     $result = $rpc->query('jetpack.syncActions', $data);
     if (!$result) {
         return $rpc->get_jetpack_error();
     }
     $response = $rpc->getResponse();
     // Check if WordPress.com IDC mitigation blocked the sync request
     if (is_array($response) && isset($response['error_code'])) {
         $error_code = $response['error_code'];
         $allowed_idc_error_codes = array('jetpack_url_mismatch', 'jetpack_home_url_mismatch', 'jetpack_site_url_mismatch');
         if (in_array($error_code, $allowed_idc_error_codes)) {
             Jetpack_Options::update_option('sync_error_idc', Jetpack::get_sync_error_idc_option($response));
         }
         return new WP_Error('sync_error_idc', esc_html__('Sync has been blocked from WordPress.com because it would cause an identity crisis', 'jetpack'));
     }
     return $response;
 }
All Usage Examples Of Jetpack::get_sync_error_idc_option
Jetpack