Exemplo n.º 1
0
 protected function main()
 {
     // Si le paramètre ID manque
     if (empty($_GET['id']) || !is_numeric($_GET['id'])) {
         header('Location: news-70.html');
     }
     inc_lib('news/news_exists');
     if (news_exists($_GET['id']) == false) {
         redir(Nw::$lang['news']['news_not_exist'], false, 'news-70.html');
     }
     inc_lib('news/get_info_news');
     $info_news = get_info_news($_GET['id']);
     if (!is_logged_in()) {
         redir(Nw::$lang['news']['error_cant_alert'], false, './');
     }
     //Si on a envoyé des erreurs
     if (!empty($_POST['contenu'])) {
         inc_lib('news/add_alert_news');
         add_alert_news(Nw::$dn_mbr['u_id'], $_GET['id'], $_POST['contenu'], $_POST['motif']);
         redir(Nw::$lang['news']['confirm_alert'], true, $info_news['c_rewrite'] . '/' . rewrite($info_news['n_titre']) . '-' . $_GET['id'] . '/');
     }
     $this->set_title($info_news['n_titre'] . ' | ' . $info_news['c_nom']);
     $this->set_tpl('news/alert.html');
     $this->add_css('forms.css');
     $this->add_css('code.css');
     $this->add_js('write.js');
     $this->add_js('forms.js');
     $this->add_form('contenu');
     Nw::$tpl->set('ID', $info_news['n_id']);
     inc_lib('bbcode/clearer');
     Nw::$tpl->set(array('ID' => $_GET['id'], 'BAL_CHAMP' => 'contenu', 'NEWS' => $info_news['n_titre'], 'RESUME' => CoupeChar(clearer($info_news['v_texte'])), 'CAT_REWRITE' => $info_news['c_rewrite'], 'REWRITE' => rewrite($info_news['n_titre'])));
     // Fil ariane
     $this->set_filAriane(array(Nw::$lang['news']['news_section'] => array('news-70.html'), $info_news['c_nom'] => array($info_news['c_rewrite'] . '/'), $info_news['n_titre'] => array($info_news['c_rewrite'] . '/' . rewrite($info_news['n_titre']) . '-' . $_GET['id'] . '/'), Nw::$lang['news']['alert'] => array('')));
 }
