| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- <?php
 
- /**
 
-  *
 
-  * PHP Pro Bid $Id$ SjeaaEQ8lXI22RXtJnThXE9bPS4xV+bZ6YEIN9k5inM=
 
-  *
 
-  * @link        http://www.phpprobid.com
 
-  * @copyright   Copyright (c) 2015 Online Ventures Software & CodeCube SRL
 
-  * @license     http://www.phpprobid.com/license Commercial License
 
-  *
 
-  * @version     7.6
 
-  */
 
- /**
 
-  * sale direct payment class
 
-  */
 
- namespace Ppb\Service\Fees;
 
- use Ppb\Service,
 
-     Cube\Controller\Front,
 
-     Ppb\Db\Table\Row\Sale as SaleModel;
 
- class DirectPayment extends Service\Fees
 
- {
 
-     /**
 
-      *
 
-      * sale object
 
-      *
 
-      * @var \Ppb\Db\Table\Row\Sale
 
-      */
 
-     protected $_sale;
 
-     /**
 
-      *
 
-      * total amount to be paid
 
-      *
 
-      * @var float
 
-      */
 
-     protected $_totalAmount;
 
-     /**
 
-      *
 
-      * payment redirect path
 
-      *
 
-      * @var array
 
-      */
 
-     protected $_redirect = array(
 
-         'module'     => 'members',
 
-         'controller' => 'invoices',
 
-         'action'     => 'browse',
 
-         'params'     => array(
 
-             'type' => 'bought',
 
-         ),
 
-     );
 
-     /**
 
-      *
 
-      * class constructor
 
-      *
 
-      * @param \Ppb\Db\Table\Row\Sale                $sale
 
-      * @param integer|string|\Ppb\Db\Table\Row\User $user the user that will be paying
 
-      */
 
-     public function __construct(SaleModel $sale = null, $user = null)
 
-     {
 
-         parent::__construct();
 
-         if ($sale !== null) {
 
-             $this->setSale($sale);
 
-         }
 
-         if ($user !== null) {
 
-             $this->setUser($user);
 
-         }
 
-     }
 
-     /**
 
-      *
 
-      * set sale model
 
-      * also, based on the sale model, set the total amount that will be used to calculate the fees against
 
-      *
 
-      * @param \Ppb\Db\Table\Row\Sale $sale
 
-      *
 
-      * @return $this
 
-      */
 
-     public function setSale(SaleModel $sale)
 
-     {
 
-         $this->_sale = $sale;
 
-         $this->_totalAmount = $sale->calculateTotal();
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * get sale model
 
-      *
 
-      * @return \Ppb\Db\Table\Row\Sale
 
-      */
 
-     public function getSale()
 
-     {
 
-         return $this->_sale;
 
-     }
 
-     /**
 
-      *
 
-      * get redirect array, but attach sale_id variable if it is set
 
-      *
 
-      * @return array
 
-      */
 
-     public function getRedirect()
 
-     {
 
-         $redirect = $this->_redirect;
 
-         if (!empty($this->_transactionDetails['data']['sale_id'])) {
 
-             $redirect['params']['sale_id'] = $this->_transactionDetails['data']['sale_id'];
 
-         }
 
-         return $redirect;
 
-     }
 
-     /**
 
-      *
 
-      * mark the sale as paid with direct payment
 
-      * if ipn returns false, mark the listing as unpaid
 
-      *
 
-      * @param bool  $ipn  true if payment is completed, false otherwise
 
-      * @param array $post array keys: {sale_id}
 
-      *
 
-      * @return \Ppb\Service\Fees\SaleTransaction
 
-      */
 
-     public function callback($ipn, array $post)
 
-     {
 
-         $salesService = new Service\Sales();
 
-         /** @var \Ppb\Db\Table\Row\Sale $sale */
 
-         $sale = $salesService->findBy('id', $post['sale_id']);
 
-         $flag = ($ipn) ? SaleModel::PAYMENT_PAID_DIRECT_PAYMENT : 0;
 
-         $sale->save(array(
 
-             'flag_payment' => $flag,
 
-         ));
 
-         if ($ipn) {
 
-             $sale->setExpiresFlag(true);
 
-             $user = Front::getInstance()->getBootstrap()->getResource('user');
 
-             $type = null;
 
-             if (!empty($user['id'])) {
 
-                 $type = ($sale['buyer_id'] == $user['id']) ? 'bought' : 'sold';
 
-             }
 
-             $this->setRedirect(array(
 
-                 'module'     => 'members',
 
-                 'controller' => 'invoices',
 
-                 'action'     => 'browse',
 
-                 'params'     => array(
 
-                     'type'    => $type,
 
-                     'sale_id' => $post['sale_id'],
 
-                 ),
 
-             ));
 
-         }
 
-         /** @var \Ppb\Db\Table\Row\User $seller */
 
-         $seller = $sale->findParentRow('\Ppb\Db\Table\Users', 'Seller');
 
-         $automaticDigitalDownloads = $seller->getGlobalSettings('automatic_digital_downloads');
 
-         if ($flag == 0 || $automaticDigitalDownloads != -1) {
 
-             $downloadsFlag = ($flag) ? 1 : 0;
 
-             $sale->findDependentRowset('\Ppb\Db\Table\SalesListings')->save(array(
 
-                 'downloads_active' => $downloadsFlag,
 
-             ));
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      *
 
-      * get total amount to be paid resulted from the calculate() method
 
-      *
 
-      * @return float
 
-      */
 
-     public function getTotalAmount()
 
-     {
 
-         return $this->_totalAmount;
 
-     }
 
- }
 
 
  |