HEX
Server:
System: Linux aac286ea486c 5.14.0-687.15.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jun 11 08:51:45 EDT 2026 x86_64
User: root (0)
PHP: 8.2.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,disk_free_space,diskfreespace
Upload Files
File: /dom877180/wp-content/plugins/gravityview/includes/fields/class-gravityview-field-is-starred.php
<?php
/**
 * @file class-gravityview-field-is-starred.php
 * @package GravityView
 * @subpackage includes\fields
 */

class GravityView_Field_Is_Starred extends GravityView_Field {

	var $name = 'is_starred';

	var $is_searchable = true;

	var $search_operators = array( 'is', 'isnot' );

	var $group = 'meta';

	var $contexts = array( 'single', 'multiple', 'export' );

	var $icon = 'dashicons-star-filled';

	private static $has_star_field = false;

	/**
	 * GravityView_Field_Is_Starred constructor.
	 */
	public function __construct() {

		$this->label = esc_html__( 'Entry Star', 'gk-gravityview' );
		$this->default_search_label = __( 'Is Starred', 'gk-gravityview' );
		$this->description = esc_html__( 'Display the entry\'s "star" status.', 'gk-gravityview' );


		$this->add_hooks();

		parent::__construct();
	}

	private function add_hooks() {
	    /** @see \GV\Field::get_value_filters */
		add_filter( "gravityview/field/{$this->name}/output", array( $this, 'get_content' ), 4, 2 );
		add_action( 'gravityview/template/after', array( $this, 'print_script'), 10, 1 );
		add_filter( 'gravityview_entry_default_fields', array( $this, 'add_default_field' ), 10, 3 );
	}

	/**
	 * Add this field to the default fields in the GV field picker
	 *
	 * @param  array $entry_default_fields Array of fields shown by default
	 * @param  string|array $form form_ID or form object
	 * @param  string $zone Either 'single', 'directory', 'header', 'footer'
	 *
	 * @return array
	 */
	function add_default_field( $entry_default_fields = array(), $form = array(), $zone = '' ) {

		if( 'edit' !== $zone ) {
			$entry_default_fields[ $this->name ] = array(
				'label' => $this->label,
				'desc'  => $this->description,
				'type'  => $this->name,
			);
		}

		return $entry_default_fields;
	}

	/**
	 * Show the star image
	 *
	 * @since 2.0
	 *
	 * @param string $output HTML value output
	 * @param \GV\Field_Template $template The field template being rendered
	 *
	 * @return string Image of the star
	 */
	public function get_content( $output, $template ) {
		$entry = $template->entry;

	    $star_url = GFCommon::get_base_url() .'/images/star' . intval( $entry['is_starred'] ) .'.png';

		$entry_id = '';

		if ( GravityView_Roles_Capabilities::has_cap( 'gravityview_edit_entries' ) ) {
			$entry_id = "data-entry-id='{$entry->ID}'";
		}

		// if( $show_as_star )
		$output = '<img class="gv-star-image" '.$entry_id.' data-is_starred="'. intval( $entry['is_starred'] ) .'" src="'. esc_attr( $star_url ) .'" />';

		self::$has_star_field = true;

		return $output;
	}

	/**
	 * Add JS to the bottom of the View if there is a star field and user has `gravityview_edit_entries` cap
     *
	 * @param \GV\Template_Context $context The template context
     * @since 2.0
     *
     * @return void
	 */
	public function print_script( $context ) {

		if( ! self::$has_star_field ) {
			return;
		}

		if ( ! GravityView_Roles_Capabilities::has_cap( 'gravityview_edit_entries' ) ) {
            return;
		}

		?>
<style>
    .gv-star-image[data-entry-id] {
        cursor: pointer;
    }
</style>
<script>
	jQuery( document ).ready( function ( $ ) {
		$('[class*=is_starred] img.gv-star-image[data-entry-id]').on('click', function() {

			var is_starred = $(this).data('is_starred'),
			    update = ( is_starred ? 0 : 1 ),
			    entry_id = $(this).data('entry-id'),
			    $star = $( this );

			$.ajax({
				type: "POST",
				url: "<?php echo esc_js( admin_url( 'admin-ajax.php' ) ); ?>",
				data: {
					action: 'rg_update_lead_property',
					rg_update_lead_property: '<?php echo wp_create_nonce( 'rg_update_lead_property' ) ?>',
					lead_id: entry_id,
					name: 'is_starred',
					value: update
				}
			})
            .done(function() {
                $star
                    .attr('src', $star.attr('src').replace( "star" + is_starred + ".png", "star" + update + ".png" ) )
                    .data( 'is_starred', update );
			})
            .fail(function() {
                alert(<?php echo json_encode( __( 'There was an error updating the entry.', 'gk-gravityview' ) ); ?>);
            });
		});
	});
</script>
<?php
	}

}

new GravityView_Field_Is_Starred;