예제 #1
0
 /**
  * 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;
 }