Public Member Functions | Data Fields | Private Member Functions | Private Attributes

ilPaymentShoppingCartGUI Class Reference

Inheritance diagram for ilPaymentShoppingCartGUI:
Collaboration diagram for ilPaymentShoppingCartGUI:

Public Member Functions

 ilPaymentShoppingCartGUI (&$user_obj)
executeCommand ()
 execute command
 unlockBMFObjectsInShoppingCart ()
 unlockPAYPALObjectsInShoppingCart ()
 checkCouponsOfShoppingCart ()
 finishPaypal ()
 cancelPaypal ()
 showItems ()
 setCoupon ()
 removeCoupon ()
 __showCouponInput ($payment_type="")
 __showItemsTable (&$a_tpl, $a_result_set, $a_pay_method=0)
 deleteItem ()
 __initShoppingCartObject ()
 __initPaypalObject ()
 __encryptButton ($buttonParams)
 Creates a new encrypted button HTML block.

Data Fields

 $ctrl
 $lng
 $user_obj
 $psc_obj = null
 $paypal_obj = null
 $paypalConfig

Private Member Functions

 addBookings ($pay_method, $coupon_session)

Private Attributes

 $totalAmount = array()

Detailed Description

Definition at line 38 of file class.ilPaymentShoppingCartGUI.php.


Member Function Documentation

ilPaymentShoppingCartGUI::__encryptButton ( buttonParams  ) 

Creates a new encrypted button HTML block.

Parameters:
array The button parameters as key/value pairs
Returns:
mixed A string of HTML or a Paypal error object on failure

Definition at line 922 of file class.ilPaymentShoppingCartGUI.php.

References $data.

    {
        $merchant_cert = $this->paypalConfig["vendor_cert"];
        $merchant_key = $this->paypalConfig["vendor_key"];
        $end_cert = $this->paypalConfig["enc_cert"];

        $tmpin_file  = tempnam('/tmp', 'paypal_');
        $tmpout_file = tempnam('/tmp', 'paypal_');
        $tmpfinal_file = tempnam('/tmp', 'paypal_');

        $rawdata = array();
        $buttonParams['cert_id'] = $this->paypalConfig["cert_id"];
        foreach ($buttonParams as $name => $value) {
            $rawdata[] = "$name=$value";
        }
        $rawdata = implode("\n", $rawdata);

        $fp = fopen($tmpin_file, 'w');
        if (!$fp) {
            echo "Could not open temporary file '$tmpin_file')";
                        return false;
#            return PayPal::raiseError("Could not open temporary file '$tmpin_file')");
        }
        fwrite($fp, $rawdata);
        fclose($fp);

        if (!@openssl_pkcs7_sign($tmpin_file, $tmpout_file, $merchant_cert,
                                 array($merchant_key, $this->paypalConfig["private_key_password"]),
                                 array(), PKCS7_BINARY)) {
                        echo "Could not sign encrypted data: " . openssl_error_string();
                        return false;
#            return PayPal::raiseError("Could not sign encrypted data: " . openssl_error_string());
        }

        $data = file_get_contents($tmpout_file);
        $data = explode("\n\n", $data);
        $data = $data[1];
        $data = base64_decode($data);
        $fp = fopen($tmpout_file, 'w');
        if (!$fp) {
            echo "Could not open temporary file '$tmpin_file')";
                        return false;
#            return PayPal::raiseError("Could not open temporary file '$tmpin_file')");
        }
        fwrite($fp, $data);
        fclose($fp);

        if (!@openssl_pkcs7_encrypt($tmpout_file, $tmpfinal_file, $enc_cert, array(), PKCS7_BINARY)) {
            echo "Could not encrypt data:" . openssl_error_string();
                        return false;
#            return PayPal::raiseError("Could not encrypt data:" . openssl_error_string());
        }

        $encdata = @file_get_contents($tmpfinal_file, false);
        if (!$encdata) {
            echo "Encryption and signature of data failed.";
                        return false;
#            return PayPal::raiseError("Encryption and signature of data failed.");
        }

        $encdata = explode("\n\n", $encdata);
        $encdata = trim(str_replace("\n", '', $encdata[1]));
        $encdata = "-----BEGIN PKCS7-----$encdata-----END PKCS7-----";

        @unlink($tmpfinal_file);
        @unlink($tmpin_file);
        @unlink($tmpout_file);

                return $encData;
    }

ilPaymentShoppingCartGUI::__initPaypalObject (  ) 

Definition at line 911 of file class.ilPaymentShoppingCartGUI.php.

Referenced by finishPaypal().

        {
                $this->paypal_obj =& new ilPurchasePaypal($this->user_obj);
        }

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::__initShoppingCartObject (  ) 

Definition at line 905 of file class.ilPaymentShoppingCartGUI.php.

Referenced by deleteItem(), and showItems().

        {
                $this->psc_obj =& new ilPaymentShoppingCart($this->user_obj);
                $this->psc_obj->clearCouponItemsSession();
        }

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::__showCouponInput ( payment_type = ""  ) 

Definition at line 648 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, ilPaymentBaseGUI::$tpl, ilUtil::getImagePath(), and ilUtil::switchColor().

