File manager - Edit - /home/jardides/www/Jardi-design/old/administrator/components/com_j2store/controllers/productbase.php
Back
<?php /** * @package J2Store * @copyright Copyright (c)2014-17 Ramesh Elamathi / J2Store.org * @license GNU GPL v3 or later */ // No direct access to this file defined('_JEXEC') or die; class J2StoreControllerProductsBase extends F0FController { protected $view = 'Products'; /** * Method to change the product type * here the product child tables will be deleted * */ public function getFilterStates() { $app = JFactory::getApplication(); $state = array(); $state['search'] = $app->input->getString('search',''); $state['product_type']= $app->input->getString('product_type',''); $state['visible'] = $app->input->getString('visible',null); $state['vendor_id'] = $app->input->getInt('vendor_id',0); $state['manufacturer_id'] = $app->input->getString('manufacturer_id',0); $state['productid_from']= $app->input->getString('productid_from',''); $state['productid_to']= $app->input->getString('productid_to',''); $state['pricefrom']= $app->input->getString('pricefrom',''); $state['priceto']= $app->input->getString('priceto',''); $state['since']= $app->input->getString('since',''); $state['until']= $app->input->getString('until',''); $state['taxprofile_id']= $app->input->getString('taxprofile_id',''); $state['shippingmethod']=$app->input->getString('shippingmethod',''); $state['filter_order']= $app->input->getString('filter_order','j2store_product_id'); $state['filter_order_Dir']= $app->input->getString('filter_order_Dir','ASC'); $state['sku']= $app->input->getString('sku',''); $state['sortby']= $app->input->getString('sortby',''); $state['productfilter_id']= $app->input->getString('productfilter_id',0); return $state; } public function changeProductType(){ $app = JFactory::getApplication(); $data = $app->input->getArray($_POST); $product_id = $data['product_id']; $product_type = $data['product_type']; $json =array(); if(isset($data['product_id']) && $data['product_id']) { //allow plugins to run their events $json = J2Store::plugin()->eventWithArray('ChangeProductType', array($product_id, $product_type)); if(!F0FTable::getAnInstance('Product','J2StoreTable')->delete($product_id)){ $json['success'] = false; } if(!$json) { $json['success'] = true; } } echo json_encode($json); $app->close(); } /** * Method to get Related products * */ public function getRelatedProducts(){ $app = JFactory::getApplication(); $db = JFactory::getDbo(); $q = $app->input->post->get('q', '','string'); $ignore_product_id = $app->input->getInt('product_id'); $json = array(); $model = $this->getModel('Products'); $model->setState('search', $q); $query = $db->getQuery(true); $query->select('#__j2store_products.j2store_product_id')->from("#__j2store_products as #__j2store_products"); $query->join ( 'LEFT', '#__j2store_variants AS v ON v.product_id=#__j2store_products.j2store_product_id' ); $query->select('v.sku'); $query->where('v.is_master=1'); $query->where('#__j2store_products.enabled=1'); $query->where('#__j2store_products.visibility=1'); $query->where('#__j2store_products.j2store_product_id !=' .$db->q($ignore_product_id)); J2Store::plugin()->importCatalogPlugins(); JFactory::getApplication()->triggerEvent('onJ2StoreAfterProductListQuery',array(&$query ,&$model)); //echo $query; $db->setQuery($query); $items = $db->loadObjectList(); $result = array(); if(isset($items) && !empty($items)){ foreach ($items as $key=>$item) { if($item->product_name){ $result[$key]['j2store_product_id'] = $item->j2store_product_id; $product_name = $item->product_name; if(!empty($item->sku)){ $product_name .= "(".$item->sku.")"; } $result[$key]['product_name'] = $product_name; } } } $json['products'] = $result; echo json_encode($json); $app->close(); } /** * Method to set productoptionvalues */ function setproductoptionvalues() { $app = JFactory::getApplication(); $model = $this->getModel('Productoptions'); $view = $this->getThisView(); $product_id = $app->input->getInt('product_id', 0); $product = J2Store::product()->setId($product_id)->getProduct(); //get product option id $productoption_id = $app->input->getInt('productoption_id', 0); //set productoption id //to get Item //$model->setId($productoption_id); $product_option = F0FModel::getTmpInstance('ProductOption' ,'J2StoreModel')->getItem($productoption_id); //get all the optionvalues matching the option id $option_values = F0FModel::getTmpInstance('Optionvalues','J2StoreModel')->option_id($product_option->option_id)->getList(); //lets load all the product optionvalues $product_optionvalues = $model->getTmpInstance('Productoptionvalues','J2StoreModel') ->productoption_id($productoption_id) ->getList(); if(isset($product_option->parent_id) && !empty($product_option->parent_id)){ $parentopvalues =$model->getParentOptionValues($product_option->parent_id, $product_option->product_id); $view->set('parent_optionvalues',$parentopvalues ); } $view->addTemplatePath(JPATH_ADMINISTRATOR.'/components/com_j2store/views/product/tmpl/'); $view->set('product_option',$product_option); $view->set('productoption_id',$productoption_id); $view->set('option_values',$option_values); $view->set('product_id',$product_id); $view->set('product',$product); $view->set('prefix','jform[poption_value]'); $view->set('product_optionvalues',$product_optionvalues); $view = $this->display(); } public function addAllOptionValue(){ $app = JFactory::getApplication(); //get product option id $productoption_id = $app->input->getInt('productoption_id', 0); $product_option = F0FModel::getTmpInstance('ProductOption' ,'J2StoreModel')->getItem($productoption_id); //get all the optionvalues matching the option id $option_values = F0FModel::getTmpInstance('Optionvalues','J2StoreModel')->option_id($product_option->option_id)->getList(); foreach ($option_values as $option_value){ $product_option_value = array( 'productoption_id' => $productoption_id, 'optionvalue_id' => $option_value->j2store_optionvalue_id, 'parent_optionvalue' => '', 'product_optionvalue_price' => 0, 'product_optionvalue_prefix' => '+', 'product_optionvalue_weight' => 0, 'product_optionvalue_weight_prefix' => '+', 'product_optionvalue_sku' => '', 'product_optionvalue_default' => '', 'ordering' => 0, 'product_optionvalue_attribs'=> '{}' ); $poptionvalue = F0FTable::getAnInstance('Productoptionvalue','J2StoreTable')->getClone (); $poptionvalue->bind ( $product_option_value ); $poptionvalue->store (); } $json = array(); $json['success'] = true; echo json_encode ( $json ); $app->close (); } /** * Method to setparent optionvalues */ public function setparentoptionvalues(){ $app = JFactory::getApplication(); $model = $this->getModel('Productoptions'); $view = $this->getThisView(); //get product option id $productoption_id = $app->input->getInt('productoption_id', 0); //set productoption id //to get Item $product_option = F0FModel::getTmpInstance('ProductOption' ,'J2StoreModel')->getItem($productoption_id); $product_optionvalues = $model->getTmpInstance('Productoptionvalues','J2StoreModel') ->productoption_id($productoption_id) ->getList(); $view->set('product_optionvalues' ,$product_optionvalues); $parentopvalues =array(); if(isset($product_option->parent_id) && !empty($product_option->parent_id)) $parentopvalues =$model->getParentOptionValues($product_option->parent_id,$product_option->product_id); $view->addTemplatePath(JPATH_ADMINISTRATOR.'/components/com_j2store/views/product/tmpl/'); $view->set('product_option',$product_option); $view->set('parent_optionvalues',$parentopvalues); $view->set('productoption_id',$productoption_id); $view->set('parent_id',$product_option->parent_id); $view->set('prefix','jform[poption_value]'); $view = $this->display(); } /** * Method to save parentproduct optionvalue * product option type != select || dropdown || radio || checkbox */ public function saveparentproductoptionvalue(){ $app = JFactory::getApplication(); $data = $app->input->getArray($_POST); $url = "index.php?option=com_j2store&view=products&task=setparentoptionvalues&productoption_id=".$data['productoption_id']."&layout=parentproductopvalues&tmpl=component"; $msgType = 'Message'; $msg = JText::_('J2STORE_PRODUCT_PARENT_OPTION_VALUE_SAVED'); $poptionvalue = F0FTable::getAnInstance('Productoptionvalue','J2StoreTable'); $data['parent_optionvalue'] = implode(',',$data['parent_optionvalue']); if(!$poptionvalue->save($data)){ $msg .= $poptionvalue->getError(); $msgType = 'Warning'; } $app->redirect($url,$msg,$msgType); } /** * Method to create product optionvalues */ public function createproductoptionvalue(){ $app = JFactory::getApplication(); $db = JFactory::getDbo(); $data = $app->input->getArray($_POST); if( isset($data['product_optionvalue_attribs'])){ $data['product_optionvalue_attribs'] =$db->escape ($data['product_optionvalue_attribs']); } if(isset($data['parent_optionvalue']) && !empty($data['parent_optionvalue'])){ if(isset($data['parent_optionvalue'])){ $data['parent_optionvalue'] = implode(',',$data['parent_optionvalue']); } } $product_option = F0FTable::getAnInstance('ProductOption','J2StoreTable'); $product_option->load($data['productoption_id']); $poptionvalue = F0FTable::getAnInstance('Productoptionvalue','J2StoreTable'); //$url = "index.php?option=com_j2store&view=products&task=setproductoptionvalues&productoption_id=".$data['productoption_id']."&layout=productoptionvalues&tmpl=component"; $url ="index.php?option=com_j2store&view=products&task=setproductoptionvalues&product_id=".$data['product_id']."&productoption_id=".$data['productoption_id']."&layout=productoptionvalues&tmpl=component"; $msgType ="Message"; $msg = JText::_('J2STORE_PRODUCT_OPTION_SAVED_SUCCESSFULLY'); if(isset( $product_option->is_variant ) && $product_option->is_variant){ $data['product_optionvalue_price'] = 0; } if(!$poptionvalue->save($data)){ $msgType ="Warning"; $msg = $poptionvalue->getError(); } $app->redirect($url,$msg,$msgType); } /** * Method to save all productoptionvalue */ public function saveproductoptionvalue(){ $app = JFactory::getApplication(); $error = false; $data = $app->input->getArray($_POST); $poption_id =$data['productoption_id']; $product_id =$data['product_id']; //$url = "index.php?option=com_j2store&view=products&task=setproductoptionvalues&productoption_id=".$poption_id."&layout=productoptionvalues&tmpl=component"; $url ="index.php?option=com_j2store&view=products&task=setproductoptionvalues&product_id=".$product_id."&productoption_id=".$poption_id."&layout=productoptionvalues&tmpl=component"; $msgType ="Message"; $msg = ''; $product_option = F0FTable::getAnInstance('ProductOption','J2StoreTable'); $product_option->load($poption_id); foreach($data['jform']['poption_value'] as $povalue_item){ $poptionvalue = F0FTable::getAnInstance('Productoptionvalue','J2StoreTable')->getClone (); if(isset($povalue_item['parent_optionvalue'])){ $povalue_item['parent_optionvalue'] = implode(',',$povalue_item['parent_optionvalue']); } if( isset($povalue_item['product_optionvalue_attribs']) && !empty($povalue_item['product_optionvalue_attribs'])){ $povalue_item['product_optionvalue_attribs']=$povalue_item['product_optionvalue_attribs']; } if(isset( $product_option->is_variant ) && $product_option->is_variant){ $povalue_item['product_optionvalue_price'] = 0; } if(!$poptionvalue->save($povalue_item)){ $msg .= $poptionvalue->getError(); $msgType = 'notice'; $error = true; } } if ($error) { $msg = JText::_('J2STORE_ERROR') . " - " . $this->message; } else { $msg = JText::_('J2STORE_PRODUCT_OPTION_SAVED_SUCCESSFULLY'); } $app->redirect($url,$msg,$msgType); } /** * Method to delete product option value */ public function deleteProductOptionvalues(){ $product_id = $this->input->getInt('product_id'); $product = F0FTable::getAnInstance('Product' ,'J2StoreTable'); $product->load($product_id); $productoption_id = $this->input->get('productoption_id'); $cids = $this->input->get('cid', array(), 'array'); $message = JText::_('J2STORE_ITEMS_DELETED'); $msgType="message"; $url = "index.php?option=com_j2store&view=products&task=setproductoptionvalues&product_id=".$product_id."&productoption_id=".$productoption_id."&layout=productoptionvalues&tmpl=component" ; if(isset($cids) && count($cids)){ foreach($cids as $cid){ $poptionvalue = F0FTable::getAnInstance('Productoptionvalue','J2StoreTable'); $poptionvalue->load($cid); try{ $poptionvalue->delete($cid); }Catch(Exception $e){ $message = $e->getMessage(); //throw new Exception($e->getMessage()); if($product->product_type=='variable'){ $message = JText::_('J2STORE_DELETE_VARIANT_OPTION_ERROR_MSG'); } $msgType = 'notice'; } } } JFactory::getApplication()->redirect( $url, $message, $msgType ); } /** * Method to remove product options */ public function removeProductOption(){ $poption_id = $this->input->getInt('pao_id'); $product_type = $this->input->getint('product_type',''); $poptionValue = F0FTable::getInstance('Productoption','J2StoreTable'); $result = array(); $result['success'] = false; try{ if($poptionValue->delete($poption_id)){ $result['success'] = true; } }Catch(Exception $e){ $result['error'] = JText::_('J2STORE_DELETE_PRODUCT_OPTION_ERROR_MSG'); if(isset($product_type) && $product_type=='variable'){ $result['error'] = JText::_('J2STORE_DELETE_VARIANT_OPTION_ERROR_MSG'); } } echo json_encode($result); JFactory::getApplication()->close(); } function setDefault() { $app = JFactory::getApplication(); $cid = $this->input->get('cid', array(), 'array'); $task = $this->input->getString('optiontask'); $pov_id = $cid[0]; $json = array(); $json['success'] =true; $product_id = $app->input->getInt('product_id'); $productoption_id = $app->input->getInt('productoption_id'); if($product_id && $productoption_id && $pov_id) { $db = JFactory::getDbo(); $query = $db->getQuery(true)->update('#__j2store_product_optionvalues')->set('product_optionvalue_default=0') ->where('productoption_id='.$db->q($productoption_id)); $db->setQuery($query)->execute(); $row = F0FTable::getAnInstance('ProductOptionvalue','J2StoreTable'); $row->load($pov_id); if($task == 'unsetDefault') { $row->product_optionvalue_default=0; } else { $row->product_optionvalue_default=1; } if(!$row->store()){ $json['success'] =false; } } echo json_encode($json); $app->close(); } /** * Method to create new product price */ public function createproductprice(){ $data = $this->input->getArray($_POST); $variant_id = $this->input->getInt('variant_id'); $product_id = $this->input->getInt('product_id'); $nullDate = JFactory::getDbo()->getNullDate(); /* $data['date_from'] = (isset($data['date_from']) && $data['date_from']) ? $data['date_from'] : JFactory::getDbo()->getNullDate(); $data['date_to'] = (isset($data['date_to']) && $data['date_to']) ? $data['date_from'] : JFactory::getDbo()->getNullDate(); */ if ( empty( $data['date_from'] ) || $data['date_from']== $nullDate ) { $data['date_from'] = $nullDate; } if ( empty( $data['date_to'] ) || $data['date_to']== $nullDate ) { $data['date_to'] = $nullDate; } $variant = F0FTable::getAnInstance('Variant','J2StoreTable'); $variant->load(array('product_id' => $product_id)); $price = F0FTable::getAnInstance('ProductPrice','J2StoreTable'); $msg =JText::_('J2STORE_PRODUCT_PRICE_SAVED_SUCCESSFULLY'); $msgType = "Message"; $url ="index.php?option=com_j2store&view=products&task=setproductprice&product_id=".$product_id."&variant_id=".$variant_id."&layout=productpricing&tmpl=component"; $data['variant_id'] = $variant_id; if(!$price->save($data)){ $msg =JText::_('J2STORE_PRODUCT_PRICE_ERROR_IN_SAVING_PRICE'); $msgType = "Warning"; } JFactory::getApplication()->redirect($url,$msg,$msgType); } /** * Method to setproductprice layout tmpl */ function setproductprice(){ //get variant id $variant_id = $this->input->getInt('variant_id', 0); $prices = array(); $groups = array(); $model = F0FModel::getTmpInstance('ProductPrices', 'J2StoreModel'); if($variant_id) { $model->setState('variant_id', $variant_id); $prices = $model->getList(); $groups = JHtmlUser::groups(); } $view = $this->getThisView(); $view->setModel($model, true); $view->addTemplatePath(JPATH_ADMINISTRATOR.'/components/com_j2store/views/product/tmpl/'); $view->setLayout('productpricing'); $view->set('variant_id',$variant_id); $view->set('groups',$groups); $view->set('prices',$prices); $view->display(); } /** * Method to save product prices * */ function saveproductprices(){ $variant_id = $this->input->getInt('variant_id', null); if(!$variant_id || empty($variant_id)) return; $items = $this->input->getArray($_POST); $url ="index.php?option=com_j2store&view=products&task=setproductprice&variant_id=".$variant_id."&layout=productpricing&tmpl=component"; $msg =JText::_('J2STORE_PRODUCT_PRICE_SAVED_SUCCESSFULLY'); $msgType="Message"; foreach($items['jform']['prices'] as $item){ $nullDate = JFactory::getDbo( )->getNullDate( ); if ( empty( $item['date_from'] ) || $item['date_from']== $nullDate ) { $item['date_from'] = $nullDate; } if ( empty( $item['date_to'] ) || $item['date_to']== $nullDate ) { $item['date_to'] = $nullDate; } /* $item['date_from'] = (isset($item['date_from']) && $item['date_from']) ? $item['date_from'] : JFactory::getDbo()->getNullDate(); $item['date_to'] = (isset($item['date_to']) && $item['date_to']) ? $item['date_from'] : JFactory::getDbo()->getNullDate(); */ $productprice= F0FTable::getAnInstance('productprice','J2StoreTable'); if($productprice->load($item['j2store_productprice_id'])) { //$productprice->load(1); if(!$productprice->save($item)){ $msg = $productprice->getError(); $msgType="Warning"; } } } JFactory::getApplication()->redirect($url,$msg,$msgType); } /** * Method to get Files */ function getFiles() { $app = JFactory::getApplication(); $model = $this->getModel('Products'); //@TODO get configuration from configuration view $params = J2Store::config(); $savefolder = $params->get('attachmentfolderpath'); jimport('joomla.filesystem.folder'); $html = ''; $path = JPath::clean(JPATH_ROOT.'/'.$savefolder); if(empty($savefolder) || !JFolder::exists($path) ) { $html .= JText::_('J2STORE_ERROR_ATTACHMENT_PATH_OUTSIDE_ROOT'); $html .='<br>'; $html .= JText::sprintf('J2STORE_MSG_WEB_ROOT', JPATH_ROOT); $html .='<br>'; $html .= JText::sprintf('J2STORE_MSG_GIVEN_ATTACHMENT_PATH', $savefolder); $html .='<br>'; echo $html; $app->close(); } $dir = $app->input->getString('dir'); $dir = urldecode($dir); if($dir) { $model->setState('folder', $dir); } //if(file_exists($root . $dir) ) { $files = (array)$model->getFilesData(); $folders = (array)$model->getFolders(); natcasesort($files); natcasesort($folders); J2Store::plugin()->event('GetExternalFiles', array($model,&$files,&$folders)); if( count($files) || count($folders)) { /* The 2 accounts for . and .. */ $html .= "<ul class=\"jqueryFileTree\" style=\"\">"; // All dirs foreach( $folders as $file ) { //if( file_exists($root . $dir . $file) && $file != '.' && $file != '..' && is_dir($root . $dir . $file) ) { $html .= "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($dir . $file) . "/\">" . htmlentities($file) . "</a></li>"; // } } $html .= J2Store::plugin()->eventWithHtml('DisplayExternalFile',array(&$files,$dir)); // All files foreach( $files as $file ) { // if( file_exists($root . $dir . $file) && $file != '.' && $file != '..' && !is_dir($root . $dir . $file) ) { $ext = preg_replace('/^.*\./', '', $file); $html .="<li class=\"file ext_$ext\"><a href=\"#\" rel=\"" . htmlentities($dir . $file) . "\">" . htmlentities($file) . "</a></li>"; // } } $html .= "</ul>"; } else { $html .= JText::_('J2STORE_ERROR_IN_PATH'); } // } echo $html; $app->close(); } /*** * Method to delete files */ function deleteFiles(){ $app = JFactory::getApplication(); $variant_id = $app->input->getInt('variant_id'); $product_id = $app->input->getInt('product_id'); $file_id = $app->input->getInt('productfile_id'); $model = $this->getThisModel('products'); $url ="index.php?option=com_j2store&view=products&task=setproductfiles&variant_id=".$variant_id."&product_id=".$product_id."&layout=productfiles&tmpl=component"; $msg = JText::_('J2STORE_PRODUCT_FILE_DELETED_SUCCESSFULLY'); $msgType = 'message'; if(isset($product_id) && !empty($product_id)){ if(!$model->deleteProductFile($file_id,$product_id)){ $msgType = 'warning'; $msg = JText::_('J2STORE_PRODUCT_FILE_DELETION_ERROR'); } } JFactory::getApplication()->redirect($url,$msg ,$msgType); } /** * Method to generate variants for variable product */ function generateVariants() { $model = $this->getModel('Products', 'J2StoreModel'); $json = $model->generateVariants(); echo json_encode($json); JFactory::getApplication()->close(); } /** * Method to set variant */ function setvariant(){ $app = JFactory::getApplication(); $model = F0FModel::getAnInstance('Variants' ,'J2StoreModel'); $view = $this->getThisView(); $variant_id = $app->input->getInt('variant_id'); $item = $model->getItem($variant_id); $product_id = $item->product_id; $product_item = F0FModel::getAnInstance('Products', 'J2StoreModel')->getItem($product_id); $view = $this->getThisView(); $view->set('item',$item); $view->addTemplatePath(JPATH_ADMINISTRATOR.'/components/com_j2store/views/product/tmpl/'); $view->set('product_item',$product_item); $view->set('form_prefix' , 'jform[j2store][attribs]'); $view = $this->display(); } /** * Method to save variant */ function savevariant(){ $variant_id = $this->input->getInt('variant_id', 0); if($variant_id) { $data = $this->input->getArray($_POST); $item = $data['jform']['j2store']['attribs']; $quantity_item = $data['jform']['j2store']['attribs']['quantity']; $quantity_item['variant_id'] = $variant_id; $variant = F0FTable::getAnInstance('Variant','J2StoreTable'); $variant->load($variant_id); $quantity = F0FTable::getAnInstance('Productquantity','J2StoreTable'); $msgType="Message"; if($variant->save($item)){ if(!$quantity->save($quantity_item)){ $msg = $variant->getError(); $msgType="Warning"; } } $url = "index.php?option=com_j2store&view=products&task=setvariant&variant_id=".$variant_id."&layout=variant_form&tmpl=component"; $msg = JText::_('J2STORE_PRODUCT_SAVE_SUCCESS'); }else { $msg = JText::_('J2STORE_PRODUCT_SAVE_FAILED'); $url = "index.php?option=com_j2store&view=products"; } JFactory::getApplication()->redirect($url,$msg ,$msgType); } function deletevariant(){ $variant_id = $this->input->getInt('variant_id'); $variant = F0FTable::getAnInstance('Variant','J2StoreTable'); $success = true; if($variant->load($variant_id)){ if(!$variant->delete($variant_id)){ $success= false; } } echo json_encode($success); JFactory::getApplication()->close(); } /** * Method to regenerate variants */ function regenerateVariants() { $json = array (); $product_id = $this->input->getInt ( 'product_id', 0); if ($product_id) { $product = F0FTable::getAnInstance ( 'Product', 'J2StoreTable' ); if($product->load ( $product_id )) { $variants = F0FModel::getTmpInstance ( 'Variants', 'J2StoreModel' )->product_id ( $product_id )->is_master ( 0 )->getList (); // first delete all variants. foreach ( $variants as $variant ) { F0FTable::getAnInstance ( 'Variant', 'J2StoreTable' )->delete ( $variant->j2store_variant_id ); } $model = $this->getModel ( 'Products', 'J2StoreModel' ); $model->generateVariants (); $json ['success'] = true; }else { $json['success'] = false; } } echo json_encode ( $json ); JFactory::getApplication ()->close (); } /** * Method to delete all variants */ function deleteAllVariants() { $product_id = $this->input->getInt ( 'product_id', 0 ); if ($product_id) { $product = F0FTable::getAnInstance ( 'Product', 'J2StoreTable' ); if($product->load ( $product_id )) { $variants = F0FModel::getTmpInstance ( 'Variants', 'J2StoreModel' )->product_id ( $product_id )->is_master ( 0 )->getList (); $json = array (); $json ['success'] = true; $variantTable = F0FTable::getAnInstance ( 'Variant', 'J2StoreTable' ); foreach ( $variants as $variant ) { try { $variantTable->delete ( $variant->j2store_variant_id ); } catch ( Exception $e ) { echo $e->getMessage (); } } } } echo json_encode ( $json ); JFactory::getApplication ()->close (); } /** * Method to remove product price */ function removeproductprice() { $variant_id = $this->input->getInt ( 'variant_id' ); $price_id = $this->input->getInt ( 'price_id' ); $cids = $this->input->get ( 'cid', array (), 'array' ); $price = F0FTable::getAnInstance ( 'Productprice', 'J2StoreTable' ); $msg = JText::_ ( 'J2STORE_PRODUCT_PRICE_DELETED_SUCCESSFULLY' ); $msgType = "Message"; $url = "index.php?option=com_j2store&view=products&task=setproductprice&variant_id=" . $variant_id . "&layout=productpricing&tmpl=component"; foreach ( $cids as $cid ) { if (! $price->delete ( $cid )) { $msg = JText::_ ( 'J2STORE_PRODUCT_PRICE_DELETE_ERROR' ); $msgType = "Warning"; } } JFactory::getApplication ()->redirect ( $url, $msg, $msgType ); } /** * Method to set Default variant to the variant type products */ function setDefaultVariant() { $app = JFactory::getApplication(); $vid = $this->input->getInt('v_id'); $product_id = $this->input->getint('product_id'); $status = $app->input->getString('status'); $json =array(); $json['success']=false; if($vid && $product_id) { $db = JFactory::getDbo(); $query = $db->getQuery(true); // Fields to update. $fields = array($db->qn('isdefault_variant'). ' = 0'); // Conditions for which records should be updated. $conditions = array( $db->qn('product_id') . ' ='.$db->q($product_id), ); $query->update($db->quoteName('#__j2store_variants'))->set($fields)->where($conditions); $db->setQuery($query); $db->query(); $row = F0FTable::getAnInstance('Variant' ,'J2StoreTable' ); $variant = F0FTable::getAnInstance('Variant' ,'J2StoreTable' ); $variant->load($vid); if($status == 'unsetDefault') { $variant->isdefault_variant=0; } else { $variant->isdefault_variant=1; } if($row->save($variant)){ $json['success']=true; } } echo json_encode($json); $app->close(); } public function setproductfiles(){ //get variant id $variant_id = $this->input->getInt('variant_id'); $product_id =$this->input->getInt('product_id'); $model = $this->getModel('Products' ,'J2StoreModel'); $view = $this->getThisView(); if($product_id){ $productFiles = F0FModel::getTmpInstance('ProductFiles','J2StoreModel')->product_id($product_id)->getList(); } $view->setModel($model, true); $view->addTemplatePath(JPATH_ADMINISTRATOR.'/components/com_j2store/views/product/tmpl/'); $app = JFactory::getApplication(); $view->addTemplatePath(JPATH_ADMINISTRATOR.'/templates/'.$app->getTemplate().'/html/com_j2store/product/'); $view->setLayout('productfiles'); $view->set('product_id',$product_id); $view->set('productfiles',$productFiles); $view = $this->display(); } /** * Method to created Product files * based on the Product id */ public function createproductfile(){ $data = $this->input->getArray($_POST); $product_id = $this->input->getInt('product_id'); $product_file = F0FTable::getAnInstance('ProductFile','J2StoreTable'); $msg =JText::_('J2STORE_PRODUCT_FILE_SAVED_SUCCESSFULLY'); $msgType = "Message"; $url ="index.php?option=com_j2store&view=products&task=setproductfiles&product_id=".$product_id."&layout=productfiles&tmpl=component"; if($product_id){ $data['product_id'] = $product_id; if(!$product_file->save($data)){ $msg =$product_file->getError(); $msgType = "Warning"; } }else{ $msgType = "Warning"; $msg =JText::_('J2STORE_PRODUCT_FILE_ERROR_IN_SAVING_FILE'); } JFactory::getApplication()->redirect($url,$msg,$msgType); } /** * Method to save Product files */ public function saveproductfiles(){ $data = $this->input->getArray($_POST); $app = JFactory::getApplication(); $product_id = $this->input->getInt('product_id'); $product_files = $data['product_files']; $productfile = F0FTable::getAnInstance('ProductFile','J2StoreTable'); $url ="index.php?option=com_j2store&view=products&task=setproductfiles&product_id=".$product_id."&layout=productfiles&tmpl=component"; $msg = JText::_('J2STORE_PRODUCT_FILE_SAVED_SUCCESSFULLY'); $msgType = 'message'; foreach($product_files as $file){ $file['product_id'] = (isset($file['product_id'] ) && $file['product_id']) ? $file['product_id'] : $product_id; if(!$productfile->save($file)){ $msgType = 'warning'; $msg = $productfile->getError(); } } JFactory::getApplication()->redirect($url,$msg ,$msgType); } function setProducts(){ //get variant id $model = F0FModel::getTmpInstance('Products', 'J2StoreModel'); $filter_category = $this->input->getInt('filter_category'); $limit = $this->input->getInt('limit',0); $limitstart = $this->input->getInt('limitstart',0); $model->setState('filter_category',$filter_category); $model->setState('limit',$limit); $model->setState('limitstart',$limitstart); $model->setState('enabled',1); $model->setState('visible', 1); $items = $model->getProductList(); $catarray = array(); foreach($items as $item){ $product = J2Product::getInstance() ->setId($item->j2store_product_id) ->getProduct(); $item->product_name = $product->product_name; $item->catid = $product->source->catid; } $testproduct = array(); foreach($items as $product){ if(empty($filter_category)){ $testproduct[]= $product; }elseif(isset($filter_category) && !empty($filter_category) && $filter_category == $product->catid){ $testproduct[]= $product; } } $categories = JHtmlCategory::options('com_content'); $layout = $this->input->getString('layout'); $view = $this->getThisView(); $view->setModel($model, true); $view->set('state',$model->getState()); $view->set('pagination',$model->getPagiantion()); $view->set('total',$model->getTotal()); $view->set('productitems',$testproduct); $view->set('categories',$categories); $view->setLayout('elements'); $view->display(); } function update() { //first clear cache J2Store::utilities()->nocache(); $model = $this->getThisModel(); $model->getName(); $json = $model->updateProduct(); if($json === false) { $json = array(); $json['errormsg'] = implode('/n', $model->getErrors()); $json['error'] = 1; } echo json_encode($json); JFactory::getApplication()->close(); } /* * product files * */ function setfiles() { $app = JFactory::getApplication(); $model = $this->getModel('Productfiles'); //$context = 'com_j2store.productfiles'; /* $filter_order = $app->getUserStateFromRequest( $context.'filter_order', 'filter_order', 'a.ordering', 'cmd' ); $filter_order_Dir = $app->getUserStateFromRequest( $context.'filter_order_Dir', 'filter_order_Dir', '', 'word' ); */ // table ordering /* $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; */ $total = $model->getTotal(); $pagination = $model->getPagination(); //$id = JRequest::getVar('id', 0, 'get', 'int'); $id = $app->input->getInt('id'); //set states $model->setState('product.id',$id); // get items from the table $items = $model->getItems(); $row = J2StoreItem::getArticle($id); $files = $model->getFiles(); $error = $model->getError(); $view = $this->getView( 'productfiles', 'html' ); $view->set( '_controller', 'products' ); $view->set( '_view', 'products' ); $view->set( '_action', "index.php?option=com_j2store&view=products&task=setfiles&tmpl=component&id=".$id); $view->setModel( $model, true ); $view->assign( 'state', $model->getState() ); $view->assign( 'row', $row ); $view->assign( 'items', $items ); $view->assign( 'files', $files ); $view->assign( 'error', $error); $view->assign( 'total', $total); $view->assign( 'pagination', $pagination); $view->assign( 'product_id', $id ); //$view->assign( 'product_id', $id ); $view->setLayout( 'default' ); $view->display(); } function setpaimport() { $app = JFactory::getApplication (); $model = $this->getThisModel (); $view = $this->getThisView (); $view->setModel ( $model, true ); $product_id = $app->input->getInt ( 'product_id', 0 ); if ($product_id) { $product_type = $app->input->getString ( 'product_type', 'simple' ); $filter_sku = $app->input->getString ( 'filter_sku', '' ); $filter_id = $app->input->getString ( 'filter_pid', '' ); $search_term = ''; $product_list = array (); $db = JFactory::getDbo (); $query = $db->getQuery ( true )->select ( 'pa.product_id' )->from ( '#__j2store_product_options AS pa' ) ->where ( 'pa.product_id !=' . $db->q ( $product_id ) ) ->group ( 'pa.product_id' ) ->join ( 'LEFT', '#__j2store_products AS p ON pa.product_id=p.j2store_product_id' ) ->join ( 'LEFT', '#__j2store_variants AS v ON v.product_id=p.j2store_product_id' ) ->where ( 'p.product_type = ' . $db->q ( $product_type ) ); $search_term = ( !empty($filter_sku) ) ? 'v.sku LIKE ' . $db->q ( '%'. $filter_sku .'%') : ''; if ( !empty($filter_id) ) { $search_term .= ( !empty($search_term) ) ? ' OR ' : ''; $search_term .= 'p.j2store_product_id=' .$filter_id ; } if (!empty($search_term)) { $query->where( $search_term ) ; } $db->setQuery ( $query ); try { $product_list = $db->loadObjectList (); } catch ( Exception $e ) { $error = $e->getMessage (); } $products = array (); foreach ( $product_list as $item ) { // run the getItem again unset ( $product ); $product = F0FModel::getTmpInstance ( 'Products', 'J2StoreModel' )->runMyBehaviorFlag ( true )->getItem ( $item->product_id ); $products [] = $product; } if ( empty($filter_id) && empty($filter_sku) ) { $products = array (); } $view->assign ( 'model', $model ); $view->assign ( 'state', $model->getState () ); $view->assign ( 'products', $products ); $row = F0FModel::getTmpInstance ( 'Products', 'J2StoreModel' )->getItem ( $product_id ); $view->assign ( 'row', $row ); $view->assign ( 'productHelper', J2Store::product () ); $view->assign ( 'currency', J2Store::currency () ); $view->assign ( 'product_id', $product_id ); } $view->setLayout ( 'paimport' ); $view->display (); } function importattributes(){ $app = JFactory::getApplication(); $error = false; $this->messagetype = ''; $this->message = ''; $cids = $app->input->get('cid', array(), 'array'); $product_id = $app->input->getInt('product_id', 0); $model = $this->getThisModel(); $product_helper = J2Store::product(); $row = $product_helper->setId($product_id)->getProduct(); // $row = $model->getItem($product_id); // $row= $model->getProduct($row); if(empty($cids) || count($cids) < 1) { $error = true; $this->message .= JText::_('J2STORE_PAI_SELECT_PRODUCT_TO_IMPORT'); $this->messagetype = 'notice'; } else { //get the model $poption_model = $this->getModel('ProductOptions','J2StoreModel'); foreach($cids as $cid) { if(!$poption_model->importAttributeFromProduct($row,$cid, $product_id)){ $this->message .= $model->getError(); $this->messagetype = 'error'; } } } if ($error) { $this->message = JText::_('J2STORE_ERROR') . " - " . $this->message; } else { $this->message = JText::_('J2STORE_PAI_SELECT_ATTRIBUTES_IMPORTED'); $this->messageType = 'message'; } $redirect = "index.php?option=com_j2store&view=products&task=setpaimport&product_type={$row->product_type}&product_id={$product_id}&tmpl=component"; $redirect = JRoute::_( $redirect, false ); $this->setRedirect( $redirect, $this->message, $this->messagetype ); } function searchproductfilters() { $app = JFactory::getApplication(); $q = $this->input->post->getString('q'); $json = array(); $result = F0FTable::getAnInstance('ProductFilter', 'J2StoreTable')->searchFilters($q); echo json_encode($result); $app->close(); } function deleteproductfilter() { $app = JFactory::getApplication(); $filter_id = $this->input->post->get('filter_id'); $product_id = $this->input->post->get('product_id'); $json = array(); $result = F0FTable::getAnInstance('ProductFilter', 'J2StoreTable')->deleteFilter($filter_id, $product_id); if($result) { $msg = JText::_('J2STORE_PRODUCT_FILTER_DELETE_SUCCESSFUL'); }else { $msg = JText::_('J2STORE_PRODUCT_FILTER_DELETE_ERROR'); } echo json_encode ( array ( 'success' => $result, 'msg' => $msg ) ); $app->close(); } public function getSFFilterStates() { $app = JFactory::getApplication(); $state = array(); $state['search'] = $app->input->getString('search',''); $state['product_type']= $app->input->getString('product_type',''); $state['visible'] = $app->input->getString('visible',null); $state['vendor_id'] = $app->input->getInt('vendor_id',''); $state['manufacturer_id'] = $app->input->getString('manufacturer_id',''); $state['productid_from']= $app->input->getString('productid_from',''); $state['productid_to']= $app->input->getString('productid_to',''); $state['pricefrom']= $app->input->getString('pricefrom',''); $state['priceto']= $app->input->getString('priceto',''); $state['since']= $app->input->getString('since',''); $state['until']= $app->input->getString('until',''); $state['taxprofile_id']= $app->input->getString('taxprofile_id',''); $state['shippingmethod']=$app->input->getString('shippingmethod',''); $state['filter_order']= $app->input->getString('filter_order','j2store_product_id'); $state['filter_order_Dir']= $app->input->getString('filter_order_Dir','ASC'); $state['sku']= $app->input->getString('sku',''); $state['sortby']= $app->input->getString('sortby',''); $state['productfilter_id']= $app->input->getString('productfilter_id',''); return $state; } /** * Method to list of variants * based on the ajax request */ public function getVariantListAjax(){ $app = JFactory::getApplication(); $params = J2Store::config(); $json = array(); $product_id = $app->input->get('product_id'); $global_config = JFactory::getConfig(); $limit = $global_config->get('list_limit',20); $form_prefix = $app->input->getString('form_prefix','jform[attribs][j2store]'); if(!empty($product_id)){ $limitstart = $app->input->get('limitstart'); $model = $this->getThisModel(); $model->setId($product_id); $item = $model->runMyBehaviorFlag(true)->getItem(); $variantModel = F0FModel::getTmpInstance('Variants', 'J2StoreModel'); $variantModel->setState('product_type', $item->product_type); $variant_list = $variantModel->product_id($product_id)->limit($limit)->limitstart($limitstart)->is_master(0)->getList(); $variant_pagination = $variantModel->getPagination(); $lengths =$variantModel->getDimesions('lengths', 'j2store_length_id','length_title'); $weights = $variantModel->getDimesions('weights', 'j2store_weight_id','weight_title'); $controller = F0FController::getTmpInstance ( 'com_j2store', 'Products' ); $view = $controller->getView ( 'Product', 'Html', 'J2StoreView' ); if ($model = $controller->getModel ( 'Products', 'J2StoreModel' )) { // Push the model into the view (as default) $view->setModel ( $model, true ); } $view->assign('reinitialize', 1 ); $view->assign('product', $item ); $view->assign('weights', $weights); $view->assign('lengths', $lengths); $view->assign('variant_list' , $variant_list); $view->assign( 'params', $params ); $view->assign('form_prefix',$form_prefix); $view->assign('variant_pagination',$variant_pagination); $view->setLayout('form_ajax_avoptions'); ob_start (); $view->display ( ); $html = ob_get_contents (); ob_end_clean (); $json['html'] = $html; } echo json_encode($json); $app->close(); } /** * display admin product popup * */ function displayAdminProduct(){ $app = JFactory::getApplication(); $data = $app->input->getArray($_POST); $document = JFactory::getDocument(); $product = F0FTable::getInstance('Product' ,'J2StoreTable')->getClone();; if(isset($data['product_id']) && $data['product_id'] && $product->get_product_by_id($data['product_id'])){ $model = F0FModel::getTmpInstance('Products', 'J2StoreModel'); $model->setId($data['product_id']); $product_data = $model->getItem(); $html = ''; if(isset($product_data->product_name)){ $html = "<h3>".$product_data->product_name."</h3>"; } $style = ''; $params = J2Store::config (); if(!$params->get('catalog_mode',0)){ $style .= "#add-to-cart-{$product->j2store_product_id} { display: block !important; }"; $style .= ".j2store_add_to_cart_button { display: block !important; }"; } //show_price_field if($params->get('show_price_field',0)){ $style .= ".product-{$product->j2store_product_id} .product-price-container { display: block !important; }"; } if(!empty($style)) { $document->addStyleDeclaration($style); } $html .= $product->get_product_html(); $html .= '<input type="hidden" name="user_id" id="user_id" value="'.$data['user_id'].'"/>'; $html .= '<input type="hidden" name="oid" id="oid" value="'.$data['oid'].'"/>'; $html .= '<input type="hidden" name="product_id" id="product_id" value="'.$data['product_id'].'"/>'; echo $html; $headData = $document->getHeadData(); $scripts = $headData['scripts']; unset($scripts['/j2store/j2store_v3/develop/j3_point2/media/j2store/js/j2store.js']); $headData['scripts'] = $scripts; $document->setHeadData($headData); $document->addScript(JUri::root(true).'/media/j2store/js/j2store_admin.js'); } } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings