function pw_validate_encrypt($plain)
{
    global $db;
    if (gen_not_null($plain)) {
        $sql = "select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'ENCRYPTION_VALUE'";
        $result = $db->Execute($sql);
        $encrypted = $result->fields['configuration_value'];
        $stack = explode(':', $encrypted);
        if (sizeof($stack) != 2) {
            return false;
        }
        if (md5($stack[1] . $plain) == $stack[0]) {
            return true;
        }
    }
    return false;
}
 function btn_update()
 {
     // updates the currency rates
     global $db, $messageStack;
     /* commented out so everyone can update currency exchange rates
     	if ($this->security_id < 1) {
     		$messageStack->add(ERROR_NO_PERMISSION,'error');
     		return false;
     	}
     */
     $server_used = CURRENCY_SERVER_PRIMARY;
     $currency = $db->Execute("select currencies_id, code, title from " . $this->db_table);
     while (!$currency->EOF) {
         $quote_function = 'quote_' . CURRENCY_SERVER_PRIMARY . '_currency';
         $rate = $quote_function($currency->fields['code']);
         if (empty($rate) && gen_not_null(CURRENCY_SERVER_BACKUP)) {
             $messageStack->add(sprintf(SETUP_WARN_PRIMARY_SERVER_FAILED, CURRENCY_SERVER_PRIMARY, $currency->fields['title'], $currency->fields['code']), 'caution');
             $quote_function = 'quote_' . CURRENCY_SERVER_BACKUP . '_currency';
             $rate = $quote_function($currency->fields['code']);
             $server_used = CURRENCY_SERVER_BACKUP;
         }
         if (gen_not_null($rate)) {
             $db->Execute("update " . $this->db_table . "\r\n\t\t\t\t\t  set value = '" . $rate . "', last_updated = now()\r\n\t\t\t\t\t  where currencies_id = '" . (int) $currency->fields['currencies_id'] . "'");
             $messageStack->add(sprintf(SETUP_INFO_CURRENCY_UPDATED, $currency->fields['title'], $currency->fields['code'], $server_used), 'success');
         } else {
             $messageStack->add(sprintf(SETUP_ERROR_CURRENCY_INVALID, $currency->fields['title'], $currency->fields['code'], $server_used), 'error');
         }
         $currency->MoveNext();
     }
     return true;
 }