Exemplo n.º 2
0
function delete_vrs($id_news, $id_version, $last_version)
{
    inc_lib('bbcode/clearer');
    $add_rqt_sql = '';
    $rqt = Nw::$DB->query('SELECT v_id_membre, v_number
        FROM ' . Nw::$prefix_table . 'news_versions
        WHERE v_id_news = ' . intval($id_news) . ' AND v_id = ' . intval($id_version)) or Nw::$DB->trigger(__LINE__, __FILE__);
    $result = $rqt->fetch_assoc();
    // Si on veut supprimer la dernière version de la news
    if ($id_version == $last_version) {
        $query = Nw::$DB->query('SELECT v_id, v_texte
            FROM ' . Nw::$prefix_table . 'news_versions
            WHERE v_id_news = ' . intval($id_news) . ' AND v_id <> ' . intval($id_version) . '
            ORDER BY v_date DESC
            LIMIT 1') or Nw::$DB->trigger(__LINE__, __FILE__);
        $donnees_ex_vrs = $query->fetch_assoc();
        $contenu_extrait = Nw::$DB->real_escape_string(CoupeChar(clearer($donnees_ex_vrs['v_texte']), '...', Nw::$pref['long_intro_news']));
        $add_rqt_sql = ', n_resume = \'' . $contenu_extrait . '\', n_last_version = ' . intval($donnees_ex_vrs['v_id']);
    }
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'members_stats 
        SET s_nb_contrib = s_nb_contrib - 1
        WHERE s_id_membre = ' . intval($result['v_id_membre'])) or Nw::$DB->trigger(__LINE__, __FILE__);
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'news_versions SET v_number = v_number - 1
        WHERE v_id_news = ' . intval($id_news) . ' AND v_number > ' . intval($result['v_number'])) or Nw::$DB->trigger(__LINE__, __FILE__);
    Nw::$DB->query('DELETE FROM ' . Nw::$prefix_table . 'news_versions
        WHERE v_id_news = ' . intval($id_news) . ' AND v_id = ' . intval($id_version)) or Nw::$DB->trigger(__LINE__, __FILE__);
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'news 
        SET n_nb_versions = n_nb_versions - 1' . $add_rqt_sql . '
        WHERE n_id = ' . intval($id_news)) or Nw::$DB->trigger(__LINE__, __FILE__);
}
Exemplo n.º 3
0
function restore_vrs($id_news, $id_version)
{
    inc_lib('news/get_info_vrs');
    inc_lib('bbcode/clearer');
    $donnees_vrs = get_info_vrs($id_version);
    $contenu_extrait = Nw::$DB->real_escape_string(CoupeChar(clearer($donnees_vrs['v_texte']), '...', Nw::$pref['long_intro_news']));
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'news 
        SET n_resume = \'' . $contenu_extrait . '\', n_last_version = ' . intval($id_version) . '
        WHERE n_id = ' . intval($id_news)) or Nw::$DB->trigger(__LINE__, __FILE__);
}
Exemplo n.º 4
0
 protected function main()
 {
     // Seuls les membres peuvent créer des brouillons
     if (!is_logged_in()) {
         redir(Nw::$lang['common']['need_login'], false, 'users-10.html');
     }
     $this->set_title(Nw::$lang['news']['en_attente_title']);
     $this->set_tpl('news/attente.html');
     $this->add_css('code.css');
     $this->add_js('news.attente.js');
     $this->add_wid_in_content('attente');
     // Fil ariane
     $this->set_filAriane(array(Nw::$lang['news']['news_section'] => array('news-70.html'), Nw::$lang['news']['en_attente_title'] => array('')));
     // On compte le nbr de news en rédaction
     inc_lib('news/count_news');
     $nombre_news = count_news('n_etat = 2');
     if ($nombre_news > 0) {
         inc_lib('news/get_list_tags_news');
         inc_lib('news/get_list_flags_news');
         $list_tags = array();
         $list_flags = array();
         $array_favoris = array();
         $donnees_tags = get_list_tags_news(2);
         $donnees_flags = get_list_flags_news(2);
         foreach ($donnees_flags as $all_flags) {
             if ($all_flags['f_type'] == 1) {
                 $array_favoris[] = $all_flags['f_id_news'];
             }
             $list_flags[$all_flags['f_id_news']][] = '<li class="netat"><a href="news-5.html?flag=' . $all_flags['f_type'] . '&amp;status=1">' . $all_flags['txt_lang'] . '</a></li>';
         }
         foreach ($donnees_tags as $all_tags) {
             $list_tags[$all_tags['t_id_news']][] = '<li class="ntag"><a href="search.html?s=' . $all_tags['rewrite'] . '">' . $all_tags['t_tag'] . '</a></li>';
         }
     }
     // Pagination
     $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     $nombreDePages = ceil($nombre_news / Nw::$pref['nb_news_redac']);
     // On vérifie bien que la page existe
     if ($nombreDePages > 0 && $page > $nombreDePages) {
         redir(Nw::$lang['common']['pg_not_exist'], false, 'news-70.html');
     }
     // On recherche toutes les news en rédaction
     inc_lib('news/get_list_news');
     inc_lib('news/can_edit_news');
     $list_dn_news = get_list_news('n_etat = 2', 'n_date DESC', $page, Nw::$pref['nb_news_redac']);
     $nbr_news = 0;
     // On affiche toutes les news en rédaction
     foreach ($list_dn_news as $donnees_news) {
         $flags_html = '';
         // Cette news a des flags? (Je rédige, etc.)
         if (isset($list_flags[$donnees_news['n_id']]) && count($list_flags[$donnees_news['n_id']]) > 0) {
             $flags_html = implode(' ', $list_flags[$donnees_news['n_id']]);
         }
         if (isset($list_tags[$donnees_news['n_id']])) {
             $tags_news = array_slice($list_tags[$donnees_news['n_id']], 0, 5);
         } else {
             $tags_news = array();
         }
         // Il y a au moins un tag
         if (count($tags_news) > 0) {
             $tags_html = implode(' ', $tags_news);
         } else {
             $tags_html = '<li class="ntag"><span>' . Nw::$lang['news']['none_tag'] . '</span></li>';
         }
         Nw::$tpl->setBlock('news', array('ID' => $donnees_news['n_id'], 'CAT_ID' => $donnees_news['c_id'], 'CAT_TITRE' => $donnees_news['c_nom'], 'CAT_REWRITE' => $donnees_news['c_rewrite'], 'IMAGE_ID' => $donnees_news['i_id'], 'IMAGE_NOM' => $donnees_news['i_nom'], 'TITRE' => $donnees_news['n_titre'], 'RESUME' => $donnees_news['n_resume'], 'REWRITE' => rewrite($donnees_news['n_titre']), 'AUTEUR' => $donnees_news['u_pseudo'], 'AUTEUR_ID' => $donnees_news['u_id'], 'AUTEUR_ALIAS' => $donnees_news['u_alias'], 'AUTEUR_AVATAR' => $donnees_news['u_avatar'], 'DATE' => date_sql($donnees_news['date_news'], $donnees_news['heures_date_news'], $donnees_news['jours_date_news']), 'NBR_COMS' => sprintf(Nw::$lang['news']['nbr_comments_news'], $donnees_news['n_nbr_coms'], $donnees_news['n_nbr_coms'] > 1 ? Nw::$lang['news']['add_s_comments'] : ''), 'NBR_VERSIONS' => $donnees_news['n_nb_versions'] > 1 ? '<a href="news-16-' . $donnees_news['n_id'] . '.html">' . sprintf(Nw::$lang['news']['nbr_versions_news'], $donnees_news['n_nb_versions']) . '</a>' : Nw::$lang['news']['none_versions'], 'COLOR' => $nbr_news % 2, 'VOTES' => $donnees_news['n_nb_votes'], 'VOTES_NEG' => $donnees_news['n_nb_votes_neg'], 'HAS_VOTED' => is_logged_in() ? $donnees_news['v_id_membre'] : 0, 'TAGS' => $tags_html, 'FLAGS' => $flags_html, 'FLAGS_FAV' => (bool) in_array($donnees_news['n_id'], $array_favoris), 'EDIT' => can_edit_news($donnees_news['n_id_auteur'], $donnees_news['n_etat']), 'DELETE' => $donnees_news['n_id_auteur'] == Nw::$dn_mbr['u_id'] && Nw::$droits['can_delete_mynews'] || Nw::$droits['can_delete_news'] ? true : false));
         ++$nbr_news;
     }
     /**
      *   Bientot en ligne 
      **/
     $nb_promus = 0;
     inc_lib('news/get_list_news_light');
     $nbr_votes_promus = round(Nw::$pref['nb_votes_valid_news'] / 2);
     $presque_promus = get_list_news_light('n_etat = 2 AND n_nb_votes >= ' . $nbr_votes_promus, 'n_nb_votes DESC, n_date DESC', 1, 7);
     foreach ($presque_promus as $donnees_news) {
         Nw::$tpl->setBlock('pp', array('ID' => $donnees_news['n_id'], 'TITRE' => $donnees_news['n_titre'], 'REWRITE' => rewrite($donnees_news['n_titre']), 'CAT_REWRITE' => $donnees_news['c_rewrite'], 'AUTEUR' => $donnees_news['u_pseudo'], 'AUTEUR_ID' => $donnees_news['u_id'], 'AUTEUR_ALIAS' => $donnees_news['u_alias'], 'AUTEUR_AVATAR' => $donnees_news['u_avatar'], 'DATE' => date_sql($donnees_news['date_news'], $donnees_news['heures_date_news'], $donnees_news['jours_date_news']), 'HAS_VOTED' => is_logged_in() ? $donnees_news['v_id_membre'] : 0, 'NBR_VOTES' => $donnees_news['n_nb_votes'], 'NBR_COMS' => sprintf(Nw::$lang['news']['nbr_comments_news'], $donnees_news['n_nbr_coms'], $donnees_news['n_nbr_coms'] > 1 ? Nw::$lang['news']['add_s_comments'] : ''), 'NBR_VERSIONS' => $donnees_news['n_nb_versions'] > 1 ? '<a href="news-16-' . $donnees_news['n_id'] . '.html">' . sprintf(Nw::$lang['news']['nbr_versions_news'], $donnees_news['n_nb_versions']) . '</a>' : Nw::$lang['news']['none_versions']));
         ++$nb_promus;
     }
     /**
      *   Derniers commentaires
      **/
     inc_lib('bbcode/clearer');
     inc_lib('news/get_list_last_cmt');
     $last_comments = get_list_last_cmt(0, 'com.c_date DESC', 1, 5);
     foreach ($last_comments as $donnees_cmt) {
         $content_cmt = CoupeChar(clearer($donnees_cmt['c_texte'], 0), '...', 150);
         Nw::$tpl->setBlock('lc', array('ID' => $donnees_cmt['n_id'], 'ID_COMMENT' => $donnees_cmt['c_id'], 'TITRE' => $donnees_cmt['n_titre'], 'REWRITE' => rewrite($donnees_cmt['n_titre']), 'CAT_REWRITE' => $donnees_cmt['c_rewrite'], 'AUTEUR' => $donnees_cmt['u_pseudo'], 'AUTEUR_ID' => $donnees_cmt['u_id'], 'AUTEUR_ALIAS' => $donnees_cmt['u_alias'], 'AUTEUR_AVATAR' => $donnees_cmt['u_avatar'], 'DATE' => date_sql($donnees_cmt['date'], $donnees_cmt['heures_date'], $donnees_cmt['jours_date']), 'EXTRAIT' => $content_cmt));
     }
     /**
      *   Top voters
      **/
     inc_lib('news/get_list_top_voters');
     $top_voters = get_list_top_voters(5);
     foreach ($top_voters as $donnees) {
         $text_int_votes = $donnees['s_nb_votes'] > 1 ? Nw::$lang['news']['text_nbr_votes'] : Nw::$lang['news']['text_nbr_vote'];
         Nw::$tpl->setBlock('tv', array('NBR_VOTES' => sprintf($text_int_votes, $donnees['s_nb_votes']), 'AUTEUR' => $donnees['u_pseudo'], 'AUTEUR_ID' => $donnees['u_id'], 'AUTEUR_ALIAS' => $donnees['u_alias'], 'AUTEUR_AVATAR' => $donnees['u_avatar']));
     }
     Nw::$tpl->set(array('LIST_PG' => list_pg($nombreDePages, $page, 'news-80%s.html'), 'NB_VOT_VALID' => Nw::$pref['nb_votes_valid_news'], 'NB_PROMUS' => $nb_promus));
 }
Exemplo n.º 5
0
function edit_news($id, $author = false)
{
    inc_lib('bbcode/parse');
    inc_lib('bbcode/clearer');
    $add_champs_sql = array();
    $content_news = $_POST['contenu'];
    $requete_news = Nw::$DB->query('SELECT n_etat, n_titre FROM ' . Nw::$prefix_table . 'news WHERE n_id = ' . intval($id)) or Nw::$DB->trigger(__LINE__, __FILE__);
    $donnees_news = $requete_news->fetch_assoc();
    /**
     *   Le membre peut-il changer l'état de la news et mettre à jour sa date ?
     **/
    if (Nw::$droits['mod_news_status']) {
        if (isset($_POST['maj_dat'])) {
            $add_champs_sql[] = 'n_date = NOW()';
            Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_logs (l_id_news, l_id_membre, l_action, l_date, l_ip) VALUES(' . intval($id) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', 3, NOW(), \'' . get_ip() . '\')') or Nw::$DB->trigger(__LINE__, __FILE__);
        }
        // Si on change l'état
        if ($_POST['etat'] != $donnees_news['n_etat']) {
            $texte_log = sprintf(Nw::$lang['news']['log_chg_etat'], Nw::$lang['news']['log_etat_' . $donnees_news['n_etat']], Nw::$lang['news']['log_etat_' . $_POST['etat']]);
            Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_logs (l_id_news, l_id_membre, l_action, l_texte, l_date, l_ip) VALUES(' . intval($id) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', 1' . intval($_POST['etat']) . ', \'' . $texte_log . '\', NOW(), \'' . get_ip() . '\')') or Nw::$DB->trigger(__LINE__, __FILE__);
            $add_champs_sql[] = 'n_etat = ' . intval($_POST['etat']);
        }
        if (isset($_POST['maj_dat']) && $_POST['etat'] != $donnees_news['n_etat'] && $_POST['etat'] == 3) {
            inc_lib('admin/post_twitt_news');
            $return_alias = post_twitt_news($id);
            if (!empty($return_alias) && strlen(trim($return_alias)) > 0) {
                $add_champs_sql[] = 'n_miniurl = \'' . insertBD($return_alias) . '\'';
            }
        }
        // Suppression des commentaires
        if (isset($_POST['delete_comments'])) {
            inc_lib('news/delete_all_cmt');
            delete_all_cmt($id);
        }
    }
    /**
     *   Si c'est l'auteur, le membre peut modifier le titre, la catégorie et
     *   les tags
     **/
    if ($author) {
        $news_private = isset($_POST['private_news']) ? 1 : 0;
        // Si on change le titre
        if ($_POST['titre_news'] != $donnees_news['n_titre']) {
            $texte_log = Nw::$DB->real_escape_string(sprintf(Nw::$lang['news']['log_chg_titre'], $donnees_news['n_titre'], $_POST['titre_news']));
            Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_logs (l_id_news, l_id_membre, l_action, l_texte, l_date, l_ip) VALUES(' . intval($id) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', 4, \'' . $texte_log . '\', NOW(), \'' . get_ip() . '\')') or Nw::$DB->trigger(__LINE__, __FILE__);
            $add_champs_sql[] = 'n_titre = \'' . insertBD(trim($_POST['titre_news'])) . '\'';
        }
        $add_champs_sql[] = 'n_id_cat = ' . intval($_POST['cat']);
        $add_champs_sql[] = 'n_private = ' . $news_private;
        /**
         *   Sources
         **/
        $nbr_sources = 0;
        Nw::$DB->query('DELETE FROM ' . Nw::$prefix_table . 'news_src WHERE src_id_news = ' . intval($id)) or Nw::$DB->trigger(__LINE__, __FILE__);
        if (count($_POST['sources']) > 0) {
            foreach ($_POST['sources'] as $id_src => $value) {
                if (!multi_empty(trim($_POST['sources_nom'][$id_src]), trim($_POST['sources'][$id_src]))) {
                    ++$nbr_sources;
                    Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_src (src_id_news, src_media, src_url, src_order) VALUES(' . intval($id) . ', \'' . insertBD(trim($_POST['sources_nom'][$id_src])) . '\', \'' . insertBD(trim($_POST['sources'][$id_src])) . '\', ' . $nbr_sources . ')') or Nw::$DB->trigger(__LINE__, __FILE__);
                }
            }
        }
        $add_champs_sql[] = 'n_nb_src = ' . $nbr_sources;
        // Tags
        if (!empty($_POST['tags']) && strlen(trim($_POST['tags'])) > 0) {
            Nw::$DB->query('DELETE FROM ' . Nw::$prefix_table . 'tags
                WHERE t_id_news = ' . intval($id)) or Nw::$DB->trigger(__LINE__, __FILE__);
            $tags_news = explode(',', $_POST['tags']);
            $num_tag = 0;
            inc_lib('news/add_tag_news');
            foreach ($tags_news as $tag) {
                if (!empty($tag) && strlen(trim($tag)) > 0) {
                    ++$num_tag;
                    add_tag_news($id, $tag, $num_tag);
                }
            }
        }
        /**
         *   Associer une image à la news (si celle -ci est remplie)
         **/
        if (!empty($_FILES['file']['name'])) {
            inc_lib('news/add_img_news');
            $id_last_image = add_img_news($id);
            if ($id_last_image) {
                $add_champs_sql[] = 'n_id_image = ' . intval($id_last_image);
            }
        }
    }
    $count_flag = Nw::$DB->query('SELECT f_type 
        FROM ' . Nw::$prefix_table . 'news_flags
        WHERE f_id_news = ' . intval($id) . ' AND f_id_membre = ' . intval(Nw::$dn_mbr['u_id'])) or Nw::$DB->trigger(__LINE__, __FILE__);
    $donnees_count = $count_flag->fetch_assoc();
    // Si le membre n'a pas déjà contribé à la news, on lui met le flag
    if ($donnees_count['f_type'] != 3 && $donnees_count['f_type'] != 2) {
        Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_flags (f_id_news, f_id_membre, f_type)
            VALUES(' . intval($id) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', 2)') or Nw::$DB->trigger(__LINE__, __FILE__);
    }
    $contenu_version = Nw::$DB->real_escape_string(parse(htmlspecialchars(trim($content_news))));
    /**
     *   On recherche la dernière version de la news
     **/
    $donnees_version = Nw::$DB->query('SELECT v_texte, v_nb_mots, v_number 
        FROM ' . Nw::$prefix_table . 'news_versions
        WHERE v_id_news = ' . intval($id) . '
        ORDER BY v_date DESC
        LIMIT 1') or Nw::$DB->trigger(__LINE__, __FILE__);
    $last_version = $donnees_version->fetch_assoc();
    // Si le texte de l'ancienne version n'est pas le même que celui proposé
    if ($last_version['v_texte'] != parse(htmlspecialchars(trim($content_news)))) {
        $raison_edition = Nw::$DB->real_escape_string(htmlspecialchars($_POST['raison']));
        $version_mineure = isset($_POST['mini_contrib']) ? 1 : 0;
        $nb_mots = strlen(htmlspecialchars(trim($content_news)));
        $diff_mots = $nb_mots - $last_version['v_nb_mots'];
        // On créé une entrée dans la table des versions
        Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_versions (v_id_news,
            v_id_membre, v_texte, v_date, v_ip, v_raison, v_nb_mots, v_diff_mots, v_number, v_mineure)
            VALUES(' . intval($id) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', \'' . $contenu_version . '\',
            NOW(), \'' . get_ip() . '\', \'' . $raison_edition . '\', \'' . $nb_mots . '\', \'' . $diff_mots . '\', ' . ($last_version['v_number'] + 1) . ', ' . $version_mineure . ')') or Nw::$DB->trigger(__LINE__, __FILE__);
        $id_version_news = Nw::$DB->insert_id;
        Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'members_stats 
            SET s_nb_contrib = s_nb_contrib + 1
            WHERE s_id_membre = ' . intval(Nw::$dn_mbr['u_id'])) or Nw::$DB->trigger(__LINE__, __FILE__);
        $contenu_extrait = Nw::$DB->real_escape_string(CoupeChar(clearer(parse(htmlspecialchars(trim($content_news)))), '...', Nw::$pref['long_intro_news']));
        //die('<br />'.$contenu_extrait);
        $add_champs_sql[] = 'n_resume = \'' . $contenu_extrait . '\'';
        $add_champs_sql[] = 'n_last_version = ' . intval($id_version_news);
        $add_champs_sql[] = 'n_last_mod = NOW()';
        $add_champs_sql[] = 'n_nb_versions = n_nb_versions + 1';
    }
    if (count($add_champs_sql) > 0) {
        // On met à jour l'entrée de la news avec l'id de la version
        Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'news SET ' . implode(', ', $add_champs_sql) . ' WHERE n_id = ' . intval($id)) or Nw::$DB->trigger(__LINE__, __FILE__);
        if ($donnees_news['n_etat'] == 3 || $_POST['etat'] == 3) {
            generate_news_sitemap();
            generate_categories_sitemap();
        }
    }
}
Exemplo n.º 6
0
 protected function main()
 {
     $this->set_title(Nw::$lang['users']['list_members']);
     $this->set_tpl('membres/list_membres.html');
     // Fil ariane
     $this->set_filAriane(array(Nw::$lang['users']['members_section'] => array('users.html'), Nw::$lang['users']['list_members'] => array('')));
     $order_by = 'u_pseudo';
     $asc_desc = 'ASC';
     $list_criteres = array();
     $corres_id_champs = array(0 => 'u_date_register', 1 => 'u_last_visit', 2 => 'u_pseudo', 3 => 's_nb_news');
     // Recherche dans les membres
     if (isset($_POST['searchm'])) {
         header('Location: users.html?pseudo=' . htmlspecialchars($_POST['pseudo']) . '&group=' . intval($_POST['groupe']) . '&local=' . htmlspecialchars($_POST['local']) . '&order=' . intval($_POST['order']) . '&ad=' . htmlspecialchars($_POST['asc_desc']));
     }
     if (!empty($_GET['pseudo'])) {
         $list_criteres[] = 'u_pseudo LIKE "%' . insertBD(trim($_GET['pseudo'])) . '%"';
     }
     if (!empty($_GET['group'])) {
         $list_criteres[] = 'u_group = ' . intval($_GET['group']);
     }
     if (!empty($_GET['local'])) {
         $list_criteres[] = 'u_localisation LIKE "%' . insertBD(trim($_GET['local'])) . '%"';
     }
     if (isset($_GET['order']) && isset($corres_id_champs[$_GET['order']])) {
         $order_by = $corres_id_champs[$_GET['order']];
     }
     if (isset($_GET['ad']) && ($_GET['ad'] == 'asc' || $_GET['ad'] == 'desc')) {
         $asc_desc = strtoupper($_GET['ad']);
     }
     $sql_implode_arg = count($list_criteres) > 0 ? ' AND ' . implode(' AND ', $list_criteres) : '';
     inc_lib('bbcode/clearer');
     // On compte le nbr total de membres
     inc_lib('users/count_all_mbr');
     $nombre_membres = count_all_mbr('u_active = 1' . $sql_implode_arg);
     // Pagination
     $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     $nombreDePages = ceil($nombre_membres / Nw::$pref['nb_news_homepage']);
     // On vérifie bien que la page existe
     if ($nombreDePages > 0 && $page > $nombreDePages) {
         redir(Nw::$lang['common']['pg_not_exist'], false, 'users.html');
     }
     // On recherche toutes les news en rédaction
     inc_lib('users/get_list_mbr');
     $list_membres = get_list_mbr('u_active = 1' . $sql_implode_arg, $order_by . ' ' . $asc_desc, $page, Nw::$pref['nb_news_homepage']);
     foreach ($list_membres as $donnees) {
         Nw::$tpl->setBlock('users', array('ID' => $donnees['u_id'], 'PSEUDO' => $donnees['u_pseudo'], 'ALIAS' => $donnees['u_alias'], 'AVATAR' => $donnees['u_avatar'], 'DATE_REGISTER' => date_sql($donnees['date_register'], $donnees['heures_date_register'], $donnees['jours_date_register']), 'DATE_LVISIT' => date_sql($donnees['last_visit'], $donnees['heures_last_visit'], $donnees['jours_last_visit']), 'BIO' => !empty($donnees['u_bio']) ? CoupeChar(clearer($donnees['u_bio']), '...', 200) : '', 'LOCAL' => $donnees['u_localisation'], 'GROUPE_TITRE' => $donnees['g_titre'], 'GROUPE_ICONE' => $donnees['g_icone'], 'TXT_NEWS' => sprintf(Nw::$lang['users']['nombre_actu'] . ($donnees['s_nb_news'] > 1 ? 's' : ''), $donnees['s_nb_news']), 'TXT_CONTRIB' => sprintf(Nw::$lang['users']['nombre_contrib'] . ($donnees['s_nb_contrib'] > 1 ? 's' : ''), $donnees['s_nb_contrib']), 'TXT_COMS' => sprintf(Nw::$lang['users']['nombre_com'] . ($donnees['s_nb_coms'] > 1 ? 's' : ''), $donnees['s_nb_coms']), 'NBR_NEWS' => $donnees['s_nb_news'], 'NBR_CONTRIB' => $donnees['s_nb_contrib'], 'NBR_COMS' => $donnees['s_nb_coms']));
     }
     /**
      *   Liste des groupes
      **/
     inc_lib('admin/get_list_grp');
     $groupes = get_list_grp();
     foreach ($groupes as $donnees) {
         Nw::$tpl->setBlock('groups', array('ID' => $donnees['g_id'], 'NOM' => $donnees['g_nom']));
     }
     /**
      *   Derniers inscrits
      **/
     inc_lib('users/get_last_registered');
     $last_register = get_last_registered(5);
     foreach ($last_register as $donnees) {
         Nw::$tpl->setBlock('lr', array('ID' => $donnees['u_id'], 'PSEUDO' => $donnees['u_pseudo'], 'AVATAR' => $donnees['u_avatar'], 'ALIAS' => $donnees['u_alias'], 'DATE_REGISTER' => date_sql($donnees['date_register'], $donnees['heures_date_register'], $donnees['jours_date_register'])));
     }
     $par_pseudo = isset($_GET['pseudo']) ? htmlspecialchars($_GET['pseudo']) : '';
     $par_group = isset($_GET['group']) ? intval($_GET['group']) : '';
     $par_local = isset($_GET['local']) ? htmlspecialchars($_GET['local']) : '';
     $par_order = isset($_GET['order']) ? intval($_GET['order']) : '';
     $par_asc = isset($_GET['ad']) ? htmlspecialchars($_GET['ad']) : '';
     Nw::$tpl->set(array('LIST_PG' => list_pg($nombreDePages, $page, 'users%s.html?pseudo=' . $par_pseudo . '&group=' . $par_group . '&local=' . $par_local . '&order=' . $par_order . '&ad=' . $par_asc), 'PSEUDO' => $par_pseudo, 'GROUP' => $par_group, 'LOCAL' => $par_local, 'ORDER' => $par_order, 'ASC' => $par_asc));
 }
function add_news_brouillon($etat = 1)
{
    inc_lib('bbcode/clearer');
    inc_lib('bbcode/parse');
    $news_private = isset($_POST['private_news']) ? 1 : 0;
    $categorie_news = isset($_POST['cat']) ? $_POST['cat'] : 0;
    $mod_news_sql = '';
    $contenu_version = Nw::$DB->real_escape_string(parse(htmlspecialchars(trim($_POST['contenu']))));
    $contenu_extrait = Nw::$DB->real_escape_string(CoupeChar(clearer(parse(htmlspecialchars(trim($_POST['contenu'])))), '...', Nw::$pref['long_intro_news']));
    /**
     *   Enregistrement de la news
     **/
    $is_breve = isset($_POST['is_breve']) ? $_POST['is_breve'] : 0;
    Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news (n_id_auteur, n_id_cat, n_titre, n_date, n_last_mod, n_etat, n_private, n_nb_versions, n_resume, n_breve) VALUES(' . intval(Nw::$dn_mbr['u_id']) . ',
    ' . intval($categorie_news) . ', \'' . insertBD(trim($_POST['titre_news'])) . '\', NOW(), NOW(), ' . $etat . ', ' . $news_private . ', 1, \'' . $contenu_extrait . '\', ' . $is_breve . ')') or Nw::$DB->trigger(__LINE__, __FILE__);
    $id_last_news = Nw::$DB->insert_id;
    Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_flags (f_id_news, f_id_membre, f_type) VALUES(' . intval($id_last_news) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', 3)') or Nw::$DB->trigger(__LINE__, __FILE__);
    Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_logs (l_id_news, l_id_membre, l_titre, l_action, l_date, l_ip) VALUES(' . intval($id_last_news) . ', ' . intval(Nw::$dn_mbr['u_id']) . ', \'' . insertBD(trim($_POST['titre_news'])) . '\', 1, NOW(), \'' . get_ip() . '\')') or Nw::$DB->trigger(__LINE__, __FILE__);
    /**
     *   Sources
     **/
    if (count($_POST['sources']) > 0) {
        $nbr_sources = 0;
        foreach ($_POST['sources'] as $id => $value) {
            if (!multi_empty(trim($_POST['sources_nom'][$id]), trim($_POST['sources'][$id]))) {
                ++$nbr_sources;
                Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_src (src_id_news, src_media, src_url, src_order) VALUES(' . intval($id_last_news) . ', \'' . insertBD(trim($_POST['sources_nom'][$id])) . '\', \'' . insertBD(trim($_POST['sources'][$id])) . '\', ' . $nbr_sources . ')') or Nw::$DB->trigger(__LINE__, __FILE__);
            }
        }
        $mod_news_sql .= 'n_nb_src = ' . $nbr_sources . ', ';
    }
    /**
     *   On créé une entée dans la table des versions
     **/
    $nb_mots = strlen(htmlspecialchars(trim($_POST['contenu'])));
    Nw::$DB->query('INSERT INTO ' . Nw::$prefix_table . 'news_versions (v_id_news, v_id_membre, v_texte, v_date, v_ip, v_nb_mots, v_number, v_raison) VALUES(' . intval($id_last_news) . ',
        ' . intval(Nw::$dn_mbr['u_id']) . ', \'' . $contenu_version . '\', NOW(), \'' . get_ip() . '\', \'' . $nb_mots . '\', 1, \'' . Nw::$lang['news']['motif_debut'] . '\')') or Nw::$DB->trigger(__LINE__, __FILE__);
    $id_version_news = Nw::$DB->insert_id;
    /**
     *   Associer une image à la news (si celle -ci est remplie)
     **/
    if (!empty($_FILES['file']['name'])) {
        inc_lib('news/add_img_news');
        $id_last_image = add_img_news($id_last_news);
        if ($id_last_image) {
            $mod_news_sql .= 'n_id_image = ' . intval($id_last_image) . ', ';
        }
    }
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'news 
        SET ' . $mod_news_sql . 'n_last_version = ' . intval($id_version_news) . '
        WHERE n_id = ' . intval($id_last_news)) or Nw::$DB->trigger(__LINE__, __FILE__);
    Nw::$DB->query('UPDATE ' . Nw::$prefix_table . 'members_stats 
        SET s_nb_news = s_nb_news + 1
        WHERE s_id_membre = ' . intval(Nw::$dn_mbr['u_id'])) or Nw::$DB->trigger(__LINE__, __FILE__);
    /**
     *   Tags
     **/
    if (!empty($_POST['tags']) && strlen(trim($_POST['tags'])) > 0) {
        $tags_news = explode(',', $_POST['tags']);
        $position_tag = 0;
        inc_lib('news/add_tag_news');
        foreach ($tags_news as $tag) {
            if (!empty($tag) && strlen(trim($tag)) > 0) {
                ++$position_tag;
                add_tag_news($id_last_news, $tag, $position_tag);
            }
        }
    }
}