<?php
if (!defined('ABSPATH')) {
	exit;
}

$s = IComm_SM_Settings::get();
$keywords = array_values(array_filter(array_map('strval', (array) ($s['watch_keywords'] ?? []))));
$can_watch = IComm_SM_Features::can_use('keyword_watch');
$can_reco = IComm_SM_Features::can_use('recommendations');

$days = 30;
$topic = '';
if (isset($_GET['topic'])) {
	$topic = sanitize_text_field(wp_unslash((string) $_GET['topic']));
	if ($topic !== (string) ($s['last_niche_topic'] ?? '')) {
		$s['last_niche_topic'] = $topic;
		IComm_SM_Settings::save($s);
	}
} elseif (!empty($s['last_niche_topic'])) {
	$topic = sanitize_text_field((string) $s['last_niche_topic']);
}

$gsc_ready = IComm_SM_Settings::is_gsc_ready();
$has_query_data = IComm_SM_DB::queries_row_count() > 0;
$has_page_map = IComm_SM_DB::query_pages_row_count() > 0;
$rank_rows = ($can_watch && $gsc_ready && $has_query_data)
	? IComm_SM_DB::ranking_table($topic, 25, $days)
	: [];
$mapped_count = 0;
foreach ($rank_rows as $rr) {
	if (!empty($rr['page_url'])) {
		$mapped_count++;
	}
}

$cur = $can_watch ? IComm_SM_DB::keywords_summary($keywords, $days, 0) : [];
$prev = $can_watch ? IComm_SM_DB::keywords_summary($keywords, $days, $days) : [];
$reco = ($can_watch && $can_reco) ? IComm_SM_Recommendations::items_for_keywords($keywords) : [];

