xref: /dokuwiki/lib/exe/mediamanager.php (revision ea8f310e8130739d45b5799e3ab59470d6415d28)
1<?php
2    if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
3    define('DOKU_MEDIAMANAGER',1);
4
5    // for multi uploader:
6    @ini_set('session.use_only_cookies',0);
7
8    require_once(DOKU_INC.'inc/init.php');
9
10    global $INPUT;
11    global $lang;
12    // handle passed message
13    if($INPUT->str('msg1')) msg(hsc($INPUT->str('msg1')),1);
14    if($INPUT->str('err')) msg(hsc($INPUT->str('err')),-1);
15
16    global $DEL;
17    // get namespace to display (either direct or from deletion order)
18    if($INPUT->str('delete')){
19        $DEL = cleanID($INPUT->str('delete'));
20        $IMG = $DEL;
21        $NS  = getNS($DEL);
22    }elseif($INPUT->str('edit')){
23        $IMG = cleanID($INPUT->str('edit'));
24        $NS  = getNS($IMG);
25    }elseif($INPUT->str('img')){
26        $IMG = cleanID($INPUT->str('img'));
27        $NS  = getNS($IMG);
28    }else{
29        $NS = cleanID($INPUT->str('ns'));
30        $IMG = null;
31    }
32
33    global $INFO, $JSINFO;
34    $INFO = !empty($INFO) ? array_merge($INFO, mediainfo()) : mediainfo();
35    $JSINFO = array('id' => '', 'namespace' => '');
36    $AUTH = $INFO['perm'];    // shortcut for historical reasons
37
38    $tmp = array();
39    trigger_event('MEDIAMANAGER_STARTED', $tmp);
40    session_write_close();  //close session
41
42    // do not display the manager if user does not have read access
43    if($AUTH < AUTH_READ && !$fullscreen) {
44        http_status(403);
45        die($lang['accessdenied']);
46    }
47
48    // handle flash upload
49    if(isset($_FILES['Filedata'])){
50        $_FILES['upload'] =& $_FILES['Filedata'];
51        $JUMPTO = media_upload($NS,$AUTH);
52        if($JUMPTO == false){
53            http_status(400);
54            echo 'Upload failed';
55        }
56        echo 'ok';
57        exit;
58    }
59
60    // give info on PHP caught upload errors
61    if(!empty($_FILES['upload']['error'])){
62        switch($_FILES['upload']['error']){
63            case 1:
64            case 2:
65                msg(sprintf($lang['uploadsize'],
66                    filesize_h(php_to_byte(ini_get('upload_max_filesize')))),-1);
67                break;
68            default:
69                msg($lang['uploadfail'].' ('.$_FILES['upload']['error'].')',-1);
70        }
71        unset($_FILES['upload']);
72    }
73
74    // handle upload
75    if(!empty($_FILES['upload']['tmp_name'])){
76        $JUMPTO = media_upload($NS,$AUTH);
77        if($JUMPTO) $NS = getNS($JUMPTO);
78    }
79
80    // handle meta saving
81    if($IMG && @array_key_exists('save', $INPUT->arr('do'))){
82        $JUMPTO = media_metasave($IMG,$AUTH,$INPUT->arr('meta'));
83    }
84
85    if($IMG && ($INPUT->str('mediado') == 'save' || @array_key_exists('save', $INPUT->arr('mediado')))) {
86        $JUMPTO = media_metasave($IMG,$AUTH,$INPUT->arr('meta'));
87    }
88
89    if ($INPUT->int('rev') && $conf['mediarevisions']) $REV = $INPUT->int('rev');
90
91    if($INPUT->str('mediado') == 'restore' && $conf['mediarevisions']){
92        $JUMPTO = media_restore($INPUT->str('image'), $REV, $AUTH);
93    }
94
95    // handle deletion
96    if($DEL) {
97        $res = 0;
98        if(checkSecurityToken()) {
99            $res = media_delete($DEL,$AUTH);
100        }
101        if ($res & DOKU_MEDIA_DELETED) {
102            $msg = sprintf($lang['deletesucc'], noNS($DEL));
103            if ($res & DOKU_MEDIA_EMPTY_NS && !$fullscreen) {
104                // current namespace was removed. redirecting to root ns passing msg along
105                send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
106                        rawurlencode($msg).'&edid='.$INPUT->str('edid'));
107            }
108            msg($msg,1);
109        } elseif ($res & DOKU_MEDIA_INUSE) {
110            if(!$conf['refshow']) {
111                msg(sprintf($lang['mediainuse'],noNS($DEL)),0);
112            }
113        } else {
114            msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
115        }
116    }
117    // finished - start output
118
119    if (!$fullscreen) {
120        header('Content-Type: text/html; charset=utf-8');
121        include(template('mediamanager.php'));
122    }
123
124/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
125