Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

SambaMambo

Pioneers
  • Posts

    58
  • Joined

  • Last visited

Everything posted by SambaMambo

  1. well, you just need to change the ip locator api edit /admin/whos_online.php and change to this (line 160): //Function to get IP address geolocation data from IPInfoDB and update whos_online table function updateIps($ips){ //Old,incesure method //$d = file_get_contents("http://ipinfodb.com/ip_query2.php?ip=$ips"); //Initialize the Curl session $ch = curl_init(); $URL = ("http://api.hostip.info/?ip=$ips"); //Set curl to return the data instead of printing it to the browser. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set the URL, then execute, then close curl_setopt($ch, CURLOPT_URL, $URL); $d = curl_exec($ch); curl_close($ch); //Use backup server if cannot make a connection if (!$d){ //$backup = file_get_contents("http://backup.ipinfodb.com/ip_query2.php?ip=$ips"); $ch = curl_init(); $URL = ("http://api.hostip.info/?ip=$ips");
  2. hello

    i guess you should try this one :

    http://addons.oscommerce.com/info/7195

    Regards,

    JF / SambaMambo

  3. is working hard ^_^

  4. ok i've found the problem there is a conflict with a security fix by TiM-SE about the XSS issue in /includes/functions/database.php /admin//includes/functions/database.php *** Find *** function tep_db_input($string, $link = 'db_link') { global $$link; if (function_exists('mysql_real_escape_string')) { return mysql_real_escape_string($string, $$link); } elseif (function_exists('mysql_escape_string')) { return mysql_escape_string($string); } return addslashes($string); } *** Replace with *** // Added below for [TiM's osC Solutions] Safer Database Input Method: $allowable_tags = false // To allow tags, either pass (boolean)true for all tags or example (string)'<b><i>' for certain tags. function tep_db_input($string, $link = 'db_link', $allowable_tags = false) { global $$link; // BOF: [TiM's osC Solutions] Safer Database Input Method if ($allowable_tags === false || is_string($allowable_tags)) { $string = strip_tags($string, $allowable_tags); } // EOF: [TiM's osC Solutions] Safer Database Input Method if (function_exists('mysql_real_escape_string')) { return mysql_real_escape_string($string, $$link); } elseif (function_exists('mysql_escape_string')) { return mysql_escape_string($string); } return addslashes($string); } i'm going to send a message to TiM and see with him if he can fix that. Thanks
  5. ok it works on a clean osc i'm going to check the diffrence and let you know if i have with which contrib there is a conflict
  6. i tryed soft and hard but nothing change i'm going to test it on a clean osc
  7. what do you mean??? where do i have to set it ? in the /admin/includes/functions/html_output.php ? where and how? i'm going to test it on a clean osc
  8. hi im trying to install this contrib and make it works but here's the problem : When i try to make a new product, the CKEditor appears on the edit page when i click on preview the text is well formatted but then when i click save and look at the front-office, the text is not formatted. so then i go back to the back-office and edit the new product i've made and the text is unformated into the ckeditor area. do you have any idea why it happens? thanks
  9. hi im going to test this oscommerce but i wonder if the author still support it or not? also the demo is offline does someone test it and manage to get it working properly? thanks.
  10. http://addons.oscommerce.com/info/7271 best regards ;)
  11. hi just go to your admin panel and add the special character like this : l'=> and reset the cache i've just test it and it works fine
  12. thanks for the answer the file html_output.php wasnt upload properly now it works perfectly. i just don't know what happen during the transfert... Great contrib. i'm going to make a french translation . Thanks
  13. hi i wanted to test your contrib but without success. i've installed a fresh osc MS2.2rc2a and then i uploads the /uploads/ and /drop on top/ folders run the database installer.php chmod the cache folder and copy the htaccess.txt to my .htaccess switch standard to rewrite throught the admin panel. when i go to the shop and try to click on a product i can see that the rewrite is not working as it still have the product_info.php?id=... urls i put the debug mode on to see what happen and it seems that nothing is rewriting and nothing is in the cache i just dont understand what i've done wrong... also i know that rewrite is working on my server as i use the ultimate from chemo and its working fine ... any help would be appreciate Thanks
  14. ok in the stylesheet you must remove the / before the /highslide/etc../etc.. directories. then it works fine :)
  15. you should copy the style into the stylesheet.css in order to get load by firefox and i.e now i get the loading message but nothing load... i'm still trying to make it work for the 2.2rc2a. If anyone has arrived to do it... tell us! ^^
  16. Just installed this addons and it's really perfect for a tiny gallery! Thanks to all contributors. i just have a little problem when i cick on the image it open the image in the same page so the site is gone and we just can't return to the site. it seems to have a problem with the highslide function (i removed the echo http_server) anyone else have this problem?
  17. to quick : scroll this thred i saw someone with the same error you get and i saw an answer from surfalot with all codes to change ...
  18. ok what i've done : edit includes/functions/featured_sets.php remove those lines : //// // Sets the status of a featured product function tep_set_featured_status($products_id, $featured) { return tep_db_query("update " . TABLE_PRODUCTS . " set products_featured = '" . $featured . "', products_last_modified = now() where products_id = '" . (int)$products_id . "'"); } //// // Auto expire products on special function tep_expire_featured() { $featured_query = tep_db_query("SELECT products_id from " . TABLE_PRODUCTS . " where products_featured = '1' and now() >= products_featured_until and products_featured_until > 0"); if (tep_db_num_rows($featured_query)) { while ($featured = tep_db_fetch_array($featured_query)) { tep_set_featured_status($featured['products_id'], '0'); } } } that's it! it works now. surfalot : do you have any idea why i have to do this to get it working? Thx
  19. ok i manage to get the admin work but i still the problem in the front so if you have any clue... Thx
  20. for Quick : it's a mysql 5.0 error : http://www.oscommerce.com/ext/update-20051...l#_Toc119473702 update your oscommerce
  21. hi surfalot i'm trying to install your contrib to my MS2.2 i got 2 errors already mentionned in that thread but mike25 didn't tell how he resolved them so ... in front page i have : Fatal error: Call to undefined function: tep_set_categories_featured() in /*****/*****/*****/boutique/admin/categories.php on line 56 in admin when i try to set as "true" some products or any categories : Fatal error: Cannot redeclare tep_set_featured_status() (previously declared in /home.10.17/neoayato/www/boutique/includes/functions/featured.php:16) in /home.10.17/neoayato/www/boutique/includes/functions/featured_sets.php on line 30 you said to check if we have declare the fucntion in admin/includes/functions/general.php and i check twice and yes i pasted everything from your package. so here my general.php : <?php /* $Id: general.php,v 1.160 2003/07/12 08:32:47 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ //Admin begin //// //Check login and file access function tep_admin_check_login() { global $PHP_SELF, $login_groups_id; if (!tep_session_is_registered('login_id')) { tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } else { $filename = basename( $PHP_SELF ); if ($filename != FILENAME_DEFAULT && $filename != FILENAME_FORBIDEN && $filename != FILENAME_LOGOFF && $filename != FILENAME_ADMIN_ACCOUNT && $filename != FILENAME_POPUP_IMAGE && $filename != 'packingslip.php' && $filename != 'invoice.php') { $db_file_query = tep_db_query("select admin_files_name from " . TABLE_ADMIN_FILES . " where FIND_IN_SET( '" . $login_groups_id . "', admin_groups_id) and admin_files_name = '" . $filename . "'"); if (!tep_db_num_rows($db_file_query)) { tep_redirect(tep_href_link(FILENAME_FORBIDEN)); } } } } //// //Return 'true' or 'false' value to display boxes and files in index.php and column_left.php function tep_admin_check_boxes($filename, $boxes='') { global $login_groups_id; $is_boxes = 1; if ($boxes == 'sub_boxes') { $is_boxes = 0; } $dbquery = tep_db_query("select admin_files_id from " . TABLE_ADMIN_FILES . " where FIND_IN_SET( '" . $login_groups_id . "', admin_groups_id) and admin_files_is_boxes = '" . $is_boxes . "' and admin_files_name = '" . $filename . "'"); $return_value = false; if (tep_db_num_rows($dbquery)) { $return_value = true; } return $return_value; } //// //Return files stored in box that can be accessed by user function tep_admin_files_boxes($filename, $sub_box_name) { global $login_groups_id; $sub_boxes = ''; $dbquery = tep_db_query("select admin_files_name from " . TABLE_ADMIN_FILES . " where FIND_IN_SET( '" . $login_groups_id . "', admin_groups_id) and admin_files_is_boxes = '0' and admin_files_name = '" . $filename . "'"); if (tep_db_num_rows($dbquery)) { $sub_boxes = '<a href="' . tep_href_link($filename) . '" class="menuBoxContentLink">' . $sub_box_name . '</a><br>'; } return $sub_boxes; } //// //Get selected file for index.php function tep_selected_file($filename) { global $login_groups_id; $randomize = FILENAME_ADMIN_ACCOUNT; $dbquery = tep_db_query("select admin_files_id as boxes_id from " . TABLE_ADMIN_FILES . " where FIND_IN_SET( '" . $login_groups_id . "', admin_groups_id) and admin_files_is_boxes = '1' and admin_files_name = '" . $filename . "'"); if (tep_db_num_rows($dbquery)) { $boxes_id = tep_db_fetch_array($dbquery); $randomize_query = tep_db_query("select admin_files_name from " . TABLE_ADMIN_FILES . " where FIND_IN_SET( '" . $login_groups_id . "', admin_groups_id) and admin_files_is_boxes = '0' and admin_files_to_boxes = '" . $boxes_id['boxes_id'] . "'"); if (tep_db_num_rows($randomize_query)) { $file_selected = tep_db_fetch_array($randomize_query); $randomize = $file_selected['admin_files_name']; } } return $randomize; } //Admin end //// // Redirect to another page or site function tep_redirect($url) { global $logger; if ( (strstr($url, "\n") != false) || (strstr($url, "\r") != false) ) { tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); } header('Location: ' . $url); if (STORE_PAGE_PARSE_TIME == 'true') { if (!is_object($logger)) $logger = new logger; $logger->timer_stop(); } exit; } //// // Parse the data used in the html tags to ensure the tags will not break function tep_parse_input_field_data($data, $parse) { return strtr(trim($data), $parse); } function tep_output_string($string, $translate = false, $protected = false) { if ($protected == true) { return htmlspecialchars($string); } else { if ($translate == false) { return tep_parse_input_field_data($string, array('"' => '"')); } else { return tep_parse_input_field_data($string, $translate); } } } function tep_output_string_protected($string) { return tep_output_string($string, false, true); } function tep_sanitize_string($string) { $string = ereg_replace(' +', ' ', $string); return preg_replace("/[<>]/", '_', $string); } function tep_customers_name($customers_id) { $customers = tep_db_query("select customers_firstname, customers_lastname from " . TABLE_CUSTOMERS . " where customers_id = '" . (int)$customers_id . "'"); $customers_values = tep_db_fetch_array($customers); return $customers_values['customers_firstname'] . ' ' . $customers_values['customers_lastname']; } function tep_get_path($current_category_id = '') { global $cPath_array; if ($current_category_id == '') { $cPath_new = implode('_', $cPath_array); } else { if (sizeof($cPath_array) == 0) { $cPath_new = $current_category_id; } else { $cPath_new = ''; $last_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$cPath_array[(sizeof($cPath_array)-1)] . "'"); $last_category = tep_db_fetch_array($last_category_query); $current_category_query = tep_db_query("select parent_id from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'"); $current_category = tep_db_fetch_array($current_category_query); if ($last_category['parent_id'] == $current_category['parent_id']) { for ($i = 0, $n = sizeof($cPath_array) - 1; $i < $n; $i++) { $cPath_new .= '_' . $cPath_array[$i]; } } else { for ($i = 0, $n = sizeof($cPath_array); $i < $n; $i++) { $cPath_new .= '_' . $cPath_array[$i]; } } $cPath_new .= '_' . $current_category_id; if (substr($cPath_new, 0, 1) == '_') { $cPath_new = substr($cPath_new, 1); } } } return 'cPath=' . $cPath_new; } function tep_get_all_get_params($exclude_array = '') { global $HTTP_GET_VARS; if ($exclude_array == '') $exclude_array = array(); $get_url = ''; reset($HTTP_GET_VARS); while (list($key, $value) = each($HTTP_GET_VARS)) { if (($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array))) $get_url .= $key . '=' . $value . '&'; } return $get_url; } function tep_date_long($raw_date) { if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false; $year = (int)substr($raw_date, 0, 4); $month = (int)substr($raw_date, 5, 2); $day = (int)substr($raw_date, 8, 2); $hour = (int)substr($raw_date, 11, 2); $minute = (int)substr($raw_date, 14, 2); $second = (int)substr($raw_date, 17, 2); return strftime(DATE_FORMAT_LONG, mktime($hour, $minute, $second, $month, $day, $year)); } //// // Output a raw date string in the selected locale date format // $raw_date needs to be in this format: YYYY-MM-DD HH:MM:SS // NOTE: Includes a workaround for dates before 01/01/1970 that fail on windows servers function tep_date_short($raw_date) { if ( ($raw_date == '0000-00-00 00:00:00') || ($raw_date == '') ) return false; $year = substr($raw_date, 0, 4); $month = (int)substr($raw_date, 5, 2); $day = (int)substr($raw_date, 8, 2); $hour = (int)substr($raw_date, 11, 2); $minute = (int)substr($raw_date, 14, 2); $second = (int)substr($raw_date, 17, 2); if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) { return date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, $year)); } else { return ereg_replace('2037' . '$', $year, date(DATE_FORMAT, mktime($hour, $minute, $second, $month, $day, 2037))); } } function tep_datetime_short($raw_datetime) { if ( ($raw_datetime == '0000-00-00 00:00:00') || ($raw_datetime == '') ) return false; $year = (int)substr($raw_datetime, 0, 4); $month = (int)substr($raw_datetime, 5, 2); $day = (int)substr($raw_datetime, 8, 2); $hour = (int)substr($raw_datetime, 11, 2); $minute = (int)substr($raw_datetime, 14, 2); $second = (int)substr($raw_datetime, 17, 2); return strftime(DATE_TIME_FORMAT, mktime($hour, $minute, $second, $month, $day, $year)); } function tep_get_category_tree($parent_id = '0', $spacing = '', $exclude = '', $category_tree_array = '', $include_itself = false) { global $languages_id; if (!is_array($category_tree_array)) $category_tree_array = array(); if ( (sizeof($category_tree_array) < 1) && ($exclude != '0') ) $category_tree_array[] = array('id' => '0', 'text' => TEXT_TOP); if ($include_itself) { $category_query = tep_db_query("select cd.categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " cd where cd.language_id = '" . (int)$languages_id . "' and cd.categories_id = '" . (int)$parent_id . "'"); $category = tep_db_fetch_array($category_query); $category_tree_array[] = array('id' => $parent_id, 'text' => $category['categories_name']); } $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and c.parent_id = '" . (int)$parent_id . "' order by c.sort_order, cd.categories_name"); while ($categories = tep_db_fetch_array($categories_query)) { if ($exclude != $categories['categories_id']) $category_tree_array[] = array('id' => $categories['categories_id'], 'text' => $spacing . $categories['categories_name']); $category_tree_array = tep_get_category_tree($categories['categories_id'], $spacing . ' ', $exclude, $category_tree_array); } return $category_tree_array; } function tep_draw_products_pull_down($name, $parameters = '', $exclude = '') { global $currencies, $languages_id; if ($exclude == '') { $exclude = array(); } $select_string = '<select name="' . $name . '"'; if ($parameters) { $select_string .= ' ' . $parameters; } $select_string .= '>'; $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by products_name"); while ($products = tep_db_fetch_array($products_query)) { if (!in_array($products['products_id'], $exclude)) { $select_string .= '<option value="' . $products['products_id'] . '">' . $products['products_name'] . ' (' . $currencies->format($products['products_price']) . ')</option>'; } } $select_string .= '</select>'; return $select_string; } function tep_options_name($options_id) { global $languages_id; $options = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$options_id . "' and language_id = '" . (int)$languages_id . "'"); $options_values = tep_db_fetch_array($options); return $options_values['products_options_name']; } function tep_values_name($values_id) { global $languages_id; $values = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$values_id . "' and language_id = '" . (int)$languages_id . "'"); $values_values = tep_db_fetch_array($values); return $values_values['products_options_values_name']; } function tep_info_image($image, $alt, $width = '', $height = '') { if (tep_not_null($image) && (file_exists(DIR_FS_CATALOG_IMAGES . $image)) ) { $image = tep_image(DIR_WS_CATALOG_IMAGES . $image, $alt, $width, $height); } else { $image = TEXT_IMAGE_NONEXISTENT; } return $image; } function tep_break_string($string, $len, $break_char = '-') { $l = 0; $output = ''; for ($i=0, $n=strlen($string); $i<$n; $i++) { $char = substr($string, $i, 1); if ($char != ' ') { $l++; } else { $l = 0; } if ($l > $len) { $l = 1; $output .= $break_char; } $output .= $char; } return $output; } function tep_get_country_name($country_id) { $country_query = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$country_id . "'"); if (!tep_db_num_rows($country_query)) { return $country_id; } else { $country = tep_db_fetch_array($country_query); return $country['countries_name']; } } function tep_get_zone_name($country_id, $zone_id, $default_zone) { $zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' and zone_id = '" . (int)$zone_id . "'"); if (tep_db_num_rows($zone_query)) { $zone = tep_db_fetch_array($zone_query); return $zone['zone_name']; } else { return $default_zone; } } function tep_not_null($value) { if (is_array($value)) { if (sizeof($value) > 0) { return true; } else { return false; } } else { if ( (is_string($value) || is_int($value)) && ($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) { return true; } else { return false; } } } function tep_browser_detect($component) { global $HTTP_USER_AGENT; return stristr($HTTP_USER_AGENT, $component); } function tep_tax_classes_pull_down($parameters, $selected = '') { $select_string = '<select ' . $parameters . '>'; $classes_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title"); while ($classes = tep_db_fetch_array($classes_query)) { $select_string .= '<option value="' . $classes['tax_class_id'] . '"'; if ($selected == $classes['tax_class_id']) $select_string .= ' SELECTED'; $select_string .= '>' . $classes['tax_class_title'] . '</option>'; } $select_string .= '</select>'; return $select_string; } function tep_geo_zones_pull_down($parameters, $selected = '') { $select_string = '<select ' . $parameters . '>'; $zones_query = tep_db_query("select geo_zone_id, geo_zone_name from " . TABLE_GEO_ZONES . " order by geo_zone_name"); while ($zones = tep_db_fetch_array($zones_query)) { $select_string .= '<option value="' . $zones['geo_zone_id'] . '"'; if ($selected == $zones['geo_zone_id']) $select_string .= ' SELECTED'; $select_string .= '>' . $zones['geo_zone_name'] . '</option>'; } $select_string .= '</select>'; return $select_string; } function tep_get_geo_zone_name($geo_zone_id) { $zones_query = tep_db_query("select geo_zone_name from " . TABLE_GEO_ZONES . " where geo_zone_id = '" . (int)$geo_zone_id . "'"); if (!tep_db_num_rows($zones_query)) { $geo_zone_name = $geo_zone_id; } else { $zones = tep_db_fetch_array($zones_query); $geo_zone_name = $zones['geo_zone_name']; } return $geo_zone_name; } function tep_address_format($address_format_id, $address, $html, $boln, $eoln) { $address_format_query = tep_db_query("select address_format as format from " . TABLE_ADDRESS_FORMAT . " where address_format_id = '" . (int)$address_format_id . "'"); $address_format = tep_db_fetch_array($address_format_query); $company = tep_output_string_protected($address['company']); if (isset($address['firstname']) && tep_not_null($address['firstname'])) { $firstname = tep_output_string_protected($address['firstname']); $lastname = tep_output_string_protected($address['lastname']); } elseif (isset($address['name']) && tep_not_null($address['name'])) { $firstname = tep_output_string_protected($address['name']); $lastname = ''; } else { $firstname = ''; $lastname = ''; } $street = tep_output_string_protected($address['street_address']); $suburb = tep_output_string_protected($address['suburb']); $city = tep_output_string_protected($address['city']); $state = tep_output_string_protected($address['state']); if (isset($address['country_id']) && tep_not_null($address['country_id'])) { $country = tep_get_country_name($address['country_id']); if (isset($address['zone_id']) && tep_not_null($address['zone_id'])) { $state = tep_get_zone_code($address['country_id'], $address['zone_id'], $state); } } elseif (isset($address['country']) && tep_not_null($address['country'])) { $country = tep_output_string_protected($address['country']); } else { $country = ''; } $postcode = tep_output_string_protected($address['postcode']); $zip = $postcode; if ($html) { // HTML Mode $HR = '<hr>'; $hr = '<hr>'; if ( ($boln == '') && ($eoln == "\n") ) { // Values not specified, use rational defaults $CR = '<br>'; $cr = '<br>'; $eoln = $cr; } else { // Use values supplied $CR = $eoln . $boln; $cr = $CR; } } else { // Text Mode $CR = $eoln; $cr = $CR; $HR = '----------------------------------------'; $hr = '----------------------------------------'; } $statecomma = ''; $streets = $street; if ($suburb != '') $streets = $street . $cr . $suburb; if ($country == '') $country = tep_output_string_protected($address['country']); if ($state != '') $statecomma = $state . ', '; $fmt = $address_format['format']; eval("\$address = \"$fmt\";"); if ( (ACCOUNT_COMPANY == 'true') && (tep_not_null($company)) ) { $address = $company . $cr . $address; } return $address; } //////////////////////////////////////////////////////////////////////////////////////////////// // // Function : tep_get_zone_code // // Arguments : country country code string // zone state/province zone_id // def_state default string if zone==0 // // Return : state_prov_code state/province code // // Description : Function to retrieve the state/province code (as in FL for Florida etc) // //////////////////////////////////////////////////////////////////////////////////////////////// function tep_get_zone_code($country, $zone, $def_state) { $state_prov_query = tep_db_query("select zone_code from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and zone_id = '" . (int)$zone . "'"); if (!tep_db_num_rows($state_prov_query)) { $state_prov_code = $def_state; } else { $state_prov_values = tep_db_fetch_array($state_prov_query); $state_prov_code = $state_prov_values['zone_code']; } return $state_prov_code; } function tep_get_uprid($prid, $params) { $uprid = $prid; if ( (is_array($params)) && (!strstr($prid, '{')) ) { while (list($option, $value) = each($params)) { $uprid = $uprid . '{' . $option . '}' . $value; } } return $uprid; } function tep_get_prid($uprid) { $pieces = explode('{', $uprid); return $pieces[0]; } function tep_get_languages() { $languages_query = tep_db_query("select languages_id, name, code, image, directory from " . TABLE_LANGUAGES . " order by sort_order"); while ($languages = tep_db_fetch_array($languages_query)) { $languages_array[] = array('id' => $languages['languages_id'], 'name' => $languages['name'], 'code' => $languages['code'], 'image' => $languages['image'], 'directory' => $languages['directory']); } return $languages_array; } function tep_get_category_name($category_id, $language_id) { $category_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$category_id . "' and language_id = '" . (int)$language_id . "'"); $category = tep_db_fetch_array($category_query); return $category['categories_name']; } function tep_get_orders_status_name($orders_status_id, $language_id = '') { global $languages_id; if (!$language_id) $language_id = $languages_id; $orders_status_query = tep_db_query("select orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id = '" . (int)$orders_status_id . "' and language_id = '" . (int)$language_id . "'"); $orders_status = tep_db_fetch_array($orders_status_query); return $orders_status['orders_status_name']; } function tep_get_orders_status() { global $languages_id; $orders_status_array = array(); $orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_id"); while ($orders_status = tep_db_fetch_array($orders_status_query)) { $orders_status_array[] = array('id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name']); } return $orders_status_array; } function tep_get_products_name($product_id, $language_id = 0) { global $languages_id; if ($language_id == 0) $language_id = $languages_id; $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'"); $product = tep_db_fetch_array($product_query); return $product['products_name']; } function tep_get_products_description($product_id, $language_id) { $product_query = tep_db_query("select products_description from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'"); $product = tep_db_fetch_array($product_query); return $product['products_description']; } // BOF Open Featured Sets function tep_get_products_short($product_id, $language_id) { $product_query = tep_db_query("select products_short from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $product_id . "' and language_id = '" . $language_id . "'"); $product = tep_db_fetch_array($product_query); return $product['products_short']; } // EOF Open Featured Sets function tep_get_products_url($product_id, $language_id) { $product_query = tep_db_query("select products_url from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'"); $product = tep_db_fetch_array($product_query); return $product['products_url']; } //// // Return the manufacturers URL in the needed language // TABLES: manufacturers_info function tep_get_manufacturer_url($manufacturer_id, $language_id) { $manufacturer_query = tep_db_query("select manufacturers_url from " . TABLE_MANUFACTURERS_INFO . " where manufacturers_id = '" . (int)$manufacturer_id . "' and languages_id = '" . (int)$language_id . "'"); $manufacturer = tep_db_fetch_array($manufacturer_query); return $manufacturer['manufacturers_url']; } //// // Wrapper for class_exists() function // This function is not available in all PHP versions so we test it before using it. function tep_class_exists($class_name) { if (function_exists('class_exists')) { return class_exists($class_name); } else { return true; } } //// // Count how many products exist in a category // TABLES: products, products_to_categories, categories function tep_products_in_category_count($categories_id, $include_deactivated = false) { $products_count = 0; if ($include_deactivated) { $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$categories_id . "'"); } else { $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . (int)$categories_id . "'"); } $products = tep_db_fetch_array($products_query); $products_count += $products['total']; $childs_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$categories_id . "'"); if (tep_db_num_rows($childs_query)) { while ($childs = tep_db_fetch_array($childs_query)) { $products_count += tep_products_in_category_count($childs['categories_id'], $include_deactivated); } } return $products_count; } //// // Count how many subcategories exist in a category // TABLES: categories function tep_childs_in_category_count($categories_id) { $categories_count = 0; $categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$categories_id . "'"); while ($categories = tep_db_fetch_array($categories_query)) { $categories_count++; $categories_count += tep_childs_in_category_count($categories['categories_id']); } return $categories_count; } //// // Returns an array with countries // TABLES: countries function tep_get_countries($default = '') { $countries_array = array(); if ($default) { $countries_array[] = array('id' => '', 'text' => $default); } $countries_query = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name"); while ($countries = tep_db_fetch_array($countries_query)) { $countries_array[] = array('id' => $countries['countries_id'], 'text' => $countries['countries_name']); } return $countries_array; } //// // return an array with country zones function tep_get_country_zones($country_id) { $zones_array = array(); $zones_query = tep_db_query("select zone_id, zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country_id . "' order by zone_name"); while ($zones = tep_db_fetch_array($zones_query)) { $zones_array[] = array('id' => $zones['zone_id'], 'text' => $zones['zone_name']); } return $zones_array; } function tep_prepare_country_zones_pull_down($country_id = '') { // preset the width of the drop-down for Netscape $pre = ''; if ( (!tep_browser_detect('MSIE')) && (tep_browser_detect('Mozilla/4')) ) { for ($i=0; $i<45; $i++) $pre .= ' '; } $zones = tep_get_country_zones($country_id); if (sizeof($zones) > 0) { $zones_select = array(array('id' => '', 'text' => PLEASE_SELECT)); $zones = array_merge($zones_select, $zones); } else { $zones = array(array('id' => '', 'text' => TYPE_BELOW)); // create dummy options for Netscape to preset the height of the drop-down if ( (!tep_browser_detect('MSIE')) && (tep_browser_detect('Mozilla/4')) ) { for ($i=0; $i<9; $i++) { $zones[] = array('id' => '', 'text' => $pre); } } } return $zones; } //// // Get list of address_format_id's function tep_get_address_formats() { $address_format_query = tep_db_query("select address_format_id from " . TABLE_ADDRESS_FORMAT . " order by address_format_id"); $address_format_array = array(); while ($address_format_values = tep_db_fetch_array($address_format_query)) { $address_format_array[] = array('id' => $address_format_values['address_format_id'], 'text' => $address_format_values['address_format_id']); } return $address_format_array; } //// // Alias function for Store configuration values in the Administration Tool function tep_cfg_pull_down_country_list($country_id) { return tep_draw_pull_down_menu('configuration_value', tep_get_countries(), $country_id); } function tep_cfg_pull_down_zone_list($zone_id) { return tep_draw_pull_down_menu('configuration_value', tep_get_country_zones(STORE_COUNTRY), $zone_id); } function tep_cfg_pull_down_tax_classes($tax_class_id, $key = '') { $name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value'); $tax_class_array = array(array('id' => '0', 'text' => TEXT_NONE)); $tax_class_query = tep_db_query("select tax_class_id, tax_class_title from " . TABLE_TAX_CLASS . " order by tax_class_title"); while ($tax_class = tep_db_fetch_array($tax_class_query)) { $tax_class_array[] = array('id' => $tax_class['tax_class_id'], 'text' => $tax_class['tax_class_title']); } return tep_draw_pull_down_menu($name, $tax_class_array, $tax_class_id); } //// // Function to read in text area in admin function tep_cfg_textarea($text) { return tep_draw_textarea_field('configuration_value', false, 35, 5, $text); } function tep_cfg_get_zone_name($zone_id) { $zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_id = '" . (int)$zone_id . "'"); if (!tep_db_num_rows($zone_query)) { return $zone_id; } else { $zone = tep_db_fetch_array($zone_query); return $zone['zone_name']; } } //// // Sets the status of a banner function tep_set_banner_status($banners_id, $status) { if ($status == '1') { return tep_db_query("update " . TABLE_BANNERS . " set status = '1', expires_impressions = NULL, expires_date = NULL, date_status_change = NULL where banners_id = '" . $banners_id . "'"); } elseif ($status == '0') { return tep_db_query("update " . TABLE_BANNERS . " set status = '0', date_status_change = now() where banners_id = '" . $banners_id . "'"); } else { return -1; } } //// // Sets the status of a product function tep_set_product_status($products_id, $status) { if ($status == '1') { return tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '1', products_last_modified = now() where products_id = '" . (int)$products_id . "'"); } elseif ($status == '0') { return tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0', products_featured = '0', products_last_modified = now() where products_id = '" . (int)$products_id . "'"); } else { return -1; } } //// // Sets the status of a product on special function tep_set_specials_status($specials_id, $status) { if ($status == '1') { return tep_db_query("update " . TABLE_SPECIALS . " set status = '1', expires_date = NULL, date_status_change = NULL where specials_id = '" . (int)$specials_id . "'"); } elseif ($status == '0') { return tep_db_query("update " . TABLE_SPECIALS . " set status = '0', date_status_change = now() where specials_id = '" . (int)$specials_id . "'"); } else { return -1; } } //// // Sets timeout for the current script. // Cant be used in safe mode. function tep_set_time_limit($limit) { if (!get_cfg_var('safe_mode')) { set_time_limit($limit); } } //// // Alias function for Store configuration values in the Administration Tool function tep_cfg_select_option($select_array, $key_value, $key = '') { $string = ''; for ($i=0, $n=sizeof($select_array); $i<$n; $i++) { $name = ((tep_not_null($key)) ? 'configuration[' . $key . ']' : 'configuration_value'); $string .= '<br><input type="radio" name="' . $name . '" value="' . $select_array[$i] . '"'; if ($key_value == $select_array[$i]) $string .= ' CHECKED'; $string .= '> ' . $select_array[$i]; } return $string; } //// // Alias function for module configuration keys function tep_mod_select_option($select_array, $key_name, $key_value) { reset($select_array); while (list($key, $value) = each($select_array)) { if (is_int($key)) $key = $value; $string .= '<br><input type="radio" name="configuration[' . $key_name . ']" value="' . $key . '"'; if ($key_value == $key) $string .= ' CHECKED'; $string .= '> ' . $value; } return $string; } //// // Retreive server information function tep_get_system_information() { global $HTTP_SERVER_VARS; $db_query = tep_db_query("select now() as datetime"); $db = tep_db_fetch_array($db_query); list($system, $host, $kernel) = preg_split('/[\s,]+/', @exec('uname -a'), 5); return array('date' => tep_datetime_short(date('Y-m-d H:i:s')), 'system' => $system, 'kernel' => $kernel, 'host' => $host, 'ip' => gethostbyname($host), 'uptime' => @exec('uptime'), 'http_server' => $HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'php' => PHP_VERSION, 'zend' => (function_exists('zend_version') ? zend_version() : ''), 'db_server' => DB_SERVER, 'db_ip' => gethostbyname(DB_SERVER), 'db_version' => 'MySQL ' . (function_exists('mysql_get_server_info') ? mysql_get_server_info() : ''), 'db_date' => tep_datetime_short($db['datetime'])); } function tep_generate_category_path($id, $from = 'category', $categories_array = '', $index = 0) { global $languages_id; if (!is_array($categories_array)) $categories_array = array(); if ($from == 'product') { $categories_query = tep_db_query("select categories_id from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$id . "'"); while ($categories = tep_db_fetch_array($categories_query)) { if ($categories['categories_id'] == '0') { $categories_array[$index][] = array('id' => '0', 'text' => TEXT_TOP); } else { $category_query = tep_db_query("select cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$categories['categories_id'] . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category = tep_db_fetch_array($category_query); $categories_array[$index][] = array('id' => $categories['categories_id'], 'text' => $category['categories_name']); if ( (tep_not_null($category['parent_id'])) && ($category['parent_id'] != '0') ) $categories_array = tep_generate_category_path($category['parent_id'], 'category', $categories_array, $index); $categories_array[$index] = array_reverse($categories_array[$index]); } $index++; } } elseif ($from == 'category') { $category_query = tep_db_query("select cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "'"); $category = tep_db_fetch_array($category_query); $categories_array[$index][] = array('id' => $id, 'text' => $category['categories_name']); if ( (tep_not_null($category['parent_id'])) && ($category['parent_id'] != '0') ) $categories_array = tep_generate_category_path($category['parent_id'], 'category', $categories_array, $index); } return $categories_array; } function tep_output_generated_category_path($id, $from = 'category') { $calculated_category_path_string = ''; $calculated_category_path = tep_generate_category_path($id, $from); for ($i=0, $n=sizeof($calculated_category_path); $i<$n; $i++) { for ($j=0, $k=sizeof($calculated_category_path[$i]); $j<$k; $j++) { $calculated_category_path_string .= $calculated_category_path[$i][$j]['text'] . ' > '; } $calculated_category_path_string = substr($calculated_category_path_string, 0, -16) . '<br>'; } $calculated_category_path_string = substr($calculated_category_path_string, 0, -4); if (strlen($calculated_category_path_string) < 1) $calculated_category_path_string = TEXT_TOP; return $calculated_category_path_string; } function tep_get_generated_category_path_ids($id, $from = 'category') { $calculated_category_path_string = ''; $calculated_category_path = tep_generate_category_path($id, $from); for ($i=0, $n=sizeof($calculated_category_path); $i<$n; $i++) { for ($j=0, $k=sizeof($calculated_category_path[$i]); $j<$k; $j++) { $calculated_category_path_string .= $calculated_category_path[$i][$j]['id'] . '_'; } $calculated_category_path_string = substr($calculated_category_path_string, 0, -1) . '<br>'; } $calculated_category_path_string = substr($calculated_category_path_string, 0, -4); if (strlen($calculated_category_path_string) < 1) $calculated_category_path_string = TEXT_TOP; return $calculated_category_path_string; } function tep_remove_category($category_id) { $category_image_query = tep_db_query("select categories_image from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$category_id . "'"); $category_image = tep_db_fetch_array($category_image_query); $duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where categories_image = '" . tep_db_input($category_image['categories_image']) . "'"); $duplicate_image = tep_db_fetch_array($duplicate_image_query); if ($duplicate_image['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $category_image['categories_image'])) { @unlink(DIR_FS_CATALOG_IMAGES . $category_image['categories_image']); } } tep_db_query("delete from " . TABLE_CATEGORIES . " where categories_id = '" . (int)$category_id . "'"); tep_db_query("delete from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$category_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$category_id . "'"); if (USE_CACHE == 'true') { tep_reset_cache_block('categories'); tep_reset_cache_block('also_purchased'); } } function tep_remove_product($product_id) { // BOF: More Pics 6 $product_subimage1_query = tep_db_query("select products_subimage1 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage1 = tep_db_fetch_array($product_subimage1_query); $duplicate_subimage1_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage1 = '" . tep_db_input($product_subimage1['products_subimage1']) . "'"); $duplicate_subimage1 = tep_db_fetch_array($duplicate_subimage1_query); if ($duplicate_subimage1['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage1['products_subimage1'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage1['products_subimage1']); } } $product_subimage2_query = tep_db_query("select products_subimage2 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage2 = tep_db_fetch_array($product_subimage2_query); $duplicate_subimage2_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage2 = '" . tep_db_input($product_subimage2['products_subimage2']) . "'"); $duplicate_subimage2 = tep_db_fetch_array($duplicate_subimage2_query); if ($duplicate_subimage2['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage2['products_subimage2'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage2['products_subimage2']); } } $product_subimage3_query = tep_db_query("select products_subimage3 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage3 = tep_db_fetch_array($product_subimage3_query); $duplicate_subimage3_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage3 = '" . tep_db_input($product_subimage3['products_subimage3']) . "'"); $duplicate_subimage3 = tep_db_fetch_array($duplicate_subimage3_query); if ($duplicate_subimage3['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage3['products_subimage3'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage3['products_subimage3']); } } $product_subimage4_query = tep_db_query("select products_subimage4 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage4 = tep_db_fetch_array($product_subimage4_query); $duplicate_subimage4_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage4 = '" . tep_db_input($product_subimage4['products_subimage4']) . "'"); $duplicate_subimage4 = tep_db_fetch_array($duplicate_subimage4_query); if ($duplicate_subimage4['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage4['products_subimage4'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage4['products_subimage4']); } } $product_subimage5_query = tep_db_query("select products_subimage5 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage5 = tep_db_fetch_array($product_subimage5_query); $duplicate_subimage5_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage5 = '" . tep_db_input($product_subimage5['products_subimage5']) . "'"); $duplicate_subimage5 = tep_db_fetch_array($duplicate_subimage5_query); if ($duplicate_subimage5['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage5['products_subimage5'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage5['products_subimage5']); } } $product_subimage6_query = tep_db_query("select products_subimage6 from " . TABLE_PRODUCTS . " where products_id = '" . tep_db_input($product_id) . "'"); $product_subimage6 = tep_db_fetch_array($product_subimage6_query); $duplicate_subimage6_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_subimage6 = '" . tep_db_input($product_subimage6['products_subimage6']) . "'"); $duplicate_subimage6 = tep_db_fetch_array($duplicate_subimage6_query); if ($duplicate_subimage6['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_subimage6['products_subimage6'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_subimage6['products_subimage6']); } } // EOF: More Pics 6 $product_image_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " where products_id = '" . (int)$product_id . "'"); $product_image = tep_db_fetch_array($product_image_query); $duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " where products_image = '" . tep_db_input($product_image['products_image']) . "'"); $duplicate_image = tep_db_fetch_array($duplicate_image_query); if ($duplicate_image['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $product_image['products_image'])) { @unlink(DIR_FS_CATALOG_IMAGES . $product_image['products_image']); } } tep_db_query("delete from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . (int)$product_id . "'"); tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . (int)$product_id . "'"); $product_reviews_query = tep_db_query("select reviews_id from " . TABLE_REVIEWS . " where products_id = '" . (int)$product_id . "'"); while ($product_reviews = tep_db_fetch_array($product_reviews_query)) { tep_db_query("delete from " . TABLE_REVIEWS_DESCRIPTION . " where reviews_id = '" . (int)$product_reviews['reviews_id'] . "'"); } tep_db_query("delete from " . TABLE_REVIEWS . " where products_id = '" . (int)$product_id . "'"); if (USE_CACHE == 'true') { tep_reset_cache_block('categories'); tep_reset_cache_block('also_purchased'); } } function tep_remove_order($order_id, $restock = false) { if ($restock == 'on') { $order_query = tep_db_query("select products_id, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'"); while ($order = tep_db_fetch_array($order_query)) { tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity + " . $order['products_quantity'] . ", products_ordered = products_ordered - " . $order['products_quantity'] . " where products_id = '" . (int)$order['products_id'] . "'"); } } tep_db_query("delete from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$order_id . "'"); } function tep_reset_cache_block($cache_block) { global $cache_blocks; for ($i=0, $n=sizeof($cache_blocks); $i<$n; $i++) { if ($cache_blocks[$i]['code'] == $cache_block) { if ($cache_blocks[$i]['multiple']) { if ($dir = @opendir(DIR_FS_CACHE)) { while ($cache_file = readdir($dir)) { $cached_file = $cache_blocks[$i]['file']; $languages = tep_get_languages(); for ($j=0, $k=sizeof($languages); $j<$k; $j++) { $cached_file_unlink = ereg_replace('-language', '-' . $languages[$j]['directory'], $cached_file); if (ereg('^' . $cached_file_unlink, $cache_file)) { @unlink(DIR_FS_CACHE . $cache_file); } } } closedir($dir); } } else { $cached_file = $cache_blocks[$i]['file']; $languages = tep_get_languages(); for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $cached_file = ereg_replace('-language', '-' . $languages[$i]['directory'], $cached_file); @unlink(DIR_FS_CACHE . $cached_file); } } break; } } } function tep_get_file_permissions($mode) { // determine type if ( ($mode & 0xC000) == 0xC000) { // unix domain socket $type = 's'; } elseif ( ($mode & 0x4000) == 0x4000) { // directory $type = 'd'; } elseif ( ($mode & 0xA000) == 0xA000) { // symbolic link $type = 'l'; } elseif ( ($mode & 0x8000) == 0x8000) { // regular file $type = '-'; } elseif ( ($mode & 0x6000) == 0x6000) { //bBlock special file $type = 'b'; } elseif ( ($mode & 0x2000) == 0x2000) { // character special file $type = 'c'; } elseif ( ($mode & 0x1000) == 0x1000) { // named pipe $type = 'p'; } else { // unknown $type = '?'; } // determine permissions $owner['read'] = ($mode & 00400) ? 'r' : '-'; $owner['write'] = ($mode & 00200) ? 'w' : '-'; $owner['execute'] = ($mode & 00100) ? 'x' : '-'; $group['read'] = ($mode & 00040) ? 'r' : '-'; $group['write'] = ($mode & 00020) ? 'w' : '-'; $group['execute'] = ($mode & 00010) ? 'x' : '-'; $world['read'] = ($mode & 00004) ? 'r' : '-'; $world['write'] = ($mode & 00002) ? 'w' : '-'; $world['execute'] = ($mode & 00001) ? 'x' : '-'; // adjust for SUID, SGID and sticky bit if ($mode & 0x800 ) $owner['execute'] = ($owner['execute'] == 'x') ? 's' : 'S'; if ($mode & 0x400 ) $group['execute'] = ($group['execute'] == 'x') ? 's' : 'S'; if ($mode & 0x200 ) $world['execute'] = ($world['execute'] == 'x') ? 't' : 'T'; return $type . $owner['read'] . $owner['write'] . $owner['execute'] . $group['read'] . $group['write'] . $group['execute'] . $world['read'] . $world['write'] . $world['execute']; } function tep_remove($source) { global $messageStack, $tep_remove_error; if (isset($tep_remove_error)) $tep_remove_error = false; if (is_dir($source)) { $dir = dir($source); while ($file = $dir->read()) { if ( ($file != '.') && ($file != '..') ) { if (is_writeable($source . '/' . $file)) { tep_remove($source . '/' . $file); } else { $messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source . '/' . $file), 'error'); $tep_remove_error = true; } } } $dir->close(); if (is_writeable($source)) { rmdir($source); } else { $messageStack->add(sprintf(ERROR_DIRECTORY_NOT_REMOVEABLE, $source), 'error'); $tep_remove_error = true; } } else { if (is_writeable($source)) { unlink($source); } else { $messageStack->add(sprintf(ERROR_FILE_NOT_REMOVEABLE, $source), 'error'); $tep_remove_error = true; } } } //// // Output the tax percentage with optional padded decimals function tep_display_tax_value($value, $padding = TAX_DECIMAL_PLACES) { if (strpos($value, '.')) { $loop = true; while ($loop) { if (substr($value, -1) == '0') { $value = substr($value, 0, -1); } else { $loop = false; if (substr($value, -1) == '.') { $value = substr($value, 0, -1); } } } } if ($padding > 0) { if ($decimal_pos = strpos($value, '.')) { $decimals = strlen(substr($value, ($decimal_pos+1))); for ($i=$decimals; $i<$padding; $i++) { $value .= '0'; } } else { $value .= '.'; for ($i=0; $i<$padding; $i++) { $value .= '0'; } } } return $value; } function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) { if (SEND_EMAILS != 'true') return false; // Instantiate a new mail object $message = new email(array('X-Mailer: osCommerce')); // Build the text version $text = strip_tags($email_text); if (EMAIL_USE_HTML == 'true') { $message->add_html($email_text, $text); } else { $message->add_text($text); } // Send message $message->build_message(); $message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject); } function tep_get_tax_class_title($tax_class_id) { if ($tax_class_id == '0') { return TEXT_NONE; } else { $classes_query = tep_db_query("select tax_class_title from " . TABLE_TAX_CLASS . " where tax_class_id = '" . (int)$tax_class_id . "'"); $classes = tep_db_fetch_array($classes_query); return $classes['tax_class_title']; } } function tep_banner_image_extension() { if (function_exists('imagetypes')) { if (imagetypes() & IMG_PNG) { return 'png'; } elseif (imagetypes() & IMG_JPG) { return 'jpg'; } elseif (imagetypes() & IMG_GIF) { return 'gif'; } } elseif (function_exists('imagecreatefrompng') && function_exists('imagepng')) { return 'png'; } elseif (function_exists('imagecreatefromjpeg') && function_exists('imagejpeg')) { return 'jpg'; } elseif (function_exists('imagecreatefromgif') && function_exists('imagegif')) { return 'gif'; } return false; } //// // Wrapper function for round() for php3 compatibility function tep_round($value, $precision) { if (PHP_VERSION < 4) { $exp = pow(10, $precision); return round($value * $exp) / $exp; } else { return round($value, $precision); } } //// // Add tax to a products price function tep_add_tax($price, $tax) { global $currencies; if (DISPLAY_PRICE_WITH_TAX == 'true') { return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']) + tep_calculate_tax($price, $tax); } else { return tep_round($price, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']); } } // Calculates Tax rounding the result function tep_calculate_tax($price, $tax) { global $currencies; return tep_round($price * $tax / 100, $currencies->currencies[DEFAULT_CURRENCY]['decimal_places']); } //// // Returns the tax rate for a zone / class // TABLES: tax_rates, zones_to_geo_zones function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) { global $customer_zone_id, $customer_country_id; if ( ($country_id == -1) && ($zone_id == -1) ) { if (!tep_session_is_registered('customer_id')) { $country_id = STORE_COUNTRY; $zone_id = STORE_ZONE; } else { $country_id = $customer_country_id; $zone_id = $customer_zone_id; } } $tax_query = tep_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " tr left join " . TABLE_ZONES_TO_GEO_ZONES . " za ON tr.tax_zone_id = za.geo_zone_id left join " . TABLE_GEO_ZONES . " tz ON tz.geo_zone_id = tr.tax_zone_id WHERE (za.zone_country_id IS NULL OR za.zone_country_id = '0' OR za.zone_country_id = '" . (int)$country_id . "') AND (za.zone_id IS NULL OR za.zone_id = '0' OR za.zone_id = '" . (int)$zone_id . "') AND tr.tax_class_id = '" . (int)$class_id . "' GROUP BY tr.tax_priority"); if (tep_db_num_rows($tax_query)) { $tax_multiplier = 0; while ($tax = tep_db_fetch_array($tax_query)) { $tax_multiplier += $tax['tax_rate']; } return $tax_multiplier; } else { return 0; } } //// // Returns the tax rate for a tax class // TABLES: tax_rates function tep_get_tax_rate_value($class_id) { $tax_query = tep_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " where tax_class_id = '" . (int)$class_id . "' group by tax_priority"); if (tep_db_num_rows($tax_query)) { $tax_multiplier = 0; while ($tax = tep_db_fetch_array($tax_query)) { $tax_multiplier += $tax['tax_rate']; } return $tax_multiplier; } else { return 0; } } function tep_call_function($function, $parameter, $object = '') { if ($object == '') { return call_user_func($function, $parameter); } elseif (PHP_VERSION < 4) { return call_user_method($function, $object, $parameter); } else { return call_user_func(array($object, $function), $parameter); } } function tep_get_zone_class_title($zone_class_id) { if ($zone_class_id == '0') { return TEXT_NONE; } else { $classes_query = tep_db_query("select geo_zone_name from " . TABLE_GEO_ZONES . " where geo_zone_id = '" . (int)$zone_class_id . "'"); $classes = tep_db_fetch_array($classes_query); return $classes['geo_zone_name']; } } function tep_cfg_pull_down_zone_classes($zone_class_id, $key = '') { $name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value'); $zone_class_array = array(array('id' => '0', 'text' => TEXT_NONE)); $zone_class_query = tep_db_query("select geo_zone_id, geo_zone_name from " . TABLE_GEO_ZONES . " order by geo_zone_name"); while ($zone_class = tep_db_fetch_array($zone_class_query)) { $zone_class_array[] = array('id' => $zone_class['geo_zone_id'], 'text' => $zone_class['geo_zone_name']); } return tep_draw_pull_down_menu($name, $zone_class_array, $zone_class_id); } function tep_cfg_pull_down_order_statuses($order_status_id, $key = '') { global $languages_id; $name = (($key) ? 'configuration[' . $key . ']' : 'configuration_value'); $statuses_array = array(array('id' => '0', 'text' => TEXT_DEFAULT)); $statuses_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "' order by orders_status_name"); while ($statuses = tep_db_fetch_array($statuses_query)) { $statuses_array[] = array('id' => $statuses['orders_status_id'], 'text' => $statuses['orders_status_name']); } return tep_draw_pull_down_menu($name, $statuses_array, $order_status_id); } function tep_get_order_status_name($order_status_id, $language_id = '') { global $languages_id; if ($order_status_id < 1) return TEXT_DEFAULT; if (!is_numeric($language_id)) $language_id = $languages_id; $status_query = tep_db_query("select orders_status_name from " . TABLE_ORDERS_STATUS . " where orders_status_id = '" . (int)$order_status_id . "' and language_id = '" . (int)$language_id . "'"); $status = tep_db_fetch_array($status_query); return $status['orders_status_name']; } //// // Return a random value function tep_rand($min = null, $max = null) { static $seeded; if (!$seeded) { mt_srand((double)microtime()*1000000); $seeded = true; } if (isset($min) && isset($max)) { if ($min >= $max) { return $min; } else { return mt_rand($min, $max); } } else { return mt_rand(); } } // nl2br() prior PHP 4.2.0 did not convert linefeeds on all OSs (it only converted \n) function tep_convert_linefeeds($from, $to, $string) { if ((PHP_VERSION < "4.0.5") && is_array($from)) { return ereg_replace('(' . implode('|', $from) . ')', $to, $string); } else { return str_replace($from, $to, $string); } } function tep_string_to_int($string) { return (int)$string; } //// // Parse and secure the cPath parameter values function tep_parse_category_path($cPath) { // make sure the category IDs are integers $cPath_array = array_map('tep_string_to_int', explode('_', $cPath)); // make sure no duplicate category IDs exist which could lock the server in a loop $tmp_array = array(); $n = sizeof($cPath_array); for ($i=0; $i<$n; $i++) { if (!in_array($cPath_array[$i], $tmp_array)) { $tmp_array[] = $cPath_array[$i]; } } return $tmp_array; } function tep_cfg_select_featured($select_array, $key_value, $key = '') { $string = ''; for ($i=0, $n=sizeof($select_array); $i<$n; $i++) { $name = ((tep_not_null($key)) ? 'configuration[' . $key . ']' : 'configuration_value'); $string .= '<input type="radio" name="' . $name . '" value="' . $select_array[$i] . '"'; if ($key_value == $select_array[$i]) $string .= ' CHECKED'; $string .= '> ' . $select_array[$i]; } return $string; } function tep_cfg_select_color($key_value, $key = '') { $string = ''; $name = ((tep_not_null($key)) ? 'configuration[' . $key . ']' : 'configuration_value'); $string .= '<script LANGUAGE="JavaScript"> var cp = new ColorPicker(\'window\'); </SCRIPT>'; $string .= '<br><table border="0" cellspacing="0" cellpadding="0"><tr><td><input type="text" name="' . $name . '" id="' . $name . '" value="' . $key_value . '" size="6"></td><td> </td>'; $string .= '<td><a href="java script:;" onclick="cp.select(document.configuration.'.$name.',\'pick\');return false;" name="pick" id="pick">'.tep_image_button('button_pick_color.gif', IMAGE_PICK_COLOR).'</a></td></tr></table><br>'; return $string; } ?> hope you could help me thanks in advance.
  22. ok i found the error : 3 Changes to do in : open /includes/modules/featured.php find $currencies->display_price add $featured_products['products_id'] This should look like this : $info_box_contents[$row][$col] = array('align' => 'center', 'params' => 'class="smallText" width="33%" valign="top"', 'text' => '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $featured_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $featured_products['products_image'], $featured_products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $featured_products['products_id']) . '">' . $featured_products['products_name'] . '</a><br><s>' . $currencies->display_price($featured_products['products_id'], $featured_products['products_price'], tep_get_tax_rate($featured_products['products_tax_class_id'])) . '</s><br><span class="productSpecialPrice">' . $currencies->display_price($featured_products['products_id'], $featured_products['specials_new_products_price'], tep_get_tax_rate($featured_products['products_tax_class_id'])) . '</span>'); } else { $info_box_contents[$row][$col] = array('align' => 'center', 'params' => 'class="smallText" width="33%" valign="top"', 'text' => '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $featured_products['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $featured_products['products_image'], $featured_products['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a><br><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $featured_products['products_id']) . '">' . $featured_products['products_name'] . '</a><br>' . $currencies->display_price($featured_products['products_id'], $featured_products['products_price'], tep_get_tax_rate($featured_products['products_tax_class_id']))); } :thumbsup:
  23. I fogert to mention that you have to change the file configure.php of each new store. /shop2/includes/configure.php define('DIR_WS_IMAGES', '../shop1/images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . '../shop1/icons/'); to set the image folder as the first shop.
  24. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! HOW TO INSTALL THE MULTI-STORE V1.8 WITH OSC 2.2M !!!!!!!!! !!! PLEASE REMEMBER TO BACKUP YOUR FILES !!!!!!!!!!!!!!!!!!!!!! !!! THIS IS FOR A NEW INSTALL ONLY !!!!!!!!!!!!!!!!!!!!!!!!!!!! !!! By SambaMambo - Avril 2006 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Step 1-Combine all the files from multi-store v1.8 with a base version of osCommerce MS2.2. Do this before uploading any files to the server. it will simplify and speed up the installation for all stores. You can also create a package for the second and others stores without the /admin/ /images/ /install/ folders as they aren't requested for the installation. Step 2-You must not delete the update.sql (multi-store v1.8) file, you will need to run this file from your SQL page later. Step 3-Upload the store package that was completed in step 1 into /shop1/ /shop2/ /shop3/ etc... directories You have one admin panel and one image folder for all stores. Also when you upload a picture from the admin panel to a product, it will automatically upload it to the /shop1/images/ directory Step 4-Once the upload is finished CHMOD the following files to 706 or 777; /shop1/includes/configure.php /shop1/admin/includes/configure.php But only for the /shop1/ files !!! Step 5-Go to the store URL in your browser and follow the install instructions. (http://yourdomain.com/shop1/) It is recommended to use the database sessions instead of the file sessions option with multiple store contribution. (During the install, you will be asked to choose between session files or database) If you are using file based sessions (selected during install), you will need to uncomment the define in admin/includes/application_top.php around line 69. Step 6-When you arrive at the last install screen that has the catalog and administration buttons, import the update.sql (multi-store v1.8) file to your SQL base you choose to install the shop. Do not close the install screen !!! Step 7-Log on to the store admin through the install screen Login : admin (default login) Pswd : admin (default pswd) and create a second store in Admin/Stores/ page. You can call the configuration file configuration_shop2 and check ?Insert default configuration table?? box. This will create a configuration_shop2 Table into your SQL Database. Step 8-Set the language to the default language for both stores. you can add languages later, this simplifies any troubleshooting if needed. in Admin/Localization/Languages click on the language and you will see on the right column a button (or not, i didnt have one...) called "Store". Click on it and you will have the cases to enable the language or not for each stores you created. Do not forget to do it again if you add more stores. Step 9-Go to the Admin/category/products page and select a category for each store. Also check the ?Enable/Disable store to ALL sub-categories and sub-products? When you click on the categorie you have on the right column a button (or not...) called "Store" which is used to enable or not the categories for each stores. Step 10-Go to Admin/Configuration/Multi-Stores and define the WS & FS paths for the shop1 only!!! (you have a case in the right panel where you can choose between your differents stores.) BECAREFULL !!! What is called Store Catalog Filesystem Languages Path, Store Catalog Filesystem Images Path, Store Catalog Filesystem Modules Path are the ADMIN Pathes. Store Catalog Website URL : http://yourdomain.com Store Catalog Website SSL URL : https//yourdomain.com Enable SSL Store Catalog : false or true Store Catalog Website Path : http://yourdomain.com/shop1/ Store Catalog Filesystem Path : /home/www/account/web/shop1/ (for example) Store Catalog Website Images Path : http://yourdomain.com/shop1/images Store Catalog Website Languages Path : http://yourdomain.com/shop1/includes/languages/ Store Catalog Filesystem Languages Path : /home/www/account/web/shop1/admin/includes/languages/ Store Catalog Filesystem Images Path : /home/www/account/web/shop1/admin/images/ Store Catalog Filesystem Modules Path : /home/www/account/web/shop1/admin/includes/modules/ Step 11-Test out the default store to see if it's working. If everything looks good, go back and start filling out the configuration screens for the default store and rename the default store (shop1) in the stores admin page. in /Admin/configuration/My Store/ Keep the name "configuration" for this Table. When you create a new one, call it configuration_shop2 or configuration_dvd for example. it will be more easy for you to find it back into your SQL Database if you need to change things... who knows? Step 12-Creating a new store Edit the shop2/includes/configure.php file in the /shop2/ to reflect the new store absolute file path and web paths // Define the webserver and path parameters // * DIR_FS_* = Filesystem directories (local/physical) // * DIR_WS_* = Webserver directories (virtual/URL) define('HTTP_SERVER', 'http://www.yourdomain.com'); // eg, http://localhost - should not be empty for productive servers define('HTTPS_SERVER', 'https://www.yourdomain.com'); // eg, https://localhost - should not be empty for productive servers define('ENABLE_SSL', false); // secure webserver for checkout procedure? false or true define('HTTP_COOKIE_DOMAIN', 'www.yourdomain.com'); define('HTTPS_COOKIE_DOMAIN', ''); define('HTTP_COOKIE_PATH', '/shop2/'); define('HTTPS_COOKIE_PATH', ''); define('DIR_WS_HTTP_CATALOG', '/shop2/'); define('DIR_WS_HTTPS_CATALOG', ''); define('DIR_WS_IMAGES', 'images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/'); define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/'); define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/'); define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/'); define('DIR_WS_LANGUAGES', DIR_WS_INCLUDES . 'languages/'); define('DIR_WS_DOWNLOAD_PUBLIC', 'pub/'); define('DIR_FS_CATALOG', '/home/www/account/web/shop2/'); define('DIR_FS_DOWNLOAD', DIR_FS_CATALOG . 'download/'); define('DIR_FS_DOWNLOAD_PUBLIC', DIR_FS_CATALOG . 'pub/'); // define our database connection define('DB_SERVER', 'localhost'); // eg, localhost - should not be empty for productive servers define('DB_SERVER_USERNAME', 'login'); define('DB_SERVER_PASSWORD', 'pswd'); define('DB_DATABASE', 'SQLBaseName'); define('USE_PCONNECT', 'false'); // use persistent connections? define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql' Step 13-Edit the shop2/includes/database_tables.php change define(?TABLE_CONFIGURATION?, ?configuration?); to define(?TABLE_CONFIGURATION?, ?configuration_shop2?); (the name of your Table you've created when add the new store) Step 14-Go to Admin/Configuration/Multi-Stores and define the WS & FS paths for the shop2 (you have a case in the right panel where you can choose between your differents stores.) Store Catalog Website URL : http://yourdomain.com Store Catalog Website SSL URL : https//yourdomain.com Enable SSL Store Catalog : false or true Store Catalog Website Path : http://yourdomain.com/shop2/ Store Catalog Filesystem Path : /home/www/account/web/shop2/ (for example) Store Catalog Website Images Path : http://yourdomain.com/shop1/images Store Catalog Website Languages Path : http://yourdomain.com/shop1/includes/languages/ Store Catalog Filesystem Languages Path : /home/www/account/web/shop1/admin/includes/languages/ Store Catalog Filesystem Images Path : /home/www/account/web/shop1/admin/images/ Store Catalog Filesystem Modules Path : /home/www/account/web/shop1/admin/includes/modules/ As you see you have the same images, languages and admin folders as the /shop1/ settings. Step 15-Test out the second store to see if the categories and products appear. If they do, you've done it! Step 16-Delete the install directory. /shop1/install/ Delete the install and admin directory of your shop2/ shop3/ etc... if you didnt do it before. Step 17-Make sure that files and directories permissions are set properly CHMOD the following directories permissions: shop1/images => 777 read/write/execute?INCLUDE SUBDIRECTORIES shop1/pub => 777 read/write/execute shop1/admin/backups => 777 read/write/execute shop1/admin/images/graphs => 777 read/write/execute CHMOD the following file permissions; catalog/includes/configure.php => 604 read catalog/admin/includes/configure.php => 604 read ---------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------- :D :P :sweating: Ok guys, it's done! Now repeat the steps each time you want to add another stores and everything will work fine. You can easily import your Backup Base into the new one. just put the "Alter Code" instead of "IF EXIST REPLACE" in your SQL request. Also as it is said, you can add most of the add-ons for oscommerce for this contribution. Just don't forget to make the change for each stores if necessary. So this contribution allow you to have a multi-store with a unique database, only one admin panel, and you can easily make 2 or 3 differents design for each store and add contrib for only of them and allow one of them to only a group of members etc... it's really awesome! Only the install files are not really clear. i can't believed it... i fought for 1 month to make it run... yeah i took my time but in general i make a complete site in 2 days max... as i hate script i can't set properly in the hour... damn me! I've take the "How To install Multi-Store v1.7" By Greg and change it a little bit and add some more explanations. Also, WE don't need to pay to have a How-To about a FREE PHP Script ... Sorry Greg. i couldn't find any clear set up so i decided to do it as it is so simple in reality ... and in regard of that Thread we can see that many peeps have troubles to install it. I hope it will help you all. Thanks to Ryan Hobbs/Hobbzilla for this uge and awesome contrib! Contribution : http://www.oscommerce.com/community/contri...rch,multi-store Forum Support : http://www.oscommerce.com/forums/index.php?sho...ic=70365&st=880 Thanks to Greg for his helpfull site where i get the most explicit how-to! http://www.testoscommerce.com/ Thanks to Fx0d who forced me to install it at 2.30 am and get it working ...
×
×
  • Create New...