Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
media.php 2.28 KiB
<?php
  if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__)).'/');
  require_once(DOKU_INC.'inc/init.php');
  require_once(DOKU_INC.'inc/common.php');
  require_once(DOKU_INC.'lang/en/lang.php');
  require_once(DOKU_INC.'lang/'.$conf['lang'].'/lang.php');
  require_once(DOKU_INC.'inc/html.php');
  require_once(DOKU_INC.'inc/search.php');
  require_once(DOKU_INC.'inc/format.php');
  require_once(DOKU_INC.'inc/template.php');
  require_once(DOKU_INC.'inc/auth.php');

  header('Content-Type: text/html; charset='.$lang['encoding']);

  $NS = $_REQUEST['ns'];
  $NS = cleanID($NS);

  //check upload permissions
  if(auth_quickaclcheck("$NS:*") >= AUTH_UPLOAD){
    $UPLOADOK = true;
    //create the given namespace (just for beautification)
    $mdir = $conf['mediadir'].'/'.utf8_encodeFN(str_replace(':','/',$NS));
    io_makeFileDir("$mdir/xxx");
  }else{
    $UPLOADOK = false;
  }

  if($_FILES['upload']['tmp_name'] && $UPLOADOK){
    media_upload($NS);
  }

  //start output and load template
  header('Content-Type: text/html; charset=utf-8');
  include(DOKU_INC.'tpl/'.$conf['template'].'/media.php');

  //restore old umask
  umask($conf['oldumask']);

/**********************************************/

/**
 * Handles Mediafile uploads
 *
 * @author Andreas Gohr <andi@splitbrain.org>
 */
function media_upload($NS){
  global $conf;
  global $lang;

  // get file
  $id   = $_POST['id'];
  $file = $_FILES['upload'];
  // get id
  if(empty($id)) $id = $file['name'];
  $id   = cleanID($NS.':'.$id);
  // get filename
  $fn   = utf8_encodeFN(str_replace(':','/',$id));
  $fn   = $conf['mediadir'].'/'.$fn;
  // prepare directory
  io_makeFileDir($fn);

  umask($conf['umask']);
  if(preg_match('/\.'.$conf['uploadtypes'].'$/i',$fn)){
    if (move_uploaded_file($file['tmp_name'], $fn)) {
      msg($lang['uploadsucc'],1);
      return true;
    }else{
      msg($lang['uploadfail'],-1);
    }
  }else{
    msg($lang['uploadwrong'],-1);
  }
  return false;
}

/**
 * Userfunction for html_buildlist
 *
 * Prints available media namespaces
 *
 * @author Andreas Gohr <andi@splitbrain.org>
 */
function media_html_list_namespaces($item){
  $ret  = '';
  $ret .= '<a href="'.DOKU_BASE.'media.php?ns='.idfilter($item['id']).'" class="idx_dir">';
  $ret .= $item['id'];
  $ret .= '</a>';
  return $ret;
}

?>