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
|
<?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() { // return array('apires' => array('message' => 'Currently disabled for developping...')); $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(); // Currently these converts are make error with API call. I don't know why. $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') { /** @var elFinderSession $session */ $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')); } } }
|