[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.128.199.242: ~ $
<?php
/**
 * LearnDash License utility functions.
 *
 * @since 4.3.1
 *
 * @package LearnDash\License
 *
 * @cspell:ignore shere .
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

use LearnDash\Core\Utilities\Cast;

const LEARNDASH_HUB_LICENSE_CACHE_OPTION  = 'learndash_hub_license_result';
const LEARNDASH_HUB_LICENSE_CACHE_TIMEOUT = 6 * HOUR_IN_SECONDS;
const LEARNDASH_LICENSE_KEY               = 'nss_plugin_license_sfwd_lms';
const LEARNDASH_LICENSE_EMAIL_KEY         = 'nss_plugin_license_email_sfwd_lms';
const LEARNDASH_HUB_PLUGIN_SLUG           = 'learndash-hub/learndash-hub.php';
/**
 * Updates the LearnDash Hub license cache when the license is verified.
 *
 * @since 4.5.0
 *
 * @param WP_Error|bool $license_response The license response.
 *
 * @return void
 */
add_action(
	'learndash_licensing_management_license_verified',
	function( $license_response ) {
		update_option(
			LEARNDASH_HUB_LICENSE_CACHE_OPTION,
			array(
				time(),
				! is_wp_error( $license_response ),
			)
		);
	}
);

/**
 * Removes the license cache after the license logout.
 *
 * @since 4.5.0
 *
 * @return void
 */
add_action(
	'learndash_licensing_management_license_logout',
	function () {
		delete_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION );
	}
);

/**
 * Activates the LearnDash Hub plugin (Licensing & Management).
 *
 * @since 4.8.0
 * @deprecated 4.18.0 -- This is now included in LearnDash - LMS.
 *
 * @return bool True if the plugin is activated. False otherwise.
 */
function learndash_activate_learndash_hub(): bool {
	_deprecated_function( __FUNCTION__, '4.18.0' );

	if ( learndash_is_learndash_hub_active() ) {
		return true;
	}

	$activation_result = activate_plugin(
		LEARNDASH_HUB_PLUGIN_SLUG,
		'',
		is_plugin_active_for_network( LEARNDASH_LMS_PLUGIN_KEY ),
		true
	);

	if ( is_wp_error( $activation_result ) ) {
		WP_DEBUG && error_log( 'Failed to activate the learndash licensing & management plugin: ' . $activation_result->get_error_message() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log

		return false;
	}

	return true;
}

/**
 * Check if LearnDash Hub is installed.
 *
 * @since 4.8.0
 * @deprecated 4.18.0 -- This is now included in LearnDash - LMS.
 *
 * @return bool True if the LearnDash Hub is installed. False otherwise.
 */
function learndash_is_learndash_hub_installed() {
	_deprecated_function( __FUNCTION__, '4.18.0' );

	if ( ! function_exists( 'get_plugins' ) ) {
		require_once ABSPATH . 'wp-admin/includes/plugin.php';
	}

	return array_key_exists( LEARNDASH_HUB_PLUGIN_SLUG, get_plugins() );
}

/**
 * Check if LearnDash Hub is installed and active.
 *
 * @since 4.3.1
 * @deprecated 4.18.0 -- This is now included in LearnDash - LMS.
 *
 * @return bool True if the LearnDash Hub is installed and active. False otherwise.
 */
function learndash_is_learndash_hub_active() {
	_deprecated_function( __FUNCTION__, '4.18.0' );

	if ( ! function_exists( 'is_plugin_active' ) ) {
		include_once ABSPATH . 'wp-admin/includes/plugin.php';
	}

	return function_exists( 'is_plugin_active' ) && is_plugin_active( LEARNDASH_HUB_PLUGIN_SLUG );
}

/**
 * Validate a license key.
 *
 * @since 4.3.1
 *
 * @param string $email The email address of the license key.
 * @param string $license_key The license key.
 *
 * @return bool True if the license key is valid. False otherwise.
 */
function learndash_validate_hub_license( string $email, string $license_key ) {
	if ( ! class_exists( 'LearnDash\Hub\Component\API' ) ) {
		delete_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION );
		return false; // legacy license system is not supported.
	}

	if ( empty( $email ) || empty( $license_key ) ) {
		delete_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION );
		return false;
	}

	$hub_api           = new LearnDash\Hub\Component\API();
	$validation_result = $hub_api->verify_license( $email, $license_key );

	$license_valid = ! is_wp_error( $validation_result ) && $validation_result === true;
	update_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION, array( time(), $license_valid ) );

	return $license_valid;
}

