VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Добрый всем день.
Таблица с личками достигла размера в 700 мб. Есть желание её почистить, но как это сделать правильно? Если просто удалить через базу запись, то во входящих у пользователя всё равно останется этот мессадж. Только ссылка будет вести вникуда.
Вопрос вот в чём: как почистить личку правильно? И если никак, то какими проблемами может грозить удаление записей из таблицы pmtext через базу?
штатным способом - через админку, периодически чищу) особенно у тех, кто давно не заходил
Пользователи - статистика личных сообщений- удалить все личные сообщения - поюзерно)
@BTC
СпециалистЪ
Join Date: Aug 2013
Posts: 727
Версия vB: 3.8.x
Reputation:
Knowing 240
Репутация в разделе: 47
2
@nop, Вам в помощь штатная функция вб для удаления ЛС:
PHP Code:
function delete_user_pms($userid, $updateuser = true) { global $vbulletin, $vbphrase;
$userid = intval($userid);
// array to store pm ids message ids $pms = array(); // array to store the number of pmtext records used by this user $pmTextCount = array(); // array to store the ids of any pmtext records that are used soley by this user $deleteTextIDs = array(); // array to store results $out = array();
// first zap all receipts belonging to this user $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "pmreceipt WHERE userid = $userid"); $out['receipts'] = $vbulletin->db->affected_rows();
// now find all this user's private messages $messages = $vbulletin->db->query_read(" SELECT pmid, pmtextid FROM " . TABLE_PREFIX . "pm WHERE userid = $userid "); while ($message = $vbulletin->db->fetch_array($messages)) { // stick this record into our $pms array $pms["$message[pmid]"] = $message['pmtextid']; // increment the number of PMs that use the current PMtext record $pmTextCount["$message[pmtextid]"] ++; } $vbulletin->db->free_result($messages);
if (!empty($pms)) { // zap all pm records belonging to this user $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "pm WHERE userid = $userid"); $out['pms'] = $vbulletin->db->affected_rows(); $out['pmtexts'] = 0;
// update the user record if necessary if ($updateuser AND $user = fetch_userinfo($userid)) { $updateduser = true; $userdm =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT); $userdm->set_existing($user); $userdm->set('pmtotal', 0); $userdm->set('pmunread', 0); $userdm->set('pmpopup', 'IF(pmpopup=2, 1, pmpopup)', false); $userdm->save(); unset($userdm); } } else { $out['pms'] = 0; $out['pmtexts'] = 0; }
// in case the totals have been corrupted somehow if (!isset($updateduser) AND $updateuser AND $user = fetch_userinfo($userid)) { $userdm =& datamanager_init('User', $vbulletin, ERRTYPE_SILENT); $userdm->set_existing($user); $userdm->set('pmtotal', 0); $userdm->set('pmunread', 0); $userdm->set('pmpopup', 'IF(pmpopup=2, 1, pmpopup)', false); $userdm->save(); unset($userdm); }