Beispiel #3
0
// | published by the Free Software Foundation, either version 3 of  |
// | the License, or any later version.                              |
// |                                                                 |
// | This program is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of  |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   |
// | GNU General Public License for more details.                    |
// |                                                                 |
// | The license that is bundled with this package is located in the |
// | file: /doc/manual/ch01-Introduction/license.html.               |
// | If not, see http://www.gnu.org/licenses/                        |
// +-----------------------------------------------------------------+
//  Path: /modules/install/index.php
//
require_once 'includes/application_top.php';
if (!isset($_GET['main_page']) || !gen_not_null($_GET['main_page'])) {
    $_GET['main_page'] = 'index';
}
$current_page = $_GET['main_page'];
require_once '../../includes/version.php';
require_once '../general/functions/general.php';
require_once '../general/functions/html_functions.php';
require_once 'language/' . $language . '/language.php';
require_once 'language/' . $language . '/' . $current_page . '.php';
require_once 'pages/' . $current_page . '/header_php.php';
// make sure someone is not trying to hack in
$result = load_company_dropdown();
$blocked_modules = array('index', 'license', 'inspect', 'system_setup');
if (sizeof($result) > 0 && in_array($current_page, $blocked_modules)) {
    die('This installation already has been set up. Please use Company Manager.');
}
Beispiel #4
0
 function FormatRateRequest()
 {
     global $pkg;
     $crlf = chr(13) . chr(10);
     $sBody = '<?xml version="1.0"?>';
     $sBody .= $crlf . '<AccessRequest xml:lang="en-US">';
     $sBody .= $crlf . '<AccessLicenseNumber>' . MODULE_SHIPPING_UPS_ACCESS_KEY . '</AccessLicenseNumber>';
     $sBody .= $crlf . '<UserId>' . MODULE_SHIPPING_UPS_USER_ID . '</UserId>';
     $sBody .= $crlf . '<Password>' . MODULE_SHIPPING_UPS_PASSWORD . '</Password>';
     $sBody .= $crlf . '</AccessRequest>';
     $sBody .= $crlf . '<?xml version="1.0"?>';
     $sBody .= $crlf . '<RatingServiceSelectionRequest xml:lang="en-US">';
     $sBody .= $crlf . '<Request>';
     $sBody .= $crlf . '<TransactionReference>';
     $sBody .= $crlf . '<CustomerContext>Rating and Service</CustomerContext>';
     $sBody .= $crlf . '<XpciVersion>1.0001</XpciVersion>';
     $sBody .= $crlf . '</TransactionReference>';
     $sBody .= $crlf . '<RequestAction>' . 'rate' . '</RequestAction>';
     // must be rate for tool to work
     $sBody .= $crlf . '<RequestOption>' . 'shop' . '</RequestOption>';
     // must be shop to
     $sBody .= $crlf . '</Request>';
     $sBody .= $crlf . '<PickupType><Code>' . $pkg->pickup_service . '</Code></PickupType>';
     $sBody .= $crlf . '<CustomerClassification><Code>' . '01' . '</Code></CustomerClassification>';
     // wholesale (default for PickupType 01)
     $sBody .= $crlf . '<Shipment>';
     $sBody .= $crlf . '<Shipper>';
     $sBody .= $crlf . '<ShipperNumber>' . MODULE_SHIPPING_UPS_SHIPPER_NUMBER . '</ShipperNumber>';
     $sBody .= $crlf . '<Address>';
     if (COMPANY_CITY_TOWN) {
         $sBody .= $crlf . '<City>' . COMPANY_CITY_TOWN . '</City>';
     }
     if (COMPANY_ZONE) {
         $sBody .= $crlf . '<StateProvinceCode>' . COMPANY_ZONE . '</StateProvinceCode>';
     }
     if (COMPANY_POSTAL_CODE) {
         $sBody .= $crlf . '<PostalCode>' . COMPANY_POSTAL_CODE . '</PostalCode>';
     }
     //		$country_name = gen_get_country_iso_2(COMPANY_COUNTRY);
     $sBody .= $crlf . '<CountryCode>' . gen_get_country_iso_2_from_3(COMPANY_COUNTRY) . '</CountryCode>';
     $sBody .= $crlf . '</Address>';
     $sBody .= $crlf . '</Shipper>';
     $sBody .= $crlf . '<ShipTo>';
     $sBody .= $crlf . '<Address>';
     if ($pkg->ship_to_city) {
         $sBody .= $crlf . '<City>' . $pkg->ship_to_city . '</City>';
     }
     if ($pkg->ship_to_state) {
         $sBody .= $crlf . '<StateProvinceCode>' . strtoupper($pkg->ship_to_state) . '</StateProvinceCode>';
     }
     if ($pkg->ship_to_postal_code) {
         $sBody .= $crlf . '<PostalCode>' . $pkg->ship_to_postal_code . '</PostalCode>';
     }
     //		$country_name = gen_get_country_iso_2($pkg->ship_to_country_code);
     $sBody .= $crlf . '<CountryCode>' . $pkg->ship_to_country_iso2 . '</CountryCode>';
     if ($pkg->residential_address) {
         $sBody .= $crlf . '<ResidentialAddress></ResidentialAddress>';
     }
     $sBody .= $crlf . '</Address>';
     $sBody .= $crlf . '</ShipTo>';
     $sBody .= $crlf . '<ShipFrom>';
     $sBody .= $crlf . '<Address>';
     if ($pkg->ship_city_town) {
         $sBody .= $crlf . '<City>' . $pkg->ship_city_town . '</City>';
     }
     if ($pkg->ship_state_province) {
         $sBody .= $crlf . '<StateProvinceCode>' . strtoupper($pkg->ship_state_province) . '</StateProvinceCode>';
     }
     if ($pkg->ship_postal_code) {
         $sBody .= $crlf . '<PostalCode>' . $pkg->ship_postal_code . '</PostalCode>';
     }
     //		$country_name = gen_get_country_iso_2($pkg->ship_country_code);
     $sBody .= $crlf . '<CountryCode>' . $pkg->ship_from_country_iso2 . '</CountryCode>';
     $sBody .= $crlf . '</Address>';
     $sBody .= $crlf . '</ShipFrom>';
     $sBody .= $crlf . '<ShipmentWeight>';
     $sBody .= $crlf . '<UnitOfMeasurement><Code>' . $pkg->pkg_weight_unit . '</Code></UnitOfMeasurement>';
     $ShipmentWeight = 0;
     foreach ($this->package as $pkgnum) {
         $ShipmentWeight += $pkgnum['weight'];
     }
     $sBody .= $crlf . '<Weight>' . $ShipmentWeight . '</Weight>';
     $sBody .= $crlf . '</ShipmentWeight>';
     foreach ($this->package as $pkgnum) {
         // Enter each package
         $sBody .= $crlf . '<Package>';
         $sBody .= $crlf . '<PackagingType><Code>' . $pkgnum['PackageTypeCode'] . '</Code></PackagingType>';
         $sBody .= $crlf . '<Dimensions>';
         $sBody .= $crlf . '<UnitOfMeasurement><Code>' . $pkgnum['DimensionUnit'] . '</Code></UnitOfMeasurement>';
         $sBody .= $crlf . '<Length>' . $pkgnum['Length'] . '</Length>';
         $sBody .= $crlf . '<Width>' . $pkgnum['Width'] . '</Width>';
         $sBody .= $crlf . '<Height>' . $pkgnum['Height'] . '</Height>';
         $sBody .= $crlf . '</Dimensions>';
         $sBody .= $crlf . '<PackageWeight>';
         $sBody .= $crlf . '<UnitOfMeasurement><Code>' . $pkgnum['WeightUnit'] . '</Code></UnitOfMeasurement>';
         $sBody .= $crlf . '<Weight>' . $pkgnum['Weight'] . '</Weight>';
         $sBody .= $crlf . '</PackageWeight>';
         $temp = '';
         if (gen_not_null($pkgnum['DeliveryConfirmation'])) {
             $temp .= $crlf . '<DeliveryConfirmation>';
             $temp .= $crlf . '<DCISType>' . $pkgnum['DeliveryConfirmation'] . '</DCISType>';
             $temp .= $crlf . '</DeliveryConfirmation>';
         }
         if (gen_not_null($pkgnum['InsuranceCurrencyCode'])) {
             $temp .= $crlf . '<InsuredValue>';
             $temp .= $crlf . '<CurrencyCode>' . $pkgnum['InsuranceCurrencyCode'] . '</CurrencyCode>';
             $temp .= $crlf . '<MonetaryValue>' . $pkgnum['InsuranceValue'] . '</MonetaryValue>';
             $temp .= $crlf . '</InsuredValue>';
         }
         if ($temp) {
             $sBody .= $crlf . '<PackageServiceOptions>' . $temp . $crlf . '</PackageServiceOptions>';
         }
         if ($pkgnum['AdditionalHandling']) {
             $sBody .= $crlf . '<AdditionalHandling></AdditionalHandling>';
         }
         $sBody .= $crlf . '</Package>';
     }
     $temp = '';
     if ($pkg->saturday_pickup) {
         $temp .= $crlf . '<SaturdayPickupIndicator>' . $pkg->saturday_pickup . '</SaturdayPickupIndicator>';
     }
     if ($pkg->saturday_delivery) {
         $temp .= $crlf . '<SaturdayDeliveryIndicator>' . $pkg->saturday_delivery . '</SaturdayDeliveryIndicator>';
     }
     if ($pkg->cod) {
         $temp .= $crlf . '<COD><CODCode>3</CODCode>';
         if ($pkg->cod_payment_type == 1 || $pkg->cod_payment_type == 2 || $pkg->cod_payment_type == 3) {
             $payment_type = '9';
             // check, money order, cashier's check
         } else {
             $payment_type = '1';
             // cash
         }
         $temp .= '<CODFundsCode>' . $payment_type . '</CODFundsCode>';
         $temp .= '<CODAmount><CurrencyCode>' . $pkg->cod_currency . '</CurrencyCode>';
         $temp .= '<MonetaryValue>' . $pkg->cod_amount . '</MonetaryValue></CODAmount>';
         $temp .= '</COD>';
     }
     if ($temp) {
         $sBody .= $crlf . '<ShipmentServiceOptions>' . $temp . $crlf . '</ShipmentServiceOptions>';
     }
     if ($pkg->handling_charge) {
         $sBody .= $crlf . '<HandlingCharge><FlatRate><CurrencyCode>' . $pkg->handling_charge_currency . '</CurrencyCode>';
         $sBody .= '<MonetaryValue>' . $pkg->handling_charge_value . '</MonetaryValue></FlatRate></HandlingCharge>';
     }
     $sBody .= $crlf . '<RateInformation>';
     $sBody .= $crlf . '<NegotiatedRatesIndicator>1</NegotiatedRatesIndicator>';
     $sBody .= $crlf . '</RateInformation>';
     $sBody .= $crlf . '</Shipment>';
     $sBody .= $crlf . '</RatingServiceSelectionRequest>';
     $sBody .= $crlf;
     return $sBody;
 }
