summary ) { echo '
' . esc_html( $this->summary ) . '
'; } } /** * Implement to output feature box long text * * @since 3.0 */ abstract public function output_feature_box_long(); /** * Create feature * * @since 3.0 */ public function __construct() { /** * Fires when Feature object is created * * @hook ep_feature_create * @param {Feature} $feature Current feature * @since 3.0 */ do_action( 'ep_feature_create', $this ); } /** * Returns requirements status of feature * * @since 2.2 * @return FeatureRequirementsStatus */ public function requirements_status() { $status = new FeatureRequirementsStatus( 0 ); /** * Filter feature requirement status * * @hook ep_{indexable_slug}_index_kill * @param {FeatureRequirementStatus} $status Current feature requirement status * @param {Feature} $feature Current feature * @since 2.2 * @return {FeatureRequirementStatus} New status */ return apply_filters( 'ep_feature_requirements_status', $status, $this ); } /** * Return feature settings * * @since 2.2.1, 4.5.0 started using default settings * @return array */ public function get_settings() { $all_settings = Utils\get_option( 'ep_feature_settings', [] ); $feature_settings = ( ! empty( $all_settings[ $this->slug ] ) ) ? (array) $all_settings[ $this->slug ] : []; $feature_settings = wp_parse_args( $feature_settings, $this->default_settings ); return $feature_settings; } /** * Return a specific setting of the feature * * @since 4.5.0 * @param string $setting_name The setting name * @return mixed */ public function get_setting( string $setting_name ) { $settings = $this->get_settings(); return isset( $settings[ $setting_name ] ) ? $settings[ $setting_name ] : null; } /** * Returns true if feature is active * * @since 2.2 * @return boolean */ public function is_active() { $feature_settings = Utils\get_option( 'ep_feature_settings', [] ); $active = false; if ( ! empty( $feature_settings[ $this->slug ] ) && $feature_settings[ $this->slug ]['active'] ) { $active = true; } /** * Filter whether a feature is active or not * * @hook ep_feature_active * @param {bool} $active Whether feature is active or not * @param {array} $feature_settings Current feature settings * @param {Feature} $feature Current feature * @since 2.2 * @return {bool} New active value */ return apply_filters( 'ep_feature_active', $active, $feature_settings, $this ); } /** * Get the value of the setting that requires a reindex, if it exists. * * @since 4.5.0 * @return mixed */ public function get_reindex_setting() { $settings = $this->get_settings(); $setting = $this->setting_requires_install_reindex; return $settings && $setting && ! empty( $settings[ $setting ] ) ? $settings[ $setting ] : ''; } /** * To be run after initial feature activation * * @since 2.1 */ public function post_activation() { /** * Fires after feature is activated * * @hook ep_feature_post_activation * @param {string} $slug Feature slug * @param {Feature} $feature Current feature * @since 2.1 */ do_action( 'ep_feature_post_activation', $this->slug, $this ); } /** * Outputs feature box * * @since 2.1 */ public function output_feature_box() { $this->output_feature_box_summary(); /** * Fires before feature box summary is shown * * @hook ep_feature_box_summary * @param {string} $slug Feature slug * @param {Feature} $feature Current feature * @since 2.1 */ do_action( 'ep_feature_box_summary', $this->slug, $this ); ?>