HEX
Server: LiteSpeed
System: Linux premium283.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: citaqlmd (746)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: /home/citaqlmd/nt.lmskreators.com/wp-content/plugins/gp-limit-submissions/includes/GPLS_Rule_Ip.php
<?php

class GPLS_Rule_Ip extends GPLS_Rule {
	private $type = 'all';
	private $ip   = '';

	public static function load( $ruleData, $form_id = false ) {
		$rule = new self;
		if ( $ruleData['rule_ip'] == 'specific' ) {
			$rule->type = 'specific';
			$rule->ip   = $ruleData['rule_ip_specific'];
		} else {
			$rule->type = 'all';
		}

		return $rule;
	}

	public function context() {

		// if rule has specific IP, we only want to test if this user has the same IP
		if ( $this->type == 'specific' ) {
			if ( $this->ip != GFFormsModel::get_ip() ) {
				return false;
			}
		}

		return true;
	}

	public function query() {
		global $wpdb;
		if ( $this->type == 'specific' ) {
			// with specific IP we check the provided IP, which won't apply the limit to the current user if they have a different IP
			$ip_to_check = $this->ip;
		} else {
			// with "all" IP's we check current user IP because limit should be applied to them
			$ip_to_check = GFFormsModel::get_ip();
		}

		return $wpdb->prepare( 'ip = %s', $ip_to_check );
	}

	public function render_option_fields( $gfaddon ) {
		$gfaddon->settings_select(
			array(
				'label'   => __( 'IP Rule', 'gp-limit-submissions' ),
				'name'    => 'rule_ip_{i}',
				'class'   => 'rule_value_selector rule_ip rule_ip_{i} gpls-secondary-field',
				'choices' => array(
					array(
						'label' => __( 'Each IP', 'gp-limit-submissions' ),
						'value' => 'all',
					),
					array(
						'label' => __( 'Specific IP', 'gp-limit-submissions' ),
						'value' => 'specific',
					),
				),
			)
		);
		$gfaddon->settings_text(
			array(
				'label' => __( 'IP Rule', 'gp-limit-submissions' ),
				'name'  => 'rule_ip_specific_{i}',
				'class' => 'rule_value_selector rule_ip_specific rule_ip_specific_{i} gpls-secondary-field',
			)
		);
	}

	public function get_type() {
		return 'ip';
	}
}