1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114:
<?php
class elFinderEditorOnlineConvert extends elFinderEditor
{
protected $allowed = array('init', 'api');
public function enabled()
{
return defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && (!defined('ELFINDER_DISABLE_ONLINE_CONVERT') || !ELFINDER_DISABLE_ONLINE_CONVERT);
}
public function init()
{
return array('api' => defined('ELFINDER_ONLINE_CONVERT_APIKEY') && ELFINDER_ONLINE_CONVERT_APIKEY && function_exists('curl_init'));
}
public function api()
{
$endpoint = 'https://api2.online-convert.com/jobs';
$category = $this->argValue('category');
$convert = $this->argValue('convert');
$options = $this->argValue('options');
$source = $this->argValue('source');
$filename = $this->argValue('filename');
$mime = $this->argValue('mime');
$jobid = $this->argValue('jobid');
$string_method = '';
$options = array();
$nonApi = array('android', 'blackberry', 'dpg', 'ipad', 'iphone', 'ipod', 'nintendo-3ds', 'nintendo-ds', 'ps3', 'psp', 'wii', 'xbox');
if (in_array($convert, $nonApi)) {
return array('apires' => array());
}
$ch = null;
if ($convert && $source) {
$request = array(
'input' => array(array(
'type' => 'remote',
'source' => $source
)),
'conversion' => array(array(
'target' => $convert
))
);
if ($filename !== '') {
$request['input'][0]['filename'] = $filename;
}
if ($mime !== '') {
$request['input'][0]['content_type'] = $mime;
}
if ($category) {
$request['conversion'][0]['category'] = $category;
}
if ($options && $options !== 'null') {
$options = json_decode($options, true);
}
if (!is_array($options)) {
$options = array();
}
if ($options) {
$request['conversion'][0]['options'] = $options;
}
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($request));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
'Content-Type: application/json',
'cache-control: no-cache'
));
} else if ($jobid) {
$ch = curl_init($endpoint . '/' . $jobid);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'X-Oc-Api-Key: ' . ELFINDER_ONLINE_CONVERT_APIKEY,
'cache-control: no-cache'
));
}
if ($ch) {
$response = curl_exec($ch);
$info = curl_getinfo($ch);
$error = curl_error($ch);
curl_close($ch);
if (!empty($error)) {
$res = array('error' => $error);
} else {
$data = json_decode($response, true);
if (isset($data['status']) && isset($data['status']['code']) && $data['status']['code'] === 'completed') {
$session = $this->elfinder->getSession();
$urlContentSaveIds = $session->get('urlContentSaveIds', array());
$urlContentSaveIds['OnlineConvert-' . $data['id']] = true;
$session->set('urlContentSaveIds', $urlContentSaveIds);
}
$res = array('apires' => $data);
}
return $res;
} else {
return array('error' => array('errCmdParams', 'editor.OnlineConvert.api'));
}
}
}