fileupload.module
<?php
function fileupload_link($type) {
if ($type == 'system' && user_access('create files')) {
menu('node/add/fileupload', t('file upload'), 'node_page', 1);
}
}
function fileupload_perm() {
return array('create files');
}
function fileupload_help($section) {
switch ($section) {
case 'admin/system/modules#description':
case 'node/add#fileupload':
return t('Simple file node example.');
}
}
function fileupload_file_download($file) {
if (user_access('access content')) {
if ($mime = db_result(db_query("SELECT mime FROM {fileupload} WHERE filepath = '%s'", file_create_path($file)))) {
return array("Content-type: $mime");
}
}
}
function fileupload_node_name() {
return t('file');
}
function fileupload_view($node, $main = 0, $page = 0) {
if ($node->size && file_check_location($node->filepath, variable_get('file_directory_path', 'files'))) {
$node->body = '<a href="'. file_create_url($node->filepath) .'">'. $node->basename .'</a> ('. format_size($node->size) .')';
}
elseif ($file = $node->file) {
$node->body = $file->name .' ('. format_size($file->size) .')';
}
else {
$node->body = basename($node->filepath) .' ('. format_size(filesize($node->filepath)) .')';
}
return theme('node', $node, $main, $page);
}
function fileupload_form(&$node, &$error, &$param) {
$param['options'] = array('enctype' => 'multipart/form-data');
$output = form_file(t('File'), 'file', 40, ($error['file'] ? theme('error', $error['file']) : t('A file already exists, if you upload another file the current file will be replaced.')));
if ($node->nid) {
$output .= form_hidden('filepath', $node->filepath);
}
return $output;
}
function fileupload_validate(&$node) {
$error = array();
if ($file = file_save_upload('file')) {
$node->file = $file;
}
if (!$node->file && !file_exists($node->filepath)) {
$error['file'] = t('Missing file.');
}
return $error;
}
function fileupload_access($op, $node) {
global $user;
switch ($op) {
case 'view':
return $node->status;
case 'create':
return user_access("create file");
case 'update':
case 'delete':
return user_access("create file") && ($user->uid == $node->uid);
}
}
function fileupload_load($node) {
return db_fetch_object(db_query('SELECT * FROM {fileupload} WHERE nid = %d', $node->nid));
}
function fileupload_insert($node) {
$file = $node->file;
$file = file_save_upload($file, $file->name);
db_query("INSERT INTO {fileupload} (nid, basename, filepath, mime, size) VALUES (%d, '%s', '%s', '%s', %d)", $node->nid, $file->name, $file->path, $file->type, $file->size);
}
function fileupload_update($node) {
file_delete(db_result(db_query('SELECT filepath FROM {fileupload} WHERE nid = %d', $node->nid)));
$file = $node->file;
$file = file_save_upload($file, $file->name);
db_query("UPDATE {fileupload} SET basename = '%s', filepath = '%s', mime = '%s', size = %d WHERE nid = %d", $file->name, $file->path, $file->type, $file->size, $node->nid);
}
function fileupload_delete($node) {
file_delete($node->filepath);
db_query("DELETE FROM {fileupload} WHERE nid = %d", $node->nid);
}
?>