Hey Larry,
If you've haven't already done this. Here's some sample plugin code from "Simple Forum" that adds fields to a schema when it's not already there:
// plugin actions
addAction('section_init', '_sforum_pluginSetup_updateAccountsSchema', null, 1);
// make sure that all required accounts schema changes are made - runs when user visits plugins menu
function _sforum_pluginSetup_updateAccountsSchema($tableName) {
$isPluginMenu = $tableName == 'admin' && @$_REQUEST['action'] == 'plugins';
if ($tableName && !$isPluginMenu) { return; } // only run on plugin menu
// ensure membership account schema has appropriate fields
$order = time();
$fieldsToEnsure = array(
'__sforum_header__' => array(
'order' => ++$order,
'label' => '',
'type' => 'separator',
'separatorType' => 'header bar',
'separatorHeader' => 'Forum Settings',
'separatorHTML' => '',
'isSystemField' => '1',
),
'_sforum_signature' => array(
'order' => ++$order,
'label' => 'Signature',
'type' => 'textbox',
'autoFormat' => '0',
'isSystemField' => '1',
),
'_sforum_adminForums' => array(
'order' => ++$order,
'label' => 'Admin for Forums',
'type' => 'list',
'indexed' => '0',
'defaultValue' => '',
'fieldPrefix' => '',
'description' => '',
'isRequired' => '0',
'isUnique' => '0',
'listType' => 'checkboxes',
'optionsType' => 'table',
'optionsTablename' => '_frm_forums',
'optionsValueField' => 'num',
'optionsLabelField' => 'name',
'isSystemField' => '1',
),
);
// add fields to accounts table if necessary
$accountsTable = coalesce( @$GLOBALS['WSM_ACCOUNTS_TABLE'], 'accounts');
$accountSchema = loadSchema($accountsTable);
$updated = false;
foreach ($fieldsToEnsure as $newFieldName => $newFieldSchema) {
if (!@$accountSchema[$newFieldName]) {
$accountSchema[$newFieldName] = $newFieldSchema;
$updated = true;
}
}
// save schema if necessary
if ($updated) {
saveSchema( $accountsTable, $accountSchema );
createMissingSchemaTablesAndFields();
}
// add email templates
// SFORUM-NOTIFY-POST
emailTemplate_addToDB(array(
'template_id' => "SFORUM-NOTIFY-POST",
'description' => "Sent to users when their forum posts are replied to",
'placeholders' => array('user.email','post.username','post.read_link','post.reply_link','post.unsubscribe_link','post.message_snippet','topic.subject','forum'), // array of placeholder names
'from' => "#settings.adminEmail#",
'to' => "#user.email#",
'subject' => "New comment on: #topic.subject#",
'html' => <<<__HTML__
<p><strong>#post.username#</strong> has commented on: <strong><a href="#post.read_link#">#topic.subject#</a></strong></p>
<p style="padding-left: 30px;"><em>#post.message_snippet#... <a href="#post.read_link#">more</a></em></p>
<p style="padding-left: 30px;"><a href="#post.read_link#"><strong>See Comment</strong></a> | <strong><a href="#post.reply_link#">Reply to comment</a></strong><em><strong><a href="#post.reply_link#"><br /><br /></a></strong></em></p>
<hr />
<p><span style="color: #808080;">This update was sent to #user.email# because you commented on this forum topic, are subscribed to this thread, or are subscribed to this forum.</span><br /><span style="color: #808080;">If you don't want to receive updates on this forum topic, please <span style="color: #3366ff;"><a href="#post.unsubscribe_link#"><span style="color: #3366ff;">unsubscribe</span></a></span>.</span></p>
__HTML__
,
'placeholders' => <<<__PLACEH__
#user.email#
#post.username#
#post.read_link#
#post.reply_link#
#post.unsubscribe_link#
#post.message_snippet#
#topic.subject#
#forum#
#server.http_host#
#server.remote_addr#
#settings.adminEmail#
#settings.adminUrl#
#settings.programName#
#settings.programName#
__PLACEH__
));
}
You can remove the bit about adding a default email template if you don't need that.
Hope that helps!
Dave Edis - Senior Developer
interactivetools.com