diff --git a/e107_handlers/e_marketplace.php b/e107_handlers/e_marketplace.php
index ce6ead0aa..a7494bb49 100644
--- a/e107_handlers/e_marketplace.php
+++ b/e107_handlers/e_marketplace.php
@@ -17,24 +17,33 @@ class e_marketplace
* @var e_marketplace_adapter_abstract
*/
protected $adapter = null;
-
+ /**
+ * Adapter identifier
+ * @var string wsdl|xmlrpc
+ */
+ protected $_adapter_name = null;
+
+ /**
+ * Constructor
+ * @param string $force force adapter wsdl|xmlrpc, omit to switch to auto-detection
+ */
public function __construct($force = null)
{
if(null !== $force)
{
- $className = 'e_marketplace_adapter_'.$force;
- $this->adapter = new $className();
+ $this->_adapter_name = $force === 'wsdl' ? 'wsdl' : 'xmlrpc';
}
- elseif(!class_exists('SoapClient')) $this->adapter = new e_marketplace_adapter_xmlrpc();
+ elseif(!class_exists('SoapClient')) $this->_adapter_name = 'xmlrpc';
else
{
- $this->adapter = new e_marketplace_adapter_wsdl();
+ $this->_adapter_name = 'wsdl';
}
}
/**
* Set authorization key
+ * @deprecated subject of removal
*/
public function generateAuthKey($username, $password)
{
@@ -48,6 +57,7 @@ class e_marketplace
/**
* Set authorization key
+ * @deprecated subject of removal
*/
public function setAuthKey($authkey)
{
@@ -62,6 +72,7 @@ class e_marketplace
/**
* Make authorization key from user credentials
+ * @deprecated subject of removal
*/
public function makeAuthKey($username, $password = '', $plain = false)
{
@@ -74,6 +85,7 @@ class e_marketplace
/**
* Have the admin enter their e107.org login details in order to create the authorization key.
+ * @deprecated subject of removal
*/
public function renderLoginForm()
{
@@ -162,6 +174,11 @@ class e_marketplace
*/
public function adapter()
{
+ if(null === $this->adapter)
+ {
+ $className = 'e_marketplace_adapter_'.$this->_adapter_name;
+ $this->adapter = new $className();
+ }
return $this->adapter;
}
@@ -200,7 +217,6 @@ class e_marketplace
$this->adapter = null;
//echo "Adapter destroyed", PHP_EOL;
}
-
}
abstract class e_marketplace_adapter_abstract
@@ -209,22 +225,28 @@ abstract class e_marketplace_adapter_abstract
* e107.org download URL
* @var string
*/
- protected $downloadUrl = 'http://e107.org/request';
+ protected $downloadUrl = 'http://172.16.0.2/aptana3/e107_07/request';
/**
* e107.org service URL [adapter implementation required]
* @var string
*/
- protected $serviceUrl = null;
+ protected $serviceUrl = null;
/**
* Request method POST || GET [adapter implementation required]
* @var string
*/
- protected $requestMethod = null;
+ public $requestMethod = null;
+
+ /**
+ * @var eAuth
+ */
+ protected $_auth = null;
/**
* e107.org authorization key
+ * @deprecated subject of removal
* @var string
*/
protected $authKey = null;
@@ -233,20 +255,42 @@ abstract class e_marketplace_adapter_abstract
abstract public function call($method, $data, $apply);
abstract public function fetch($method, &$result);
+ /**
+ * Authorization object
+ * @return eAuth
+ */
+ public function auth()
+ {
+ if(null === $this->_auth)
+ {
+ $this->_auth = new eAuth;
+ $this->_auth->loadSysCredentials();
+ $this->_auth->requestMethod = $this->requestMethod;
+ }
+ return $this->_auth;
+ }
+
/**
* Set authorization key
+ * @deprecated subject of removal
*/
public function setAuthKey($authkey)
{
- $this->authKey = $authkey;
+ $this->authKey = $authkey;
return $this;
}
-
+ /**
+ * @deprecated subject of removal
+ */
public function hasAuthKey()
{
return ($this->authKey !== null) ? true : false;
}
+
+ /**
+ * @deprecated subject of removal
+ */
public function getAuthKey()
{
return $this->authKey;
@@ -406,119 +450,6 @@ abstract class e_marketplace_adapter_abstract
return ($buffer) ? true : false;
}
-
- public function testAuthData($method, $args, $toObject = true)
- {
- $clientKey = 'dpf43f3p2l4k3l03'; // (Client Identifier) Application key
- $clientSecretKey = 'kd94hf93k423kf44'; // (Client) application secret key
-
- // The client has previously registered with the server and obtained the client identifier dpf43f3p2l4k3l03 and client secret kd94hf93k423kf44.
- // It has executed the eAuth workflow and obtained an access token nnch734d00sl2jdk and token secret pfkkdhi9sl3r4s00
- $accessTokenKey = 'nnch734d00sl2jdk'; // Access Token
- $accessTokenSecretKey = 'pfkkdhi9sl3r4s00'; // Access Token secret key
-
- $date = gmdate('Y-m-d H:i:s');
- $timestamp = $this->gmtTime($date);
- $nonce = $this->crypt($this->random().$timestamp, $accessTokenSecretKey.$clientSecretKey); // create nonce
-
- $cryptMethod = $this->cryptMethod();
- $authData = array(
- 'eauth_consumer_key' => $clientKey, // Client Identifier
- 'eauth_token' => $accessTokenKey, // Access Token
- 'eauth_nonce' => $nonce,//'kllo9940pd9333jh' 'nonce' (number used once) string
- 'eauth_timestamp' => $timestamp, // timestamp
- 'eauth_signature_method'=> $cryptMethod, // encryption method
- 'eauth_version' => '1.0', // signature method
- );
-
- // current request parameters
- $args['action'] = $method;
-
- // signature data for building the signature
- $signatureData = $authData;
-
- // add request parameters to the signature array
- $signatureData['eauth_request_params'] = $args;
-
- // sort all
- $this->array_kmultisort($signatureData);
-
- // signature base string
- $signatureBaseString = $this->requestMethod.'&'.rawurlencode($this->serviceUrl).'&'.http_build_query($signatureData, false, '&');
- $secretKey = rawurlencode($clientSecretKey).'&'.rawurlencode($accessTokenSecretKey);
-
- // crypt it
- $signature = $this->crypt($signatureBaseString, $secretKey);
-
- //encode it
- $authData['eauth_signature'] = base64_encode($signature);
- if($toObject) return $this->toObject($authData);
-
- return $authData;
- }
-
- public function cryptMethod()
- {
- return function_exists('hash_hmac') ? 'HMAC-SHA1' : 'SHA1';
- }
-
- function random($bits = 256)
- {
- $bytes = ceil($bits / 8);
- $ret = '';
- for ($i = 0; $i < $bytes; $i++)
- {
- $ret .= chr(mt_rand(0, 255));
- }
- return $ret;
- }
-
- public function crypt($string, $secretKey)
- {
- $cMethod = $this->cryptMethod();
- // Append secret if it's sha1
- if($cMethod == 'SHA1')
- {
- return sha1($string.$secretKey);
- }
- // use secret key if HMAC-SHA1
- return hash_hmac('sha1', $string, $secretKey);
- }
-
- public function gmtTime($string)
- {
- $ret = false;
- // mask - Y-m-d H:i:s
- if(preg_match('#(.*?)-(.*?)-(.*?) (.*?):(.*?):(.*?)$#', $string, $matches))
- {
- $ret = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
- }
- return $ret;
- }
-
- public function array_kmultisort(&$array, $order = 'asc')
- {
- $func = $order == 'asc' ? 'ksort' : 'krsort';
- $func($array);
- foreach ($array as $key => $value)
- {
- if(is_array($value))
- {
- $this->array_kmultisort($value, $order);
- $array[$key] = $value;
- }
- }
- }
-
- public function toObject($array)
- {
- $obj = new stdClass;
- foreach ($array as $key => $value)
- {
- $obj->$key = $value;
- }
- return $obj;
- }
}
class e_marketplace_adapter_wsdl extends e_marketplace_adapter_abstract
@@ -527,13 +458,13 @@ class e_marketplace_adapter_wsdl extends e_marketplace_adapter_abstract
* e107.org WSDL URL
* @var string
*/
- protected $serviceUrl = 'http://e107.org/service?wsdl';
+ protected $serviceUrl = 'http://172.16.0.2/aptana3/e107_07/service?wsdl';
/**
* Request method POST || GET
* @var string
*/
- protected $requestMethod = 'POST';
+ public $requestMethod = 'POST';
/**
* Soap client instance
@@ -678,13 +609,13 @@ class e_marketplace_adapter_xmlrpc extends e_marketplace_adapter_abstract
* e107.org XML-rpc service
* @var xmlClass
*/
- protected $serviceUrl = 'http://e107.org/xservice';
+ protected $serviceUrl = 'http://172.16.0.2/aptana3/e107_07/xservice';
/**
* Request method POST || GET
* @var string
*/
- protected $requestMethod = 'GET';
+ public $requestMethod = 'GET';
protected $_forceArray = array();
protected $_forceNumericalArray = array();
@@ -889,3 +820,304 @@ class e_marketplace_adapter_xmlrpc extends e_marketplace_adapter_abstract
return e107::getXml(false);
}
}
+
+class eAuth
+{
+
+ /**
+ * e107.org manage client credentials (Consumer Key and Secret) URL
+ * @var string
+ */
+ protected $eauthConsumerUrl = 'http://172.16.0.2/aptana3/e107_07/eauth/client';
+
+ /**
+ * URL used to make temporary credential request (Request Token and Secret) to e107.org before the authorization phase
+ * @var string
+ */
+ protected $eauthRequestUrl = 'http://172.16.0.2/aptana3/e107_07/eauth/initialize';
+
+ /**
+ * URL used to redirect and authorize the resource owner (user) on e107.org using temporary (request) token
+ * @var string
+ */
+ protected $eauthAuthorizeUrl = 'http://172.16.0.2/aptana3/e107_07/eauth/authorize';
+
+ /**
+ * URL used to obtain token credentials (Access Token and Secret) from e107.org using temporary (request) token
+ * @var string
+ */
+ protected $eauthAccessUrl = 'http://172.16.0.2/aptana3/e107_07/eauth/token';
+
+ /**
+ * Public client key (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthConsumerKey = null;
+
+ /**
+ * Client shared secret (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthConsumerSecret = null;
+
+ /**
+ * Public temporary request token (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthRequestKey = null;
+
+ /**
+ * Temporary request shared secret (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthRequestSecret = null;
+
+ /**
+ * Public access token (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthAccessToken = null;
+
+ /**
+ * Access shared secret (generated and obtained from e107.org)
+ * @var string
+ */
+ public $eauthAccessSecret = null;
+
+ /**
+ * Request method POST || GET
+ * @var string
+ */
+ public $requestMethod = null;
+
+ public function isClient()
+ {
+ $this->loadSysCredentials();
+ return (!empty($this->eauthConsumerKey) && !empty($this->eauthConsumerSecret));
+ }
+
+ public function isInitialized()
+ {
+ $this->loadSysCredentials();
+ return ($this->isClient() && !empty($this->eauthRequestKey) && !empty($this->eauthRequestSecret));
+ }
+
+ public function hasAccess()
+ {
+ $this->loadSysCredentials();
+ return ($this->isClient() && !empty($this->eauthAccessToken) && !empty($this->eauthAccessSecret));
+ }
+
+ public function serviceAuthData($method, $args, $toObject = true)
+ {
+ // The client has previously registered with the server and obtained the client identifier dpf43f3p2l4k3l03 and client secret kd94hf93k423kf44.
+ // It has executed the eAuth workflow and obtained an access token nnch734d00sl2jdk and token secret pfkkdhi9sl3r4s00
+
+ $date = gmdate('Y-m-d H:i:s');
+ $timestamp = $this->gmtTime($date);
+ $nonce = $this->nonce($timestamp); // create nonce
+
+ $cryptMethod = $this->cryptMethod();
+ $authData = array(
+ 'eauth_consumer_key' => $this->eauthConsumerKey, // (Client Identifier) Application key
+ 'eauth_token' => $this->eauthAccessToken, // Access Token
+ 'eauth_nonce' => $nonce,//'kllo9940pd9333jh' 'nonce' (number used once) string
+ 'eauth_timestamp' => $timestamp, // timestamp
+ 'eauth_signature_method'=> $cryptMethod, // encryption method
+ 'eauth_version' => '1.0', // signature method
+ );
+
+ // current request parameters
+ $args['action'] = $method;
+
+ // signature data for building the signature
+ $signatureData = $authData;
+
+ // add request parameters to the signature array
+ $signatureData['eauth_request_params'] = $args;
+
+ // sort all
+ self::array_kmultisort($signatureData);
+
+ // signature base string
+ $signatureBaseString = $this->requestMethod.'&'.rawurlencode($this->serviceUrl).'&'.http_build_query($signatureData, false, '&');
+ $secretKey = rawurlencode($this->eauthConsumerSecret).'&'.rawurlencode($this->eauthAccessSecret);
+
+ // crypt it
+ $signature = $this->crypt($signatureBaseString, $secretKey);
+
+ //encode it
+ $authData['eauth_signature'] = base64_encode($signature);
+ if($toObject) return self::toObject($authData);
+
+ return $authData;
+ }
+
+
+ public static function toObject($array)
+ {
+ $obj = new stdClass;
+ foreach ($array as $key => $value)
+ {
+ $obj->$key = $value;
+ }
+ return $obj;
+ }
+
+ /**
+ * Load credentials stored in a system file
+ * @param boolean $force
+ * @return e_marketplace_adapter_abstract adapter instance
+ */
+ public function loadSysCredentials($force = false)
+ {
+ if($force || null === $this->eauthConsumerKey)
+ {
+ $data = e107::getArrayStorage()->load('eauth');
+ if(empty($data)) $data = array();
+ $this->eauthConsumerKey = varset($data['consumer_key'], '');
+ $this->eauthConsumerSecret = varset($data['consumer_secret'], '');
+ $this->eauthAccessToken = varset($data['access_token'], '');
+ $this->eauthAccessSecret = varset($data['access_secret'], '');
+ }
+ return $this;
+ }
+
+ public function storeSysCredentials($credentials = null)
+ {
+ if(null === $credentials)
+ {
+ $credentials = array(
+ 'consumer_key' => $this->eauthConsumerKey,
+ 'consumer_secret' => $this->eauthConsumerSecret,
+ 'access_token' => $this->eauthAccessToken,
+ 'access_secret' => $this->eauthAccessSecret,
+ );
+ }
+ if(!is_array($credentials)) return false;
+
+ foreach ($credentials as $key => $value)
+ {
+ switch ($key)
+ {
+ case 'consumer_key':
+ case 'consumer_secret':
+ case 'access_token':
+ case 'access_secret':
+ // OK
+ break;
+
+ default:
+ unset($credentials[$key]);
+ break;
+ }
+ }
+
+ return e107::getArrayStorage()->store($credentials, 'eauth');
+ }
+
+ /**
+ * Retrieve available system credentials or credential value
+ * @param string $key [optional]
+ * return mixed array of all credentials or string credential value
+ */
+ public function getCredentials($key = null)
+ {
+ $this->loadSysCredentials();
+
+ $credentials = array(
+ 'consumer_key' => $this->eauthConsumerKey,
+ 'consumer_secret' => $this->eauthConsumerSecret,
+ 'access_token' => $this->eauthAccessToken,
+ 'access_secret' => $this->eauthAccessSecret,
+ );
+ if(null !== $key) return varset($credentials[$key], null);
+ return $credentials;
+ }
+
+ public function toAuthHeader($params)
+ {
+ $first = true;
+ $realm = isset($params['realm']) ? $params['realm'] : null;
+ if($realm)
+ {
+ $out = 'Authorization: eAuth realm="'.rawurlencode($realm).'"';
+ $first = false;
+ }
+ else
+ $out = 'Authorization: eAuth';
+
+ $total = array();
+ foreach($params as $k => $v)
+ {
+ if(substr($k, 0, 5) != "eauth") continue;
+ if(is_array($v))
+ {
+ throw new Exception('Arrays not supported in headers', 200);
+ }
+ $out .= ($first) ? ' ' : ',';
+ $out .= rawurlencode($k).'="'.rawurlencode($v).'"';
+ $first = false;
+ }
+ return $out;
+ }
+
+
+ public function cryptMethod()
+ {
+ return function_exists('hash_hmac') ? 'HMAC-SHA1' : 'SHA1';
+ }
+
+ function random($bits = 256)
+ {
+ $bytes = ceil($bits / 8);
+ $ret = '';
+ for ($i = 0; $i < $bytes; $i++)
+ {
+ $ret .= chr(mt_rand(0, 255));
+ }
+ return $ret;
+ }
+
+ public function crypt($string, $secretKey)
+ {
+ $cMethod = $this->cryptMethod();
+ // Append secret if it's sha1
+ if($cMethod == 'SHA1')
+ {
+ return sha1($string.$secretKey);
+ }
+ // use secret key if HMAC-SHA1
+ return hash_hmac('sha1', $string, $secretKey);
+ }
+
+ public function nonce($timestamp)
+ {
+ return $this->crypt($this->random().$timestamp, $this->eauthAccessSecret.$this->eauthConsumerSecret);
+ }
+
+ public function gmtTime($string)
+ {
+ $ret = false;
+ // mask - Y-m-d H:i:s
+ if(preg_match('#(.*?)-(.*?)-(.*?) (.*?):(.*?):(.*?)$#', $string, $matches))
+ {
+ $ret = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
+ }
+ return $ret;
+ }
+
+ public static function array_kmultisort(&$array, $order = 'asc')
+ {
+ $func = $order == 'asc' ? 'ksort' : 'krsort';
+ $func($array);
+ foreach ($array as $key => $value)
+ {
+ if(is_array($value))
+ {
+ self::array_kmultisort($value, $order);
+ $array[$key] = $value;
+ }
+ }
+ }
+}
diff --git a/e107_handlers/file_class.php b/e107_handlers/file_class.php
index 19cbf03aa..95ee7fbe2 100644
--- a/e107_handlers/file_class.php
+++ b/e107_handlers/file_class.php
@@ -351,6 +351,142 @@ class e_file
return ($buffer) ? true : false;
}
+
+ /**
+ * FIXME add POST support
+ * Get Remote contents
+ * $options array:
+ * - 'timeout' (integer): timeout in seconds
+ * - 'post' (array|urlencoded string): POST data
+ * - 'header' (array) headers, example: array('Content-Type: text/xml', 'X-Custom-Header: SomeValue');
+ * @param string $address
+ * @param array $options [optional]
+ * @return string
+ */
+ function getRemoteContent($address, $options = array())
+ {
+ // Could do something like: if ($timeout <= 0) $timeout = $pref['get_remote_timeout']; here
+ $postData = varset($options['post'], null);
+ $timeout = (integer) vartrue($options['timeout'], 10);
+ $timeout = min($timeout, 120);
+ $timeout = max($timeout, 3);
+ $fileContents = '';
+ $this->error = '';
+ $this->errornum = null;
+
+ $mes = e107::getMessage();
+
+ $address = str_replace(array("\r", "\n", "\t"), '', $address); // May be paranoia, but streaky thought it might be a good idea
+ // ... and there shouldn't be unprintable characters in the URL anyway
+ $requireCurl = false;
+
+ if(vartrue($options['decode'], false)) $address = urldecode($address);
+
+ // Keep this in first position.
+ if (function_exists("curl_init")) // Preferred.
+ {
+ $cu = curl_init();
+ curl_setopt($cu, CURLOPT_URL, $address);
+ curl_setopt($cu, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($cu, CURLOPT_HEADER, 0);
+ curl_setopt($cu, CURLOPT_TIMEOUT, $timeout);
+ curl_setopt($cu, CURLOPT_SSL_VERIFYPEER, FALSE);
+ curl_setopt($cu, CURLOPT_REFERER, e_REQUEST_HTTP);
+ curl_setopt($cu, CURLOPT_FOLLOWLOCATION, 0);
+ curl_setopt($cu, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
+ curl_setopt($cu, CURLOPT_COOKIEFILE, e_SYSTEM.'cookies.txt');
+ curl_setopt($cu, CURLOPT_COOKIEJAR, e_SYSTEM.'cookies.txt');
+ if($postData !== null)
+ {
+ curl_setopt($cu, CURLOPT_POST, true);
+ // if array -> will encode the data as multipart/form-data, if URL-encoded string - application/x-www-form-urlencoded
+ curl_setopt($cu, CURLOPT_POSTFIELDS, $postData);
+ $requireCurl = true;
+ }
+ if(isset($options['header']) && is_array($options['header']))
+ {
+ curl_setopt($cu, CURLOPT_HTTPHEADER, $options['header']);
+ $requireCurl = true;
+ }
+
+ if(!file_exists(e_SYSTEM.'cookies.txt'))
+ {
+ file_put_contents(e_SYSTEM.'cookies.txt','');
+ }
+
+ $fileContents = curl_exec($cu);
+ if (curl_error($cu))
+ {
+ $this->errornum = curl_errno($cu);
+ $this->error = "Curl error: ".$this->errornum.", ".curl_error($cu);
+ return FALSE;
+ }
+ curl_close($cu);
+ return $fileContents;
+ }
+
+ // CURL is required, abort...
+ if($requireCurl == true) return false;
+
+ if (function_exists('file_get_contents') && ini_get('allow_url_fopen'))
+ {
+ $old_timeout = e107_ini_set('default_socket_timeout', $timeout);
+ $data = file_get_contents($address);
+
+ // $data = file_get_contents(htmlspecialchars($address)); // buggy - sometimes fails.
+ if ($old_timeout !== FALSE)
+ {
+ e107_ini_set('default_socket_timeout', $old_timeout);
+ }
+ if ($data !== FALSE)
+ {
+ $fileContents = $data;
+ return $data;
+ }
+ $this->error = "File_get_contents(XML) error"; // Fill in more info later
+ return FALSE;
+ }
+
+ if (ini_get("allow_url_fopen"))
+ {
+ $old_timeout = e107_ini_set('default_socket_timeout', $timeout);
+ $remote = @fopen($address, "r");
+ if (!$remote)
+ {
+ $this->error = "fopen: Unable to open remote XML file: ".$address;
+ return FALSE;
+ }
+ }
+ else
+ {
+ $old_timeout = $timeout;
+ $tmp = parse_url($address);
+ if (!$remote = fsockopen($tmp['host'], 80, $errno, $errstr, $timeout))
+ {
+ $this->error = "Sockets: Unable to open remote XML file: ".$address;
+ return FALSE;
+ }
+ else
+ {
+ socket_set_timeout($remote, $timeout);
+ fputs($remote, "GET ".urlencode($address)." HTTP/1.0\r\n\r\n");
+ }
+ }
+ $fileContents = "";
+ while (!feof($remote))
+ {
+ $fileContents .= fgets($remote, 4096);
+ }
+ fclose($remote);
+ if ($old_timeout != $timeout)
+ {
+ if ($old_timeout !== FALSE)
+ {
+ e107_ini_set('default_socket_timeout', $old_timeout);
+ }
+ }
+ return $fileContents;
+ }
/**
@@ -698,147 +834,8 @@ class e_file
}
}
}
-
- // Use e107.org login.
- public function setAuthKey($username,$password)
- {
- $now = gmdate('y-m-d H');
- $this->authKey = sha1($username.md5($password).$now);
-
- return $this;
- }
-
-
- private function getAuthKey()
- {
- return $this->authKey;
- }
-
-
- public function hasAuthKey()
- {
- return ($this->authKey != false) ? true : false;
- }
-
- /**
- * Download a Plugin or Theme to Temp, then test and move to plugin/theme folder and backup to system backup folder.
- * DEPRECATED - moved to e_marketplace
- * @param $remotefile URL
- * @param $type plugin or theme
- */
-/*
- public function download($remotefile, $type='theme')
- {
- $tp = e107::getParser();
-
- list($url,$qry) = explode("?",$remotefile);
- $remotefile = $url."?auth=".$this->getAuthKey()."&".$qry;
-
- $localfile = md5($remotefile.time()).".zip";
- $status = "Downloading...";
-
- // echo "";
- $result = $this->getRemoteFile($remotefile,$localfile);
-
- if(!file_exists(e_TEMP.$localfile))
- {
- $status = ADMIN_FALSE_ICON."
Download Manually";
-
- if(E107_DEBUG_LEVEL > 0)
- {
- $status .= 'local='.$localfile;
- //$status .= ($result) ? "Downloaded" : "Couldn't get Remote";
- }
-
- echo $status;
- exit;
- }
- else
- {
- $contents = file_get_contents(e_TEMP.$localfile);
- if(strlen($contents) < 400)
- {
- echo "";
- return;
- }
- }
-
-
-
- // chmod(e_PLUGIN,0777);
- chmod(e_TEMP.$localfile,0755);
-
- require_once(e_HANDLER."pclzip.lib.php");
-
- $archive = new PclZip(e_TEMP.$localfile);
- $unarc = ($fileList = $archive -> extract(PCLZIP_OPT_PATH, e_TEMP, PCLZIP_OPT_SET_CHMOD, 0755)); // Store in TEMP first.
- $dir = $this->getRootFolder($unarc);
- $destpath = ($type == 'theme') ? e_THEME : e_PLUGIN;
- $typeDiz = ucfirst($type);
-
-
-
- @copy(e_TEMP.$localfile,e_BACKUP.$dir.".zip"); // Make a Backup in the system folder.
-
- if($dir && is_dir($destpath.$dir))
- {
- $alert = $tp->toJS(ucfirst($type)." Already Installed".$destpath.$dir);
- echo "";
- echo "Already Installed";
- @unlink(e_TEMP.$localfile);
- exit;
- }
-
- if($dir == '')
- {
- echo "";
- @unlink(e_TEMP.$localfile);
- exit;
- }
-
- if(is_dir(e_TEMP.$dir))
- {
- $status = "Unzipping...";
- if(!rename(e_TEMP.$dir,$destpath.$dir))
- {
- $alert = $tp->toJS("Couldn't Move ".e_TEMP.$dir." to ".$destpath.$dir." Folder");
- echo "";
- @unlink(e_TEMP.$localfile);
- exit;
- }
-
- $alert = $tp->toJS("Download Complete!");
- echo "";
-
- // $dir = basename($unarc[0]['filename']);
- // $plugPath = preg_replace("/[^a-z0-9-\._]/", "-", strtolower($dir));
- $status = "Done"; // ADMIN_TRUE_ICON;
-
- }
- // elseif(already_a_directory
- else
- {
- // print_a($fileList);
- $status = ADMIN_FALSE_ICON."
Download Manually";
- if(E107_DEBUG_LEVEL > 0)
- {
- $status .= print_a($unarc, true);
- }
- //
- // $status = "There was a problem";
- //unlink(e_UPLOAD.$localfile);
- }
-
- // echo "";
- echo $status;
- @unlink(e_TEMP.$localfile);
-
- // echo "file=".$file;
- exit;
- } */
-
/**
diff --git a/e107_handlers/xml_class.php b/e107_handlers/xml_class.php
index 91d597b41..65f11f290 100644
--- a/e107_handlers/xml_class.php
+++ b/e107_handlers/xml_class.php
@@ -308,14 +308,23 @@ class xmlClass
}
/**
+ * DEPRECATED
* Get Remote file contents
* use setOptArrayTags above if you require a consistent array result by in 1 item or many.
+ * @deprecated use e_file::getRemoteContent() instead
* @param string $address
* @param integer $timeout [optional] seconds
* @return string
*/
function getRemoteFile($address, $timeout = 10, $postData=null)
{
+ $_file = e107::getFile();
+ $this->xmlFileContents = $_file->getRemoteContent($address, array('timeout' => $timeout, 'post' => $postData));
+ $this->error = $_file->error;
+
+ return $this->xmlFileContents;
+
+ // ------ MOVED TO FILE HANDLER ------ //
// Could do something like: if ($timeout <= 0) $timeout = $pref['get_remote_timeout']; here
$timeout = min($timeout, 120);
$timeout = max($timeout, 3);