Exemplo n.º 1
0
function post_twitt_news($id_news)
{
    if (Nw::$is_prod && isset(Nw::$twitter['nouweo']) && count(Nw::$twitter['nouweo']) > 0) {
        inc_lib('news/get_info_news');
        $donnees_news = get_info_news($id_news);
        $real_link_news = Nw::$site_url . $donnees_news['c_rewrite'] . '/' . rewrite($donnees_news['n_titre']) . '-' . $id_news . '/';
        $fields = array('source' => $real_link_news);
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, 'http://shr.im/api/post/');
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($curl);
        curl_close($curl);
        $end_twitt = ' http://shr.im/' . $result . ' #' . strtolower(Nw::$site_name) . ' #' . strtolower($donnees_news['c_rewrite']);
        $longueur_twitt = 145 - strlen($end_twitt);
        if ($donnees_news['n_titre'] > $longueur_twitt) {
            $add_titre = CoupeChar($donnees_news['n_titre'], '...', $longueur_twitt);
        } else {
            $add_titre = $donnees_news['n_titre'];
        }
        $twitt2post = $add_titre . $end_twitt;
        // Postage du twitt sur le compte de base
        $to = new TwitterOAuth(Nw::$twitter['nouweo']['consumer_key'], Nw::$twitter['nouweo']['consumer_secret'], Nw::$twitter['nouweo']['token'], Nw::$twitter['nouweo']['token_secret']);
        $to->OAuthRequest('https://twitter.com/statuses/update.xml', array('status' => $twitt2post), 'POST');
        return $result;
    } else {
        return false;
    }
}
Exemplo n.º 2
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.º 3
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.º 4
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.º 5
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));
 }
