LLMS_Admin_Post_Table_Certificates

Customize display of the certificate post tables.


Source Source

File: includes/admin/post-types/post-tables/class-llms-admin-post-table-certificates.php

class LLMS_Admin_Post_Table_Certificates {

	use LLMS_Trait_Award_Templates_Post_List_Table;
	use LLMS_Trait_User_Engagement_Type;

	/**
	 * Query string variable used to identify the migration action.
	 *
	 * @var string
	 */
	const MIGRATE_ACTION = 'llms-migrate-legacy-certificate';

	/**
	 * Constructor
	 *
	 * @since 6.0.0
	 *
	 * @return void
	 */
	public function __construct() {

		$this->engagement_type = 'certificate';
		$this->award_template_row_actions(); // defined in LLMS_Trait_Award_Templates_Post_List_Table.

		if ( ! llms_is_block_editor_supported_for_certificates() ) {
			return;
		}

		$post_types = array( 'llms_certificate', 'llms_my_certificate' );
		if ( in_array( llms_filter_input( INPUT_GET, 'post_type' ), $post_types, true ) ) {
			add_filter( 'display_post_states', array( $this, 'add_states' ), 20, 2 );
			add_filter( 'post_row_actions', array( $this, 'add_actions' ), 20, 2 );
		}

		if ( 1 === (int) llms_filter_input( INPUT_GET, self::MIGRATE_ACTION, FILTER_SANITIZE_NUMBER_INT ) ) {
			add_filter( 'llms_certificate_template_version', array( $this, 'upgrade_template' ), 10 );
		}

		add_filter( 'manage_llms_my_certificate_posts_columns', array( $this, 'mod_cols' ), 10, 1 );

	}

	/**
	 * Add post row actions.
	 *
	 * @since 6.0.0
	 *
	 * @param array   $actions Array of post row actions.
	 * @param WP_Post $post    Post object for the row.
	 * @return array
	 */
	public function add_actions( $actions, $post ) {

		$cert = llms_get_certificate( $post, true );
		if ( 1 === $cert->get_template_version() ) {

			$url                             = esc_url( add_query_arg( self::MIGRATE_ACTION, 1, get_edit_post_link( $post ) ) );
			$actions[ self::MIGRATE_ACTION ] = '<a href="' . $url . '">' . __( 'Migrate legacy certificate', 'lifterlms' ) . '</a>';

		}

		return $actions;

	}

	/**
	 * Add state information denoting the usage of the legacy template.
	 *
	 * @since 6.0.0
	 * @since 6.2.0 Made sure to only process certificates.
	 *
	 * @param string[] $states Array of post states.
	 * @param WP_Post  $post   Post object.
	 * @return string[]
	 */
	public function add_states( $states, $post ) {

		$cert = llms_get_certificate( $post, true );
		if ( $cert && 1 === $cert->get_template_version() ) {
			$states['llms-legacy-template'] = __( 'Legacy', 'lifterlms' );
		}

		return $states;

	}

	/**
	 * Modify the columns list for the `llms_my_certificate` post type.
	 *
	 * @since 6.0.0
	 *
	 * @param array $cols Array of columns.
	 * @return array
	 */
	public function mod_cols( $cols ) {
		unset( $cols['author'] );
		return $cols;
	}

	/**
	 * Callback function for `llms_certificate_template_version` forcing an upgrade to version 2.
	 *
	 * @since 6.0.0
	 *
	 * @param integer $version Current template version.
	 * @return integer
	 */
	public function upgrade_template( $version ) {
		return 2;
	}

}

Top ↑

Methods Methods

  • __construct — Constructor
  • add_actions — Add post row actions.
  • add_states — Add state information denoting the usage of the legacy template.
  • mod_cols — Modify the columns list for the `llms_my_certificate` post type.
  • upgrade_template — Callback function for `llms_certificate_template_version` forcing an upgrade to version 2.

Top ↑

Changelog Changelog

Changelog
Version Description
6.0.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.