/**
 * Check if the license is valid.
 *
 * @since 4.3.1
 *
 * @return bool True if the license is valid. False otherwise.
 */
function learndash_is_license_hub_valid() {
	$license_valid = get_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION );

	if (
		! is_array( $license_valid ) ||
		count( $license_valid ) !== 2 ||
		$license_valid[0] < time() - LEARNDASH_HUB_LICENSE_CACHE_TIMEOUT
	) {
		// recheck the license.
		return learndash_validate_hub_license(
			get_option( LEARNDASH_LICENSE_EMAIL_KEY, '' ),
			get_option( LEARNDASH_LICENSE_KEY, '' )
		);
	}

	return $license_valid[1];
}

/**
 * Get the last check time of the LearnDash Hub license status.
 *
 * @since 4.3.1
 *
 * @return int The last check time or 0 if never checked.
 */
function learndash_get_last_license_hub_check_time() {
	$license_valid = get_option( LEARNDASH_HUB_LICENSE_CACHE_OPTION );

	if (
		! is_array( $license_valid ) ||
		count( $license_valid ) !== 2
	) {
		return 0;
	}

	return intval( $license_valid[0] );
}

/**
 * Checks Whether the learndash license is valid or not.
 *
 * @since 3.4.0
 * @since 4.18.0 -- This is now an alias for learndash_is_license_hub_valid().
 *
 * @return bool
 */
function learndash_is_learndash_license_valid() {
	return learndash_is_license_hub_valid();
}

/**
 * Get the last license check time.
 *
 * @since 4.3.1
 * @since 4.18.0 -- This is now an alias for learndash_get_last_license_hub_check_time().
 *
 * @return int The last license check time.
 */
function learndash_get_last_license_check_time() {
	return learndash_get_last_license_hub_check_time();
}

/**
 * Utility function to check if we should check for updates.
 *
 * Updates includes by not limited to:
 * License checks, LD core and ProPanel Updates,
 * Add-on updates, Translations.
 *
 * @since 3.1.8
 *
 * @return bool
 */
function learndash_updates_enabled() {
	$updates_enabled = true;

	if (
		// @phpstan-ignore-next-line -- It is possible for this to not evaluate to true.
		defined( 'LEARNDASH_UPDATES_ENABLED' )
		// @phpstan-ignore-next-line -- It is possible for this to not evaluate to true.
		&& ( true !== LEARNDASH_UPDATES_ENABLED )
	) {
		$updates_enabled = false;
	}

	/**
	 * Filter for controlling update processing cycle.
	 *
	 * @since 3.1.8
	 *
	 * @param boolean $updates_enabled true.
	 * @return boolean True to process updates call. Anything else to abort.
	 */
	return (bool) apply_filters( 'learndash_updates_enabled', $updates_enabled );
}

/**
 * Check if we are showing the license notice.
 *
 * @since 3.1.8
 *
 * @return bool
 */
function learndash_get_license_show_notice() {
	if (
		// @phpstan-ignore-next-line -- It is possible for this to not evaluate to true.
		defined( 'LEARNDASH_LICENSE_PANEL_SHOW' )
		// @phpstan-ignore-next-line -- It is possible for this to not evaluate to true.
		&& false === LEARNDASH_LICENSE_PANEL_SHOW
	) {
		return false;
	}

	if ( ! learndash_updates_enabled() ) {
		$current_screen = get_current_screen();
		if (
			! $current_screen instanceof WP_Screen
			|| ! in_array(
				$current_screen->id,
				[
					'admin_page_learndash-setup',
				],
				true
			)
		) {
			return false;
		}

		$user_id = get_current_user_id();
		if ( ! empty( $user_id ) ) {
			$notice_dismissed_timestamp = get_user_meta( $user_id, 'learndash_license_notice_dismissed', true );
			$notice_dismissed_timestamp = absint( $notice_dismissed_timestamp );
			if ( ( time() - $notice_dismissed_timestamp ) < ( DAY_IN_SECONDS ) ) {
				return false;
			}
		}
	}

	return true;
}

/**
 * Get the license notice message.
 *
 * @since 3.1.8
 *
 * @param integer $mode Which message.
 *
 * @return string
 */
