Files
roi-theme/wp-content/plugins/advanced-ads/includes/crons/class-ads.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

79 lines
1.9 KiB
PHP
Executable File

<?php
/**
* Crons Ads.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.48.2
*/
namespace AdvancedAds\Crons;
use DateTimeImmutable;
use AdvancedAds\Constants;
use AdvancedAds\Abstracts\Ad;
use AdvancedAds\Framework\Interfaces\Integration_Interface;
defined( 'ABSPATH' ) || exit;
/**
* Crons Ads.
*/
class Ads implements Integration_Interface {
/**
* Hook into WordPress
*
* @return void
*/
public function hooks(): void {
add_action( 'advanced-ads-ad-pre-save', [ $this, 'save_expiration_date' ] );
add_action( Constants::CRON_JOB_AD_EXPIRATION, [ $this, 'update_ad_status' ] );
}
/**
* Create CRON job and save into independent meta
*
* @param Ad $ad Ad instance.
*
* @return void
*/
public function save_expiration_date( Ad $ad ): void {
$args = [ 'post_id' => $ad->get_id() ];
$next = wp_next_scheduled( Constants::CRON_JOB_AD_EXPIRATION, $args );
if ( 0 === $ad->get_expiry_date() ) {
delete_post_meta( $ad->get_id(), Constants::AD_META_EXPIRATION_TIME );
wp_unschedule_event( $next, Constants::CRON_JOB_AD_EXPIRATION, $args );
return;
}
if ( array_key_exists( 'expiry_date', $ad->get_changes() ) ) {
wp_unschedule_event( $next, Constants::CRON_JOB_AD_EXPIRATION, $args );
}
$datetime = ( new DateTimeImmutable() )->setTimestamp( $ad->get_expiry_date() );
update_post_meta( $ad->get_id(), Constants::AD_META_EXPIRATION_TIME, $datetime->format( 'Y-m-d H:i:s' ) );
wp_schedule_single_event( $ad->get_expiry_date(), Constants::CRON_JOB_AD_EXPIRATION, $args );
}
/**
* Update post status to expired
*
* @param int $post_id Post ID.
*
* @return void
*/
public function update_ad_status( $post_id ): void {
kses_remove_filters();
wp_update_post(
[
'ID' => $post_id,
'post_status' => Constants::AD_STATUS_EXPIRED,
]
);
kses_init_filters();
}
}