Files
roi-theme/wp-content/plugins/advanced-ads/includes/admin/pages/class-ads-editing.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

220 lines
5.5 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Ads edit screen.
*
* @package AdvancedAds
* @author Advanced Ads <info@wpadvancedads.com>
* @since 1.47.0
*/
namespace AdvancedAds\Admin\Pages;
use DateTimeImmutable;
use AdvancedAds\Constants;
use AdvancedAds\Utilities\WordPress;
use AdvancedAds\Framework\Utilities\Params;
defined( 'ABSPATH' ) || exit;
/**
* Ads.
*/
class Ads_Editing extends Ads {
/**
* Screen unique id.
*
* @return string
*/
public function get_id(): string {
return 'ads-editing';
}
/**
* Register screen into WordPress admin area.
*
* @return void
*/
public function register_screen(): void {
$this->set_hook( Constants::POST_TYPE_AD );
add_action( 'dbx_post_sidebar', [ $this, 'edit_form_end' ] );
add_action( 'edit_form_top', [ $this, 'edit_form_above_title' ] );
add_action( 'post_submitbox_misc_actions', [ $this, 'add_submit_box_meta' ] );
}
/**
* Enqueue assets
*
* @return void
*/
public function enqueue_assets(): void {
$wp_screen = get_current_screen();
if ( 'post' === $wp_screen->base && 'add' !== $wp_screen->action ) {
add_action( 'advanced-ads-admin-header-actions', [ $this, 'add_new_ad_button' ] );
}
if ( 'post' === $wp_screen->base && Constants::POST_TYPE_AD === $wp_screen->post_type ) {
wp_advads()->registry->enqueue_script( 'screen-ads-editing' );
wp_advads()->registry->enqueue_style( 'screen-ads-editing' );
}
}
/**
* Define header args.
*
* @return array
*/
public function define_header_args(): array {
return [
'manual_url' => 'https://wpadvancedads.com/manual/first-ad/',
'show_filter_button' => false,
];
}
/**
* Add information below the ad edit form
*
* @since 1.7.3
*
* @param WP_Post $post WordPress Post object.
*
* @return void
*/
public function edit_form_end( $post ): void {
if ( Constants::POST_TYPE_AD !== $post->post_type ) {
return;
}
include_once ADVADS_ABSPATH . 'views/admin/ads/info-bottom.php';
}
/**
* Add information above the ad title
*
* @since 1.5.6
*
* @param object $post WordPress post type object.
*
* @return void
*/
public function edit_form_above_title( $post ): void {
if ( ! isset( $post->post_type ) || Constants::POST_TYPE_AD !== $post->post_type ) {
return;
}
// Highlight Dummy ad if this is the first ad.
if ( ! WordPress::get_count_ads() ) {
?>
<style>.advanced-ads-type-list-dummy {
font-weight: bold;
}</style>
<?php
}
// Display general and wizard information.
include_once ADVADS_ABSPATH . 'views/admin/ads/info-top.php';
// Dont show placement options if this is an ad translated with WPML since the placement might exist already.
if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
$trid = apply_filters( 'wpml_element_trid', null, $post->ID );
$translations = apply_filters( 'wpml_get_element_translations', null, $trid, 'Advanced_Ads' );
if ( count( $translations ) > 1 ) {
return;
}
}
$ad = wp_advads_get_ad( $post->ID );
$placements = wp_advads_get_placements();
/**
* Display ad injection information after ad is created.
*
* Set `advanced-ads-ad-edit-show-placement-injection` to false if you want to prevent the box from appearing
*/
if ( 6 === Params::get( 'message', 0, FILTER_VALIDATE_INT ) && apply_filters( 'advanced-ads-ad-edit-show-placement-injection', true ) ) {
$latest_post = $this->get_latest_post();
include_once ADVADS_ABSPATH . 'admin/views/placement-injection-top.php';
}
}
/**
* Add meta values below submit box
*
* @since 1.3.15
*
* @param WP_Post $post WordPress post type object.
*
* @return void
*/
public function add_submit_box_meta( $post ): void {
global $wp_locale;
// Early bail!!
if ( Constants::POST_TYPE_AD !== $post->post_type ) {
return;
}
$ad = wp_advads_get_ad( $post->ID );
// Get time set for ad or current timestamp (both GMT).
$utc_ts = $ad->get_expiry_date() ?: current_time( 'timestamp', true ); // phpcs:ignore
$local_time = ( new \DateTimeImmutable( '@' . $utc_ts ) )->setTimezone( WordPress::get_timezone() );
[ $curr_year, $curr_month, $curr_day, $curr_hour, $curr_minute ] = explode( '-', $local_time->format( 'Y-m-d-H-i' ) );
$enabled = (int) ! empty( $ad->get_expiry_date() );
include ADVADS_ABSPATH . 'views/admin/ads/submitbox-meta.php';
}
/**
* Whether to start the wizard by default or not
*
* @since 1.7.4
*
* @return bool true, if wizard should start automatically
*/
private function start_wizard_automatically(): bool {
global $post;
$user_id = get_current_user_id();
if ( ! $user_id ) {
return true;
}
$hide_wizard = get_user_meta( $user_id, 'advanced-ads-hide-wizard', true );
// true the ad already exists, if the wizard was never started or closed.
return ( 'edit' !== $post->filter && ( ! $hide_wizard || 'false' === $hide_wizard ) ) ? true : false;
}
/**
* Whether to show the wizard welcome message or not
*
* @since 1.7.4
*
* @return bool true, if wizard welcome message should be displayed
*/
private function show_wizard_welcome(): bool {
global $post;
$user_id = get_current_user_id();
if ( ! $user_id ) {
return true;
}
$hide_wizard = get_user_meta( $user_id, 'advanced-ads-hide-wizard', true );
return ( ! $hide_wizard && 'edit' !== $post->filter ) ? true : false;
}
/**
* Load latest blog post
*
* @return WP_POST|null
*/
private function get_latest_post() {
$posts = wp_get_recent_posts( [ 'numberposts' => 1 ] );
return $posts ? $posts[0] : null;
}
}