Your IP : 216.73.216.11


Current Path : /home/digilove/public_html/plugins/system/marketplace/
Upload File :
Current File : /home/digilove/public_html/plugins/system/marketplace/marketplace.php

<?php
/**
 * Marketplace - Component Marketplace 
 * ******************************************************************
 *
 * PHP version 7.0
 *
 * @category   Component
 * @package    Joomla
 * @author     WebKul software private limited <support@webkul.com>
 * @copyright  2010 WebKul software private limited
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 * @version    GIT:5.2
 * @filesource http://store.webkul.com
 * @link       Technical Support:  webkul.uvdesk.com
 * ******************************************************************
 */
// no direct access
defined('_JEXEC') or die('Restricted access');

if (!class_exists('VmConfig')) {
    include JPATH_ADMINISTRATOR .'/components/com_virtuemart/helpers/config.php';
}
if (!class_exists('CurrencyDisplay')) {
    include JPATH_ADMINISTRATOR .
    '/components/com_virtuemart/helpers/currencydisplay.php';
}
if (!class_exists('MarketplaceHelper')) {
    include JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR.'components'.
    DIRECTORY_SEPARATOR.'com_marketplace'.DIRECTORY_SEPARATOR.'helpers'.
    DIRECTORY_SEPARATOR.'marketplace.php';
}
if (!class_exists('vmPSPlugin')) {
    include JPATH_VM_PLUGINS . DIRECTORY_SEPARATOR . 'vmpsplugin.php';
}
VmConfig::loadConfig();
/**
 * SystemMarketplace class
 * 
 * @category Component
 * @package  Joomla
 * @author   WebKul software private limited <support@webkul.com>
 * @license  http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 * @link     Technical Support:  webkul.uvdesk.com
 */
