uawdijnntqw1x1x1
IP : 216.73.216.231
Hostname : 213-108-241-110.cprapid.com
Kernel : Linux 213-108-241-110.cprapid.com 5.14.0-570.25.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 9 04:57:09 EDT 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
digilove
/
public_html
/
f7525
/
..
/
components
/
.
/
com_marketplace
/
models
/
productsave.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'); jimport('joomla.application.component.model'); jimport('joomla.application.component.controller'); if (!class_exists('VmConfig')) { include JPATH_ADMINISTRATOR.'/components/com_virtuemart/helpers/config.php'; } VmConfig::loadConfig(); if (!class_exists('CurrencyDisplay')) { include JPATH_ADMINISTRATOR. '/components/com_virtuemart/helpers/currencydisplay.php'; } if (!class_exists('MarketplaceModelProductsave')) { /** * MarketplaceModelProductsave 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 MarketplaceModelProductsave extends JModelLegacy { var $customerTable = null; var $slug=""; var $_db; public $checkNew=0; public $decimals; var $products = null; /** * __construct function */ function __construct() { $this->decimals= array( 'product_length', 'product_width', 'product_height', 'product_weight', 'product_packaging' ); parent::__construct(); $this->slug=""; $this->_db=JFactory::getDBO(); } /** * CheckCreateUnique function * * @param [type] $tbl_name var * @param [type] $productname var * * @return void */ function checkCreateUnique($tbl_name,$productname) { $i = 0; $query=$this->_db->getQuery(true); $query->select($this->_db->quoteName('product_name')) ->from($this->_db->quoteName($tbl_name)) ->where( $this->_db->quoteName('product_name'). '='.$this->_db->quote($productname) ); $this->_db->setQuery($query); $this->_db->execute($query); $productname= preg_replace('/\s+/', '', $productname); $count= $this->_db->getNumRows(); $this->slug=$productname."-".$count; return true; } /** * SaveProduct function * * @param array $data data * * @return void */ function saveProduct($data) { if (isset($data['virtuemart_manufacturer_id'][0]) && !strlen($data['virtuemart_manufacturer_id'][0]) ) { unset($data['virtuemart_manufacturer_id'][0]); } if (!class_exists('VmConfig')) { include JPATH_ADMINISTRATOR. '/components/com_virtuemart/helpers/config.php'; } $vmconf=VmConfig::loadConfig(); $vmlang = false; $orignalData=$data; if (isset($data['country_code'])) { $code = $data['country_code']; $country_table = explode(' ', $code); $countryLangCode=explode(' ', $code); $languageCode=str_replace("_", "-", $country_table[1]); $vmlang = strtolower(str_replace("-", "_", $country_table[1])); } if (!$vmlang) { $vmlang=VmConfig::$vmlang; $languageCode=$vmlang; } $data['vmlang']=$languageCode; if (!isset($data['virtuemart_manufacturer_id'])) { $data['virtuemart_manufacturer_id']=""; } if (strlen($data['virtuemart_product_id'])) { $db=$this->_db; $query=$db->getQuery(true); $query->delete($db->quoteName('#__virtuemart_product_manufacturers')) ->where( $db->quoteName('virtuemart_product_id'). '='.$data['virtuemart_product_id'] ); try{ $db->setQuery($query); $db->execute(); } catch(Exception $e){ JFactory::getApplication()->enqueueMessage( $e->getMessage(), 'error' ); } } $request=$data; $currency=CurrencyDisplay::getInstance($data["pro_curr"]); $imagepath = isset($data['imagepath'])?$data['imagepath']:array(); $imagepre=isset($data['imagepre'])?$data['imagepre']:array(); $imagetype=isset($data['imagetype'])?$data['imagetype']:array(); $countarr = count($imagepath); $this->checkCreateUnique( "#__virtuemart_products_".$vmlang, $data['productname'] ); $date = date('Y-m-d'); $created_by=JFactory::getUser()->id; $params = JComponentHelper::getParams('com_marketplace'); $create_product = trim($params->get('create_product')); $checkAutomatic=0; if (!$create_product) { $checkAutomatic=1; } if (isset($data['field'])) { $customFields=$data['field']; } if (isset($data['customfield_params'])) { $customFieldParams=$data['customfield_params']; } $data=array( 'product_name' => $data['productname'], 'published' => $create_product, 'product_special' => 0, 'slug' => $this->slug, 'product_sku' => $data['product_sku'], 'product_gtin' => '', 'product_mpn' => '', 'virtuemart_manufacturer_id' => $data['virtuemart_manufacturer_id'], 'layout' => '', 'product_url' => '', 'categories' => $data['product_parent_id'], 'mprices' => array( 'product_price' => array( '0' => $data['price'] ) , 'virtuemart_product_price_id' => array( '0' => '0' ) , 'product_currency' => array( '0' => $data["pro_curr"] ) , 'virtuemart_shoppergroup_id' => array( '0' => '' ) , 'basePrice' => array( '0' => '0' ) , 'product_tax_id' => array( '0' => $data['product_tax_id'] ) , 'salesPrice' => array( '0' => '' ) , 'product_discount_id' => array( '0' => $data['product_discount_id'] ) , 'product_price_publish_up' => array( '0' => '0' ) , 'product_price_publish_down' => array( '0', '0' ) , 'product_override_price' => array( '0' => '0' ) , 'price_quantity_start' => array( '0' => '0' ) , 'price_quantity_end' => array( '0' => '0' ) ) , 'product_parent_id' => '0', 'intnotes' => '', 'product_s_desc' => $data['product_description_short'], 'product_desc' => $data['product_description'], 'product_in_stock' => $data['product_in_stock'], 'product_ordered' => 0, 'low_stock_notification' => 0, 'product_available_date' => '0', 'customer_email_type' => 'customer', 'notification_template' => 1, 'product_length' => '', 'product_lwh_uom' => '', 'product_width' => '', 'product_height' => '', 'product_weight' => $data['product_weight'], 'product_weight_uom' => 'KG', 'product_packaging' => '', 'product_unit' => '', 'product_box' => '', 'searchMedia' => '', 'media' => array( 'media_published' => 1, 'file_title' => '', 'file_description' => '', 'file_url' => $vmconf->get("media_product_path") , 'file_url_thumb' => '', 'media_roles' => 'upload', 'active_media_id' => '0' ) , 'file_is_product_image' => '1', ); if (isset($customFields)) { $data['field']=$customFields; } if (isset($customFieldParams)) { $data['customfield_params']=$customFieldParams; } //add custom attribute $productmodel=VmModel::getModel('product'); $product_data = $productmodel->getTable('products'); $product_data->emptyCache(); $product_data->setLanguage($languageCode); //Disables the language fallback $isChild = false; if (!empty($data['isChild'])) { $isChild = $data['isChild']; } if (!empty($request['virtuemart_product_id'])) { $product_data-> load($request['virtuemart_product_id']); $data["published"]=$product_data->published; $proMod=VmModel::getModel("Product"); $poData=$proMod->getProduct( $product_data->virtuemart_product_id, true, true, false ); $data['virtuemart_product_id']=$request['virtuemart_product_id']; } else { $this->checkNew=1; } foreach ($this->decimals as $decimal) { if (array_key_exists($decimal, $data)) { if (!empty($data[$decimal])) { $data[$decimal] = str_replace(',', '.', $data[$decimal]); } else { $data[$decimal] = null; $product_data->$decimal = null; } } } if (!empty($product_data->product_parent_id) and $product_data->product_parent_id == $data['virtuemart_product_id'] ) { $product_data->product_parent_id = 0; unset($data['product_parent_id']); } $data['vmlang']=$languageCode; $data['option']="com_virtuemart"; $data['task']="apply"; $data['controller']="product"; $data['view']="product"; $data[JSession::getFormToken()]="1"; //store missing variables : such as custom attribute values foreach ($orignalData as $oKey => $oValue) { if (!array_key_exists($oKey, $data)) { $data[$oKey]=$oValue; } } //trigger vm events JPluginHelper::importPlugin('vmcustom'); JPluginHelper::importPlugin('vmextended'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger( 'plgVmBeforeStoreProduct', array(&$data, &$product_data) ); $stored = $product_data->bindChecknStore($data, false); if (!$stored ) { JFactory::getApplication()->enqueueMessage( JText::_('COULD_NOT_CREATED'), 'warning' ); return false; } $this->_id = $data['virtuemart_product_id'] = (int)$product_data->virtuemart_product_id; if (empty($this->_id)) { JFactory::getApplication()->enqueueMessage( JText::_('COULD_NOT_FOUND_VMID'), 'warning' ); return false; } // update/store custom fields if (!$isChild) { $modelCustomfields = VmModel::getModel('Customfields'); $modelCustomfields->storeProductCustomfields( 'product', $data, $product_data->virtuemart_product_id ); } // $old_price_ids = $productmodel->loadProductPrices( $this->_id, array(0), false ); if (isset($data['mprices']['product_price'])) { $pricesToStore = array(); $pricesToStore['virtuemart_product_id'] = $this->_id; $pricesToStore['product_override_price'] = $data['mprices']['product_override_price'][0]; $pricesToStore['override'] = isset($data['mprices']['override'][0]) ?(int)$data['mprices']['override'][0]:0; $pricesToStore['virtuemart_shoppergroup_id'] = (int)$data['mprices']['virtuemart_shoppergroup_id'][0]; $pricesToStore['product_tax_id'] = (int)$data['mprices']['product_tax_id'][0]; $pricesToStore['product_discount_id'] = (int)$data['mprices']['product_discount_id'][0]; $pricesToStore['product_currency'] = (int)$data['mprices']['product_currency'][0]; $pricesToStore['product_price_publish_up'] = $data['mprices']['product_price_publish_up'][0]; $pricesToStore['product_price_publish_down'] = $data['mprices']['product_price_publish_down'][0]; $pricesToStore['price_quantity_start'] = (int)$data['mprices']['price_quantity_start'][0]; $pricesToStore['price_quantity_end'] = (int)$data['mprices']['price_quantity_end'][0]; if (!class_exists('calculationHelper')) { include VMPATH_ADMIN . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'calculationh.php'; } $calculator = calculationHelper::getInstance(); $pricesToStore['salesPrice'] = $data['mprices']['salesPrice'][0]; $pricesToStore['product_price'] = $data['mprices']['product_price'][0]; unset($data['mprices']['use_desired_price'][0]); if ((isset($pricesToStore['product_price']) and $pricesToStore['product_price']!='' and $pricesToStore['product_price']!=='0') || (isset($childPrices) and count($childPrices)>1) ) { if ($isChild) { if (is_array($old_price_ids) and count($old_price_ids)>1) { $pricesToStore = false; $old_price_ids = array(); } else { unset($data['mprices']['product_override_price'][$k]); unset($pricesToStore['product_override_price']); unset($data['mprices']['override'][$k]); unset($pricesToStore['override']); } } if ($pricesToStore) { $toUnset = array(); if (!empty($old_price_ids) and count($old_price_ids)) { foreach ($old_price_ids as $key => $oldprice) { if (isset($oldprice['virtuemart_product_price_id']) && isset($pricesToStore['virtuemart_product_price_id']) && $pricesToStore['virtuemart_product_price_id'] == $oldprice['virtuemart_product_price_id']) { $pricesToStore = array_merge( $oldprice, $pricesToStore ); $toUnset[] = $key; } } } $productmodel->updateXrefAndChildTables( $pricesToStore, 'product_prices', $isChild ); foreach ($toUnset as $key) { unset($old_price_ids[ $key ]); } } } } if (!empty($old_price_ids) and count($old_price_ids) ) { $oldPriceIdsSql = array(); foreach ($old_price_ids as $oldPride) { $oldPriceIdsSql[] = $oldPride['virtuemart_product_price_id']; } $db = JFactory::getDbo(); $query=$db->getQuery(true); $query->delete($db->quoteName('#__virtuemart_product_prices')) ->where( $db->quoteName('virtuemart_product_price_id'). " IN(".implode(",", $oldPriceIdsSql).") " ); $db->setQuery($query); try{ $db->execute(); }catch(Exception $e){ JFactory::getApplication()->enqueueMessage( $e->getMessage(), 'error' ); return false; } $err = $db->getErrorMsg(); if (!empty($err)) { JFactory::getApplication()->enqueueMessage( JText::_('COULD_NOT_DELETE_OLD_PRICE'), 'warning' ); } } if (!$isChild) { $data = $productmodel->updateXrefAndChildTables( $data, 'product_shoppergroups' ); $data = $productmodel->updateXrefAndChildTables( $data, 'product_manufacturers' ); } $data = $productmodel->updateXrefAndChildTables( $data, 'product_categories' ); if (!empty($data['notify_users'])) { if ($data['product_in_stock'] > 0 && $data['notify_users'] == '1') { $waitinglist = VmModel::getModel('Waitinglist'); $waitinglist->notifyList($data['virtuemart_product_id']); } } $db=$this->_db; $query=$db->getQuery(true); $uid=JFactory::getUser()->id; $query->update($db->quoteName('#__virtuemart_products')) ->set($db->quoteName('created_by')."=".$db->quote($uid)) ->where( $db->quoteName('virtuemart_product_id'). '='.$db->quote($product_data->virtuemart_product_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_categories')) ->where( $db->quoteName('virtuemart_product_id'). "=".$db->quote($product_data->virtuemart_product_id) ); $db->setQuery($query); if (is_array($request['product_parent_id'])) { for ($i=0;$i<count($request['product_parent_id']);$i++) { $query=$db->getQuery(true); $columns=array( $db->quoteName('id'), $db->quoteName('virtuemart_product_id'), $db->quoteName('virtuemart_category_id'), $db->quoteName('ordering') ); $values=array( $db->quote(''), $db->quote($product_data->virtuemart_product_id), $db->quote($request['product_parent_id'][$i]), $db->quote('0') ); $query->insert( $db->quoteName('#__virtuemart_product_categories') ) ->columns($columns) ->values(implode(',', $values)); $db->setQuery( $query."ON DUPLICATE KEY UPDATE virtuemart_product_id='". $product_data->virtuemart_product_id. "',virtuemart_category_id='". $request['product_parent_id'][$i]."'" ); try{ $db->execute(); }catch(Exception $e){ JFactory::getApplication()->enqueueMessage( $e->getMessage(), 'error' ); return false; } } } if (is_array($imagepath)) { for ($i=0;$i<$countarr;$i++) { if ($imagepath[$i]!='') { $query=$db->getQuery(true); $columns=array( $db->quoteName('virtuemart_media_id'), $db->quoteName('virtuemart_vendor_id'), $db->quoteName('file_title'), $db->quoteName('file_description'), $db->quoteName('file_meta'), $db->quoteName('file_class'), $db->quoteName('file_mimetype'), $db->quoteName('file_type'), $db->quoteName('file_url'), $db->quoteName('file_url_thumb'), $db->quoteName('file_is_product_image'), $db->quoteName('file_is_downloadable'), $db->quoteName('file_is_forSale'), $db->quoteName('file_params'), $db->quoteName('file_lang'), $db->quoteName('shared'), $db->quoteName('published'), $db->quoteName('created_on'), $db->quoteName('created_by'), $db->quoteName('modified_on'), $db->quoteName('modified_by'), $db->quoteName('locked_on'), $db->quoteName('locked_by') ); $values=array( $db->quote(''), $db->quote(''), $db->quote($imagepre[$i]), $db->quote(''), $db->quote(''), $db->quote(''), $db->quote($imagetype[$i]), $db->quote('product'), $db->quote($imagepath[$i]), $db->quote(''), $db->quote(0), $db->quote(0), $db->quote(0), $db->quote(''), $db->quote(''), $db->quote(0), $db->quote(1), $db->quote($date), $db->quote($created_by), $db->quote('0000-00-00 00:00:00'), $db->quote($created_by), $db->quote('0000-00-00 00:00:00'), $db->quote(0) ); $query->insert($db->quoteName('#__virtuemart_medias')) ->columns($columns) ->values(implode(',', $values)); $db->setQuery($query); try { $imgsuccess = $db->execute(); } catch(Exception $e){ JFactory::getApplication()->enqueueMessage( $e->getMessage(), 'error' ); return false; } if ($imgsuccess) { $vm_media_id = $db->insertid(); $query=$db->getQuery(true); $columns=array( $db->quoteName('id'), $db->quoteName('virtuemart_product_id'), $db->quoteName('virtuemart_media_id'), $db->quoteName('ordering') ); $values=array( $db->quote(''), $db->quote($product_data->virtuemart_product_id), $db->quote($vm_media_id), $db->quote('') ); $query->insert( $db->quoteName('#__virtuemart_product_medias') ) ->columns($columns) ->values(implode(',', $values)); $db->setQuery($query); try{ $db_reslt=$db->query(); }catch(Exception $e){ JFactory::getApplication()->enqueueMessage( $e->getMessage(), 'error' ); return false; } } } } } if ($this->checkNew) { $currency=CurrencyDisplay::getInstance( $data["mprices"]["product_currency"][0] ); $wk_currency=$currency->getSymbol(); $data=$request; $productname = $data['productname']; $created_by = $data['created_by']; $virtuemart_product_id = $data['virtuemart_product_id']; $imagepath = isset($data['imagepath'])?$data['imagepath']:""; $price = $data['price']; $obj=JURI::getInstance(); if (isset($imagepath[0])) { $img = $imagepath[0]; } else { $img = $vmconf->get("assets_general_path"). "images/vmgeneral/".$vmconf->get("no_image_set"); } $file_url ="http://".$obj->getHost().JURI::base(true).'/'.$img; $userdetails=JFactory::getUser($created_by); $partnername = $userdetails->username; $partneremail = $userdetails->email; $query=$db->getQuery(true); $query->select('*') ->from($db->quoteName('#__marketplace_sellerprofile')) ->where( $db->quoteName('seller_id'). "=".$db->quote($created_by) ); $db->setQuery($query); 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; $app_add_prod = JText::_('APP_ADD_PROD'); $Seller = JText::_('SELL_ER'); $wnt_add_prod_name = JText::_('WANT_TO_ADD_PROD_NAME'); $app_seller_prod = JText::_('APP_SELLER_PROD'); $prod_price = JText::_('PROD_PRICE'); $thank_app = JText::_('APP_PROVED'); $subject = $app_add_prod.' '.$sellername.""; $mailer = JFactory::getMailer(); $config = JFactory::getConfig(); $mainframe = JFactory::getApplication(); $adminemail = $mainframe->getCfg('mailfrom'); $mailer->addRecipient($adminemail); $sender = array( $config->get('config.mailfrom'), $config->get('config.fromname') ); // Create and populate an object. $profile = new stdClass(); $profile->created_by = $created_by; $profile->virtuemart_product_id = $product_data->virtuemart_product_id; $mailer->setSender($partneremail); if ($create_product == '0') { $profile->block = !$create_product; $mail_content = trim($params->get('mp_temp_new_product_approval')); $subject = trim($params->get('mp_sub_new_product_approval')); } elseif ($create_product == '1') { $profile->block = !$create_product; $mail_content = trim($params->get('mp_temp_new_product')); $subject = trim($params->get('mp_sub_new_product')); } /* Replacing Value in Templates*/ $mail_content = str_replace( '{[PRODUCTS_LINK]}', juri::root(). "administrator/index.php?option=com_marketplace&view=products", $mail_content ); $subject= str_replace( '{[SELLER_SCREEN]}', ucwords($sellername), $subject ); $mail_content = str_replace( '{[SELLER_SCREEN]}', ucwords($sellername), $mail_content ); $mail_content = str_replace( '{[SITE_FROM_NAME]}', ucwords($config->get('fromname')), $mail_content ); $mail_content = str_replace( '{[PRODUCT_IMG]}', "<img src='".$file_url. "' style='height:150px; width:150px; float:left; border: 1px solid #7f8c8d;' >", $mail_content ); $mail_content = str_replace( '{[PRODUCT_NAME]}', ucwords($productname), $mail_content ); $subject= str_replace( '{[PRODUCT_NAME]}', ucwords($productname), $subject ); $mail_content = str_replace( '{[PRODUCT_PRICE]}', $currency->getFormattedCurrency( $currency->roundForDisplay( $price ) ), $mail_content ); $mailer->setSubject($subject); $mailer->isHTML(true); $mailer->Encoding = 'base64'; $mailer->setBody($mail_content); $send = $mailer->Send(); // Insert the object into the user profile table. $result = $db->insertObject('#__marketplace_product', $profile); } JPluginHelper::importPlugin('system'); $dispatcher =JDispatcher::getInstance(); $addonData=$dispatcher->trigger( 'onSellerAfterAddProduct', array($data,$product_data) ); return $product_data->virtuemart_product_id; } } }
/home/digilove/public_html/f7525/../components/./com_marketplace/models/productsave.php