Beispiel #5
0
 function tableBox($contents, $direct_output = false)
 {
     $tableBox_string = '<table border="' . gen_output_string($this->table_border) . '" width="' . gen_output_string($this->table_width) . '" cellspacing="' . gen_output_string($this->table_cellspacing) . '" cellpadding="' . gen_output_string($this->table_cellpadding) . '"';
     if (gen_not_null($this->table_parameters)) {
         $tableBox_string .= ' ' . $this->table_parameters;
     }
     $tableBox_string .= '>' . "\n";
     for ($i = 0, $n = sizeof($contents); $i < $n; $i++) {
         if (isset($contents[$i]['form']) && gen_not_null($contents[$i]['form'])) {
             $tableBox_string .= $contents[$i]['form'] . "\n";
         }
         $tableBox_string .= '  <tr';
         if (gen_not_null($this->table_row_parameters)) {
             $tableBox_string .= ' ' . $this->table_row_parameters;
         }
         if (isset($contents[$i]['params']) && gen_not_null($contents[$i]['params'])) {
             $tableBox_string .= ' ' . $contents[$i]['params'];
         }
         $tableBox_string .= '>' . "\n";
         if (isset($contents[$i][0]) && is_array($contents[$i][0])) {
             for ($x = 0, $n2 = sizeof($contents[$i]); $x < $n2; $x++) {
                 if (isset($contents[$i][$x]['text']) && gen_not_null($contents[$i][$x]['text'])) {
                     $tableBox_string .= '    <td';
                     if (isset($contents[$i][$x]['align']) && gen_not_null($contents[$i][$x]['align'])) {
                         $tableBox_string .= ' align="' . gen_output_string($contents[$i][$x]['align']) . '"';
                     }
                     if (isset($contents[$i][$x]['params']) && gen_not_null($contents[$i][$x]['params'])) {
                         $tableBox_string .= ' ' . $contents[$i][$x]['params'];
                     } elseif (gen_not_null($this->table_data_parameters)) {
                         $tableBox_string .= ' ' . $this->table_data_parameters;
                     }
                     $tableBox_string .= '>';
                     if (isset($contents[$i][$x]['form']) && gen_not_null($contents[$i][$x]['form'])) {
                         $tableBox_string .= $contents[$i][$x]['form'];
                     }
                     $tableBox_string .= $contents[$i][$x]['text'];
                     if (isset($contents[$i][$x]['form']) && gen_not_null($contents[$i][$x]['form'])) {
                         $tableBox_string .= '</form>';
                     }
                     $tableBox_string .= '</td>' . "\n";
                 }
             }
         } else {
             $tableBox_string .= '    <td';
             if (isset($contents[$i]['align']) && gen_not_null($contents[$i]['align'])) {
                 $tableBox_string .= ' align="' . gen_output_string($contents[$i]['align']) . '"';
             }
             if (isset($contents[$i]['params']) && gen_not_null($contents[$i]['params'])) {
                 $tableBox_string .= ' ' . $contents[$i]['params'];
             } elseif (gen_not_null($this->table_data_parameters)) {
                 $tableBox_string .= ' ' . $this->table_data_parameters;
             }
             $tableBox_string .= '>' . $contents[$i]['text'] . '</td>' . "\n";
         }
         $tableBox_string .= '  </tr>' . "\n";
         if (isset($contents[$i]['form']) && gen_not_null($contents[$i]['form'])) {
             $tableBox_string .= '</form>' . "\n";
         }
     }
     $tableBox_string .= '</table>' . "\n";
     if ($direct_output == true) {
         echo $tableBox_string;
     }
     return $tableBox_string;
 }
 function tableBlock($contents)
 {
     $tableBox_string = '';
     $form_set = false;
     if (isset($contents['form'])) {
         $tableBox_string .= $contents['form'] . "\n";
         $form_set = true;
         array_shift($contents);
     }
     $tableBox_string .= '<table border="' . $this->table_border . '" width="' . $this->table_width . '" cellspacing="' . $this->table_cellspacing . '" cellpadding="' . $this->table_cellpadding . '"';
     if (gen_not_null($this->table_parameters)) {
         $tableBox_string .= ' ' . $this->table_parameters;
     }
     $tableBox_string .= '>' . "\n";
     for ($i = 0, $n = sizeof($contents); $i < $n; $i++) {
         $tableBox_string .= '  <tr';
         if (gen_not_null($this->table_row_parameters)) {
             $tableBox_string .= ' ' . $this->table_row_parameters;
         }
         if (isset($contents[$i]['params']) && gen_not_null($contents[$i]['params'])) {
             $tableBox_string .= ' ' . $contents[$i]['params'];
         }
         $tableBox_string .= '>' . "\n";
         if (isset($contents[$i][0]) && is_array($contents[$i][0])) {
             for ($x = 0, $y = sizeof($contents[$i]); $x < $y; $x++) {
                 if (isset($contents[$i][$x]['text']) && gen_not_null(isset($contents[$i][$x]['text']))) {
                     $tableBox_string .= '    <td';
                     if (isset($contents[$i][$x]['align']) && gen_not_null($contents[$i][$x]['align'])) {
                         $tableBox_string .= ' align="' . $contents[$i][$x]['align'] . '"';
                     }
                     if (isset($contents[$i][$x]['params']) && gen_not_null(isset($contents[$i][$x]['params']))) {
                         $tableBox_string .= ' ' . $contents[$i][$x]['params'];
                     } elseif (gen_not_null($this->table_data_parameters)) {
                         $tableBox_string .= ' ' . $this->table_data_parameters;
                     }
                     $tableBox_string .= '>';
                     if (isset($contents[$i][$x]['form']) && gen_not_null($contents[$i][$x]['form'])) {
                         $tableBox_string .= $contents[$i][$x]['form'];
                     }
                     $tableBox_string .= $contents[$i][$x]['text'];
                     if (isset($contents[$i][$x]['form']) && gen_not_null($contents[$i][$x]['form'])) {
                         $tableBox_string .= '</form>';
                     }
                     $tableBox_string .= '</td>' . "\n";
                 }
             }
         } else {
             $tableBox_string .= '    <td';
             if (isset($contents[$i]['align']) && gen_not_null($contents[$i]['align'])) {
                 $tableBox_string .= ' align="' . $contents[$i]['align'] . '"';
             }
             if (isset($contents[$i]['params']) && gen_not_null($contents[$i]['params'])) {
                 $tableBox_string .= ' ' . $contents[$i]['params'];
             } elseif (gen_not_null($this->table_data_parameters)) {
                 $tableBox_string .= ' ' . $this->table_data_parameters;
             }
             $tableBox_string .= '>' . $contents[$i]['text'] . '</td>' . "\n";
         }
         $tableBox_string .= '  </tr>' . "\n";
     }
     $tableBox_string .= '</table>' . "\n";
     if ($form_set == true) {
         $tableBox_string .= '</form>' . "\n";
     }
     return $tableBox_string;
 }
