b0y-101 Mini Shell


Current Path : E:/www/instructor/test01/administrator/components/com_eventgallery/tables/
File Upload :
Current File : E:/www/instructor/test01/administrator/components/com_eventgallery/tables/order.php

<?php
/**
 * @package     Sven.Bluege
 * @subpackage  com_eventgallery
 *
 * @copyright   Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
// no direct access
defined('_JEXEC') or die('Restricted access');

require_once JPATH_ROOT.'/components/com_eventgallery/library/common/logger.php';

class EventgalleryTableOrder extends JTable
{

    /** @var EventgalleryTableOrder Caches the row data on load for future reference */
    private $_selfCache = null;

    public $id;
    public $documentno;
    public $userid;
    public $language;
    public $email;
    public $phone;
    public $firstname;
    public $lastname;
    public $statusid;
    public $subtotal;
    public $subtotalcurrency;
    public $total;
    public $totalcurrency;
    public $surchargeid;
    public $paymentmethodid;
    public $shippingmethodid;
    public $billingaddressid;
    public $shippingaddressid;
    public $message;
    public $modified;
    public $created;
    public $version;
    public $token;

    public $orderstatusid;
    public $paymentstatusid;
    public $shippingstatusid;

    public $surchargetotal;
    public $surchargetotalcurrency;

    public $paymenttotal;
    public $paymenttotalcurrency;

    public $shippingtotal;
    public $shippingtotalcurrency;


    /**
     * Constructor
     * @param JDatabaseDriver $db
     */

	function __construct( &$db ) {
		parent::__construct('#__eventgallery_order', 'id', $db);
        JLog::addLogger(
            array(
                'text_file' => 'com_eventgallery_order.log.php',
                'logger' => 'Eventgalleryformattedtext'
            ),
            JLog::ALL,
            'com_eventgallery_order'
        );

    }

    public function store( $updateNulls=false )
	{
        $this->modified = date("Y-m-d H:i:s");
		if(!$this->onBeforeStore($updateNulls)) return false;
		$result = parent::store($updateNulls);
		if($result) {
			$result = $this->onAfterStore();
		}
		return $result;
	}

	public function load( $keys=null, $reset=true )
	{
		$result = parent::load($keys, $reset);
		$this->onAfterLoad($result);
		return $result;
	}

	/**
	 * Method to reset class properties to the defaults set in the class
	 * definition. It will ignore the primary key as well as any private class
	 * properties.
	 */
	public function reset()
	{
		parent::reset();
		
		if(!$this->onAfterReset()) return false;

        return true;
	}


    /**
     * Caches the loaded data so that we can check them for modifications upon
     * saving the row.
     * @param $result
     * @return bool
     */
    public function onAfterLoad(&$result)
    {
        $this->_selfCache = $result ? clone $this : null;
        return true;
    }

    /**
     * Resets the cache when the table is reset
     * @return bool
     */
    public function onAfterReset()
    {
        $this->_selfCache = null;
        return true;
    }

    /**
     * @param bool $updateNulls
     * @throws Exception
     * @returns bool
     */
    protected function onBeforeStore(/** @noinspection PhpUnusedParameterInspection */$updateNulls = false) {

        if (!isset($this->_selfCache)) {
            return true;
        }
        // check the version flags to make sure we don't overwrite newer rows with older data.

        if (($this->_selfCache->version > $this->version)) {
            throw new Exception(JText::sprintf('COM_EVENTGALLERY_ORDER_SAVE_FAILED_VERSIONCONFLICT', $this->_selfCache->version, $this->version));
        } else {
            $this->version++;
        }


        return true;
    }

    /**
     * Automatically run some actions after a subscription row is saved
     */
    protected function onAfterStore()
    {

         /**
         * @var EventgalleryLibraryManagerOrder $orderMgr
         */
        $orderMgr = EventgalleryLibraryManagerOrder::getInstance();
        $order = $orderMgr->getOrderById($this->id);
        $config = \Joomla\Component\Eventgallery\Site\Library\Configuration\Main::getInstance();


        if ($order == null) {
            return true;
        }

        if ($this->_selfCache == null) {
            return true;
        }

        // trigger the method functions if a status changed
        if ($this->_selfCache->paymentstatusid != $this->paymentstatusid) {
            if (null!=$order->getPaymentMethod())   {$order->getPaymentMethod()->onPaymentStatusChange($order);}
            if (null!=$order->getShippingMethod())  {$order->getShippingMethod()->onPaymentStatusChange($order);}
            if (null!=$order->getSurcharge())       {$order->getSurcharge()->onPaymentStatusChange($order);}
        }

        if ($this->_selfCache->shippingstatusid != $this->shippingstatusid) {
            if (null!=$order->getPaymentMethod())   {$order->getPaymentMethod()->onShippingStatusChange($order);}
            if (null!=$order->getShippingMethod())  {$order->getShippingMethod()->onShippingStatusChange($order);}
            if (null!=$order->getSurcharge())       {$order->getSurcharge()->onShippingStatusChange($order);}
        }

        if ($this->_selfCache->orderstatusid != $this->orderstatusid) {
            if (null!=$order->getPaymentMethod())   {$order->getPaymentMethod()->onOrderStatusChange($order);}
            if (null!=$order->getShippingMethod())  {$order->getShippingMethod()->onOrderStatusChange($order);}
            if (null!=$order->getSurcharge())       {$order->getSurcharge()->onOrderStatusChange($order);}
        }


        $result = true;

        $disclaimerObject = new EventgalleryLibraryDatabaseLocalizablestring($config->getCheckout()->getCheckoutDisclaimer());
        $disclaimer = strlen($disclaimerObject->get())>0?$disclaimerObject->get():JText::_('COM_EVENTGALLERY_CART_CHECKOUT_ORDER_MAIL_CONFIRMATION_DISCLAIMER');


        // trigger things if the payment status changed to paid
        if ($order->getPaymentMethod() != null
            && $this->_selfCache->paymentstatusid != $this->paymentstatusid
            && $this->paymentstatusid==EventgalleryLibraryOrderstatus::TYPE_PAYMENT_PAID) {

            // trigger payment mail if allowed
            if ($order->getPaymentMethod()->sendMailOnPaymentStatusChange($order))
            {
                if ($order->getPaymentMethod()->doSendOrderConfirmationMailOnlyOnPaymentComplete()) {
                    $result = $this->_sendMail('new_order', $order, $config->getCheckout()->doShowVat(), $disclaimer);
                } else {
                    $result = $this->_sendMail('paid_order', $order, $config->getCheckout()->doShowVat(), $disclaimer);
                }
            }

            // set shipping status
            /**
             * @var EventgalleryLibraryFactoryOrderstatus $orderStatusFactory
             */
            $orderStatusFactory = EventgalleryLibraryFactoryOrderstatus::getInstance();
            if ($order->getShippingMethod() != null && $order->getShippingMethod()->isAutomaticallyShippableIfPaid($order)) {
                $order->setShippingStatus($orderStatusFactory->getOrderStatusById(EventgalleryLibraryOrderstatus::TYPE_SHIPPING_SHIPPED));
            }
        }

        // trigger email if the order status changed to send.
        if ($order->getShippingMethod() != null
            && $order->getShippingMethod()->sendMailOnShippingStatusChange($order)
            && $this->_selfCache->shippingstatusid != $this->shippingstatusid
            && $this->shippingstatusid==EventgalleryLibraryOrderstatus::TYPE_SHIPPING_SHIPPED) {

            $result = $this->_sendMail('shipped_order', $order, $config->getCheckout()->doShowVat(), $disclaimer);
        }

        return $result;
    }

    /**
     * @param String $mailtype
     * @param EventgalleryLibraryOrder $order
     * @return mixed|string
     */
    private function _sendMail($mailtype, $order, $show_vat, $disclaimer) {
        // Load the front end language
        $language = JFactory::getLanguage();
        $language->load('com_eventgallery' , JPATH_SITE.DIRECTORY_SEPARATOR.'components/com_eventgallery', $language->getTag(), true);
        $language->load('com_eventgallery' , JPATH_SITE.DIRECTORY_SEPARATOR.'language'.DIRECTORY_SEPARATOR.'overrides', $language->getTag(), true, false);
        /**
         * @var EventgalleryLibraryManagerEmailtemplate $emailtemplateMgr
         */
        $emailtemplateMgr = EventgalleryLibraryManagerEmailtemplate::getInstance();

        $data = Array();
        $data['disclaimer'] = $disclaimer;
        $data['order'] = $emailtemplateMgr->createOrderData($order, $show_vat);


        $data = json_decode(json_encode($data), FALSE);

        $to = Array($order->getEMail(), $order->getBillingAddress()==null? "": $order->getBillingAddress()->getFirstName().' '.$order->getBillingAddress()->getLastName());
        return $emailtemplateMgr->sendMail($mailtype, $order->getLanguage(), true, $data, $to, true);
    }

}

Copyright © 2019 by b0y-101