Latest News: (loading..)

nouveau9

Members
  • Content count

    9
  • Joined

  • Last visited

1 Follower

About nouveau9

Profile Information

  • Real Name
    Grimaldi
  1. Hello, Sometimes http://www.wipmania.com/ returns XX when he can't determine the country. I added a new country in the database , table : countries countries_id : 300 countries_name : Unknown Country <-- What you want countries_iso_code_2 : XX <--- VERY IMPORTANT countries_iso_code_3 : XXX <---for example address_format_id : 1 <-- what you want countries_currencyid : EUR <-- your default currency And the prices to 0 disappear for me. To be tested. This good add-on works for me inOSC 2.3.1 Thanks to the author.
  2. Hello, I use QTPro 4.6.1 with oscommerce 2.3.2 and Paypal Standard 1.0. All is right but the stock and mail problems when the client don't wait the return on the site. Known problem... The new Paypal version (4.039) seems to correct this problem when the client don't return on the site : mails + stocks.. But not with QTPro ! With QTPro : when the client don't return on the site : - the 2 mails are sent BUT in the mails the attibuites don't appear. - the stocks aren't decrement. I tried to correct but I can't obtain good results... A solution ? Thanks.
  3. For the 1) : Some companies have the same image for differents attribute actually in Google Shopping. I don't hink it's a real problem for me. For the 2) : I have changed this addon like you indicate, but with QtPro, when I select the two attributes Color and Size the results are like this when I have multiple combination of products : Product....... color.................... size Shirt X............black,white...........S,M,L,XL and Google wants one line by combination (not all the combinations on the same line) like this : Product....... color.................... size Shirt X............black......................S Shirt X............black......................M Shirt X............white......................L Shirt X............white......................XL etc.. A solution is modify the addon to have only one combination like this and jump to the next product: Product....... color.................... size Shirt X............black......................S Tight Y............black......................L etc... Google will accept this. The problem is : I show on Google Shopping only one combination. This may be down enough to bring the customer ...
  4. Thanks for your answer. The image is not a real problem I think : the image I use is a package of the product. I don't think that Google wants the real image with the real color of the product. If I use for each attribute the same image (the package) I dont' think that Google refuse it. I understand that change the program is not easy. The obligation for show the color and the size is the septembre 16. After, all the product will be refused. I think I'll modify your program like this (if I can) : I obtain the first attribute for the color and the first attribute for the size and exit, I'll insert in the row and finalize the product with only one combination of the attributes. So my product will appears on Google Shopping. But only one product with only one combination of the attribute. I you could indicate me the modification in your program for this result, it would be very useful.
  5. Hello, first, thanks for this add-on very useful. I use the 3.5 version. But now Google wants, for color and size attributes, a new line product for each attribute... When I enable the OPTIONS_ENABLED_ATTRIBUTES, all the attributes are in the same line like this : Product....... color.................... size Shirt............black,white...........S,M,L,XL and Google wants : Product....... color.................... size Shirt............black......................S Shirt............black......................M Shirt............white......................M Shirt............white......................L etc... I use QTPro 4.6.1 too. It's a problem.... Regards.
  6. ------------------------------------------------------------------------------------- Hello, It seems I have always $link = 'db_link' in my database.php : <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2007 osCommerce Released under the GNU General Public License */ function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') { global $$link; if (USE_PCONNECT == 'true') { $$link = mysql_pconnect($server, $username, $password); } else { $$link = mysql_connect($server, $username, $password); } if ($$link) mysql_select_db($database); return $$link; } function tep_db_close($link = 'db_link') { global $$link; return mysql_close($$link); } function tep_db_error($query, $errno, $error) { die('<font color="#000000"><strong>' . $errno . ' - ' . $error . '<br /><br />' . $query . '<br /><br /><small><font color="#ff0000">[TEP STOP]</font></small><br /><br /></strong></font>'); } function tep_db_query($query, $link = 'db_link') { global $$link, $logger; if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) { if (!is_object($logger)) $logger = new logger; $logger->write($query, 'QUERY'); } $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error()); if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) { if (mysql_error()) $logger->write(mysql_error(), 'ERROR'); } return $result; } function tep_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') { reset($data); if ($action == 'insert') { $query = 'insert into ' . $table . ' ('; while (list($columns, ) = each($data)) { $query .= $columns . ', '; } $query = substr($query, 0, -2) . ') values ('; reset($data); while (list(, $value) = each($data)) { switch ((string)$value) { case 'now()': $query .= 'now(), '; break; case 'null': $query .= 'null, '; break; default: $query .= '\'' . tep_db_input($value) . '\', '; break; } } $query = substr($query, 0, -2) . ')'; } elseif ($action == 'update') { $query = 'update ' . $table . ' set '; while (list($columns, $value) = each($data)) { switch ((string)$value) { case 'now()': $query .= $columns . ' = now(), '; break; case 'null': $query .= $columns .= ' = null, '; break; default: $query .= $columns . ' = \'' . tep_db_input($value) . '\', '; break; } } $query = substr($query, 0, -2) . ' where ' . $parameters; } return tep_db_query($query, $link); } function tep_db_fetch_array($db_query) { return mysql_fetch_array($db_query, MYSQL_ASSOC); } function tep_db_result($result, $row, $field = '') { return mysql_result($result, $row, $field); } function tep_db_num_rows($db_query) { return mysql_num_rows($db_query); } function tep_db_data_seek($db_query, $row_number) { return mysql_data_seek($db_query, $row_number); } function tep_db_insert_id($link = 'db_link') { global $$link; return mysql_insert_id($$link); } function tep_db_free_result($db_query) { return mysql_free_result($db_query); } function tep_db_fetch_fields($db_query) { return mysql_fetch_field($db_query); } function tep_db_output($string) { return htmlspecialchars($string); } 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); } function tep_db_prepare_input($string) { if (is_string($string)) { return trim(stripslashes($string)); } elseif (is_array($string)) { reset($string); while (list($key, $value) = each($string)) { $string[$key] = tep_db_prepare_input($value); } return $string; } else { return $string; } } ?> And general_functions.php : (the original) <?php /* Advanced Statistics Rev1 for osCommerce 2.3.3 Copyright (C) 2015 Jonas jonas@jholmster.com This file is part of Advanced Statistics Rev1. Advanced Statistics Rev1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Advanced Statistics Rev1 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. You should have received a copy of the GNU General Public License along with Advanced Statistics Rev1. If not, see <http://www.gnu.org/licenses/>. */ if ( ! function_exists( 'tep_static_link' ) ) { //// // The HTML href link with Static Content function tep_static_link( $script, $type, $catalog = false, $cookieless = '', $version = null, $connection = 'SSL', $extra = '' ) { if ( $catalog == true ) $script = tep_catalog_href_link( $script, ( is_numeric( $version ) ? $version : '' ), $connection ); else $script = ( ( $cookieless == true ) ? HTTP_COOKIELESS_DOMAIN : '' ) . $script; if ( $type == 'script' ) return '<script src="' . ( ( $cookieless == true ) ? HTTP_COOKIELESS_DOMAIN : '' ) . $script . '" '. $extra . '></script>'; if ( $type == 'link' ) return '<link rel="stylesheet" type="text/css" href="' . ( ( $cookieless == true ) ? HTTP_COOKIELESS_DOMAIN : '' ) . $script . '" '. $extra . ' />'; return "No link found"; } } if ( ! function_exists( 'tep_db_fetch_all' ) ) { function tep_db_fetch_all( $query, $link = 'db_link' ) { global $$link; $res = $$link->query( $query ); if ( false === $res ) { return tep_db_error( $query, mysqli_errno( $$link ), mysqli_error( $$link ) ); } else { if ( true === function_exists( 'mysqli_fetch_all' ) ) { $rows = $res->fetch_all(MYSQLI_ASSOC); } else { while( $row = $res->fetch_array() ) { $rows[] = $row; } } $res->close(); return $rows; } } } if ( ! function_exists( 'mysqli_prepared_query' ) ) { function mysqli_prepared_query( $sql, $typeDef = FALSE, $params = FALSE, $link = "db_link" ) { global $$link; if ( false === $typeDef || empty( $typeDef ) ) { return tep_db_fetch_all( $sql ); } # Kiss Error Debugger $start_time = microtime( true ); if ( $stmt = mysqli_prepare( $$link, $sql ) ) { if ( count( $params ) == count( $params, 1 ) ) { $params = array( $params ); $multiQuery = FALSE; } else { $multiQuery = TRUE; } if ( $typeDef ) { $bindParams = array(); $bindParamsReferences = array(); $bindParams = array_pad( $bindParams, ( count( $params, 1 )-count( $params ) )/count( $params ), "" ); foreach ( $bindParams as $key => $value ) { $bindParamsReferences[ $key ] = &$bindParams[ $key ]; } array_unshift( $bindParamsReferences, $typeDef ); $bindParamsMethod = new ReflectionMethod( 'mysqli_stmt', 'bind_param' ); $bindParamsMethod->invokeArgs( $stmt, $bindParamsReferences ); } $result = array(); foreach ( $params as $queryKey => $query ) { foreach ( $bindParams as $paramKey => $value ) { $bindParams[ $paramKey ] = $query[ $paramKey ]; } $queryResult = array(); if ( mysqli_stmt_execute( $stmt ) ) { $resultMetaData = mysqli_stmt_result_metadata( $stmt ); if ( $resultMetaData ) { $stmtRow = array(); $rowReferences = array(); while ( $field = mysqli_fetch_field( $resultMetaData ) ) { $rowReferences[] = &$stmtRow[ $field->name ]; } mysqli_free_result( $resultMetaData ); $bindResultMethod = new ReflectionMethod( 'mysqli_stmt', 'bind_result' ); $bindResultMethod->invokeArgs( $stmt, $rowReferences ); while ( mysqli_stmt_fetch( $stmt ) ) { $row = array(); foreach ( $stmtRow as $key => $value ) { $row[$key] = $value; } $queryResult[] = $row; } mysqli_stmt_free_result( $stmt ); } else { $queryResult[] = mysqli_stmt_affected_rows( $stmt ); } } else { $queryResult[] = FALSE; } $result[ $queryKey ] = $queryResult; } mysqli_stmt_close( $stmt ); } else { $result = FALSE; } # Kiss Error Debugger if ( class_exists( 'KissER' ) ) { $sql = interpolateQuery( $sql, $params[0] ); KissER::q( round( ( microtime( true ) - $start_time ), 4 ), $sql ); } if ( $multiQuery ) { return $result; } else { return $result[0]; } } } function getMonthArray( $start_date, $end_date, $reverse = true ) { $start_timestamp = strtotime( str_replace( '-', '/', $start_date ) ); $end_timestamp = strtotime( str_replace( '-', '/', $end_date ) ); $start_month_timestamp = strtotime( date( 'F Y', $start_timestamp ) ); $current_month_timestamp = strtotime( date( 'F Y', $start_timestamp ) ); $arr_month = array(); while ( $current_month_timestamp >= $start_month_timestamp ) { $arr_month[ date( 'Y-m', $end_timestamp ) ] = array( 'year' => date( 'Y', $end_timestamp ), 'month' => date( 'm', $end_timestamp ), 'day' => date( 'd', $end_timestamp ), 'total' => 0, ); $end_timestamp = strtotime( '-1 month', $end_timestamp ); $current_month_timestamp = strtotime( date( 'F Y', $end_timestamp ) ); } if ( true === $reverse ) $arr_month = array_reverse( $arr_month ); return $arr_month; } function getDayArray( $start_date, $end_date, $reverse = true ) { $start_timestamp = strtotime( $start_date ); $end_timestamp = strtotime( $end_date ); $start_month_timestamp = strtotime( date( 'Y-m-d', $start_timestamp ) ); $current_month_timestamp = strtotime( date( 'Y-m-d', $start_timestamp ) ); $arr_month = array(); while ( $current_month_timestamp >= $start_month_timestamp ) { $arr_month[ date( 'Y-m-d', $end_timestamp ) ] = array( 'year' => date( 'Y', $end_timestamp ), 'month' => date( 'm', $end_timestamp ), 'day' => date( 'd', $end_timestamp ), 'total' => 0, ); $end_timestamp = strtotime( '-1 day', $end_timestamp ); $current_month_timestamp = strtotime( date( 'Y-m-d', $end_timestamp ) ); } if ( true === $reverse ) $arr_month = array_reverse( $arr_month ); array_pop( $arr_month ); return $arr_month; } function tep_not_empty( $string ) { if ( !isset( $string ) || empty( $string ) ) return false; return true; } function validateDate( $date ) { $d = DateTime::createFromFormat( 'Y-m-d', $date ); return $d && $d->format( 'Y-m-d' ) == $date; } function tep_preload_scripts() { echo tep_static_link( 'advanced_statistics/css/font-awesome.4.3.0.min.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/bootstrap-3.2.0.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/bootstrap-theme-3.2.0.css', 'link', false, false, '0928' ); // jQuery DataTables 1.10.6-dev echo tep_static_link( 'advanced_statistics/js/jquery.dataTables.min.js', 'script', false, false, '0928' ); // Plugins echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.colVis.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.tableTools-2.2.4-dev.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.colReorder.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.autoFill.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.keyTable.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.fixedColumns.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/plugins/dataTables.fixedHeader.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/mmenu/js/jquery.mmenu.min.all.js', 'script', false, false, '0928' ); // jQuery DataTables 1.10.6-dev echo tep_static_link( 'advanced_statistics/css/jquery.dataTables.min.css', 'link', false, false, '0928' ); // Optional - jQuery UI Integration if ( "jqueryui_smooth" == $_GET['theme_selector'] ) echo tep_static_link( 'advanced_statistics/css/jquery-ui-smoothness-1.11.2.css', 'link', false, false, '0928' ); if ( "jqueryui_smooth" == $_GET['theme_selector'] || "jqueryui" == $_GET['theme_selector'] ) { echo tep_static_link( 'advanced_statistics/css/themes/dataTables.jqueryui.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/themes/dataTables.colvis.jqueryui.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/themes/jquery.dataTables_themeroller-1.10.6-dev.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/themes/dataTables.jqueryui.js', 'script', false, false, '0928' ); } // Optional - Bootstrap Integration if ( "bootstrap" == $_GET['theme_selector'] || "jTable" == $_GET['theme_selector'] ) { echo tep_static_link( 'advanced_statistics/css/themes/dataTables.bootstrap.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/themes/dataTables.bootstrap.js', 'script', false, false, '0928' ); } // Optional - Custom Theme if ( "jTable" == $_GET['theme_selector'] || ! isset( $_GET['theme_selector'] ) ) echo tep_static_link( 'advanced_statistics/css/themes/dataTables.custom-theme.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/mmenu/css/jquery.mmenu.all.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.colVis.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.tableTools-2.2.4-dev.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.colReorder.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.autoFill.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.keyTable.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/plugins/dataTables.fontAwesome.css', 'link', false, false, '0928' ); // Optional - jQuery UI Integration // echo tep_static_link( 'advanced_statistics/js/themes/dataTables.jqueryui.js', 'script', false, false, '0928' ); // Optional - Bootstrap Integration // echo tep_static_link( 'advanced_statistics/js/themes/dataTables.bootstrap.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/advanced_statistics.css', 'link', false, false, '0928' ); // Print View CSS echo tep_static_link( 'advanced_statistics/css/advanced_statistics_print_view.css', 'link', false, false, '0928', 'SSL', 'media="print"' ); } function tep_afterload_scripts( $language_code ) { //echo tep_static_link( 'advanced_statistics/css/bootstrap-multiselect-3.1.1.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/css/select2-3.5.1.css', 'link', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/css/daterangepicker-bs3.css', 'link', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/bootstrap-3.2.0.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/bootstrap-multiselect-3.1.1.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/select2-3.5.1.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/js/advanced_statistics.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/jquery-impromptu.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/jquery.cookie.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/jquery.ajaxLoader.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/amcharts/amcharts.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/amcharts/serial.js', 'script', false, false, '0928' ); echo tep_static_link( 'advanced_statistics/amcharts/themes/none.js', 'script', false, false, '0928' ); if ( file_exists( 'advanced_statistics/amcharts/lang/' . $language_code . '.js' ) ) echo tep_static_link( 'advanced_statistics/amcharts/lang/' . $language_code . '.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/moment.js', 'script', false, false, '0928' ); //echo tep_static_link( 'advanced_statistics/js/daterangepicker.js', 'script', false, false, '0928' ); }
  7. Hello, After installation on 2.3.1, I have this message when I click on "Advanced Statistics" : Fatal error: Call to a member function query() on a non-object in /www/admin/advanced_statistics/general_functions.php on line 47 this line is : " $res = $$link->query( $query ); " I don't know why... Thanks.
  8. Hello, I have the same error, can you tell me where is(are) the error(s) ? Thank you.