78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace dokuwiki\HTTP;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Adds DokuWiki specific configs to the HTTP client
 | 
						|
 *
 | 
						|
 * @author Andreas Goetz <cpuidle@gmx.de>
 | 
						|
 */
 | 
						|
class DokuHTTPClient extends HTTPClient {
 | 
						|
 | 
						|
    /**
 | 
						|
     * Constructor.
 | 
						|
     *
 | 
						|
     * @author Andreas Gohr <andi@splitbrain.org>
 | 
						|
     */
 | 
						|
    public function __construct(){
 | 
						|
        global $conf;
 | 
						|
 | 
						|
        // call parent constructor
 | 
						|
        parent::__construct();
 | 
						|
 | 
						|
        // set some values from the config
 | 
						|
        $this->proxy_host   = $conf['proxy']['host'];
 | 
						|
        $this->proxy_port   = $conf['proxy']['port'];
 | 
						|
        $this->proxy_user   = $conf['proxy']['user'];
 | 
						|
        $this->proxy_pass   = conf_decodeString($conf['proxy']['pass']);
 | 
						|
        $this->proxy_ssl    = $conf['proxy']['ssl'];
 | 
						|
        $this->proxy_except = $conf['proxy']['except'];
 | 
						|
 | 
						|
        // allow enabling debugging via URL parameter (if debugging allowed)
 | 
						|
        if($conf['allowdebug']) {
 | 
						|
            if(
 | 
						|
                isset($_REQUEST['httpdebug']) ||
 | 
						|
                (
 | 
						|
                    isset($_SERVER['HTTP_REFERER']) &&
 | 
						|
                    strpos($_SERVER['HTTP_REFERER'], 'httpdebug') !== false
 | 
						|
                )
 | 
						|
            ) {
 | 
						|
                $this->debug = true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * Wraps an event around the parent function
 | 
						|
     *
 | 
						|
     * @triggers HTTPCLIENT_REQUEST_SEND
 | 
						|
     * @author   Andreas Gohr <andi@splitbrain.org>
 | 
						|
     */
 | 
						|
    /**
 | 
						|
     * @param string $url
 | 
						|
     * @param string|array $data the post data either as array or raw data
 | 
						|
     * @param string $method
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function sendRequest($url,$data='',$method='GET'){
 | 
						|
        $httpdata = array('url'    => $url,
 | 
						|
            'data'   => $data,
 | 
						|
            'method' => $method);
 | 
						|
        $evt = new \Doku_Event('HTTPCLIENT_REQUEST_SEND',$httpdata);
 | 
						|
        if($evt->advise_before()){
 | 
						|
            $url    = $httpdata['url'];
 | 
						|
            $data   = $httpdata['data'];
 | 
						|
            $method = $httpdata['method'];
 | 
						|
        }
 | 
						|
        $evt->advise_after();
 | 
						|
        unset($evt);
 | 
						|
        return parent::sendRequest($url,$data,$method);
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 |