PDA

View Full Version : I need help with attachment hooks in vbulletin 4 (editing torrents on server)


desi6.tv
02-03-2010, 12:02 AM
Hello,

I have been running this code from version 3.6.x through 3.8.x. It has been running fine with a few modifications here and there.


function xbt_attachdata_postsave($dm)
{
require_once('benc.php');
global $vbulletin;
if ($dm->attach['extension'] != 'torrent')
return;
$torrent = bdec(empty($dm->info['filedata']) ? file_get_contents(fetch_attachment_path($dm->attach['userid'], $dm->attach['attachmentid'])) : $dm->info['filedata']);
if (!isset($torrent))
return;
$bt_info_hash = pack('H*', sha1($torrent['value']['info']['string']));
$bt_name = $torrent['value']['info']['value']['name']['value'];
$bt_tracker = $torrent['value']['announce']['value'];
$vbulletin->db->query_write(sprintf("delete from xbt_sub_files where info_hash = '%s'", addslashes($bt_info_hash)));
if ($torrent['value']['info']['value']['length'])
{
$name = $torrent['value']['info']['value']['name']['value'];
$size = $torrent['value']['info']['value']['length']['value'];
$vbulletin->db->query_write(sprintf("insert into xbt_sub_files (info_hash, name, size) values ('%s', '%s', '%.0f')",
addslashes($bt_info_hash), addslashes($name), $size));
$bt_size = $size;
}
else
{
$bt_size = 0;
foreach ($torrent['value']['info']['value']['files']['value'] as $file)
{
$name = '';
foreach ($file['value']['path']['value'] as $a)
$name .= '/' . $a['value'];
$size = $file['value']['length']['value'];
$vbulletin->db->query_write(sprintf("insert into xbt_sub_files (info_hash, name, size) values ('%s', '%s', '%.0f')",
addslashes($bt_info_hash), addslashes($name), $size));
$bt_size += (float)$size;
}
}
$vbulletin->db->query_write(sprintf("update %sattachment set bt_info_hash = '%s', bt_name = '%s', bt_size = '%.0f', bt_tracker = '%s' where attachmentid = %d",
TABLE_PREFIX, addslashes($bt_info_hash), addslashes($bt_name), $bt_size, addslashes($bt_tracker), $dm->attach['attachmentid']));

}


It basically extracts information from the torrent uploaded and stores it into respective tables in the database. This info is later used to generate and assign the torrent with a unique passkey.

I had this function running on the attachdata_postsave hook. For some reason, it does not seem to be working with vB 4. Can anyone help me with this piece of code ? I think the attachments are handeled differently in vB4. Please explain if possible.

Secondly, attachdata_delete hook is missing. What to do if I want to run some code in its place ?

--------------- Added 1265187247 at 1265187247 ---------------

i want to know how the attachment array is handled in vbulletin 4

Lynne
02-03-2010, 08:53 PM
You may add a hook into your php code if you need one. Just make sure to create a hook_*.xml file to put in the includes/xml directory to be able to use it.

Once you place the hook where you want it, look at the code around there to see what your variable names would be.

For instance, for mine, I added a hook into the function accept_upload to handle the uploading of torrents. Attachments changed quite a bit for vB4. You really need to take a look at the new attachment table and filedate table and understand their relationship to each other and to the post table, which has changed also.

desi6.tv
02-05-2010, 04:08 AM
thanks for the up ! i will give it a go now

toolmanwill
04-14-2010, 06:39 PM
did ya ever have any luck with this? I'm working on it nwo but tried a tons of different way with no luck :(

EDIT

nevermind, i figured it out ;)

now with figuring this out VBTT/vBitty 4 should be out soon!!!