class plgSystemMarketplace extends vmPSPlugin
{
    /**
     * __construct function
     *
     * @param [type] $subject var
     * @param [type] $config  var
     */
    public function __construct( $subject, $config )
    {
        $style="@media only screen and (min-width: 769px){
            .hidden-desktop{
                display:none!important;
            }
        }
        @media only screen and (max-width: 769px){
            .visible-desktop{
                display:none!important;
            }
        }";
        parent::__construct($subject, $config);
        $document=JFactory::getDocument();
        $document->addStyleDeclaration($style);
    }
    /**
     * VmOnDeleteProduct function
     *
     * @param [type] $id var
     * @param [type] $ok var
     * 
     * @return void
     */
    function plgVmOnDeleteProduct($id, $ok)
    {
        $db=JFactory::getDBO();
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_product'))
            ->where($db->quoteName('virtuemart_product_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $ok=$db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
    }
    /**
     * VmOnProductDisplayPayment function
     *
     * @param obnject $product                var
     * @param [type]  $productDisplayPayments var
     * 
     * @return void
     */
    public function plgVmOnProductDisplayPayment($product, &$productDisplayPayments)
    {
        if (MarketplaceHelper::checkSeller($product->created_by)) {
            $fields=array(
                'u.name',
                's.screenname'
            );
            $sellInfo = MarketplaceHelper::getSeller($product->created_by, $fields);
            $plugin = JPluginHelper::getPlugin('system', 'marketplace');
            $params = new JRegistry($plugin->params);
            $wk_sellert_attach_class=trim($params->get('wk_Seller_attach_class'));
            if (isset($wk_sellert_attach_class)) {
                $class_to_add=$wk_sellert_attach_class;
            } else {
                $class_to_add='addtocart-area';
            }
            $name = $sellInfo->screenname == ""
                ?$sellInfo->name:$sellInfo->screenname;
            $script="
            jQuery(document).ready(function(){
                jQuery('#seller_info').remove();
                jQuery('.".$class_to_add."').before('<div id=\"seller_info\">Seller : <a style=\"text-decoration:none;\" href=\"".JRoute::_('index.php?option=com_marketplace&view=sellerprofile&seller_id='.$product->created_by, false)."\">".$name."</a></div>');
            });";
            vmJsApi::addJScript('getSeller', $script);
            /* Code Product View Count */
            $user = JFactory::getUser();
            // condition to check it product is viewed from user other then Owner
            if ($user->id != $product->created_by) {
                $db =JFactory::getDbo();
                $query = $db->getQuery(true);
                $query->select($db->quoteName('viewed'))
                    ->from($db->quoteName('#__marketplace_product'))
                    ->where($db->quoteName('virtuemart_product_id')."=".$product->virtuemart_product_id);
                $db->setQuery($query);
                $pro_data = $db->loadObject();

                $object = new stdClass();
                $object->virtuemart_product_id = $product->virtuemart_product_id;
                $object->viewed = 1 + (int)$pro_data->viewed;
                $result = $db->updateObject(
                    '#__marketplace_product', $object, 'virtuemart_product_id'
                );
            }
        }
    }
    /**
     * UserAfterDelete function
     *
     * @param array   $user    var
     * @param boolean $success var
     * @param string  $msg     var
     * 
     * @return void
     */
    function onUserAfterDelete($user, $success, $msg)
    {
        $checkseller=MarketplaceHelper::checkSeller($user['id']);
        if (isset($checkseller) && strlen(trim($checkseller))) {
            self::OnSellerDeleteFromJoomla($user['id']);
        }
    }
    /**
     * OnSellerDeleteFromJoomla function
     *
     * @param integer $id var
     * 
     * @return void
     */
    public static function OnSellerDeleteFromJoomla($id)
    {
        $user=JFactory::getUser($id);
        $db=JFactory::getDBO();
        $db = JFactory::getDBO();
        $params = JComponentHelper::getParams('com_marketplace');
        $product_action_seller_delete = trim(
            $params->get(
                'product_action_seller_delete'
            )
        );
        $query=$db->getQuery(true);
        $query->select($db->quoteName('virtuemart_product_id'))
            ->from($db->quoteName('#__virtuemart_products'))
            ->where($db->quoteName('created_by')."=".$db->quote($id));
        $db->setQuery($query);
        $results=$db->loadObjectList();
        if ($product_action_seller_delete == 'pd') {
            $productModel=VmModel::getModel('product');
            $productsArr=array();
            foreach ($results as $key => $value) {
                $productsArr[]=$value->virtuemart_product_id;
            }
            $productModel->remove($productsArr);
            $query=$db->getQuery(true);
            $query->delete($db->quoteName('#__marketplace_product'))
                ->where($db->quoteName('created_by')."=".$db->quote($id));
            $db->setQuery($query);
            try {
                $db->execute();
            } catch (Exception $e) {
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
        } else {
            $query=$db->getQuery(true);
            $query->select($db->quoteName("user_id"))
                ->from($db->quoteName("#__user_usergroup_map"))
                ->where($db->quoteName("group_id").'='.$db->quote("8"));
            $db->setQuery($query);
            $res=$db->loadObject();
            $query=$db->getQuery(true);
            $query->delete($db->quoteName('#__marketplace_product'))
                ->where($db->quoteName('created_by')."=".$db->quote($id));
            $db->setQuery($query);
            try{
                $db->execute();
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(), 'error'
                );
                return false;
            }
            $query=$db->getQuery(true);
            $query->update($db->quoteName('#__virtuemart_products'))
                ->set($db->quoteName('published')."=0")
                ->set($db->quoteName('created_by')."=".$db->quote($res->user_id))
                ->where($db->quoteName('created_by')."=".$db->quote($id));
            $db->setQuery($query);
            try{
                $db->execute();
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(), 'error'
                );
                return false;
            }
        }
        //Code required for Marketplace Downloadable product
        $query = $db->getQuery(true);
        $query->select($db->quoteName('extension_id'))
            ->from($db->quoteName('#__extensions'))
            ->where(
                $db->quoteName('element')."=".
                $db->quote('virtuemart_mp_downloadable_product')
            );
        $db->setQuery($query);
        try{
            $results=$db->loadObject();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        if (isset($results->extension_id) && $results->extension_id != '') {
            $query = $db->getQuery(true);
            $query->delete($db->quoteName('#__marketplace_downloadable_product'))
                ->where($db->quoteName('seller_id')."=".$db->quote($id));
            $db->setQuery($query);
            try{
                $db->execute();
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
            $query=$db->getQuery(true);
            $query->delete($db->quoteName('#__virtuemart_product_customfields'))
                ->where(
                    $db->quoteName('customfield_value').
                    "=".$db->quote('Downloadable')
                )
                ->where(
                    $db->quoteName('created_by').
                    "=".$db->quote($id). 'OR'.$db->quoteName('modified_by').
                    "=".$db->quote($id)
                );
            $db->setQuery($query);
            try{
                $db->execute();
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_category_request'))
            ->where($db->quoteName('requested_by')."=".$db->quote($user->email));
        $db->setQuery($query);
        try {
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_commision'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_favourite_products'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_feedback'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_orderlist'))
            ->where($db->quoteName('virtuemart_seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_payments'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_sellerprofile'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $query=$db->getQuery(true);
        $query->delete($db->quoteName('#__marketplace_seller_follower'))
            ->where($db->quoteName('seller_id')."=".$db->quote($id));
        $db->setQuery($query);
        try{
            $db->execute();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
         /* Getting email template */
        $params = JComponentHelper::getParams('com_marketplace');
        $body = trim($params->get('mp_temp_seller_removed'));
        $subject = trim($params->get('mp_sub_seller_removed'));
        $mailer=JFactory::getMailer();
        $config=JFactory::getConfig();
        $user=JFactory::getUser($id);
        $email=$user->email;
        $body = str_replace(
            '{[SELLER_NAME]}', ucwords($user->name),
            $body
        );
        $subject= str_replace(
            '{[SELLER_NAME]}', ucwords($user->name),
            $subject
        );
        $body = str_replace(
            '{[SITE_FROM_NAME]}', ucwords($config->get('fromname')),
            $body
        );
        $subject= str_replace(
            '{[SITE_FROM_NAME]}', ucwords($config->get('fromname')),
            $subject
        );

        $mailer->setSender($config->get('mailfrom'));
        $mailer->addRecipient($email);
        $mailer->setSubject($subject);
        $mailer->isHTML(true);
        $mailer->Encoding = 'base64';
        $mailer->setBody($body);
        /* Send mail */
        $send = $mailer->Send();
    }
    /**
     * VmOnPaymentResponseReceived function
     *
     * @param [type] $html var
     * 
     * @return void
     */
    function plgVmOnPaymentResponseReceived(&$html)
    {
        $app = JFactory::getApplication();
        $response=$app->input->post->getArray();
        if (isset($response[ "payment_status" ])
            && $response[ "payment_status" ] == "Completed"
        ) {
            if (!class_exists('VirtueMartCart')) {
                include JPATH_VM_SITE . DIRECTORY_SEPARATOR .
                'helpers' . DIRECTORY_SEPARATOR . 'cart.php';
            }
            if (!class_exists('shopFunctionsF')) {
                include JPATH_VM_SITE . DIRECTORY_SEPARATOR . 'helpers'
                . DIRECTORY_SEPARATOR . 'shopfunctionsf.php';
            }
            if (!class_exists('VirtueMartModelOrders')) {
                include JPATH_VM_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'models'
                . DIRECTORY_SEPARATOR . 'orders.php';
            }
            $itemName=$response[ "item_name" ];
            $item = explode(":", $itemName);
            $orderNo = trim($item[1]);
            $vmOrder=new VirtueMartModelOrders();
            $orderid=$vmOrder->getOrderIdByOrderNumber($orderNo);
            $order=$vmOrder->getOrder($orderid);
            $db=JFactory::getDBO();
            $query=$db->getQuery(true);
            $query->select($db->quoteName('update_status'))
                ->from($db->quoteName('#__marketplace_orderlist'))
                ->where(
                    $db->quoteName('virtuemart_order_id').
                    "=".$db->quote($orderid)
                );
            $db->setQuery($query);
            $res = $db->loadResult();
            if ($res == null || $res == 0) {
                $this->updateCommision($order);
            }
        }
    }
    /**
     * VmOnUpdateOrderPayment function
     *
     * @param [type] $data             var
     * @param [type] $old_order_status var
     * 
     * @return void
     */
    function plgVmOnUpdateOrderPayment($data,$old_order_status)
    {
        $params = JComponentHelper::getParams('com_marketplace');
        $status=$params->get('commisionUpdateOn');
        if (in_array($data->order_status, $status)) {
            $db=JFactory::getDBO();
            $query=$db->getQuery(true);
            $query->select($db->quoteName('update_status'))
                ->from($db->quoteName('#__marketplace_orderlist'))
                ->where(
                    $db->quoteName('virtuemart_order_id').
                    "=".$db->quote($data->virtuemart_order_id)
                );
            $db->setQuery($query);
            $res = $db->loadResult();
            if ($res == null || $res == 0) {
                $vmOrder=new VirtueMartModelOrders();
                $order=$vmOrder->getOrder($data->virtuemart_order_id);
                $this->updateCommision($order);
            }
        }
    }
    /**
     * VmConfirmedOrder function
     *
     * @param [type] $cart  Cart Object
     * @param [type] $order var
     * 
     * @return void
     */
    function plgVmConfirmedOrder($cart, $order)
    {
        MarketplaceHelper::ordermailSend($order);
    }
    /**
     * GetMenuId function
     *
     * @param string $link string
     * 
     * @return void
     */
    public static function getMenuId(
        $link="index.php?option=com_marketplace&view=mpregistration"
    ) {
        $db=JFactory::getDBO();
        $query=$db->getQuery(true);
        $query->select($db->quoteName('id'))
            ->from($db->quoteName('#__menu'))
            ->where($db->quoteName('link')."=".$db->quote($link));
        $db->setQuery($query);
        $res=null;
        try{
            $res=$db->loadResult();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        return $res;
    }
    /**
     * BeforeCompileHead function
     *
     * @return void
     */
    function onBeforeCompileHead()
    {
        $document = JFactory::getDocument();
        $app = JFactory::getApplication();
        $option=$app->input->get('option');
        $view = $app->input->get('view');

        $wk_js_chk="if(typeof( google)=='undefined'){var s = document.createElement(\"script\");s.type = \"text/javascript\";s.src = \"https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=false&libraries=places&key=AIzaSyDqHOK6L8erT9orE311Bq6iLdOzau1274c\";jQuery(\"head\").append(s);}else{if(typeof( google.maps)=='undefined'){var s = document.createElement(\"script\");s.type = \"text/javascript\";s.src = \"https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=false&libraries=places&key=AIzaSyDqHOK6L8erT9orE311Bq6iLdOzau1274c\";jQuery(\"head\").append(s);}}";
        if ($option=='com_marketplace' && $view!='dashboard' && !$app->isAdmin() ) {

            $document->addScriptDeclaration($wk_js_chk);
        }
    }
    /**
     * Undocumented function
     * Function to manage Membership Account product
     *
     * @param integer $user_id Id
     * 
     * @return void
     */
    public function MshipPlanExpMailSend($user_id)
    {
        $db = JFactory::getDBO();
        $que = $db->getQuery(true);
        $que->select($db->quoteName(array('username','email')))
            ->from($db->quoteName('#__users'))
            ->where($db->quoteName('id'. "=" .$db->quote($user_id)));
        // TODO Check and remove the commented query
        // $que = 'SELECT `username`,`email` FROM `#__users` WHERE `id` = "' .$user_id.'"';

        $db->setQuery($que);
        $userdetails = $db->loadObjectList();
        $partnername = $userdetails[0]->username;
        $partneremail = $userdetails[0]->email;
        $qu = $db->getQuery(true);
        $qu->select('*')
            ->from($db->quoteName('#__virtuemart_userinfos'))
            ->where($db->quoteName('virtuemart_user_id'. "=" .$db->quote($user_id)));
        // TODO Check and remove the commented query
        // $qu = 'SELECT * FROM `#__virtuemart_userinfos` WHERE `virtuemart_user_id` = "' .$user_id.'"';
        $db->setQuery($qu);
        try{
            $sellerinfo = $db->loadObject();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $mailfrom = $sellerinfo->first_name;
        $sellername = $sellerinfo->first_name." ".$sellerinfo->last_name;
        $mailer = JFactory::getMailer();
        $config = JFactory::getConfig();
        $mainframe = JFactory::getApplication();
        $adminemail = $mainframe->getCfg('mailfrom');
        $recipient = array( $partneremail,$adminemail );
        $mailer->addRecipient($recipient);
        $sender = array(
            $config->getvalue('config.mailfrom'),
            $config->getvalue('config.fromname')
        );
        $mailer->setSender($adminemail);
        $subject = "The Plan Subscribed by Seller : ".' '.$sellername. ','.' '."has been expired. ";
        $mail_content ="<div style='background:#f2f2f2;word-wrap: break-word;padding:20px;'>
            Hello <strong>".$partnername."</strong>,<br/>
            Your Previous plan has been expired and Your products are Disable because you have no any plan right Now. <br/>
            So that, You need to Subscribed any plan to enable or add more Products.</br>
            To go on the Plan Subscription page Please Click on this button Here.<a href='".juri::root()."index.php?option=com_mpmembership&view=membership'><span id='email-view-detail' style='background-color: #c0392b; color: #fff; display: inline-block; height: 20px; padding: 7px; width: 100px; cursor: pointer;border-radius: 9px;'><input type ='Button' value ='View Details' name ='view_details' id='view_details' /></span></a></div></br>
            <div style='text-align:center;'><strong> Thank You </strong></div>";
        $mailer->setSubject($subject);
        $mailer->isHTML(true);
        $mailer->Encoding = 'base64';
        $mailer->setBody($mail_content);

        $send = $mailer->Send();
    }
    /**
     * CreateSeller function
     *
     * @param [type] $ret  var
     * @param [type] $data var
     * 
     * @return void
     */
    public function createSeller($ret,$data)
    {
        $params = JComponentHelper::getParams('com_marketplace');
        $create_seller = trim($params->get('create_seller'));
        $db = JFactory::getDBO();
        $seller_id=$ret['user']->id;
        $selleraccess=$data['selleraccess'];
        if ($selleraccess== 1 && $create_seller == 1) {
            $profile = new stdClass();
            $profile->seller_id = $seller_id;
            $profile->is_seller=1;
            try{
                $result = $db->insertObject(
                    '#__marketplace_sellerprofile',
                    $profile
                );
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
                
        } elseif ($selleraccess == 1 && $create_seller== 0 ) {
            $profile = new stdClass();
            $profile->seller_id = $seller_id;
            $profile->is_seller=0;
            $db->setQuery($query);
            try{
                $result = $db->insertObject(
                    '#__marketplace_sellerprofile',
                    $profile
                );
            } catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
        }
    }
    /**
     * UpdateCommision function
     *
     * @param [type] $order var
     * 
     * @return void
     */
    public static function updateCommision($order)
    {
        $db = JFactory::getDBO();
        $virtuemart_order_id = $order['details']['BT']->virtuemart_order_id;
        $order_model = MarketplaceHelper::getMarketModelS('Orderhistory');
        
        $virtuemart_paymentmethod_id = $order['details']['BT']->virtuemart_paymentmethod_id;
        $virtuemart_order_userinfo_id = $order['details']['BT']->virtuemart_order_userinfo_id;
        $query=$db->getQuery(true);
        $query->select($db->quoteName('payment_element'));
        $query->from($db->quoteName('#__virtuemart_paymentmethods'));
        $query->where(
            $db->quoteName('virtuemart_paymentmethod_id').
            "=".$db->quote($db->escape($virtuemart_paymentmethod_id))
        );
        $db->setQuery($query);
        $payment_element = $db->loadResult();
        if (($payment_element!='adaptivepaypal' && $payment_element!='stripeconnect')
            && ($payment_element!='mangopaymarketplace'
            && $payment_element!='braintreemarketplace')
            && $payment_element!='remitasplit'
        ) {
            foreach ($order['items'] as $item) {
                $virtuemart_product_id = $item->virtuemart_product_id;
                $product_quantity = $item->product_quantity;
                $order_status = $item->order_status;
                $product_item_price = $item->product_item_price;
                $order_item_name = $item->order_item_name;
                $product_final_price = $item->product_final_price;
                $product_total_amount =  $product_final_price*$product_quantity;
                $product_subtotal = $item->product_subtotal_with_tax;
                $query=$db->getQuery(true);
                $query->select($db->quoteName('created_by'))
                    ->from($db->quoteName('#__virtuemart_products'))
                    ->where(
                        $db->quoteName('virtuemart_product_id').
                        "=".$db->quote($db->escape($virtuemart_product_id))
                    );
                $db->setQuery($query);
                try{
                    $seller_id = $db->loadResult();
                }catch(Exception $e){
                    JFactory::getApplication()->enqueueMessage(
                        $e->getMessage(),
                        'error'
                    );
                    return false;
                }
                
                if (isset($seller_id)) {
                    $curr_stat = $order_model->getOrderStatus(
                        $seller_id, $virtuemart_order_id
                    );
                    if ($curr_stat == null || $curr_stat == false) {
                        $res_status = $order_model->setOrderStatus(
                            $seller_id,
                            $virtuemart_order_id,
                            $order_status
                        );
                    }
                    $query=$db->getQuery(true);
                    $query->select('*');
                    $query->from($db->quoteName('#__marketplace_commision'));
                    $query->where($db->quoteName('seller_id')."=".$db->quote($db->escape($seller_id)));
                    $db->setQuery($query);
                    try{
                        $commision_fetch = $db->loadObject();
                    }catch(Exception $e){
                        JFactory::getApplication()->enqueueMessage(
                            $e->getMessage(),
                            'error'
                        );
                        return false;
                    }
                    
                    if (is_object($commision_fetch)) {
                        $virtuemart_real_order_id=$commision_fetch->commision_type;
                        if ($commision_fetch->commision_type=='r') {
                            $total_sales = $product_total_amount
                                +$commision_fetch->total_sales;
                            $commision = $commision_fetch->commision;
                            $commision_id = $commision_fetch->commision_id;
                            $comm_total = ($product_total_amount*$commision/100);
                            $commision_total = $product_subtotal - (
                                ($product_subtotal*$commision)/100
                            );
                            $amount_remain= $commision_fetch->amount_remain
                                +$product_total_amount-$comm_total;
                        } else {
                            $total_sales = $product_total_amount
                                +$commision_fetch->total_sales;
                            $commision = $commision_fetch->commision;
                            $commision_id = $commision_fetch->commision_id;
                            $comm_total = $commision*$product_quantity;
                            $commision_total = $product_subtotal-$commision;
                            $amount_remain = $commision_fetch->amount_remain
                               +$product_total_amount-$comm_total;
                        }
                        $query=$db->getQuery(true);
                        $query->update($db->quoteName('#__marketplace_commision'))
                            ->set(
                                $db->quoteName('amount_remain').
                                "=".$db->quote($amount_remain)
                            )
                            ->set(
                                $db->quoteName('total_sales').
                                "=".$db->quote($total_sales)
                            )
                            ->where(
                                $db->quoteName('seller_id').
                                "=".$db->quote($db->escape($seller_id))
                            );
                        $db->setQuery($query);
                        $db->execute();
                        $query=$db->getQuery(true);
                        $columns=array(
                            $db->quoteName('orderlist_id'),
                            $db->quoteName('virtuemart_product_id'),
                            $db->quoteName('virtuemart_order_id'),
                            $db->quoteName('virtuemart_commision_id'),
                            $db->quoteName('virtuemart_real_order_id'),
                            $db->quoteName('virtuemart_product_quantity'),
                            $db->quoteName('virtuemart_seller_id'),
                            $db->quoteName('virtuemart_product_order_status'),
                            $db->quoteName('virtuemart_buyerid'),
                            $db->quoteName('virtuemart_product_price'),
                            $db->quoteName('virtuemart_product_name'),
                            $db->quoteName('virtuemart_product_total_amount'),
                            $db->quoteName('virtuemart_seller_commision_rate'),
                            $db->quoteName('virtuemart_seller_total_commision'),
                            $db->quoteName('actual_parter_product_cost'),
                            $db->quoteName('cleared_at'),
                            $db->quoteName('modified_on'),
                            $db->quoteName('update_status')
                        );
                        $values=array(
                            $db->quote(''),
                            $db->quote($virtuemart_product_id),
                            $db->quote($virtuemart_order_id),
                            $db->quote($commision_id),
                            $db->quote($virtuemart_real_order_id),
                            $db->quote($product_quantity),
                            $db->quote($seller_id),
                            $db->quote($order_status),
                            $db->quote($virtuemart_order_userinfo_id),
                            $db->quote($product_item_price),
                            $db->quote($order_item_name),
                            $db->quote($product_total_amount),
                            $db->quote($commision),
                            $db->quote($comm_total),
                            $db->quote(''),
                            $db->quote('0000-00-00 00:00:00'),
                            $db->quote('0000-00-00 00:00:00'),
                            $db->quote('1')
                        );
                        $query->insert($db->quoteName('#__marketplace_orderlist'));
                        $query->columns($columns);
                        $query->values(implode(',', $values));
                        $db->setQuery($query);
                        try{
                            $db->execute();
                        }catch(Exception $e){
                            JFactory::getApplication()->enqueueMessage(
                                $e->getMessage(),
                                'error'
                            );
                            return false;
                        }
                    }
                }
            }
        }
    }
    /**
     * ProductOrderDetails function
     *
     * @param [type] $id var
     * 
     * @return void
     */
    public function productOrderDetails($id)
    {
        $db = JFactory::getDBO();
        $query=$db->getQuery(true);
        $query->select('*');
        $query->from($db->quoteName('#__virtuemart_order_items'));
        $query->where(
            $db->quoteName('virtuemart_order_id')."=".$db->quote($db->escape($id))
        );
        $db->setQuery($query);
        try {
            return $db->loadObjectList();
        } catch (Exception $e) {
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
    }
    /**
     * GetPaypalType function
     *
     * @param [type] $id var
     * 
     * @return void
     */
    public function getPaypalType($id)
    {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select('payment_mode');
        $query->from($db->quoteName('#__marketplace_sellerprofile'));
        $query->where($db->quoteName('seller_id')." = ".$id);
        $db->setQuery($query);
        try{
            return $result = $db->loadResult();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
    }
    /**
     * AdaptiveCommision function
     *
     * @param [type] $orderid var
     * 
     * @return void
     */
    public function adaptiveCommision($orderid)
    {
        $db = JFactory::getDbo();
        $items = plgSystemMarketplace::productOrderDetails($orderid);
        foreach ($items as $key => $item) {
            $virtuemart_product_id = $item->virtuemart_product_id;
            $product_subtotal = $item->product_subtotal_with_tax;
            $query=$db->getQuery(true);
            $query->select($db->quoteName('created_by'));
            $query->from($db->quoteName('#__marketplace_product'));
            $query->where(
                $db->quoteName('virtuemart_product_id').
                "=".$db->quote($db->escape($virtuemart_product_id))
            );
            $db->setQuery($query);
            try{
                $seller_id = $db->loadResult();
            }catch(Exception $e){
                JFactory::getApplication()->enqueueMessage(
                    $e->getMessage(),
                    'error'
                );
                return false;
            }
            if (isset($seller_id)&& JString::strlen($seller_id)) {
                $query=$db->getQuery(true);
                $query->select('*');
                $query->from('#__marketplace_commision');
                $query->where(
                    $db->quoteName('seller_id')."=".$db->quote($seller_id)
                );
                $db->setQuery($query);
                try{
                    $commision_fetch = $db->loadObjectList();
                }catch(Exception $e){
                    JFactory::getApplication()->enqueueMessage($e->getMessage(), 'error');
                    return false;
                }
                if (isset($commision_fetch[0])) {
                    $seller_payment_type =plgSystemMarketplace::getPaypalType($temp[0]);
                    $seller_pay_type= explode('-', $seller_payment_type);
                    if ($seller_pay_type['1']='adaptivepaypal') {
                        $total_sales = $product_subtotal+$commision_fetch[0]->total_sales;
                        $commision = $commision_fetch[0]->commision;
                        $product_seller_subtotal = $product_subtotal - (($product_subtotal*$commision)/100);
                        $amount_recieved = $commision_fetch[0]->amount_recieved + $product_seller_subtotal;
                        $amount_paid =  $product_seller_subtotal;
                        $query=$db->getQuery(true);
                        $query->update($db->quoteName('#__marketplace_commision'));
                        $query->set(
                            $db->quoteName('amount_recieved').
                            "=".$db->quote($amount_recieved)
                        );
                        $query->set(
                            $db->quoteName('amount_paid').
                            "=".$db->quote($amount_paid)
                        );
                        $query->set(
                            $db->quoteName('total_sales').
                            "=".$db->quote($total_sales)
                        );
                        $query->where(
                            $db->quoteName('seller_id').
                            "=".$db->quote($total_sales)
                        );
                        $db->setQuery($commision_update);
                        try{
                            $db->query();
                        }catch(Exception $e){
                            JFactory::getApplication()->enqueueMessage(
                                $e->getMessage(),
                                'error'
                            );
                            return false;
                        }
                    } else {
                        $total_sales
                            = $product_subtotal+$commision_fetch[0]->total_sales;
                        $commision = $commision_fetch[0]->commision;
                        $commision_total = $product_subtotal
                            - (($product_subtotal*$commision)/100);
                        $amount_remain = $commision_total
                            +$commision_fetch[0]->amount_remain;
                        $query=$db->getQuery(true);
                        $query->update($db->quoteName('#__marketplace_commision'))
                            ->set(
                                $db->quoteName('amount_remain').
                                "=".$db->quote($amount_remain)
                            )
                            ->set(
                                $db->quoteName('total_sales').
                                "=".$db->quote($total_sales)
                            )
                            ->where(
                                $db->quoteName('seller_id').
                                "=".$db->quote($total_sales)
                            );
                        $db->setQuery($commision_update);
                        try{
                            $db->query();
                        }catch(Exception $e){
                            JFactory::getApplication()->enqueueMessage(
                                $e->getMessage(),
                                'error'
                            );
                            return false;
                        }
                    }
                }
            }
        }
    }
    /**
     * MshipPlanUpdateMailSend function
     *
     * @param [type] $created_by seller Id
     * 
     * @deprecated 5.2 use memberShipPlanUpdateMailSend($created_by)
     * 
     * @return void
     */
    public function MshipPlanUpdateMailSend($created_by)
    {
        JFactory::getApplication()->enqueueMessage(
            'Method Deprecated use memberShipPlanUpdateMailSend Instead',
            'notice'
        );
        $this->memberShipPlanUpdateMailSend($created_by);
    }
    /**
     * MemberShipPlanUpdateMailSend function
     *
     * @param integer $created_by seller Id
     * 
     * @return void
     */
    public function memberShipPlanUpdateMailSend($created_by)
    {
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('*')
            ->from($db->quoteName('#__mpmembership_members'))
            ->where($db->quoteName('seller_id').'='. $created_by);
        $db->setQuery($query);
        try{
            $update_result = $db->loadObject();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $seller_name = $update_result->seller_name;
        $account_name = $update_result->account_name;
        $no_of_products = $update_result->no_of_products;
        $membership_fee = $update_result->membership_fee;
        $months = $update_result->months;
        $que = $db->getQuery(true);
        $que->select($db->quoteName(array('username', 'email')))
            ->from($db->quoteName('#__users'))
            ->where($db->quoteName('id').'='. $created_by);
        
        $db->setQuery($que);
        try{
            $userdetails = $db->loadObjectList();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        
        $partnername = $userdetails[0]->username;
        $partneremail = $userdetails[0]->email;
        $qu = $db->getQuery(true);
        $qu->select('*')
            ->from($db->quoteName('#__virtuemart_userinfos'))
            ->where($db->quoteName('virtuemart_user_id').'='. $created_by);
        $db->setQuery($qu);
        try{
            $sellerinfo = $db->loadObject();
        }catch(Exception $e){
            JFactory::getApplication()->enqueueMessage(
                $e->getMessage(),
                'error'
            );
            return false;
        }
        $mailfrom = $sellerinfo->first_name;
        $sellername = $sellerinfo->first_name." ".$sellerinfo->last_name;
        $mailer = JFactory::getMailer();
        $config = JFactory::getConfig();
        $mainframe = JFactory::getApplication();
        $adminemail = $mainframe->getCfg('mailfrom');
        $recipient = array( $partneremail,$adminemail );
        $mailer->addRecipient($recipient);
        $sender = array(
            $config->getvalue('config.mailfrom'),
            $config->getvalue('config.fromname')
        );
        $mailer->setSender($adminemail);
        $subject = "Update Membership Plan By Seller : ".' '.$sellername." ";
        $mail_content ="<div style='background:#f2f2f2;word-wrap: break-word;padding:20px;'>
            Hello <strong>".$partnername."</strong>,<br/>
            <strong>".$sellername."</strong> Update His Plan which Account Name: ".$account_name."<br/>

            <h2>Plan Acciunt Details</h2>
            <table width='100%' cellspacing='0' cellpadding='0' border='0'>
                <tbody>
                    <tr align='left'>
                        <th align='left'>Seller Name</th>
                        <th align='left'>Account Name</th>
                        <th align='left'>Num Of Product</th>
                        <th align='right'>Membership Fee</th>
                        <th align='right'>Valid For Months</th>
                    </tr>
                    <tr valign='top'>
                        <td align='left'></td>
                        <td align='left'></td>
                        <td align='left'></td>
                        <td align='right'></td>
                        <td align='right'></td>
                    </tr>
                        <tr valign='top'>
                        <td align='left'>".$seller_name."</td>
                        <td align='left'>".$account_name."</td>
                        <td align='left'>".$no_of_products."</td>
                        <td align='right'>".$membership_fee."</td>
                        <td align='right'>".$months."</td>
                    </tr>
                </tbody>
            </table>
            <br/><br/>
            <div style='text-align:center;'><strong>Thank You</strong></div>
            </div>";
        $mailer->setSubject($subject);
        $mailer->isHTML(true);
        $mailer->Encoding = 'base64';
           $mailer->setBody($mail_content);
           //exit();
        $send = $mailer->Send();
    }
    /**
     * Sample functions for Mp triggers
     */
    
    /*
    * Uncomment the functions and test;
    * Override the functions to perform task as per your need.
    * Do not write the functions in this marketplace plugin,
    * create the plugin for your own extension and override the required functions
    * NOTE**: These methods will be triggered in System PLugin only
    */

    /*
    // For Add Product View return value of title and content
    function onSellerAddProductView($virtuemart_product_id, $data){
        $a="Custom Field";
        $b="<div style='color:red;'>here</div>";
        return array("title"=>$a,"content"=> $b);
    }*/

    /*
    // For Add Product before save validate product data and return true or false,
    //  false will not allow the product to be saved
    function onSellerBeforeAddProduct(&$data){
        return false;
    }*/

    /*
    // For Add Product after save, Save your extension data here
    function onSellerAfterAddProduct($data,$product_data){
        die("here");
    }*/

    /*
    // For Seller Profile View return value of title and content
    function onSellerProfileRender($sellerId){
        $a="Check ";
        $b="<div style='color:red;'>here</div>";
        return array("title"=>$a,"content"=> $b);
    }
    */

    /*
    // For Marketplace Menu add a menu link, return complete link as in example
    function onMarketplaceMenuRender(){
        $a="Check ";
        return "<a href=".JRoute::_("index.php?option=com_marketplace&view=sellerlist", false)."><span><i class=\"fa fa-eye\"></i></span><span>".$a."</span></a>";
    }
    */

    /* // For Profile Edit View return value of title and content
    function onSellerEditProfileView($data){
        $a="Custom Tab";
        $b="<div style='color:red;'>here</div>";
        return array("title"=>$a,"content"=> $b);
    } */

    /*  // For Profile Edit before save validate data and return true or false,
    //  false will not allow the profile to be saved
    function onSellerBeforeProfileSave(&$data){
        return false;
    } */
    
    /* // For Profile Edit after save, Save your extension data here
    function onSellerAfterProfileSave($data){
        die("here");
    } */
}