Файловый менеджер - Редактировать - /home/lmsyaran/public_html/j3/plugins/hikashop/massaction_order/massaction_order.php
Назад
<?php /** * @package HikaShop for Joomla! * @version 4.4.1 * @author hikashop.com * @copyright (C) 2010-2021 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?><?php class plgHikashopMassaction_order extends JPlugin { var $message = ''; function __construct(&$subject, $config){ parent::__construct($subject, $config); $this->massaction = hikashop_get('class.massaction'); $this->massaction->datecolumns = array( 'order_created', 'order_modified', 'order_invoice_created' ); $this->order = hikashop_get('class.order'); $this->db = JFactory::getDBO(); } function onMassactionTableLoad(&$externalValues){ $obj = new stdClass(); $obj->table ='order'; $obj->value ='order'; $obj->text =JText::_('HIKASHOP_ORDER'); $externalValues[] = $obj; } function onMassactionTableTriggersLoad(&$table, &$triggers, &$triggers_html, &$loadedData) { if($table->table != 'order') return true; $triggers['onBeforeOrderCreate']=JText::_('BEFORE_AN_ORDER_IS_CREATED'); $triggers['onBeforeOrderUpdate']=JText::_('BEFORE_AN_ORDER_IS_UPDATED'); $triggers['onBeforeOrderDelete']=JText::_('BEFORE_AN_ORDER_IS_DELETED'); $triggers['onAfterOrderCreate']=JText::_('AFTER_AN_ORDER_IS_CREATED'); $triggers['onAfterOrderUpdate']=JText::_('AFTER_AN_ORDER_IS_UPDATED'); $triggers['onAfterOrderDelete']=JText::_('AFTER_AN_ORDER_IS_DELETED'); } function onMassactionTableFiltersLoad(&$table,&$filters,&$filters_html,&$loadedData){ if($table->table != 'order') return true; $type = 'filter'; $tables = array('order','order_product','address','user'); $filters['orderStatus']=JText::_('ORDER_STATUS'); $loadedData->massaction_filters['__num__'] = new stdClass(); $loadedData->massaction_filters['__num__']->type = 'order'; $loadedData->massaction_filters['__num__']->data = array(); $loadedData->massaction_filters['__num__']->name = 'orderStatus'; $loadedData->massaction_filters['__num__']->html = ''; $this->db->setQuery('SELECT `orderstatus_namekey` FROM '.hikashop_table('orderstatus')); $orderStatuses = $this->db->loadColumn(); foreach($loadedData->massaction_filters as $key => &$value) { if(!isset($value->data['type'])) $value->data['type'] = 'all'; if($value->name != 'orderStatus' || ($table->table != $loadedData->massaction_table && is_int($key))) continue; $value->type = 'order'; $output = '<select class="custom-select chzn-done not-processed" name="filter['.$table->table.']['.$key.'][orderStatus][type]" onchange="countresults(\''.$table->table.'\','.$key.')">'; if(is_array($orderStatuses)){ foreach($orderStatuses as $orderStatus){ $selected = ''; if($orderStatus == $value->data['type']) $selected = 'selected="selected"'; $output .= '<option value="'.$orderStatus.'" '.$selected.'>'.hikashop_orderStatus($orderStatus).'</option>'; } } $output .= '</select>'; $filters_html[$value->name] = $this->massaction->initDefaultDiv($value, $key, $type, $table->table, $loadedData, $output); } $filters['totalPurchase']=JText::_('USER_TOTAL_PURCHASE'); $loadedData->massaction_filters['__num__'] = new stdClass(); $loadedData->massaction_filters['__num__']->type = 'order'; $loadedData->massaction_filters['__num__']->data = array(); $loadedData->massaction_filters['__num__']->name = 'totalPurchase'; $loadedData->massaction_filters['__num__']->html = ''; $totalTypes = array('orderQty' => 'ORDER_TOTAL_QUANTITY', 'orderAmount' => 'ORDER_TOTAL_AMOUNT', 'productTotal' => 'PRODUCT_TOTAL_QUANTITY'); foreach($loadedData->massaction_filters as $key => &$value) { if(!isset($value->data['type'])) $value->data['type'] = 'orderQty'; if(!isset($value->data['operator'])) $value->data['operator'] = '='; if(!isset($value->data['value'])) $value->data['value'] = ''; if($value->name != 'totalPurchase' || ($table->table != $loadedData->massaction_table && is_int($key))) continue; $value->type = 'order'; $output = '<select class="custom-select chzn-done not-processed" name="filter['.$table->table.']['.$key.'][totalPurchase][type]" onchange="countresults(\''.$table->table.'\','.$key.')">'; if(is_array($totalTypes)){ foreach($totalTypes as $selectKey => $selectValue){ $selected = ''; if($selectKey == $value->data['type']) $selected = 'selected="selected"'; $output .= '<option value="'.$selectKey.'" '.$selected.'>'.JText::_($selectValue).'</option>'; } } $output .= '</select>'; $cOperators = array('=','!=','>','<','>=','<='); $output .= '<select class="custom-select chzn-done not-processed" name="filter['.$table->table.']['.$key.'][totalPurchase][operator]" onchange="countresults(\''.$table->table.'\',\''.$key.'\')">'; foreach($cOperators as $cOperator){ $selected = ''; if($cOperator == $value->data['operator']) $selected = 'selected="selected"'; $output .= '<option value="'.$cOperator.'" '.$selected.'>'.JText::_($cOperator).'</option>'; } $output .= '</select>'; $output .= ' <input class="inputbox" type="text" name="filter['.$table->table.']['.$key.'][totalPurchase][value]" size="50" value="'.$value->data['value'].'" onchange="countresults(\''.$table->table.'\',\''.$key.'\')" />'; $filters_html[$value->name] = $this->massaction->initDefaultDiv($value, $key, $type, $table->table, $loadedData, $output); } } function onProcessOrderMassFilterlimit(&$elements, &$query,$filter,$num){ $query->start = (int)$filter['start']; $query->value = (int)$filter['value']; } function onProcessOrderMassFilterordering(&$elements, &$query,$filter,$num){ if(!empty($filter['value'])){ if(isset($query->ordering['default'])) unset($query->ordering['default']); $query->ordering[] = $filter['value']; } } function onProcessOrderMassFilterdirection(&$elements, &$query,$filter,$num){ if(empty($query->ordering)) $query->ordering['default'] = 'order_id'; $query->direction = $filter['value']; } function onProcessOrderMassFilterorderColumn(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); if(count($elements)){ foreach($elements as $k => $element){ $in = $this->massaction->checkInElement($element, $filter); if(!$in) unset($elements[$k]); } }else{ $db = JFactory::getDBO(); if(!empty($filter['value']) || (empty($filter['value']) && in_array($filter['operator'],array('IS NULL','IS NOT NULL')))){ if($filter['type'] == 'order_currency_id' && !is_int($filter['value'])){ $nquery = 'SELECT currency_id FROM '.hikashop_table('currency').' WHERE currency_symbol = '.$db->quote($filter['value']).' OR currency_code = '.$db->quote($filter['value']).' OR currency_name = '.$db->quote($filter['value']); $db->setQuery($nquery); $result = $db->loadResult(); $query->where[] = 'hk_order.'.$filter['type'].' = '.(int)$result; }else{ $query->where[] = $this->massaction->getRequest($filter,'hk_order'); } } } } function onCountOrderMassFilterorderColumn(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilterorderColumn($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFilterorderStatus(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(count($elements)){ foreach($elements as $k => $element){ if($element->order_status != $filter['type']) unset($elements[$k]); } }else{ $db = JFactory::getDBO(); $query->where[] = 'hk_order.order_status = '.$db->quote($filter['type']); } } function onCountOrderMassFilterorderStatus(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilterorderStatus($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFilterorder_productColumn(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); if(count($elements)){ foreach($elements as $k => $element){ $orderClass = hikashop_get('class.order'); $orderClass->loadProducts($element); if(empty($element->products)){unset($elements[$k]); continue;} $del = true; foreach($element->products as $product){ $in = $this->massaction->checkInElement($product, $filter); if($in){$del = false;} } if($del){ unset($elements[$k]); } else{ unset($elements[$k]->products); unset($elements[$k]->additional); } } }else{ $db = JFactory::getDBO(); if(!empty($filter['value']) || (empty($filter['value']) && in_array($filter['operator'],array('IS NULL','IS NOT NULL')))){ $query->leftjoin['order_product'] = hikashop_table('order_product').' as hk_order_product ON hk_order_product.order_id = hk_order.order_id'; $query->where[] = $this->massaction->getRequest($filter,'hk_order_product'); if(strpos($query->select, 'distinct(hk_order.order_id)') === false) $query->select = 'distinct(hk_order.order_id), ' . $query->select; } } } function onCountOrderMassFilterorder_productColumn(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilterorder_productColumn($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFilteruserColumn(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); if(count($elements)){ foreach($elements as $k => $element){ $userClass = hikashop_get('class.user'); $result = $userClass->get($element->order_user_id); $filter['type'] = str_replace('hk_user.','',$filter['type']); $filter['type'] = str_replace('joomla_user.','',$filter['type']); $in = $this->massaction->checkInElement($result, $filter); if(!$in) unset($elements[$k]); } }else{ $db = JFactory::getDBO(); if(!empty($filter['value']) || (empty($filter['value']) && in_array($filter['operator'],array('IS NULL','IS NOT NULL')))){ $query->leftjoin['user'] = hikashop_table('user').' as hk_user ON hk_order.order_user_id = hk_user.user_id'; $query->leftjoin['joomla_user'] = hikashop_table('users',false).' as joomla_user ON joomla_user.id = hk_user.user_cms_id'; $query->where[] = $this->massaction->getRequest($filter); } } } function onCountOrderMassFilteruserColumn(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilteruserColumn($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFilteraddressColumn(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); $db = JFactory::getDBO(); if(count($elements)){ foreach($elements as $k => $element){ if($filter['address'] == 'both'){ $where = 'address_id = '.(int)$element->order_billing_address_id.' OR address_id = '.(int)$element->order_shipping_address_id;} elseif($filter['address'] == 'bill'){ $where = 'address_id = '.(int)$element->order_billing_address_id;} elseif($filter['address'] == 'ship'){ $where = 'address_id = '.(int)$element->order_shipping_address_id;} $db->setQuery('SELECT * FROM '.hikashop_table('address').' WHERE '.$where.' GROUP BY address_id'); $results = $db->loadObjectList(); $del = true; foreach($results as $result){ $in = $this->massaction->checkInElement($result, $filter); if($in) $del = false; } if($del) unset($elements[$k]); } }else{ if(!empty($filter['value']) || (empty($filter['value']) && in_array($filter['operator'],array('IS NULL','IS NOT NULL')))){ if($filter['address'] == 'both'){ $query->leftjoin[] = hikashop_table('address'). ' as hk_address ON hk_address.address_id = hk_order.order_billing_address_id OR hk_address.address_id = hk_order.order_shipping_address_id'; }else if($filter['address'] == 'ship'){ $query->leftjoin[] = hikashop_table('address'). ' as hk_address ON hk_address.address_id = hk_order.order_shipping_address_id'; }else if($filter['address'] == 'bill'){ $query->leftjoin[] = hikashop_table('address'). ' as hk_address ON hk_address.address_id = hk_order.order_billing_address_id'; } $query->where[] = $this->massaction->getRequest($filter,'hk_address'); } } } function onCountOrderMassFilteraddressColumn(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilteraddressColumn($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFilteraccessLevel(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(count($elements)){ $user_ids = array(); foreach($elements as $k => $element){ $user_ids[$element->order_user_id] = (int)$element->order_user_id; } if(count($user_ids)) { $db = JFactory::getDBO(); $db->setQuery('SELECT user_id, user_cms_id FROM '.hikashop_table('user').' WHERE user_id IN ('.implode(',', $user_ids).')'); $users = $db->loadObjectList('user_id'); $cms_ids = array(); foreach($users as $u){ $cms_ids[$u->user_cms_id] = (int)$u->user_cms_id; } $groups = array(); if(count($cms_ids)) { $db->setQuery('SELECT user_id FROM '.hikashop_table('user_usergroup_map',false).' WHERE user_id IN ('.implode(',', $cms_ids).') AND group_id = '.(int)$filter['group']); $groups = $db->loadObjectList('user_id'); } foreach($elements as $k => $element){ if($filter['type'] == 'IN' && (!isset($users[$element->order_user_id]) || !isset($groups[$users[$element->order_user_id]->user_cms_id]))) unset($elements[$k]); elseif($filter['type'] == 'NOT IN' && isset($users[$element->order_user_id]) && isset($groups[$users[$element->order_user_id]->user_cms_id])) unset($elements[$k]); } } }else{ $db = JFactory::getDBO(); $db->setQuery('SELECT user_id FROM '.hikashop_table('user_usergroup_map',false).' WHERE group_id = '.(int)$filter['group']); $users = $db->loadColumn(); if(!empty($users)){ $query->leftjoin['user'] = hikashop_table('user').' as hk_user ON hk_order.order_user_id = hk_user.user_id'; $query->where[] = 'hk_user.user_cms_id'.' '.$filter['type'].' ('.implode(',',$users).')'; } } } function onCountOrderMassFilteraccessLevel(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFilteraccessLevel($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassFiltertotalPurchase(&$elements,&$query,$filter,$num){ if(empty($filter['type']) || $filter['type']=='all') return; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); if(count($elements)){ foreach($elements as $k => $element){ if($filter['type'] == 'orderAmount'){ $filter['type'] = 'order_full_price'; $result = $element; }else{ $userClass = hikashop_get('class.user'); $result = $userClass->get($element->order_user_id); $filter['type'] = str_replace('hk_user.','',$filter['type']); $filter['type'] = str_replace('joomla_user.','',$filter['type']); } $in = $this->massaction->checkInElement($result, $filter); if(!$in) unset($elements[$k]); } }else{ $db = JFactory::getDBO(); if(!empty($filter['value']) || (empty($filter['value']) && in_array($filter['operator'],array('IS NULL','IS NOT NULL')))){ $query->leftjoin['user'] = hikashop_table('user').' as hk_user ON hk_order.order_user_id = hk_user.user_id'; $query->leftjoin['joomla_user'] = hikashop_table('users',false).' as joomla_user ON joomla_user.id = hk_user.user_cms_id'; if($filter['type'] == 'orderAmount'){ $cQuery = 'SELECT order_user_id FROM '.hikashop_table('order').' WHERE 1 GROUP BY order_user_id HAVING sum(order_full_price) '.$filter['operator'].' '.$filter['value']; }elseif($filter['type'] == 'productTotal'){ $cQuery = 'SELECT a.order_user_id FROM '.hikashop_table('order').' AS a LEFT JOIN '.hikashop_table('order_product').' AS b ON a.order_id = b.order_id WHERE 1 GROUP BY a.order_user_id HAVING sum(b.order_product_quantity) '.$filter['operator'].' '.$filter['value']; }else{ $cQuery = 'SELECT order_user_id FROM '.hikashop_table('order').' WHERE 1 GROUP BY order_user_id HAVING count(order_id) '.$filter['operator'].' '.$filter['value']; } $db->setQuery($cQuery); $userList = $db->loadColumn(); if(!empty($userList)) $query->where[] = 'hk_user.user_id IN ('.implode(',',$userList).')'; else $query->where[] = 'hk_user.user_id = 0'; $query->group = 'hk_order.order_user_id'; } } } function onCountOrderMassFiltertotalPurchase(&$query,$filter,$num){ $elements = array(); $this->onProcessOrderMassFiltertotalPurchase($elements,$query,$filter,$num); return JText::sprintf('SELECTED_PRODUCTS',$query->count('hk_order.order_id')); } function onProcessOrderMassActiondisplayResults(&$elements,&$action,$k){ $params = $this->massaction->_displayResults('order',$elements,$action,$k); $params->action_id = $k; $js = ''; $app = JFactory::getApplication(); if(hikashop_isClient('administrator') && hikaInput::get()->getVar('ctrl','massaction') == 'massaction'){ echo hikashop_getLayout('massaction','results',$params,$js); } } function onProcessOrderMassActionexportCsv(&$elements,&$action,$k){ $formatExport = $action['formatExport']['format']; $email = $action['formatExport']['email']; $path = $action['formatExport']['path']; $oneProductPerRow = @$action['formatExport']['oneProductPerRow']; if(!empty($path)){ $url = $this->massaction->setExportPaths($path); }else{ $url = array('server'=>'','web'=>''); ob_get_clean(); } $app = JFactory::getApplication(); if(hikashop_isClient('administrator') || (!hikashop_isClient('administrator') && !empty($path))){ $params = new stdClass(); $params->action['order']['order_id'] = 'order_id'; unset($action['formatExport']); $params = $this->massaction->_displayResults('order',$elements,$action,$k); $params->formatExport = $formatExport; $params->path = $url['server']; $params->oneProductPerRow = $oneProductPerRow; $params = $this->massaction->sortResult($params->table,$params); $this->massaction->_exportCSV($params); } if(!empty($email) && !empty($path)){ $config = hikashop_config(); $mailClass = hikashop_get('class.mail'); $content = array('type' => 'csv_export'); $mail = $mailClass->get('massaction_notification',$content); $mail->subject = JText::_('MASS_CSV_EMAIL_SUBJECT'); $mail->html = '1'; $csv = new stdClass(); $csv->name = basename($path); $csv->filename = $url['server']; $csv->url = $url['web']; $mail->attachments = array($csv); $mail->dst_name = ''; $mail->dst_email = explode(',',$email); $mailClass->sendMail($mail); } } function onProcessOrderMassActionupdateValues(&$elements,&$action,$k){ $current = 'order'; $current_id = $current.'_id'; $ids = array(); foreach($elements as $element){ $ids[] = $element->$current_id; if(isset($element->$action['type'])) $element->$action['type'] = $action['value']; } $action['type'] = strip_tags($action['type']); $alias = explode('_',$action['type']); if(preg_match('/order_product/',$action['type'])) $alias = array('order_product'); $queryTables = array($current); $possibleTables = array($current, 'order_product'); if(!in_array($alias[0],$possibleTables)) $alias[0] = 'order'; if(!isset($this->massaction))$this->massaction = hikashop_get('class.massaction'); $value = $this->massaction->updateValuesSecure($action,$possibleTables,$queryTables); JArrayHelper::toInteger($ids); $db = JFactory::getDBO(); $max = 500; if(count($ids) > $max){ $c = ceil((int)count($ids) / $max); for($i = 0; $i < $c; $i++){ $offset = $max * $i; $id = array_slice($ids, $offset, $max); $query = 'UPDATE '.hikashop_table($current).' AS hk_'.$current.' '; $queryTables = array_unique($queryTables); foreach($queryTables as $queryTable){ switch($queryTable){ case 'order_product': $query .= 'LEFT JOIN '.hikashop_table('order_product').' AS hk_order_product ON hk_order_product.order_id = hk_order.order_id '; break; } } $query .= 'SET hk_'.$alias[0].'.'.$action['type'].' = '.$value.' '; $query .= 'WHERE hk_'.$current.'.'.$current.'_id IN ('.implode(',',$id).')'; $db->setQuery($query); $db->execute(); } }else{ $query = 'UPDATE '.hikashop_table($current).' AS hk_'.$current.' '; $queryTables = array_unique($queryTables); foreach($queryTables as $queryTable){ switch($queryTable){ case 'order_product': $query .= 'LEFT JOIN '.hikashop_table('order_product').' AS hk_order_product ON hk_order_product.order_id = hk_order.order_id '; break; } } $query .= 'SET hk_'.$alias[0].'.'.$action['type'].' = '.$value.' '; $query .= 'WHERE hk_'.$current.'.'.$current.'_id IN ('.implode(',',$ids).')'; $db->setQuery($query); $db->execute(); } } function onProcessOrderMassActionchangeStatus(&$elements,&$action,$k){ $orderClass = hikashop_get('class.order'); foreach($elements as $element){ $element->order_status = $action['value']; unset($element->order_payment_price); unset($element->order_shipping_price); unset($element->order_discount_price); if(isset($action['notify'])){ if(!isset($element->history) || !is_object($element->history)) $element->history = new stdClass(); $element->history->history_notified = 1; } $orderClass->save($element); } } function onProcessOrderMassActionaddProduct(&$elements,&$action,$k){ if(!empty($action['value'])){ if(!isset($action['quantity'])) $action['quantity'] = ''; $orderClass = hikashop_get('class.order'); $order_productClass = hikashop_get('class.order_product'); $unsetValues = array(); foreach($elements as $order){ if(empty($order->order_id)) { $app = JFactory::getApplication(); $app->enqueueMessage('A mass action is trying to add a product to an order that isn\'t created yet. This is not possible.'); continue; } $orderClass->loadProducts($order); foreach($order->products as $product){ if(in_array($product->product_id,$action['value'])){ if($action['type'] == 'add'){ (!empty($action['quantity']))?$action['quantity']:1; $product->order_product_quantity = (int)$product->order_product_quantity + (int)$action['quantity']; } else{ if(isset($action['quantity']) && !empty($action['quantity'])) $product->order_product_quantity = (int)$product->order_product_quantity - (int)$action['quantity']; else $product->order_product_quantity = 0; if($product->order_product_quantity < 0) $product->order_product_quantity = 0; } if(isset($action['update'])) $product->no_update ='update'; $order_productClass->update($product); $unsetValues[] = $product->product_id; } } foreach($action['value'] as $k => $value){ if(in_array($value,$unsetValues)) unset($action['value'][$k]); } if(!empty($action['value'])){ $product_ids = array(); foreach($action['value'] as $value){ $product = new stdClass(); $product->product_id = $value; if(isset($action['update'])) $product->no_update ='update'; if($action['type'] == 'add'){ (!empty($action['quantity']))?$action['quantity']:1; $product->order_product_quantity = (int)$action['quantity']; $product_ids[] = $value; } else{ $product->order_product_quantity = 0; $order_productClass->update($product); } } if($action['type'] == 'add'){ $productClass = hikashop_get('class.product'); hikaInput::get()->set( 'order_id', $order->order_id); $data = array(); $data['products'] = true; $data['order']['product']['many'] = true; $productClass->getProducts($product_ids); foreach($productClass->products as $i => $product){ $data['order']['product'][$i]['order_id'] = $order->order_id; $data['order']['product'][$i]['product_id'] = $product->product_id; $data['order']['product'][$i]['order_product_quantity'] = (!empty($action['quantity']))?$action['quantity']:1; $data['order']['product'][$i]['order_product_id'] = ''; $data['order']['product'][$i]['order_product_name'] = $product->product_name; $data['order']['product'][$i]['order_product_code'] = $product->product_code; $data['order']['product'][$i]['order_product_price'] = $product->prices[0]->price_value; } hikaInput::get()->set('data', $data); $orderClass->saveForm('products'); } } } } } function onProcessOrderMassActiondeleteElements(&$elements,&$action,$k){ $ids = array(); foreach($elements as $element){ $ids[] = $element->order_id; } $orderClass = hikashop_get('class.order'); $max = 500; if(count($ids) > $max){ $c = ceil((int)count($ids) / $max); for($i = 0; $i < $c; $i++){ $offset = $max * $i; $id = array_slice($ids, $offset, $max); $result = $orderClass->delete($id); } }else{ $result = $orderClass->delete($ids); } } function onProcessOrderMassActionchangeGroup(&$elements,&$action,$k){ $user_ids = array(); $values = array(); foreach($elements as $element){ $user_ids[] = (int)$element->order_user_id; } if(empty($user_ids)) return false; $db = JFactory::getDBO(); $db->setQuery('SELECT user_cms_id FROM '.hikashop_table('user').' WHERE user_id IN ('.implode(',',$user_ids).') AND user_cms_id != 0'); $user_ids = $db->loadColumn(); if(empty($user_ids)) return false; foreach($user_ids as $user_id){ $values[$user_id] = '('.$user_id.','.$action['value'].')'; } if($action['type'] != 'add'){ $filters = ''; if($action['type'] == 'remove') $filters = ' AND group_id = '.(int)$action['value']; $db->setQuery('DELETE FROM '.hikashop_table('user_usergroup_map',false).' WHERE user_id IN ('.implode(',',$user_ids).')'.$filters); $db->execute(); } if($action['type'] != 'remove'){ $db->setQuery('REPLACE INTO '.hikashop_table('user_usergroup_map',false).' VALUES '.implode(',',$values)); $db->execute(); } $app = JFactory::getApplication(); $config = JFactory::getConfig(); $handler = $config->get('session_handler', 'none'); if($handler=='database'){ $db->setQuery('DELETE FROM '.hikashop_table('session',false).' WHERE client_id=0 AND userid IN ('.implode(',',$user_ids).')'); $db->execute(); } $currentUser = hikashop_loadUser(true); if(!hikashop_isClient('administrator') && in_array($currentUser->user_cms_id,$user_ids)) $app->logout( $currentUser->user_cms_id ); } function onProcessOrderMassActionsendEmail(&$elements,&$action,$k){ if(!empty($action['emailAddress'])){ if($action['emailAddress'] == 'user.user_email' && count($elements) == '1'){ $userClass = hikashop_get('class.user'); $user = $userClass->get($elements[0]->order_user_id); $action['emailAddress'] = $user->user_email; } $config = hikashop_config(); $mailClass = hikashop_get('class.mail'); $content = array('elements' => $elements, 'action' => $action, 'type' => 'order_notification'); $mail = $mailClass->get('massaction_notification',$content); $mail->subject = !empty($action['emailSubject'])?JText::_($action['emailSubject']):JText::_('MASS_NOTIFICATION_EMAIL_SUBJECT'); if(!empty($action['bodyData'])) $mail->body = $action['bodyData']; $mail->html = '1'; $mail->dst_name = ''; if(!empty($action['emailAddress'])) $mail->dst_email = explode(',',$action['emailAddress']); else $mail->dst_email = $config->get('from_email'); $mailClass->sendMail($mail); } } function onBeforeOrderCreate(&$order,&$do){ $orders = array($order); $this->massaction->trigger('onBeforeOrderCreate',$orders); } function onBeforeOrderUpdate(&$order,&$do){ $o = clone $order; if(!empty($order->old)){ foreach($order->old as $key => $value) { if(!isset($o->$key)) $o->$key = $value; } } $orders = array($o); $this->massaction->trigger('onBeforeOrderUpdate',$orders); } function onBeforeOrderDelete(&$elements, &$do){ $orderClass = hikashop_get('class.order'); $toDelete = array(); if(!is_array($elements)) $clone = array($elements); else $clone = $elements; foreach($clone as $element){ $toDelete[] = $orderClass->get($element); } $this->deletedOrder = &$toDelete; $this->massaction->trigger('onBeforeOrderDelete',$toDelete); } function onAfterOrderCreate(&$order,&$send_email){ $getOrder = $this->order->get($order->order_id); $getOrder->old = ''; $orders = array($getOrder); $this->massaction->trigger('onAfterOrderCreate',$orders); } function onAfterOrderUpdate(&$order,&$send_email){ $o = clone $order; if(!empty($order->old)) { foreach($order->old as $key => $value) { if(!isset($o->$key)) $o->$key = $value; } } $orders = array($o); $this->massaction->trigger('onAfterOrderUpdate',$orders); } function onAfterOrderDelete($elements){ $this->massaction->trigger('onAfterOrderDelete', $this->deletedOrder); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка