vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB4 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=252)
-   -   I need help with attachment hooks in vbulletin 4 (editing torrents on server) (https://vborg.vbsupport.ru/showthread.php?t=234849)

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

I need help with attachment hooks in vbulletin 4 (editing torrents on server)
 
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.

Code:

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 [DATE]1265187247[/DATE] at [TIME]1265187247[/TIME] ---------------

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!!!


All times are GMT. The time now is 11:33 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.00936 seconds
  • Memory Usage 1,726KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete