%PDF- %PDF-
| Direktori : /home/lightco1/www/lightingrepublic.com.au/administrator/components/com_files/controllers/ |
| Current File : /home/lightco1/www/lightingrepublic.com.au/administrator/components/com_files/controllers/proxy.php |
<?php
/**
* @version $Id$
* @package Nooku_Components
* @subpackage Files
* @copyright Copyright (C) 2011 - 2012 Timble CVBA and Contributors. (http://www.timble.net).
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html>
* @link http://www.nooku.org
*/
/**
* Proxy Controller Class
*
* Used to perform cross origin HEAD request calls on resources to see if they exist, and if exists then also pass the Content-length header
*
* @author Stian Didriksen <http://nooku.assembla.com/profile/stiandidriksen>
* @package Nooku_Components
* @subpackage Files
*/
class ComFilesControllerProxy extends ComFilesControllerDefault
{
public function _actionGet(KCommandContext $context)
{
$data = array(
'url' => $this->_request->url,
'content-length' => false
);
if (!function_exists('curl_init')) {
$context->setError(new KControllerException('Curl library does not exist', KHttpResponse::SERVICE_UNAVAILABLE));
return;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $data['url']);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
//CURLOPT_NOBODY changes the request from GET to HEAD
curl_setopt($ch, CURLOPT_NOBODY, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
$context->setError(new KControllerException('Curl Error: '.curl_error($ch), KHttpResponse::SERVICE_UNAVAILABLE));
return;
}
$info = curl_getinfo($ch);
if (isset($info['http_code']) && $info['http_code'] != 200) {
$context->setError(new KControllerException($data['url'].' Not Found', $info['http_code']));
}
if (isset($info['download_content_length'])) {
$data['content-length'] = $info['download_content_length'];
}
curl_close($ch);
return json_encode($data);
}
}