<?php
/**
 * WebEngine CMS
 * News Type Migration Script
 * 
 * This script migrates existing news articles to use the new news_type field
 * by detecting the category from the title and updating the database.
 * 
 * @version 1.0
 */

?>
<h1 class="page-header">Migrar Tipos de Noticias</h1>
<?php
$News = new News();
loadModuleConfigs('news');

// Check if News cache folder is writable
if($News->isNewsDirWritable()) {
	
	// Migration process
	if(isset($_POST['migrate_submit'])) {
		$db = Connection::Database('Platform');
		$migrated = 0;
		$errors = 0;
		
		// Check if news_type column exists
		try {
			$test = $db->query_fetch_single("SELECT TOP 1 news_type FROM ".WEBENGINE_NEWS);
		} catch(Exception $e) {
			message('error', 'El campo news_type no existe en la base de datos. Por favor ejecuta primero el script SQL: install/sql/WEBENGINE_NEWS_ADD_TYPE.txt');
			return;
		}
		
		// Get all news
		$allNews = $db->query_fetch("SELECT news_id, news_title FROM ".WEBENGINE_NEWS." ORDER BY news_id DESC");
		
		if(is_array($allNews) && count($allNews) > 0) {
			foreach($allNews as $news) {
				$news_id = $news['news_id'];
				$news_title = base64_decode($news['news_title']);
				
				// Detect category from title
				$category = 'all';
				$title_lower = strtolower($news_title);
				
				if (strpos($title_lower, 'actualización') !== false || strpos($title_lower, 'update') !== false) {
					$category = 'actualización';
				} elseif (strpos($title_lower, 'evento') !== false || strpos($title_lower, 'event') !== false) {
					$category = 'evento';
				} elseif (strpos($title_lower, 'mantenimiento') !== false || strpos($title_lower, 'maintenance') !== false) {
					$category = 'mantenimiento';
				} elseif (strpos($title_lower, 'anuncio') !== false || strpos($title_lower, 'announce') !== false) {
					$category = 'anuncio';
				}
				
				// Update news_type
				try {
					$update = $db->query("UPDATE ".WEBENGINE_NEWS." SET news_type = ? WHERE news_id = ?", array($category, $news_id));
					if($update) {
						$migrated++;
					} else {
						$errors++;
					}
				} catch(Exception $e) {
					$errors++;
				}
			}
			
			// Regenerate cache
			$News->cacheNews();
			$News->updateNewsCacheIndex();
			
			if($errors > 0) {
				message('warning', "Migración completada con algunos errores. Noticias migradas: $migrated, Errores: $errors");
			} else {
				message('success', "Migración completada exitosamente. $migrated noticias categorizadas.");
			}
			
			redirect(2, 'admincp/?module=managenews');
		} else {
			message('info', 'No se encontraron noticias para migrar.');
		}
		
	} else {
		// Show migration form
		$db = Connection::Database('Platform');
		
		// Check if news_type column exists
		$columnExists = false;
		try {
			$test = $db->query_fetch_single("SELECT TOP 1 news_type FROM ".WEBENGINE_NEWS);
			$columnExists = true;
		} catch(Exception $e) {
			$columnExists = false;
		}
		
		if(!$columnExists) {
			message('error', 'El campo news_type no existe en la base de datos. Por favor ejecuta primero el script SQL: <code>install/sql/WEBENGINE_NEWS_ADD_TYPE.txt</code>');
		} else {
			// Count news without type or with type = 'all'
			$newsCount = $db->query_fetch_single("SELECT COUNT(*) as total FROM ".WEBENGINE_NEWS);
			$totalNews = $newsCount ? $newsCount['total'] : 0;
			
			if($totalNews > 0) {
				?>
				<div class="alert alert-info">
					<p><strong>Información sobre la migración:</strong></p>
					<ul>
						<li>Este script categorizará automáticamente todas las noticias existentes basándose en palabras clave en el título.</li>
						<li>Se detectarán las siguientes categorías: <strong>Actualizaciones</strong>, <strong>Eventos</strong>, <strong>Mantenimiento</strong>, <strong>Anuncios</strong>.</li>
						<li>Las noticias que no coincidan con ninguna categoría se marcarán como <strong>Todas (all)</strong>.</li>
						<li>Total de noticias a migrar: <strong><?php echo $totalNews; ?></strong></li>
					</ul>
				</div>
				
				<form role="form" method="post">
					<div class="form-group">
						<button type="submit" class="btn btn-large btn-block btn-primary" name="migrate_submit" value="ok">
							<i class="fa fa-refresh"></i> Iniciar Migración
						</button>
					</div>
				</form>
				<?php
			} else {
				message('info', 'No se encontraron noticias para migrar.');
			}
		}
	}
	
} else {
	message('error','The news cache folder is not writable.');
}
?>