function assign_required_vars_profile($donnees_profile)
{
    Nw::$tpl->set(array('ID' => $donnees_profile['u_id'], 'PSEUDO' => $donnees_profile['u_pseudo'], 'AVATAR' => $donnees_profile['u_avatar'], 'ALIAS' => $donnees_profile['u_alias'], 'IDENT_UNIQ' => $donnees_profile['u_ident_unique'], 'LOCAL' => $donnees_profile['u_localisation'], 'BIO_COURT' => CoupeChar($donnees_profile['u_bio'], '... <a href="profile-140-' . $donnees_profile['u_id'] . '.html">' . Nw::$lang['users']['read_more_bio'] . '</a>', 300), 'BIO' => $donnees_profile['u_bio'], 'DATE_REGISTER' => date_sql($donnees_profile['date_register'], $donnees_profile['heures_date_register'], $donnees_profile['jours_date_register']), 'LAST_VISIT' => date_sql($donnees_profile['last_visit'], $donnees_profile['heures_last_visit'], $donnees_profile['jours_last_visit']), 'GROUPE_TITRE' => $donnees_profile['g_titre'], 'GROUPE_ICONE' => $donnees_profile['g_icone']));
}
Exemplo n.º 7
0
 protected function main()
 {
     // Si le paramètre ID manque
     if (empty($_GET['id']) || !is_numeric($_GET['id'])) {
         header('Location: news-70.html');
     }
     //exit('<pre>'.print_r($_GET, true).'</pre>');
     $id_version_load = 0;
     $txt_other_vrs = '';
     $droit_edit_news = false;
     $droit_delete_news = false;
     $author_has_news = false;
     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/vrs_exists');
     if (!empty($_GET['vrs']) && is_numeric($_GET['vrs']) && vrs_exists($_GET['id'], $_GET['vrs']) == true) {
         inc_lib('news/get_info_vrs');
         $id_version_load = $_GET['vrs'];
         $donnees_vrs = get_info_vrs($_GET['vrs']);
         $txt_other_vrs = sprintf(Nw::$lang['news']['view_news_vrs_archived'], $donnees_vrs['v_number']);
     }
     inc_lib('news/get_info_news');
     $donnees_news = get_info_news($_GET['id'], $id_version_load);
     $rewrite_news = rewrite($donnees_news['n_titre']);
     // Ancien permalien des news qui redirige vers le nouveau (nw.com/news-10-1-ma-news.html -> nw.com/politique/ma-news-1/)
     if (strpos($_SERVER['REQUEST_URI'], 'news-10-' . $_GET['id']) !== false) {
         header('Status: 301 Moved Permanently', false, 301);
         header('Location: ' . Nw::$site_url . $donnees_news['c_rewrite'] . '/' . $rewrite_news . '-' . $_GET['id'] . '/');
         exit;
     }
     // Ce membre a le droit d'éditer la news ?
     if ($donnees_news['n_etat'] != 3 && !is_logged_in()) {
         redir(Nw::$lang['news']['not_view_news_perm'], false, Nw::$site_url);
     }
     $this->set_title($donnees_news['n_titre'] . ' | ' . $donnees_news['c_nom']);
     $this->set_tpl('news/view.html');
     $this->add_css('code.css');
     $this->add_css('forms.css');
     $this->base_enabled(true);
     $this->add_wid_in_content('view_news.' . $_GET['id']);
     if ($donnees_news['n_etat'] == 2) {
         $this->add_js('news.attente.js');
     }
     // Fil ariane
     $this->set_filAriane(array(Nw::$lang['news']['news_section'] => array('news-70.html'), $donnees_news['c_nom'] => array($donnees_news['c_rewrite'] . '/'), $donnees_news['n_titre'] => array($donnees_news['c_rewrite'] . '/' . $rewrite_news . '-' . $_GET['id'] . '/'), Nw::$lang['news']['view_fil_ariane'] => array('')));
     /**
      *   Liste des contributeurs
      **/
     inc_lib('news/get_list_contrib');
     $list_contribs = get_list_contrib($_GET['id'], $donnees_news['n_id_auteur'], 'v_mineure = 0');
     foreach ($list_contribs as $donnees_contribs) {
         Nw::$tpl->setBlock('ctb', array('MEMBRE_ID' => $donnees_contribs['u_id'], 'MEMBRE_PSEUDO' => $donnees_contribs['u_pseudo'], 'MEMBRE_ALIAS' => $donnees_contribs['u_alias'], 'MEMBRE_AVATAR' => $donnees_contribs['u_avatar'], 'VERSIONS' => sprintf(Nw::$lang['news']['nbr_contrib'], $donnees_contribs['nb_version'], $donnees_contribs['nb_version'] > 1 ? Nw::$lang['news']['add_s_versions'] : '')));
     }
     /**
      *   News de l'auteur
      **/
     inc_lib('news/get_list_news_byauthor');
     $news_author = get_list_news_byauthor($donnees_news['n_id_auteur'], array(), 3);
     foreach ($news_author as $donnees_author) {
         $author_has_news = true;
         Nw::$tpl->setBlock('nauthor', array('ID' => $donnees_author['n_id'], 'TITRE' => $donnees_author['n_titre'], 'CAT_REWRITE' => $donnees_author['c_rewrite'], 'REWRITE' => rewrite($donnees_author['n_titre'])));
     }
     if ($donnees_news['n_etat'] == 2) {
         inc_lib('news/get_list_votes_news');
         $recents_votes = get_list_votes_news('v_id_news = ' . intval($_GET['id']), 'v_date DESC', 1, 20);
         foreach ($recents_votes as $donnees_vote) {
             Nw::$tpl->setBlock('rvotes', array('DATE' => date_sql($donnees_vote['date'], $donnees_vote['heures_date'], $donnees_vote['jours_date']), 'AUTEUR' => $donnees_vote['u_pseudo'], 'AUTEUR_ID' => $donnees_vote['u_id'], 'AUTEUR_ALIAS' => $donnees_vote['u_alias'], 'TYPE' => $donnees_vote['v_type']));
         }
     }
     /**
      *   Liste des commentaires
      **/
     if ($donnees_news['n_nbr_coms'] > 0) {
         // Pagination
         $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
         $nombreDePages = ceil($donnees_news['n_nbr_coms'] / Nw::$pref['nb_cmts_page']);
         // On vérifie bien que la page existe
         if ($nombreDePages > 0 && $page > $nombreDePages) {
             redir(Nw::$lang['common']['pg_not_exist'], false, $donnees_news['c_rewrite'] . '/' . rewrite($donnees_news['n_titre']) . '-' . $_GET['id'] . '/');
         }
         // L'utilisateur demande un commentaire particulier, on le redirige sur la bonne page
         if (!empty($_GET['id2']) && is_numeric($_GET['id2'])) {
             inc_lib('news/count_cmt_before_idc');
             $nbr_cmts_before = count_cmt_before_idc($_GET['id'], $_GET['id2']);
             $page = ceil($nbr_cmts_before / Nw::$pref['nb_cmts_page']);
         }
         inc_lib('news/get_list_cmt_news');
         $list_cmts = get_list_cmt_news($_GET['id'], 'c_date ASC', $page, Nw::$pref['nb_cmts_page']);
         $com_cours = 0;
         // Affichage de tous les commentaires de la page
         foreach ($list_cmts as $donnees_cmts) {
             ++$com_cours;
             $droit_edit = false;
             $droit_delete = false;
             if (is_logged_in()) {
                 $droit_edit = (bool) (Nw::$droits['can_edit_my_comments'] && $donnees_cmts['u_id'] == Nw::$dn_mbr['u_id']) || Nw::$droits['can_edit_all_comments'];
                 $droit_delete = (bool) (Nw::$droits['can_del_my_comments'] && $donnees_cmts['u_id'] == Nw::$dn_mbr['u_id']) || Nw::$droits['can_del_all_comments'];
             }
             $date_cmt = date_sql($donnees_cmts['date'], $donnees_cmts['heures_date'], $donnees_cmts['jours_date']);
             $masque_motif = '';
             if ($donnees_cmts['c_masque']) {
                 $date_cmt = sprintf(Nw::$lang['news']['del_cmt_with_reason'], strtolower(date_sql($donnees_cmts['date'], $donnees_cmts['heures_date'], $donnees_cmts['jours_date'])));
                 if (!empty($donnees_cmts['c_masque_raison'])) {
                     $masque_motif = ' (' . sprintf(Nw::$lang['news']['motif_delete_cmt'], $donnees_cmts['c_masque_raison']) . ')';
                 }
             }
             Nw::$tpl->setBlock('cmt', array('ID' => $donnees_cmts['c_id'], 'NUM' => ($page - 1) * Nw::$pref['nb_cmts_page'] + $com_cours, 'DATE' => $date_cmt, 'AVATAR' => $donnees_cmts['u_avatar'], 'LANG_AVATAR' => sprintf(Nw::$lang['news']['lang_avatar'], $donnees_cmts['u_pseudo']), 'AUTEUR' => $donnees_cmts['u_pseudo'], 'AUTEUR_ID' => $donnees_cmts['u_id'], 'AUTEUR_ALIAS' => $donnees_cmts['u_alias'], 'TEXTE' => $donnees_cmts['c_texte'], 'PLUSSOIE' => $donnees_cmts['c_plussoie'], 'GRP_TITRE' => $donnees_cmts['g_titre'], 'GRP_ICON' => $donnees_cmts['g_icone'], 'IP' => long2ip($donnees_cmts['c_ip']), 'MASQUE' => $donnees_cmts['c_masque'], 'MASQUE_MOTIF' => $masque_motif, 'EDIT' => $droit_edit, 'DELETE' => $droit_delete));
         }
     }
     if ($donnees_news['n_nb_src'] > 0) {
         inc_lib('news/get_list_src');
         $donnees_src = get_list_src($_GET['id']);
         foreach ($donnees_src as $donnees) {
             Nw::$tpl->setBlock('src', array('LINK' => $donnees['src_url'], 'MEDIA' => $donnees['src_media']));
         }
     }
     if (is_logged_in()) {
         if ($donnees_news['n_id_auteur'] == Nw::$dn_mbr['u_id'] && Nw::$droits['can_delete_mynews'] || Nw::$droits['can_delete_news']) {
             $droit_delete_news = true;
         }
         inc_lib('news/can_edit_news');
         $droit_edit_news = can_edit_news($donnees_news['n_id_auteur'], $donnees_news['n_etat']);
     }
     // Tags de la news
     inc_lib('news/get_list_tags_news');
     $list_tags_metas = array();
     $list_dn_tags = get_list_tags_news($donnees_news['n_etat'] != 3 ? 0 : 3, $_GET['id']);
     foreach ($list_dn_tags as $donnees_tags) {
         $list_tags_metas[] = $donnees_tags['t_tag'];
     }
     inc_lib('news/get_list_news_related');
     inc_lib('news/get_list_flags_news');
     inc_lib('news/has_voted_news');
     inc_lib('bbcode/parse');
     Nw::$tpl->set(array('ID' => $_GET['id'], 'ETAT' => $donnees_news['n_etat'], 'CAT_ID' => $donnees_news['c_id'], 'CAT_TITRE' => $donnees_news['c_nom'], 'CAT_REWRITE' => $donnees_news['c_rewrite'], 'REWRITE' => $rewrite_news, 'AUTEUR' => $donnees_news['u_pseudo'], 'AUTEUR_ID' => $donnees_news['u_id'], 'AUTEUR_BIO' => CoupeChar($donnees_news['u_bio'], '...', 300), 'AUTEUR_ALIAS' => $donnees_news['u_alias'], 'AUTEUR_AVATAR' => $donnees_news['u_avatar'], 'AUTEUR_HASN' => $author_has_news, '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'] : ''), 'COMS' => $donnees_news['n_nbr_coms'], 'NB_VOT_VALID' => Nw::$pref['nb_votes_valid_news'], 'VOTES' => $donnees_news['n_nb_votes'], 'VOTES_NEG' => $donnees_news['n_nb_votes_neg'], 'VERSIONS' => $donnees_news['n_nb_versions'], 'IMAGE_ID' => $donnees_news['i_id'], 'IMAGE_NOM' => $donnees_news['i_nom'], 'NB_SRC' => $donnees_news['n_nb_src'], 'TITRE' => $donnees_news['n_titre'], 'CONTENU' => parse_widgets($donnees_news['v_texte']), 'VRS_LOAD' => $id_version_load, 'TXT_OTHER_VRS' => $txt_other_vrs, 'DRT_EDIT' => $droit_edit_news, 'DRT_DELETE' => $droit_delete_news, 'RELATED' => get_list_news_related($_GET['id'], 5, $donnees_news['n_etat']), 'TAGS' => $list_dn_tags, 'FLAGS' => is_logged_in() ? get_list_flags_news($donnees_news['n_etat'], $_GET['id']) : array(), 'FLAGS_FAV' => is_logged_in() ? $donnees_news['f_type'] : 0, 'HAS_VOTED' => is_logged_in() ? $donnees_news['v_id_membre'] : 0, 'LINK_NB_CONTRIB' => sprintf(Nw::$lang['news']['edit_nb_contrib'], $donnees_news['n_nb_versions']), 'NB_VERSIONS' => sprintf($donnees_news['n_nb_versions'] > 1 ? Nw::$lang['news']['nb_versions'] : Nw::$lang['news']['nb_version'], $donnees_news['n_nb_versions']), 'LIST_PG' => $donnees_news['n_nbr_coms'] > 0 ? list_pg($nombreDePages, $page, $donnees_news['c_rewrite'] . '/' . $rewrite_news . '-' . $_GET['id'] . '/%s', '') : '', 'DRT_COMMENT' => is_logged_in() ? Nw::$droits['can_post_comment'] : false));
     $this->metas(array('desc' => $donnees_news['n_resume'], 'tags' => implode(', ', $list_tags_metas)));
     // Màj du nombre de visualisations
     inc_lib('news/update_pg_vues');
     update_pg_vues($_GET['id']);
 }
Exemplo n.º 8
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.º 9
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);
            }
        }
    }
}