Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 05-19-2016, 04:10 PM
heat23 heat23 is offline
 
Join Date: Mar 2016
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Add profile field via a product?

Hello all,

I am creating a product that requires an additional profile field. How can I add this as part the product .xml file so that it gets added automatically when installing?

Thanks
heat
Reply With Quote
  #2  
Old 05-19-2016, 04:56 PM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I have a product that creates a profile field upon installation, and the install code is:

PHP Code:
$vbulletin->db->query_write("
    INSERT INTO " 
TABLE_PREFIX "profilefield
        (
            maxlength, size, type, data, def, searchable, memberlist, form
        )
    VALUES
        (
            5, 5, 'radio', 'a:2:{i:0;s:3:\"Yes\";i:1;s:2:\"No\";}', 1, 1, 1, 5
        )
"
);

$profiledata $vbulletin->db->query_read("
    SELECT MAX(profilefieldid) AS profilefieldid
    FROM " 
TABLE_PREFIX "profilefield
"
);

$thisrow $db->fetch_array($profiledata);

$pid $thisrow['profilefieldid'];

$vbulletin->db->query_write("
    UPDATE " 
TABLE_PREFIX "profilefield
    SET displayorder = profilefieldid
    WHERE profilefieldid = last_insert_id()
"
);

$vbulletin->db->query_write("
    INSERT INTO " 
TABLE_PREFIX "phrase
        (
            varname, fieldname, text, product
        )
    VALUES
        (
            'field" 
$pid "_title', 'cprofilefield', 'Abbreviations/Acronyms', 'vbulletin'
        ),
        (
            'field" 
$pid "_desc', 'cprofilefield', 'Set whether you wish for abbreviations/acronyms to be explained using a tooltip in the areas designated by the administrators', 'vbulletin'
        )
"
);

$vbulletin->db->query_write("
    ALTER TABLE`" 
TABLE_PREFIX "userfield`
        ADD field" 
$pid " MEDIUMTEXT
"
); 
The uninstall code is:

PHP Code:
function get_fieldnum()
{
    global 
$vbulletin$db;
    
$fielddata $vbulletin->db->query_read("
        SELECT phrase.*
        FROM " 
TABLE_PREFIX "phrase AS phrase
        WHERE text = 'Abbreviations/Acronyms'
    "
);

    
$thisfield $db->fetch_array($fielddata);

    return 
preg_replace("/[^0-9]/","",$thisfield['varname']);
}

$fieldnum get_fieldnum();
$fieldstr 'field' $fieldnum;

$vbulletin->db->query_write("
    DELETE FROM " 
TABLE_PREFIX "profilefield
    WHERE profilefieldid = " 
$fieldnum
);

$vbulletin->db->query_write("
    DELETE FROM " 
TABLE_PREFIX "phrase
    WHERE varname LIKE '" 
$fieldstr "%'
"
);

$vbulletin->db->query_write("
    ALTER TABLE`" 
TABLE_PREFIX "userfield`
        DROP COLUMN " 
$fieldstr
); 
Of course, you will have to alter this to meet your specific needs.
Reply With Quote
2 благодарности(ей) от:
ArcadeSyndicate, heat23
  #3  
Old 05-19-2016, 05:00 PM
heat23 heat23 is offline
 
Join Date: Mar 2016
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you Mark!

--------------- Added [DATE]1463686938[/DATE] at [TIME]1463686938[/TIME] ---------------

Mark,

Since you are dynamically naming the profile field name, is there a way I can write it back out somewhere so my PHP code can read the field name? I could store it in another database field but that might incur too much overhead. But if I save it on the filesystem, then the file needs to have write permissions?
Reply With Quote
Благодарность от:
MarkFL
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:24 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03853 seconds
  • Memory Usage 2,194KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_box_bit
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete