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(''))); }
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__); }
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__); }
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'] . '&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 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(); } } }
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); } } } }