home *** CD-ROM | disk | FTP | other *** search
/ Practical Internet Web Designer 88 / PIWD88.iso / pc / CONTENTS / ECOMMERCE / SOFTWARE / OSCOMMERCE.EXE / oscommerce-2.2ms2 / catalog / admin / modules.php < prev    next >
PHP Script  |  2003-06-29  |  13KB  |  288 lines

  1. <?php
  2. /*
  3.   $Id: modules.php,v 1.47 2003/06/29 22:50:52 hpdl Exp $
  4.  
  5.   osCommerce, Open Source E-Commerce Solutions
  6.   http://www.oscommerce.com
  7.  
  8.   Copyright (c) 2003 osCommerce
  9.  
  10.   Released under the GNU General Public License
  11. */
  12.  
  13.   require('includes/application_top.php');
  14.  
  15.   $set = (isset($HTTP_GET_VARS['set']) ? $HTTP_GET_VARS['set'] : '');
  16.  
  17.   if (tep_not_null($set)) {
  18.     switch ($set) {
  19.       case 'shipping':
  20.         $module_type = 'shipping';
  21.         $module_directory = DIR_FS_CATALOG_MODULES . 'shipping/';
  22.         $module_key = 'MODULE_SHIPPING_INSTALLED';
  23.         define('HEADING_TITLE', HEADING_TITLE_MODULES_SHIPPING);
  24.         break;
  25.       case 'ordertotal':
  26.         $module_type = 'order_total';
  27.         $module_directory = DIR_FS_CATALOG_MODULES . 'order_total/';
  28.         $module_key = 'MODULE_ORDER_TOTAL_INSTALLED';
  29.         define('HEADING_TITLE', HEADING_TITLE_MODULES_ORDER_TOTAL);
  30.         break;
  31.       case 'payment':
  32.       default:
  33.         $module_type = 'payment';
  34.         $module_directory = DIR_FS_CATALOG_MODULES . 'payment/';
  35.         $module_key = 'MODULE_PAYMENT_INSTALLED';
  36.         define('HEADING_TITLE', HEADING_TITLE_MODULES_PAYMENT);
  37.         break;
  38.     }
  39.   }
  40.  
  41.   $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : '');
  42.  
  43.   if (tep_not_null($action)) {
  44.     switch ($action) {
  45.       case 'save':
  46.         while (list($key, $value) = each($HTTP_POST_VARS['configuration'])) {
  47.           tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $value . "' where configuration_key = '" . $key . "'");
  48.         }
  49.         tep_redirect(tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $HTTP_GET_VARS['module']));
  50.         break;
  51.       case 'install':
  52.       case 'remove':
  53.         $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.'));
  54.         $class = basename($HTTP_GET_VARS['module']);
  55.         if (file_exists($module_directory . $class . $file_extension)) {
  56.           include($module_directory . $class . $file_extension);
  57.           $module = new $class;
  58.           if ($action == 'install') {
  59.             $module->install();
  60.           } elseif ($action == 'remove') {
  61.             $module->remove();
  62.           }
  63.         }
  64.         tep_redirect(tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class));
  65.         break;
  66.     }
  67.   }
  68. ?>
  69. <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
  70. <html <?php echo HTML_PARAMS; ?>>
  71. <head>
  72. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
  73. <title><?php echo TITLE; ?></title>
  74. <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
  75. <script language="javascript" src="includes/general.js"></script>
  76. </head>
  77. <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF">
  78. <!-- header //-->
  79. <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
  80. <!-- header_eof //-->
  81.  
  82. <!-- body //-->
  83. <table border="0" width="100%" cellspacing="2" cellpadding="2">
  84.   <tr>
  85.     <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft">
  86. <!-- left_navigation //-->
  87. <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
  88. <!-- left_navigation_eof //-->
  89.     </table></td>
  90. <!-- body_text //-->
  91.     <td width="100%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
  92.       <tr>
  93.         <td width="100%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
  94.           <tr>
  95.             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  96.             <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
  97.           </tr>
  98.         </table></td>
  99.       </tr>
  100.       <tr>
  101.         <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
  102.           <tr>
  103.             <td valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
  104.               <tr class="dataTableHeadingRow">
  105.                 <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_MODULES; ?></td>
  106.                 <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_SORT_ORDER; ?></td>
  107.                 <td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>
  108.               </tr>
  109. <?php
  110.   $file_extension = substr($PHP_SELF, strrpos($PHP_SELF, '.'));
  111.   $directory_array = array();
  112.   if ($dir = @dir($module_directory)) {
  113.     while ($file = $dir->read()) {
  114.       if (!is_dir($module_directory . $file)) {
  115.         if (substr($file, strrpos($file, '.')) == $file_extension) {
  116.           $directory_array[] = $file;
  117.         }
  118.       }
  119.     }
  120.     sort($directory_array);
  121.     $dir->close();
  122.   }
  123.  
  124.   $installed_modules = array();
  125.   for ($i=0, $n=sizeof($directory_array); $i<$n; $i++) {
  126.     $file = $directory_array[$i];
  127.  
  128.     include(DIR_FS_CATALOG_LANGUAGES . $language . '/modules/' . $module_type . '/' . $file);
  129.     include($module_directory . $file);
  130.  
  131.     $class = substr($file, 0, strrpos($file, '.'));
  132.     if (tep_class_exists($class)) {
  133.       $module = new $class;
  134.       if ($module->check() > 0) {
  135.         if ($module->sort_order > 0) {
  136.           $installed_modules[$module->sort_order] = $file;
  137.         } else {
  138.           $installed_modules[] = $file;
  139.         }
  140.       }
  141.  
  142.       if ((!isset($HTTP_GET_VARS['module']) || (isset($HTTP_GET_VARS['module']) && ($HTTP_GET_VARS['module'] == $class))) && !isset($mInfo)) {
  143.         $module_info = array('code' => $module->code,
  144.                              'title' => $module->title,
  145.                              'description' => $module->description,
  146.                              'status' => $module->check());
  147.  
  148.         $module_keys = $module->keys();
  149.  
  150.         $keys_extra = array();
  151.         for ($j=0, $k=sizeof($module_keys); $j<$k; $j++) {
  152.           $key_value_query = tep_db_query("select configuration_title, configuration_value, configuration_description, use_function, set_function from " . TABLE_CONFIGURATION . " where configuration_key = '" . $module_keys[$j] . "'");
  153.           $key_value = tep_db_fetch_array($key_value_query);
  154.  
  155.           $keys_extra[$module_keys[$j]]['title'] = $key_value['configuration_title'];
  156.           $keys_extra[$module_keys[$j]]['value'] = $key_value['configuration_value'];
  157.           $keys_extra[$module_keys[$j]]['description'] = $key_value['configuration_description'];
  158.           $keys_extra[$module_keys[$j]]['use_function'] = $key_value['use_function'];
  159.           $keys_extra[$module_keys[$j]]['set_function'] = $key_value['set_function'];
  160.         }
  161.  
  162.         $module_info['keys'] = $keys_extra;
  163.  
  164.         $mInfo = new objectInfo($module_info);
  165.       }
  166.  
  167.       if (isset($mInfo) && is_object($mInfo) && ($class == $mInfo->code) ) {
  168.         if ($module->check() > 0) {
  169.           echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class . '&action=edit') . '\'">' . "\n";
  170.         } else {
  171.           echo '              <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)">' . "\n";
  172.         }
  173.       } else {
  174.         echo '              <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class) . '\'">' . "\n";
  175.       }
  176. ?>
  177.                 <td class="dataTableContent"><?php echo $module->title; ?></td>
  178.                 <td class="dataTableContent" align="right"><?php if (is_numeric($module->sort_order)) echo $module->sort_order; ?></td>
  179.                 <td class="dataTableContent" align="right"><?php if (isset($mInfo) && is_object($mInfo) && ($class == $mInfo->code) ) { echo tep_image(DIR_WS_IMAGES . 'icon_arrow_right.gif'); } else { echo '<a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $class) . '">' . tep_image(DIR_WS_IMAGES . 'icon_info.gif', IMAGE_ICON_INFO) . '</a>'; } ?> </td>
  180.               </tr>
  181. <?php
  182.     }
  183.   }
  184.  
  185.   ksort($installed_modules);
  186.   $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = '" . $module_key . "'");
  187.   if (tep_db_num_rows($check_query)) {
  188.     $check = tep_db_fetch_array($check_query);
  189.     if ($check['configuration_value'] != implode(';', $installed_modules)) {
  190.       tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . implode(';', $installed_modules) . "', last_modified = now() where configuration_key = '" . $module_key . "'");
  191.     }
  192.   } else {
  193.     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Installed Modules', '" . $module_key . "', '" . implode(';', $installed_modules) . "', 'This is automatically updated. No need to edit.', '6', '0', now())");
  194.   }
  195. ?>
  196.               <tr>
  197.                 <td colspan="3" class="smallText"><?php echo TEXT_MODULE_DIRECTORY . ' ' . $module_directory; ?></td>
  198.               </tr>
  199.             </table></td>
  200. <?php
  201.   $heading = array();
  202.   $contents = array();
  203.  
  204.   switch ($action) {
  205.     case 'edit':
  206.       $keys = '';
  207.       reset($mInfo->keys);
  208.       while (list($key, $value) = each($mInfo->keys)) {
  209.         $keys .= '<b>' . $value['title'] . '</b><br>' . $value['description'] . '<br>';
  210.  
  211.         if ($value['set_function']) {
  212.           eval('$keys .= ' . $value['set_function'] . "'" . $value['value'] . "', '" . $key . "');");
  213.         } else {
  214.           $keys .= tep_draw_input_field('configuration[' . $key . ']', $value['value']);
  215.         }
  216.         $keys .= '<br><br>';
  217.       }
  218.       $keys = substr($keys, 0, strrpos($keys, '<br><br>'));
  219.  
  220.       $heading[] = array('text' => '<b>' . $mInfo->title . '</b>');
  221.  
  222.       $contents = array('form' => tep_draw_form('modules', FILENAME_MODULES, 'set=' . $set . '&module=' . $HTTP_GET_VARS['module'] . '&action=save'));
  223.       $contents[] = array('text' => $keys);
  224.       $contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $HTTP_GET_VARS['module']) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');
  225.       break;
  226.     default:
  227.       $heading[] = array('text' => '<b>' . $mInfo->title . '</b>');
  228.  
  229.       if ($mInfo->status == '1') {
  230.         $keys = '';
  231.         reset($mInfo->keys);
  232.         while (list(, $value) = each($mInfo->keys)) {
  233.           $keys .= '<b>' . $value['title'] . '</b><br>';
  234.           if ($value['use_function']) {
  235.             $use_function = $value['use_function'];
  236.             if (ereg('->', $use_function)) {
  237.               $class_method = explode('->', $use_function);
  238.               if (!is_object(${$class_method[0]})) {
  239.                 include(DIR_WS_CLASSES . $class_method[0] . '.php');
  240.                 ${$class_method[0]} = new $class_method[0]();
  241.               }
  242.               $keys .= tep_call_function($class_method[1], $value['value'], ${$class_method[0]});
  243.             } else {
  244.               $keys .= tep_call_function($use_function, $value['value']);
  245.             }
  246.           } else {
  247.             $keys .= $value['value'];
  248.           }
  249.           $keys .= '<br><br>';
  250.         }
  251.         $keys = substr($keys, 0, strrpos($keys, '<br><br>'));
  252.  
  253.         $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $mInfo->code . '&action=remove') . '">' . tep_image_button('button_module_remove.gif', IMAGE_MODULE_REMOVE) . '</a> <a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . (isset($HTTP_GET_VARS['module']) ? '&module=' . $HTTP_GET_VARS['module'] : '') . '&action=edit') . '">' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a>');
  254.         $contents[] = array('text' => '<br>' . $mInfo->description);
  255.         $contents[] = array('text' => '<br>' . $keys);
  256.       } else {
  257.         $contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_MODULES, 'set=' . $set . '&module=' . $mInfo->code . '&action=install') . '">' . tep_image_button('button_module_install.gif', IMAGE_MODULE_INSTALL) . '</a>');
  258.         $contents[] = array('text' => '<br>' . $mInfo->description);
  259.       }
  260.       break;
  261.   }
  262.  
  263.   if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
  264.     echo '            <td width="25%" valign="top">' . "\n";
  265.  
  266.     $box = new box;
  267.     echo $box->infoBox($heading, $contents);
  268.  
  269.     echo '            </td>' . "\n";
  270.   }
  271. ?>
  272.           </tr>
  273.         </table></td>
  274.       </tr>
  275.     </table></td>
  276. <!-- body_text_eof //-->
  277.   </tr>
  278. </table>
  279. <!-- body_eof //-->
  280.  
  281. <!-- footer //-->
  282. <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
  283. <!-- footer_eof //-->
  284. <br>
  285. </body>
  286. </html>
  287. <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  288.