function update_stock($txn_id = NULL, $phpsessionid = NULL) { global $pref; $sqlcheck = new db(); $trans_array = transaction($phpsessionid, 0, 0, "Completed"); $items_array = unserialize($trans_array['all_items']); $count = 1; $temp_array = ""; while ($items_array["db_id_" . $count]) { if ($sqlcheck->db_Select("easyshop_items", "*", "item_id = '" . $items_array["db_id_" . $count] . "'")) { while ($row = $sqlcheck->db_Fetch()) { if ($row['item_track_stock'] == 2) { // Is this a tracked stock item? if ($row['item_instock'] >= $items_array["quantity" . $count]) { $newstock = $row['item_instock'] - $items_array["quantity_" . $count]; if ($row['item_minimum'] == 0 || $row['item_minimum'] == NULL) { // Minimum level is flexible, but with bottom-level 1. $minimum_level = 1; } else { $minimum_level = $row['item_minimum']; } if ($newstock <= $minimum_level && $newstock != 0) { // Minimum level is reached; send e-mail alert ShopMail::easyshop_sendalert($row['item_id'], $newstock, $minimum_level, 1); // Alert-type = 1 } if ($newstock == 0) { $sqlcheck->db_Update("easyshop_items", "item_instock = '" . $newstock . "', item_out_of_stock = '2'\r\n\t\t\t\t\t\t\t\t\tWHERE item_id = '" . $items_array["db_id_" . $count] . "'"); ShopMail::easyshop_sendalert($row['item_id'], $newstock, $minimum_level, 3); // Alert-type = 3 } else { $sqlcheck->db_Update("easyshop_items", "item_instock = '" . $newstock . "'\r\n\t\t\t\t\t\t\t\t\tWHERE item_id = '" . $items_array["db_id_" . $count] . "'"); } } else { // There is a problem; client has paid for more items than are in stock // Raise out of stock flag and send email $sqlcheck->db_Update("easyshop_items", "item_instock = '0', item_out_of_stock = '2'\r\n\t\t\t\t\t\t\t\t\tWHERE item_id = '" . $items_array["db_id_" . $count] . "'"); ShopMail::easyshop_sendalert($row['item_id'], $newstock, $minimum_level, 2); // Alert-type = 2 } } if ($row['prod_promo_class'] != 255 && $row['prod_promo_class'] != 0 && $trans_array['ipn_user_id'] > 0) { // Auto promotion of user $sqlcheck2 = new db(); $sqlcheck3 = new db(); require_once e_HANDLER . 'userclass_class.php'; $promo_class_name = r_userclass_name($row['prod_promo_class']); $sqlcheck2->db_Select("user", "*", "user_id='" . $trans_array['ipn_user_id'] . "'"); if ($row2 = $sqlcheck2->db_Fetch()) { $user_name = $row2['user_name']; $class_extant = explode(',', $row2['user_class']); foreach ($class_extant as $key => $value) { if (intval($value) == 0) { unset($class_extant[$key]); } } if ($row['prod_promo_class'] != 255 && $row['prod_promo_class'] != 0 && !in_array($row['prod_promo_class'], $class_extant)) { $class_extant[] = $row['prod_promo_class']; } $new_array = array_unique($class_extant); sort($new_array); $class_list = implode(',', $new_array); $sqlcheck3->db_Update("user", "user_class='" . $class_list . "' where user_id='" . $trans_array['ipn_user_id'] . "'"); $mailto = !(isset($pref['siteadminemail']) && strlen($pref['siteadminemail']) == 0) ? $pref['replyto_email'] : $pref['siteadminemail']; // Keep 0.7.8 compatible $subject = $pref['sitename'] . ": " . EASYSHOP_IPN_30; // [USERNAME] upgraded to class [PROMOCLASS] $subject = str_replace("[USERNAME]", $user_name, $subject); $subject = str_replace("[PROMOCLASS]", $promo_class_name, $subject); $message = EASYSHOP_IPN_31 . "<br /><br />"; $message .= EASYSHOP_IPN_32 . "<br /><br />"; $message .= EASYSHOP_IPN_33 . "<br />"; $message .= "<br />" . EASYSHOP_IPN_34 . " " . $pref['siteurl']; $message .= "<br /><br />© " . date("Y") . " EasyShop"; $message = str_replace("[USERNAME]", $row2['user_name'], $message); $message = str_replace("[USERLINK]", SITEURL . "user.php?id." . $trans_array['ipn_user_id'], $message); $message = str_replace("[PROMOCLASS]", r_userclass_name($row['prod_promo_class']), $message); $message = str_replace("[TRANSACTIONID]", $trans_array['txn_id'], $message); $message = str_replace("[PRODUCTPRICE]", $items_array["amount_" . $count], $message); $message = str_replace("[PRODUCTQTY]", $items_array["quantity_" . $count], $message); $message = str_replace("[CURRENCY]", $trans_array['mc_currency'], $message); $message = str_replace("[GROSSAMOUNT]", $trans_array['mc_gross'], $message); $message = str_replace("[PAYMENTDATE]", $trans_array['payment_date'], $message); $message = str_replace("[PRODLINK]", SITEURL . e_PLUGIN . "easyshop/easyshop.php?prod." . $items_array["db_id_" . $count], $message); $message = str_replace("[PRODUCTNAME]", $items_array["item_name_" . $count], $message); $user_message = EASYSHOP_IPN_35; $user_message .= "<br />" . EASYSHOP_IPN_36; $user_message .= "<br />" . EASYSHOP_IPN_34 . " " . $pref['siteurl']; $user_message .= "<br /><br />© " . date("Y") . " EasyShop"; $user_message = str_replace("[PRODUCTNAME]", $items_array["item_name_" . $count], $user_message); $user_message = str_replace("[PROMOCLASS]", r_userclass_name($row['prod_promo_class']), $user_message); //ShopMail::easyshop_sendemail($mailto, $subject, $message, $headers2, $attachment_name); if ($row2['user_class'] != $class_list) { // Only send an e-mail if the user_class array actually changed ShopMail::easyshop_sendemail($mailto, $subject, $message, $headers2, $attachment_name); // Mail to admin ShopMail::easyshop_sendemail($row2['user_email'], $subject, $user_message, $headers2, $attachment_name); // Mail to user } } } $temp_array = array($row['item_id'] => array("item_name" => $items_array["item_name_" . $count], "db_id" => $row['item_id'])); } } else { // This item does not exist!!! //$sqlcheck -> db_Close(); return FALSE; } $count++; } // Send downloads $to_email = $trans_array['payer_email']; ShopMail::easyshop_senddownloads($temp_array, $to_email); //$sqlcheck -> db_Close(); return TRUE; }