function learndash_get_license_message( $mode = 1 ) {
	if ( learndash_updates_enabled() ) {
		if ( 2 === $mode ) {
			return sprintf(
				// translators: placeholders: HTML surrounding the plugin name and HTML surrounding the plugin update link.
				esc_html_x( 'License of your plugin %1$sLearnDash LMS%2$s is invalid or incomplete. Please click %3$shere%4$s and update your license.', 'placeholders: Plugin name. Plugin update link.', 'learndash' ),
				'<strong>',
				'</strong>',
				'<a href="' . get_admin_url( null, 'admin.php?page=learndash_hub_licensing' ) . '">',
				'</a>'
			);
		}

		return sprintf(
			// translators: placeholder: Link to purchase LearnDash.
			esc_html_x( 'Please enter your email and a valid license or %s a license now.', 'placeholder: link to purchase LearnDash', 'learndash' ),
			"<a href='http://www.learndash.com/' target='_blank' rel='noreferrer noopener'>" . esc_html__( 'buy', 'learndash' ) . '</a>'
		);
	}

	return sprintf(
		// translators: placeholders: Plugin name. Plugin update link.
		esc_html_x( 'LearnDash update and license calls are temporarily disabled. Click %s for more information.', 'placeholders: FAQ update link.', 'learndash' ),
		'<a target="_blank" rel="noopener noreferrer" aria-label="' . esc_html__( 'opens in a new tab', 'learndash' ) . '" href="https://www.learndash.com/support/docs/faqs/why-are-the-license-updates-and-license-checks-disabled-on-my-site/">' . esc_html__( 'here', 'learndash' ) . '</a>'
	);
}

/**
 * Get license notice class.
 *
 * @since 3.1.8
 *
 * @param string $css_classes Current class.
 *
 * @return string
 */
function learndash_get_license_class( $css_classes = '' ) {
	if ( ! learndash_updates_enabled() ) {
		$css_classes = 'notice notice-info is-dismissible learndash-updates-disabled-dismissible';
	}

	return $css_classes;
}

/**
 * Get license notice attributes.
 *
 * @since 3.1.8
 * @since 4.18.0 Added $should_echo parameter to allow returning a string.
 * Defaults to echo-ing the output, which was the previous behavior.
 *
 * @param bool $should_echo Whether to echo the output. Defaults to true.
 *
 * @return string Echos the content or returns it as a string.
 */
function learndash_get_license_data_attrs( bool $should_echo = true ) {
	ob_start();

	if ( ! learndash_updates_enabled() ) {
		echo ' data-notice-dismiss-nonce="' . esc_attr( wp_create_nonce( 'notice-dismiss-nonce-' . get_current_user_id() ) ) . '" ';
	} else {
		echo '';
	}

	$output = Cast::to_string( ob_get_clean() );

	if ( $should_echo ) {
		echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped above.
	}

	return $output;
}

/**
 * AJAX function to handle license notice dismiss action from browser.
 *
 * @since 3.1.8
 *
 * @return void
 */
function learndash_license_notice_dismissed_ajax() {
	$user_id = get_current_user_id();

	if (
		empty( $_POST['learndash_license_notice_dismissed_nonce'] )
		|| $user_id <= 0
	) {
		return;
	}

	$nonce = sanitize_text_field( wp_unslash( $_POST['learndash_license_notice_dismissed_nonce'] ) );

	if (
		! wp_verify_nonce(
			$nonce,
			"notice-dismiss-nonce-{$user_id}"
		)
	) {
		return;
	}

	update_user_meta( $user_id, 'learndash_license_notice_dismissed', time() );
}
add_action( 'wp_ajax_learndash_license_notice_dismissed', 'learndash_license_notice_dismissed_ajax' );

/**
 * AJAX function to handle hub upgrade notice dismiss action from browser.
 *
 * @since 4.3.1
 *
 * @return void
 */
function learndash_hub_upgrade_dismissed_ajax() {
	$user_id = get_current_user_id();

	if (
		empty( $_POST['learndash_hub_upgrade_dismissed_nonce'] )
		|| $user_id <= 0
	) {
		return;
	}

	$nonce = sanitize_text_field( wp_unslash( $_POST['learndash_hub_upgrade_dismissed_nonce'] ) );

	if (
		! wp_verify_nonce(
			$nonce,
			"notice-dismiss-nonce-{$user_id}"
		)
	) {
		return;
	}

	delete_option( 'learndash_show_hub_upgrade_admin_notice' );
}
add_action( 'wp_ajax_learndash_hub_upgrade_dismissed', 'learndash_hub_upgrade_dismissed_ajax' );


