HEX
Server: Apache/2.4.25 (Debian)
System: Linux server17 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
User: web37 (1062)
PHP: 7.4.30
Disabled: show_source, highlight_file, apache_child_terminate, apache_get_modules, apache_note, apache_setenv, virtual, dl, disk_total_space, posix_getpwnam, posix_getpwuid, posix_mkfifo, posix_mknod, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_nice, openlog, syslog, pfsockopen
Upload Files
File: /var/www/web37/htdocs/sexnetzwerk24/wp-content/themes/classipress/includes/cron.php
<?php
/**
 * Cron job, scheduled tasks.
 *
 * @package ClassiPress\Cron
 * @author  AppThemes
 * @since   ClassiPress 3.0.4
 */


/**
 * Schedules the expired ads check.
 *
 * @return void
 */
function cp_schedule_expire_check() {
	global $cp_options;

	$recurrance = $cp_options->ad_expired_check_recurrance;
	if ( empty( $recurrance ) ) {
		$recurrance = 'daily';
	}

	// clear schedule if prune ads disabled or recurrance set to none
	if ( ! $cp_options->post_prune || $recurrance == 'none' ) {
		if ( wp_next_scheduled( 'cp_ad_expired_check' ) ) {
			wp_clear_scheduled_hook( 'cp_ad_expired_check' );
		}
		return;
	}

	// set schedule if does not exist
	if ( ! wp_next_scheduled( 'cp_ad_expired_check' ) ) {
		wp_schedule_event( time(), $recurrance, 'cp_ad_expired_check' );
		return;
	}

	// re-schedule if settings changed
	$schedule = wp_get_schedule( 'cp_ad_expired_check' );
	if ( $schedule && $schedule != $recurrance ) {
		wp_clear_scheduled_hook( 'cp_ad_expired_check' );
		wp_schedule_event( time(), $recurrance, 'cp_ad_expired_check' );
	}

}
add_action( 'init', 'cp_schedule_expire_check' );


/**
 * Prunes expired ads from site, scheduled with WP Cron.
 *
 * @return void
 */
function cp_check_expired_cron() {
	global $wpdb, $cp_options;

	$message = '';
	$links_list = '';
	$subject = __( 'ClassiPress Ads Expired', APP_TD );

	if ( $cp_options->post_prune ) {

		// get expired ads
		$args = array(
			'post_type' => APP_POST_TYPE,
			'posts_per_page' => -1,
			'fields' => 'ids',
			'meta_query' => array(
				array(
					'key' => 'cp_sys_expire_date',
					'value' => current_time( 'mysql' ),
					'compare' => '<',
				),
			),
			'no_found_rows' => true,
		);
		$expired = new WP_Query( $args );

		if ( isset( $expired->posts ) && is_array( $expired->posts ) ) {
			foreach ( $expired->posts as $post_id ) {
				wp_update_post( array( 'ID' => $post_id, 'post_status' => 'draft' ) );
				$links_list .= html( 'li', html_link( get_permalink( $post_id ) ) ) . PHP_EOL;
			}
		}

		$message .= html( 'p', __( 'Your cron job has run successfully. ', APP_TD ) );
		if ( empty( $links_list ) ) {
			$message .= html( 'p', __( 'No expired ads were found.', APP_TD ) );
		} else {
			$message .= html( 'p', __( 'The following ads expired and have been taken down from your website: ', APP_TD ) );
			$message .= html( 'ul', $links_list );
		}

	} else {
		$expired = false;
		$message .= html( 'p', __( 'Your cron job has run successfully. However, the pruning ads option is turned off so no expired ads were taken down from the website.', APP_TD ) );
	}

	$message .= html( 'p', __( 'Regards,', APP_TD ) );
	$message .= html( 'p', __( 'ClassiPress', APP_TD ) );

	if ( $cp_options->prune_ads_email ) {
		$email = array( 'to' => get_option( 'admin_email' ), 'subject' => $subject, 'message' => $message );
		$email = apply_filters( 'cp_email_admin_ads_expired', $email, $expired );

		appthemes_send_email( $email['to'], $email['subject'], $email['message'] );
	}

}
add_action( 'cp_ad_expired_check', 'cp_check_expired_cron' );


