Example #1
0
                    $shipping = str_replace(",", "", $_REQUEST['shipping']);
                    $shipping = preg_replace('/[^\\d.]/', '', $shipping);
                    echo COM_refresh($_PAY_CONF['site_url'] . '/confirmation.php?pay_by=check&shipping=' . $shipping . '&msg=' . $msg);
                } else {
                    $msg = urlencode($LANG_PAYPAL_1['details_save_success']);
                    echo COM_refresh($_PAY_CONF['site_url'] . '/purchase_history.php?msg=' . $msg);
                }
                exit;
                break;
            }
        }
    default:
        // Get my details to edit and display the form
        if (!COM_isAnonUser()) {
            $sql = "SELECT * FROM {$_TABLES['paypal_users']} WHERE user_id = {$_USER['uid']}";
            $res = DB_query($sql);
            $A = DB_fetchArray($res);
            if ($A['user_id'] == '' && SEC_hasRights('paypal.admin')) {
                $A['user_id'] = $_REQUEST['uid'];
            }
            if ($A['user_id'] == '') {
                $A['user_id'] = $_USER['uid'];
            }
            $validation_url = $_PAY_CONF['site_url'] . '/details.php?mode=save';
            $display .= PAYPAL_getDetailsForm($A, $validation_url, $LANG_PAYPAL_1['save_button']);
        } else {
            echo COM_refresh($_CONF['site_url']);
        }
}
$display = COM_siteHeader() . $display . COM_siteFooter();
COM_output($display);
Example #2
0
    function display_cart($jcart, $block = 0)
    {
        global $_CONF, $_PAY_CONF, $LANG_PAYPAL_1, $LANG_PAYPAL_CART, $_USER, $_TABLES, $LANG_PAYPAL_ADMIN, $_SCRIPTS;
        // JCART ARRAY HOLDS USER CONFIG SETTINGS
        extract($jcart);
        // ASSIGN USER CONFIG VALUES AS POST VAR LITERAL INDICES
        // INDICES ARE THE HTML NAME ATTRIBUTES FROM THE USERS ADD-TO-CART FORM
        $item_id = $_POST[$item_id];
        $item_qty = $_POST[$item_qty];
        $item_price = $_POST[$item_price];
        //Todo if block==1 shorten name
        $item_name = $_POST[$item_name];
        $item_weight = $_POST[$item_weight];
        // ADD AN ITEM
        if ($_POST[$item_add]) {
            $item_added = $this->add_item($item_id, $item_qty, $item_price, $item_name, $item_weight);
            // IF NOT TRUE THE ADD ITEM FUNCTION RETURNS THE ERROR TYPE
            if ($item_added !== true) {
                $error_type = $item_added;
                switch ($error_type) {
                    case 'qty':
                        $error_message = $text['quantity_error'];
                        break;
                    case 'price':
                        $error_message = $text['price_error'];
                        break;
                }
            }
        }
        // UPDATE A SINGLE ITEM
        // CHECKING POST VALUE AGAINST $text ARRAY FAILS?? HAVE TO CHECK AGAINST $jcart ARRAY
        if ($_POST['jcart_update_item'] == $jcart['text']['update_button']) {
            $item_updated = $this->update_item($_POST['item_id'], $_POST['item_qty']);
            if ($item_updated !== true) {
                $error_message = $text['quantity_error'];
            }
        }
        // UPDATE ALL ITEMS IN THE CART
        if ($_POST['jcart_update_cart'] || $_POST['jcart_checkout']) {
            $cart_updated = $this->update_cart();
            if ($cart_updated !== true) {
                $error_message = $text['quantity_error'];
            }
        }
        // REMOVE AN ITEM
        if ($_GET['jcart_remove'] && !$_POST[$item_add] && !$_POST['jcart_update_cart'] && !$_POST['jcart_check_out']) {
            $this->del_item($_GET['jcart_remove']);
        }
        // EMPTY THE CART
        if ($_POST['jcart_empty']) {
            $this->empty_cart();
        }
        // DETERMINE WHICH TEXT TO USE FOR THE NUMBER OF ITEMS IN THE CART
        if ($this->itemcount > 1) {
            $text['items_in_cart'] = $text['multiple_items'];
        }
        if ($this->itemcount <= 1) {
            $text['items_in_cart'] = $text['single_item'];
        }
        // DETERMINE IF THIS IS THE CHECKOUT PAGE
        // WE FIRST CHECK THE REQUEST URI AGAINST THE USER CONFIG CHECKOUT (SET WHEN THE VISITOR FIRST CLICKS CHECKOUT)
        // WE ALSO CHECK FOR THE REQUEST VAR SENT FROM HIDDEN INPUT SENT BY AJAX REQUEST (SET WHEN VISITOR HAS JAVASCRIPT ENABLED AND UPDATES AN ITEM QTY)
        $is_checkout = strpos($_SERVER['REQUEST_URI'], $form_action);
        if ($is_checkout !== false || $_REQUEST['jcart_is_checkout'] == 'true') {
            $is_checkout = true;
        } else {
            $is_checkout = false;
        }
        $retval = '';
        // OVERWRITE THE CONFIG FORM ACTION TO POST TO jcart-gateway.php INSTEAD OF POSTING BACK TO CHECKOUT PAGE
        // THIS ALSO ALLOWS US TO VALIDATE PRICES BEFORE SENDING CART CONTENTS TO PAYPAL
        if ($is_checkout == true) {
            $form_action = $_PAY_CONF['site_url'] . '/jcart/jcart-gateway.php';
        } else {
            $form_action = $_PAY_CONF['site_url'] . '/checkout.php';
        }
        // DEFAULT INPUT TYPE
        // CAN BE OVERRIDDEN IF USER SETS PATHS FOR BUTTON IMAGES
        $input_type = 'submit';
        // IF THIS ERROR IS TRUE THE VISITOR UPDATED THE CART FROM THE CHECKOUT PAGE USING AN INVALID PRICE FORMAT
        // PASSED AS A SESSION VAR SINCE THE CHECKOUT PAGE USES A HEADER REDIRECT
        // IF PASSED VIA GET THE QUERY STRING STAYS SET EVEN AFTER SUBSEQUENT POST REQUESTS
        if ($_SESSION['quantity_error'] == true) {
            $error_message = $text['quantity_error'];
            unset($_SESSION['quantity_error']);
        }
        // OUTPUT THE CART
        if ($is_checkout == true && $block == 1) {
            return $LANG_PAYPAL_CART['checkout'] . '...';
        }
        // DISPLAY THE CART HEADER
        $cart = COM_newTemplate($_CONF['path'] . 'plugins/paypal/templates');
        if ($_REQUEST['pay_by'] == 'check' && $block == 0) {
            $cart->set_file(array('cart_start' => 'cart_start_check.thtml', 'cart_item' => 'cart_item_check.thtml', 'cart_empty' => 'cart_empty.thtml', 'cart_end' => 'cart_end_check.thtml'));
        } else {
            if ($block == 0) {
                $cart->set_file(array('cart_start' => 'cart_start.thtml', 'cart_item' => 'cart_item.thtml', 'cart_empty' => 'cart_empty.thtml', 'cart_end' => 'cart_end.thtml'));
            } else {
                $cart->set_file(array('cart_start' => 'cart_block_start.thtml', 'cart_item' => 'cart_block_item.thtml', 'cart_empty' => 'cart_empty.thtml', 'cart_end' => 'cart_block_end.thtml'));
            }
        }
        if ($is_checkout == true) {
            $steps = '<ul id="ULcheckoutProcedure">
			                <li id="LIactiveStep">' . $LANG_PAYPAL_1['checkout_step_1'] . '</li>
							<li>' . $LANG_PAYPAL_1['checkout_step_2'] . '</li>
							<li>' . $LANG_PAYPAL_1['checkout_step_3'] . '</li>
						</ul>';
            $cart->set_var('steps', $steps);
        } else {
            if ($_REQUEST['pay_by'] == 'check' || PAYBYCHECK == true) {
                PAYBYCHECK == true;
                $steps = '<ul id="ULcheckoutProcedure">
			                <li>' . $LANG_PAYPAL_1['checkout_step_1'] . '</li>
							<li id="LIactiveStep">' . $LANG_PAYPAL_1['checkout_step_2'] . '</li>
							<li>' . $LANG_PAYPAL_1['checkout_step_3'] . '</li>
						</ul>';
                $cart->set_var('steps', $steps);
            } else {
                $cart->set_var('steps', '');
            }
        }
        if ($_REQUEST['pay_by'] == 'check' && $block == 0) {
            // Get details to edit and display the form on informations.php page
            if (!COM_isAnonUser()) {
                $sql = "SELECT * FROM {$_TABLES['paypal_users']} WHERE user_id = {$_USER['uid']}";
                $res = DB_query($sql);
                $A = DB_fetchArray($res);
                if ($A['user_id'] == '' && SEC_hasRights('paypal.admin')) {
                    $A['user_id'] = $_REQUEST['uid'];
                }
                if ($A['user_id'] == '') {
                    $A['user_id'] = $_USER['uid'];
                }
                $informations = '<h2>' . $LANG_PAYPAL_1['review_details'] . '</h2>';
                $informations .= '<p>' . $LANG_PAYPAL_1['confirm_order_check'] . '</p>';
                $informations .= '<div style="margin:25px;">' . PAYPAL_getDetailsForm($A, $_PAY_CONF['site_url'] . '/details.php?mode=save', $LANG_PAYPAL_1['confirm_order_button'], $_GET['shipping']) . '</div>';
                $cart->set_var('informations', $informations);
            }
        }
        // IF THERE'S AN ERROR MESSAGE WRAP IT IN SOME HTML
        if ($error_message) {
            $error_message = "<p class='jcart-error'>{$error_message}</p>";
            $cart->set_var('error_message', $error_message);
        } else {
            $cart->set_var('error_message', '');
        }
        $cart->set_var('xhtml', XHTML);
        $cart->set_var('form_action', $form_action);
        $cart->set_var('cart_title', $text['cart_title']);
        $cart->set_var('itemcount', $this->itemcount . "&nbsp;" . $text['items_in_cart']);
        $cart->set_var('description', $text['description']);
        $cart->set_var('unit_price', $text['unit_price']);
        $cart->set_var('quantity', $text['quantity']);
        $cart->set_var('item_price', $text['item_price']);
        $retval .= $cart->parse('', 'cart_start');
        // IF ANY ITEMS IN THE CART
        if ($this->itemcount > 0) {
            define("CART_EMPTY", false);
            $categories = array();
            // DISPLAY LINE ITEMS
            foreach ($this->get_contents() as $item) {
                // ADD THE ITEM ID AS THE INPUT ID ATTRIBUTE
                // THIS ALLOWS US TO ACCESS THE ITEM ID VIA JAVASCRIPT ON QTY CHANGE, AND THEREFORE UPDATE THE CORRECT ITEM
                // NOTE THAT THE ITEM ID IS ALSO PASSED AS A SEPARATE FIELD FOR PROCESSING VIA PHP
                $cart->set_var('name', $item['name']);
                $cart->set_var('id', $item['id']);
                //GET ALL PRODUCTS CATEGORIES
                $cat = DB_getItem($_TABLES['paypal_products'], 'cat_id', 'id=' . PAYPAL_realId($item['id']));
                if ($cat != 0) {
                    $categories[] .= $cat;
                }
                $cart->set_var('price', number_format($item['price'], $_CONF['decimal_count'], $_CONF['decimal_separator'], $_CONF['thousand_separator']));
                $cart->set_var('currency_symbol', $text['currency_symbol']);
                $cart->set_var('qty', $item['qty']);
                $cart->set_var('subtotal', number_format($item['subtotal'], $_CONF['decimal_count'], $_CONF['decimal_separator'], $_CONF['thousand_separator']));
                $cart->set_var('remove_png', $_PAY_CONF['site_url'] . '/images/remove.png');
                $cart->set_var('remove', $LANG_PAYPAL_CART['remove']);
                $retval .= $cart->parse('', 'cart_item');
            }
        } else {
            define("CART_EMPTY", true);
            $cart->set_var('empty', '<strong>' . $text['empty_message'] . '</strong>');
            $retval .= $cart->parse('', 'cart_empty');
        }
        // DISPLAY THE CART FOOTER
        //Subtotal
        $block == 0 ? $cart->set_var('subtotal', $text['subtotal'] . ' <strong>' . number_format($this->total, $_CONF['decimal_count'], $_CONF['decimal_separator'], $_CONF['thousand_separator']) . ' ' . $text['currency_symbol'] . '</strong>') : $cart->set_var('subtotal', '<strong>' . number_format($this->total, $_CONF['decimal_count'], $_CONF['decimal_separator'], $_CONF['thousand_separator']) . ' ' . $text['currency_symbol'] . '</strong>');
        // IF THIS IS THE CHECKOUT HIDE THE CART CHECKOUT BUTTON
        if ($is_checkout !== true && $_REQUEST['pay_by'] != 'check') {
            if ($button['checkout']) {
                $input_type = 'image';
                $src = ' src="' . $button['checkout'] . '" alt="' . $text['checkout_button'] . '" title="" ';
            }
            $cart->set_var('checkout', '<input type="' . $input_type . '" ' . $src . 'id="jcart-checkout" name="jcart_checkout" class="jcart-button" value="' . $text['checkout_button'] . '" />');
        } else {
            $cart->set_var('checkout', '');
        }
        $retval .= $cart->parse('', 'cart_end');
        //Update and empty button
        if ($block == 0) {
            $retval .= "\t\t\t<div class='jcart-hide'>\n";
            if ($button['update']) {
                $input_type = 'image';
                $src = ' src="' . $button['update'] . '" alt="' . $text['update_button'] . '" title="" ';
            }
            $retval .= "\t\t\t\t<input type='" . $input_type . "' " . $src . "name='jcart_update_cart' value='" . $text['update_button'] . "' class='jcart-button' />\n";
            if ($button['empty']) {
                $input_type = 'image';
                $src = ' src="' . $button['empty'] . '" alt="' . $text['empty_button'] . '" title="" ';
            }
            $retval .= "\t\t\t\t<input type='" . $input_type . "' " . $src . "name='jcart_empty' value='" . $text['empty_button'] . "' class='jcart-button' />\n";
            $retval .= "\t\t\t</div>\n";
        }
        $retval .= "\t\t\t\t\t</td>\n";
        $retval .= "\t\t\t\t</tr>\n";
        $retval .= "\t\t\t</table>\n\n";
        // IF THIS IS THE CHECKOUT DISPLAY THE PAYPAL CHECKOUT BUTTON AND SHIPPING RATE
        if ($is_checkout == true && $block == 0 && $this->itemcount > 0 || $_REQUEST['pay_by'] == 'check' && $block == 0) {
            // HIDDEN INPUT ALLOWS US TO DETERMINE IF WE'RE ON THE CHECKOUT PAGE
            // WE NORMALLY CHECK AGAINST REQUEST URI BUT AJAX UPDATE SETS VALUE TO jcart-relay.php
            $retval .= "\t\t\t<input type='hidden' id='jcart-is-checkout' name='jcart_is_checkout' value='true' />\n";
            $weight = $this->totalweight;
            $weight = str_replace(",", ".", $weight);
            $weight = preg_replace('/[^\\d.]/', '', $weight);
            //WEIGHT
            $retval .= "\t\t\t<input type='hidden' id='weight' name='weight' value='{$weight}' />\n";
            //SHIPPING RATE
            $shipping = COM_newTemplate($_CONF['path'] . 'plugins/paypal/templates');
            $shipping->set_file(array('cart_shipping' => 'cart_shipping.thtml'));
            $shipping->set_var('choose_shipping', $LANG_PAYPAL_CART['choose_shipping']);
            if ($weight > 0) {
                //SHIPPER SERVICE
                $sql = "SELECT\n\t\t\t\t\t\t*\n\t\t\t\t\tFROM {$_TABLES['paypal_shipping_cost']} AS sc\n\t\t\t\t\tLEFT JOIN {$_TABLES['paypal_shipper_service']} AS ss\n\t\t\t\t\tON sc.shipping_shipper_id = ss.shipper_service_id\n\t\t\t\t\tLEFT JOIN {$_TABLES['paypal_shipping_to']} AS st\n\t\t\t\t\tON sc.shipping_destination_id = st.shipping_to_id\n\t\t\t\t\tWHERE '{$weight}' > sc.shipping_min AND '{$weight}' < sc.shipping_max\n\t\t\t\t\tORDER by st.shipping_to_order, sc.shipping_amt ASC\n\t\t\t\t\t";
                $res = DB_query($sql);
                if (DB_numRows($res) > 0) {
                    $i = 0;
                    while ($A = DB_fetchArray($res)) {
                        if ($_GET['shipping'] != '' && $_GET['shipping'] == $A['shipping_amt']) {
                            $checked = ' checked';
                            $skip = 0;
                        } else {
                            if ($_GET['shipping'] != '') {
                                $checked = '';
                                $skip = 1;
                            } else {
                                if ($i == 0) {
                                    $checked = ' checked';
                                } else {
                                    $checked = '';
                                }
                            }
                        }
                        if ((count($categories) == 1 && in_array($A['shipper_service_exclude_cat'], $categories) || $A['shipper_service_exclude_cat'] == 0 || count($categories) == 0) && $skip == 0) {
                            $shippers_radio .= '<p><input type="radio" name="shipping" value="' . $A['shipping_amt'] . '"' . $checked . ' /> ' . $A['shipping_to_name'] . ' | ' . $A['shipper_service_name'] . ' - ' . $A['shipper_service_service'] . '<span style="text-align:right; font-weight:bold; display:block; float:right;">+ ' . $A['shipping_amt'] . ' ' . $_PAY_CONF['currency'] . '</span></p>' . LB;
                            $i++;
                        }
                    }
                } else {
                    $shippers_radio = '<p><input type="radio" name="shipping" value="0.00" checked /> ' . $LANG_PAYPAL_CART['free_shipping'] . '<span style="text-align:right; font-weight:bold; display:block; float:right;">+ 0.00 ' . $_PAY_CONF['currency'] . '</span></p>';
                }
            } else {
                $shippers_radio = '<p><input type="radio" name="shipping" value="0.00" checked /> ' . $LANG_PAYPAL_CART['free_shipping'] . '<span style="text-align:right; font-weight:bold; display:block; float:right;">+ 0.00 ' . $_PAY_CONF['currency'] . '</span></p>';
            }
            $shipping->set_var('shipping_radio_buttons', $shippers_radio);
            $retval .= $shipping->parse('', 'cart_shipping');
            // SEND THE URL OF THE CHECKOUT PAGE TO jcart-gateway.php
            // WHEN JAVASCRIPT IS DISABLED WE USE A HEADER REDIRECT AFTER THE UPDATE OR EMPTY BUTTONS ARE CLICKED
            $protocol = 'http://';
            if (!empty($_SERVER['HTTPS'])) {
                $protocol = 'https://';
            }
            $retval .= "\t\t\t<input type='hidden' id='jcart-checkout-page' name='jcart_checkout_page' value='" . $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "' />\n";
            // PAYPAL CHECKOUT BUTTON
            if ($button['paypal_checkout']) {
                $input_type = 'image';
                $src = ' src="' . $button['paypal_checkout'] . '" alt="' . $text['checkout_paypal_button'] . '" title="" ';
            }
            if ($_REQUEST['pay_by'] != 'check') {
                $retval .= '<h2 align="center">' . $LANG_PAYPAL_1['payment_method'] . '</h2>';
                if ($_PAY_CONF['enable_pay_by_paypal']) {
                    $retval .= "\t\t\t<p><input type='" . $input_type . "' " . $src . "id='jcart-paypal-checkout' name='jcart_paypal_checkout' value='" . $text['checkout_paypal_button'] . "'" . $disable_paypal_checkout . " /></p>\n";
                }
                if ($is_checkout == true && $block == 0 && $this->itemcount > 0 && $_PAY_CONF['enable_pay_by_ckeck'] == 1) {
                    if (!COM_isAnonUser()) {
                        $js = 'function payby ( selectedtype )';
                        $js .= '{';
                        $js .= '  document.jcart.pay_by.value = selectedtype ;';
                        $js .= '  document.jcart.submit() ;';
                        $js .= '}';
                        $_SCRIPTS->setJavaScript($js, true);
                        $retval .= '<input type="hidden" name="pay_by" />';
                        $retval .= '<p>&nbsp;</p><p align="center"><a class="jcart_footer"  href="javascript:payby(\'check\')">' . $LANG_PAYPAL_CART['payment_check'] . '</a></p><p>&nbsp;</p>';
                    }
                }
            }
        }
        $retval .= "\t</form>\n";
        // IF UPDATING AN ITEM, FOCUS ON ITS QTY INPUT AFTER THE CART IS LOADED (DOESN'T SEEM TO WORK IN IE7)
        if ($_POST['jcart_update_item']) {
            $retval .= "\t" . '<script type="text/javascript">jQuery(function(){jQuery("#jcart-item-id-' . $_POST['item_id'] . '").focus()});</script>' . "\n";
        }
        $retval .= "\t<div class=\"jcart_footer\">\n";
        //CONTINUE SHOPPING
        if ($is_checkout == true && $block == 0) {
            $retval .= '<hr style="margin-top:20px;"><p style="margin-top:10px;"><< <a class="jcart_footer" href="' . $_PAY_CONF['site_url'] . '/index.php">' . $LANG_PAYPAL_CART['continue_shopping'] . '</a></p>';
        }
        $retval .= "\t</div></div>\n";
        return $retval;
    }