Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
group.php000064400000016516151157024450006426 0ustar00<?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 plgHikashopGroup extends JPlugin
{
function __construct(&$subject, $config) {
parent::__construct($subject, $config);
}
function onProductFormDisplay(&$product,&$html) {
$subscriptiontype = hikashop_get('type.subscription');
$type = 'product';
if(hikaInput::get()->getInt('legacy') != 1 &&
!empty($product->product_type) &&
$product->product_type=='variant'){
$type = 'variant';
}
$html[] = array(
'name' => 'product_group_after_purchase',
'label' => 'USER_GROUP_AFTER_PURCHASE',
'content' =>
$subscriptiontype->display('product_group_after_purchase',@$product->product_group_after_purchase,$type)
);
}
function onHikashopBeforeDisplayView(&$view) {
$app = JFactory::getApplication();
if(!hikashop_isClient('administrator'))
return true;
$viewName = $view->getName();
$layoutName = $view->getLayout();
if($viewName != 'checkout' || $layoutName != 'step')
return true;
$order = $view->initCart();
if($this->checkGuest($order))
return true;
$sr = explode(',', $view->simplified_registration);
$remove = null;
foreach($sr as $k => $r){
if($r==2) $remove = $k;
}
if(!is_null($remove)) unset($sr[$k]);
$view->simplified_registration = implode(',',$sr);
}
function onBeforeCheckoutViewDisplay($layout, &$view) {
if($layout != 'login')
return;
$order = $view->checkoutHelper->getCart();
$user = JFactory::getUser();
if(empty($user->guest))
return true;
$hkUser = hikashop_loadUser();
if(empty($hkUser))
return;
if($this->checkGuest($order))
return true;
$view->options['registration_guest'] = false;
}
function onAfterProductUpdate(&$element) {
$this->_checkProductGuest($element);
}
function onAfterProductCreate(&$element) {
$this->_checkProductGuest($element);
}
function _checkProductGuest(&$element) {
$config = hikashop_config();
$simplified_registration = explode(',',
$config->get('simplified_registration'));
if(array_search(2, $simplified_registration) === false)
return;
if(!empty($element->product_group_after_purchase) &&
$element->product_group_after_purchase != 'all' &&
$element->product_group_after_purchase != '') {
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('GUEST_CHECKOUT_NOT_POSSIBLE_WITH_USER_GROUP_AFTER_PURCHASE_FOR_CUSTOMERS'),
'warning');
}
}
function onBeforeUserCreate(&$user,&$do) {
$app = JFactory::getApplication();
if(hikashop_isClient('administrator') ||
!empty($user->user_cms_id) || !@$app->guest || !$do)
return;
$class = hikashop_get('class.cart');
$order = $class->loadFullCart();
$do = $this->checkGuest($order);
}
function onBeforeUserUpdate(&$user,&$do) {
$app = JFactory::getApplication();
if(hikashop_isClient('administrator') ||
!empty($user->user_cms_id) || !@$app->guest || !$do)
return;
$class = hikashop_get('class.cart');
$order = $class->loadFullCart();
$do = $this->checkGuest($order);
}
function onBeforeOrderCreate(&$order,&$do) {
if(!isset($order->order_user_id) || !$do)
return;
$class = hikashop_get('class.user');
$user = $class->get($order->order_user_id);
if(empty($user->user_cms_id)){
$do = $this->checkGuest($order);
}
}
function checkGuest(&$order) {
if(isset($order->cart)){
$obj =& $order->cart;
}else{
$obj =& $order;
}
if(!isset($obj->products) || !is_array($obj->products))
return true;
foreach($obj->products as $product){
if(!empty($product->product_group_after_purchase) &&
$product->product_group_after_purchase != 'all' &&
$product->product_group_after_purchase != '') {
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('GUEST_CHECKOUT_NOT_POSSIBLE_WITH_USER_GROUP_AFTER_PURCHASE'));
return false;
}
}
return true;
}
function onAfterOrderCreate( &$order,&$send_email) {
return $this->onAfterOrderUpdate( $order,$send_email);
}
function onAfterOrderUpdate(&$order,&$send_email) {
$config =& hikashop_config();
$confirmed = $config->get('order_confirmed_status');
if(!isset($order->order_status))
return true;
if(!empty($order->order_type) && $order->order_type !=
'sale')
return true;
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$class = hikashop_get('class.order');
$dbOrder = $class->get($order->order_id);
$class = hikashop_get('class.user');
$data = $class->get($dbOrder->order_user_id);
if(empty($data->user_cms_id) &&
!hikashop_isClient('administrator'))
return true;
$db->setQuery('SELECT b.*,a.* FROM `#__hikashop_order_product` as
a LEFT JOIN `#__hikashop_product` as b ON a.product_id=b.product_id WHERE
a.order_id = '.(int) $dbOrder->order_id.' AND
b.product_group_after_purchase!=\'\'');
$allProducts = $db->loadObjectList();
if(empty($allProducts))
return true;
if(empty($data->user_cms_id) &&
hikashop_isClient('administrator')) {
$app->enqueueMessage('The customer
'.$dbOrder->order_user_id.' does not have a joomla user
account so his group cannot be changed','notice');
return true;
}
if($order->order_status != $confirmed){
return true;
}
jimport('joomla.access.access');
$userGroups = JAccess::getGroupsByUser($data->user_cms_id, false);
$user = clone(JFactory::getUser($data->user_cms_id));
$no_change=true;
foreach($allProducts as $oneProduct){
if(hikashop_isAllowed($oneProduct->product_group_after_purchase,$data->user_cms_id)){
continue;
}
$no_change=false;
$userGroups[] = $oneProduct->product_group_after_purchase;
if(hikashop_isClient('administrator')){
$app->enqueueMessage('The user
'.$dbOrder->order_user_id.' is now in the group
'.$oneProduct->product_group_after_purchase);
}
}
if(!$no_change){
$user->set('groups',$userGroups);
$user->save();
}
if($no_change){
if(hikashop_isClient('administrator')){
$app->enqueueMessage('The customer of that order is already in
the good user group','notice');
}
return true;
}else{
$pluginsClass = hikashop_get('class.plugins');
$plugin =
$pluginsClass->getByName('hikashop','group');
$force_logout = @$plugin->params['force_logout'];
if( empty($force_logout) ){
return true;
}
$conf = JFactory::getConfig();
$handler = $conf->get('session_handler',
'none');
if($handler=='database'){
$db->setQuery('DELETE FROM
'.hikashop_table('session',false).' WHERE client_id=0
AND userid = '.(int)$data->user_cms_id);
$db->execute();
}
if(!hikashop_isClient('administrator')){
$app->logout( $data->user_cms_id );
}
}
}
function _updateGroup($user_id,$new_group_id,$remove_group_id=0) {
$user = clone(JFactory::getUser($user_id));
jimport('joomla.access.access');
$userGroups = JAccess::getGroupsByUser($user_id, true);
$userGroups[] = $new_group_id;
if(!empty($remove_group_id)){
$key = array_search($remove_group_id, $userGroups);
if(is_int($key)){
unset($userGroups[$key]);
}
}
$user->set('groups',$userGroups);
$user->save();
}
}
group.xml000064400000002653151157024450006434 0ustar00<?xml
version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5"
method="upgrade" group="hikashop">
<name>Hikashop Group Plugin</name>
<creationDate>12 février 2021</creationDate>
<version>4.4.1</version>
<author>Hikashop</author>
<authorEmail>dev@hikashop.com</authorEmail>
<authorUrl>http://www.hikashop.com</authorUrl>
<copyright>(C) 2010-2021 HIKARI SOFTWARE. All rights
reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html
GNU/GPL</license>
<description>This plugin enables you to change the group of a user
after purchasing a product</description>
<files>
<filename plugin="group">group.php</filename>
</files>
<params addpath="/components/com_hikashop/params">
<param name="force_logout" type="radio"
default="1"
label="HIKA_FORCE_USER_LOGOUT_ON_GROUP_UPDATE"
description="FORCE_USER_LOGOUT_ON_GROUP_UPDATE">
<option value="0">HIKASHOP_NO</option>
<option value="1">HIKASHOP_YES</option>
</param>
</params>
<config>
<fields name="params"
addfieldpath="/components/com_hikashop/fields">
<fieldset name="basic">
<field name="force_logout" type="radio"
default="1"
label="HIKA_FORCE_USER_LOGOUT_ON_GROUP_UPDATE"
description="FORCE_USER_LOGOUT_ON_GROUP_UPDATE"
class="btn-group btn-group-yesno">
<option value="0">HIKASHOP_NO</option>
<option value="1">HIKASHOP_YES</option>
</field>
</fieldset>
</fields>
</config>
</extension>
index.html000064400000000054151157024450006544 0ustar00<html><body
bgcolor="#FFFFFF"></body></html>