<?php
/*
 * Bloc d'actualites du patcher (NoticeBox:Box1).
 *
 * Remplace l'ancien notice.html, dont les trois lignes ("Update 1.0.1/1.0.2/1.0.3")
 * etaient ecrites en dur : le patcher annoncait donc les memes nouvelles depuis sa
 * mise en service. Ici on lit la table `oro_news`, celle que remplit deja
 * l'editeur du site (/admin/news) — une seule saisie, deux endroits servis.
 *
 * Identifiants : on reutilise modules/inc/config.php, deja present, plutot que d'en
 * remettre une copie en clair comme le fait players.php.
 *
 * Emplacement : ce fichier vit dans patcher/patch/, aux cotes du style.css qui
 * porte les classes .news / .update / .event, d'ou le chemin relatif vers la
 * config qui, elle, vit dans patcher/modules/inc/.
 *
 * Langue : la NoticeBox n'a aucun contexte de langue, on sert donc le francais
 * avec repli sur l'anglais. Pour basculer, changer $LANGUE ci-dessous.
 */

require __DIR__ . '/../modules/inc/config.php';

$LANGUE  = 'fr';       // 'fr' | 'en' | 'es'
$REPLI   = 'en';
$COMBIEN = 4;

// Categorie en base -> classe CSS existante du patcher + libelle du badge.
// Les classes .news (vert), .update (or) et .event (gris) sont deja dans style.css.
$BADGES = array(
    'server' => array('news',   'NEWS'),
    'patch'  => array('update', 'UPDATE'),
    'event'  => array('event',  'EVENT'),
);
$DEFAUT = array('event', 'INFO');

$lignes = array();
$erreur = null;
try {
    $bdd = new PDO(
        "mysql:host=$Srv_Host;dbname=$Srv_Database;charset=utf8mb4",
        $Srv_Username, $Srv_Password,
        array(
            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES   => false,
        )
    );
    $req = $bdd->prepare(
        'SELECT category, title_fr, title_en, title_es
           FROM oro_news
          WHERE published = 1 AND published_at <= CURDATE()
          ORDER BY published_at DESC, id DESC
          LIMIT :n'
    );
    $req->bindValue(':n', (int) $COMBIEN, PDO::PARAM_INT);
    $req->execute();
    $lignes = $req->fetchAll();
} catch (PDOException $e) {
    // On n'affiche jamais le message : il peut porter l'hote, l'utilisateur, la
    // requete. Le patcher doit rester lisible meme si la base est injoignable,
    // donc on degrade en silence plutot que de mourir.
    $erreur = true;
}

function titre($ligne, $langue, $repli) {
    foreach (array($langue, $repli, 'fr', 'en', 'es') as $l) {
        if (!empty($ligne['title_' . $l])) {
            return $ligne['title_' . $l];
        }
    }
    return '';
}
?>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="style.css" type="text/css">
<link href="https://fonts.googleapis.com/css2?family=Anton&display=swap" rel="stylesheet">
<style>
  /* style.css applique margin-top:-10px a chaque ligne : cale pour les trois
     lignes ecrites en dur de l'ancien notice.html, mais des qu'il y en a plus les
     badges se chevauchent et se retrouvent rognes. On reprend l'espacement ici
     plutot que dans style.css, partage avec les autres modules. */
  .news, .update, .event { margin: 0 0 7px 0; align-items: center; }
  .news b, .update b, .event b {
    line-height: 20px; padding: 1px 0; margin-right: 16px; font-size: 13px;
  }
  .news p, .update p, .event p { line-height: 20px; }
  .content { margin-top: 14px; }
</style>
</head>
<body>
<div class="scroller">
  <div style="height:auto; width:100%;">
  <table border="0" width="100%" cellspacing="4" cellpadding="4">
    <tr>
      <td width="100%">
        <span class="header">Welcome to O-Ro, the team wishes you a great time!</span>
        <div class="content">
<?php if (!$lignes): ?>
          <div class="event"><p><b>INFO</b><?php
            echo $erreur ? 'Actualites momentanement indisponibles.'
                         : 'Aucune actualite pour le moment.'; ?></p></div>
<?php else: foreach ($lignes as $l):
            $b = isset($BADGES[$l['category']]) ? $BADGES[$l['category']] : $DEFAUT; ?>
          <div class="<?php echo $b[0]; ?>"><p><b><?php echo $b[1]; ?></b><?php
            echo htmlspecialchars(titre($l, $LANGUE, $REPLI), ENT_QUOTES, 'UTF-8'); ?></p></div>
<?php   endforeach; endif; ?>
        </div>
      </td>
    </tr>
  </table>
  </div>
</div>
</body>
</html>
