File: /home/mahdetej/public_html/wp-content/plugins/Melli-shild/admin/views/page-settings.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
$ui = Melli_Shield_Admin_UI::instance();
$settings = new Melli_Shield_Settings();
$opt_name = Melli_Shield_Config::OPTION_SETTINGS;
$blockers = array(
'block_fonts' => array( __( 'فونت خارجی', 'melli-shield' ), __( 'Google Fonts، Typekit، Font Awesome', 'melli-shield' ) ),
'block_cdn' => array( __( 'CDN خارجی', 'melli-shield' ), __( 'cdnjs، jsDelivr، unpkg', 'melli-shield' ) ),
'block_analytics' => array( __( 'آنالیتیک', 'melli-shield' ), __( 'Analytics، GTM، Hotjar', 'melli-shield' ) ),
'block_updates' => array( __( 'آپدیت وردپرس', 'melli-shield' ), __( 'بررسی آپدیت هسته و افزونه', 'melli-shield' ) ),
'block_gravatar' => array( __( 'Gravatar', 'melli-shield' ), __( 'آواتار محلی بهجای Gravatar', 'melli-shield' ) ),
'block_embeds' => array( __( 'Embed', 'melli-shield' ), __( 'YouTube، Vimeo، Twitter', 'melli-shield' ) ),
'block_recaptcha' => array( __( 'کپچا', 'melli-shield' ), __( 'reCAPTCHA، hCaptcha، Turnstile', 'melli-shield' ) ),
'block_heartbeat' => array( __( 'Heartbeat', 'melli-shield' ), __( 'کاهش polling ادمین', 'melli-shield' ) ),
'block_email' => array( __( 'ایمیل آفلاین', 'melli-shield' ), __( 'ثبت بهجای ارسال', 'melli-shield' ) ),
'allow_messenger' => array( __( 'پیامرسان', 'melli-shield' ), __( 'تلگرام، اسلک، دیسکورد', 'melli-shield' ) ),
);
?>
<div class="wrap">
<?php $ui->header( Melli_Shield_Config::PAGE_SETTINGS ); ?>
<?php $ui->page_title( __( 'تنظیمات', 'melli-shield' ), __( 'بلاکرها، سرویسهای مجاز و گزارشگیری', 'melli-shield' ) ); ?>
<?php
if ( function_exists( 'settings_errors' ) ) {
settings_errors( Melli_Shield_Config::SETTINGS_GROUP );
}
?>
<form method="post" action="options.php" class="msh-settings-form">
<?php settings_fields( Melli_Shield_Config::SETTINGS_GROUP ); ?>
<div class="msh-card msh-card--accent">
<h2 class="msh-card__title"><?php esc_html_e( 'بلاکرها', 'melli-shield' ); ?></h2>
<p class="msh-card__hint">
<?php
printf(
/* translators: %s: dashboard link */
esc_html__( 'حالت سپر (عادی / ملی / آفلاین) را از %s تغییر دهید.', 'melli-shield' ),
'<a href="' . esc_url( Melli_Shield_Config::admin_url() ) . '">' . esc_html__( 'داشبورد', 'melli-shield' ) . '</a>'
);
?>
</p>
<div class="msh-settings-grid">
<?php foreach ( $blockers as $key => $info ) :
$val = Melli_Shield_Utils::get_setting( $key, 0 );
?>
<div class="msh-toggle-row">
<div>
<div class="msh-toggle-row__label"><?php echo esc_html( $info[0] ); ?></div>
<div class="msh-toggle-row__desc"><?php echo esc_html( $info[1] ); ?></div>
</div>
<label class="msh-toggle">
<input type="checkbox" name="<?php echo esc_attr( $opt_name ); ?>[<?php echo esc_attr( $key ); ?>]" value="1" <?php checked( 1, $val ); ?> />
<span class="msh-toggle__slider"></span>
</label>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="msh-grid-2">
<div class="msh-card">
<h2 class="msh-card__title"><?php esc_html_e( 'گزارشگیری', 'melli-shield' ); ?></h2>
<?php
$log_on = Melli_Shield_Utils::get_setting( 'log_enabled', 1 );
$ret = Melli_Shield_Utils::get_setting( 'log_retention', 30 );
?>
<div class="msh-toggle-row">
<div>
<div class="msh-toggle-row__label"><?php esc_html_e( 'فعالسازی لاگ', 'melli-shield' ); ?></div>
<div class="msh-toggle-row__desc"><?php esc_html_e( 'ثبت درخواستهای مسدود و مجاز', 'melli-shield' ); ?></div>
</div>
<label class="msh-toggle">
<input type="checkbox" name="<?php echo esc_attr( $opt_name ); ?>[log_enabled]" value="1" <?php checked( 1, $log_on ); ?> />
<span class="msh-toggle__slider"></span>
</label>
</div>
<div class="msh-form-field msh-field msh-mt-md">
<label for="msh-log-retention"><?php esc_html_e( 'نگهداری لاگ (روز)', 'melli-shield' ); ?></label>
<input type="number" id="msh-log-retention" class="msh-input" style="max-width:120px;"
name="<?php echo esc_attr( $opt_name ); ?>[log_retention]"
value="<?php echo esc_attr( (int) $ret ); ?>" min="1" max="365" />
</div>
<p class="msh-card__hint msh-mt-md" style="margin-bottom:0;">
<a href="<?php echo esc_url( Melli_Shield_Config::admin_url( Melli_Shield_Config::PAGE_LOG ) ); ?>"><?php esc_html_e( 'مشاهده گزارش', 'melli-shield' ); ?></a>
</p>
</div>
<div class="msh-card">
<h2 class="msh-card__title"><?php esc_html_e( 'راهنمای سریع', 'melli-shield' ); ?></h2>
<ul class="msh-list msh-list--muted">
<li><?php esc_html_e( 'بلاکرها در هر سه حالت فعال میشوند.', 'melli-shield' ); ?></li>
<li><?php esc_html_e( 'سرویسهای مجاز حتی در آفلاین کار میکنند.', 'melli-shield' ); ?></li>
<li><?php esc_html_e( 'لیست سفید برای استثنای عمومی است.', 'melli-shield' ); ?></li>
</ul>
</div>
</div>
<div class="msh-card">
<h2 class="msh-card__title"><?php esc_html_e( 'دامنههای سرویس مجاز', 'melli-shield' ); ?></h2>
<p class="msh-card__hint"><?php esc_html_e( 'درگاه پرداخت، SMS، API تلگرام و سرویسهای ضروری — در همه حالتها مجاز.', 'melli-shield' ); ?></p>
<?php $settings->render_services(); ?>
</div>
<div class="msh-form-actions">
<?php submit_button( __( 'ذخیره تنظیمات', 'melli-shield' ), 'primary msh-btn msh-btn--gold', 'submit', false ); ?>
<span class="msh-text-sm msh-text-muted"><?php esc_html_e( 'تغییرات پس از ذخیره اعمال میشوند.', 'melli-shield' ); ?></span>
</div>
</form>
<div class="msh-card msh-mt-md">
<h2 class="msh-card__title"><?php esc_html_e( 'لاگ دیباگ موقت', 'melli-shield' ); ?></h2>
<p class="msh-card__hint"><?php esc_html_e( 'برای عیبیابی مشکلات CSS، فعالسازی و بارگذاری فایلها. پس از رفع مشکل غیرفعال کنید.', 'melli-shield' ); ?></p>
<p class="msh-text-sm"><code><?php echo esc_html( Melli_Shield_Debug::log_file() ); ?></code></p>
<?php if ( Melli_Shield_Debug::is_wp_config_forced() ) : ?>
<p class="msh-card__hint msh-mt-md" style="margin-bottom:0;">
<?php esc_html_e( 'دیباگ با MELLI_SHIELD_DEBUG در wp-config.php روشن است و از این صفحه قابل خاموش کردن نیست.', 'melli-shield' ); ?>
</p>
<?php endif; ?>
<form method="post" action="<?php echo esc_url( Melli_Shield_Debug::form_action_url() ); ?>" class="msh-btn-row msh-mt-md">
<input type="hidden" name="action" value="msh_debug_toggle" />
<?php wp_nonce_field( 'msh_debug_settings' ); ?>
<?php if ( Melli_Shield_Debug::enabled() ) : ?>
<?php if ( ! Melli_Shield_Debug::is_wp_config_forced() ) : ?>
<button type="submit" name="msh_debug_action" value="disable" class="msh-btn msh-btn--ghost"><?php esc_html_e( 'غیرفعال کردن لاگ', 'melli-shield' ); ?></button>
<?php endif; ?>
<button type="submit" name="msh_debug_action" value="clear" class="msh-btn msh-btn--ghost"><?php esc_html_e( 'پاک کردن فایل لاگ', 'melli-shield' ); ?></button>
<?php else : ?>
<button type="submit" name="msh_debug_action" value="enable" class="msh-btn"><?php esc_html_e( 'فعال کردن لاگ دیباگ', 'melli-shield' ); ?></button>
<?php endif; ?>
</form>
<?php if ( Melli_Shield_Debug::enabled() ) :
$tail = Melli_Shield_Debug::tail( 40 );
if ( ! empty( $tail ) ) : ?>
<pre class="msh-log-viewer msh-mt-md" style="max-height:280px;overflow:auto;background:var(--ms-surface-2);padding:12px;border-radius:8px;font-size:12px;direction:ltr;text-align:left;"><?php echo esc_html( implode( "\n", $tail ) ); ?></pre>
<?php endif;
endif; ?>
</div>
<?php $ui->footer(); ?>
</div>