119 lines
3.9 KiB
PHP
119 lines
3.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Advanced Custom Fields
|
|
* @version 2.8.8 Pro
|
|
*
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link http://www.tassos.gr
|
|
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Uri\Uri;
|
|
|
|
// Setup variables
|
|
if (!$field->value)
|
|
{
|
|
return;
|
|
}
|
|
|
|
$type = $fieldParams->get('type', 'checkout');
|
|
$paypal_account = $fieldParams->get('paypal_account', '');
|
|
$sandbox_mode = (bool) $fieldParams->get('sandbox_mode', '');
|
|
$sandbox_account = $fieldParams->get('sandbox_account', '');
|
|
$paypal_account = (!$sandbox_mode) ? $paypal_account : $sandbox_account;
|
|
|
|
// get value data
|
|
$data = isset($field->value) && is_string($field->value) ? json_decode($field->value) : (object) $field->value;
|
|
|
|
// Setup variables
|
|
$item_name = (isset($data->item_name) && !empty($data->item_name)) ? $data->item_name : '';
|
|
$price = (isset($data->price) && !empty($data->price)) ? $data->price : '';
|
|
|
|
// Do not render if name and price are empty except if we are rendering a checkout or donation button,
|
|
// which do not require a fixed amount
|
|
if ((empty($item_name) || empty($price)) && !in_array($type, ['checkout', 'donation']))
|
|
{
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Checkout button types can be rendered with no price set (users can then define a custom price on PayPal).
|
|
*
|
|
* However, some users do not want their checkout button to appear when no price is set.
|
|
*/
|
|
if ($type === 'checkout' && empty($price) && ! (bool) $fieldParams->get('allow_empty_value'))
|
|
{
|
|
return;
|
|
}
|
|
|
|
// Setup variables
|
|
$currency = $fieldParams->get('currency', 'USD');
|
|
$billing_interval = $fieldParams->get('billing_interval', '');
|
|
$language = $fieldParams->get('language', 'auto');
|
|
$language_locale = $fieldParams->get('language_locale', '');
|
|
$return_url = $fieldParams->get('return_url', '');
|
|
$cancel_url = $fieldParams->get('cancel_url', '');
|
|
$button_style = $fieldParams->get('button_style', 'style');
|
|
$button_style_selector = $fieldParams->get('button_style_selector', '');
|
|
$button_style_image = $fieldParams->get('button_style_image', '');
|
|
$new_tab = (bool) $fieldParams->get('new_tab', '');
|
|
$new_tab = ($new_tab) ? ' target="_blank"' : '';
|
|
|
|
// base url
|
|
$base_url = (!$sandbox_mode) ? 'https://www.paypal.com/cgi-bin/webscr' : 'https://www.sandbox.paypal.com/cgi-bin/webscr';
|
|
|
|
$image_name = ($button_style == 'style') ? $button_style_selector : $button_style_image;
|
|
$image_url = ($button_style == 'style') ? Uri::root() . $image_name : $button_style_image;
|
|
|
|
// command
|
|
$command = '_xclick';
|
|
switch ($type) {
|
|
case 'donation':
|
|
$command = '_donations';
|
|
break;
|
|
case 'subscription':
|
|
$command = '_xclick-subscriptions';
|
|
break;
|
|
}
|
|
?>
|
|
<form method="post" action="<?php echo $base_url; ?>"<?php echo $new_tab; ?>>
|
|
<input type="hidden" name="cmd" value="<?php echo $command; ?>">
|
|
<input type="hidden" name="business" value="<?php echo $paypal_account; ?>">
|
|
<input type="hidden" name="currency_code" value="<?php echo $currency; ?>">
|
|
<?php
|
|
if (!empty($item_name))
|
|
{
|
|
?><input type="hidden" name="item_name" value="<?php echo $item_name; ?>"><?php
|
|
}
|
|
if (!empty($price))
|
|
{
|
|
if ($type == 'subscription')
|
|
{
|
|
?>
|
|
<input type="hidden" name="p3" value="<?php echo $billing_interval; ?>">
|
|
<input type="hidden" name="t3" value="D">
|
|
<?php
|
|
}
|
|
?><input type="hidden" name="<?php echo ($type == 'subscription') ? 'a3' : 'amount'; ?>" value="<?php echo $price; ?>"><?php
|
|
}
|
|
if (!empty($return_url))
|
|
{
|
|
?><input type="hidden" name="return" value="<?php echo $return_url; ?>"><?php
|
|
}
|
|
|
|
if (!empty($cancel_url))
|
|
{
|
|
?><input type="hidden" name="cancel_return" value="<?php echo $cancel_url; ?>"><?php
|
|
}
|
|
|
|
if ($language == 'fixed' && !empty($language_locale))
|
|
{
|
|
?><input type="hidden" name="lc" value="<?php echo $language_locale; ?>"><?php
|
|
}
|
|
?>
|
|
<input type="image" src="<?php echo $image_url; ?>" style="border:none;max-width: 100%;" />
|
|
</form>
|