Referenced by showItems().

        {
                include_once './payment/classes/class.ilGeneralSettings.php';
                $genSet = new ilGeneralSettings();
                
                $tpl = new ilTemplate("tpl.pay_shopping_cart_coupons.html", true, true, "payment");
                
                $tpl->setVariable("COUPON_FORMACTION", $this->ctrl->getFormAction($this));
                $tpl->setVariable("TITLE", $this->lng->txt('paya_coupons_coupons'));
                $tpl->setVariable("TYPE_IMG", ilUtil::getImagePath('icon_pays_b.gif'));         
                $tpl->setVariable("ALT_IMG", $this->lng->txt('obj_usr'));
                
                $tpl->setVariable("TXT_CODE", $this->lng->txt('paya_coupons_code'));
                $tpl->setVariable("CMD_VALUE", $this->lng->txt('send'));
                
                $tpl->setVariable("PAYMENT_TYPE", $payment_type);
                
                switch ($payment_type)
                {
                        case PAY_METHOD_PAYPAL:
                                $coupon_session = "paypal";
                                break;
                        case PAY_METHOD_BMF:
                                $coupon_session = "bmf";
                                break;
                        default:
                                $coupon_session = "bmf";
                                break;
                }

                if (!empty($_SESSION["coupons"][$coupon_session]))
                {
                        $i = 0;
                        foreach ($_SESSION["coupons"][$coupon_session] as $coupon)
                        {
                                $tpl->setCurrentBlock("loop");
                                $tpl->setVariable("LOOP_ROW", ilUtil::switchColor($i++, "1", "2"));                                                             
                                $tpl->setVariable("LOOP_TXT_COUPON", $this->lng->txt('paya_coupons_coupon'));
                                $tpl->setVariable("LOOP_CODE", $coupon["pcc_code"]);
                                $this->ctrl->setParameter($this, 'coupon_id', $coupon['pc_pk']);
                                $this->ctrl->setParameter($this, 'payment_type',  $_SESSION["bmf"]["payment_type"]);
                                $tpl->setVariable("LOOP_TITLE", $coupon["pc_title"]);
                                if ($coupon["pc_description"] != '') $tpl->setVariable("LOOP_DESCRIPTION", nl2br($coupon["pc_description"]));                                                           
                                $tpl->setVariable("LOOP_TYPE", sprintf($this->lng->txt('paya_coupons_'.($coupon["pc_type"] == "fix" ? 'fix' : 'percentaged').'_'.(count($coupon["objects"]) == 0 ? 'all' : 'selected').'_objects'),
                                                                                                                         ($coupon["pc_value"] / round($coupon["pc_value"], 0) == 1 && $coupon["pc_type"] == "percent" ? round($coupon["pc_value"], 0) : number_format($coupon["pc_value"], 2, ',', '.')), 
                                                                                                                         ($coupon["pc_type"] == "percent" ? "%" :$genSet->get("currency_unit"))));
                                $tpl->setVariable("LOOP_REMOVE", "<div class=\"il_ContainerItemCommands\" style=\"float: right;\"><a class=\"il_ContainerItemCommand\" href=\"".$this->ctrl->getLinkTarget($this, "removeCoupon")."\">".$this->lng->txt("remove")."</a></div>");
                                
                                $tpl->parseCurrentBlock();
                        }
                }
                
                return $tpl->get();
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::__showItemsTable ( &$  a_tpl,
a_result_set,
a_pay_method = 0 
)

Definition at line 703 of file class.ilPaymentShoppingCartGUI.php.

References $_GET, $_SESSION, $tbl, $title, $totalAmount, ilPaymentBaseGUI::$tpl, ilPaymentPrices::_getPrice(), ilUtil::getImagePath(), and ilPaymentBaseGUI::initTableGUI().

Referenced by showItems().

        {
                include_once './payment/classes/class.ilGeneralSettings.php';

                $genSet = new ilGeneralSettings();

                $tbl =& $this->initTableGUI();
                $tpl =& $tbl->getTemplateObject();

                // SET FORMAACTION
                $tpl->setCurrentBlock("tbl_form_header");

                $tpl->setVariable("FORMACTION",$this->ctrl->getFormAction($this));
                $tpl->parseCurrentBlock();

                $tpl->setCurrentBlock("tbl_action_row");
                $tpl->setCurrentBlock("plain_buttons");
                $tpl->parseCurrentBlock();

                $tpl->setVariable("COLUMN_COUNTS",4);
                $tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("arrow_downright.gif"));

                $tpl->setCurrentBlock("tbl_action_button");
                $tpl->setVariable("BTN_NAME","deleteItem");
                $tpl->setVariable("BTN_VALUE",$this->lng->txt("delete"));
                $tpl->parseCurrentBlock();
                $tpl->setCurrentBlock("tbl_action_row");
                $tpl->setVariable("TPLPATH",$this->tpl->tplPath);
                $tpl->parseCurrentBlock();

                $title = $this->lng->txt("paya_shopping_cart");
                switch($a_pay_method)
                {
                        case PAY_METHOD_BMF:
                                $coupon_session = "bmf";
                                $title .= " (" . $this->lng->txt("payment_system") . ": " . $this->lng->txt("pays_bmf") . ")";
                                break;

                        case PAY_METHOD_PAYPAL:
                                $coupon_session = "paypal";
                                $title .= " (" . $this->lng->txt("payment_system") . ": " . $this->lng->txt("pays_paypal") . ")";
                                break;
                }
                $tbl->setTitle($title,"icon_pays_cart.gif",$this->lng->txt("paya_shopping_cart"));
                $tbl->setHeaderNames(array($this->lng->txt(""),
                                                                   $this->lng->txt("title"),
                                                                   $this->lng->txt("duration"),
                                                                   $this->lng->txt("price_a")));

                $tbl->setHeaderVars(array("",
                                                                  "table".$a_pay_method."_title",
                                                                  "table".$a_pay_method."_duration",
                                                                  "table".$a_pay_method."_price"),
                                                        array("cmd" => "",
                                                                  "cmdClass" => "ilpaymentshoppingcartgui",
                                                                  "baseClass" => "ilPersonalDesktopGUI",
                                                                  "cmdNode" => $_GET["cmdNode"]));

                $offset = $_GET["table".$a_pay_method."_offset"];
                $order = $_GET["table".$a_pay_method."_sort_by"];
                $direction = $_GET["table".$a_pay_method."_sort_order"] ? $_GET['table'.$a_pay_method.'_sort_order'] : 'desc';

                $tbl->setPrefix("table".$a_pay_method."_");
                $tbl->setOrderColumn($order,'table'.$a_pay_method.'_title');
                $tbl->setOrderDirection($direction);
                $tbl->setOffset($offset);
                $tbl->setLimit($_GET["limit"]);
                $tbl->setMaxCount(count($a_result_set));
                $tbl->setFooter("tblfooter",$this->lng->txt("previous"),$this->lng->txt("next"));
                $tbl->setData($a_result_set);

                // show total amount of costs
                $sc_obj =& new ilPaymentShoppingCart($this->user_obj);

                $totalAmount =  $sc_obj->getTotalAmount();
                $vat = $sc_obj->getVat($totalAmount[$a_pay_method]);

                $tpl->setCurrentBlock("tbl_footer_linkbar");
                $amount .= "<table class=\"\" style=\"float: right;\">\n";              
                if (!empty($_SESSION["coupons"][$coupon_session]))
                {
                        if (count($items = $sc_obj->getEntries($a_pay_method)))
                        {
                                $amount .= "<tr>\n";
                                $amount .= "<td>\n";
                                $amount .= "<b>" . $this->lng->txt("pay_bmf_subtotal_amount") . ":";                            
                                $amount .= "</td>\n";
                                $amount .= "<td>\n";
                                $amount .= number_format($totalAmount[$a_pay_method], 2, ',', '.') . " " . $genSet->get("currency_unit") . "</b>";                              
                                $amount .= "</td>\n";                           
                                $amount .= "</tr>\n";
                                
                                foreach ($_SESSION["coupons"][$coupon_session] as $coupon)
                                {
                                        $this->coupon_obj->setId($coupon["pc_pk"]);
                                        $this->coupon_obj->setCurrentCoupon($coupon);                                   
                                        
                                        $total_object_price = 0.0;
                                        $current_coupon_bonus = 0.0;

                                        foreach ($items as $item)
                                        {
                                                $tmp_pobject =& new ilPaymentObject($this->user_obj, $item['pobject_id']);                                              
                                                
                                                if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
                                                {                       
                                                        $price_data = ilPaymentPrices::_getPrice($item['price_id']);                                                                    
                                                        $price = ((int) $price_data["unit_value"]) . "." . sprintf("%02d", ((int) $price_data["sub_unit_value"]));
                                                        
                                                        $total_object_price += $price;                                                                                                                                                                  
                                                }
                                                
                                                unset($tmp_pobject);
                                        }                                       
                                        
                                        $current_coupon_bonus = $this->coupon_obj->getCouponBonus($total_object_price);                                 
                                        $totalAmount[$a_pay_method] += $current_coupon_bonus * (-1);
                                        
                                        $amount .= "<tr>\n";
                                        $amount .= "<td>\n";                                    
                                        $amount .= $this->lng->txt("paya_coupons_coupon") . " " . $coupon["pcc_code"] . ":";
                                        $amount .= "</td>\n";
                                        $amount .= "<td>\n";
                                        $amount .= number_format($current_coupon_bonus * (-1), 2, ',', '.') . " " . $genSet->get("currency_unit");
                                        $amount .= "</td>\n";
                                        $amount .= "</tr>\n";
                                }
                                
                                
                                if ($totalAmount[$a_pay_method] < 0)
                                {
                                        $totalAmount[$a_pay_method] = 0;
                                        $vat = 0;
                                }
                                else
                                {
                                        $vat = $sc_obj->getVat($totalAmount[$a_pay_method]);    
                                }       
                        }                               
                }               
                
                $amount .= "<tr>\n";
                $amount .= "<td>\n";                                    
                $amount .= "<b>" . $this->lng->txt("pay_bmf_total_amount") . ":";
                $amount .= "</td>\n";
                $amount .= "<td>\n";
                $amount .= number_format($totalAmount[$a_pay_method], 2, ',', '.') . " " . $genSet->get("currency_unit");
                $amount .= "</td>\n";
                $amount .= "</tr>\n";
                
                $this->totalAmount[$a_pay_method] = $totalAmount[$a_pay_method];
                
                if ($vat > 0)
                {
                        $amount .= "<tr>\n";
                        $amount .= "<td>\n";                                    
                        $amount .= $genSet->get("vat_rate") . "% " . $this->lng->txt("pay_bmf_vat_included") . ":";
                        $amount .= "</td>\n";
                        $amount .= "<td>\n";
                        $amount .= number_format($vat, 2, ',', '.') . " " . $genSet->get("currency_unit");
                        $amount .= "</td>\n";
                        $amount .= "</tr>\n";
                }
                                                
                $amount .= "</table>\n";

                $tpl->setVariable("LINKBAR", $amount);
                $tpl->parseCurrentBlock("tbl_footer_linkbar");
                $tpl->setCurrentBlock('tbl_footer');
                $tpl->setVariable('COLUMN_COUNT',4);
                $tpl->parseCurrentBlock();

                $tbl->render();

                $a_tpl->setVariable("ITEMS_TABLE",$tbl->tpl->get());

                return true;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::addBookings ( pay_method,
coupon_session 
) [private]

Definition at line 126 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, ilPaymentPrices::_getPrice(), ilPaymentPrices::_getPriceFromArray(), ilPaymentPrices::_getPriceString(), and ilPaymentPrices::_getPriceStringFromAmount().

Referenced by unlockBMFObjectsInShoppingCart(), and unlockPAYPALObjectsInShoppingCart().

        {
                include_once './payment/classes/class.ilPaymentBookings.php';
                include_once './payment/classes/class.ilPaymentObject.php';
                include_once './payment/classes/class.ilPaymentPrices.php';
        
                
                $booking_obj = new ilPaymentBookings();         
                $sc_obj = new ilPaymentShoppingCart($this->user_obj);                   
                $items = $sc_obj->getEntries($pay_method);              
                $sc_obj->clearCouponItemsSession();
                
                foreach($items as $entry)
                {       
                        $pobject = new ilPaymentObject($this->user_obj, $entry['pobject_id']);                  
                        $price = ilPaymentPrices::_getPrice($entry['price_id']);                                        
                        
                        if (!empty($_SESSION["coupons"][$coupon_session]))
                        {                                       
                                $entry["math_price"] = (float) ilPaymentPrices::_getPriceFromArray($price);                                     
                                foreach ($_SESSION["coupons"][$coupon_session] as $key => $coupon)
                                {                                                       
                                        $this->coupon_obj->setId($coupon["pc_pk"]);
                                        $this->coupon_obj->setCurrentCoupon($coupon);                                                                           
                        
                                        if ($this->coupon_obj->isObjectAssignedToCoupon($pobject->getRefId()))
                                        {
                                                $_SESSION["coupons"][$coupon_session][$key]["total_objects_coupon_price"] += (float) ilPaymentPrices::_getPriceFromArray($price);
                                                $_SESSION["coupons"][$coupon_session][$key]["items"][] = $entry;                                                                        
                                        }                               
                                }                               
                        }
                        
                        unset($pobject);
                }
                
                $coupon_discount_items = $sc_obj->calcDiscountPrices($_SESSION["coupons"][$coupon_session]);    

                $i = 0;
                foreach($items as $entry)
                {
                        $pobject =& new ilPaymentObject($this->user_obj, $entry['pobject_id']);

                        $price = ilPaymentPrices::_getPrice($entry['price_id']);
                        
                        if (array_key_exists($entry["pobject_id"], $coupon_discount_items))
                        {
                                $bonus = $coupon_discount_items[$entry["pobject_id"]]["math_price"] - $coupon_discount_items[$entry["pobject_id"]]["discount_price"];
                        }
                        
                        $booking_obj->setPobjectId($entry['pobject_id']);
                        $booking_obj->setCustomerId($this->user_obj->getId());
                        $booking_obj->setVendorId($pobject->getVendorId());
                        $booking_obj->setPayMethod($pobject->getPayMethod());
                        $booking_obj->setOrderDate(time());
                        $booking_obj->setDuration($price['duration']);
                        $booking_obj->setPrice(ilPaymentPrices::_getPriceString($entry['price_id']));
                        $booking_obj->setDiscount($bonus > 0 ? ilPaymentPrices::_getPriceStringFromAmount((-1) * $bonus) : "");
                        $booking_obj->setPayed(1);
                        $booking_obj->setAccess(1);

                        $current_booking_id = $booking_obj->add();
                        
                        if ($current_booking_id)
                        {       
                                $sc_obj->delete($entry['psc_id']);
                                                
                                if (!empty($_SESSION["coupons"][$coupon_session]))
                                {                               
                                        foreach ($_SESSION["coupons"][$coupon_session] as $coupon)
                                        {       
                                                $this->coupon_obj->setId($coupon["pc_pk"]);                             
                                                $this->coupon_obj->setCurrentCoupon($coupon);                                                                                                                           
                                                        
                                                if ($this->coupon_obj->isObjectAssignedToCoupon($pobject->getRefId()))
                                                {                                               
                                                        $this->coupon_obj->addCouponForBookingId($current_booking_id);                                                                                                                                                                  
                                                }                               
                                        }                       
                                }
                        }                       

                        unset($current_booking_id);
                        unset($pobject);
                }
                
                if (!empty($_SESSION["coupons"][$coupon_session]))
                {                               
                        foreach ($_SESSION["coupons"][$coupon_session] as $coupon)
                        {       
                                $this->coupon_obj->setId($coupon["pc_pk"]);                             
                                $this->coupon_obj->setCurrentCoupon($coupon);
                                $this->coupon_obj->addTracking();                       
                        }                       
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::cancelPaypal (  ) 

Definition at line 325 of file class.ilPaymentShoppingCartGUI.php.

References ilUtil::sendInfo(), and showItems().

        {
                ilUtil::sendInfo($this->lng->txt('pay_paypal_canceled'));
                $this->showItems();
        }

Here is the call graph for this function:

ilPaymentShoppingCartGUI::checkCouponsOfShoppingCart (  ) 

Definition at line 223 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, and ilPayMethods::_enabled().

Referenced by deleteItem(), and ilPaymentShoppingCartGUI().

        {
                include_once './payment/classes/class.ilPayMethods.php';
                
                if (ilPayMethods::_enabled('pm_bmf')) $pay_methods[] = PAY_METHOD_BMF;
                if (ilPayMethods::_enabled('pm_paypal')) $pay_methods[] = PAY_METHOD_PAYPAL;            

                if (is_array($pay_methods))
                {                       
                        for ($p = 0; $p < count($pay_methods); $p++)
                        {                               
                                if ($pay_methods[$p] == PAY_METHOD_BMF)
                                {
                                        $coupon_session_id = "bmf";
                                }
                                else if ($pay_methods[$p] == PAY_METHOD_PAYPAL)
                                {
                                        $coupon_session_id = "paypal";
                                }

                                if (!is_array($_SESSION["coupons"][$coupon_session_id]))
                                {
                                        $_SESSION["coupons"][$coupon_session_id] = array();
                                }
                                else // check if coupons are valid anymore
                                {
                                        foreach ($_SESSION["coupons"][$coupon_session_id] as $coupon_id => $session_coupon)
                                        {
                                                $coupon = $this->coupon_obj->getCouponByCode($session_coupon["pcc_code"]);                      

                                                if ($this->coupon_obj->checkCouponValidity() == 0)
                                                {
                                                        $assignedItems = 0;                     
                                                        $this->psc_obj = new ilPaymentShoppingCart($this->user_obj);                                                    
                                                
                                                        if (count($items = $this->psc_obj->getEntries($pay_methods[$p])))
                                                        {
                                                                foreach($items as $item)
                                                                {
                                                                        $tmp_pobject =& new ilPaymentObject($this->user_obj, $item['pobject_id']);
                                                                        
                                                                        if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
                                                                        {
                                                                                ++$assignedItems;
                                                                        }                                       
                                                                }
                                                        }                       
                                                        if (!$assignedItems)
                                                        {
                                                                unset($_SESSION["coupons"][$coupon_session_id][$coupon_id]);
                                                        }       
                                                }
                                                else
                                                {
                                                        unset($_SESSION["coupons"][$coupon_session_id][$coupon_id]);
                                                }
                                        }
                                }
                        }
                }
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::deleteItem (  ) 

Definition at line 882 of file class.ilPaymentShoppingCartGUI.php.

References __initShoppingCartObject(), checkCouponsOfShoppingCart(), ilUtil::sendInfo(), and showItems().

        {
                if(!count($_POST['item']))
                {
                        ilUtil::sendInfo($this->lng->txt('pay_select_one_item'));

                        $this->showItems();
                        return true;
                }
                $this->__initShoppingCartObject();

                foreach($_POST['item'] as $id)
                {
                        $this->psc_obj->delete($id);
                        $this->checkCouponsOfShoppingCart();
                }
                ilUtil::sendInfo($this->lng->txt('pay_deleted_items'));
                $this->showItems();

                return true;
        }

Here is the call graph for this function:

& ilPaymentShoppingCartGUI::executeCommand (  ) 

execute command

Definition at line 80 of file class.ilPaymentShoppingCartGUI.php.

References $cmd.

        {
                global $tree;

                $cmd = $this->ctrl->getCmd();
                switch ($this->ctrl->getNextClass($this))
                {
                        default:
                                if(!$cmd = $this->ctrl->getCmd())
                                {
                                        $cmd = 'showItems';
                                }
                                $this->$cmd();
                                break;
                }
        }

ilPaymentShoppingCartGUI::finishPaypal (  ) 

Definition at line 285 of file class.ilPaymentShoppingCartGUI.php.

References $res, __initPaypalObject(), ilUtil::sendInfo(), and showItems().

        {
                $this->__initPaypalObject();

                if (!($fp = $this->paypal_obj->openSocket()))
                {
                        ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_unreachable')."<br />".$this->lng->txt('pay_paypal_error_info'));
                        $this->showItems();
                }
                else
                {
                        $res = $this->paypal_obj->checkData($fp);
                        if ($res == SUCCESS)
                        {
                                ilUtil::sendInfo($this->lng->txt('pay_paypal_success'), true);
                                $this->ctrl->redirectByClass('ilpaymentbuyedobjectsgui');
                        }
                        else
                        {
                                switch ($res)
                                {
                                        case ERROR_WRONG_CUSTOMER       :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_wrong_customer')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                        case ERROR_NOT_COMPLETED        :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_not_completed')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                        case ERROR_PREV_TRANS_ID        :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_prev_trans_id')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                        case ERROR_WRONG_VENDOR         :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_wrong_vendor')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                        case ERROR_WRONG_ITEMS          :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_wrong_items')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                        case ERROR_FAIL                         :       ilUtil::sendInfo($this->lng->txt('pay_paypal_failed')."<br />".$this->lng->txt('pay_paypal_error_fails')."<br />".$this->lng->txt('pay_paypal_error_info'));
                                                                                                        break;
                                }
                                $this->showItems();
                        }
                        fclose($fp);
                }
        }

Here is the call graph for this function:

ilPaymentShoppingCartGUI::ilPaymentShoppingCartGUI ( &$  user_obj  ) 

Definition at line 59 of file class.ilPaymentShoppingCartGUI.php.

References $ilCtrl, $user_obj, checkCouponsOfShoppingCart(), ilPaypalSettings::getInstance(), and ilPaymentBaseGUI::ilPaymentBaseGUI().

        {
                global $ilCtrl;

                $this->ctrl =& $ilCtrl;

                $this->ilPaymentBaseGUI();

                $this->user_obj =& $user_obj;
                
                $this->coupon_obj = new ilPaymentCoupons($this->user_obj);

                $ppSet = ilPaypalSettings::getInstance();
                $this->paypalConfig = $ppSet->getAll(); 
                
                $this->checkCouponsOfShoppingCart();            
        }

Here is the call graph for this function:

ilPaymentShoppingCartGUI::removeCoupon (  ) 

Definition at line 633 of file class.ilPaymentShoppingCartGUI.php.

References $_GET, $_SESSION, and showItems().

        {
                if (is_array($_SESSION["coupons"]))
                {
                        foreach ($_SESSION["coupons"] as $key => $val)
                        {
                                unset($_SESSION["coupons"][$key][$_GET["coupon_id"]]);
                        }
                }
                                
                $this->showItems();
                
                return true;            
        }

Here is the call graph for this function:

ilPaymentShoppingCartGUI::setCoupon (  ) 

Definition at line 551 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, ilUtil::sendInfo(), and showItems().

        {
                if ($_POST["coupon_code"] != "")
                {
                        $coupon = $this->coupon_obj->getCouponByCode($_POST["coupon_code"]);                    
                        
                        switch ($this->coupon_obj->checkCouponValidity())
                        {
                                case 1:
                                
                                case 2:
                                        ilUtil::sendInfo($this->lng->txt('paya_coupons_not_valid'));                            
                                        $this->showItems();                     
                                        return true;
                                
                                case 3:
                                        ilUtil::sendInfo($this->lng->txt('paya_coupons_coupon_not_found'));                             
                                        $this->showItems();                     
                                        return true;
                        }                       
                        
                        $assignedItems = 0;                     
                        $this->psc_obj = new ilPaymentShoppingCart($this->user_obj);
                        if (count($items = $this->psc_obj->getEntries(isset($_POST["payment_type"]) ? $_POST["payment_type"] : PAY_METHOD_BMF)))
                        {
                                foreach($items as $item)
                                {
                                        $tmp_pobject =& new ilPaymentObject($this->user_obj,$item['pobject_id']);
                                        
                                        if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
                                        {
                                                ++$assignedItems;
                                        }                                       
                                }
                        }                       
                        if (!$assignedItems)
                        {
                                ilUtil::sendInfo($this->lng->txt('paya_coupons_no_object_assigned'));
                        
                                $this->showItems();
                        
                                return true;
                        }                       
                        
                        switch ($_POST["payment_type"])
                        {
                                case PAY_METHOD_PAYPAL:                                 
                                        $coupon_session_id = "paypal";                                  
                                        break;
                                case PAY_METHOD_BMF:
                                        $coupon_session_id = "bmf";
                                        break;                          
                        }
                        
                        if (!array_key_exists($coupon["pc_pk"], $_SESSION["coupons"][$coupon_session_id]))
                        {
                                if (is_array($_SESSION["coupons"]))
                                {
                                        foreach ($_SESSION["coupons"] as $key => $val)
                                        {
                                                unset($_SESSION["coupons"][$key][$coupon["pc_pk"]]);
                                        }
                                }
                                        
                                ilUtil::sendInfo($this->lng->txt('paya_coupons_coupon_added'));
                                $_SESSION["coupons"][$coupon_session_id][$coupon["pc_pk"]] = $coupon;
                        }
                        else
                        {
                                ilUtil::sendInfo($this->lng->txt('paya_coupons_already_in_use'));
                        }
                        
                        $this->showItems();
                                
                        return true;            
                }       
                
                $this->showItems();
                
                return true;            
        }       

Here is the call graph for this function:

ilPaymentShoppingCartGUI::showItems (  ) 

Definition at line 331 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, ilPaymentBaseGUI::$tpl, __initShoppingCartObject(), __showCouponInput(), __showItemsTable(), ilPayMethods::_enabled(), ilPaymentPrices::_getPrice(), ilPaymentPrices::_getPriceString(), and ilUtil::sendInfo().

Referenced by cancelPaypal(), deleteItem(), finishPaypal(), removeCoupon(), and setCoupon().

        {
                global $ilObjDataCache, $ilUser;

                include_once './payment/classes/class.ilPaymentPrices.php';

                $this->tpl->addBlockfile('ADM_CONTENT','adm_content','tpl.pay_shopping_cart.html','payment');

                $this->__initShoppingCartObject();

                include_once './payment/classes/class.ilGeneralSettings.php';

                $genSet = new ilGeneralSettings();

                include_once './payment/classes/class.ilPayMethods.php';

                if (ilPayMethods::_enabled('pm_bmf')) $pay_methods[] = PAY_METHOD_BMF;
                if (ilPayMethods::_enabled('pm_paypal')) $pay_methods[] = PAY_METHOD_PAYPAL;            

                $num_items = 0;
                if (is_array($pay_methods))
                {                       
                        for ($p = 0; $p < count($pay_methods); $p++)
                        {                       
                                if ($pay_methods[$p] == PAY_METHOD_BMF)
                                {
                                        $tpl =& new ilTemplate("./payment/templates/default/tpl.pay_shopping_cart_bmf.html",true,true);
                                        $coupon_session_id = "bmf";
                                }
                                else if ($pay_methods[$p] == PAY_METHOD_PAYPAL)
                                {
                                        $tpl =& new ilTemplate("./payment/templates/default/tpl.pay_shopping_cart_paypal.html",true,true);
                                        $coupon_session_id = "paypal";
                                }

                                if (count($items = $this->psc_obj->getEntries($pay_methods[$p])))
                                {
                                        $counter = 0;
                                        $paypal_counter = 0;
                        
                                        foreach ($items as $item)
                                        {
                                                $tmp_pobject =& new ilPaymentObject($this->user_obj,$item['pobject_id']);
                        
                                                $obj_id = $ilObjDataCache->lookupObjId($tmp_pobject->getRefId());
                                                $obj_type = $ilObjDataCache->lookupType($obj_id);
                                                $obj_title = $ilObjDataCache->lookupTitle($obj_id);
                                                $price_arr = ilPaymentPrices::_getPrice($item['price_id']);
                                                
                                                $price = $price_arr['unit_value'].".".$price_arr['sub_unit_value'];
                                                
                                                $direct_paypal_info_output = true;                                              
                                                $assigned_coupons = '';                                 
                                                if (!empty($_SESSION["coupons"][$coupon_session_id]))
                                                {                                                                                               
                                                        $item["math_price"] = (float) $price;
                                                                                                                
                                                        foreach ($_SESSION["coupons"][$coupon_session_id] as $key => $coupon)
                                                        {
                                                                $this->coupon_obj->setId($coupon["pc_pk"]);
                                                                $this->coupon_obj->setCurrentCoupon($coupon);

                                                                if ($this->coupon_obj->isObjectAssignedToCoupon($tmp_pobject->getRefId()))
                                                                {
                                                                        $assigned_coupons .= '<br />' . $this->lng->txt('paya_coupons_coupon') . ': ' . $coupon["pcc_code"];

                                                                        $_SESSION["coupons"][$coupon_session_id][$key]["total_objects_coupon_price"] += (float) $price;
                                                                        $_SESSION["coupons"][$coupon_session_id][$key]["items"][] = $item;
                                                                        $direct_paypal_info_output = false;
                                                                }
                                                        }
                                                }
                                                else
                                                {
                                                        $price = $price_arr['unit_value'].".".$price_arr['sub_unit_value'];     
                                                }

                                                $f_result[$counter][] = ilUtil::formCheckBox(0,'item[]',$item['psc_id']);
                                                $f_result[$counter][] = "<a href=\"goto.php?target=".$obj_type."_".$tmp_pobject->getRefId() . "\">".$obj_title."</a>";
                                                if ($assigned_coupons != '') $f_result[$counter][count($f_result[$counter]) - 1] .= $assigned_coupons;
                                                
                                                $f_result[$counter][] = $price_arr['duration'].' '.$this->lng->txt('paya_months');
                        
                                                $f_result[$counter][] = ilPaymentPrices::_getPriceString($item['price_id']);

                                                if ($pay_methods[$p] == PAY_METHOD_PAYPAL)
                                                {
                                                        if ($direct_paypal_info_output == true) // Paypal information in hidden fields
                                                        {                               
                                                                $tpl->setCurrentBlock("loop_items");
                                                                $tpl->setVariable("LOOP_ITEMS_NO", (++$paypal_counter));
                                                                $tpl->setVariable("LOOP_ITEMS_NAME", "[".$obj_id."]: ".$obj_title);
                                                                $tpl->setVariable("LOOP_ITEMS_AMOUNT", $price);
                                                                $tpl->parseCurrentBlock("loop_items");                                                                                                          
                                                        }

#                                                       $buttonParams["item_name_".($counter+1)] = $obj_title;
#                                                       $buttonParams["amount_".($counter+1)] = $price_arr['unit_value'].".".$price_arr['sub_unit_value'];
                                                }
                                                
                                                ++$counter;
                                                unset($tmp_pobject);                                    
                                        }
                                        
                                        $this->__showItemsTable($tpl, $f_result, $pay_methods[$p]);

                                        $tpl->setVariable("COUPON_TABLE", $this->__showCouponInput($pay_methods[$p]));
                                                                                
                                        $tpl->setCurrentBlock("buy_link");
                                        switch($pay_methods[$p])
                                        {
                                                case PAY_METHOD_BMF:                                    
                                                        #$tpl->setVariable("SCRIPT_LINK", './payment.php?view=start_bmf');                                                      
                                                        if ($this->totalAmount[PAY_METHOD_BMF] == 0)
                                                        {
                                                                $tpl->setVariable('TXT_UNLOCK', $this->lng->txt('pay_click_to_buy'));
                                                                $tpl->setVariable('LINK_UNLOCK', $this->ctrl->getLinkTarget($this, 'unlockBMFObjectsInShoppingCart'));
                                                        }
                                                        else
                                                        {
                                                                $tpl->setVariable('TXT_BUY', $this->lng->txt('pay_click_to_buy'));
                                                                $tpl->setVariable('SCRIPT_LINK', $this->ctrl->getLinkTargetByClass('ilPurchaseBMFGUI', ''));                                                            
                                                        }       
                                                        break;
                
                                                case PAY_METHOD_PAYPAL:                                         
                                                        if ($this->totalAmount[PAY_METHOD_PAYPAL] == 0)
                                                        {
                                                                $tpl->setVariable('TXT_BUY', $this->lng->txt('pay_click_to_buy'));
                                                                $tpl->setVariable('SCRIPT_LINK', $this->ctrl->getLinkTarget($this, 'unlockPAYPALObjectsInShoppingCart'));
                                                        }
                                                        else
                                                        {
                                                                $tpl->setVariable('TXT_BUY', $this->lng->txt('pay_click_to_buy'));
                                                                #$tpl->setVariable('SCRIPT_LINK', ILIAS_HTTP_PATH . '/' . $this->ctrl->getLinkTarget($this, 'finishPaypal'));
                                                                $tpl->setVariable("SCRIPT_LINK", "https://".$this->paypalConfig["server_host"].$this->paypalConfig["server_path"]);                                                             
                                                        }       
                                                        
                                                        $tpl->setVariable("POPUP_BLOCKER", $this->lng->txt('popup_blocker'));
                                                        $tpl->setVariable("VENDOR", $this->paypalConfig["vendor"]);
                                                        $tpl->setVariable("RETURN", ILIAS_HTTP_PATH . "/" . $this->ctrl->getLinkTarget($this, "finishPaypal"));
                                                        $tpl->setVariable("CANCEL_RETURN", ILIAS_HTTP_PATH . "/" . $this->ctrl->getLinkTarget($this, "cancelPaypal"));
                                                        $tpl->setVariable("CUSTOM", $ilUser->getId());
                                                        $tpl->setVariable("CURRENCY", $genSet->get("currency_unit"));
                                                        $tpl->setVariable("PAGE_STYLE", $this->paypalConfig["page_style"]);
                                                        
                                                        if (!empty($_SESSION["coupons"][$coupon_session_id]))
                                                        {
                                                                $coupon_discount_items = $this->psc_obj->calcDiscountPrices($_SESSION["coupons"][$coupon_session_id]);
                                                                                                                                
                                                                if (is_array($coupon_discount_items) && !empty($coupon_discount_items))
                                                                {
                                                                        foreach ($coupon_discount_items as $item)
                                                                        {
                                                                                $tmp_pobject =& new ilPaymentObject($this->user_obj, $item['pobject_id']);
                        
                                                                                $obj_id = $ilObjDataCache->lookupObjId($tmp_pobject->getRefId());                                                                               
                                                                                $obj_title = $ilObjDataCache->lookupTitle($obj_id);
                                                                                                                
                                                                                $tpl->setCurrentBlock("loop_items");
                                                                                $tpl->setVariable("LOOP_ITEMS_NO", (++$paypal_counter));
                                                                                $tpl->setVariable("LOOP_ITEMS_NAME", "[".$obj_id."]: ".$obj_title);
                                                                                $tpl->setVariable("LOOP_ITEMS_AMOUNT", round($item["discount_price"], 2));
                                                                                $tpl->parseCurrentBlock("loop_items");
                                                                                
                                                                                unset($tmp_pobject);
                                                                        }                                                                               
                                                                }                                                                                                                       
                                                        }

#                                                       $buttonParams["upload"] = 1;
#                                                       $buttonParams["charset"] = "utf-8";
#                                                       $buttonParams["business"] = $this->paypalConfig["vendor"];
#                                                       $buttonParams["currency_code"] = "EUR";
#                                                       $buttonParams["return"] = "http://www.databay.de/user/jens/paypal.php";
#                                                       $buttonParams["rm"] = 2;
#                                                       $buttonParams["cancel_return"] = "http://www.databay.de/user/jens/paypal.php";
#                                                       $buttonParams["custom"] = "HALLO";
#                                                       $buttonParams["invoice"] = "0987654321";
#                                                       if ($enc_data = $this->__encryptButton($buttonParams))
#                                                       {
#                                                               $tpl->setVariable("ENCDATA", $enc_data);
#                                                       }

                                                        break;
                                        }
                                        $tpl->setVariable('PAYPAL_HINT', $this->lng->txt('pay_hint_paypal'));
                                        $tpl->setVariable('PAYPAL_INFO', $this->lng->txt('pay_info_paypal'));                                                           
                                        
                                        $tpl->parseCurrentBlock('buy_link');                                            

                                        $tpl->setCurrentBlock('loop');                                  
                                        unset($f_result);

                                        $tpl->parseCurrentBlock('loop');                                        

                                        if ($pay_methods[$p] == PAY_METHOD_BMF)
                                                $this->tpl->setVariable('BMF', $tpl->get());
                                                
                                        else if ($pay_methods[$p] == PAY_METHOD_PAYPAL)
                                                $this->tpl->setVariable('PAYPAL', $tpl->get());

                                        $num_items += $counter;
                                }
                        }
                }
                
                if ($num_items == 0)
                {
                        ilUtil::sendInfo($this->lng->txt('pay_shopping_cart_empty'));

                        return false;
                }
                else
                {
                        return true;
                }

        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilPaymentShoppingCartGUI::unlockBMFObjectsInShoppingCart (  ) 

Definition at line 97 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, addBookings(), and ilUtil::sendInfo().

        {               
                $this->addBookings(PAY_METHOD_BMF, 'bmf');
                
                $_SESSION["coupons"]["bmf"] = "";
                $_SESSION["bmf"]["payment_type"] = "";
                $_SESSION["bmf"]["debit_entry"] = array();
                $_SESSION["bmf"]["credit_card"] = array();
                
                ilUtil::sendInfo($this->lng->txt('pay_bmf_thanks'), true);
                
                $this->ctrl->redirectByClass('ilPaymentBuyedObjectsGUI', '');
                
                return true;
        }

Here is the call graph for this function:

ilPaymentShoppingCartGUI::unlockPAYPALObjectsInShoppingCart (  ) 

Definition at line 113 of file class.ilPaymentShoppingCartGUI.php.

References $_SESSION, addBookings(), and ilUtil::sendInfo().

        {               
                $this->addBookings(PAY_METHOD_PAYPAL, 'paypal');
                
                $_SESSION["coupons"]["paypal"] = array();
                
                ilUtil::sendInfo($this->lng->txt('pay_paypal_success'), true);
                
                $this->ctrl->redirectByClass('ilPaymentBuyedObjectsGUI', '');   
                
                return true;
        }

Here is the call graph for this function:


Field Documentation

ilPaymentShoppingCartGUI::$ctrl

Definition at line 40 of file class.ilPaymentShoppingCartGUI.php.

ilPaymentShoppingCartGUI::$lng

Reimplemented from ilPaymentBaseGUI.

Definition at line 42 of file class.ilPaymentShoppingCartGUI.php.

ilPaymentShoppingCartGUI::$paypal_obj = null

Definition at line 53 of file class.ilPaymentShoppingCartGUI.php.

ilPaymentShoppingCartGUI::$paypalConfig

Definition at line 55 of file class.ilPaymentShoppingCartGUI.php.

ilPaymentShoppingCartGUI::$psc_obj = null

Definition at line 48 of file class.ilPaymentShoppingCartGUI.php.

ilPaymentShoppingCartGUI::$totalAmount = array() [private]

Definition at line 57 of file class.ilPaymentShoppingCartGUI.php.

Referenced by __showItemsTable().

ilPaymentShoppingCartGUI::$user_obj

Reimplemented from ilPaymentBaseGUI.

Definition at line 43 of file class.ilPaymentShoppingCartGUI.php.

Referenced by ilPaymentShoppingCartGUI().


The documentation for this class was generated from the following file: