--- /home/dan/moodle/moodle/lib/filelib.php	2007-12-27 11:04:19.000000000 +0000
+++ lib/filelib.php	2007-12-28 16:27:12.000000000 +0000
@@ -1,6 +1,4 @@
-<?php //$Id: filelib.php,v 1.50.2.3 2007/10/30 00:33:45 toyomoyo Exp $
-
-require_once($CFG->libdir.'/libcurlemu/libcurlemu.inc.php'); // might be moved to setup.php later
+<?php //$Id: filelib.php,v 1.50.2.3 2007-10-30 00:33:45 toyomoyo Exp $
 
 define('BYTESERVING_BOUNDARY', 's1k2o3d4a5k6s7'); //unique string constant
 
@@ -12,30 +10,61 @@
 function download_file_content($url) {
     global $CFG;
 
-    $ch = curl_init($url);
-    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-    curl_setopt($ch, CURLOPT_HEADER, false);
-    if (!empty($CFG->proxyhost)) {
-        // don't CONNECT for non-https connections
-        curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
+    if( function_exists('curl_init') ){
+        $ch = curl_init($url);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($ch, CURLOPT_HEADER, false);
+        if (!empty($CFG->proxyhost)) {
+            // don't CONNECT for non-https connections
+            curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
+
+            if (empty($CFG->proxyport)) {
+                curl_setopt($ch, CURLOPT_PROXY, $CFG->proxyhost);
+            } else {
+                curl_setopt($ch, CURLOPT_PROXY, $CFG->proxyhost.':'.$CFG->proxyport);
+            }
+            if(!empty($CFG->proxyuser) and !empty($CFG->proxypassword)) {
+                curl_setopt($ch, CURLOPT_PROXYUSERPWD, $CFG->proxyuser.':'.$CFG->proxypassword);
+            }
+        }
+        $result = curl_exec($ch);
+
+        if (curl_errno($ch)) {
+            $curlerror = "CURL request for \"$url\" failed with: ". curl_error($ch);
+            debugging($curlerror, DEBUG_DEVELOPER);
+        }
+        curl_close($ch);
+    }else{
+        require_once($CFG->libdir.'/snoopy/Snoopy.class.inc');
+
+        $snoopy = new Snoopy;
 
-        if (empty($CFG->proxyport)) {
-            curl_setopt($ch, CURLOPT_PROXY, $CFG->proxyhost);
-        } else {
-            curl_setopt($ch, CURLOPT_PROXY, $CFG->proxyhost.':'.$CFG->proxyport);
+        if(!empty($CFG->proxyhost)){
+            $snoopy->proxy_host = $CFG->proxyhost;
+
+            if(!empty($CFG->proxyport)){
+                $snoopy->proxy_port = $CFG->proxyport;
+            }
         }
-        if(!empty($CFG->proxyuser) and !empty($CFG->proxypassword)) {
-            curl_setopt($ch, CURLOPT_PROXYUSERPWD, $CFG->proxyuser.':'.$CFG->proxypassword);
+
+        if(!empty($CFG->proxyuser) and !empty($CFG->proxypass)){
+            $snoopy->proxy_user = $CFG->proxyuser;
+            $snoopy->proxy_pass = $CFG->proxypass;
         }
-    }
-    $result = curl_exec($ch);
 
-    if (curl_errno($ch)) {
-        $curlerror = "CURL request for \"$url\" failed with: ". curl_error($ch);
-        debugging($curlerror, DEBUG_DEVELOPER);
+        if(!empty($CFG->proxypass)){
+            $snoopy->proxy_pass = $CFG->proxypass;
+        }
+
+        if ($snoopy->fetch($url)) {
+            $result = $snoopy->results;
+        }else{
+            $snoopyerror = "Snoopy request for \"$url\" failed with: ". $snoopy->error;
+            debugging($snoopyerror, DEBUG_DEVELOPER);
+            return false;
+        }
     }
 
-    curl_close($ch);
     return $result;
 }
 
