From 5035a8b486637686dded64dfbe81d975c4649bc9 Mon Sep 17 00:00:00 2001 From: mjollnir_ Date: Sat, 9 Aug 2008 13:35:33 +0000 Subject: [PATCH] MDL-15991 - allow curl library to POST files by integrating with stored_file object. --- lib/file/stored_file.php | 10 ++++++++++ lib/filelib.php | 11 ++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/file/stored_file.php b/lib/file/stored_file.php index bbc0dfb856..d42061286b 100644 --- a/lib/file/stored_file.php +++ b/lib/file/stored_file.php @@ -49,6 +49,16 @@ class stored_file { return "$filedir/$l1/$l2/$l3/$contenthash"; } + /** + * adds this file path to a curl request (POST only) + * + * @param curl $curlrequest the curl request object + * @param string $key what key to use in the POST request + */ + public function add_to_curl_request(&$curlrequest, $key) { + $curlrequest->_tmp_file_post_params[$key] = '@' . $this->get_content_file_location(); + } + /** * Returns file handle - read only mode, no writing allowed into pool files! * @return file handle diff --git a/lib/filelib.php b/lib/filelib.php index 10d2684d8a..c90b7fc344 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -1635,7 +1635,16 @@ class curl { */ public function post($url, $params = array(), $options = array()){ $options['CURLOPT_POST'] = 1; - $options['CURLOPT_POSTFIELDS'] = $params; + $this->_tmp_file_post_params = array(); + foreach ($params as $key => $value) { + if ($value instanceof stored_file) { + $value->add_to_curl_request($this, $key); + } else { + $this->_tmp_file_post_params[$key] = $value; + } + } + $options['CURLOPT_POSTFIELDS'] = $this->_tmp_file_post_params; + unset($this->_tmp_file_post_params); return $this->request($url, $options); } -- 2.39.5