$clear_url = add_query_arg(['page' => 'icomm-metrix-keywords', 'topic' => ''], admin_url('admin.php'));
$sync_url = wp_nonce_url(
	add_query_arg(['action' => 'icomm_sm_sync_now'], admin_url('admin-post.php')),
	'icomm_sm_sync_now'
);
$connections_url = add_query_arg(['page' => 'icomm-metrix-connections'], admin_url('admin.php'));
?>
<div class="wrap icomm-sm-wrap" dir="rtl" lang="he">
	<h1><?php esc_html_e('דירוגים בגוגל', 'icomm-metrix'); ?> <span>v<?php echo esc_html(ICOMM_SM_VERSION); ?></span> <?php echo IComm_SM_Features::pro_badge_html(); ?></h1>
	<p style="margin:6px 0 8px;font-size:14px;max-width:920px;">
		<?php esc_html_e('מילת חיפוש, איזה עמוד באתר מופיע בתוצאות, ובאיזה מקום ועמוד בחיפוש גוגל.', 'icomm-metrix'); ?>
	</p>
	<p class="description" style="margin:0 0 14px;max-width:920px;">
		<?php esc_html_e('הנתונים מגיעים מ־Google Search Console (אורגני בלבד, לא מודעות). המיקום הוא לפי מה שגוגל מדווח לתקופה האחרונה על פני חיפושים רבים, ולכן חיפוש אישי שלכם עכשיו עשוי להיראות אחרת. עמוד בחיפוש = כל 10 תוצאות אורגניות.', 'icomm-metrix'); ?>
	</p>

	<?php if (!empty($_GET['saved'])) : ?>
		<div class="notice notice-success is-dismissible" dir="rtl" lang="he" style="direction:rtl;text-align:right;"><p><?php esc_html_e('נשמר.', 'icomm-metrix'); ?></p></div>
	<?php elseif (!empty($_GET['locked'])) : ?>
		<div class="notice notice-warning is-dismissible" dir="rtl" lang="he" style="direction:rtl;text-align:right;"><p><?php esc_html_e('מודול “מילות מפתח” זמין ב-PRO.', 'icomm-metrix'); ?></p></div>
	<?php endif; ?>

	<?php echo IComm_SM_Features::locked_notice_html(__('דירוגי מילות מפתח + מעקב', 'icomm-metrix')); ?>

	<div class="<?php echo $can_watch ? '' : 'icomm-sm-locked-preview'; ?>" style="max-width:960px;">

		<h2 style="margin-top:8px;"><?php esc_html_e('מילה → עמוד באתר → מקום בגוגל', 'icomm-metrix'); ?></h2>
		<p class="description" style="margin-top:0;">
			<?php esc_html_e('נתונים אמיתיים מ־Google Search Console. אפשר לסנן לפי תחום, או לראות את כל האתר.', 'icomm-metrix'); ?>
		</p>

		<form method="get" action="<?php echo esc_url(admin_url('admin.php')); ?>" style="display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:12px 0 16px;">
			<input type="hidden" name="page" value="icomm-metrix-keywords" />
			<p style="margin:0;flex:1 1 260px;">
				<label for="icomm_sm_rank_topic" style="display:block;font-weight:600;margin-bottom:4px;"><?php esc_html_e('תחום (אופציונלי)', 'icomm-metrix'); ?></label>
				<input type="text" class="regular-text" style="width:100%;max-width:100%;" name="topic" id="icomm_sm_rank_topic" value="<?php echo esc_attr($topic); ?>" placeholder="<?php echo esc_attr__('לדוגמה: משכנתא לעולים', 'icomm-metrix'); ?>" dir="auto" maxlength="120" />
			</p>
			<p style="margin:0;display:flex;gap:8px;align-items:center;">
				<?php submit_button(__('הצג דירוגים', 'icomm-metrix'), 'primary', 'submit', false); ?>
				<?php if ($topic !== '') : ?>
					<a class="button" href="<?php echo esc_url($clear_url); ?>"><?php esc_html_e('נקה תחום (כל האתר)', 'icomm-metrix'); ?></a>
				<?php endif; ?>
			</p>
		</form>

		<?php if (!$can_watch) : ?>
			<p class="description"><?php esc_html_e('ב‑PRO: טבלת דירוגים לפי תחום או לכל האתר, עם עמוד נוחת ושינוי חודשי.', 'icomm-metrix'); ?></p>
		<?php elseif (!$gsc_ready) : ?>
			<p class="description">
				<?php esc_html_e('חברו Search Console כדי לראות דירוגים.', 'icomm-metrix'); ?>
				<a href="<?php echo esc_url($connections_url); ?>"><?php esc_html_e('למסך חיבורים', 'icomm-metrix'); ?></a>
			</p>
		<?php elseif (!$has_query_data) : ?>
			<p class="description">
				<?php esc_html_e('אין עדיין נתוני שאילתות. סנכרנו מ־GSC ואז חזרו לכאן.', 'icomm-metrix'); ?>
				<a href="<?php echo esc_url($sync_url); ?>"><?php esc_html_e('סנכרון עכשיו', 'icomm-metrix'); ?></a>
			</p>
		<?php elseif ($rank_rows === []) : ?>
			<p class="description">
				<?php
				echo $topic !== ''
					? esc_html__('לא נמצאו שאילתות עם חשיפות לתחום הזה. נסו ניסוח קצר יותר או נקו את התחום.', 'icomm-metrix')
					: esc_html__('לא נמצאו שאילתות עם חשיפות בחלון 30 הימים האחרונים.', 'icomm-metrix');
				?>
			</p>
		<?php else : ?>
			<p style="margin:0 0 8px;">
				<strong>
					<?php
					echo $topic !== ''
						? esc_html(sprintf(__('תוצאות חיפוש גוגל לתחום «%s»', 'icomm-metrix'), $topic))
						: esc_html__('תוצאות חיפוש גוגל לכל האתר (לפי חשיפות)', 'icomm-metrix');
					?>
				</strong>
				<span class="description" style="margin-right:8px;"><?php echo esc_html(sprintf(__('%d מילות', 'icomm-metrix'), count($rank_rows))); ?></span>
			</p>
			<?php if (!$has_page_map || $mapped_count === 0) : ?>
				<div class="notice notice-warning inline" style="margin:0 0 12px;padding:8px 12px;">
					<p style="margin:0;">
						<?php esc_html_e('עדיין אין מיפוי מילה→עמוד מגוגל. לחצו «סנכרון עכשיו» בדשבורד או בחיבורים, ואז חזרו לכאן. עד אז יוצג רק המיקום הממוצע.', 'icomm-metrix'); ?>
						<a href="<?php echo esc_url($sync_url); ?>"><?php esc_html_e('סנכרון עכשיו', 'icomm-metrix'); ?></a>
					</p>
				</div>
			<?php endif; ?>
			<table class="widefat striped" dir="rtl" lang="he">
				<thead>
					<tr>
						<th style="width:22%;"><?php esc_html_e('מילת חיפוש בגוגל', 'icomm-metrix'); ?></th>
						<th style="width:34%;"><?php esc_html_e('עמוד באתר שמופיע בתוצאות', 'icomm-metrix'); ?></th>
						<th style="width:22%;"><?php esc_html_e('מקום בגוגל', 'icomm-metrix'); ?></th>
						<th style="width:12%;"><?php esc_html_e('שינוי מול חודש קודם', 'icomm-metrix'); ?></th>
						<th style="width:10%;"><?php esc_html_e('קליקים', 'icomm-metrix'); ?></th>
					</tr>
				</thead>
				<tbody>
					<?php foreach ($rank_rows as $row) : ?>
						<?php
						$dpos = (float) ($row['delta_position'] ?? 0);
						$pos = (float) ($row['position'] ?? 0);
						$page_url = (string) ($row['page_url'] ?? '');
						$page_label = (string) ($row['page_label'] ?? '');
						if ($page_label === '' && $page_url !== '') {
							$page_label = $page_url;
						}
						$serp = IComm_SM_DB::serp_place_label($pos);
						$delta_style = 'color:#64748b;';
						$delta_text = '-';
						if ($dpos > 0.05) {
							$delta_style = 'color:#15803d;font-weight:600;';
							$delta_text = '↑ ' . (string) round($dpos, 1);
						} elseif ($dpos < -0.05) {
							$delta_style = 'color:#b91c1c;font-weight:600;';
							$delta_text = '↓ ' . (string) round(abs($dpos), 1);
						}
						?>
						<tr>
							<td><strong><?php echo esc_html((string) ($row['query'] ?? '')); ?></strong></td>
							<td>
								<?php if ($page_url !== '') : ?>
									<a href="<?php echo esc_url($page_url); ?>" target="_blank" rel="noopener noreferrer">
										<?php echo esc_html($page_label !== '' ? $page_label : $page_url); ?>
									</a>
								<?php else : ?>
									<span class="description"><?php esc_html_e('עדיין לא ידוע איזה עמוד (חסר מיפוי מ־GSC)', 'icomm-metrix'); ?></span>
								<?php endif; ?>
							</td>
							<td>
								<?php if (is_array($serp)) : ?>
									<strong><?php echo esc_html((string) $serp['label']); ?></strong>
								<?php else : ?>
									<span class="description">-</span>
								<?php endif; ?>
							</td>
							<td><span style="<?php echo esc_attr($delta_style); ?>"><?php echo esc_html($delta_text); ?></span></td>
							<td><?php echo esc_html((string) (int) ($row['clicks'] ?? 0)); ?></td>
						</tr>
					<?php endforeach; ?>
				</tbody>
			</table>
			<p class="description" style="margin-top:8px;">
				<?php esc_html_e('שינוי חיובי = עליתם בתוצאות (השוואת 30 ימים מול 30 שלפניהם).', 'icomm-metrix'); ?>
			</p>
		<?php endif; ?>

		<details style="margin-top:28px;max-width:920px;">
			<summary style="cursor:pointer;font-weight:600;font-size:1.05em;"><?php esc_html_e('מעקב ידני (רשימה אישית)', 'icomm-metrix'); ?></summary>
			<div style="margin-top:12px;">
				<p class="description">
					<?php esc_html_e('הדביקו מילה/שאילתה אחת בכל שורה (כפי שהיא מופיעה ב‑GSC). המעקב הוא התאמה מדויקת.', 'icomm-metrix'); ?>
				</p>

				<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
					<?php wp_nonce_field('icomm_sm_save_keywords'); ?>
					<input type="hidden" name="action" value="icomm_sm_save_keywords" />

					<p style="margin-bottom:8px;">
						<label for="watch_keywords"><strong><?php esc_html_e('מילות למעקב', 'icomm-metrix'); ?></strong></label>
						<span class="description" style="margin-right:10px;">
							<?php echo esc_html(sprintf(__('עד %d', 'icomm-metrix'), (int) IComm_SM_Features::PRO_MAX_WATCH_KEYWORDS)); ?>
							· <?php esc_html_e('כרגע:', 'icomm-metrix'); ?> <span id="icomm_sm_kw_count">0</span>
						</span>
					</p>
					<textarea name="watch_keywords" id="watch_keywords" rows="7" class="large-text" placeholder="<?php esc_attr_e('מילה אחת בכל שורה', 'icomm-metrix'); ?>"><?php
						echo esc_textarea(implode("\n", $keywords));
					?></textarea>

					<?php submit_button(__('שמור מילות', 'icomm-metrix'), 'primary', 'submit', false, ['style' => 'margin-top:10px;']); ?>
				</form>

				<script>
				(function(){
					var ta = document.getElementById('watch_keywords');
					var out = document.getElementById('icomm_sm_kw_count');
					if (!ta || !out) { return; }
					function updateCount() {
						var v = (ta.value || '').trim();
						if (!v) { out.textContent = '0'; return; }
						var lines = v.split(/\r\n|\r|\n/).map(function(x){ return (x || '').trim(); }).filter(Boolean);
						var uniq = {};
						lines.forEach(function(x){ uniq[x] = 1; });
						out.textContent = String(Object.keys(uniq).length);
					}
					ta.addEventListener('input', updateCount);
					updateCount();
				})();
				</script>

				<h3 style="margin-top:18px;"><?php esc_html_e('התקדמות לרשימת המעקב (30 מול 30)', 'icomm-metrix'); ?></h3>
				<?php if (!$can_watch) : ?>
					<p class="description"><?php esc_html_e('ב‑PRO: טבלת התקדמות לפי מילות מעקב.', 'icomm-metrix'); ?></p>
				<?php elseif ($keywords === []) : ?>
					<p class="description"><?php esc_html_e('הוסיפו מילות למעקב כדי לראות התקדמות.', 'icomm-metrix'); ?></p>
				<?php else : ?>
					<table class="widefat striped" dir="rtl" lang="he">
						<thead>
							<tr>
								<th><?php esc_html_e('מילה', 'icomm-metrix'); ?></th>
								<th><?php esc_html_e('קליקים', 'icomm-metrix'); ?></th>
								<th><?php esc_html_e('חשיפות', 'icomm-metrix'); ?></th>
								<th><?php esc_html_e('CTR', 'icomm-metrix'); ?></th>
								<th><?php esc_html_e('מיקום', 'icomm-metrix'); ?></th>
								<th><?php esc_html_e('שינוי חודשי', 'icomm-metrix'); ?></th>
							</tr>
						</thead>
						<tbody>
							<?php foreach ($keywords as $k) : ?>
								<?php
								$c = (array) ($cur[$k] ?? ['clicks' => 0, 'impressions' => 0, 'position' => 0.0, 'ctr' => 0.0]);
								$p = (array) ($prev[$k] ?? ['clicks' => 0, 'impressions' => 0, 'position' => 0.0, 'ctr' => 0.0]);
								$dc = (int) $c['clicks'] - (int) $p['clicks'];
								$di = (int) $c['impressions'] - (int) $p['impressions'];
								$dctr = ((float) $c['ctr']) - ((float) $p['ctr']);
								$dpos = ((float) $p['position']) - ((float) $c['position']);
								?>
								<tr>
									<td><strong><?php echo esc_html($k); ?></strong></td>
									<td><?php echo esc_html((string) (int) $c['clicks']); ?></td>
									<td><?php echo esc_html((string) (int) $c['impressions']); ?></td>
									<td><?php echo esc_html((string) round(((float) $c['ctr']) * 100, 1)); ?>%</td>
									<td><?php echo esc_html((string) round((float) $c['position'], 1)); ?></td>
									<td>
										<span style="<?php echo $dc > 0 ? 'color:#15803d;font-weight:600;' : ($dc < 0 ? 'color:#b91c1c;font-weight:600;' : 'color:#64748b;'); ?>">
											<?php echo esc_html(sprintf(__('קליקים %s', 'icomm-metrix'), ($dc > 0 ? '+' : '') . (string) $dc)); ?>
										</span>
										<span class="description" style="margin-right:10px;">
											<?php
											echo esc_html(sprintf(__('חשיפות %s', 'icomm-metrix'), ($di > 0 ? '+' : '') . (string) $di));
											echo ' · ' . esc_html(sprintf(__('CTR %s', 'icomm-metrix'), ($dctr > 0 ? '+' : '') . (string) round($dctr * 100, 1) . '%'));
											echo ' · ' . esc_html(sprintf(__('מיקום %s', 'icomm-metrix'), ($dpos > 0 ? '+' : '') . (string) round($dpos, 1)));
											?>
										</span>
									</td>
								</tr>
							<?php endforeach; ?>
						</tbody>
					</table>
				<?php endif; ?>

				<h3 style="margin-top:18px;"><?php esc_html_e('המלצות פעולה לפי מילות במעקב', 'icomm-metrix'); ?> <?php echo IComm_SM_Features::pro_badge_html(); ?></h3>
				<?php echo IComm_SM_Features::locked_notice_html(__('המלצות פעולה', 'icomm-metrix')); ?>
				<div class="<?php echo $can_reco ? '' : 'icomm-sm-locked-preview'; ?>">
					<?php if (!$can_reco) : ?>
						<p class="description"><?php esc_html_e('ב‑PRO: המלצות לפי CTR נמוך / קרוב לטופ 5 / בעלייה + הצעה לאיזה עמוד לשפר או לבנות.', 'icomm-metrix'); ?></p>
					<?php elseif ($keywords === []) : ?>
						<p class="description"><?php esc_html_e('הוסיפו מילות למעקב כדי לקבל המלצות ממוקדות.', 'icomm-metrix'); ?></p>
					<?php elseif ($reco === []) : ?>
						<p class="description"><?php esc_html_e('אין המלצות חדות כרגע עבור המילים שבחרתם (או שחסרים נתונים).', 'icomm-metrix'); ?></p>
					<?php else : ?>
						<table class="widefat striped" dir="rtl" lang="he">
							<thead>
								<tr>
									<th><?php esc_html_e('סוג', 'icomm-metrix'); ?></th>
									<th><?php esc_html_e('פירוט', 'icomm-metrix'); ?></th>
									<th><?php esc_html_e('איפה לשפר באתר', 'icomm-metrix'); ?></th>
								</tr>
							</thead>
							<tbody>
								<?php foreach ($reco as $r) : ?>
									<tr>
										<td><strong><?php echo esc_html((string) ($r['title'] ?? '')); ?></strong></td>
										<td><?php echo esc_html((string) ($r['details'] ?? '')); ?></td>
										<td>
											<?php if (!empty($r['edit_url']) && !empty($r['post_title'])) : ?>
												<a href="<?php echo esc_url((string) $r['edit_url']); ?>"><?php echo esc_html((string) $r['post_title']); ?></a>
											<?php else : ?>
												<span class="description"><?php esc_html_e('לא נמצאה התאמה אוטומטית. מומלץ ליצור עמוד/פוסט חדש בנושא.', 'icomm-metrix'); ?></span>
												<?php if (!empty($r['content_plan'])) : ?>
													<details style="margin-top:8px;">
														<summary><?php esc_html_e('תוכנית תוכן מומלצת (לחץ לפתיחה)', 'icomm-metrix'); ?></summary>
														<textarea readonly rows="12" class="large-text" style="margin-top:8px;direction:rtl;text-align:right;"><?php echo esc_textarea((string) $r['content_plan']); ?></textarea>
													</details>
												<?php endif; ?>
											<?php endif; ?>
										</td>
									</tr>
								<?php endforeach; ?>
							</tbody>
						</table>
					<?php endif; ?>
				</div>
			</div>
		</details>
	</div>
</div>
