Neues Modul: Google Maps 1.0 für Self-Commerce 2.0

      Neues Modul: Google Maps 1.0 für Self-Commerce 2.0

      Downloads

      GoogleMap 1.0 for Self-Commerce 2.0 created by kunigunde http://www.self-commerce.de (Maik Schmidt)
      06.02.2008
      ========================================================
      based on:
      Google-Map für osCommerce 2.2 Milestone 2 http://addons.oscommerce.com/info/5340
      Version 1.00 - 08.08.2007
      Florian Schäffer (http://www.obd2-shop.eu)
      ========================================================
      Released under the GNU General Public License
      Spende/Donation Paypal: [email protected]
      ========================================================

      Funktionsbeschreibung:

      In einer eingebetteten Google-Map werden alle Kundenadressen markiert: die
      klassische Karte im Büro des Managers: Wo wir überall in der Welt Ge-
      schäftskontakte unterhalten.
      Per Klick auf den Marker öffnet
      sich ein Infofenster, über welches dann der Kunde in einem separaten
      Fenster bearbeitet werden kann.
      Die Karte ist im Administrationsfenster im Bereich "Kunden" zu finden.
      Die dazugehörigen Einstellungen im Bereich "Zusatz Module".
      Es werden erst Einträge vorgenommen, wenn der API Key (kostenlos) eingetragen wurde.
      Hier bekommt ihr den Key: http://www.google.com/apis/maps/
      ========================================================

      Neue Dateien:
      admin/google_map.php
      admin/images/125.png
      admin/images/shadow50.png
      create_map_data.php (muß am ende wieder entfernt werden!
      ist nur nötig um bestehende Kunden in die Karte zu integrieren)

      geänderte Dateien:
      address_book_process.php
      admin\create_account.php
      admin\customers.php
      create_account.php
      lang\sprache\admin\configuration.php
      lang\sprache\admin\sprache.php
      admin\includes\column_left.php
      ========================================================

      Datei:
      address_book_process.php

      suche:

      Quellcode

      1. xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array, 'update', "customers_id = '".(int) $_SESSION['customer_id']."'");
      2. }
      3. }
      4. $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_UPDATED, 'success');


      danach einfügen:

      Quellcode

      1. // googlemaps begin
      2. if (GOOGLEMAP_APIKEY != ''){
      3. if ((isset ($_POST['primary']) && ($_POST['primary'] == 'on')) || ($_GET['edit'] == $_SESSION['customer_default_address_id'])) {
      4. $url = "http://maps.google.com/maps/geo?q=";
      5. $url .= $street_address . "," . $postcode . "," . $city . "," . $country;
      6. $url .= "&output=csv&key=";
      7. $url .= GOOGLEMAP_APIKEY;
      8. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      9. $request = fopen($url,'r');
      10. $content = fread($request,100000);
      11. fclose($request);
      12. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      13. if ($statuscode != 200) // errors occurred; the address was successfully parsedd.
      14. {
      15. // Versuch ohne Straße
      16. $url = "http://maps.google.com/maps/geo?q=";
      17. $url .= $postcode . "," . $city . "," . $country;
      18. $url .= "&output=csv&key=";
      19. $url .= GOOGLEMAP_APIKEY;
      20. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      21. $request = fopen($url,'r');
      22. $content = fread($request,100000);
      23. fclose($request);
      24. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      25. }
      26. if ($statuscode == 200) // No errors occurred; the address was successfully parsed.
      27. {
      28. $cc_id = $_SESSION['customer_id'];
      29. $latlng_query_raw = "update customers_to_latlng set lat = '$lat', lng = '$lng' where customers_id =".$cc_id."";
      30. $latlng_query = xtc_db_query($latlng_query_raw);
      31. }
      32. }
      33. }
      34. //google maps end

      ========================================================

      Datei:
      admin\create_account.php

      suche:

      Quellcode

      1. xtc_redirect(xtc_href_link(FILENAME_CUSTOMERS, 'cID='.$cc_id, 'SSL'));
      2. }
      3. }
      4. ?>
      5. <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">


      davor einfügen:

      Quellcode

      1. // google maps begin
      2. if (GOOGLEMAP_APIKEY != ''){
      3. $url = "http://maps.google.com/maps/geo?q=";
      4. $url .= $entry_street_address . "," . $entry_postcode . "," . $entry_city . "," . $entry_country;
      5. $url .= "&output=csv&key=";
      6. $url .= GOOGLEMAP_APIKEY;
      7. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      8. $request = fopen($url,'r');
      9. $content = fread($request,100000);
      10. fclose($request);
      11. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      12. if ($statuscode != 200) // errors occurred; the address was successfully parsedd.
      13. {
      14. // Versuch ohne Straße
      15. $url = "http://maps.google.com/maps/geo?q=";
      16. $url .= $entry_postcode . "," . $entry_city . "," . $entry_country;
      17. $url .= "&output=csv&key=";
      18. $url .= GOOGLEMAP_APIKEY;
      19. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      20. $request = fopen($url,'r');
      21. $content = fread($request,100000);
      22. fclose($request);
      23. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      24. }
      25. if ($statuscode == 200) // No errors occurred; the address was successfully parsed.
      26. {
      27. $latlng_query_raw = "insert into customers_to_latlng (customers_id, lat, lng) values ('$cc_id','$lat','$lng')";
      28. $latlng_query = xtc_db_query($latlng_query_raw);
      29. }
      30. }
      31. //google maps end

      ========================================================

      Datei:
      admin\customers.php

      suche:

      Quellcode

      1. xtc_db_query("update ".TABLE_CUSTOMERS_INFO." set customers_info_date_account_last_modified = now() where customers_info_id = '".xtc_db_input($customers_id)."'");
      2. if ($entry_zone_id > 0)
      3. $entry_state = '';


      davor einfügen:

      Quellcode

      1. // google maps begin
      2. if (GOOGLEMAP_APIKEY != ''){
      3. $url = "http://maps.google.com/maps/geo?q=";
      4. $url .= $entry_street_address . "," . $entry_postcode . "," . $entry_city . "," . $entry_country;
      5. $url .= "&output=csv&key=";
      6. $url .= GOOGLEMAP_APIKEY;
      7. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      8. $request = fopen($url,'r');
      9. $content = fread($request,100000);
      10. fclose($request);
      11. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      12. if ($statuscode != 200) // errors occurred; the address was successfully parsedd.
      13. {
      14. // Versuch ohne Straße
      15. $url = "http://maps.google.com/maps/geo?q=";
      16. $url .= $entry_postcode . "," . $entry_city . "," . $entry_country;
      17. $url .= "&output=csv&key=";
      18. $url .= GOOGLEMAP_APIKEY;
      19. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      20. $request = fopen($url,'r');
      21. $content = fread($request,100000);
      22. fclose($request);
      23. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      24. }
      25. if ($statuscode == 200) // No errors occurred; the address was successfully parsed.
      26. {
      27. $latlng_query_raw = "update customers_to_latlng set lat = '$lat', lng = '$lng' where customers_id = '".xtc_db_input($customers_id)."'";
      28. $latlng_query = xtc_db_query($latlng_query_raw);
      29. }
      30. }
      31. // googlemaps end


      suche:

      Quellcode

      1. xtc_db_query("DELETE FROM ".TABLE_ADMIN_ACCESS." WHERE customers_id = '".xtc_db_input($customers_id)."'");


      danach einfügen:

      Quellcode

      1. // google maps begin
      2. xtc_db_query("DELETE FROM customers_to_latlng WHERE customers_id = '".xtc_db_input($customers_id)."'");
      3. // google maps end

      ========================================================

      Datei:
      create_account.php

      suche:

      Quellcode

      1. xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, '', 'SSL'));
      2. } else {
      3. echo $mail_error;


      davor einfügen:

      Quellcode

      1. // googlemaps begin
      2. if (GOOGLEMAP_APIKEY != ''){
      3. $url = "http://maps.google.com/maps/geo?q=";
      4. $url .= $street_address . "," . $postcode . "," . $city . "," . $country;
      5. $url .= "&output=csv&key=";
      6. $url .= GOOGLEMAP_APIKEY;
      7. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      8. $request = fopen($url,'r');
      9. $content = fread($request,100000);
      10. fclose($request);
      11. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      12. if ($statuscode != 200) // errors occurred; the address was successfully parsedd.
      13. {
      14. // Versuch ohne Straße
      15. $url = "http://maps.google.com/maps/geo?q=";
      16. $url .= $postcode . "," . $city . "," . $country;
      17. $url .= "&output=csv&key=";
      18. $url .= GOOGLEMAP_APIKEY;
      19. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      20. $request = fopen($url,'r');
      21. $content = fread($request,100000);
      22. fclose($request);
      23. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);
      24. }
      25. if ($statuscode == 200) // No errors occurred; the address was successfully parsed.
      26. {
      27. $cc_id = $_SESSION['customer_id'];
      28. $latlng_query_raw = "insert into customers_to_latlng (customers_id, lat, lng) values ('$cc_id','$lat','$lng')";
      29. $latlng_query = xtc_db_query($latlng_query_raw);
      30. }
      31. }
      32. //google maps end

      ========================================================

      Datei:
      lang\sprache\admin\configuration.php

      am ende vor ?> einfügen:

      Quellcode

      1. // Google Map
      2. define ('GOOGLEMAP_APIKEY_TITLE','Google Map API Key');
      3. define('GOOGLEMAP_APIKEY_DESC','Geben Sie hier ihren API Key ein.
      4. kostenlos erhältlich hier:
      5. <a href="http://www.google.com/apis/maps/" target="_blank">Google Maps API</a>');
      6. define('MAP_CENTER_LAT_TITLE','Kartenzentrum Lat');
      7. define('MAP_CENTER_LAT_DESC','<b>default: 51.165691</b>');
      8. define('MAP_CENTER_LNG_TITLE','Kartenzentrum Lng');
      9. define('MAP_CENTER_LNG_DESC','<b>default: 10.451526</b>');
      10. define('MAP_CENTER_ZOOM_TITLE','Zoomfaktor');
      11. define('MAP_CENTER_ZOOM_DESC','0-17
      12. <b>default: 6</b>');

      ========================================================

      datei:
      lang\sprache\admin\sprache.php

      suche:


      Quellcode

      1. define('BOX_CONFIGURATION_363','<font color="red">Login Schutz</font>');

      füge danach ein:

      Quellcode

      1. define('BOX_CONFIGURATION_364','Google Map Einstellung');

      ========================================================

      Datei:
      admin\includes\column_left.php

      suche:

      Quellcode

      1. if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['orders'] == '1')) $box_customers .= '<a href="' . xtc_href_link(FILENAME_ORDERS, '', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_ORDERS . '</a><br>';


      danach einfügen:

      Quellcode

      1. if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['google_map'] == '1') && (GOOGLEMAP_APIKEY != '')) $box_customers .= '<a href="' . xtc_href_link('google_map.php', '', 'NONSSL') . '" class="menuBoxContentLink"> -GOOGLE MAP</a><br>';


      suche:

      Quellcode

      1. if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['configuration'] == '1')) $box_extra_modules .= '<a href="' . xtc_href_link(FILENAME_CONFIGURATION, 'gID=361', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_CONFIGURATION_361 . '</a><br>';


      danach einfügen:

      Quellcode

      1. if (($_SESSION['customers_status']['customers_status_id'] == '0') && ($admin_access['configuration'] == '1')) $box_extra_modules .= '<a href="' . xtc_href_link(FILENAME_CONFIGURATION, 'gID=364', 'NONSSL') . '" class="menuBoxContentLink"> -' . BOX_CONFIGURATION_364 . '</a><br>';

      ========================================================

      SQL Befehle per PHPMYADMIN ausführen:

      Quellcode

      1. CREATE TABLE `customers_to_latlng` (
      2. `id` INT NOT NULL AUTO_INCREMENT ,
      3. `customers_id` INT NOT NULL ,
      4. `lat` DOUBLE NOT NULL ,
      5. `lng` DOUBLE NOT NULL ,
      6. PRIMARY KEY ( `id` )
      7. ) TYPE = MYISAM ;
      8. ALTER TABLE admin_access ADD google_map INT( 1 ) NOT NULL DEFAULT 1;
      9. INSERT INTO `configuration_group` VALUES (364, 'Google Map', 'Google Map', 364, 1);
      10. INSERT INTO `configuration` VALUES ('', 'GOOGLEMAP_APIKEY', '', 364, 1, NULL, '0000-00-00 00:00:00', NULL, NULL);
      11. INSERT INTO `configuration` VALUES ('', 'MAP_CENTER_LAT', '51.165691', 364, 2, NULL, '0000-00-00 00:00:00', NULL, NULL);
      12. INSERT INTO `configuration` VALUES ('', 'MAP_CENTER_LNG', '10.451526', 364, 3, NULL, '0000-00-00 00:00:00', NULL, NULL);
      13. INSERT INTO `configuration` VALUES ('', 'MAP_CENTER_ZOOM', '6', 364, 4, NULL, '0000-00-00 00:00:00', NULL, NULL);

      ========================================================

      die neuen Dateien hochladen
      den api key anfordern
      api key eingeben im adminmenü
      diese datei im browser aufrufen: create_map_data.php zb.: http://www.domain.de/create_map_data.php
      warten bis DONE erscheint
      diese Datei wieder vom Server entfernen: create_map_data.php
      alle Kunden welche sich ab jetzt anmelden werden automatisch in die Karte integriert.
      Bilder
      • screen_google_map.jpg

        229,08 kB, 499×311, 313 mal angesehen
      Information
      Hallo kunigunde
      Ich habe das Modul mal eingebaut. Leider taucht bei mir wenn ich die http://www.domain.de/create_map_data.php bzw. wenn sich ein neuer Kunde anmelden will ein Fehler auf:

      Quellcode

      1. 1054 - Unknown column 'customers_id' in 'field list'
      2. insert into customers_to_latlng (customers_id, lat, lng) values ('2','52.128932','8.196874')
      3. [XT SQL Error]
      oh, der erste sql befehl war falsch.

      Quellcode

      1. CREATE TABLE `customers_to_latlng` (
      2. `id` INT NOT NULL AUTO_INCREMENT ,
      3. `orders_id` INT NOT NULL ,
      4. `lat` DOUBLE NOT NULL ,
      5. `lng` DOUBLE NOT NULL ,
      6. PRIMARY KEY ( `id` )
      7. ) TYPE = MYISAM ;


      muß richtig heißen:

      Quellcode

      1. CREATE TABLE `customers_to_latlng` (
      2. `id` INT NOT NULL AUTO_INCREMENT ,
      3. `customers_id` INT NOT NULL ,
      4. `lat` DOUBLE NOT NULL ,
      5. `lng` DOUBLE NOT NULL ,
      6. PRIMARY KEY ( `id` )
      7. ) TYPE = MYISAM ;


      bitte die tabelle customers_to_latlng per phpmyadmin löschen und den befehl neu eingeben
      Sieht soweit ganz gut aus, jedoch Spuckt mein Provider beim Ausführen der create_map_data.php folgende Fehlermeldung aus:

      Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /home/www/........../shop/create_map_data.php on line 51

      Vermutlich ne Sicherheitseinstellung die ich als Kunde nicht unterbinden kann.... da es bei mir eh nur der Admin Account ist der eingetragen werden sollte, nicht die Welt... aber kann man die Kunden auch anders noch eintragen ??
      versuche es in diesem fall damit:

      ersetze jeweils dies:

      Quellcode

      1. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      2. $request = fopen($url,'r');
      3. $content = fread($request,100000);
      4. fclose($request);
      5. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);


      mit dem:

      Quellcode

      1. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      2. $temp="";
      3. $a_url = parse_url($url);
      4. $url2 = "";
      5. if (!empty($a_url['path'])) {
      6. $url2.=$a_url['path'];
      7. }
      8. if (!empty($a_url['query'])) {
      9. $url2.="?".$a_url['query'];
      10. }
      11. $fp = fsockopen($a_url['host'], !isset($a_url['port']) ? 80 : $a_url['port'], $temp, $temp, 5);
      12. if (!$fp) {
      13. echo "ERROR"; // oder andere Ausgabe !!
      14. } else {
      15. fputs($fp, 'GET ' . $url2 . " HTTP/1.0\r\nHost: " . $a_url['host'] . "\r\n\r\n");
      16. do {
      17. $line = chop(fgets($fp));
      18. } while (!empty($line) and !feof($fp));
      19. while (!feof($fp)) {
      20. $content = fgets($fp);
      21. }
      22. }
      23. fclose($fp);
      24. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);


      ist ungetestet stammt direkt aus einer hilfe von einem osc nutzer:
      http://addons.oscommerce.com/info/5340
      Hi,
      ich habe vergeblich versucht dieses Modul einzubauen. Folgende Fehlermeldung erhalten ich hierbei auch wenn ich

      Quellcode

      1. $url = str_replace (" ", "%20", $url); // Leerzeichen -> %20
      2. $temp="";
      3. $a_url = parse_url($url);
      4. $url2 = "";
      5. if (!empty($a_url['path'])) {
      6. $url2.=$a_url['path'];
      7. }
      8. if (!empty($a_url['query'])) {
      9. $url2.="?".$a_url['query'];
      10. }
      11. $fp = fsockopen($a_url['host'], !isset($a_url['port']) ? 80 : $a_url['port'], $temp, $temp, 5);
      12. if (!$fp) {
      13. echo "ERROR"; // oder andere Ausgabe !!
      14. } else {
      15. fputs($fp, 'GET ' . $url2 . " HTTP/1.0\r\nHost: " . $a_url['host'] . "\r\n\r\n");
      16. do {
      17. $line = chop(fgets($fp));
      18. } while (!empty($line) and !feof($fp));
      19. while (!feof($fp)) {
      20. $content = fgets($fp);
      21. }
      22. }
      23. fclose($fp);
      24. list($statuscode, $accuracy, $lat, $lng) = split(",", $content);


      eingebe. Gibt es noch eine andere Alternative wie z.B: curl_init ??
      uups :)

      START

      Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/vhosts/handy-town.net/httpdocs/create_map_data.php on line 58

      Warning: fsockopen(): unable to connect to :80 in .../httpdocs/create_map_data.php on line 58
      ERROR
      Warning: fclose(): supplied argument is not a valid stream resource in .../httpdocs/create_map_data.php on line 73
      54556, , , , =
      Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in .../httpdocs/create_map_data.php on line 96

      Warning: fsockopen(): unable to connect to :80 in .../httpdocs/create_map_data.php on line 96
      ERROR
      Warning: fclose(): supplied argument is not a valid stream resource in .../httpdocs/create_map_data.php on line 111
      ERROR ... not OK please check the adress
      Hallo

      auch ich hab jetzt das GOOGLE-MAP - Modul eingerichtet, allerdings hats bei mir auch erst mit dem geänderten Code der create_map_data.php, den kunigunde weiter oben gepostet hat funktioniert. sonst ohne Probleme.

      8)

      Jatzt versuche ich noch die Erweiterung ( http://self-commerce.de/viewtopic.php?t=922 ) die es mitlerweilen gibt einzusetzten.

      gruß Chris der Schreiner
      Hallo,

      nach dem Einbau in XTC habe ich ebenfalls ein Problem mit dem Modul:

      Quellcode

      1. Fatal error: Call to undefined function: xtc_get_countries() in /homepages/xxx/htdocs/xxx/shop/create_map_data.php on line 38


      Das Script übernimmt nicht den alten Datenbestand.

      Ein neuer User-Eintrag wird in der Karte angezeigt, leider aber ohne Adressdaten. Lediglich die Kundennummer steht in der Anzeige, wenn man mit der Maus auf die Fahne klickt.

      Hat jemand eine Idee, wo der Fehler steckt?

      Gruß
      Jack