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.