/**
 * Fonction permettant d'ajouter une activité en base de données grâce aux données d'un formulaire.
 * @return mixed : soit un tableau contenant tous les messages d'erreurs relatif à l'ajout d'activité, soit un tableau
 * contenant un message de succès de l'ajout de l'activité.
 */
function ajouterActivite()
{
    $cat = $_POST['categorie'];
    $act = $_POST['activite'];
    $desc = $_POST['description'];
    $cm = new CategorieManager(connexionDb());
    $am = new ActivityManager(connexionDb());
    $categorie = $cm->getCategorieByLibelle($cat);
    $activityVerif = $am->getActivityByLibelle($act);
    if (strtolower($activityVerif->getLibelle()) == strtolower($act)) {
        $tabRetour['Error'] = "Cette activité existe déjà, ajoutez-en une autre !";
    } else {
        if (strlen($act) >= 5 && strlen($act) <= 100) {
            if (champsTexteValable($desc)) {
                $desc = nl2br($desc);
                $activityToAdd = new Activity(array("Libelle" => $act, "description" => $desc));
                $am->addActivity($activityToAdd);
                $activityToRecup = $am->getActivityByLibelle($act);
                include "../Manager/Categorie_ActivityManager.manager.php";
                $typePhoto = $_FILES['image']['type'];
                if (!strstr($typePhoto, 'jpg') && !strstr($typePhoto, 'jpeg')) {
                    $tabRetour['Error'] = "Votre image n'est pas .jpg ou .jpeg !";
                } else {
                    if ($_FILES['ImageNews']['size'] >= 2097152) {
                        $tabRetour['Error'] = "Votre image est trop lourde !";
                    } else {
                        if ($_FILES['image']['tmp_name'] != null) {
                            uploadImage('../Images/activite', $activityToRecup->getId());
                            $cam = new Categorie_ActivityManager(connexionDb());
                            $um = new UserManager(connexionDb());
                            $um->updateUserLastIdea($_SESSION['User']);
                            $cam->addToTable($activityToRecup, $categorie);
                            $tabRetour['Ok'] = "Votre activité a bien été ajoutée au contenu du site, merci de votre participation !";
                        } else {
                            $tabRetour['Error'] = "Pas d'image !";
                        }
                    }
                }
            } else {
                $tabRetour['Error'] = "Votre description contient des caractères indésirables !";
            }
        } else {
            $tabRetour['Error'] = "Votre titre d'activité n'a pas une taille correcte !";
        }
    }
    return $tabRetour;
}
/**
 * Fonction servant à afficher toutes les activités signalées pour les modérateurs et administrateur.
 * Elle fournit un lien qui permet d'être redirigé vers l'activité en question.
 */
function afficherActivite()
{
    ?>
    <div class="Membres">
    <div class="table-responsive">
        <table class="table table-striped">
            <caption> <h2> Activités </h2></caption>
            <tr>
                <th> Nom de l'activité</th>
                <th> Nom de la catégorie</th>
                <th> Action </th>
            </tr>
            <?php 
    $am = new ActivityManager(connexionDb());
    $cam = new Categorie_ActivityManager(connexionDb());
    $cm = new CategorieManager(connexionDb());
    $tab = $am->getAllActivity();
    $existe = false;
    foreach ($tab as $elem) {
        $id = $elem->getId();
        $catId = $cam->getCatIdByActId($elem);
        if (isset($catId[0])) {
            $cat = $cm->getCategorieById($catId[0]['id_categorie']);
        }
        if ($elem->getSignalee() == 1) {
            echo "<tr> <td>" . $elem->getLibelle() . " </td><td>" . $cat->getLibelle() . "</td><td><a href='proposerActivite.page.php?categorie=" . $cat->getLibelle() . "&activite={$id}'> Gérer le signalement </a></td></tr>";
            $existe = true;
        }
    }
    if (!$existe) {
        echo "<tr> <td> Aucune activité signalée !</td></tr>";
    }
    ?>
        </table>
    </div>
    </div>
    <?php 
}
/**
 * Fonction renvoyant un tableau contenant les activités dont le libellé contient le string envoyé par le formulaire
 * de recherche d'activité.
 * @return array : le tableau d'activités.
 */
function rechercheActivite()
{
    $cat = $_GET['categorie'];
    $cm = new CategorieManager(connexionDb());
    $catId = $cm->getCategorieByLibelle($cat);
    $cam = new Categorie_ActivityManager(connexionDb());
    $tabId = $cam->getActIdByCatId($catId);
    if (isPostFormulaire()) {
        $name = $_POST['activite'];
    } else {
        $name = "";
    }
    $am = new ActivityManager(connexionDb());
    $tabAct = $am->searchAllActivityByLibelle($name);
    $tab = array();
    $i = -1;
    foreach ($tabAct as $elem) {
        $i++;
        foreach ($tabId as $act) {
            if ($elem->getId() == $act['id_activity']) {
                $tab[$i] = $elem;
            }
        }
    }
    return $tab;
}