Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/aupost2.zip

PK�d�[���J�Jaupost2.phpnu�[���<?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 plgHikashopshippingAupost2 extends hikashopShippingPlugin {
	var $multiple = true;
	var $name = 'aupost2';
	var $doc_form = 'aupost2';
	var $use_cache = true;
	var $pluginConfig = array(
		'api_key' => array('FEDEX_API_KEY',
'input'),
		'post_code' => array('POST_CODE',
'input'),
		'services' => array('SHIPPING_SERVICES',
'checkbox',array(
			'AUS_PARCEL_REGULAR' => 'Parcel Post (your own
packaging)',
			'AUS_PARCEL_REGULAR_SATCHEL_500G' => 'Parcel Post
Small Satchel',
			'AUS_PARCEL_REGULAR_SATCHEL_3KG' => 'Parcel Post
Medium Satchel',
			'AUS_PARCEL_REGULAR_SATCHEL_5KG' => 'Parcel Post Large
Satchel',
			'AUS_PARCEL_EXPRESS' => 'Express Post (your own
packaging)',
			'AUS_PARCEL_EXPRESS_SATCHEL_500G' => 'Express Post
Small Satchel',
			'AUS_PARCEL_EXPRESS_SATCHEL_3KG' => 'Express Post
Medium (3Kg) Satchel',
			'AUS_PARCEL_EXPRESS_SATCHEL_5KG' => 'Express Post
Large (5Kg) Satchel',
			'INT_PARCEL_STD_OWN_PACKAGING' => 'International
parcel standard (your own packaging)',
			'INTL_SERVICE_ECI_PLATINUM' => 'Express Courier
International Platinum',
			'INTL_SERVICE_ECI_M' => 'Express Courier International
Merchandise',
			'INTL_SERVICE_ECI_D' => 'Express Courier International
Documents',
			'INTL_SERVICE_EPI' => 'Express Post
International',
			'INTL_SERVICE_PTI' => 'Pack and Track
International',
			'INTL_SERVICE_RPI' => 'Registered Post
International',
			'INTL_SERVICE_AIR_MAIL' => 'Air Mail',
			'INTL_SERVICE_SEA_MAIL' => 'Sea Mail',
		)),
		'reverse_order' => array('Reverse order of
services', 'boolean','0'),
		'shipping_group' => array('Group products
together', 'boolean','0'),
	);
	var $shipping_types = array(
		'AUS_PARCEL_REGULAR' => 1,
		'AUS_PARCEL_REGULAR_SATCHEL_500G' => 2,
		'AUS_PARCEL_EXPRESS' => 3,
		'AUS_PARCEL_EXPRESS_SATCHEL_500G' => 4,
		'INTL_SERVICE_ECI_PLATINUM' => 5,
		'INTL_SERVICE_ECI_M' => 6,
		'INTL_SERVICE_ECI_D' => 7,
		'INTL_SERVICE_EPI' => 8,
		'INTL_SERVICE_PTI' => 9,
		'INTL_SERVICE_RPI' => 10,
		'INTL_SERVICE_AIR_MAIL' => 11,
		'INTL_SERVICE_SEA_MAIL' => 12,
		'AUS_PARCEL_REGULAR_SATCHEL_3KG' => 13,
		'AUS_PARCEL_REGULAR_SATCHEL_5KG' => 14,
		'AUS_PARCEL_EXPRESS_SATCHEL_3KG' => 15,
		'AUS_PARCEL_EXPRESS_SATCHEL_5KG' => 16,
		'INT_PARCEL_STD_OWN_PACKAGING' => 17
		);

	var $shipping_names = array(
		'AUS_PARCEL_REGULAR' => 'Parcel Post (your own
packaging)',
		'AUS_PARCEL_REGULAR_SATCHEL_500G' => 'Parcel Post Small
Satchel',
		'AUS_PARCEL_REGULAR_SATCHEL_3KG' => 'Parcel Post Medium
Satchel',
		'AUS_PARCEL_REGULAR_SATCHEL_5KG' => 'Parcel Post Large
Satchel',
		'AUS_PARCEL_EXPRESS' => 'Express Post (your own
packaging)',
		'AUS_PARCEL_EXPRESS_SATCHEL_500G' => 'Express Post
Small Satchel',
		'AUS_PARCEL_EXPRESS_SATCHEL_3KG' => 'Express Post
Medium (3Kg) Satchel',
		'AUS_PARCEL_EXPRESS_SATCHEL_5KG' => 'Express Post Large
(5Kg) Satchel',
		'INT_PARCEL_STD_OWN_PACKAGING' => 'International parcel
standard (your own packaging)',
		'INTL_SERVICE_ECI_PLATINUM' => 'Express Courier
International Platinum',
		'INTL_SERVICE_ECI_M' => 'Express Courier International
Merchandise',
		'INTL_SERVICE_ECI_D' => 'Express Courier International
Documents',
		'INTL_SERVICE_EPI' => 'Express Post
International',
		'INTL_SERVICE_PTI' => 'Pack and Track
International',
		'INTL_SERVICE_RPI' => 'Registered Post
International',
		'INTL_SERVICE_AIR_MAIL' => 'Air Mail',
		'INTL_SERVICE_SEA_MAIL' => 'Sea Mail',
		);

	var $local_shipping_types = array(
		'AUS_PARCEL_REGULAR',
		'AUS_PARCEL_REGULAR_SATCHEL_500G',
		'AUS_PARCEL_REGULAR_SATCHEL_3KG',
		'AUS_PARCEL_REGULAR_SATCHEL_5KG',
		'AUS_PARCEL_EXPRESS',
		'AUS_PARCEL_EXPRESS_SATCHEL_500G',
		'AUS_PARCEL_EXPRESS_SATCHEL_3KG',
		'AUS_PARCEL_EXPRESS_SATCHEL_5KG'
	);

	var $world_shipping_types = array(
		'INTL_SERVICE_ECI_PLATINUM',
		'INTL_SERVICE_ECI_M',
		'INTL_SERVICE_ECI_D',
		'INTL_SERVICE_EPI',
		'INTL_SERVICE_PTI',
		'INTL_SERVICE_RPI',
		'INTL_SERVICE_AIR_MAIL',
		'INTL_SERVICE_SEA_MAIL',
		'INT_PARCEL_STD_OWN_PACKAGING'
	);

	var $world_shipping_new_types = array(
		'INTL_SERVICE_ECI_PLATINUM' =>
'INT_PARCEL_COR_OWN_PACKAGING',
		'INTL_SERVICE_ECI_M' =>
'INT_PARCEL_EXP_OWN_PACKAGING',
		'INTL_SERVICE_ECI_D' =>
'INT_PARCEL_EXP_OWN_PACKAGING',
		'INTL_SERVICE_EPI' =>
'INT_PARCEL_STD_OWN_PACKAGING',
		'INTL_SERVICE_PTI' =>
'INT_PARCEL_STD_OWN_PACKAGING',
		'INTL_SERVICE_RPI' =>
'INT_PARCEL_STD_OWN_PACKAGING',
		'INTL_SERVICE_AIR_MAIL' =>
'INT_PARCEL_AIR_OWN_PACKAGING',
		'INTL_SERVICE_SEA_MAIL' =>
'INT_PARCEL_SEA_OWN_PACKAGING'
	);
	function processPackageLimit($limit_key, $limit_value, $product, $qty,
$package, $units) {
		switch ($limit_key) {
			case 'volume':
				$divide = (float)($product['x'] * $product['y'] *
$product['z']);
				if(empty($divide) || $divide > $limit_value)
					return false;
				$current_limit_value = max(0.0, $limit_value -
(float)($package['x'] * $package['y'] *
$package['z']));
				return (int)floor($current_limit_value / $divide);
				break;
			case 'girth':
				$divide = (float)(($product['x'] + $product['y']) *
2);
				if(empty($divide) || $divide > $limit_value)
					return false;
				$current_limit_value = max(0.0, $limit_value -
(float)(($package['x'] + $package['y']) * 2));
				return (int)floor($current_limit_value / $divide);
				break;
		}
		return parent::processPackageLimit($limit_key, $limit_value , $product,
$qty, $package, $units);
	}

	function
onShippingDisplay(&$order,&$dbrates,&$usable_rates,&$messages)
{
		if(!hikashop_loadUser())
			return false;

		if($this->loadShippingCache($order, $usable_rates, $messages))
			return true;

		$local_usable_rates = array();
		$local_messages = array();
		$ret = parent::onShippingDisplay($order, $dbrates, $local_usable_rates,
$local_messages);
		if($ret === false)
			return false;

		if(!function_exists('curl_init')) {
			$app = JFactory::getApplication();
			$app->enqueueMessage('The AUPOST shipping plugin needs the CURL
library installed but it seems that it is not available on your server.
Please contact your web hosting to set it up.','error');
			return false;
		}
		$cache_usable_rates = array();
		$cache_messages = array();

		$currentCurrencyId = null;
		foreach($local_usable_rates as $rate) {
			if(!empty($rate->shipping_zone_namekey)) {
				if(empty($rate->shipping_params->SEA) &&
empty($rate->shipping_params->AIR) &&
!empty($order->shipping_address->address_country)) {
					$db = JFactory::getDBO();
					if(is_array($order->shipping_address->address_country)) {
						$address_country =
reset($order->shipping_address->address_country);
					} else {
						$address_country = $order->shipping_address->address_country;
					}
					$db->setQuery('SELECT * FROM
'.hikashop_table('zone').' WHERE
zone_namekey='.$db->Quote($address_country));
					$currentShippingZone = $db->loadObject();

					if($currentShippingZone->zone_code_3 != 'AUS') {
						$messages['no_shipping_to_your_zone'] =
JText::_('NO_SHIPPING_TO_YOUR_ZONE');
						continue;
					}
				}
			}

			$check = false;

			if(empty($order->shipping_address->address_post_code)) {
				$check = true;
				$message = 'The Australia Post shipping plugin requires the user
to enter a postal code when goods are shipped within Australia. Please go
to "Display->Custom fields" and set the post code field to
required.';
			}
elseif(!preg_match('#[0-9]{4}#',$order->shipping_address->address_post_code))
{
				$check = true;
				$message = 'The post code entered is not valid';
				$order->shipping_address->address_post_code =
preg_replace('#[^0-9A-Z]#','',$order->shipping_address->address_post_code);
			}
			if($check) {
				$zoneClass=hikashop_get('class.zone');
				$zones = $zoneClass->getOrderZones($order);
				$db = JFactory::getDBO();
				$db->setQuery('SELECT zone_namekey FROM
'.hikashop_table('zone').' WHERE
zone_code_3='.$db->Quote('AUS'));
				$australia_zone = $db->loadResult();
				if(in_array($australia_zone,$zones)) {
					$cache_messages['post_code_missing'] = $message;
					continue;
				}
			}
			if(empty($order->shipping_address_full)) {
				$cart = hikashop_get('class.cart');
				if(isset($order->shipping_address->address_id))
					$cart->loadAddress($order->shipping_address_full,
$order->shipping_address->address_id, 'object',
'shipping');
			}
			$rates = array();

			$this->getRates($rate, $order, $rates, $cache_messages);

			if(!empty($rate->shipping_params->reverse_order)) {
				$rates=array_reverse($rates,true);
			}
			foreach($rates as $finalRate) {
				$usable_rates[$finalRate->shipping_id]=$finalRate;
				$cache_usable_rates[$finalRate->shipping_id] = $finalRate;
			}
		}
		$this->setShippingCache($order, $cache_usable_rates,
$cache_messages);

		if(!empty($cache_messages)) {
			foreach($cache_messages as $k => $msg) {
				$messages[$k] = $msg;
			}
		}
		return true;
	}
	function getRates($rate, $order, &$rates, &$messages) {
		$weightClass=hikashop_get('helper.weight');
		$volumeClass=hikashop_get('helper.volume');
		$limit = array();
		$domestic = 1;
		if(@$order->shipping_address_full->shipping_address->address_country->zone_code_2
== 'AU') {
			$limit['w'] = 22;
			$limit['volume'] = 250000;
			$limit['x'] = 105;
		} else {
			$domestic = 0;
			$limit['w'] = 20;
			$limit['girth'] = 140;
			$limit['x'] = 105;
		}
		if(!isset($rate->shipping_params->shipping_group) ||
!$rate->shipping_params->shipping_group)
			$limit['unit'] = 1;

		if(empty($currentCurrencyId)) {
			$query = 'SELECT currency_id FROM
'.hikashop_table('currency').' WHERE
currency_code=\'AUD\'';
			$db = JFactory::getDBO();
			$db->setQuery($query);
			$currentCurrencyId = $db->loadResult();
		}
		$parcel=new stdClass();
		$parcel->Weight = 0;
		$parcels = array($parcel);
		$i=0;

		$packages = $this->getOrderPackage($order,
array('weight_unit' => 'kg', 'volume_unit'
=> 'cm', 'limit' => $limit,
'required_dimensions' =>
array('w','x','y','z')));

		if(empty($packages))
			return true;

		if((!$domestic && isset($packages['w'])) || ($domestic
&& isset($packages['x']) &&
isset($packages['y']) &&
isset($packages['z']))) {
			if(empty($parcels[$i]))
				$parcels[$i] = new stdClass();
			$parcels[$i]->Weight = $packages['w'];
			if($domestic) {
				$parcels[$i]->Width = $packages['z'];
				$parcels[$i]->Height = $packages['y'];
				$parcels[$i]->Length = $packages['x'];

				if($parcels[$i]->Length<1.5)$parcels[$i]->Length=1.5;
				if($parcels[$i]->Width<1.5)$parcels[$i]->Width=1.5;
				if($parcels[$i]->Height<0.1)$parcels[$i]->Height=0.1;
			}

			if($parcels[$i]->Weight<0.001) $parcels[$i]->Weight=0.001;

			$i++;
		} else {
			foreach($packages as $package) {
				if((!$domestic && isset($package['w'])) || ($domestic
&& isset($package['x']) &&
isset($package['y']) && isset($package['z'])))
{
					if(empty($parcels[$i]))
						$parcels[$i] = new stdClass();
					$parcels[$i]->Weight = $package['w'];
					if($domestic) {
						$parcels[$i]->Width = $package['z'];
						$parcels[$i]->Height = $package['y'];
						$parcels[$i]->Length = $package['x'];

						if($parcels[$i]->Length<1.5)$parcels[$i]->Length=1.5;
						if($parcels[$i]->Width<1.5)$parcels[$i]->Width=1.5;
						if($parcels[$i]->Height<0.1)$parcels[$i]->Height=0.1;
					}

					if($parcels[$i]->Weight<0.001) $parcels[$i]->Weight=0.001;

					$i++;
				}
			}
		}

		foreach($parcels as $parcel) {
			$parcel->country_code =
@$order->shipping_address_full->shipping_address->address_country->zone_code_2;
			$service_types = array();

			if(empty($parcel->country_code))
				$parcel->country_code='AU';

			if($domestic) {
				$parcel->from_postcode =
substr(trim(@$rate->shipping_params->post_code),0,4);
				$parcel->to_postcode =
substr(trim($order->shipping_address->address_post_code),0,4);
			}

			$this->addRate($rates,$parcel,$rate,$currentCurrencyId, $i,
$messages);
		}
	}
	function onShippingConfigurationSave(&$element) {
		$app = JFactory::getApplication();

		if(empty($element->shipping_params->post_code))
			$app->enqueueMessage(JText::sprintf('ENTER_INFO',
'Australia POST', JText::_('POST_CODE')));
		if(empty($element->shipping_params->api_key))
			$app->enqueueMessage(JText::sprintf('ENTER_INFO',
'Australia POST', JText::_('FEDEX_API_KEY')));
		if (!isset($element->shipping_params->services))
			$app->enqueueMessage(JText::sprintf('CHOOSE_SHIPPING_SERVICE'));

		foreach($this->shipping_types as $service_name => $service_id){
			$element->shipping_params->$service_name =
isset($element->shipping_params->services) &&
in_array($service_name,$element->shipping_params->services);
		}

		parent::onShippingConfigurationSave($element);
	}
	function getShippingDefaultValues(&$element) {
		$element->shipping_name = 'Australia Post';
		$element->shipping_description = '';
		$element->shipping_images = 'aupost';

		foreach($this->shipping_types as $service_name => $service_id){
			$element->shipping_params->$service_name = $service_name;
		}
		$element->shipping_params->post_code = '';
		$element->shipping_params->api_key = '';
		$elements = array($element);
	}
	function onShippingConfiguration(&$element) {
		$this->aupost2 =
hikaInput::get()->getCmd('name','aupost2');
		$this->categoryType = hikashop_get('type.categorysub');
		$this->categoryType->type = 'tax';
		$this->categoryType->field = 'category_id';

		parent::onShippingConfiguration($element);
	}
	function addRate(&$rates,$parcel,&$rate,$currency, $nb_package,
&$messages) {
		if(empty($nb_package))
			$nb_package = 1;

		$service_types = array();
		$app = JFactory::getApplication();

		if($parcel->country_code=='AU') {
			foreach($this->local_shipping_types as $local_shipping_type){
				if(!empty($rate->shipping_params->$local_shipping_type))
					$service_types[] = $local_shipping_type;
			}

			$queryParams = array(
				"from_postcode" => $parcel->from_postcode,
				"to_postcode" => $parcel->to_postcode,
				"length" => $parcel->Length,
				"width" => $parcel->Width,
				"height" => $parcel->Height,
				"weight" => $parcel->Weight
			);

			$urlPrefix = 'digitalapi.auspost.com.au/postage';
			$postageTypesURL = 'https://' . $urlPrefix .
'/parcel/domestic/service.json?' .
http_build_query($queryParams);
		} else {
			foreach($this->world_shipping_types as $world_shipping_type){
				if(!empty($rate->shipping_params->$world_shipping_type)){
					$service_types[] = $world_shipping_type;
					if(!in_array($this->world_shipping_new_types[$world_shipping_type],$service_types))
						$service_types[] =
$this->world_shipping_new_types[$world_shipping_type];
				}
			}

			$queryParams = array(
				"country_code" => $parcel->country_code,
				"weight" => $parcel->Weight
			);

			$urlPrefix = 'digitalapi.auspost.com.au/postage';
			$postageTypesURL = 'https://' . $urlPrefix .
'/parcel/international/service.json?' .
http_build_query($queryParams);
		}

		$session = curl_init();
		curl_setopt($session, CURLOPT_URL, $postageTypesURL);
		curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($session, CURLOPT_HTTPHEADER, array('AUTH-KEY: ' .
$rate->shipping_params->api_key));
		curl_setopt($session, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($session, CURLOPT_SSL_VERIFYHOST,  2);
		$rawBody = curl_exec($session);

		if(!$rawBody) {
			$app->enqueueMessage('Error: "' . curl_error($session)
. '" - Code: ' . curl_errno($session));
			return false;
		}

		$serviceTypesJSON = json_decode($rawBody);

		if(isset($serviceTypesJSON->services->service) &&
!empty($serviceTypesJSON->services->service)) {
			$data = array();
			$available_service = array();
			if(is_object($serviceTypesJSON->services->service))
				$available_service[] = $serviceTypesJSON->services->service;
			else
				$available_service = $serviceTypesJSON->services->service;

			foreach($available_service as $key => $service) {
				if(isset($service->code) && in_array($service->code,
$service_types) && isset($service->price)) {
					$service_code = $service->code;
					foreach($this->world_shipping_new_types as $old_type =>
$new_type){
						if($service->code == $new_type && in_array($old_type,
$service_types)){
							$service_code = $old_type;
							break;
						}
					}

					if(empty($rates[$service_code])) {
						$info = new stdClass();
						$info = clone($rate);
						$shipping_name = JText::_($service_code.'_NAME');
						if($shipping_name != $service_code.'_NAME')
							$info->shipping_name .=' '.$shipping_name;
						else
							$info->shipping_name .=' '.$service->name;
						if (!empty($rate->shipping_description))
							$info->shipping_description = $rate->shipping_description .
' ';
						else {
							$shipping_description =
JText::_($service_code.'_DESCRIPTION');
							if($shipping_description != $service_code.'_DESCRIPTION')
								$info->shipping_description .= $shipping_description;
						}
						$info->shipping_id .= '-' .
$this->shipping_types[$service_code];
						$rates[$service_code]=$info;
					} else {
						$shipping_description =
JText::_($service_code.'_DESCRIPTION');
						if($shipping_description == $service_code.'_DESCRIPTION'){
$shipping_description = ''; }
						if(empty($shipping_description)){ $shipping_description =
$rate->shipping_description; }
						if(!empty($shipping_description)){ $shipping_description .=
'<br/>'; }
						if($nb_package > 1 &&
(isset($rate->shipping_params->shipping_group) &&
$rate->shipping_params->shipping_group))
$rates[$service_code]->shipping_description = $shipping_description .
JText::sprintf('X_PACKAGES', $nb_package);
						else $rates[$service_code]->shipping_description =
$shipping_description;
					}
					if(@$rates[$service_code]->shipping_tax_id) {
						$currencyClass = hikashop_get('class.currency');
						$service->price =
$currencyClass->getUntaxedPrice($service->price,hikashop_getZone(),$rates[$service_code]->shipping_tax_id);
					}
					$rates[$service_code]->shipping_price += $service->price;
					$rates[$service_code]->shipping_currency_id = $currency;
				}
			}
		} else {
			if(isset($serviceTypesJSON->error->errorMessage) &&
!empty($serviceTypesJSON->error->errorMessage)) {
				$messages['aupostv2_error_message'] =
$serviceTypesJSON->error->errorMessage;
				return false;
			}
		}
	}
	function shippingMethods(&$main) {
		$methods = array();

		foreach($this->shipping_types as $value => $key){
			if(!empty($main->shipping_params->$value))
				$methods[$main->shipping_id.'-'.$key] =
$this->shipping_names[$value];
		}

		return $methods;
	}
}
PK�d�[�$â�aupost2.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5"
method="upgrade" group="hikashopshipping">
	<name>Hikashop Australia Post eDeliver Shipping Plugin
V2</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 setup handle Australia Post
eDeliver service</description>
	<files>
		<filename plugin="aupost2">aupost2.php</filename>
	</files>
	<params addpath="/components/com_hikashop/params">
		<param name="pluginoptions" type="pluginoptions"
default="plugin" label="hikashop"
description="HikaShop options" />
	</params>
	<config>
		<fields name="params"
addfieldpath="/components/com_hikashop/fields">
			<fieldset name="basic">
				<field id="pluginoptions" name="pluginoptions"
type="pluginoptions" label="hikashop"
description="HikaShop options" />
			</fieldset>
		</fields>
	</config>
</extension>
PK�d�[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�d�[���J�Jaupost2.phpnu�[���PK�d�[�$�Jaupost2.xmlnu�[���PK�d�[�#o,,
�Oindex.htmlnu�[���PK�P