Files
conservatorio-tomadini/plugins/fields/acfpaypal/tmpl/acfpaypal.php
2024-12-31 11:07:09 +01:00

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>