/**
  *  Activation du compte.
  *  @author Cam
  *  @return tpl
  */
 protected function main()
 {
     if (empty($_GET['mid']) || empty($_GET['ca'])) {
         header('Location: ./');
     }
     if (is_logged_in()) {
         redir(Nw::$lang['common']['already_connected'], false, './');
     }
     $return_valid = false;
     inc_lib('users/mbr_act_exists');
     if (mbr_act_exists($_GET['mid'], $_GET['ca'])) {
         inc_lib('users/get_info_mbr');
         $donnees_compte = get_info_mbr($_GET['mid']);
         if ($donnees_compte['u_active'] == 0) {
             inc_lib('users/valid_account');
             inc_lib('admin/gen_cachefile_nb_members');
             valid_account($_GET['mid']);
             gen_cachefile_nb_members();
             generate_members_sitemap();
             redir(Nw::$lang['users']['compte_valide'], true, './');
             $return_valid = true;
         }
     }
     if (!$return_valid) {
         redir(Nw::$lang['users']['compte_valid_error'], false, './');
     }
 }
 /**
  *  Mot de passe oublié (partie 1)
  *  @author Cam
  *  @return tpl
  */
 protected function main()
 {
     // Si le membre est déjà connecté
     if (is_logged_in()) {
         redir(Nw::$lang['common']['already_connected'], false, './');
     }
     $this->set_title(Nw::$lang['users']['title_lost_pwd']);
     $this->set_tpl('membres/oubli_mdp.html');
     $this->add_css('forms.css');
     // Fil ariane
     $this->set_filAriane(Nw::$lang['users']['title_lost_pwd']);
     //Si le formulaire a été validé
     if (isset($_POST['submit'])) {
         // Cette adresse email existe bien sur le site
         inc_lib('users/email_exists');
         if (email_exists($_POST['mail'])) {
             //On récupère les infos du membre
             inc_lib('users/get_info_mbr');
             $membre_mail = get_info_mbr($_POST['mail'], 'mail');
             $lien_password = Nw::$site_url . 'users-13.html?idm=' . $membre_mail['u_id'] . '&ca=' . $membre_mail['u_code_act'];
             //On prépare le texte de l'email
             $txt_mail = sprintf(Nw::$lang['users']['mail_oubli_pwd'], $membre_mail['u_pseudo'], $lien_password, $lien_password, $lien_password);
             @envoi_mail(trim($_POST['mail']), sprintf(Nw::$lang['users']['title_mail_lost_pwd'], Nw::$site_name), $txt_mail);
             redir(Nw::$lang['users']['send_mail_lost'], true, './');
         } else {
             redir(Nw::$lang['users']['email_aucun_mbr'], false, 'users-12.html');
         }
     }
 }
 protected function main()
 {
     // Si le paramètre ID manque
     if (empty($_GET['id'])) {
         header('Location: ./');
     }
     inc_lib('users/mbr_exists');
     if (mbr_exists($_GET['id']) == false) {
         redir(Nw::$lang['users']['mbr_dont_exist'], false, 'users.html');
     }
     inc_lib('users/get_info_mbr');
     $donnees_profile = get_info_mbr($_GET['id']);
     $this->load_lang_file('users');
     $this->load_lang_file('news');
     $this->add_wid_in_content('view_profile.' . $donnees_profile['u_id']);
     $this->set_tpl('profile/list_comments.html');
     $this->set_title(sprintf(Nw::$lang['profile']['profile_title'], $donnees_profile['u_pseudo']));
     $this->add_css('code.css');
     $this->add_js('profil.js');
     $this->set_filAriane(array(Nw::$lang['users']['members_section'] => array('users.html'), $donnees_profile['u_pseudo'] => array('./profile/' . $donnees_profile['u_alias'] . '/'), Nw::$lang['profile']['title_cmts_author'] => array('')));
     $params_contrib = array();
     $params_contrib[] = 'c_id_membre = ' . intval($_GET['id']);
     if (!is_logged_in()) {
         $params_contrib[] = 'n_etat = 3';
     }
     inc_lib('profile/count_comments_mbr');
     $nombre_cmts = count_comments_mbr(implode(' AND ', $params_contrib));
     // Pagination
     $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     $nombreDePages = ceil($nombre_cmts / Nw::$pref['ppl_nb_comments']);
     // On vérifie bien que la page existe
     if ($nombreDePages > 0 && $page > $nombreDePages) {
         redir(Nw::$lang['common']['pg_not_exist'], false, './');
     }
     inc_lib('profile/get_comments_mbr');
     $com_cours = 0;
     $list_cmts = get_comments_mbr(implode(' AND ', $params_contrib), 'c_date DESC', $page, Nw::$pref['ppl_nb_comments']);
     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'], 'ID_NEWS' => $donnees_cmts['c_id_news'], 'REWRITE' => rewrite($donnees_cmts['n_titre']), 'CAT_REWRITE' => $donnees_cmts['c_rewrite'], '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));
     }
     Nw::$tpl->set(array('NOMBRE_CMTS' => $nombre_cmts, 'LIST_PG' => list_pg($nombreDePages, $page, 'profile-135-' . $_GET['id'] . '%s.html')));
     inc_lib('profile/assign_required_vars_profile');
     assign_required_vars_profile($donnees_profile);
 }
 protected function main()
 {
     // Si le paramètre ID manque
     if (empty($_GET['id'])) {
         header('Location: ./');
     }
     inc_lib('users/mbr_exists');
     if (mbr_exists($_GET['id']) == false) {
         redir(Nw::$lang['users']['mbr_dont_exist'], false, 'users.html');
     }
     inc_lib('users/get_info_mbr');
     $donnees_profile = get_info_mbr($_GET['id']);
     $this->load_lang_file('users');
     $this->load_lang_file('news');
     $this->add_wid_in_content('view_profile.' . $donnees_profile['u_id']);
     $this->set_tpl('profile/list_contribs.html');
     $this->set_title(sprintf(Nw::$lang['profile']['profile_title'], $donnees_profile['u_pseudo']));
     $this->add_css('code.css');
     $this->add_js('profil.js');
     $this->set_filAriane(array(Nw::$lang['users']['members_section'] => array('users.html'), $donnees_profile['u_pseudo'] => array('./profile/' . $donnees_profile['u_alias'] . '/'), Nw::$lang['profile']['title_news_contrib'] => array()));
     $params_contrib = array();
     $params_contrib[] = 'v_id_membre = ' . intval($_GET['id']);
     if (!is_logged_in()) {
         $params_contrib[] = 'n_etat = 3';
     }
     inc_lib('profile/count_news_contrib');
     $nombre_contrib = count_news_contrib(implode(' AND ', $params_contrib));
     // Pagination
     $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     $nombreDePages = ceil($nombre_contrib / Nw::$pref['ppl_nb_contribs']);
     // On vérifie bien que la page existe
     if ($nombreDePages > 0 && $page > $nombreDePages) {
         redir(Nw::$lang['common']['pg_not_exist'], false, './');
     }
     inc_lib('profile/get_news_contrib');
     $cours_news = 0;
     $contrib_cours = '';
     $count_section = 0;
     $list_contrib = get_news_contrib(implode(' AND ', $params_contrib), 'v_date DESC, n_date DESC', $page, Nw::$pref['ppl_nb_contribs']);
     foreach ($list_contrib as $donnees_contrib) {
         Nw::$tpl->setBlock('contrib', array('ID' => $donnees_contrib['v_id'], 'ID_NEWS' => $donnees_contrib['v_id_news'], 'MOTIF' => $donnees_contrib['v_raison'], 'NB_MOTS' => sprintf(Nw::$lang['news']['nbr_caract'], $donnees_contrib['v_nb_mots']), 'DIFF_MOTS' => $donnees_contrib['v_diff_mots'], 'IP' => long2ip($donnees_contrib['v_ip']), 'COURS' => $cours_news % 2, 'DATE' => date_sql($donnees_contrib['date'], $donnees_contrib['heures_date'], $donnees_contrib['jours_date'])));
         ++$cours_news;
         if ($contrib_cours != $donnees_contrib['v_id_news']) {
             Nw::$tpl->setBlock('contrib.news', array('ID' => $donnees_contrib['n_id'], 'TITRE' => $donnees_contrib['n_titre'], 'REWRITE' => rewrite($donnees_contrib['n_titre']), 'CAT_REWRITE' => $donnees_contrib['c_rewrite'], 'ETAT' => $donnees_contrib['n_etat'], 'ETAT_LANG' => Nw::$lang['news']['etat_news_' . $donnees_contrib['n_etat']], 'ETAT_ACT' => $donnees_contrib['n_etat'] == 1 ? 70 : 80, 'IMAGE_ID' => $donnees_contrib['i_id'], 'IMAGE_NOM' => $donnees_contrib['i_nom'], 'END' => $count_section > 0 ? '</div></div>' : ''));
             $contrib_cours = $donnees_contrib['v_id_news'];
             ++$count_section;
         }
     }
     Nw::$tpl->set(array('END_DIV' => $count_section > 0 ? '</div></div>' : '', 'NOMBRE_CONTRIB' => $nombre_contrib, 'LIST_PG' => list_pg($nombreDePages, $page, 'profile-130-' . $_GET['id'] . '%s.html')));
     inc_lib('profile/assign_required_vars_profile');
     assign_required_vars_profile($donnees_profile);
 }