Beispiel #7
0
function table_import_csv($structure, $db_table, $filename)
{
    global $db, $messageStack;
    $data = array_map('str_getcsv', file($_FILES[$filename]['tmp_name']));
    // read the header and build array
    if (sizeof($data) < 2) {
        $messageStack->add('The number of lines in the file is to small, a csv file must contain a header line and at least on input line!', 'error');
        return false;
    }
    $header = array_shift($data);
    foreach ($header as $key => $value) {
        $header[$key] = trim($value);
    }
    // build the map structure
    $temp = $structure->Module->Table;
    $map_array = array();
    foreach ($structure->Module->Table as $table) {
        if ($table->Name == $db_table) {
            foreach ($table->Field as $field) {
                $key = array_search($field->TagName, $header);
                if ($key !== false) {
                    $map_array[$key] = array('cnt' => 0, 'table' => $table->Name, 'field' => $field->Name);
                }
            }
            break;
        }
    }
    // build dependent map tables
    $ref_mapping = array();
    if (is_object($table->LinkTable)) {
        $table->LinkTable = array($table->LinkTable);
    }
    if (isset($table->LinkTable)) {
        foreach ($table->LinkTable as $subtable) {
            foreach ($structure->Module->Table as $working) {
                if ($subtable->Name == $working->Name) {
                    $ref_mapping[$subtable->Name] = array('pri_field' => $subtable->PrimaryField, 'ref_field' => $subtable->DependentField);
                    for ($i = 1; $i <= MAX_IMPORT_CSV_ITEMS; $i++) {
                        foreach ($working->Field as $field) {
                            $key = array_search($field->TagName . '_' . $i, $header);
                            if ($key !== false) {
                                $map_array[$key] = array('cnt' => $i, 'table' => $subtable->Name, 'field' => $field->Name);
                            }
                        }
                    }
                }
            }
        }
    }
    foreach ($data as $line) {
        $line_array = $map_array;
        $sql_array = array();
        for ($i = 0; $i < sizeof($line); $i++) {
            $line_array[$i]['value'] = $line[$i];
        }
        foreach ($line_array as $value) {
            if (!$value['table']) {
                continue;
            }
            $sql_array[$value['table']][$value['cnt']][$value['field']] = $value['value'];
        }
        foreach ($sql_array as $table => $count) {
            foreach ($count as $cnt => $table_array) {
                if ($cnt == 0) {
                    // main record, fetch id afterwards
                    if (sizeof($table_array) > 0) {
                        //echo "inserting main record to table $table data: ".print_r($table_array, true).'<br>';
                        db_perform(DB_PREFIX . $table, $table_array, 'insert');
                    }
                    $id = db_insert_id();
                } else {
                    // dependent table
                    $data_present = false;
                    foreach ($table_array as $value) {
                        if (gen_not_null($value)) {
                            $data_present = true;
                        }
                    }
                    if ($data_present) {
                        $table_array[$ref_mapping[$table]['ref_field']] = $id;
                        //echo "inserting main record to table $table data: ".print_r($table_array, true).'<br>';
                        db_perform(DB_PREFIX . $table, $table_array, 'insert');
                    }
                }
            }
        }
    }
}
Beispiel #8
0
 function btn_update()
 {
     // updates the currency rates
     global $db, $messageStack;
     $message = array();
     /* commented out so everyone can update currency exchange rates
       	validate_security($security_level, 1);
     */
     $server_used = CURRENCY_SERVER_PRIMARY;
     $currency = $db->Execute("select currencies_id, code, title from " . $this->db_table);
     while (!$currency->EOF) {
         if ($currency->fields['code'] == $this->def_currency) {
             // skip default currency
             $currency->MoveNext();
             continue;
         }
         $quote_function = 'quote_' . CURRENCY_SERVER_PRIMARY;
         $rate = $this->{$quote_function}($currency->fields['code'], $this->def_currency);
         if (empty($rate) && gen_not_null(CURRENCY_SERVER_BACKUP)) {
             $message[] = sprintf(SETUP_WARN_PRIMARY_SERVER_FAILED, CURRENCY_SERVER_PRIMARY, $currency->fields['title'], $currency->fields['code']);
             $messageStack->add(sprintf(SETUP_WARN_PRIMARY_SERVER_FAILED, CURRENCY_SERVER_PRIMARY, $currency->fields['title'], $currency->fields['code']), 'caution');
             $quote_function = 'quote_' . CURRENCY_SERVER_BACKUP;
             $rate = $this->{$quote_function}($currency->fields['code'], $this->def_currency);
             $server_used = CURRENCY_SERVER_BACKUP;
         }
         if ($rate != 0) {
             $db->Execute("update " . $this->db_table . " set value = '" . $rate . "', last_updated = now()\n\t\t  where currencies_id = '" . (int) $currency->fields['currencies_id'] . "'");
             $message[] = sprintf(SETUP_INFO_CURRENCY_UPDATED, $currency->fields['title'], $currency->fields['code'], $server_used);
             $messageStack->add(sprintf(SETUP_INFO_CURRENCY_UPDATED, $currency->fields['title'], $currency->fields['code'], $server_used), 'success');
         } else {
             $message[] = sprintf(SETUP_ERROR_CURRENCY_INVALID, $currency->fields['title'], $currency->fields['code'], $server_used);
             $messageStack->add(sprintf(SETUP_ERROR_CURRENCY_INVALID, $currency->fields['title'], $currency->fields['code'], $server_used), 'error');
         }
         $currency->MoveNext();
     }
     if (sizeof($message) > 0) {
         $this->message = implode("\n", $message);
     }
     return true;
 }
    $zc_install->error = true;
    $zc_install->fatal_error = true;
    $err_text = ERROR_TEXT_PHP_VERSION;
    $err_code = ERROR_CODE_PHP_VERSION;
    $this_class = 'FAIL';
} else {
    $php_ver = phpversion();
    $this_class = 'OK';
}
$status_check[] = array('Importance' => 'Critical', 'Title' => LABEL_PHP_VER, 'Status' => $php_ver, 'Class' => $this_class, 'HelpURL' => $err_code, 'HelpLabel' => $err_text);
// SAFE MODE check
$safe_mode = ini_get("safe_mode") ? "<span class='errors'>" . ON . '</span>' : OFF;
$status_check[] = array('Importance' => 'Critical', 'Title' => LABEL_SAFE_MODE, 'Status' => $safe_mode, 'Class' => $safe_mode == OFF ? 'OK' : 'FAIL', 'HelpURL' => ERROR_CODE_SAFE_MODE_ON, 'HelpLabel' => ERROR_TEXT_SAFE_MODE_ON);
//OpenBaseDir setting
$open_basedir = ini_get("open_basedir");
$status_check[] = array('Importance' => 'Recommended', 'Title' => LABEL_OPEN_BASEDIR, 'Status' => $open_basedir, 'Class' => gen_not_null($open_basedir) ? 'WARN' : 'OK', 'HelpURL' => '', 'HelpLabel' => 'Could have problems uploading files or doing backups');
//PHP support for Sessions check
$php_ext_sessions = @extension_loaded('session') ? ON : OFF;
$status_check[] = array('Importance' => 'Critical', 'Title' => LABEL_PHP_EXT_SESSIONS, 'Status' => $php_ext_sessions, 'Class' => $php_ext_sessions == ON ? 'OK' : 'FAIL', 'HelpURL' => '', 'HelpLabel' => 'Session Support required in PHP.');
//session.auto_start check
$php_session_auto = ini_get('session.auto_start') ? ON : OFF;
$status_check[] = array('Importance' => 'Recommended', 'Title' => LABEL_PHP_SESSION_AUTOSTART, 'Status' => $php_session_auto, 'Class' => $php_session_auto == ON ? 'WARN' : 'OK', 'HelpURL' => ERROR_CODE_PHP_SESSION_AUTOSTART, 'HelpLabel' => ERROR_TEXT_PHP_SESSION_AUTOSTART);
//session.trans_sid check
$php_session_trans_sid = ini_get('session.use_trans_sid') ? ON : OFF;
$status_check[] = array('Importance' => 'Recommended', 'Title' => LABEL_PHP_SESSION_TRANS_SID, 'Status' => $php_session_trans_sid, 'Class' => $php_session_trans_sid == ON ? 'WARN' : 'OK', 'HelpURL' => ERROR_CODE_PHP_SESSION_TRANS_SID, 'HelpLabel' => ERROR_TEXT_PHP_SESSION_TRANS_SID);
/*
// Check for 'tmp' folder for file-based caching. This checks numerous places, and tests actual writing of a file to those folders.
  $script_filename = $_SERVER['PATH_TRANSLATED'];
  if (empty($script_filename)) {
    $script_filename = $_SERVER['SCRIPT_FILENAME'];
  }
             break;
         }
     }
     $sql_data_array = array('group_id' => $definitions->fields['group_id'], 'custom' => '1', 'security' => $definitions->fields['security'], 'title' => $definition_name, 'description' => $definition_description, 'table_name' => $definitions->fields['table_name'], 'primary_key_field' => $definitions->fields['primary_key_field'], 'params' => serialize($params), 'criteria' => serialize($criteria), 'options' => serialize($options));
     db_perform(TABLE_IMPORT_EXPORT, $sql_data_array, 'update', "id = " . $id);
     gen_add_audit_log(IE_LOG_MESSAGE . TEXT_RENAME, $definitions->fields['title']);
     break;
 case 'copy':
     if ($security_level < 2) {
         $messageStack->add_session(ERROR_NO_PERMISSION, 'error');
         gen_redirect(html_href_link(FILENAME_DEFAULT, gen_get_all_get_params(array('action')), 'SSL'));
         break;
     }
     $definition_name = db_prepare_input($_POST['definition_name']);
     $definition_description = db_prepare_input($_POST['definition_description']);
     if (!gen_not_null($definition_name)) {
         $messageStack->add(IE_ERROR_NO_NAME, 'error');
         break;
     }
     $duplicates = $db->Execute("select id from " . TABLE_IMPORT_EXPORT . " where title = '" . $definition_name . "'");
     if ($duplicates->RecordCount() > 0) {
         $messageStack->add(IE_ERROR_DUPLICATE_NAME, 'error');
         break;
     }
     $sql_data_array = array('group_id' => $definitions->fields['group_id'], 'custom' => '1', 'security' => $definitions->fields['security'], 'title' => $definition_name, 'description' => $definition_description, 'table_name' => $definitions->fields['table_name'], 'primary_key_field' => $definitions->fields['primary_key_field'], 'params' => serialize($params), 'criteria' => serialize($criteria), 'options' => serialize($options));
     db_perform(TABLE_IMPORT_EXPORT, $sql_data_array, 'insert');
     $id = db_insert_id();
     $sql = "select id, group_id, custom, security, title, description, table_name, primary_key_field \r\n\t  from " . TABLE_IMPORT_EXPORT . " where id = '" . $id . "'";
     $definitions = $db->Execute($sql);
     gen_add_audit_log(IE_LOG_MESSAGE . TEXT_COPY, $definitions->fields['title']);
     break;
Beispiel #11
0
function cfg_select_drop_down($select_array, $key_value, $key = '')
{
    $name = gen_not_null($key) ? 'configuration[' . $key . ']' : 'configuration_value';
    return html_pull_down_menu($name, $select_array, (int) $key_value);
}
            $heading[] = array('text' => '<b>' . (defined($cInfo->configuration_title) ? constant($cInfo->configuration_title) : $cInfo->configuration_title) . '</b>');
            if (ADMIN_CONFIGURATION_KEY_ON == 1) {
                $contents[] = array('text' => '<strong>Key: ' . $cInfo->configuration_key . '</strong><br />');
            }
            if ($_SESSION['admin_security'][SECURITY_ID_CONFIGURATION] > 2) {
                $contents[] = array('align' => 'center', 'text' => html_button_field('edit', TEXT_EDIT, 'onclick="location.href=\'' . html_href_link(FILENAME_DEFAULT, gen_get_all_get_params(array('gID', 'cID', 'action')) . 'gID=' . $_GET['gID'] . '&amp;cID=' . $cInfo->configuration_id . '&amp;action=edit', 'SSL') . '\'"'));
            }
            $contents[] = array('text' => '<br />' . (defined($cInfo->configuration_description) ? constant($cInfo->configuration_description) : $cInfo->configuration_description));
            $contents[] = array('text' => '<br />' . SETUP_INFO_DATE_ADDED . ' ' . gen_date_short($cInfo->date_added));
            if (gen_not_null($cInfo->last_modified)) {
                $contents[] = array('text' => SETUP_INFO_LAST_MODIFIED . ' ' . gen_date_short($cInfo->last_modified));
            }
        }
        break;
}
if (gen_not_null($heading) && gen_not_null($contents)) {
    echo '            <td width="25%" valign="top">' . "\n";
    $box = new box();
    echo $box->infoBox($heading, $contents);
    echo '            </td>' . "\n";
}
?>

          </tr>
        </table></td>
      </tr>
    </table></td>
<!-- body_text_eof //-->
  </tr>
</table>
</form>
function html_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false)
{
    $id = strpos($name, '[') ? false : $name;
    $field = '<select name="' . gen_output_string($name) . '"';
    if ($id) {
        $field .= ' id="' . gen_output_string($id) . '"';
    }
    if (gen_not_null($parameters)) {
        $field .= ' ' . $parameters;
    }
    $field .= '>';
    if (empty($default) && isset($GLOBALS[$name])) {
        $default = stripslashes($GLOBALS[$name]);
    }
    if (sizeof($values) > 0) {
        foreach ($values as $choice) {
            $field .= '<option value="' . gen_output_string($choice['id']) . '"';
            if (is_array($default)) {
                // handles pull down with size and multiple parameters set
                if (in_array($choice['id'], $default)) {
                    $field .= ' selected="selected"';
                }
            } else {
                if ($default == $choice['id']) {
                    $field .= ' selected="selected"';
                }
            }
            $field .= '>' . htmlspecialchars($choice['text']) . '</option>';
        }
    }
    $field .= '</select>';
    if ($required == true) {
        $field .= TEXT_FIELD_REQUIRED;
    }
    return $field;
}
Beispiel #14
0
 function combine_rates()
 {
     //$rate_accounts, $tax_auth_id_add = '', $tax_auth_id_delete = '') {
     $tax_auth_array = explode(':', $this->rate_accounts);
     $new_tax_auth_array = array();
     while ($tax_auth = array_shift($tax_auth_array)) {
         if ($tax_auth != $this->tax_auth_id_delete) {
             $new_tax_auth_array[] = $tax_auth;
         }
     }
     if (gen_not_null($this->tax_auth_id_add)) {
         $new_tax_auth_array[] = $this->tax_auth_id_add;
     }
     $this->rate_accounts = implode(':', $new_tax_auth_array);
     return;
     // implode(':', $new_tax_auth_array);
 }
function db_executeSql($sql_file, $database, $table_prefix = '', $isupgrade = false)
{
    if (!defined('DB_PREFIX')) {
        define('DB_PREFIX', $table_prefix);
    }
    //echo 'start SQL execute';
    global $db;
    $ignored_count = 0;
    // prepare for upgrader processing
    //    if ($isupgrade) gen_create_upgrader_table(); // only creates table if doesn't already exist
    if (!get_cfg_var('safe_mode')) {
        @set_time_limit(1200);
    }
    $lines = file($sql_file);
    //echo 'read number of lines = ' . count($lines) . '<br />';
    $newline = '';
    foreach ($lines as $line) {
        $line = trim($line);
        $keep_together = 1;
        // count of number of lines to treat as a single command
        // split the line into words ... starts at $param[0] and so on.  Also remove the ';' from end of last param if exists
        $param = explode(" ", substr($line, -1) == ';' ? substr($line, 0, strlen($line) - 1) : $line);
        // The following command checks to see if we're asking for a block of commands to be run at once.
        // Syntax: #NEXT_X_ROWS_AS_ONE_COMMAND:6     for running the next 6 commands together (commands denoted by a ;)
        if (substr($line, 0, 28) == '#NEXT_X_ROWS_AS_ONE_COMMAND:') {
            $keep_together = substr($line, 28);
        }
        if (substr($line, 0, 1) != '#' && substr($line, 0, 1) != '-' && $line != '') {
            $line_upper = strtoupper($line);
            switch (true) {
                case substr($line_upper, 0, 21) == 'DROP TABLE IF EXISTS ':
                    $line = 'DROP TABLE IF EXISTS ' . $table_prefix . substr($line, 21);
                    break;
                case substr($line_upper, 0, 11) == 'DROP TABLE ' && $param[2] != 'IF':
                    if (!($checkprivs = db_check_database_privs('DROP'))) {
                        $result = sprintf(REASON_NO_PRIVILEGES, 'DROP');
                    }
                    if (!install_table_exists($param[2]) || gen_not_null($result)) {
                        install_write_to_upgrade_exceptions_table($line, gen_not_null($result) ? $result : sprintf(REASON_TABLE_DOESNT_EXIST, $param[2]), $sql_file);
                        $ignore_line = true;
                        $result = gen_not_null($result) ? $result : sprintf(REASON_TABLE_DOESNT_EXIST, $param[2]);
                        //duplicated here for on-screen error-reporting
                        break;
                    } else {
                        $line = 'DROP TABLE ' . $table_prefix . substr($line, 11);
                    }
                    break;
                case substr($line_upper, 0, 13) == 'CREATE TABLE ':
                    // check to see if table exists
                    $table = strtoupper($param[2] . ' ' . $param[3] . ' ' . $param[4]) == 'IF NOT EXISTS' ? $param[5] : $param[2];
                    $result = install_table_exists($table);
                    if ($result == true) {
                        install_write_to_upgrade_exceptions_table($line, sprintf(REASON_TABLE_ALREADY_EXISTS, $table), $sql_file);
                        $ignore_line = true;
                        $result = sprintf(REASON_TABLE_ALREADY_EXISTS, $table);
                        //duplicated here for on-screen error-reporting
                        break;
                    } else {
                        $line = strtoupper($param[2] . ' ' . $param[3] . ' ' . $param[4]) == 'IF NOT EXISTS' ? 'CREATE TABLE IF NOT EXISTS ' . $table_prefix . substr($line, 27) : 'CREATE TABLE ' . $table_prefix . substr($line, 13);
                    }
                    break;
                case substr($line_upper, 0, 12) == 'INSERT INTO ':
                    //check to see if table prefix is going to match
                    $param[2] = str_replace('`', '', $param[2]);
                    if (!($tbl_exists = install_table_exists($param[2]))) {
                        $result = sprintf(REASON_TABLE_NOT_FOUND, $param[2]) . ' CHECK PREFIXES!';
                    }
                    // check to see if INSERT command may be safely executed for "configuration" or "product_type_layout" tables
                    if ($param[2] == 'configuration' && ($result = install_check_config_key($line)) or !$tbl_exists) {
                        install_write_to_upgrade_exceptions_table($line, $result, $sql_file);
                        $ignore_line = true;
                        break;
                    } else {
                        $line = 'INSERT INTO ' . $table_prefix . substr($line, 12);
                    }
                    break;
                case substr($line_upper, 0, 12) == 'ALTER TABLE ':
                    // check to see if ALTER command may be safely executed
                    if ($result = install_check_alter_command($param)) {
                        install_write_to_upgrade_exceptions_table($line, $result, $sql_file);
                        $ignore_line = true;
                        break;
                    } else {
                        $line = 'ALTER TABLE ' . $table_prefix . substr($line, 12);
                    }
                    break;
                case substr($line_upper, 0, 13) == 'RENAME TABLE ':
                    // RENAME TABLE command cannot be parsed to insert table prefixes, so skip if using prefixes
                    if (gen_not_null(DB_PREFIX)) {
                        install_write_to_upgrade_exceptions_table($line, 'RENAME TABLE command not supported by upgrader. Please use phpMyAdmin instead.', $sql_file);
                        $ignore_line = true;
                    }
                    break;
                case substr($line_upper, 0, 7) == 'UPDATE ':
                    //check to see if table prefix is going to match
                    if (!($tbl_exists = install_table_exists($param[1]))) {
                        install_write_to_upgrade_exceptions_table($line, sprintf(REASON_TABLE_NOT_FOUND, $param[1]) . ' CHECK PREFIXES!', $sql_file);
                        $result = sprintf(REASON_TABLE_NOT_FOUND, $param[1]) . ' CHECK PREFIXES!';
                        $ignore_line = true;
                        break;
                    } else {
                        $line = 'UPDATE ' . $table_prefix . substr($line, 7);
                    }
                    break;
                case substr($line_upper, 0, 12) == 'DELETE FROM ':
                    $line = 'DELETE FROM ' . $table_prefix . substr($line, 12);
                    break;
                case substr($line_upper, 0, 11) == 'DROP INDEX ':
                    // check to see if DROP INDEX command may be safely executed
                    if ($result = install_drop_index_command($param)) {
                        install_write_to_upgrade_exceptions_table($line, $result, $sql_file);
                        $ignore_line = true;
                        break;
                    } else {
                        $line = 'DROP INDEX ' . $param[2] . ' ON ' . $table_prefix . $param[4];
                    }
                    break;
                case substr($line_upper, 0, 13) == 'CREATE INDEX ' || strtoupper($param[0]) == 'CREATE' && strtoupper($param[2]) == 'INDEX':
                    // check to see if CREATE INDEX command may be safely executed
                    if ($result = install_create_index_command($param)) {
                        install_write_to_upgrade_exceptions_table($line, $result, $sql_file);
                        $ignore_line = true;
                        break;
                    } else {
                        if (strtoupper($param[1]) == 'INDEX') {
                            $line = trim('CREATE INDEX ' . $param[2] . ' ON ' . $table_prefix . implode(' ', array($param[4], $param[5], $param[6], $param[7], $param[8], $param[9], $param[10], $param[11], $param[12], $param[13]))) . ';';
                            // add the ';' back since it was removed from $param at start
                        } else {
                            $line = trim('CREATE ' . $param[1] . ' INDEX ' . $param[3] . ' ON ' . $table_prefix . implode(' ', array($param[5], $param[6], $param[7], $param[8], $param[9], $param[10], $param[11], $param[12], $param[13])));
                            // add the ';' back since it was removed from $param at start
                        }
                    }
                    break;
                case substr($line_upper, 0, 8) == 'SELECT (' && substr_count($line, 'FROM ') > 0:
                    $line = str_replace('FROM ', 'FROM ' . $table_prefix, $line);
                    break;
                case substr($line_upper, 0, 10) == 'LEFT JOIN ':
                    $line = 'LEFT JOIN ' . $table_prefix . substr($line, 10);
                    break;
                case substr($line_upper, 0, 5) == 'FROM ':
                    if (substr_count($line, ',') > 0) {
                        // contains FROM and a comma, thus must parse for multiple tablenames
                        $tbl_list = explode(',', substr($line, 5));
                        $line = 'FROM ';
                        foreach ($tbl_list as $val) {
                            $line .= $table_prefix . trim($val) . ',';
                            // add prefix and comma
                        }
                        //end foreach
                        if (substr($line, -1) == ',') {
                            $line = substr($line, 0, strlen($line) - 1);
                        }
                        // remove trailing ','
                    } else {
                        //didn't have a comma, but starts with "FROM ", so insert table prefix
                        $line = str_replace('FROM ', 'FROM ' . $table_prefix, $line);
                    }
                    //endif substr_count(,)
                    break;
                default:
                    break;
            }
            //end switch
            $newline .= $line . ' ';
            if (substr($line, -1) == ';') {
                //found a semicolon, so treat it as a full command, incrementing counter of rows to process at once
                if (substr($newline, -1) == ' ') {
                    $newline = substr($newline, 0, strlen($newline) - 1);
                }
                $lines_to_keep_together_counter++;
                if ($lines_to_keep_together_counter == $keep_together) {
                    // if all grouped rows have been loaded, go to execute.
                    $complete_line = true;
                    $lines_to_keep_together_counter = 0;
                } else {
                    $complete_line = false;
                }
            }
            //endif found ';'
            if ($complete_line) {
                if ($debug == true) {
                    echo (!$ignore_line ? '<br />About to execute.' : 'Ignoring statement. This command WILL NOT be executed.') . '<br />Debug info:<br />$ line=' . $line . '<br />$ complete_line=' . $complete_line . '<br />$ keep_together=' . $keep_together . '<br />SQL=' . $newline . '<br /><br />';
                }
                if (get_magic_quotes_runtime() > 0) {
                    $newline = stripslashes($newline);
                }
                if (trim(str_replace(';', '', $newline)) != '' && !$ignore_line) {
                    $output = $db->Execute($newline);
                }
                $results++;
                $string .= $newline . '<br />';
                $return_output[] = $output;
                if (gen_not_null($result)) {
                    $errors[] = $result;
                }
                // reset var's
                $newline = '';
                $keep_together = 1;
                $complete_line = false;
                if ($ignore_line) {
                    $ignored_count++;
                }
                $ignore_line = false;
                // show progress bar
                global $zc_show_progress;
                if ($zc_show_progress == 'yes') {
                    $counter++;
                    if ($counter / 5 == (int) ($counter / 5)) {
                        echo '~ ';
                    }
                    if ($counter > 200) {
                        echo '<br /><br />';
                        $counter = 0;
                    }
                    @ob_flush();
                    @flush();
                }
            }
            //endif $complete_line
        }
        //endif ! # or -
    }
    // end foreach $lines
    return array('queries' => $results, 'string' => $string, 'output' => $return_output, 'ignored' => $ignored_count, 'errors' => $errors);
}
// define our general functions used application-wide
require DIR_FS_FUNCTIONS . 'gen_functions.php';
require DIR_FS_FUNCTIONS . 'html_functions.php';
// setup our boxes
require DIR_FS_CLASSES . 'table_block.php';
require DIR_FS_CLASSES . 'box.php';
// set the session name and save path
$http_domain = gen_get_top_level_domain(HTTP_SERVER);
$https_domain = gen_get_top_level_domain(HTTPS_SERVER);
$current_domain = $request_type == 'NONSSL' ? $http_domain : $https_domain;
if (SESSION_USE_FQDN == 'False') {
    $current_domain = '.' . $current_domain;
}
// set the session cookie parameters
//   if (function_exists('session_set_cookie_params')) {
session_set_cookie_params(0, '/', gen_not_null($current_domain) ? $current_domain : '');
//  } elseif (function_exists('ini_set')) {
//    @ini_set('session.cookie_lifetime', '0');
//    @ini_set('session.cookie_path', DIR_WS_ADMIN);
//  }
// lets start our session
//  session_save_path(DIR_FS_MY_FILES . 'sessions/');
//  @ini_set('session.gc_probability', 1);
//  @ini_set('session.gc_divisor', 2);
@ini_set('session.gc_maxlifetime', SESSION_TIMEOUT_ADMIN < 900 ? SESSION_TIMEOUT_ADMIN + 900 : SESSION_TIMEOUT_ADMIN);
session_start();
$session_started = true;
// see if the user is logged in
$user_validated = $_SESSION['admin_id'] ? true : false;
// determine what theme to use
if (isset($_POST['theme'])) {
        break;
    case 'search':
    case 'search_reset':
    case 'go_page':
    default:
}
/*****************   prepare to display templates  *************************/
// generate address arrays for javascript
$js_arrays = gen_build_acct_arrays();
// build the list header
$heading_array = array('m.bill_primary_name' => GEN_PRIMARY_NAME, 'm.bill_city_town, m.bill_state_province' => GEN_CITY_TOWN, 'm.bill_state_province, m.bill_city_town' => GEN_STATE_PROVINCE, 'm.postal_code' => GEN_POSTAL_CODE, 'total_amount' => TEXT_BALANCE . (ENABLE_MULTI_CURRENCY ? ' (' . DEFAULT_CURRENCY . ')' : ''));
$result = html_heading_bar($heading_array, $_GET['list_order'], array());
$list_header = $result['html_code'];
$disp_order = $result['disp_order'];
// build the list for the page selected
if (isset($search_text) && gen_not_null($search_text)) {
    $search_fields = array('c.short_name', 'm.bill_primary_name', 'm.bill_contact', 'm.bill_address1', 'm.bill_address2', 'm.bill_city_town', 'm.bill_postal_code', 'm.purchase_invoice_id');
    // hook for inserting new search fields to the query criteria.
    if (is_array($extra_search_fields)) {
        $search_fields = array_merge($search_fields, $extra_search_fields);
    }
    $search = ' and (' . implode(' like \'%' . $search_text . '%\' or ', $search_fields) . ' like \'%' . $search_text . '%\')';
} else {
    $search = '';
}
$field_list = array('m.bill_acct_id', 'm.bill_primary_name', 'm.bill_city_town', 'm.bill_state_province', 'm.bill_postal_code', 'sum(m.total_amount) as ztotal_amount');
// hook to add new fields to the query return results
if (is_array($extra_query_list_fields) > 0) {
    $field_list = array_merge($field_list, $extra_query_list_fields);
}
$query_raw = "select " . implode(', ', $field_list) . " \r\n\tfrom " . TABLE_JOURNAL_MAIN . " m inner join " . TABLE_CONTACTS . " c on m.bill_acct_id = c.id\r\n\twhere c.type = '" . (ACCOUNT_TYPE == 'v' ? 'v' : 'c') . "' \r\n\tand m.journal_id in " . (ACCOUNT_TYPE == 'v' ? '(6, 7)' : '(12, 13)') . " and m.closed = '0'" . $search . " \r\n\tgroup by m.bill_acct_id order by {$disp_order}";
Beispiel #18
0
function install_check_alter_command($param)
{
    global $db;
    if (!gen_not_null($param)) {
        return "Empty SQL Statement";
    }
    if (!($checkprivs = db_check_database_privs('ALTER'))) {
        return sprintf(REASON_NO_PRIVILEGES, DB_SERVER_USERNAME, DB_SERVER, 'ALTER');
    }
    switch (strtoupper($param[3])) {
        case "ADD":
            if (strtoupper($param[4]) == 'INDEX') {
                // check that the index to be added doesn't already exist
                $index = $param[5];
                $sql = "show index from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo 'KEY: ' . $result->fields['Key_name'] . '<br />';
                    }
                    if ($result->fields['Key_name'] == $index) {
                        return sprintf(REASON_INDEX_ALREADY_EXISTS, $index, $param[2]);
                    }
                    $result->MoveNext();
                }
            } elseif (strtoupper($param[4]) == 'PRIMARY') {
                // check that the primary key to be added doesn't exist
                if ($param[5] != 'KEY') {
                    return;
                }
                $sql = "show index from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo $result->fields['Key_name'] . '<br />';
                    }
                    if ($result->fields['Key_name'] == 'PRIMARY') {
                        return sprintf(REASON_PRIMARY_KEY_ALREADY_EXISTS, $param[2]);
                    }
                    $result->MoveNext();
                }
            } elseif (!in_array(strtoupper($param[4]), array('CONSTRAINT', 'UNIQUE', 'PRIMARY', 'FULLTEXT', 'FOREIGN', 'SPATIAL'))) {
                // check that the column to be added does not exist
                $colname = $param[4] == 'COLUMN' ? $param[5] : $param[4];
                $sql = "show fields from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo $result->fields['Field'] . '<br />';
                    }
                    if ($result->fields['Field'] == $colname) {
                        return sprintf(REASON_COLUMN_ALREADY_EXISTS, $colname);
                    }
                    $result->MoveNext();
                }
                //endif COLUMN
                /* 
                 * @TODO -- add check for AFTER parameter, to check that the AFTER colname specified actually exists first
                 *       -- same with FIRST
                 */
            }
            break;
        case "DROP":
            if (strtoupper($param[4]) == 'INDEX') {
                // check that the index to be dropped exists
                $index = $param[5];
                $sql = "show index from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo $result->fields['Key_name'] . '<br />';
                    }
                    if ($result->fields['Key_name'] == $index) {
                        return;
                        // exists, so return with no error
                    }
                    $result->MoveNext();
                }
                // if we get here, then the index didn't exist
                return sprintf(REASON_INDEX_DOESNT_EXIST_TO_DROP, $index, $param[2]);
            } elseif (strtoupper($param[4]) == 'PRIMARY') {
                // check that the primary key to be dropped exists
                if ($param[5] != 'KEY') {
                    return;
                }
                $sql = "show index from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo $result->fields['Key_name'] . '<br />';
                    }
                    if ($result->fields['Key_name'] == 'PRIMARY') {
                        return;
                        // exists, so return with no error
                    }
                    $result->MoveNext();
                }
                // if we get here, then the primary key didn't exist
                return sprintf(REASON_PRIMARY_KEY_DOESNT_EXIST_TO_DROP, $param[2]);
            } elseif (!in_array(strtoupper($param[4]), array('CONSTRAINT', 'UNIQUE', 'PRIMARY', 'FULLTEXT', 'FOREIGN', 'SPATIAL'))) {
                // check that the column to be dropped exists
                $colname = $param[4] == 'COLUMN' ? $param[5] : $param[4];
                $sql = "show fields from " . DB_PREFIX . $param[2];
                $result = $db->Execute($sql);
                while (!$result->EOF) {
                    if (ZC_UPG_DEBUG3 == true) {
                        echo $result->fields['Field'] . '<br />';
                    }
                    if ($result->fields['Field'] == $colname) {
                        return;
                        // exists, so return with no error
                    }
                    $result->MoveNext();
                }
                // if we get here, then the column didn't exist
                return sprintf(REASON_COLUMN_DOESNT_EXIST_TO_DROP, $colname);
            }
            //endif 'DROP'
            break;
        case "ALTER":
        case "MODIFY":
        case "CHANGE":
            // just check that the column to be changed 'exists'
            $colname = $param[4] == 'COLUMN' ? $param[5] : $param[4];
            $sql = "show fields from " . DB_PREFIX . $param[2];
            $result = $db->Execute($sql);
            while (!$result->EOF) {
                if (ZC_UPG_DEBUG3 == true) {
                    echo $result->fields['Field'] . '<br />';
                }
                if ($result->fields['Field'] == $colname) {
                    return;
                    // exists, so return with no error
                }
                $result->MoveNext();
            }
            // if we get here, then the column didn't exist
            return sprintf(REASON_COLUMN_DOESNT_EXIST_TO_CHANGE, $colname);
            break;
        default:
            // if we get here, then we're processing an ALTER command other than what we're checking for, so let it be processed.
            return;
            break;
    }
    //end switch
}