Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/wpforms-.../includes/function...
File: payments.php
[500] Fix | Delete
if ( is_string( $currency ) ) {
[501] Fix | Delete
$currencies = wpforms_get_currencies();
[502] Fix | Delete
$currency_code = strtoupper( $currency );
[503] Fix | Delete
$currency = isset( $currencies[ $currency_code ] ) ? $currencies[ $currency_code ] : [];
[504] Fix | Delete
}
[505] Fix | Delete
[506] Fix | Delete
/**
[507] Fix | Delete
* Get currency decimals.
[508] Fix | Delete
*
[509] Fix | Delete
* @since 1.6.6
[510] Fix | Delete
*
[511] Fix | Delete
* @param int $decimals Default number of decimals.
[512] Fix | Delete
* @param array|string $currency Currency data we are getting decimals for.
[513] Fix | Delete
*/
[514] Fix | Delete
return (int) apply_filters(
[515] Fix | Delete
'wpforms_get_currency_decimals',
[516] Fix | Delete
isset( $currency['decimals'] ) ? $currency['decimals'] : 2,
[517] Fix | Delete
$currency
[518] Fix | Delete
);
[519] Fix | Delete
}
[520] Fix | Delete
[521] Fix | Delete
/**
[522] Fix | Delete
* Get payments currency.
[523] Fix | Delete
* If the currency not available anymore 'USD' used as default.
[524] Fix | Delete
*
[525] Fix | Delete
* @since 1.6.6
[526] Fix | Delete
*
[527] Fix | Delete
* @return string
[528] Fix | Delete
*/
[529] Fix | Delete
function wpforms_get_currency() {
[530] Fix | Delete
[531] Fix | Delete
$currency = wpforms_setting( 'currency' );
[532] Fix | Delete
$currencies = wpforms_get_currencies();
[533] Fix | Delete
[534] Fix | Delete
/**
[535] Fix | Delete
* Get payments currency.
[536] Fix | Delete
*
[537] Fix | Delete
* @since 1.6.6
[538] Fix | Delete
*
[539] Fix | Delete
* @param string $currency Payments currency.
[540] Fix | Delete
* @param array $currencies Available currencies.
[541] Fix | Delete
*/
[542] Fix | Delete
return apply_filters(
[543] Fix | Delete
'wpforms_get_currency',
[544] Fix | Delete
isset( $currencies[ $currency ] ) ? $currency : 'USD',
[545] Fix | Delete
$currencies
[546] Fix | Delete
);
[547] Fix | Delete
}
[548] Fix | Delete
[549] Fix | Delete
/**
[550] Fix | Delete
* Return recognized payment field types.
[551] Fix | Delete
*
[552] Fix | Delete
* @since 1.0.0
[553] Fix | Delete
*
[554] Fix | Delete
* @return array
[555] Fix | Delete
*/
[556] Fix | Delete
function wpforms_payment_fields() {
[557] Fix | Delete
[558] Fix | Delete
/**
[559] Fix | Delete
* Filters the recognized payment field types.
[560] Fix | Delete
*
[561] Fix | Delete
* @since 1.0.0
[562] Fix | Delete
*
[563] Fix | Delete
* @param array $fields Payment field types.
[564] Fix | Delete
*/
[565] Fix | Delete
return (array) apply_filters(
[566] Fix | Delete
'wpforms_payment_fields',
[567] Fix | Delete
[ 'payment-single', 'payment-multiple', 'payment-checkbox', 'payment-select' ]
[568] Fix | Delete
);
[569] Fix | Delete
}
[570] Fix | Delete
[571] Fix | Delete
/**
[572] Fix | Delete
* Check if form or entry contains payment.
[573] Fix | Delete
*
[574] Fix | Delete
* @since 1.0.0
[575] Fix | Delete
*
[576] Fix | Delete
* @param string $type Either 'entry' or 'form'.
[577] Fix | Delete
* @param array $data List of form fields.
[578] Fix | Delete
*
[579] Fix | Delete
* @return bool
[580] Fix | Delete
*/
[581] Fix | Delete
function wpforms_has_payment( $type = 'entry', $data = [] ) {
[582] Fix | Delete
[583] Fix | Delete
$payment = false;
[584] Fix | Delete
$payment_fields = wpforms_payment_fields();
[585] Fix | Delete
[586] Fix | Delete
if ( ! empty( $data['fields'] ) ) {
[587] Fix | Delete
$data = $data['fields'];
[588] Fix | Delete
}
[589] Fix | Delete
[590] Fix | Delete
if ( empty( $data ) ) {
[591] Fix | Delete
return false;
[592] Fix | Delete
}
[593] Fix | Delete
[594] Fix | Delete
foreach ( $data as $field ) {
[595] Fix | Delete
if ( isset( $field['type'] ) && in_array( $field['type'], $payment_fields, true ) ) {
[596] Fix | Delete
[597] Fix | Delete
// For entries, only return true if the payment field has an amount.
[598] Fix | Delete
if (
[599] Fix | Delete
$type === 'form' ||
[600] Fix | Delete
(
[601] Fix | Delete
$type === 'entry' &&
[602] Fix | Delete
! empty( $field['amount'] ) &&
[603] Fix | Delete
! empty( wpforms_sanitize_amount( $field['amount'] ) )
[604] Fix | Delete
)
[605] Fix | Delete
) {
[606] Fix | Delete
$payment = true;
[607] Fix | Delete
[608] Fix | Delete
break;
[609] Fix | Delete
}
[610] Fix | Delete
}
[611] Fix | Delete
}
[612] Fix | Delete
[613] Fix | Delete
return $payment;
[614] Fix | Delete
}
[615] Fix | Delete
[616] Fix | Delete
/**
[617] Fix | Delete
* Check to see if a form has an active payment gateway configured.
[618] Fix | Delete
*
[619] Fix | Delete
* @since 1.4.5
[620] Fix | Delete
*
[621] Fix | Delete
* @param array $form_data Form data and settings.
[622] Fix | Delete
*
[623] Fix | Delete
* @return bool
[624] Fix | Delete
*/
[625] Fix | Delete
function wpforms_has_payment_gateway( $form_data ) {
[626] Fix | Delete
[627] Fix | Delete
// PayPal Standard check.
[628] Fix | Delete
if ( ! empty( $form_data['payments']['paypal_standard']['enable'] ) ) {
[629] Fix | Delete
return true;
[630] Fix | Delete
}
[631] Fix | Delete
[632] Fix | Delete
// Stripe Check.
[633] Fix | Delete
if ( ! empty( $form_data['payments']['stripe']['enable'] ) ) {
[634] Fix | Delete
return true;
[635] Fix | Delete
}
[636] Fix | Delete
[637] Fix | Delete
/**
[638] Fix | Delete
* Allow modifying whether a form has an active payment gateway.
[639] Fix | Delete
*
[640] Fix | Delete
* @since 1.4.5
[641] Fix | Delete
*
[642] Fix | Delete
* @param bool $result True if a form has an active payment gateway.
[643] Fix | Delete
* @param array $form_data Form data and settings.
[644] Fix | Delete
*/
[645] Fix | Delete
return (bool) apply_filters( 'wpforms_has_payment_gateway', false, $form_data );
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
/**
[649] Fix | Delete
* Get payment total amount from entry.
[650] Fix | Delete
*
[651] Fix | Delete
* @since 1.0.0
[652] Fix | Delete
* @since 1.8.2.2 Added PHP max() function before returning a total.
[653] Fix | Delete
*
[654] Fix | Delete
* @param array $fields List of fields.
[655] Fix | Delete
*
[656] Fix | Delete
* @return string
[657] Fix | Delete
*/
[658] Fix | Delete
function wpforms_get_total_payment( $fields ) {
[659] Fix | Delete
[660] Fix | Delete
$fields = wpforms_get_payment_items( $fields );
[661] Fix | Delete
$total = 0;
[662] Fix | Delete
[663] Fix | Delete
if ( empty( $fields ) ) {
[664] Fix | Delete
return false;
[665] Fix | Delete
}
[666] Fix | Delete
[667] Fix | Delete
foreach ( $fields as $field ) {
[668] Fix | Delete
// Skip the field hidden by conditional logic.
[669] Fix | Delete
if ( isset( $field['visible'] ) && $field['visible'] === false ) {
[670] Fix | Delete
continue;
[671] Fix | Delete
}
[672] Fix | Delete
[673] Fix | Delete
if ( empty( $field['amount'] ) ) {
[674] Fix | Delete
continue;
[675] Fix | Delete
}
[676] Fix | Delete
[677] Fix | Delete
$amount = wpforms_sanitize_amount( $field['amount'] );
[678] Fix | Delete
[679] Fix | Delete
if ( ! empty( $field['quantity'] ) ) {
[680] Fix | Delete
$amount *= (int) $field['quantity'];
[681] Fix | Delete
}
[682] Fix | Delete
[683] Fix | Delete
$total += $amount;
[684] Fix | Delete
}
[685] Fix | Delete
[686] Fix | Delete
$total = max( 0, $total );
[687] Fix | Delete
[688] Fix | Delete
return wpforms_sanitize_amount( $total );
[689] Fix | Delete
}
[690] Fix | Delete
[691] Fix | Delete
/**
[692] Fix | Delete
* Get payment fields in an entry.
[693] Fix | Delete
*
[694] Fix | Delete
* @since 1.0.0
[695] Fix | Delete
*
[696] Fix | Delete
* @param array $fields List of fields.
[697] Fix | Delete
*
[698] Fix | Delete
* @return array|bool False if no fields provided, otherwise array.
[699] Fix | Delete
*/
[700] Fix | Delete
function wpforms_get_payment_items( $fields = [] ) {
[701] Fix | Delete
[702] Fix | Delete
if ( empty( $fields ) ) {
[703] Fix | Delete
return false;
[704] Fix | Delete
}
[705] Fix | Delete
[706] Fix | Delete
$payment_fields = wpforms_payment_fields();
[707] Fix | Delete
[708] Fix | Delete
foreach ( $fields as $id => $field ) {
[709] Fix | Delete
if (
[710] Fix | Delete
empty( $field['type'] ) ||
[711] Fix | Delete
empty( $field['amount'] ) ||
[712] Fix | Delete
! in_array( $field['type'], $payment_fields, true ) ||
[713] Fix | Delete
empty( wpforms_sanitize_amount( $field['amount'] ) ) ||
[714] Fix | Delete
( isset( $field['quantity'] ) && ! $field['quantity'] )
[715] Fix | Delete
) {
[716] Fix | Delete
// Remove all non-payment fields as well as payment fields with no amount or empty quantity.
[717] Fix | Delete
unset( $fields[ $id ] );
[718] Fix | Delete
}
[719] Fix | Delete
}
[720] Fix | Delete
[721] Fix | Delete
return $fields;
[722] Fix | Delete
}
[723] Fix | Delete
[724] Fix | Delete
/**
[725] Fix | Delete
* Determine if field has quantity enabled.
[726] Fix | Delete
*
[727] Fix | Delete
* @since 1.8.7
[728] Fix | Delete
*
[729] Fix | Delete
* @param array $field Field data.
[730] Fix | Delete
* @param array $form_data Form data.
[731] Fix | Delete
*
[732] Fix | Delete
* @return bool
[733] Fix | Delete
*/
[734] Fix | Delete
function wpforms_payment_has_quantity( array $field, array $form_data ): bool {
[735] Fix | Delete
[736] Fix | Delete
if ( ! isset( $field['id'] ) ) {
[737] Fix | Delete
return false;
[738] Fix | Delete
}
[739] Fix | Delete
[740] Fix | Delete
if ( isset( $field['quantity'] ) ) {
[741] Fix | Delete
return true;
[742] Fix | Delete
}
[743] Fix | Delete
[744] Fix | Delete
$field_settings = $form_data['fields'][ $field['id'] ] ?? [];
[745] Fix | Delete
[746] Fix | Delete
if ( empty( $field_settings['enable_quantity'] ) ) {
[747] Fix | Delete
return false;
[748] Fix | Delete
}
[749] Fix | Delete
[750] Fix | Delete
// Quantity is available only for `single` format of the Single payment field.
[751] Fix | Delete
if ( $field_settings['type'] === 'payment-single' && $field_settings['format'] !== 'single' ) {
[752] Fix | Delete
return false;
[753] Fix | Delete
}
[754] Fix | Delete
[755] Fix | Delete
// Otherwise return true.
[756] Fix | Delete
// It covers the Dropdown Items field (and others where the quantity will be supported).
[757] Fix | Delete
return true;
[758] Fix | Delete
}
[759] Fix | Delete
[760] Fix | Delete
/**
[761] Fix | Delete
* Formatted payment field value with quantity.
[762] Fix | Delete
*
[763] Fix | Delete
* @since 1.8.7
[764] Fix | Delete
*
[765] Fix | Delete
* @param array $field Field data.
[766] Fix | Delete
*
[767] Fix | Delete
* @return string
[768] Fix | Delete
*/
[769] Fix | Delete
function wpforms_payment_format_quantity( array $field ): string {
[770] Fix | Delete
[771] Fix | Delete
if ( empty( $field['value'] ) ) {
[772] Fix | Delete
return '';
[773] Fix | Delete
}
[774] Fix | Delete
[775] Fix | Delete
return sprintf( /* translators: %1$s - payment amount; %2$d - payment quantity. */
[776] Fix | Delete
esc_html__( '%1$s × %2$d', 'wpforms-lite' ),
[777] Fix | Delete
$field['value'],
[778] Fix | Delete
$field['quantity'] ?? 1
[779] Fix | Delete
);
[780] Fix | Delete
}
[781] Fix | Delete
[782] Fix | Delete
/**
[783] Fix | Delete
* Get the multiplier for a given currency based on its decimal places.
[784] Fix | Delete
*
[785] Fix | Delete
* This function returns a scaling factor used to convert between
[786] Fix | Delete
* the smallest currency unit (e.g., cents for USD) and the standard
[787] Fix | Delete
* representation.
[788] Fix | Delete
* For example,
[789] Fix | Delete
* - USD (2 decimal places) → returns 100
[790] Fix | Delete
* - JPY (0 decimal places) → returns 1
[791] Fix | Delete
*
[792] Fix | Delete
* @since 1.9.5
[793] Fix | Delete
*
[794] Fix | Delete
* @param string $currency Currency.
[795] Fix | Delete
*
[796] Fix | Delete
* @return int
[797] Fix | Delete
*/
[798] Fix | Delete
function wpforms_get_currency_multiplier( string $currency = '' ): int {
[799] Fix | Delete
[800] Fix | Delete
if ( ! $currency ) {
[801] Fix | Delete
$currency = wpforms_get_currency();
[802] Fix | Delete
}
[803] Fix | Delete
[804] Fix | Delete
return (int) str_pad( 1, wpforms_get_currency_decimals( strtolower( $currency ) ) + 1, 0, STR_PAD_RIGHT );
[805] Fix | Delete
}
[806] Fix | Delete
[807] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function