|
ZenCart_Documentation
1.5.0
http://www.collinsharper.com
|
00001 <?php 00010 require('includes/application_top.php'); 00011 00012 $set = (isset($_GET['set']) ? $_GET['set'] : (isset($_POST['set']) ? $_POST['set'] : '')); 00013 00014 $is_ssl_protected = (substr(HTTP_SERVER, 0, 5) == 'https') ? TRUE : FALSE; 00015 00016 if (zen_not_null($set)) { 00017 switch ($set) { 00018 case 'shipping': 00019 $module_type = 'shipping'; 00020 $module_directory = DIR_FS_CATALOG_MODULES . 'shipping/'; 00021 $module_key = 'MODULE_SHIPPING_INSTALLED'; 00022 define('HEADING_TITLE', HEADING_TITLE_MODULES_SHIPPING); 00023 $shipping_errors = ''; 00024 if (zen_get_configuration_key_value('SHIPPING_ORIGIN_ZIP') == 'NONE' or zen_get_configuration_key_value('SHIPPING_ORIGIN_ZIP') == '') { 00025 $shipping_errors .= '<br />' . ERROR_SHIPPING_ORIGIN_ZIP; 00026 } 00027 if (zen_get_configuration_key_value('ORDER_WEIGHT_ZERO_STATUS') == '1' and !defined('MODULE_SHIPPING_FREESHIPPER_STATUS')) { 00028 $shipping_errors .= '<br />' . ERROR_ORDER_WEIGHT_ZERO_STATUS; 00029 } 00030 if (defined('MODULE_SHIPPING_USPS_STATUS') and (MODULE_SHIPPING_USPS_USERID=='NONE' or MODULE_SHIPPING_USPS_SERVER == 'test')) { 00031 $shipping_errors .= '<br />' . ERROR_USPS_STATUS; 00032 } 00033 if ($shipping_errors != '') { 00034 $messageStack->add(ERROR_SHIPPING_CONFIGURATION . $shipping_errors, 'caution'); 00035 } 00036 break; 00037 case 'ordertotal': 00038 $module_type = 'order_total'; 00039 $module_directory = DIR_FS_CATALOG_MODULES . 'order_total/'; 00040 $module_key = 'MODULE_ORDER_TOTAL_INSTALLED'; 00041 define('HEADING_TITLE', HEADING_TITLE_MODULES_ORDER_TOTAL); 00042 break; 00043 case 'payment': 00044 default: 00045 $module_type = 'payment'; 00046 $module_directory = DIR_FS_CATALOG_MODULES . 'payment/'; 00047 $module_key = 'MODULE_PAYMENT_INSTALLED'; 00048 define('HEADING_TITLE', HEADING_TITLE_MODULES_PAYMENT); 00049 break; 00050 } 00051 } 00052 00053 $action = (isset($_GET['action']) ? $_GET['action'] : ''); 00054 00055 if (zen_not_null($action)) { 00056 $admname = '{' . preg_replace('/[^\d\w]/', '*', zen_get_admin_name()) . '[' . (int)$_SESSION['admin_id'] . ']}'; 00057 switch ($action) { 00058 case 'save': 00059 if (!$is_ssl_protected && in_array($class, array('paypaldp', 'linkpoint_api', 'authorizenet_aim', 'authorizenet_echeck'))) break; 00060 while (list($key, $value) = each($_POST['configuration'])) { 00061 if (is_array( $value ) ) { 00062 $value = implode( ", ", $value); 00063 $value = preg_replace ("/, --none--/", "", $value); 00064 } 00065 $db->Execute("update " . TABLE_CONFIGURATION . " 00066 set configuration_value = '" . zen_db_input($value) . "' 00067 where configuration_key = '" . zen_db_input($key) . "'"); 00068 } 00069 $configuration_query = 'select configuration_key as cfgkey, configuration_value as cfgvalue 00070 from ' . TABLE_CONFIGURATION; 00071 $configuration = $db->Execute($configuration_query); 00072 $msg = sprintf(TEXT_EMAIL_MESSAGE_ADMIN_SETTINGS_CHANGED, preg_replace('/[^\d\w]/', '*', $_GET['module']), $admname); 00073 zen_mail(STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER_EMAIL_ADDRESS, TEXT_EMAIL_SUBJECT_ADMIN_SETTINGS_CHANGED, $msg, STORE_NAME, EMAIL_FROM, array('EMAIL_MESSAGE_HTML'=>$msg), 'admin_settings_changed'); 00074 zen_redirect(zen_href_link(FILENAME_MODULES, 'set=' . $set . ($_GET['module'] != '' ? '&module=' . $_GET['module'] : ''), 'NONSSL')); 00075 break; 00076 case 'install': 00077 $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.')); 00078 $class = basename($_POST['module']); 00079 if (!$is_ssl_protected && in_array($class, array('paypaldp', 'linkpoint_api', 'authorizenet_aim', 'authorizenet_echeck'))) break; 00080 if (file_exists($module_directory . $class . $file_extension)) { 00081 $configuration_query = 'select configuration_key as cfgkey, configuration_value as cfgvalue 00082 from ' . TABLE_CONFIGURATION; 00083 $configuration = $db->Execute($configuration_query); 00084 include($module_directory . $class . $file_extension); 00085 $module = new $class; 00086 $msg = sprintf(TEXT_EMAIL_MESSAGE_ADMIN_MODULE_INSTALLED, preg_replace('/[^\d\w]/', '*', $_POST['module']), $admname); 00087 zen_mail(STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER_EMAIL_ADDRESS, TEXT_EMAIL_SUBJECT_ADMIN_SETTINGS_CHANGED, $msg, STORE_NAME, EMAIL_FROM, array('EMAIL_MESSAGE_HTML'=>$msg), 'admin_settings_changed'); 00088 $result = $module->install(); 00089 } 00090 if ($result != 'failed') { 00091 zen_redirect(zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class . '&action=edit', 'NONSSL')); 00092 } 00093 break; 00094 case 'removeconfirm': 00095 $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.')); 00096 $class = basename($_POST['module']); 00097 if (file_exists($module_directory . $class . $file_extension)) { 00098 $configuration_query = 'select configuration_key as cfgkey, configuration_value as cfgvalue 00099 from ' . TABLE_CONFIGURATION; 00100 $configuration = $db->Execute($configuration_query); 00101 include($module_directory . $class . $file_extension); 00102 $module = new $class; 00103 $msg = sprintf(TEXT_EMAIL_MESSAGE_ADMIN_MODULE_REMOVED, preg_replace('/[^\d\w]/', '*', $_POST['module']), $admname); 00104 zen_mail(STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER_EMAIL_ADDRESS, TEXT_EMAIL_SUBJECT_ADMIN_SETTINGS_CHANGED, $msg, STORE_NAME, EMAIL_FROM, array('EMAIL_MESSAGE_HTML'=>$msg), 'admin_settings_changed'); 00105 $result = $module->remove(); 00106 } 00107 zen_redirect(zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class, 'NONSSL')); 00108 break; 00109 } 00110 } 00111 ?> 00112 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> 00113 <html <?php echo HTML_PARAMS; ?>> 00114 <head> 00115 <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> 00116 <title><?php echo TITLE; ?></title> 00117 <link rel="stylesheet" type="text/css" href="includes/stylesheet.css"> 00118 <link rel="stylesheet" type="text/css" href="includes/cssjsmenuhover.css" media="all" id="hoverJS"> 00119 <script language="javascript" src="includes/menu.js"></script> 00120 <script language="javascript" src="includes/general.js"></script> 00121 <script type="text/javascript"> 00122 <!-- 00123 function init() 00124 { 00125 cssjsmenu('navbar'); 00126 if (document.getElementById) 00127 { 00128 var kill = document.getElementById('hoverJS'); 00129 kill.disabled = true; 00130 } 00131 } 00132 // --> 00133 </script> 00134 </head> 00135 <body onLoad="init()"> 00136 <!-- header //--> 00137 <?php require(DIR_WS_INCLUDES . 'header.php'); ?> 00138 <!-- header_eof //--> 00139 00140 <!-- body //--> 00141 <table border="0" width="100%" cellspacing="2" cellpadding="2"> 00142 <tr> 00143 <!-- body_text //--> 00144 <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2"> 00145 <tr> 00146 <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0"> 00147 <tr> 00148 <td class="pageHeading"><?php echo HEADING_TITLE; ?></td> 00149 <td class="pageHeading" align="right"><?php echo zen_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td> 00150 </tr> 00151 </table></td> 00152 </tr> 00153 <tr> 00154 <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> 00155 <tr> 00156 <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2"> 00157 <tr class="dataTableHeadingRow"> 00158 <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_MODULES; ?></td> 00159 <td class="dataTableHeadingContent"> </td> 00160 <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_SORT_ORDER; ?></td> 00161 <?php 00162 if ($set == 'payment') { 00163 ?> 00164 <td class="dataTableHeadingContent" align="center" width="100"><?php echo TABLE_HEADING_ORDERS_STATUS; ?></td> 00165 <?php } ?> 00166 <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td> 00167 </tr> 00168 <?php 00169 $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.')); 00170 $directory_array = array(); 00171 if ($dir = @dir($module_directory)) { 00172 while ($file = $dir->read()) { 00173 if (!is_dir($module_directory . $file)) { 00174 if (substr($file, strrpos($file, '.')) == $file_extension) { 00175 $directory_array[] = $file; 00176 } 00177 } 00178 } 00179 sort($directory_array); 00180 $dir->close(); 00181 } 00182 00183 $installed_modules = array(); 00184 for ($i=0, $n=sizeof($directory_array); $i<$n; $i++) { 00185 $file = $directory_array[$i]; 00186 if (file_exists(DIR_FS_CATALOG_LANGUAGES . $_SESSION['language'] . '/modules/' . $module_type . '/' . $file)) { 00187 include(DIR_FS_CATALOG_LANGUAGES . $_SESSION['language'] . '/modules/' . $module_type . '/' . $file); 00188 include($module_directory . $file); 00189 $class = substr($file, 0, strrpos($file, '.')); 00190 if (zen_class_exists($class)) { 00191 $module = new $class; 00192 if ($module->check() > 0) { 00193 if ($module->sort_order > 0) { 00194 if ($installed_modules[$module->sort_order] != '') { 00195 $zc_valid = false; 00196 } 00197 $installed_modules[$module->sort_order] = $file; 00198 } else { 00199 $installed_modules[] = $file; 00200 } 00201 } 00202 if ((!isset($_GET['module']) || (isset($_GET['module']) && ($_GET['module'] == $class))) && !isset($mInfo)) { 00203 $module_info = array('code' => $module->code, 00204 'title' => $module->title, 00205 'description' => $module->description, 00206 'status' => $module->check()); 00207 $module_keys = $module->keys(); 00208 $keys_extra = array(); 00209 for ($j=0, $k=sizeof($module_keys); $j<$k; $j++) { 00210 $key_value = $db->Execute("select configuration_title, configuration_value, configuration_key, 00211 configuration_description, use_function, set_function 00212 from " . TABLE_CONFIGURATION . " 00213 where configuration_key = '" . zen_db_input($module_keys[$j]) . "'"); 00214 00215 $keys_extra[$module_keys[$j]]['title'] = $key_value->fields['configuration_title']; 00216 $keys_extra[$module_keys[$j]]['value'] = $key_value->fields['configuration_value']; 00217 $keys_extra[$module_keys[$j]]['description'] = $key_value->fields['configuration_description']; 00218 $keys_extra[$module_keys[$j]]['use_function'] = $key_value->fields['use_function']; 00219 $keys_extra[$module_keys[$j]]['set_function'] = $key_value->fields['set_function']; 00220 } 00221 $module_info['keys'] = $keys_extra; 00222 $mInfo = new objectInfo($module_info); 00223 } 00224 if (isset($mInfo) && is_object($mInfo) && ($class == $mInfo->code) ) { 00225 if ($module->check() > 0) { 00226 echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class . '&action=edit', 'NONSSL') . '\'">' . "\n"; 00227 } else { 00228 echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)">' . "\n"; 00229 } 00230 } else { 00231 echo ' <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class, 'NONSSL') . '\'">' . "\n"; 00232 } 00233 //print_r($module) . '<br><BR>'; 00234 //echo (!empty($module->enabled) ? 'ENABLED' : 'NOT ENABLED') . ' vs ' . (is_numeric($module->sort_order) ? 'ON' : 'OFF') . '<BR><BR>' ; 00235 ?> 00236 <td class="dataTableContent"><?php echo $module->title; ?></td> 00237 <td class="dataTableContent"><?php echo (strstr($module->code, 'paypal') ? 'PayPal' : $module->code); ?></td> 00238 <td class="dataTableContent" align="right"> 00239 <?php if (is_numeric($module->sort_order)) echo $module->sort_order; ?> 00240 <?php 00241 // show current status 00242 if ($set == 'payment' || $set == 'shipping') { 00243 echo ' ' . ((!empty($module->enabled) && is_numeric($module->sort_order)) ? zen_image(DIR_WS_IMAGES . 'icon_status_green.gif') : ((empty($module->enabled) && is_numeric($module->sort_order)) ? zen_image(DIR_WS_IMAGES . 'icon_status_yellow.gif') : zen_image(DIR_WS_IMAGES . 'icon_status_red.gif'))); 00244 } else { 00245 echo ' ' . (is_numeric($module->sort_order) ? zen_image(DIR_WS_IMAGES . 'icon_status_green.gif') : zen_image(DIR_WS_IMAGES . 'icon_status_red.gif')); 00246 } 00247 ?> 00248 </td> 00249 <?php 00250 if ($set == 'payment') { 00251 $orders_status_name = $db->Execute("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id='" . (int)$module->order_status . "' and language_id='" . (int)$_SESSION['languages_id'] . "'"); 00252 ?> 00253 <td class="dataTableContent" align="left"> <?php echo (is_numeric($module->sort_order) ? (($orders_status_name->fields['orders_status_id'] < 1) ? TEXT_DEFAULT : $orders_status_name->fields['orders_status_name']) : ''); ?> </td> 00254 <?php } ?> 00255 <td class="dataTableContent" align="right"><?php if (isset($mInfo) && is_object($mInfo) && ($class == $mInfo->code) ) { echo zen_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class, 'NONSSL') . '">' . zen_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td> 00256 </tr> 00257 <?php 00258 } 00259 } else { 00260 echo ERROR_MODULE_FILE_NOT_FOUND . DIR_FS_CATALOG_LANGUAGES . $_SESSION['language'] . '/modules/' . $module_type . '/' . $file . '<br />'; 00261 } 00262 } 00263 ksort($installed_modules); 00264 $check = $db->Execute("select configuration_value 00265 from " . TABLE_CONFIGURATION . " 00266 where configuration_key = '" . zen_db_input($module_key) . "'"); 00267 00268 if ($check->RecordCount() > 0) { 00269 if ($check->fields['configuration_value'] != implode(';', $installed_modules)) { 00270 $db->Execute("update " . TABLE_CONFIGURATION . " 00271 set configuration_value = '" . zen_db_input(implode(';', $installed_modules)) . "', last_modified = now() 00272 where configuration_key = '" . zen_db_input($module_key) . "'"); 00273 } 00274 } else { 00275 $db->Execute("insert into " . TABLE_CONFIGURATION . " 00276 (configuration_title, configuration_key, configuration_value, 00277 configuration_description, configuration_group_id, sort_order, date_added) 00278 values ('Installed Modules', '" . zen_db_input($module_key) . "', '" . zen_db_input(implode(';', $installed_modules)) . "', 00279 'This is automatically updated. No need to edit.', '6', '0', now())"); 00280 } 00281 if (isset($zc_valid) && $zc_valid == false) { 00282 echo '<span class="alert">' . WARNING_MODULES_SORT_ORDER . '</span>'; 00283 } 00284 ?> 00285 <tr> 00286 <td colspan="3" class="smallText"><?php echo TEXT_MODULE_DIRECTORY . ' ' . $module_directory; ?></td> 00287 </tr> 00288 </table></td> 00289 <?php 00290 $heading = array(); 00291 $contents = array(); 00292 switch ($action) { 00293 case 'remove': 00294 $heading[] = array('text' => '<b>' . $mInfo->title . '</b>'); 00295 00296 $contents = array('form' => zen_draw_form('module_delete', FILENAME_MODULES, '&action=removeconfirm')); 00297 $contents[] = array('text' => '<input type="hidden" name="set" value="' . (isset($_GET['set']) ? $_GET['set'] : "") . '" />'); 00298 $contents[] = array('text' => '<input type="hidden" name="module" value="' . (isset($_GET['module']) ? $_GET['module'] : "") . '"/>'); 00299 $contents[] = array('text' => TEXT_DELETE_INTRO); 00300 00301 $contents[] = array('align' => 'center', 'text' => '<br>' . zen_image_submit('button_remove.gif', IMAGE_DELETE, 'name="removeButton"') . ' <a href="' . zen_href_link(FILENAME_MODULES, 'set=' . $set . ($_GET['module'] != '' ? '&module=' . $_GET['module'] : ''), 'NONSSL') . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL, 'name="cancelButton"') . '</a>'); 00302 break; 00303 case 'edit': 00304 if (!$is_ssl_protected && in_array($_GET['module'], array('paypaldp', 'linkpoint_api', 'authorizenet_aim', 'authorizenet_echeck'))) break; 00305 $keys = ''; 00306 reset($mInfo->keys); 00307 while (list($key, $value) = each($mInfo->keys)) { 00308 $keys .= '<b>' . $value['title'] . '</b><br>' . $value['description'] . '<br>'; 00309 if ($value['set_function']) { 00310 eval('$keys .= ' . $value['set_function'] . "'" . $value['value'] . "', '" . $key . "');"); 00311 } else { 00312 $keys .= zen_draw_input_field('configuration[' . $key . ']', htmlspecialchars($value['value'], ENT_COMPAT, CHARSET, TRUE)); 00313 } 00314 $keys .= '<br><br>'; 00315 } 00316 $keys = substr($keys, 0, strrpos($keys, '<br><br>')); 00317 $heading[] = array('text' => '<b>' . $mInfo->title . '</b>'); 00318 $contents = array('form' => zen_draw_form('modules', FILENAME_MODULES, 'set=' . $set . ($_GET['module'] != '' ? '&module=' . $_GET['module'] : '') . '&action=save', 'post', '', true)); 00319 if (ADMIN_CONFIGURATION_KEY_ON == 1) { 00320 $contents[] = array('text' => '<strong>Key: ' . $mInfo->code . '</strong><br />'); 00321 } 00322 $contents[] = array('text' => $keys); 00323 $contents[] = array('align' => 'center', 'text' => '<br>' . zen_image_submit('button_update.gif', IMAGE_UPDATE, 'name="saveButton"') . ' <a href="' . zen_href_link(FILENAME_MODULES, 'set=' . $set . ($_GET['module'] != '' ? '&module=' . $_GET['module'] : ''), 'NONSSL') . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL, 'name="cancelButton"') . '</a>'); 00324 break; 00325 default: 00326 $heading[] = array('text' => '<b>' . $mInfo->title . '</b>'); 00327 00328 if ($mInfo->status == '1') { 00329 $keys = ''; 00330 reset($mInfo->keys); 00331 while (list(, $value) = each($mInfo->keys)) { 00332 $keys .= '<b>' . $value['title'] . '</b><br>'; 00333 if ($value['use_function']) { 00334 $use_function = $value['use_function']; 00335 if (preg_match('/->/', $use_function)) { 00336 $class_method = explode('->', $use_function); 00337 if (!is_object(${$class_method[0]})) { 00338 include(DIR_WS_CLASSES . $class_method[0] . '.php'); 00339 ${$class_method[0]} = new $class_method[0](); 00340 } 00341 $keys .= zen_call_function($class_method[1], $value['value'], ${$class_method[0]}); 00342 } else { 00343 $keys .= zen_call_function($use_function, $value['value']); 00344 } 00345 } else { 00346 $keys .= $value['value']; 00347 } 00348 $keys .= '<br><br>'; 00349 } 00350 00351 if (ADMIN_CONFIGURATION_KEY_ON == 1) { 00352 $contents[] = array('text' => '<strong>Key: ' . $mInfo->code . '</strong><br />'); 00353 } 00354 $keys = substr($keys, 0, strrpos($keys, '<br><br>')); 00355 if (!(!$is_ssl_protected && in_array($mInfo->code, array('paypaldp', 'linkpoint_api', 'authorizenet_aim', 'authorizenet_echeck')))) { 00356 $contents[] = array('align' => 'center', 'text' => '<a href="' . zen_href_link(FILENAME_MODULES, 'set=' . $set . (isset($_GET['module']) ? '&module=' . $_GET['module'] : '') . '&action=edit', 'NONSSL') . '">' . zen_image_button('button_edit.gif', IMAGE_EDIT, 'name="editButton"') . '</a>'); 00357 } else { 00358 $contents[] = array('align' => 'center', 'text' => TEXT_WARNING_SSL_EDIT); 00359 } 00360 $contents[] = array('align' => 'center', 'text' => '<a href="' . zen_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $mInfo->code . '&action=remove', 'NONSSL') . '">' . zen_image_button('button_module_remove.gif', IMAGE_MODULE_REMOVE, 'name="removeButton"') . '</a>'); 00361 $contents[] = array('text' => '<br>' . $mInfo->description); 00362 $contents[] = array('text' => '<br>' . $keys); 00363 } else { 00364 if (!(!$is_ssl_protected && in_array($mInfo->code, array('paypaldp', 'linkpoint_api', 'authorizenet_aim', 'authorizenet_echeck')))) { 00365 $contents[] = array('align' => 'center', 'text' => zen_draw_form('install_module', FILENAME_MODULES, 'set=' . $set . '&action=install') . '<input type="hidden" name="module" value="' . $mInfo->code . '" />' . zen_image_submit('button_module_install.gif', IMAGE_MODULE_INSTALL, 'name="installButton"') . '</form>'); 00366 } else { 00367 $contents[] = array('align' => 'center', 'text' => TEXT_WARNING_SSL_INSTALL); 00368 } 00369 $contents[] = array('text' => '<br>' . $mInfo->description); 00370 } 00371 break; 00372 } 00373 if ( (zen_not_null($heading)) && (zen_not_null($contents)) ) { 00374 echo ' <td width="25%" valign="top">' . "\n"; 00375 $box = new box; 00376 echo $box->infoBox($heading, $contents); 00377 echo ' </td>' . "\n"; 00378 } 00379 ?> 00380 </tr> 00381 </table></td> 00382 </tr> 00383 </table></td> 00384 <!-- body_text_eof //--> 00385 </tr> 00386 </table> 00387 <!-- body_eof //--> 00388 <!-- footer //--> 00389 <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> 00390 <!-- footer_eof //--> 00391 <br> 00392 </body> 00393 </html> 00394 <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>