HEX
Server: Apache/2.4.57 (Unix) OpenSSL/1.1.1k
System: Linux tam.zee-supreme-vps.net 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64
User: adltc (1070)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/adltc/public_html/wp-content/plugins/wordfence-activator/functions.php
<?php
/**
 * Requires at least: 5.9.0
 * Requires PHP:      7.2
 * Version:           231129
 */
if ( ! function_exists( 'is_plugin_active' ) ) {
	require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( ! function_exists( 'wp_get_current_user' ) ) {
	require_once( ABSPATH . 'wp-includes/pluggable.php' );
}

/**
 * @param string $name
 * @param string $slug
 * @param callable $callback
 * @param int $priority
 *
 * @return void
 * @author mohamedhk2
 */
$plugins_filter = function ( string $name, string $slug, callable $callback, int $priority = 99 ) {
	$is_current = isset( $_REQUEST['plugin_status'] ) && $_REQUEST['plugin_status'] === $slug;
	add_filter( 'plugins_list', function ( $plugins ) use ( $name, $slug, $is_current, $callback ) {
		/**
		 * @see \WP_Plugins_List_Table::prepare_items
		 * @see \WP_Plugins_List_Table::get_sortable_columns
		 */
		global $status;
		if ( $is_current ) {
			$status = $slug;
		}
		$inj_plugins = array_filter( $plugins['all'], $callback );
		if ( ! empty( $inj_plugins ) ) {
			$plugins[ $slug ] = $inj_plugins;
		}

		return $plugins;
	}, $priority );
	add_filter( 'views_plugins', function ( $views ) use ( $name, $slug, $is_current ) {
		/**
		 * @see \WP_Plugins_List_Table::views
		 * @see \WP_Plugins_List_Table::get_views
		 */
		if ( ! isset( $views[ $slug ] ) ) {
			return $views;
		}
		global $totals;
		if ( $is_current ) {
			foreach ( $views as $key => $view ) {
				$views[ $key ] = str_replace( ' class="current" aria-current="page"', null, $view );
			}
		}
		$views[ $slug ] = sprintf(
			'<a href="%s"%s>%s</a>',
			esc_url( add_query_arg( 'plugin_status', $slug, 'plugins.php' ) ),
			$is_current ? ' class="current" aria-current="page"' : null,
			sprintf( '%s <span class="count">(%s)</span>', $name, $totals[ $slug ] )
		);

		return $views;
	}, $priority );
};

$plugins_filter( 'WP Activators', 'wp-activators', function ( $plugin ) {
	return $plugin['Author'] === 'moh@medhk2' && str_ends_with( $plugin['Name'], ' Activ@tor' );
} );

return [
	'is_plugin_installed'          => $is_plugin_installed = function ( $plugin ): bool {
		$installed_plugins = get_plugins();

		return isset( $installed_plugins[ $plugin ] );
	},
	'admin_notice_ignored'         => function (): bool {
		global $pagenow;
		$action = $_REQUEST['action'] ?? '';

		return $pagenow == 'update.php' && in_array( $action, [ 'install-plugin', 'upload-plugin' ], true );
	},
	'admin_notice_plugin_install'  => function ( string $plugin, ?string $wp_plugin_id, string $plugin_name, string $activator_name, string $domain ) use ( $is_plugin_installed ): bool {
		if ( ! $is_plugin_installed( $plugin ) ) {
			if ( ! current_user_can( 'install_plugins' ) ) {
				return true;
			}
			$install_url = wp_nonce_url( self_admin_url( "update.php?action=install-plugin&plugin={$wp_plugin_id}" ), "install-plugin_{$wp_plugin_id}" );
			$message     = '<h3>' . esc_html__( "{$activator_name} plugin requires installing the {$plugin_name} plugin", $domain ) . '</h3>';
			$message     .= '<p>' . __( "Install and activate the \"{$plugin_name}\" plugin to access all the <b>{$activator_name}</b> features.", $domain ) . '</p>';
			if ( $wp_plugin_id !== null ) {
				$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $install_url, esc_html__( 'Install Now', $domain ) ) . '</p>';
			}
			add_action( 'admin_notices', function () use ( $message ) {
				?>
                <div class="notice notice-error">
                <p><?= $message ?></p>
                </div><?php
			} );

			return true;
		}

		return false;
	},
	'admin_notice_plugin_activate' => function ( string $plugin, string $activator_name, string $domain ): bool {
		if ( ! is_plugin_active( $plugin ) ) {
			if ( ! current_user_can( 'activate_plugins' ) ) {
				return true;
			}
			$plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
			# sub str from the beginning of $plugin to the first '/'
			$plugin_id       = substr( $plugin, 0, strpos( $plugin, '/' ) );
			$activate_action = sprintf(
				'<a href="%s" id="activate-%s" class=button-primary aria-label="%s">%s</a>',
				wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . urlencode( $plugin ) . '&amp;plugin_status=all&amp;paged=1&amp;s=', 'activate-plugin_' . $plugin ),
				esc_attr( $plugin_id ),
				/* translators: %s: Plugin name. */
				esc_attr( sprintf( _x( 'Activate %s', 'plugin' ), $plugin_data['Name'] ) ),
				__( 'Activate Now' )
			);
			$message         = '<h3>' . esc_html__( "You're not using \"{$plugin_data['Name']}\" plugin yet!", $domain ) . '</h3>';
			$message         .= '<p>' . __( "Activate the \"{$plugin_data['Name']}\" plugin to start using all of <b>{$activator_name}</b> plugin’s features.", $domain ) . '</p>';
			$message         .= '<p>' . $activate_action . '</p>';
			add_action( 'admin_notices', function () use ( $message ) {
				?>
                <div class="notice notice-warning">
                <p><?= $message ?></p>
                </div><?php
			} );

			return true;
		}

		return false;
	},
	'json_response'                => function ( $data ) {
		return [
			'response' => [ 'code' => 200, 'message' => 'OK' ],
			'body'     => json_encode( $data )
		];
	},
	'private_property'             => function ( object $object, string $property ) {
		$reflectionProperty = new \ReflectionProperty( get_class( $object ), $property );
		$reflectionProperty->setAccessible( true );

		return $reflectionProperty->getValue( $object );
	},
	'plugins_filter'               => $plugins_filter,
	'download_file'                => function ( $url, $file_path ) {
		$contents = file_get_contents( $url );
		if ( $contents ) {
			put_content:
			$put_contents = file_put_contents( $file_path, $contents );
			if ( $put_contents === false ) {
				unlink( $file_path );

				return false;
			}
		} else {
			$res = wp_remote_get( $url );
			if ( ! is_wp_error( $res ) && ( $res['response']['code'] == 200 ) ) {
				$contents = $res['body'];
				goto put_content;
			} else {
				return false;
			}
		}

		return true;
	},
	'serialize_response'           => function ( $data ): array {
		return [
			'response' => [ 'code' => 200, 'message' => 'OK' ],
			'body'     => serialize( $data )
		];
	}
];