'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( '' . $item['plugin'] . '' ); } // 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 = '' . $item['product_version'] . ' - ' . sprintf( __( 'version %1$s available', 'woofunnels' ), esc_html( $item['latest_version'] ) ) . '' . "\n"; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch, WordPress.WP.I18n.MissingTranslatorsComment } else { $version_text = '' . $item['product_version'] . '' . "\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 = '' . "\n"; // phpcs:ignore WordPress.WP.I18n.TextDomainMismatch if ( $this->is_license_expire( $item ) ) { $response_notice = ''; $response_notice .= $input_text; $response_notice .= '' . sprintf( __( 'This license has expired. Login to Your Account and renew your license.', 'woofunnels' ), 'https://myaccount.funnelkit.com/' ) . ''; // 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 .= '' . sprintf( __( 'This license is no longer valid. Login to Your Account and renew your license.', 'woofunnels' ), 'https://myaccount.funnelkit.com/' ) . ''; // 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 . '
'; } $response .= '' . __( 'Deactivate', 'woofunnels' ) . '' . "\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(); } } }