Moin Moin,
ich muß Euch noch mal Nerven.
Da ich ja nun das osc Modul an das PMX 12.1 anpasse, sind da noch paar Fragen offen.
Ich habe mir auch den Coder Guid runter geladen und gelesen.
Wenn Dateien includet werden, muß ich zwingend ' (PMX_MODULES_DIR . DS . 'Catalog' . DS . '/Pfad/datei.php' ' oder kann ich weiterhin ' (dirname(__FILE__) . '/Pfad/Datei.php' ' verweden?
Des weiteren, soll die Kundenprüfung und beim Login und der Registrierung der User bestimmte Werte in die Seesion zugefügt werden.
Das hat folgenden Grund:
Wenn sich ein User registriert und das Konto Aktiviert wird, sollen die Sessionwerte für den osc mit gesetzt werden und die Tabellen für das Adressbuch und die für die Kunden sollen Automatisch 1x gefüllt werden.
Ebenso wenn der User sich auslogt und einloggt, sollen entwerder die Werte in der Session gelöscht werden oder gesetzt werden.
Nun habe ich eine einfache funktionierende Brücke für die Sessionwerte hinbekommen und für das anlegen des Gastkunden.
Code in der application_top:
// set the user ID if it exists
if (MX_IS_USER) {
$userdata = mxGetUserData();
$uid = $userdata['uid'];
$customer_id = $userdata['customers_id'];
$customer_default_address_id = $userdata['customers_default_address_id'];
$customer_first_name = $userdata['customers_firstname'];
$customer_country_id = $userdata['customers_country_id'];
$customer_zone_id = $userdata['customers_zone_id'];
if (mxSessionGetVar($userdata['uid']) && mxSessionGetVar($userdata['customers_id'])) {
mxSessionSetVar('customer_id', $customer_id);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
} else {
mxSessionSetVar('customer_id', $customer_id);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
}
} else {
$uid = "1";
$customer_id = "";
$customer_default_address_id = "";
$customer_first_name = "Guest";
$customer_country_id = "";
$customer_zone_id = "";
$guest_account = "1";
$gu_id = session_id();
$check_customer_query = sql_query("select customers_id from " . TABLE_CUSTOMERS . " where id = '" . tep_db_input($gu_id) . "'");
$check_customer = sql_fetch_array($check_customer_query);
if (!sql_num_rows($check_customer_query)) {
sql_query("INSERT INTO " . $prefix ."_oscpmx_customers (customers_id, uid, customers_firstname, customers_default_address_id, guest_account, id) VALUES ('$customer_id', '$uid', '$customer_first_name', '0', '$guest_account', '" . tep_db_input($gu_id) . "')");
mxSessionSetVar('customer_id', $check_customer['customers_id']);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
}else{
$customer_id = $check_customer['customers_id'];
$customer_default_address_id = "";
$customer_first_name = "Guest";
$customer_country_id = "";
$customer_zone_id = "";
sql_query("update " . $prefix ."_xxxxxx_customers_info set customers_info_date_of_last_logon = now(), customers_info_number_of_logons = customers_info_number_of_logons+1 where customers_info_id = ". $customer_id ."");
mxSessionSetVar('customer_id', $customer_id);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
}
}
Das schreibt mir zwar die benötigten Werte in die Session aber legt nur das Gastkonto in der Tabelle an. Für diesen Aufbau muste ich die Usertabelle um paar Einträge erweitern was aber nicht das Problem ist.
Nun habe ich die Anfragen erweitert und hänge fest, da mir langsam die Ideen ausgehen.
Hier mal die Erweiterte abfrage in der application_top:
if (MX_IS_USER) {
$userdata = mxGetUserData();
$uid = $userdata['uid'];
$check_user_query = sql_query("select customers_company, customers_firstname, customers_lastname, customers_street_address, customers_suburb, customers_postcode, customers_city, customers_zone_id, customers_country_id, customers_telephone, customers_fax, email, user_bday, user_sexus from " . $prefix ."_users where uid = '". (int)$userdata['uid'] ."'");
$check_user = sql_fetch_array($check_user_query);
if (sql_num_rows($check_user_query)) {
//$customer_id = $uid;
//$customer_id = $check_user['customers_id'];
$user_company = $check_user['customers_company'];
$user_firstname = $check_user['customers_firstname'];
$user_lastname = $check_user['customers_lastname'];
$user_street_address = $check_user['customers_street_address'];
$user_suburb = $check_user['customers_suburb'];
$user_postcode = $check_user['customers_postcode'];
$user_city = $check_user['customers_city'];
$user_zone_id = $check_user['customers_zone_id'];
$user_country_id = $check_user['customers_country_id'];
$user_telephone = $check_user['customers_telephone'];
$user_fax = $check_user['customers_fax'];
$user_email_address = $check_user['email'];
$user_gender = $check_user['user_sexus'];
$user_dob = $check_user['user_bday'];
//$customer_firstname = $customer_first_name;
if ($user_gender == '2') {
$ugender = 'm';
} elseif ($user_gender == '1') {
$ugender = 'f';
}
sql_query("INSERT INTO " . $prefix ."_oscpmx_customers (uid, customers_gender, customers_firstname, customers_lastname, customers_dob, customers_email_address, customers_default_address_id, customers_telephone, customers_fax, guest_account, id) VALUES ('$uid', '$ugender', '$user_firstname', '$user_lastname', '$user_dob', '$user_email_address', '', '$user_telephone', '$user_fax', '0', '')");
}
if (sql_num_rows($check_user_query)) {
$check_user_qry = sql_query("SELECT c.customers_id AS customers_id, c.customers_gender AS customers_gender, c.customers_firstname AS customers_firstname, c.customers_lastname AS customers_lastname, u.customers_suburb AS customers_suburb, u.customers_postcode AS customers_postcode, u.customers_city AS customers_city, u.customers_zone_id AS customers_zone_id, u.customers_country_id AS customers_country_id, u.user_bday AS user_bday, u.user_sexus AS user_sexus, u.customers_company AS customers_company, u.customers_street_address AS customers_street_address, u.uid AS uid
FROM " . $prefix ."_oscpmx_customers AS c, " . $prefix ."_users AS u ORDER BY u.uid = '". (int)$userdata['uid'] ."'");
$check_user1 = sql_fetch_array($check_user_qry);
//$customer_id = $uid;
$u_id = $check_user1['customers_id'];
$u_company = $check_user1['customers_company'];
$u_firstname = $check_user1['customers_firstname'];
$u_lastname = $check_user1['customers_lastname'];
$u_street_address = $check_user1['customers_street_address'];
$u_suburb = $check_user1['customers_suburb'];
$u_postcode = $check_user1['customers_postcode'];
$u_city = $check_user1['customers_city'];
$u_zone_id = $check_user1['customers_zone_id'];
$u_country_id = $check_user1['customers_country_id'];
$u_gender = $check_user1['user_sexus'];
$customer_first_name = $u_firstname;
if ($u_gender == '2') {
$gender = 'm';
} elseif ($u_gender == '1') {
$gender = 'f';
}
sql_query("INSERT INTO " . $prefix ."_oscpmx_address_book (customers_id, entry_gender, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_suburb, entry_postcode, entry_city, entry_country_id, entry_zone_id) VALUES ('$u_id','$gender' ,'$u_company', '$u_firstname', '$u_lastname', '$u_street_address', '$u_suburb', '$u_postcode, '$u_city', '$u_zone_id', '$u_country_id', '')");
if (mxSessionGetVar($userdata['uid']) && mxSessionGetVar($check_user1['customers_id'])) {
mxSessionSetVar('customer_id', $check_user1['customers_id']);
mxSessionSetVar('customer_first_name', $u_firstname);
mxSessionSetVar('customer_country_id', $u_country_id);
mxSessionSetVar('customer_zone_id', $u_zone_id);
} else {
mxSessionSetVar('uid', $uid);
mxSessionSetVar('customer_id', $check_user1['customers_id']);
mxSessionSetVar('customer_first_name', $u_firstname);
mxSessionSetVar('customer_country_id', $u_country_id);
mxSessionSetVar('customer_zone_id', $u_zone_id);
}
}
} else {
$uid = "1";
$customer_id = "";
$customer_default_address_id = "";
$customer_first_name = "Guest";
$customer_country_id = "";
$customer_zone_id = "";
$guest_account = "1";
$gu_id = session_id();
$check_customer_query = sql_query("select customers_id from " . TABLE_CUSTOMERS . " where id = '" . tep_db_input($gu_id) . "'");
$check_customer = sql_fetch_array($check_customer_query);
if (!sql_num_rows($check_customer_query)) {
sql_query("INSERT INTO " . $prefix ."_oscpmx_customers (customers_id, uid, customers_firstname, customers_default_address_id, guest_account, id) VALUES ('$customer_id', '$uid', '$customer_first_name', '0', '$guest_account', '" . tep_db_input($gu_id) . "')");
mxSessionSetVar('customer_id', $check_customer['customers_id']);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
}else{
$customer_id = $check_customer['customers_id'];
$customer_default_address_id = "";
$customer_first_name = "Guest";
$customer_country_id = "";
$customer_zone_id = "";
sql_query("update " . $prefix ."_oscpmx_customers_info set customers_info_date_of_last_logon = now(), customers_info_number_of_logons = customers_info_number_of_logons+1 where customers_info_id = ". $customer_id ."");
mxSessionSetVar('customer_id', $customer_id);
mxSessionSetVar('customer_default_address_id', $customer_default_address_id);
mxSessionSetVar('customer_first_name', $customer_first_name);
mxSessionSetVar('customer_country_id', $customer_country_id);
mxSessionSetVar('customer_zone_id', $customer_zone_id);
}
}
Bei dieser Kundenfunktion wird aber immer ein Eintrag in die Adressbuch und Kunden Tabelle geschrieben. Bei der Gastkontenabfrage halt nur einmal, da hier mit der Session ID gegen geprüft wird. Das will ich aber beim User vermeiden, da sonst bei einer Ungültigen Session wieder ein neuer Eintrag in die Kunden & Adressbuch Tabelle geschrieben wird.
Das das alles noch nicht 100% Sauber gecodet ist, denke ich ist mir bewusst.
Wie kann ich die Abfragen besser schreiben und vor allen wie und wo kann ich diese Abfragen in die mx_userfunctions_options und die nötigen Files in dem YA Modul einbauen ohne die Sicherheit auszuhebeln?
Für Tips und Ratschläge wäre ich dankbar, da ich sonst nicht wirklich beim checkout_shipping Sessionübergabe Problem weiter komme.