/**
 * Sends email reminder about ending membership plan, default is 7 days before expire.
 * Cron jobs execute the following function once per day.
 *
 * @return void
 */
function cp_membership_reminder_cron() {
	global $wpdb, $cp_options;

	if ( ! $cp_options->membership_ending_reminder_email ) {
		return;
	}

	$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
	$subject = sprintf( __( 'Membership Subscription Ending on %s', APP_TD ), $blogname );
	$siteurl = home_url( '/' );

	$days_before = $cp_options->membership_ending_reminder_days;
	$days_before = is_numeric( $days_before ) ? $days_before : 7;
	$timestamp = wp_next_scheduled( 'cp_send_membership_reminder' );
	$timestamp = $timestamp - ( 1 * 24 * 60 * 60 ) + ( get_option( 'gmt_offset' ) * 3600 ); // minus 1 day to get current schedule time, plus GMT offset
	$date_max = date( 'Y-m-d H:i:s', $timestamp + ( $days_before * 24 * 60 * 60 ) );
	$date_min = date( 'Y-m-d H:i:s', $timestamp + ( ( $days_before - 1 ) * 24 * 60 * 60 ) );

	$query_users = $wpdb->prepare( "SELECT $wpdb->users.ID FROM $wpdb->users
		LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id
		WHERE $wpdb->usermeta.meta_key = 'membership_expires'
		AND $wpdb->usermeta.meta_value < %s
		AND $wpdb->usermeta.meta_value > %s
		", $date_max, $date_min );

	$userids = $wpdb->get_col( $query_users );

	if ( ! $userids ) {
		return;
	}

	foreach ( $userids as $user_id ) {
		$user = get_userdata( $user_id );
		$mailto = $user->user_email;
		$user_login = appthemes_clean( $user->user_login );

		$membership = cp_get_membership_package( $user->active_membership_pack );
		$membership_pack_name = appthemes_clean( $membership->pack_name );
		$membership_expires = appthemes_display_date( $user->membership_expires );

		$message  = html( 'p', sprintf( __( 'Hi %s,', APP_TD ), $user_login ) ) . PHP_EOL;
		$message .= html( 'p', sprintf( __( 'Your membership pack will expire in %d days! Please renew your membership to continue posting classified ads.', APP_TD ), $days_before ) ) . PHP_EOL;

		$message_details  = __( 'Membership Details', APP_TD ) . '<br />';
		$message_details .= __( '-----------------', APP_TD ) . '<br />';
		$message_details .= sprintf( __( 'Membership Pack: %s', APP_TD ), $membership_pack_name ) . '<br />';
		$message_details .= sprintf( __( 'Membership Expires: %s', APP_TD ), $membership_expires ) . '<br />';
		$message_details .= sprintf( __( 'Renew Your Membership Pack: %s', APP_TD ), html_link( CP_MEMBERSHIP_PURCHASE_URL ) ) . '<br />';

		$message .= html( 'p', $message_details ) . PHP_EOL;
		$message .= html( 'p', sprintf( __( 'For questions or problems, please contact us directly at %s', APP_TD ), get_option( 'admin_email' ) ) );
		$message .= html( 'p', __( 'Regards,', APP_TD ) . '<br />' . sprintf( __( 'Your %s Team', APP_TD ), $blogname ) );
		$message .= html( 'p', html_link( $siteurl ) );

		$email = array( 'to' => $mailto, 'subject' => $subject, 'message' => $message );
		$email = apply_filters( 'cp_email_user_membership_reminder', $email, $user_id );

		appthemes_send_email( $email['to'], $email['subject'], $email['message'] );
	}

}
add_action( 'cp_send_membership_reminder', 'cp_membership_reminder_cron' );


/**
 * Schedules a daily event to send membership reminder emails.
 *
 * @return void
 */
function cp_schedule_membership_reminder() {
	if ( ! wp_next_scheduled( 'cp_send_membership_reminder' ) ) {
		wp_schedule_event( time(), 'daily', 'cp_send_membership_reminder' );
	}
}
add_action( 'init', 'cp_schedule_membership_reminder' );