Exemple #5
0
 protected function main()
 {
     // Si le paramètre ID manque
     if (empty($_GET['id'])) {
         header('Location: ./');
     }
     inc_lib('users/mbr_exists');
     if (mbr_exists($_GET['id']) == false) {
         redir(Nw::$lang['users']['mbr_dont_exist'], false, 'users.html');
     }
     inc_lib('users/get_info_mbr');
     $donnees_profile = get_info_mbr($_GET['id']);
     $this->load_lang_file('users');
     $this->load_lang_file('news');
     $this->add_wid_in_content('view_profile.' . $donnees_profile['u_id']);
     $this->set_tpl('profile/list_news.html');
     $this->set_title(sprintf(Nw::$lang['profile']['profile_title'], $donnees_profile['u_pseudo']));
     $this->add_css('code.css');
     $this->add_js('profil.js');
     $this->base_enabled(true);
     $this->set_filAriane(array(Nw::$lang['users']['members_section'] => array('users.html'), $donnees_profile['u_pseudo'] => array('./profile/' . $donnees_profile['u_alias'] . '/'), Nw::$lang['profile']['title_news_author'] => array()));
     $params_news = array();
     $params_news[] = 'n_id_auteur = ' . intval($donnees_profile['u_id']);
     if (!is_logged_in()) {
         $params_news[] = 'n_etat = 3';
     }
     inc_lib('profile/count_news_author');
     $nombre_news = count_news_author(implode(' AND ', $params_news));
     // Pagination
     $page = isset($_GET['page']) ? intval($_GET['page']) : 1;
     $nombreDePages = ceil($nombre_news / Nw::$pref['ppl_nb_news']);
     // On vérifie bien que la page existe
     if ($nombreDePages > 0 && $page > $nombreDePages) {
         redir(Nw::$lang['common']['pg_not_exist'], false, './');
     }
     inc_lib('profile/get_news_author');
     $cours_news = 0;
     $list_news = get_news_author(implode(' AND ', $params_news), 'n_date DESC', $page, Nw::$pref['ppl_nb_news']);
     foreach ($list_news as $donnees_news) {
         ++$cours_news;
         Nw::$tpl->setBlock('news', array('ID' => $donnees_news['n_id'], 'TITRE' => $donnees_news['n_titre'], 'CAT_REWRITE' => $donnees_news['c_rewrite'], 'REWRITE' => rewrite($donnees_news['n_titre']), 'RESUME' => $donnees_news['n_resume'], 'ETAT' => $donnees_news['n_etat'], 'ETAT_LANG' => Nw::$lang['news']['etat_news_' . $donnees_news['n_etat']], 'ETAT_ACT' => $donnees_news['n_etat'] == 1 ? 70 : 80, 'NBR_VOTES' => $donnees_news['n_nb_votes'], 'HAS_VOTED' => is_logged_in() ? $donnees_news['v_id_membre'] : 0, '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'] : ''), 'DATE' => date_sql($donnees_news['date_news'], $donnees_news['heures_date_news'], $donnees_news['jours_date_news']), 'IMAGE_ID' => $donnees_news['i_id'], 'IMAGE_NOM' => $donnees_news['i_nom'], 'COURS' => $cours_news % 2));
     }
     Nw::$tpl->set(array('NOMBRE_NEWS' => $nombre_news, 'LIST_PG' => list_pg($nombreDePages, $page, 'profile/%s.html')));
     inc_lib('profile/assign_required_vars_profile');
     assign_required_vars_profile($donnees_profile);
 }
 protected function main()
 {
     $this->load_lang_file('users');
     $this->load_lang_file('news');
     // Si le paramètre ID manque
     if (empty($_GET['id'])) {
         header('Location: ./');
     }
     inc_lib('users/mbr_exists');
     if (mbr_exists($_GET['id']) == false) {
         redir(Nw::$lang['users']['mbr_dont_exist'], false, 'users.html');
     }
     inc_lib('users/get_info_mbr');
     $donnees_profile = get_info_mbr($_GET['id']);
     $this->add_wid_in_content('view_profile.' . $donnees_profile['u_id']);
     $this->set_tpl('profile/full_bio.html');
     $this->set_title(sprintf(Nw::$lang['profile']['profile_title'], $donnees_profile['u_pseudo']));
     $this->add_css('code.css');
     $this->add_js('profil.js');
     $this->set_filAriane(array(Nw::$lang['users']['members_section'] => array('users.html'), $donnees_profile['u_pseudo'] => array('./profile/' . $donnees_profile['u_alias'] . '/'), Nw::$lang['profile']['title_full_bio'] => array()));
     $this->base_enabled(true);
     inc_lib('profile/assign_required_vars_profile');
     assign_required_vars_profile($donnees_profile);
 }
 /**
  *  Formulaire de connexion à l'espace membre
  *  @author Cam
  *  @return tpl
  */
 protected function main()
 {
     // Si le membre est déjà connecté
     if (is_logged_in()) {
         redir(Nw::$lang['common']['already_connected'], false, './');
     }
     $token = !empty($_GET['token']) ? $_GET['token'] : $_GET['auth_token'];
     if (empty($token)) {
         header('Location: ./');
     }
     // On modifie le titre de la page
     $this->set_title(Nw::$lang['users']['login_rpx_title']);
     $post_data = array('token' => $token, 'apiKey' => Nw::$rpx_login['api_key'], 'format' => 'json');
     // make the api call using libcurl
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_URL, 'https://rpxnow.com/api/v2/auth_info');
     curl_setopt($curl, CURLOPT_POST, true);
     curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
     curl_setopt($curl, CURLOPT_HEADER, false);
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     $raw_json = curl_exec($curl);
     curl_close($curl);
     // parse the json response into an associative array
     $auth_info = json_decode($raw_json, true);
     // process the auth_info response
     if ($auth_info['stat'] == 'ok') {
         inc_lib('users/identifier_exists');
         $profile = $auth_info['profile'];
         $identifier = $profile['identifier'];
         /**
          *   Le membre est déjà inscrit, on le loggue
          **/
         if (identifier_exists($identifier) == true) {
             inc_lib('users/get_info_mbr');
             inc_lib('users/connect_auto_user');
             $donnees_ident = get_info_mbr($identifier, 'identifier');
             if ($donnees_ident['u_active'] == 1) {
                 connect_auto_user($donnees_ident['u_id'], $donnees_ident['u_password'], true, False);
                 redir(sprintf(Nw::$lang['users']['welcome_user'], $donnees_ident['u_pseudo']), true, './');
             } else {
                 redir(Nw::$lang['users']['not_active'], false, 'users-10.html');
             }
         } else {
             $this->set_tpl('membres/rpx.html');
             $this->add_css('forms.css');
             $need_define_email = 0;
             $need_define_nick = 0;
             $email_inscription = isset($profile['email']) ? $profile['email'] : '';
             $nick_inscription = $profile['preferredUsername'];
             $no_errors = false;
             if (empty($email_inscription)) {
                 $need_define_email = 1;
             }
             inc_lib('users/pseudo_exists');
             if (pseudo_exists($nick_inscription) == true) {
                 $need_define_nick = 1;
             }
             Nw::$tpl->set(array('TXT_EDITO' => sprintf(Nw::$lang['users']['txt_register_rpx'], $profile['preferredUsername'], $profile['providerName']), 'TITLE' => sprintf(Nw::$lang['users']['title_register_rpx'], $profile['providerName']), 'DEF_NICK' => $need_define_nick, 'DEF_EMAIL' => $need_define_email, 'TXT_DEF_NICK' => $need_define_nick ? '<span style="color: red;">' . sprintf(Nw::$lang['users']['need_def_nick'], $profile['preferredUsername']) . '</span>' : ''));
             display_form(array('nw_pseudo' => $nick_inscription, 'nw_email' => ''));
             $value_form_email = isset($_POST['nw_email']) ? $_POST['nw_email'] : '';
             $value_form_nick = isset($_POST['nw_pseudo']) ? $_POST['nw_pseudo'] : '';
             /**
              *   L'utilisateur doit spécifier une adresse email pour terminer son inscription
              **/
             if ($need_define_email) {
                 if (isset($_POST['submit']) && !empty($_POST['nw_email'])) {
                     $array_post = array('nw_email' => $value_form_email, 'nw_pseudo' => $value_form_nick);
                     // L'email est bien sous la bonne forme (name@domain.tld)
                     if (!filter_var($_POST['nw_email'], FILTER_VALIDATE_EMAIL)) {
                         display_form($array_post, Nw::$lang['users']['format_email_false']);
                         $no_errors = true;
                         return;
                     }
                     // On vérifie bien que cet email n'a jamais utilisé lors de l'inscription (doubles comptes)
                     inc_lib('users/email_exists');
                     if (email_exists($_POST['nw_email']) == true) {
                         display_form($array_post, Nw::$lang['users']['email_already_used']);
                         $no_errors = true;
                         return;
                     }
                     $email_inscription = $_POST['nw_email'];
                 }
             }
             /**
              *   Le pseudo du gars est déjà utilisé, on lui demande d'en prendre un autre
              **/
             if (isset($_POST['submit']) && !empty($_POST['nw_pseudo'])) {
                 $array_post = array('nw_email' => $value_form_email, 'nw_pseudo' => $value_form_nick);
                 // L'email est bien sous la bonne forme (name@domain.tld)
                 inc_lib('users/pseudo_exists');
                 if (pseudo_exists($_POST['nw_pseudo']) == true) {
                     display_form($array_post, Nw::$lang['users']['nickname_used']);
                     $no_errors = true;
                     return;
                 }
                 $nick_inscription = $_POST['nw_pseudo'];
                 /**
                  *   On a toutes les infos pour inscrire le membre
                  **/
                 if (!$no_errors && !empty($nick_inscription) && !empty($email_inscription)) {
                     inc_lib('users/add_mbr');
                     $pass_compte = '?ZjZ' . $identifier . uniqid();
                     $active_compte = $need_define_email == 1 ? 0 : 1;
                     $new_id = add_mbr($nick_inscription, $pass_compte, $email_inscription, $identifier, $active_compte);
                     // Le compte est validé tout seul, pas besoin de validation par mail
                     if (!$need_define_email) {
                         inc_lib('users/connect_auto_user');
                         connect_auto_user($new_id, $pass_compte, true);
                         redir(sprintf(Nw::$lang['users']['inscrit_rpx_no_valid'], $nick_inscription, $profile['providerName']), true, './');
                     } else {
                         redir(sprintf(Nw::$lang['users']['inscrit_rpx_with_val'], $nick_inscription, $profile['providerName']), true, './');
                     }
                 }
             }
         }
     } else {
         header('Location: ./');
     }
 }