xref: /dokuwiki/lib/exe/mediamanager.php (revision bf413a4e50ea09a0345533c5fb1d07e963bd6368)
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    trigger_event('MEDIAMANAGER_STARTED',$tmp=array());
11    session_write_close();  //close session
12
13    // handle passed message
14    if($_REQUEST['msg1']) msg(hsc($_REQUEST['msg1']),1);
15    if($_REQUEST['err']) msg(hsc($_REQUEST['err']),-1);
16
17
18    // get namespace to display (either direct or from deletion order)
19    if($_REQUEST['delete']){
20        $DEL = cleanID($_REQUEST['delete']);
21        $IMG = $DEL;
22        $NS  = getNS($DEL);
23    }elseif($_REQUEST['edit']){
24        $IMG = cleanID($_REQUEST['edit']);
25        $NS  = getNS($IMG);
26    }elseif($_REQUEST['img']){
27        $IMG = cleanID($_REQUEST['img']);
28        $NS  = getNS($IMG);
29    }else{
30        $NS = $_REQUEST['ns'];
31        $NS = cleanID($NS);
32    }
33
34    // check auth
35    $AUTH = auth_quickaclcheck("$NS:*");
36
37    // do not display the manager if user does not have read access
38    if($AUTH < AUTH_READ) {
39        header('HTTP/1.0 403 Forbidden');
40        die($lang['accessdenied']);
41    }
42
43    // create the given namespace (just for beautification)
44    if($AUTH >= AUTH_UPLOAD) { io_createNamespace("$NS:xxx", 'media'); }
45
46    // handle flash upload
47    if(isset($_FILES['Filedata'])){
48        $_FILES['upload'] =& $_FILES['Filedata'];
49        $JUMPTO = media_upload($NS,$AUTH);
50        if($JUMPTO == false){
51            header("HTTP/1.0 400 Bad Request");
52            echo 'Upload failed';
53        }
54        echo 'ok';
55        exit;
56    }
57
58    // give info on PHP catched upload errors
59    if($_FILES['upload']['error']){
60        switch($_FILES['upload']['error']){
61            case 1:
62            case 2:
63                msg(sprintf($lang['uploadsize'],
64                    filesize_h(php_to_byte(ini_get('upload_max_filesize')))),-1);
65                break;
66            default:
67                msg($lang['uploadfail'].' ('.$_FILES['upload']['error'].')',-1);
68        }
69        unset($_FILES['upload']);
70    }
71
72    // handle upload
73    if($_FILES['upload']['tmp_name']){
74        $JUMPTO = media_upload($NS,$AUTH);
75        if($JUMPTO) $NS = getNS($JUMPTO);
76    }
77
78    // handle meta saving
79    if($IMG && $_REQUEST['do']['save']){
80        $JUMPTO = media_metasave($IMG,$AUTH,$_REQUEST['meta']);
81    }
82
83    // handle deletion
84    if($DEL) {
85        $res = 0;
86        if(checkSecurityToken()) {
87            $res = media_delete($DEL,$AUTH);
88        }
89        if ($res & DOKU_MEDIA_DELETED) {
90            $msg = sprintf($lang['deletesucc'], noNS($DEL));
91            if ($res & DOKU_MEDIA_EMPTY_NS) {
92                // current namespace was removed. redirecting to root ns passing msg along
93                send_redirect(DOKU_URL.'lib/exe/mediamanager.php?msg1='.
94                        rawurlencode($msg));
95            }
96            msg($msg,1);
97        } elseif ($res & DOKU_MEDIA_INUSE) {
98            if(!$conf['refshow']) {
99                msg(sprintf($lang['mediainuse'],noNS($DEL)),0);
100            }
101        } else {
102            msg(sprintf($lang['deletefail'],noNS($DEL)),-1);
103        }
104    }
105
106    // finished - start output
107    header('Content-Type: text/html; charset=utf-8');
108    include(template('mediamanager.php'));
109
110/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
111