break; case 'e_pm_del': $errstr = $LANG['e_pm_del']; $type = MessageHelper::WARNING; break; default: $errstr = ''; } if (!empty($errstr)) { $tpl->put('message_helper', MessageHelper::display($errstr, $type)); } } $tpl->display(); } else { $tpl = new FileTemplate('user/pm.tpl'); $nbr_pm = PrivateMsg::count_conversations($current_user->get_id()); //On crée une pagination si le nombre de MP est trop important. $page = AppContext::get_request()->get_getint('p', 1); $pagination = new ModulePagination($page, $nbr_pm, $_NBR_ELEMENTS_PER_PAGE); $pagination->set_url(new Url('/user/pm.php?p=%d')); if ($pagination->current_page_is_empty() && $page > 1) { $error_controller = PHPBoostErrors::unexisting_page(); DispatchManager::redirect($error_controller); } $limit_group = $current_user->check_max_value(PM_GROUP_LIMIT, $user_accounts_config->get_max_private_messages_number()); $unlimited_pm = $current_user->check_level(User::MODERATOR_LEVEL) || $limit_group === -1; $pm_max = $unlimited_pm ? $LANG['illimited'] : $limit_group; $tpl->assign_block_vars('convers', array('C_PAGINATION' => $pagination->has_several_pages(), 'PAGINATION' => $pagination->display(), 'NBR_PM' => $nbr_pm, 'PM_POURCENT' => '<strong>' . $nbr_pm . '</strong> / <strong>' . $pm_max . '</strong>', 'U_MARK_AS_READ' => 'pm.php?read=1', 'L_MARK_AS_READ' => $LANG['mark_pm_as_read'], 'U_USER_ACTION_PM' => url('.php?del_convers=1&p=' . $page . '&token=' . AppContext::get_session()->get_token()), 'U_PM_BOX' => '<a href="pm.php' . '">' . $LANG['pm_box'] . '</a>', 'U_POST_NEW_CONVERS' => 'pm' . url('.php?post=1', ''), 'L_POST_NEW_CONVERS' => $LANG['post_new_convers'])); //Aucun message privé. if ($nbr_pm == 0) { $tpl->assign_block_vars('convers.no_pm', array('L_NO_PM' => LangLoader::get_message('no_item_now', 'common')));
if (!$User->check_level(MEMBER_LEVEL)) { $Errorh->handler('e_auth', E_USER_REDIRECT); } import('members/pm'); $Privatemsg = new PrivateMsg(); $pm_get = retrieve(GET, 'pm', 0); $pm_id_get = retrieve(GET, 'id', 0); $pm_del_convers = retrieve(GET, 'del_convers', false); $quote_get = retrieve(GET, 'quote', 0); $page = retrieve(GET, 'p', 0); $post = retrieve(GET, 'post', false); $pm_edit = retrieve(GET, 'edit', 0); $pm_del = retrieve(GET, 'del', 0); $read = retrieve(GET, 'read', false); if ($read) { $nbr_pm = $Privatemsg->count_conversations($User->get_attribute('user_id')); $limit_group = $User->check_max_value(PM_GROUP_LIMIT, $CONFIG['pm_max']); $unlimited_pm = $User->check_level(MODO_LEVEL) || $limit_group === -1; $nbr_waiting_pm = 0; if (!$unlimited_pm && $nbr_pm > $limit_group) { $nbr_waiting_pm = $nbr_pm - $limit_group; } $j = 0; $result = $Sql->query_while("SELECT pm.last_msg_id, pm.user_view_pm\n\tFROM " . DB_TABLE_PM_TOPIC . " pm\n\tLEFT JOIN " . DB_TABLE_PM_MSG . " msg ON msg.idconvers = pm.id AND msg.id = pm.last_msg_id\n\tWHERE " . $User->get_attribute('user_id') . " IN (pm.user_id, pm.user_id_dest) AND pm.last_user_id <> '" . $User->get_attribute('user_id') . "' AND msg.view_status = 0\n\tORDER BY pm.last_timestamp DESC ", __LINE__, __FILE__); while ($row = $Sql->fetch_assoc($result)) { $j++; if (!$unlimited_pm && $nbr_waiting_pm - $j >= 0) { continue; } $Sql->query_inject("UPDATE " . DB_TABLE_PM_MSG . " SET view_status = 1 WHERE id = '" . $row['last_msg_id'] . "'", __LINE__, __FILE__); }