<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -23,16 +23,11 @@
 			$this-&gt;respondTo(&quot;filter_post&quot;, &quot;filter_post&quot;);
 		}
 		public function submit() {
-			$filename = &quot;&quot;;
 			if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0)
 				$filename = upload($_FILES['audio'], &quot;mp3&quot;);
-			elseif (!empty($_POST['from_url'])) {
-				$file = tempnam(sys_get_temp_dir(), &quot;chyrp&quot;);
-				file_put_contents($file, get_remote($_POST['from_url']));
-				$fake_file = array(&quot;name&quot; =&gt; basename(parse_url($_POST['from_url'], PHP_URL_PATH)),
-				                   &quot;tmp_name&quot; =&gt; $file);
-				$filename = upload($fake_file, &quot;mp3&quot;, &quot;&quot;, true);
-			} else
+			elseif (!empty($_POST['from_url']))
+				$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
+			else
 				error(__(&quot;Error&quot;), __(&quot;Couldn't upload audio file.&quot;));
 
 			$post = Post::add(array(&quot;filename&quot; =&gt; $filename,
@@ -46,6 +41,9 @@
 			if (isset($_FILES['audio']) and $_FILES['audio']['error'] == 0) {
 				$this-&gt;delete_file($post);
 				$filename = upload($_FILES['audio'], &quot;mp3&quot;);
+			} elseif (!empty($_POST['from_url'])) {
+				$this-&gt;delete_file($post);
+				$filename = upload_from_url($_POST['from_url'], &quot;mp3&quot;);
 			} else
 				$filename = $post-&gt;filename;
 </diff>
      <filename>feathers/audio/audio.php</filename>
    </modified>
    <modified>
      <diff>@@ -23,16 +23,11 @@
 			$this-&gt;respondTo(&quot;edit_post_options&quot;, &quot;alt_text_field&quot;);
 		}
 		public function submit() {
-			$filename = &quot;&quot;;
 			if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0)
 				$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
-			elseif (!empty($_POST['from_url'])) {
-				$file = tempnam(sys_get_temp_dir(), &quot;chyrp&quot;);
-				file_put_contents($file, get_remote($_POST['from_url']));
-				$fake_file = array(&quot;name&quot; =&gt; basename(parse_url($_POST['from_url'], PHP_URL_PATH)),
-				                   &quot;tmp_name&quot; =&gt; $file);
-				$filename = upload($fake_file, array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;), &quot;&quot;, true);
-			} else
+			elseif (!empty($_POST['from_url']))
+				$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+			else
 				error(__(&quot;Error&quot;), __(&quot;Couldn't upload photo.&quot;));
 
 			$post = Post::add(array(&quot;filename&quot; =&gt; $filename,
@@ -45,7 +40,10 @@
 		public function update() {
 			if (isset($_FILES['photo']) and $_FILES['photo']['error'] == 0) {
 				$this-&gt;delete_file($post);
-				$filename = upload($_FILES['photo']);
+				$filename = upload($_FILES['photo'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
+			} elseif (!empty($_POST['from_url'])) {
+				$this-&gt;delete_file($post);
+				$filename = upload_from_url($_POST['from_url'], array(&quot;jpg&quot;, &quot;jpeg&quot;, &quot;png&quot;, &quot;gif&quot;, &quot;tiff&quot;, &quot;bmp&quot;));
 			} else
 				$filename = $post-&gt;filename;
 </diff>
      <filename>feathers/photo/photo.php</filename>
    </modified>
    <modified>
      <diff>@@ -881,6 +881,7 @@
 	 *     $file - The $_FILES value.
 	 *     $extension - An array of valid extensions (case-insensitive).
 	 *     $path - A sub-folder in the uploads directory (optional).
+	 *     $put - Use copy() instead of move_uploaded_file()?
 	 *
 	 * Returns:
 	 *     $filename - The resulting filename from the upload.
@@ -932,6 +933,28 @@
 	}
 
 	/**
+	 * Function: upload_from_url
+	 * Copy a file from a specified URL to their upload directory.
+	 *
+	 * Parameters:
+	 *     $url - The URL to copy.
+	 *     $extension - An array of valid extensions (case-insensitive).
+	 *     $path - A sub-folder in the uploads directory (optional).
+	 *
+	 * See Also:
+	 *     &lt;upload&gt;
+	 */
+	function upload_from_url($url, $extension = null, $path = &quot;&quot;) {
+		$file = tempnam(sys_get_temp_dir(), &quot;chyrp&quot;);
+		file_put_contents($file, get_remote($url));
+
+		$fake_file = array(&quot;name&quot; =&gt; basename(parse_url($url, PHP_URL_PATH)),
+		                   &quot;tmp_name&quot; =&gt; $file);
+
+		return upload($fake_file, $extension, $path, true);
+	}
+
+	/**
 	 * Function: timer_start
 	 * Starts the timer.
 	 */</diff>
      <filename>includes/helpers.php</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c09a91241e56f9dd1c42940f91622499a820bf61</id>
    </parent>
  </parents>
  <author>
    <name>Alex Suraci</name>
    <email>i.am@toogeneric.com</email>
  </author>
  <url>http://github.com/vito/chyrp/commit/73c320260b0db0abf712fd8759d1d05859875f52</url>
  <id>73c320260b0db0abf712fd8759d1d05859875f52</id>
  <committed-date>2008-07-01T11:49:51-07:00</committed-date>
  <authored-date>2008-07-01T11:49:51-07:00</authored-date>
  <message>Added upload_from_url() function.</message>
  <tree>6dd4a549ddb0668edb370f1ba980100353e85b41</tree>
  <committer>
    <name>Alex Suraci</name>
    <email>i.am@toogeneric.com</email>
  </committer>
</commit>
