/** * 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); }
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: ./'); } }