This repository has been archived by the owner on Nov 18, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjbx_multiple_image_upload.php
412 lines (350 loc) · 50 KB
/
jbx_multiple_image_upload.php
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
<?php
/**
* Multiple Image Upload Plugin
* @author Jonas Bach <[email protected]>
*/
class jbx_MIU{
/**
* Stores an instance
* @var jbx_MIU
*/
protected static $instance;
/**
* Slug of this plugin
* @var string
*/
protected static $slug = 'jbx_multiple_image_upload';
/**
* Plugin prefix
* @var string
*/
protected static $prefix = 'jbx_';
/**
* All available preferences for this plugin
* @var array
*/
protected static $preferences = array(
//'importinfo'=> array('label'=>'Import additional info', 'descr'=>'Import meta info into caption.', 'type'=>2, 'default'=>'none'),
);
/**
* external assets
* @var array
*/
protected static $assets = array(
'jquery.uploadify.min.js' => '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',
'uploadify.swf' => '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',
'jbx_multiple_image_upload.js' => 'eJyNV0tv4zYQPtu/gnUDUEoUpdtbkzgFmuyhQPfQZnsqioCWKJuJTKkkZSdd+L93hkO9/EiTg8PHzDfDeSsqGp05VenoLGFbpfNqm7C8ypq11C5hz4vXp40wSixKaRPW6FwWSss8Zt+mE1VE7q2WVTEmY/P5nPGOlMdAOjHSNUbfTCe76QQo2dlamJemZnN2FvHbXG1YVgpr5zOE2hpR19LM7m5XP95xdjHGT60zSi9t2tRlJfKndVM6VZcS6PjtFXDclmIhy3cYM+GenHLEwm6tLGXmhgoAgVxW5g00uKJbWBAqgQ+Jtdx2DF712R0/KdlIoPQsXoELEK903TiGlpzPnHx1s1PgM3bVq7FnsmCL3nJD1EKVcsa0WId1oJ4dApAIwL67XTTOVTog0GbEYJvFWjlWN4tS2dU7bw6qBbwL8BEtP+ZdC5uhb71yPL6ZTidXV0zkOQvmUdJSaMEeYhDoqxoDm21E2cAT0Jd0crd30zvlQ57zTwhIHCL6LJUiW0Vjtl6phHUpphJUzueDV/LiUEuQD1cp+grkeH1wH6J1LHgXo3RKpBRyLY94OoxeHqcrty4jlIWkZB4jIMnXv+Zgok6xQYoyPggn9E70RbhVWpRVZWhJAFHMztlP/i9G8B16BPGVVu5Pz66KtwMhPvedMEvpfO67lfK60QUk1rwtDWlWVlpG3tPoaqWtNI7RJRwBcUpnv8iiMjIKsMTg4UKIzhF4aCA6573ccfYcMozvDxhPMYADhHMm4irnSWf4KO75wTWHzL3/OrpQBk5reFCEDpnfZxrQUxvw7qFldyWNqQwm119/t26xKyC9YiuVS4bJ0eKhhzBywfE8Wwm9lDzZiwVsIJ4GYh/CybeNPs2ob3Qy/HrfDmlmbcRzZetSvAE+X5RV9kJPmexkaWWHgQoex8CbiFi6S68Sb4HgZzeIQwippg1wfCZt0u4s8kK53RZ8Mrneqyc1pBBUlW2ReCJigpg6QUj3RCsaV3nEQsDL6Awif/0gnOCMXTN6LH9CIFe9SM33Qf1pMiBrIIEOqPDQP5xkULn+Cq3pgLKtjgtTbTuVoMM8qn/lbwqTbJ9jdNszfIU28yBtdlKCWoslFNMRw+dXZ4GBn6dLVdyw8/S5XuK/Wi/5UPV77FpIqMWmVPolXBq5rjbyvlrD8OBgUBkZttKPvvFzsGsXtig4hGUoLinGZoieXctJ5e8zJgvf404oh+6rvF1+scuwevRPDfiUamnd2BXF02SC/ACHKHSwtsvrHsSf7Y6q8thkmfQm2FMmh9AJAiEZcce+wzT81GYfRryXQLu+gHzPLxAiVTkUuTz3Jo54lwOXnikk0Cm+UIp6ptpUSwOKXi4E8FJ2b1XuVjzhn+rXj8HhK9rWx9klwybm3xmYj1j20LRkW2SjfbCrrwW9dX9vZNMF0NC6/+BFGylURNOqKCK+8L2q0b5iQKS3TwLrB71KqZduxe7YD60LjkzInpaJErrfpa955CScF46nD4HjAEHz017rpGBu39gXzknQHUQIfFhqJJTaTEb8Z7mBL4S5T0s+Ms6oWlpoym25nPZZg52dZ6WCYj3oCsFiMq2NR3+QhYDhPqTXfvM5An+kFnMrnUMTYHvoqmXCvvGu812zvgsB0agrXrNRS4hDHByRE1o+AJzTeOoVzGE2dGoDcIxqkZ0Oiseg9RxBhL6GTgRIZyCaOsxgHSayDPi1E/g5UuGgPB2Gmz4SbQctuJ36Tgy9ACu3wmjYUV3xyu66gQ+0gdkVxpo/pMihGZ5FPb5vR2d7czHNaDammXk0K8ZhpN3F0TMklnn73w/S+OY/YyelwQ==',
'jbx_multiple_image_upload.css' => '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'
);
/**
* Returns an instance
* @return jbx_MIU instance
*/
static function get_instance(){
if ( null == self::$instance ) {
self::$instance = new jbx_MIU();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct(){
if(@txpinterface === 'admin'){
add_privs(self::$slug, '1,2,3,4,5,6');
//add_privs('plugin_prefs.'.self::$slug, '1');
register_callback(array($this, 'handle_request'), self::$slug, '', 1);
register_callback(array($this, 'inject_assets'), 'admin_side', 'head_end');
//register_callback(array($this, 'render_prefs'), 'plugin_prefs.'.self::$slug);
register_callback(array($this, 'install'), 'plugin_lifecycle.'.self::$slug, 'installed');
//register_callback(array($this, 'uninstall'), 'plugin_lifecycle.'.self::$slug, 'deleted');
}
register_callback(array($this, 'handle_public'), 'textpattern');
}
/**
* Called on plugin installation
*/
public function install(){
$token = uniqid(get_pref('blog_uid'), true);
set_pref($this->prefix('token'), $token, self::$slug, 2);
}
/**
* Called on plugin deletion
*/
public function uninstall(){
}
/**
* Called on public side
*/
public function handle_public(){
if (gps(self::$slug)) {
// check for token
if (gps('_jbx_token') != get_pref($this->prefix('token'))) {
txp_die('', 403);
}
$this->handle_upload();
}
}
/**
* Inject scripts/styles in <head>
*/
public function inject_assets(){
global $event;
if($event === 'image'){
echo '<link type="text/css" href="?event='.self::$slug.'&step=css" rel="stylesheet" />';
echo '<script type="text/javascript" src="?event='.self::$slug.'&step=js"></script>';
}
}
/**
* Entry point for requests
* @param string $event the event being called
* @param string $request the step being called
*/
public function handle_request($event, $request){
$requests = array(
'js' => false,
'css' => false,
'swf' => false
);
if (!$request || !bouncer($request, $requests)) {
return;
}
switch ($request) {
default:
$this->{'render_'.$request}();
break;
}
}
public function handle_upload(){
// todo: handle meta
$meta = array('category' => '', 'caption' => '', 'alt' => '');
// category
$meta['category'] = $this->get_category(gps('category'), gps('new_category'));
// insert image, create thumbnail
$msg = $this->create_image($_FILES['Filedata'], $meta);
if(is_array($msg)){
// success
die('1');
}else{
// error
die($msg);
}
}
/**
* Render JS assets
* @todo: use render_asset
*/
public function render_js(){
global $file_max_upload_size, $siteurl, $txp_user;
$script = '';
// pass variables to JS
$script_variables = array(
'slug' => self::$slug,
'paths' => array(
'swf' => '?event='.self::$slug.'&step=swf',
'upload' => $siteurl.'/?'.self::$slug.'=upload'
),
'fileSizeLimit' => $file_max_upload_size,
'targets' => '.upload-form', // todo: make hackable by callback
'token' => get_pref($this->prefix('token')),
'user' => $txp_user,
'categories' => getTree('root', 'image'),
'strings' => array(
'closewarning' => gTxt('Upload in progress. Are you sure you want to leave the page anyway?'),
'errors' => gTxt('<strong>Some errors were encountered.</strong> Check the errors above, then <a href="?event=image">reload</a> the page to see your successfully imported images.'),
'create_new' => gTxt('Create new…'),
'create_new_title' => gTxt('New category name'),
'images' => gTxt('Image files'),
'upload_multiple' => gTxt('Upload Multiple Images'),
'upload_single' => gTxt('Upload Single Image'),
'upload_button' => gTxt('Upload'),
'cat_title' => gTxt('Assign category'),
'browse' => gTxt('Select files…')
)
);
$script .= $this->get_asset('jquery.uploadify.min.js');
$script .= 'var jbx_variables = '.json_encode($script_variables).';';
$script .= $this->get_asset('jbx_multiple_image_upload.js');
send_script_response($script);
die();
}
/**
* Render swf
*/
public function render_swf(){
$this->render_asset('uploadify.swf', 'application/x-shockwave-flash');
}
/**
* Render stylesheets
*/
public function render_css(){
$this->render_asset('jbx_multiple_image_upload.css', 'text/css');
}
/**
* Generic asset renderer
* @param string $file file handle
* @param string $mime mimetype
*/
public function render_asset($file, $mime = 'text/plain'){
$file = $this->get_asset($file);
ob_clean();
header('Content-Type: '.$mime.'; charset=utf-8');
txp_status_header('200 OK');
echo $file;
die();
}
/**
* Render options page
* @param string $event the event being called
* @param string $step the step being called
*/
public function render_prefs($event, $step){
if($step === 'update'){
$this->update_prefs();
}
pageTop(gTxt('Multiple Image Upload'));
// todo: show preflight/sanity errors if any
// Generate Preferences Table
$out = hed(gTxt('Multiple Image Upload - Preferences'), 1);
$out .= startTable($this->prefix('preferences'), 'center', 5);
foreach (self::$preferences as $key => $pref) {
$out .= $this->render_pref($key, $pref);
}
// render save button
$out .= tr(tdcs(eInput('plugin_prefs.'.self::$slug).sInput('update').fInput('submit', 'save', gTxt('save_button'), 'publish'), 3, '', 'nolin'));
$out .= endtable();
echo form($out);
}
/**
* Render single preference row
* @param array $pref preference array
* @return string <tr> containing the preference
*/
private function render_pref($id, $pref){
$value = $this->get_pref($id);
$id = $this->prefix($id);
// render label
$out = fLabelCell(gTxt($pref['label']), '', $id);
// render field
switch($pref['type']){
case 2:
$out .= td(selectInput($id, array(gTxt('None') => '', 'EXIF'=>'exif', 'IPTC'=>'iptc'), $value));
break;
case 1:
$out .= td(yesnoRadio($id, $value));
break;
default:
$out .= fInputCell($id, $value, '', 20, '', $id);
break;
}
// render help
$out .= td(gTxt($pref['descr']));
// render save
return tr($out);
}
/**
* Update preferences from submitted form
*/
private function update_prefs(){
foreach (self::$preferences as $key => $pref) {
$this->set_pref($key, gps($this->prefix($key)));
}
txp_die('', '302', '?event=plugin_prefs.'.self::$slug);
}
/**
* Get prefixed string
* @param string $value unprefixed string
* @return string prefixed string
*/
private function prefix($value = ''){
return self::$prefix.$value;
}
/**
* Get preference from DB
* @param string $id field to get
* @return mixed stored preference
*/
private function get_pref($id){
return get_pref($this->prefix($id), self::$preferences[$id]['default']);
}
/**
* Set preference (update/insert)
* @param string $id unprefixed key of preference
* @param string $val value to save
*/
private function set_pref($id, $val = '', $default = ''){
$default = ($default === '')? self::$preferences[$id]['default'] : $default;
$val = trim($val);
$val = ($val === '') ? $default : $val;
return set_pref($this->prefix($id), $val, self::$slug, 2);
}
/**
* Unzip and decode asset from gzipped, base64 string
* @param string $file file handle
* @return string file content
*/
private function get_asset($file){
if(array_key_exists($file, self::$assets)){
return gzuncompress(base64_decode(self::$assets[$file]));
}
return '';
}
/**
* Get valid category
* @param string $category selected category (name)
* @param string $new_category Title of new category (when $category === 'create_new')
* @return string name of valid category
*/
private function get_category($category, $new_category){
$all_image_cats = getTree('root', 'image');
$categories = array('');
foreach ($all_image_cats as $row) {
$categories[] = $row['name'];
}
if($category === 'create_new' && !empty($new_category)){
// create a category
return $this->create_category($new_category);
}else if(in_array($category, $categories)){
// existing category
return $category;
}
return '';
}
/**
* Insert Image and create thumbnail
* @param array $file $_FILES['Filedata']
* @param array $meta Meta data for image
* @return mixed image dat (array) on success, error message (string) on failure
*/
private function create_image($file, $meta = array('category' => '', 'caption' => '', 'alt' => '')){
global $path_to_site, $img_dir, $txp_user;
$txp_user = empty($txp_user) ? gps('_jbx_user') : $txp_user;
$event = ''; // satisfies txp_image use of $event global
include_once txpath . '/include/txp_image.php';
return image_data($file, $meta);
}
/**
* Create category
* @param string $title The title used for the category
* @return string name field of the created category
*/
private function create_category($title){
$name = strtolower(sanitizeForUrl($title));
if (!$name){
return '';
}
$exists = safe_field('name', 'txp_category', "name = '".doSlash($name)."' and type = 'image'");
if ($exists){
return $name;
}
$q = safe_insert('txp_category', "name = '".doSlash($name)."', title = '".doSlash($title)."', type = 'image', parent = 'root'");
if ($q){
rebuild_tree_full('image');
return $name;
}
return '';
}
}
// Initialize plugin
jbx_MIU::get_instance();
?>