osc2pragmaMX

Begonnen von AlternativeComputing, 26 Juni 2011, 12:15:10

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

AlternativeComputing

Sehr geehrte Leser, User BETA Tester und Helfer des osc2pragmaMX Projektes.

Da ich Finanziell den Webspace für das osc2pragmaMX Projekt stemmen muste und ich es aber nicht mehr konnte
muste ich das Projekt erstmal auf Eis legen, aber es ist nicht eingestellt.

Meine Bitte nun an Euch: Meine Zeit ist zur Zeit stark eingeschrängt und ich zwangsweise gerade wieder an einen neuen Modul Arbeite, welches nun schon im Bugfix Stadium befindet, bitte Ich Euch mir alle Fehler hier aus dem Forum als zusammenfassung zukommen zulassen.

Ich werde das osc2pragmaMX Module dann überarbeiten und nur noch als Basis Version anbieten, ohne Mods. Ich werde mich auch erstmal nur auf die Single Shop Version Konzentrieren.


Mit freundlichen Grüßen

Peter Stein
MfG

Peter

AlternativeComputing

Moin Moin,


Im bezug auf diesen Tread hier: http://www.pragmamx.org/Forum-topic-31696.html

Und dem letzten Post von Andi, möchte ich zu Adis Aussage stellung nehmen:

1. Der Admin bug war mir bekannt (siehe: http://secunia.com/advisories/33446/ und hier: http://forums.oscommerce.de/index.php?showtopic=70425 )

Das Modul benutzt nicht die Anmelde Routine des oscommerce, sondern wird auf den PMX Adminbereich umgeleitet.

Da bei meinen Tests der Bug mit den Admins zum vorschein kam. Desweiteren wurde auch der kritische File Manager entfernt und ist auch im Modul nicht vorhanden.


2. Habe ich das oscommerce in der osc2pragmamx Modul Version 0.1.2 auf das zum Realesezeitpunktes des osc2pragmamx 0.1.2 auf die zur der Zeit Aktuellen Realese oscommerce upgedatet, sprich es wird  nicht das oscommerce in version 2.2 Release Candidate 2a verwendet.

3. Es wird in neuen Realese die Version des osc "osCommerce Online Merchant v2.3.1" verwendet, mit gravierenden änderungen, was dem Shop Adminbereich angeht.
MfG

Peter

AlternativeComputing

Korrektur des Punktes 2: Es war doch das Release Candidate 2a  :red:
MfG

Peter

Sportangler

Hallo,

bis wann ist den der Relaunch geplant?

:bye:

AlternativeComputing

Noch garnicht, erst wenn alles fertig ist.
MfG

Peter

shorty

 i can help for french translating and/or for beta test if necessary  :smile:

AlternativeComputing

#6
Zitat von: shorty am 01 August 2011, 01:50:53
i can help for french translating and/or for beta test if necessary  :smile:

Thx for your Help shorty :thumbup:

Nun ist das Admin Backend fast fertig, es müßen noch paar Fehler behoben werden, der Spaweditor muß noch integriert werden und die jQuery Liberies müßen auch noch angepasst werden.

Folgfende Änderungen sind im osc4pragmamx 2.3.1 eingefloßen:

1. Die Kunden/Benutzerverwaltung läuft nun komplett über das PMX (Eine Benutzer/Kunden Anmeldung/Registrierung)

2. Newsletter laufen auch über das PMX

3. Das ACP ist nun komplett ins PMX integriert.

4. Die Administratoren werden nun auch über das PMX verwaltet. Dies dient der Sicherheit des Shops, da der Hackschutz des osCommerce 2.3.1 Kinderkrankheiten hat und mit der falschen PHP Version zickig ist. Was beim Versuch sich im ACP einzulogen eine Endlosschleife auslösen kann und somit der Adminbereich des Shops nicht zugänglich ist. Der im osc2pragmaMx 0.1.2 und der osCommerce 2.2 RC2a entdeckte Adminbug wurde somit ausgeschloßen.

5. Das Modul ist auch auf PHP 5.3.6.x Lauffähig, da es auf PHP 5.2.x und höher angepast wurde.

6. Der Filemanager ist im Original osc 2.3.1 und im osc4pragmamx 2.3.1 nicht mehr enthalten.

So das ist erstmal der Stand der Dinge


<Edit:>
Das Modul wird auf:

CMS-Version: pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 :: PHP-Version: 5.3.7RC4-dev :: MySQL-Version: 5.1.46-log :: Server-Version: Apache/2.2.15 (Linux/SUSE)

Entwickelt.
</Editende>
MfG

Peter

AlternativeComputing

Nun ist auch das Hauptproblem gelöst:

Sowoll als Gast und beim Registrierten Benutzer wird der gefüllte Warenkorb angezeigt.

Ich kann nun endlich das Frontend fertig machen.

Wenn Frontend und Backend Fertig ist, werde ich eine BETA Version zum Testen rausgeben.


Das Modul wurde nur auf dem pragmaMx 0.1.11.3, 1.33.2.12.2.9.2.3/2010-08-02 getestet.
MfG

Peter

Webfan

Hallo AlternativeComputing,
ZitatSowoll als Gast und beim Registrierten Benutzer wird der gefüllte Warenkorb angezeigt.
Mich würde interessieren wie Du das gelöst hast.
Bei meinem Projekt Onlineshop für das Webfan Homepagesystem http://domainundhomepagespeicher.de/shop/ ergibt sich das selbe Problem: Artikel als Gast und User funzt, nur wenn ich erst als Gast Artikel in den WK lege, und mich dann als User anmelde, sind die Artikel im Warenkorb weg und ich muß sie erneut in den Warenkorb legen.
Deshalb habe ich den Warenkorb zunächst für Gäste deaktiviert und man muß sich anmelden und einen Kundenaccount eröffnen, bevor man den Warenkorb benutzen kann.
Dies finde ich äußerst unschön.
Kannst Du mir einen kleinen Schubser oder etwas Code liefern, vielleicht kann ich von Deiner Lösung was lernen?
Danke  :bye:

AlternativeComputing

Zitat von: Webfan am 08 August 2011, 13:15:13
Hallo AlternativeComputing,
ZitatSowoll als Gast und beim Registrierten Benutzer wird der gefüllte Warenkorb angezeigt.
Mich würde interessieren wie Du das gelöst hast.
Bei meinem Projekt Onlineshop für das Webfan Homepagesystem http://domainundhomepagespeicher.de/shop/ ergibt sich das selbe Problem: Artikel als Gast und User funzt, nur wenn ich erst als Gast Artikel in den WK lege, und mich dann als User anmelde, sind die Artikel im Warenkorb weg und ich muß sie erneut in den Warenkorb legen.
Deshalb habe ich den Warenkorb zunächst für Gäste deaktiviert und man muß sich anmelden und einen Kundenaccount eröffnen, bevor man den Warenkorb benutzen kann.
Dies finde ich äußerst unschön.
Kannst Du mir einen kleinen Schubser oder etwas Code liefern, vielleicht kann ich von Deiner Lösung was lernen?
Danke  :bye:

Moin Webfan,

das macht der osCommerce ja schon, in dem das Shopsystem den Warenkorb in die Datenbank speichert.

Nun war mein Problem, das der Warenkorb nicht wieder hergestellt wurde, desweiteren mußte ich den Gästen die Userid "1" aufzwingen.

User ID aufzwingen und in Session schreiben:


if (mxSessionGetVar('user_uid') || (isset($_GET['user_uid']) ? $_GET['user_uid'] : '')) {
$userdata = mxGetUserData();
$uid = $userdata['uid'];
mxSessionSetVar('uid', $uid = $userdata['uid']);
} else {
mxSessionSetVar('uid', $uid = "1");
}


Dann solltest Du alle waren in eine Tabele schreiben lassen und dann dort wieder abholen.


//Original Warenkorb osCommerce Code (außer die Sessionanweisungen)
//
// Shopping cart actions
  if (isset($_GET['action'])) {

// redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled
//    if ($session_started == false) {
//      tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE));
//    }

    if (DISPLAY_CART == 'true') {
      $goto =  FILENAME_SHOPPING_CART;
      $parameters = array('action', 'cPath', 'products_id', 'pid');
    } else {
      $goto = basename($PHP_SELF);
      if ($_GET['action'] == 'buy_now') {
        $parameters = array('action', 'pid', 'products_id');
      } else {
        $parameters = array('action', 'pid');
      }
    }
    switch ($_GET['action']) {
      // customer wants to update the product quantity in their shopping cart
      case 'update_product' : for ($i=0, $n=sizeof($_POST['products_id']); $i<$n; $i++) {
                                if (in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array()))) {
                                  $cart->remove($_POST['products_id'][$i]);
                                } else {
                                  $attributes = ($_POST['id'][$_POST['products_id'][$i]]) ? $_POST['id'][$_POST['products_id'][$i]] : '';
                                  $cart->add_cart($_POST['products_id'][$i], $_POST['cart_quantity'][$i], $attributes, false);
                                }
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
      // customer adds a product from the products page
      case 'add_product' :    if (isset($_POST['products_id']) && is_numeric($_POST['products_id'])) {
                                $attributes = isset($_POST['id']) ? $_POST['id'] : '';
                                $cart->add_cart($_POST['products_id'], $cart->get_quantity(tep_get_uprid($_POST['products_id'], $attributes))+1, $attributes);
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
      // customer removes a product from their shopping cart
      case 'remove_product' : if (isset($_GET['products_id'])) {
                                $cart->remove($_GET['products_id']);
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
      // performed by the 'buy now' button in product listings and review page
      case 'buy_now' :        if (isset($_GET['products_id'])) {
                                if (tep_has_product_attributes($_GET['products_id'])) {
                                  tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $_GET['products_id']));
                                } else {
                                  $cart->add_cart($_GET['products_id'], $cart->get_quantity($_GET['products_id'])+1);
                                }
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
      case 'notify' :         if (mxSessionGetVar('uid')) {
                                if (isset($_GET['products_id'])) {
                                  $notify = $_GET['products_id'];
                                } elseif (isset($_GET['notify'])) {
                                  $notify = $_GET['notify'];
                                } elseif (isset($_POST['notify'])) {
                                  $notify = $_POST['notify'];
                                } else {
                                  tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
                                }
                                if (!is_array($notify)) $notify = array($notify);
                                for ($i=0, $n=sizeof($notify); $i<$n; $i++) {
                                  $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and uid = '" . $uid . "'");
                                  $check = tep_db_fetch_array($check_query);
                                  if ($check['count'] < 1) {
                                    tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, uid, date_added) values ('" . $notify[$i] . "', '" . $uid . "', now())");
                                  }
                                }
                                tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));
                              } else {
                                $navigation->set_snapshot();
                                tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
                              }
                              break;
      case 'notify_remove' :  if (mxSessionGetVar('uid') && isset($_GET['products_id'])) {
                                $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $_GET['products_id'] . "' and uid = '" . $uid . "'");
                                $check = tep_db_fetch_array($check_query);
                                if ($check['count'] > 0) {
                                  tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $_GET['products_id'] . "' and uid = '" . $uid . "'");
                                }
                                tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action'))));
                              } else {
                                $navigation->set_snapshot();
                                tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
                              }
                              break;
      case 'cust_order' :     if (mxSessionGetVar('uid') && isset($_GET['pid'])) {
                                if (tep_has_product_attributes($_GET['pid'])) {
                                  tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $_GET['pid']));
                                } else {
                                  $cart->add_cart($_GET['pid'], $cart->get_quantity($_GET['pid'])+1);
                                }
                              }
                              tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));
                              break;
    }
  }