/**
 * Hide the ProPanel license notice when we have disabled the LD updates.
 *
 * @since 3.1.8
 *
 * @return void
 */
function learndash_license_hide_propanel_notice() {
	if ( ! learndash_updates_enabled() ) {
		?>
		<style>
		p#nss_plugin_updater_admin_notice { display:none !important; }
		</style>
		<?php
	}
}
add_action( 'admin_footer', 'learndash_license_hide_propanel_notice', 99 );

/**
 * Gets the `nss_plugin_updater_sfwd_lms` instance.
 *
 * If the instance already exists it returns the existing instance otherwise creates a new instance.
 *
 * @since 4.0.0
 * @deprecated 4.18.0 -- nss_plugin_updater_sfwd_lms is deprecated.
 *
 * @param bool $force_new Whether to force a new instance.
 *
 * @return nss_plugin_updater_sfwd_lms The `nss_plugin_updater_sfwd_lms` instance.
 */
function learndash_get_updater_instance( $force_new = false ) {
	_deprecated_function( __FUNCTION__, '4.18.0' );

	static $updater_sfwd_lms = null;

	if ( true === $force_new ) {
		if ( ! is_null( $updater_sfwd_lms ) ) {
			$updater_sfwd_lms = null;
		}
	}

	if ( ! $updater_sfwd_lms instanceof nss_plugin_updater_sfwd_lms ) {
		$nss_plugin_updater_plugin_remote_path = 'https://support.learndash.com/';
		$nss_plugin_updater_plugin_slug        = basename( LEARNDASH_LMS_PLUGIN_DIR ) . '/sfwd_lms.php';
		$updater_sfwd_lms                      = new nss_plugin_updater_sfwd_lms( $nss_plugin_updater_plugin_remote_path, $nss_plugin_updater_plugin_slug );
	}

	if ( $updater_sfwd_lms instanceof nss_plugin_updater_sfwd_lms ) {
		return $updater_sfwd_lms;
	}
}

Filemanager

Name Type Size Permission Actions
admin Folder 0755
classes Folder 0755
coupon Folder 0755
course Folder 0755
deprecated Folder 0755
dto Folder 0755
exam Folder 0755
group Folder 0755
gutenberg Folder 0755
helpers Folder 0755
import Folder 0755
interfaces Folder 0755
lib Folder 0755
licensing Folder 0755
loggers Folder 0755
models Folder 0755
payments Folder 0755
quiz Folder 0755
reports Folder 0755
rest-api Folder 0755
settings Folder 0755
shortcodes Folder 0755
site-health Folder 0755
views Folder 0755
widgets Folder 0755
class-ld-addons-updater.php File 35.03 KB 0644
class-ld-bitbucket-api.php File 59.32 KB 0644
class-ld-course-wizard.php File 29.51 KB 0644
class-ld-cpt-instance.php File 34.14 KB 0644
class-ld-cpt-widget.php File 198 B 0644
class-ld-cpt.php File 18.17 KB 0644
class-ld-custom-label.php File 24.3 KB 0644
class-ld-design-wizard.php File 37.05 KB 0644
class-ld-gdpr.php File 48.61 KB 0644
class-ld-lms.php File 224.76 KB 0644
class-ld-permalinks.php File 29.92 KB 0644
class-ld-search.php File 6.66 KB 0644
class-ld-semper-fi-module.php File 61.88 KB 0644
class-ld-setup-wizard.php File 23.09 KB 0644
class-ld-translations.php File 28.85 KB 0644
class-ldlms-db.php File 19.01 KB 0644
class-ldlms-post-types.php File 8.64 KB 0644
class-ldlms-transients.php File 5.04 KB 0644
ld-assignment-uploads.php File 38.35 KB 0644
ld-autoupdate.php File 241 B 0644
ld-certificates.php File 26.74 KB 0644
ld-convert-post-pdf.php File 31.07 KB 0644
ld-core-functions.php File 857 B 0644
ld-groups.php File 92.44 KB 0644
ld-license.php File 12.93 KB 0644
ld-misc-functions.php File 72.5 KB 0644
ld-reports.php File 59.38 KB 0644
ld-scripts.php File 6.89 KB 0644
ld-users.php File 47.6 KB 0644
ld-wp-editor.php File 3.46 KB 0644