Current File : /var/www/e360ban/wp-content/plugins/wp-shortcodes-usuarios/integraciones/subscriptions.php |
<?php
/**
* Datos de WooCommerce Subscriptions
* copyright Enrique J. Ros - enrique@enriquejros.com
*
* @author Enrique J. Ros
* @link https://www.enriquejros.com
* @since 1.0.0
* @package WPShortcodesUsuarios
*
*/
defined ('ABSPATH') or exit;
Class WP_Shortcodes_Usuarios_Subscriptions {
public function __construct ($dato_shortcode, $user_id, $shortcode_id) {
$this->resultado = false;
switch ($dato_shortcode) {
case 'tabla_suscripciones':
if (!count ($suscripciones = wcs_get_users_subscriptions ($user_id)))
break;
$estados = wcs_get_subscription_statuses();
$formato = get_option ('date_format');
$url_mi_cuenta = get_permalink (get_option ('woocommerce_myaccount_page_id'));
$incluye_acciones = apply_filters ('wp_shortcodes_usuarios_suscripciones_acciones', true, $shortcode_id);
/**
* Si no queremos que la tabla incluya la columna de acciones de la suscripción:
*
* add_filter ('wp_shortcodes_usuarios_suscripciones_acciones', '__return_false');
*
*/
$this->resultado = sprintf ('<table class="my_account_subscriptions my_account_orders woocommerce-orders-table woocommerce-MyAccount-subscriptions shop_table shop_table_responsive woocommerce-orders-table--subscriptions wp-shortcodes-suscripciones-tabla">
<thead>
<tr>
<th class="wp-shortcodes-suscripciones-id"><span class="nobr">%s</span></th>
<th class="wp-shortcodes-suscripciones-estado"><span class="nobr">%s</span></th>
<th class="wp-shortcodes-suscripciones-ultimo"><span class="nobr">%s</span></th>
<th class="wp-shortcodes-suscripciones-proximo"><span class="nobr">%s</span></th>
<th class="wp-shortcodes-suscripciones-total"><span class="nobr">%s</span></th>
<th class="wp-shortcodes-suscripciones-acciones"><span class="nobr">%s</span></th>
</tr>
</thead>
<tbody>', __('Suscripción', 'wp-shortcodes-usuario'), __('Status', 'woocommerce'), __('Último pago', 'wp-shortcodes-usuario'), __('Próximo pago', 'wp-shortcodes-usuario'), __('Total', 'woocommerce'), $incluye_acciones ? __('Actions', 'woocommerce') : '');
foreach ($suscripciones as $id => $suscripcion) {
//print_r($suscripcion);
if ($incluye_acciones) {
$acciones = '';
foreach (wcs_get_all_user_actions_for_subscription ($suscripcion, $user_id) as $key => $accion)
$acciones .= sprintf ('<a href="%s" class="woocommerce-button button %s">%s</a> <a href="%sview-subscription/%s/" class="woocommerce-button button view">%s</a>', $accion['url'], $key, __($accion['name'], 'woocommerce-subscriptions'), $url_mi_cuenta, $id, __('View', 'woocommerce'));
}
$this->resultado .= sprintf ('
<tr>
<td class="subscription-id order-number woocommerce-orders-table__header woocommerce-orders-table__header-order-number woocommerce-orders-table__header-subscription-id wp-shortcodes-suscripciones-id" data-title="%s">
<a href="%sview-subscription/%s/">#%s</a>
</td>
<td class="subscription-status order-status woocommerce-orders-table__header woocommerce-orders-table__header-order-status woocommerce-orders-table__header-subscription-status wp-shortcodes-suscripciones-estado" data-title="%s">%s</td>
<td class="woocommerce-orders-table__header wp-shortcodes-suscripciones-ultimo" data-title="%s">%s</td>
<td class="subscription-next-payment order-date woocommerce-orders-table__header woocommerce-orders-table__header-order-date woocommerce-orders-table__header-subscription-next-payment wp-shortcodes-suscripciones-proximo" data-title="%s">%s</td>
<td class="subscription-total order-total woocommerce-orders-table__header woocommerce-orders-table__header-order-total woocommerce-orders-table__header-subscription-total wp-shortcodes-suscripciones-total" data-title="%s">%s</td>
<td class="subscription-actions order-actions woocommerce-orders-table__cell woocommerce-orders-table__cell-subscription-actions woocommerce-orders-table__cell-order-actions wp-shortcodes-suscripciones-acciones" data-title="%s" style="text-align:left">%s</td>
</tr>',
__('Suscripción', 'wp-shortcodes-usuario'),
$url_mi_cuenta,
$id,
$id,
__('Status', 'woocommerce'),
__($estados['wc-' . $suscripcion->get_status()], 'woocommerce-subscriptions'),
__('Último pago', 'wp-shortcodes-usuario'),
date_i18n ($formato, strtotime ($suscripcion->get_date('last_order_date_paid'))),
__('Próximo pago', 'wp-shortcodes-usuario'),
($fecha = $suscripcion->get_date('next_payment_date')) ? date_i18n ($formato, strtotime ($fecha)) : '-',
__('Total', 'woocommerce'),
wc_price ($suscripcion->get_total()),
$incluye_acciones ? __('Actions', 'woocommerce') : '',
$incluye_acciones ? $acciones : ''
);
}
$this->resultado .= '</tbody></table>';
break;
case 'fecha_fin_prueba':
$suscripciones = [];
foreach (wcs_get_users_subscriptions ($user_id) as $id => $suscripcion)
if ($fecha = $suscripcion->get_date('trial_end'))
$this->resultado = date_i18n (get_option ('date_format'), strtotime ($fecha));
$this->resultado or $this->resultado = __('No hay ningún periodo de prueba activo.', 'wp-shortcodes-usuario');
break;
case 'fecha_fin_suscripcion':
foreach (wcs_get_users_subscriptions ($user_id) as $id => $suscripcion)
$this->resultado = date_i18n (get_option ('date_format'), strtotime ($suscripcion->get_date('end')));
break;
case 'fecha_proxima_renovacion':
$suscripciones = [];
foreach (wcs_get_users_subscriptions ($user_id) as $id => $suscripcion)
if ($fecha = $suscripcion->get_date('next_payment_date'))
$suscripciones[] = strtotime ($fecha);
$this->resultado = count ($suscripciones) ? date_i18n (get_option ('date_format'), min ($suscripciones)) : __('No hay suscripciones activas', 'wp-shortcodes-usuario');
break;
case 'cantidad_proximo_pago':
$totales = [];
foreach (wcs_get_users_subscriptions ($user_id) as $id => $suscripcion)
if ($fecha = strtotime ($suscripcion->get_date('next_payment_date')))
$totales[$fecha] = $suscripcion->get_total();
$this->resultado = count ($totales) ? wc_price ($totales[min (array_keys ($totales))]) : '';
break;
}
return $this->resultado;
}
}