//Originalcode Ende
  if (is_object($cart)) $cart->restore_contents(); // Stellt den Warenkorb aus der Tabele wieder her, mußte ich aus der alten osc_mainfile klauen ^^



Der Warenkorbcode ist aus der application_top. Schau Dir am besten mal das Original Shopsystem an. Dort wirst Du sehen, wie der Warenkorb arbeitet.

Ich bin grade am Frontend bei, da müßen noch die Liefer und Zahlungsadressfehler behoben werden (Adressen werden nicht aus dem Adressbuch geholt).

Viel ist es nicht mehr was ich noch machen muß.
Kann also noch ca ein Monat dauern, bis die BETA raus geht. Nagelt mich da aber nicht drauf fest.
MfG

Peter

Webfan

ZitatNun war mein Problem, das der Warenkorb nicht wieder hergestellt wurde, desweiteren mußte ich den Gästen die Userid "1" aufzwingen.

So ganz verstehe ich das noch nicht. Also das das userid Problem das Problem löst.
Mein Problem ist:
- Ich habe für Kunden einen (begrenzten und erweiterbaren) Datenbankwarenkorb.
- Alles was da nicht hineinpasst oder was Gast ist wird in den Cookiewarenkorb geschrieben.

Wenn ich also als Gast was in den WK lege und mich dann als User einlogge, habe ich logischerweise einen anderen Warenkorb.
Ich dachte ich könnte die Warenkörbe "mergen" aber irgendwie scheint das nicht ganz zu klappen:
$this->warenkorb_string = $this->cookie_string.$this->kunde['warenkorb_content_items'];
Die Zeile tut es aber nicht.
Ich hab mal zum testen den Warenkorb für Gäste wieder geöffnet.
Also das Problem ist, den User über als Gast und als User eingeloggt hinweg zu identifizieren.
Irgendwie scheint mir die Sache komplizierter je mehr ich darüber nachdenke  :gruebel:
So sieht mein Warenkorb aus:
**zu lang: siehe Anhang! **

