Files
roi-theme/wp-content/plugins/wp-marketing-automations/woofunnels/includes/class-woofunnels-updater-licenses-table.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

245 lines
8.6 KiB
PHP
Executable File

<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // Exit if accessed directly
if ( ! class_exists( 'WP_List_Table' ) ) {
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
if ( ! class_exists( 'WooFunnels_Updater_Licenses_Table' ) ) {
/**
* Class WooFunnels_Updater_Licenses_Table
* @package WooFunnels
*/
#[AllowDynamicProperties]
class WooFunnels_Updater_Licenses_Table extends WP_List_Table {
public $per_page = 100;
public $data;
/**
* Constructor.
* @since 1.0.0
*/
public function __construct( $args = array() ) {
global $status, $page;
parent::__construct( array(
'singular' => 'license', //singular name of the listed records
'plural' => 'licenses', //plural name of the listed records
'ajax' => false, //does this table support ajax?
) );
$status = 'all';
$page = $this->get_pagenum();
$this->data = array();
// Make sure this file is loaded, so we have access to plugins_api(), etc.
require_once( ABSPATH . '/wp-admin/includes/plugin-install.php' );
parent::__construct( $args );
}
// End __construct()
/**
* Text to display if no items are present.
* @return void
* @since 1.0.0
*/
public function no_items() {
echo wpautop( __( 'No plugins available for activation.', 'woofunnels' ) ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, WordPress.WP.I18n.TextDomainMismatch
}
// End no_items(0)
/**
* The content of each column.
*
* @param array $item The current item in the list.
* @param string $column_name The key of the current column.
*
* @return string Output for the current column.
* @since 1.0.0
*/
public function column_default( $item, $column_name ) {
switch ( $column_name ) {
case 'plugin':
case 'product_status':
case 'product_version':
case 'license_expiry':
return $item[ $column_name ];
break;
}
}
// End column_default()
/**
* Content for the "product_name" column.
*
* @param array $item The current item.
*
* @return string The content of this column.
* @since 1.0.0
*/
public function column_plugin( $item ) {
return wpautop( '<strong>' . $item['plugin'] . '</strong>' );
}
// End get_sortable_columns()
/**
* Content for the "product_version" column.
*
* @param array $item The current item.
*
* @return string The content of this column.
* @since 1.0.0
*/
public function column_product_version( $item ) {
if ( isset( $item['latest_version'], $item['product_version'] ) && version_compare( $item['product_version'], $item['latest_version'], '<' ) ) {
$version_text = '<strong>' . $item['product_version'] . '<span class="update-available"> - ' . sprintf( __( 'version %1$s available', 'woofunnels' ), esc_html( $item['latest_version'] ) ) . '</span></strong>' . "\n"; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch, WordPress.WP.I18n.MissingTranslatorsComment
} else {
$version_text = '<strong class="latest-version">' . $item['product_version'] . '</strong>' . "\n";
}
return wpautop( $version_text );
}
// End get_columns()
/**
* Content for the "status" column.
*
* @param array $item The current item.
*
* @return string The content of this column.
* @since 1.0.0
*/
public function column_product_status( $item ) {
$response = '';
$input_text = '<input name="license_keys[' . esc_attr( $item['product_file_path'] ) . '][key]" id="license_keys-' . esc_attr( $item['product_file_path'] ) . '" type="text" size="37" aria-required="true" value="' . $item['existing_key']['key'] . '" placeholder="' . esc_attr__( '
Place your license key here', 'woofunnels' ) . '" />' . "\n"; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
if ( $this->is_license_expire( $item ) ) {
$response_notice = '';
$response_notice .= $input_text;
$response_notice .= '<span class="below_input_message">' . sprintf( __( 'This license has expired. Login to <a target="_blank" href="%s">Your Account</a> and renew your license.', 'woofunnels' ), 'https://myaccount.funnelkit.com/' ) . '</span>'; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch, WordPress.WP.I18n.MissingTranslatorsComment
$response .= apply_filters( 'woofunnels_license_notice_bewlow_field', $response_notice, $item );
} elseif ( 'active' === $item['product_status'] ) {
if ( empty( $item['_data']['activated'] ) ) {
$response_notice = '';
$response_notice .= $input_text;
if ( ! isset( $item['_data']['manually_deactivated'] ) || empty( $item['_data']['manually_deactivated'] ) ) {
$response_notice .= '<span class="below_input_message">' . sprintf( __( 'This license is no longer valid. Login to <a target="_blank" href="%s">Your Account</a> and renew your license.', 'woofunnels' ), 'https://myaccount.funnelkit.com/' ) . '</span>'; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch, WordPress.WP.I18n.MissingTranslatorsComment
}
$response .= apply_filters( 'woofunnels_license_notice_bewlow_field', $response_notice, $item );
} else {
$deactivate_url = wp_nonce_url( add_query_arg( 'action', 'woofunnels_deactivate-product', add_query_arg( 'filepath', $item['product_file_path'], add_query_arg( 'page', filter_input( INPUT_GET, 'page', FILTER_UNSAFE_RAW ), add_query_arg( 'tab', 'licenses' ), network_admin_url( 'admin.php' ) ) ) ), 'bwf-deactivate-product' );
if ( isset( $item['existing_key'] ) && isset( $item['existing_key']['key'] ) ) {
$license_obj = WooFunnels_Licenses::get_instance();
$license_key = $license_obj->get_secret_license_key( $item['existing_key']['key'] );
$response = $license_key . '<br/>';
}
$response .= '<a href="' . esc_url( $deactivate_url ) . '">' . __( 'Deactivate', 'woofunnels' ) . '</a>' . "\n"; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
}
} else {
$response = $input_text;
}
return $response;
}
public function is_license_expire( $item ) {
if ( isset( $item['existing_key']['expires'] ) && $item['existing_key']['expires'] !== '' && ( strtotime( $item['existing_key']['expires'] ) < current_time( 'timestamp' ) ) ) {
return true;
}
if ( isset( $item['_data']['expired'] ) && ! empty( $item['_data']['expired'] ) ) {
return true;
}
return false;
}
public function column_product_expiry( $item ) {
if ( $this->is_license_expire( $item ) ) {
$date_string = __( 'Expire', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
try {
$date = new DateTime( $item['existing_key']['expires'] );
$date_string = $date->format( get_option( 'date_format' ) );
} catch ( Exception $e ) {
}
return $date_string;
} else {
if ( '' === $item['existing_key']['key'] ) {
return __( 'N/A', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
} elseif ( '' === $item['existing_key']['expires'] ) {
return __( 'Lifetime', 'woofunnels' ); // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
} else {
$date = new DateTime( $item['existing_key']['expires'] );
$date_string = $date->format( get_option( 'date_format' ) );
return $date_string;
}
}
}
/**
* Retrieve an array of possible bulk actions.
* @return array
* @since 1.0.0
*/
public function get_bulk_actions() {
$actions = array();
return $actions; // End column_status()
}
/**
* Prepare an array of items to be listed.
* @since 1.0.0
*/
public function prepare_items() {
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array( $columns, $hidden, $sortable );
$total_items = is_array( $this->data ) ? count( $this->data ) : 0;
$this->set_pagination_args( array(
'total_items' => $total_items, //WE have to calculate the total number of items
'per_page' => $total_items, //WE have to determine how many items to show on a page
) );
$this->items = $this->data;
}
public function get_columns() {
$columns = array(
'plugin' => __( 'Plugin', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'product_version' => __( 'Version', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'product_status' => __( 'Key', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
'product_expiry' => __( 'Renews On', 'woofunnels' ), // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch
);
return $columns;
}
// End get_bulk_actions()
public function get_sortable_columns() {
return array();
}
}
}