// ============================================
// SISTEMA DE LIKES Y REACCIONES
// ============================================
/**
* Obtener conteo de likes para un contenido
*/
function get_likes_count($content_type, $content_id) {
global $db;
$stmt = $db->prepare("SELECT COUNT(*) as count FROM likes WHERE content_type = ? AND content_id = ?");
$stmt->execute([$content_type, $content_id]);
$result = $stmt->fetch();
return $result['count'] ?? 0;
}
/**
* Verificar si el usuario actual ha dado like
*/
function user_has_liked($content_type, $content_id, $user_id) {
global $db;
$stmt = $db->prepare("SELECT id FROM likes WHERE content_type = ? AND content_id = ? AND user_id = ?");
$stmt->execute([$content_type, $content_id, $user_id]);
return $stmt->fetch() !== false;
}
/**
* Toggle like (agregar o quitar)
*/
function toggle_like($content_type, $content_id, $user_id) {
global $db;
try {
$db->beginTransaction();
// Verificar si ya existe
$stmt = $db->prepare("SELECT id FROM likes WHERE content_type = ? AND content_id = ? AND user_id = ?");
$stmt->execute([$content_type, $content_id, $user_id]);
$existing = $stmt->fetch();
if ($existing) {
// Eliminar like
$stmt = $db->prepare("DELETE FROM likes WHERE content_type = ? AND content_id = ? AND user_id = ?");
$stmt->execute([$content_type, $content_id, $user_id]);
$action = 'removed';
} else {
// Agregar like
$stmt = $db->prepare("INSERT INTO likes (content_type, content_id, user_id) VALUES (?, ?, ?)");
$stmt->execute([$content_type, $content_id, $user_id]);
$action = 'added';
}
// Actualizar contador en la tabla principal
$table_map = [
'blog_post' => 'blog_posts',
'investigation' => 'investigations',
'esoterism' => 'esoterism_content'
];
if (isset($table_map[$content_type])) {
$table = $table_map[$content_type];
$count = get_likes_count($content_type, $content_id);
$stmt = $db->prepare("UPDATE {$table} SET likes_count = ? WHERE id = ?");
$stmt->execute([$count, $content_id]);
}
$db->commit();
return ['success' => true, 'action' => $action, 'count' => get_likes_count($content_type, $content_id)];
} catch (Exception $e) {
$db->rollBack();
return ['success' => false, 'error' => $e->getMessage()];
}
}
// ============================================
// SISTEMA DE COMENTARIOS
// ============================================
/**
* Obtener comentarios de un contenido
*/
function get_comments($content_type, $content_id, $parent_id = null) {
global $db;
$sql = "SELECT c.*, u.username, u.first_name, u.last_name, u.profile_image
FROM comments c
INNER JOIN users u ON c.user_id = u.id
WHERE c.content_type = ? AND c.content_id = ? AND c.is_approved = 1";
if ($parent_id === null) {
$sql .= " AND c.parent_id IS NULL";
$params = [$content_type, $content_id];
} else {
$sql .= " AND c.parent_id = ?";
$params = [$content_type, $content_id, $parent_id];
}
$sql .= " ORDER BY c.created_at DESC";
$stmt = $db->prepare($sql);
$stmt->execute($params);
return $stmt->fetchAll();
}
/**
* Contar comentarios de un contenido
*/
function get_comments_count($content_type, $content_id) {
global $db;
$stmt = $db->prepare("SELECT COUNT(*) as count FROM comments WHERE content_type = ? AND content_id = ? AND is_approved = 1");
$stmt->execute([$content_type, $content_id]);
$result = $stmt->fetch();
return $result['count'] ?? 0;
}
/**
* Agregar comentario
*/
function add_comment($content_type, $content_id, $user_id, $comment, $parent_id = null) {
global $db;
try {
$db->beginTransaction();
// Insertar comentario
$stmt = $db->prepare("
INSERT INTO comments (content_type, content_id, user_id, comment, parent_id)
VALUES (?, ?, ?, ?, ?)
");
$stmt->execute([$content_type, $content_id, $user_id, $comment, $parent_id]);
// Actualizar contador
$table_map = [
'blog_post' => 'blog_posts',
'investigation' => 'investigations',
'esoterism' => 'esoterism_content'
];
if (isset($table_map[$content_type])) {
$table = $table_map[$content_type];
$count = get_comments_count($content_type, $content_id);
$stmt = $db->prepare("UPDATE {$table} SET comments_count = ? WHERE id = ?");
$stmt->execute([$count, $content_id]);
}
$db->commit();
return ['success' => true, 'message' => 'Comentario agregado exitosamente'];
} catch (Exception $e) {
$db->rollBack();
return ['success' => false, 'error' => $e->getMessage()];
}
}
/**
* Renderizar HTML de comentarios
*/
function render_comments($comments, $content_type, $content_id, $depth = 0) {
$html = '';
foreach ($comments as $comment) {
$author_name = !empty($comment['first_name'])
? $comment['first_name'] . ' ' . $comment['last_name']
: $comment['username'];
$avatar_letter = strtoupper(substr($author_name, 0, 1));
$time_ago = time_ago($comment['created_at']);
$html .= '
';
}
return $html;
}
/**
* Calcular tiempo transcurrido
*/
function time_ago($datetime) {
$timestamp = strtotime($datetime);
$diff = time() - $timestamp;
if ($diff < 60) {
return 'Hace un momento';
} elseif ($diff < 3600) {
$minutes = floor($diff / 60);
return "Hace {$minutes} minuto" . ($minutes > 1 ? 's' : '');
} elseif ($diff < 86400) {
$hours = floor($diff / 3600);
return "Hace {$hours} hora" . ($hours > 1 ? 's' : '');
} elseif ($diff < 604800) {
$days = floor($diff / 86400);
return "Hace {$days} día" . ($days > 1 ? 's' : '');
} else {
return date('d/m/Y', $timestamp);
}
}
// ============================================
// GALERÍA DE IMÁGENES
// ============================================
/**
* Obtener imágenes de galería de una investigación
*/
function get_investigation_gallery($investigation_id) {
global $db;
$stmt = $db->prepare("
SELECT ig.*, u.username
FROM investigation_gallery ig
LEFT JOIN users u ON ig.uploaded_by = u.id
WHERE ig.investigation_id = ?
ORDER BY ig.display_order ASC, ig.created_at ASC
");
$stmt->execute([$investigation_id]);
return $stmt->fetchAll();
}
/**
* Agregar imagen a galería
*/
function add_gallery_image($investigation_id, $image_path, $caption, $user_id, $display_order = 0) {
global $db;
try {
$stmt = $db->prepare("
INSERT INTO investigation_gallery (investigation_id, image_path, caption, uploaded_by, display_order)
VALUES (?, ?, ?, ?, ?)
");
$stmt->execute([$investigation_id, $image_path, $caption, $user_id, $display_order]);
return ['success' => true, 'message' => 'Imagen agregada a la galería'];
} catch (Exception $e) {
return ['success' => false, 'error' => $e->getMessage()];
}
}
La Casa Embrujada de La Reina - FakeGhost
?>
← Volver al blog
Investigaciones
La Casa Embrujada de La Reina
Autor:
Administrador FakeGhost
Fecha:
09/02/2026
Vistas:
3
Investigamos los misteriosos fenómenos que han ocurrido durante décadas en una antigua casona de La Reina.
Durante años, los vecinos de La Reina han reportado fenómenos inexplicables en una antigua casona ubicada en la calle Los Presidentes. Testimonios de luces que se encienden solas, puertas que se cierran violentamente y voces en el segundo piso han convertido este lugar en uno de los más misteriosos de Santiago.
Nuestra investigación reveló que la casa fue construida en 1920 y perteneció a una familia adinerada cuya historia terminó en tragedia. Los registros históricos muestran que en 1945 ocurrió un incendio que cobró la vida de tres miembros de la familia.
Durante nuestra visita nocturna, equipados con detectores EMF y cámaras infrarrojas, registramos anomalías térmicas inexplicables y fluctuaciones electromagnéticas significativas en el segundo piso, justo donde ocurrió el incendio hace más de 75 años.
Tags:
casas embrujadas
santiago
fenómenos paranormales