View Full Version : Upload a file using the datamanager?
mokujin
04-11-2009, 04:25 PM
Hello,
I would like to use the vB Datamanager to upload a non-image file for my custom mini mod.
I cant find in this forum the tutorial anywhere.
Can someone help me? Thank you :)
Mr-Moo
04-11-2009, 04:53 PM
So you are asking how to integrate the upload-form that Vbulletin has into your custom mini-mod?
You need to list more details on this mod. Is it on Vbulletin or a CMS?
Does the user need to be logged into VB to upload/download?
How is everything being displayed?
Thank you, these answers will help me better assist you.
mokujin
04-11-2009, 06:00 PM
So you are asking how to integrate the upload-form that Vbulletin has into your custom mini-mod?
You need to list more details on this mod. Is it on Vbulletin or a CMS?
Does the user need to be logged into VB to upload/download?
How is everything being displayed?
Thank you, these answers will help me better assist you.
Hi,
Its on vBulletin. It does not matter if the uploader is user or Mod (for all)
Just upload the file on to the server. Thats all.
Mr-Moo
04-11-2009, 06:10 PM
I am still a little unclear ;)
Are you looking to just have a file uploaded to any directory? I need details mate. Do you have any examples?
mokujin
04-11-2009, 06:18 PM
Something like this for images: https://vborg.vbsupport.ru/showthread.php?t=109376&highlight=upload
But I need for all file types.
Mr-Moo
04-11-2009, 06:34 PM
If I go from the source provided in that link, I feel that the only modification that needs to be made is the following:
if($_POST['do']=="doupload"){
$vbulletin->input->clean_gpc("f","upload",TYPE_FILE);
require_once('./includes/class_upload.php');
$upload =& new vB_Upload_Attachment($vbulletin);
$upload->path = "./directory/of/choice/";
if (!($upload->process_upload($vbulletin->GPC['upload']))){
eval(standard_error(fetch_error('there_were_errors _encountered_with_your_upload_x', $upload->fetch_error())));
}
}
The items in red are what was modified/added.
Please let me know if this works.
Original source:
// These are created each go around to insure memory has been freed
$attachdata =& datamanager_init('Attachment', $vbulletin, ERRTYPE_ARRAY);
$upload =& new vB_Upload_Attachment($vbulletin);
$image =& vB_Image::fetch_library($vbulletin);
$upload->data =& $attachdata;
$upload->image =& $image;
if ($uploadsum > 1)
{
$upload->emptyfile = false;
}
$upload->foruminfo =& $foruminfo;
if ($postid) // Editing a post
{
$upload->userinfo =& $userinfo;
}
$upload->postinfo =& $postinfo;
if ($vbulletin->GPC['attachment']['url']["$x"])
{
$attachment =& $vbulletin->GPC['attachment']['name']["$x"];
}
else
{
$attachment = array(
'name' =>& $vbulletin->GPC['attachment']['name']["$x"],
'tmp_name' =>& $vbulletin->GPC['attachment']['tmp_name']["$x"],
'error' =>& $vbulletin->GPC['attachment']['error']["$x"],
'size' =>& $vbulletin->GPC['attachment']['size']["$x"],
);
}
$attachcount++;
if (!$foruminfo['allowposting'])
{
$error = $vbphrase['this_forum_is_not_accepting_new_attachments'];
$errors[] = array(
'filename' => $attachment['name'],
'error' => $error
);
}
else if ($vbulletin->options['attachlimit'] AND $attachcount > $vbulletin->options['attachlimit'])
{
$error = construct_phrase($vbphrase['you_may_only_attach_x_files_per_post'], $vbulletin->options['attachlimit']);
$errors[] = array(
'filename' => $attachment['name'],
'error' => $error
);
}
else
{
if ($attachmentid = $upload->process_upload($attachment))
{
if ($vbulletin->userinfo['userid'] != $postinfo['userid'] AND can_moderate($threadinfo['forumid'], 'caneditposts'))
{
$postinfo['attachmentid'] =& $attachmentid;
$postinfo['forumid'] =& $foruminfo['forumid'];
require_once(DIR . '/includes/functions_log_error.php');
log_moderator_action($postinfo, 'attachment_uploaded');
}
}
else
{
$attachcount--;
}
if ($error = $upload->fetch_error())
{
$errors[] = array(
'filename' => is_array($attachment) ? $attachment['name'] : $attachment,
'error' => $error,
);
}
}
}
($hook = vBulletinHook::fetch_hook('newattachment_attach')) ? eval($hook) : false;
if (!empty($errors))
{
$errorlist = '';
foreach ($errors AS $error)
{
$filename = htmlspecialchars_uni($error['filename']);
$errormessage = $error['error'];
eval('$errorlist .= "' . fetch_template('newattachment_errormessage') . '";');
}
$show['errors'] = true;
}
}
}
mokujin
04-11-2009, 07:00 PM
There is this error:
Fatal error: Call to a member function is_valid_info_extension() on a non-object in C:\AppServ\www\upload\includes\class_upload.php on line 649
Mr-Moo
04-12-2009, 12:31 PM
Hello mokujin,
-What happened when you used the previous code (which you supplied). Did it properly upload images?
-What type of file-extension are you trying to upload?
Thank you,
vBulletin® v3.8.12 by vBS, Copyright ©2000-2024, vBulletin Solutions Inc.