Thanks to your help adding the email address to the customers view was supper easy
just replace
<td class="dataTableContent"><?php echo $customers->fields['entry_company']; ?></td>
with
<td class="dataTableContent"><?php echo $customers->fields['customers_email_address']; ?></td>
But I dont know how to add whether they're a newsletter subscriber or not to the customers.php
I installed 'Newsletter Subscribe' mod contribution http://www.zen-cart.com/index.php?main_page=product_contrib_info&products_id=106
This gives me a list of all the newsletter subscribers (subscription_manager.php) and their newsletter preferences, but I looked at the code and it looks hard to add whether they're a newsletter subscriber or not to the customers view
subscription_manager.php (v1.3.7);
<!-- body //-->
<table style="border:none;width:100%;border-spacing:2px;cell-padding:2px;">
<tr>
<!-- body_text //-->
<td style="width:100%;vertical-align:top;">
<table style="border:none;width:100%;border-collapse:collapse;border-collapse:collapse;border-spacing:0px;cell-padding:2px;">
<tr>
<td>
<?php if($action=='remove') { ?>
<p>
<?php echo sprintf(TEXT_NEWSONLY_REMOVE_CONFIRM, zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=remove_confirmed'), zen_href_link(FILENAME_SUBSCRIPTION_MANAGER) ); ?>
</p>
<?php } ?>
<table style="border:none;width:100%; border-spacing:0;cell-padding:0;">
<tr style="padding-top:10px;">
<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
<td class="pageHeading" colspan="2" style="text-align:right;vertical-align:top;padding-bottom:10px;">
<?php if(!defined('NEWSONLY_SUBSCRIPTION_ENABLED') ) { ?>
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=install'); ?>"><?php echo zen_image_button('button_install.gif', TEXT_INSTALL); ?></a>
<?php } elseif($action != 'remove') { ?>
<?php if(!defined('NEWSONLY_SUBSCRIPTION_VERSION') || (NEWSONLY_SUBSCRIPTION_VERSION < $current_ns_version ) ) { ?>
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=update_contrib'); ?>"><?php echo zen_image_button('button_update.gif', TEXT_UPDATE); ?></a>
<?php } ?>
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=remove'); ?>"><?php echo zen_image_button('button_remove.gif', TEXT_REMOVE); ?></a>
<?php } ?>
</td>
</tr>
<tr>
<td class="pageHeading" colspan="2" style="text-align:left;vertical-align:top;">
<?php if(defined('NEWSONLY_SUBSCRIPTION_ENABLED') &&
(NEWSONLY_SUBSCRIPTION_ENABLED == 'true')) { ?>
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=new'); ?>"><?php echo zen_image_button('button_new_subscription.gif', TEXT_INFO_HEADING_NEW_SUBSCRIPTION); ?></a> |
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=purgeunconfirmed'); ?>"><?php echo zen_image_button('button_purge_subscriptions.gif', TEXT_PURGE_SUBSCRIPTIONS); ?></a> |
<a href="<?php echo zen_href_link(FILENAME_SUBSCRIPTION_MANAGER,'action=import'); ?>"><?php echo zen_image_button('button_import.gif', TEXT_IMPORT); ?></a>
<?php } ?>
</td>
</tr>
<?php if(defined('NEWSONLY_SUBSCRIPTION_ENABLED') ) { ?>
<tr style="padding-top:10px;vertical-align:bottom;">
<td><?php echo TABLE_HEADING_SUBSCRIPTION_STATUS.': '.
substr(TEXT_SUBSCRIPTION_STATUS_CUSTOMER,0,1).'=' . TEXT_SUBSCRIPTION_STATUS_CUSTOMER . ' ' .
substr(TEXT_SUBSCRIPTION_STATUS_CONFIRMED,0,1).'=' . TEXT_SUBSCRIPTION_STATUS_CONFIRMED . ' '.
substr(TEXT_SUBSCRIPTION_STATUS_UNCONFIRMED,0,1).'=' . TEXT_SUBSCRIPTION_STATUS_UNCONFIRMED;
?>
</td>
<td id="searchbox" class="smallText" style="vertical-align:middle;text-align:right;">
<?php echo zen_draw_form('search', FILENAME_SUBSCRIPTION_MANAGER, '', 'get', '', true); ?>
<?php
// show reset search
if (isset($_GET['filter']) && zen_not_null($_GET['filter'])) {
echo '<a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, '', 'NONSSL') . '">' . zen_image_button('button_reset.gif', IMAGE_RESET) . '</a> ';
}
echo HEADING_TITLE_SEARCH_DETAIL . '<span style="cursor:pointer;" onclick="dpop();">[?]</span> ' . zen_draw_input_field('filter') . zen_hide_session_id() . ' ' . zen_image_submit('button_search.gif', IMAGE_SEARCH);
if (isset($_GET['filter']) && zen_not_null($_GET['filter'])) {
$keywords = zen_db_input(zen_db_prepare_input($_GET['filter']));
echo '<br/ >' . TEXT_INFO_SEARCH_DETAIL_FILTER . $keywords;
}
?>
</form>
</td>
</tr>
</table></td>
</tr>
<?php
// Sort Listing
$list_order = empty($_GET['list_order']) ? 'id-desc' : $_GET['list_order'];
switch ($list_order) {
case 'id-asc': $disp_order = 'subscriber_id'; break;
case 'id-desc': $disp_order = 'subscriber_id DESC'; break;
case 'subscribed': $disp_order = 'subscribed_date'; break;
case 'subscribed-desc': $disp_order = 'subscribed_date DESC'; break;
case 'email': $disp_order = 'email_address'; break;
case 'email-desc': $disp_order = 'email_address DESC'; break;
case 'format': $disp_order = 'email_format'; break;
case 'format-desc': $disp_order = 'email_format DESC'; break;
case 'status': $disp_order = 'confirmed'; break;
case 'status-desc': $disp_order = 'confirmed DESC'; break;
default: $list_order='id-desc'; $disp_order = 'subscriber_id DESC';
}
$filter = empty($_GET['filter']) ? '' : $_GET['filter'];
$filter= zen_db_prepare_input($filter);
$filter_str='';
if(!empty($filter)) {
switch($filter) {
case 'customers' : $filter_str = ' where customers_id <> 0'; break;
case 'news-only' :
case 'newsonly' : $filter_str = ' where customers_id = 0 or customers_id IS NULL '; break;
case 'pending' : $filter_str = ' where confirmed != 1 '; break;
default: $filter_str = " where email_address LIKE '%".$filter."%' or email_format LIKE '%".$filter."%' "; break;
}
}
$classes_query_raw =
"select subscriber_id, customers_id, email_address, email_format, confirmed, subscribed_date from " . TABLE_SUBSCRIBERS . $filter_str .
" order by ".$disp_order;
$classes_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $classes_query_raw, $classes_query_numrows);
$classes = $db->Execute($classes_query_raw);
?>
<tr>
<td>
<table style="border:none;width:100%;border-collapse:collapse;border-collapse:collapse;border-spacing:0px;cell-padding:0px;">
<tr>
<td style="vertical-align:top;"><table style="border:none;width:100%;border-collapse:collapse;border-spacing:0px;cell-padding:2px;">
<tr class="dataTableHeadingRow">
<td class="dataTableHeadingContent" style="text-align:left;">
<?php echo (($list_order=='email' or $list_order=='email-desc') ? '<span class="SortOrderHeader">' . TABLE_HEADING_EMAIL . '</span>' : TABLE_HEADING_EMAIL); ?><br />
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=email' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='email' ? '<span class="SortOrderHeader">Asc</span>' : '<span class="SortOrderHeaderLink">Asc</span>'); ?></a>
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=email-desc' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='email-desc' ? '<span class="SortOrderHeader">Desc</span>' : '<span class="SortOrderHeaderLink">Desc</span>'); ?></a>
</td>
<td class="dataTableHeadingContent" style="text-align:left;">
<?php echo (($list_order=='format' or $list_order=='format-desc') ? '<span class="SortOrderHeader">' . TABLE_HEADING_PREFERENCE . '</span>' : TABLE_HEADING_PREFERENCE); ?><br />
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=format' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='format' ? '<span class="SortOrderHeader">Asc</span>' : '<span class="SortOrderHeaderLink">Asc</span>'); ?></a>
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=format-desc' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='format-desc' ? '<span class="SortOrderHeader">Desc</span>' : '<span class="SortOrderHeaderLink">Desc</span>'); ?></a>
</td>
<td class="dataTableHeadingContent" style="text-align:left;">
<?php echo (($list_order=='status' or $list_order=='status-desc') ? '<span class="SortOrderHeader">' . TABLE_HEADING_SUBSCRIPTION_STATUS . '</span>' : TABLE_HEADING_SUBSCRIPTION_STATUS); ?><br />
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=status' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='status' ? '<span class="SortOrderHeader">Asc</span>' : '<span class="SortOrderHeaderLink">Asc</span>'); ?></a>
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=status-desc' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='status-desc' ? '<span class="SortOrderHeader">Desc</span>' : '<span class="SortOrderHeaderLink">Desc</span>'); ?></a>
</td>
<td class="dataTableHeadingContent" style="text-align:left;">
<?php echo (($list_order=='subscribed' or $list_order=='subscribed-desc') ? '<span class="SortOrderHeader">' . TEXT_SUBSCRIPTION_DATE . '</span>' : TEXT_SUBSCRIPTION_DATE); ?><br />
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=subscribed' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='subscribed' ? '<span class="SortOrderHeader">Asc</span>' : '<span class="SortOrderHeaderLink">Asc</span>'); ?></a>
<a href="<?php echo zen_href_link(basename($PHP_SELF) . '?list_order=subscribed-desc' . (empty($filter) ? '' : '&filter=' . $filter), '', 'NONSSL'); ?>"><?php echo ($list_order=='subscribed-desc' ? '<span class="SortOrderHeader">Desc</span>' : '<span class="SortOrderHeaderLink">Desc</span>'); ?></a>
</td>
<td colspan="2" class="dataTableHeadingContent" style="text-align:center;"><?php echo TABLE_HEADING_ACTION; ?> </td>
</tr>
<?php
if(!empty($classes)) {
while (!$classes->EOF) {
if ((!isset($_GET['tID']) || (isset($_GET['tID']) && ($_GET['tID'] == $classes->fields['subscriber_id']))) && !isset($tcInfo) && (substr($action, 0, 3) != 'new')) {
$tcInfo = new objectInfo($classes->fields);
}
if (isset($tcInfo) && is_object($tcInfo) && ($classes->fields['subscriber_id'] == $tcInfo->subscriber_id)) {
echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . '&action=edit' . $extra_args) . '\'">' . "\n";
} else {
echo' <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $classes->fields['subscriber_id'] . $extra_args ) . '\'">' . "\n";
}
?>
<td class="dataTableContent"><?php echo $classes->fields['email_address']; ?></td>
<td class="dataTableContent"><?php echo $classes->fields['email_format']; ?></td>
<td class="dataTableContent">
<?php
if (!empty($classes->fields['customers_id'])) { echo '<span title="' . TEXT_SUBSCRIPTION_STATUS_CUSTOMER .'" >'.substr(TEXT_SUBSCRIPTION_STATUS_CUSTOMER,0,1).'</span>'; }
elseif ($classes->fields['confirmed'] == 1) { echo '<span title="' . TEXT_SUBSCRIPTION_STATUS_CONFIRMED .'" >'.substr(TEXT_SUBSCRIPTION_STATUS_CONFIRMED,0,1).'</span>'; }
else { echo '<span title="' . TEXT_SUBSCRIPTION_STATUS_UNCONFIRMED .'" >'.substr(TEXT_SUBSCRIPTION_STATUS_UNCONFIRMED,0,1).'</span>'; }
?>
</td>
<td class="dataTableContent"><?php echo zen_date_short($classes->fields['subscribed_date']); ?></td>
<td class="dataTableContent" style="text-align:right;">
<?php if (isset($tcInfo) && is_object($tcInfo) &&
($classes->fields['subscriber_id'] == $tcInfo->subscriber_id) && $action=='edit') {
echo ' '; } else { echo '<a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $classes->fields['subscriber_id'] . '&action=edit'.$extra_args) . '">' . zen_image(DIR_WS_IMAGES . 'icon_edit.gif', IMAGE_ICON_EDIT) . '</a>'; } ?> </td>
<td class="dataTableContent" style="text-align:right;"><?php if (isset($tcInfo) && is_object($tcInfo) && ($classes->fields['subscriber_id'] == $tcInfo->subscriber_id)) { echo zen_image(DIR_WS_IMAGES . 'icon_arrow_right.gif', ''); } else { echo '<a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $classes->fields['subscriber_id'].$extra_args) . '">' . zen_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
</tr>
<?php
$classes->MoveNext();
}
?>
<tr>
<td colspan="2"><table style="border:none;width:100%;border-collapse:collapse;border-collapse:collapse;border-spacing:0px;cell-padding:2px;">
<tr>
<td class="smallText" style="vertical-align:top;"></td>
<td class="smallText" style="text-align:right;"><?php echo $classes_split->display_links($classes_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $_GET['page'], $extra_args == '' ? '' : substr($extra_args,1)); ?></td>
</tr>
<?php
if (empty($action)) {
?>
<tr>
<td colspan="2" style="text-align:right;"></td>
</tr>
<?php
}
}
?>
</table></td>
</tr>
</table></td>
<?php
$heading = array();
$contents = array();
$email_pref_text = (empty($tcInfo->email_format) || ($tcInfo->email_format == 'TEXT')) ? true : false;
$email_pref_html = (empty($email_pref_text) ? true : false );
switch ($action) {
case 'import':
$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_IMPORT_SUBSCRIPTION . '</b>');
$contents = array('form' => zen_draw_form('classes', FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&action=import_file','post','enctype="multipart/form-data"'));
$contents[] = array('text' => TEXT_INFO_IMPORT_INTRO);
$contents[] = array('text' => zen_draw_hidden_field('MAX_FILE_SIZE','100000'));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_FILE . '<br />' . zen_draw_file_field('subscriber_import_file',true));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_SAMPLE . ' ' . zen_draw_input_field('record_sample', 'email NULL format NULL', 'size="100%"'));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_DELIM . ' ' . zen_draw_input_field('record_delim', '', 'size="5"'));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_ENCL . ' ' . zen_draw_input_field('field_encl', '', 'size="5"'));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_HEADER_ROW . ' ' . zen_draw_checkbox_field('record_header', '1'));
$contents[] = array('text' => '<br />' . TEXT_INFO_IMPORT_FORMAT . ' ' .
zen_draw_radio_field('default_format','TEXT',true) . ENTRY_EMAIL_TEXT_DISPLAY . ' '.
zen_draw_radio_field('default_format','HTML',true) . ENTRY_EMAIL_HTML_DISPLAY );
$contents[] = array('align' => 'center', 'text' => '<br />' . zen_image_submit('button_upload.gif', IMAGE_UPLOAD) . ' <a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page']) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
break;
case 'new':
$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_NEW_SUBSCRIPTION . '</b>');
$contents = array('form' => zen_draw_form('classes', FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&action=insert'));
$contents[] = array('text' => TEXT_INFO_INSERT_INTRO);
$contents[] = array('text' => '<br />' . TEXT_INFO_CLASS_TITLE . '<br />' . zen_draw_input_field('email_address', '', zen_set_field_length(TABLE_SUBSCRIBERS, 'email_address')));
$contents[] = array('text' => '<br />' . TABLE_HEADING_PREFERENCE . '<br />' .
zen_draw_radio_field('email_format', 'HTML', $email_pref_html) . ' ' . ENTRY_EMAIL_HTML_DISPLAY . ' ' .
zen_draw_radio_field('email_format', 'TEXT', $email_pref_text) . ' ' . ENTRY_EMAIL_TEXT_DISPLAY);
$contents[] = array('align' => 'center', 'text' => '<br />' . zen_image_submit('button_insert.gif', IMAGE_INSERT) . ' <a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page']) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
break;
case 'edit':
$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_EDIT_SUBSCRIPTION . '</b>');
$contents = array('form' => zen_draw_form('classes', FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . '&action=save'.$extra_args));
$contents[] = array('text' => TEXT_INFO_EDIT_INTRO);
$contents[] = array('text' => '<br />' . TEXT_INFO_CLASS_TITLE . '<br />' . zen_draw_input_field('email_address', $tcInfo->email_address, zen_set_field_length(TABLE_SUBSCRIBERS, 'email_address')));
$contents[] = array('text' => '<br />' . TABLE_HEADING_PREFERENCE . '<br />' .
zen_draw_radio_field('email_format', 'HTML', $email_pref_html) . ' ' . ENTRY_EMAIL_HTML_DISPLAY . ' ' .
zen_draw_radio_field('email_format', 'TEXT', $email_pref_text) . ' ' . ENTRY_EMAIL_TEXT_DISPLAY
);
if(empty($tcInfo->customers_id)) {
$contents[] = array('text' => '<br />' . TEXT_INFO_CONFIRMED . ' ' . zen_draw_checkbox_field('email_confirmed', '1', ((empty($tcInfo->confirmed)||($tcInfo->confirmed != 1)) ? '0' : '1')));
}
$contents[] = array('align' => 'center', 'text' => '<br />' . zen_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . $extra_args) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
break;
case 'delete':
$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_EMAIL . '</b>');
$contents = array('form' => zen_draw_form('classes', FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . '&cID=' . $tcInfo->customers_id . '&action=deleteconfirm' . $extra_args));
$contents[] = array('text' => TEXT_INFO_DELETE_INTRO);
$contents[] = array('text' => '<br /><b>' . $tcInfo->email_address . '</b>');
$contents[] = array('align' => 'center', 'text' => '<br />' . zen_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . $extra_args) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
break;
default:
if (isset($tcInfo) && is_object($tcInfo)) {
$heading[] = array('text' => '<b>' . $tcInfo->email_address . '</b>');
$contents[] = array('align' => 'center', 'text' => '<a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . '&action=edit'.$extra_args) . '">' . zen_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . zen_href_link(FILENAME_SUBSCRIPTION_MANAGER, 'page=' . $_GET['page'] . '&tID=' . $tcInfo->subscriber_id . '&cID=' . $tcInfo->customers_id .'&action=delete'.$extra_args) . '">' . zen_image_button('button_delete.gif', IMAGE_DELETE) . '</a>');
if(!empty($tcInfo->customers_id) || ($tcInfo->confirmed==1)) {
$contents[] = array('align' => 'center',
'text' =>
' <a href="' . zen_href_link(FILENAME_MAIL, 'origin=customers.php&mode=NONSSL&selected_box=tools&customer=' .
$tcInfo->email_address.'&cID=' . $tcInfo->customers_id, 'NONSSL') . '">' .
zen_image_button('button_email.gif', IMAGE_EMAIL) . '</a>'
);
} else {
$contents[] = array('text' => '<br />' .
TEXT_INFO_SUBSCRIPTION_STATUS_UNCONFIRMED);
}
$contents[] = array('text' => '<br />' . TEXT_SUBSCRIPTION_DATE . ': ' .$tcInfo->subscribed_date . '<br />');
$contents[] = array('text' => '<br />' . TABLE_HEADING_PREFERENCE . ': ' . $tcInfo->email_format);
}
break;
}
if ( (zen_not_null($heading)) && (zen_not_null($contents)) ) {
echo ' <td style="width:25%;vertical-align:top;">' . "\n";
$box = new box;
echo $box->infoBox($heading, $contents);
echo ' </td>' . "\n";
}
?>
</tr>
</table></td>
</tr>
<?php } ?>
</table></td>
<!-- body_text_eof //-->
When I opened this page it installed something into my database