/** * Download a remote file * * @param string $url url to download * @param string $file_path path of the saved file * @param int $timeout timeout in sec * @return string|WP_Error downloaded file path or error */ public static function download_file($url, $file_path, $timeout) { $handle = FOX_sUtil::new_file_handle($file_path); if (is_wp_error($handle)) { return $handle; } $response = wp_remote_get($url, array('timeout' => $timeout)); if (is_wp_error($response)) { fclose($handle); unlink($file_path); return new WP_Error('bp_media:http:request_error', sprintf(__('Error in the request of url %s : %s - %s', "foxfire"), $url, $response->get_error_code(), $response->get_error_message()), $response->get_error_data()); } if (200 != wp_remote_retrieve_response_code($response)) { fclose($handle); unlink($file_path); return new WP_Error('bp_media:http:response_code_not_200', sprintf(__('Unsuccessful request of url %s : response code %d - %s', "foxfire"), $url, wp_remote_retrieve_response_code($response), wp_remote_retrieve_response_message($response))); } fwrite($handle, wp_remote_retrieve_body($response)); fclose($handle); clearstatcache(); return $file_path; }