Sorry, ich will nicht den Thread kapern, ggf. Beiträge bitte abtrennen?!

mfg

AlternativeComputing

Du must beide Warenkörbe (Gast & User) in die DB Tabelle "Warenkorb",  mit Gast & Userid schreiben lassen. Dann übergibts Du alles an die Cookies/Session oder läst erst alles in die Seesion/Cookies schreiben und dann erst in die DB.

Zurnot must Du die Seesonid/Cookieid verschlüßelt mit in in die Tabele schreiben lassen, um die verschiedenen Gäste zu identifizieren.

Aber frag mal Comedie,  der kann Dir da genauere Auskunft geben.
MfG

Peter

Webfan

Ich hab keine Tabelle Warenkorb, sondern speicher den Warenkorb als String in der Kundentabelle.
Wenn ich mich auslogge, resette ich auch die Session.
Ich denke die einzige Möglichkeit ist es wie oben geschrieben, den Cookie Warenkorb anzuhängen ((nur?)im Cookie kann man sozusagen "sessionübergreifend" speichern!).
$this->warenkorb_string = $this->cookie_string.$this->kunde['warenkorb_content_items'];
Ich hab da so eine Checksummenkonstruktion, werde mal checken ob es vielleicht daran liegt (kann aber heute abend werden...).

Vielen Dank erstmal für Deine Hilfe  :thumbup:

AlternativeComputing

Zitat von: Webfan am 08 August 2011, 16:55:40
Ich hab keine Tabelle Warenkorb, sondern speicher den Warenkorb als String in der Kundentabelle.
Wenn ich mich auslogge, resette ich auch die Session.
Ich denke die einzige Möglichkeit ist es wie oben geschrieben, den Cookie Warenkorb anzuhängen ((nur?)im Cookie kann man sozusagen "sessionübergreifend" speichern!).
$this->warenkorb_string = $this->cookie_string.$this->kunde['warenkorb_content_items'];
Ich hab da so eine Checksummenkonstruktion, werde mal checken ob es vielleicht daran liegt (kann aber heute abend werden...).

Vielen Dank erstmal für Deine Hilfe  :thumbup:

Du wirst um eine Tabelle Warenkorb nich herumkommen. Da die Session/Cookies ja A) Nur begrenzt Haltbar sind und B) Nach dem Ausloggen gelöscht werden.

Wenn Session/Cookie gelöscht = Warenkorb wech. Nuzt Du nun aber z.B. eine Tabelle als "Zwischenspeicher", kann der/die Cookie/Session darauf zugreifen.
MfG

Peter