Опять будем переделывать моды от 1.2 и дальше 
Задача при редактировании сообщений администратором/модераторам отослать пользователю сообщение в ПМ с ссылкой на сообщение и тему.
Необходимо иметь установленное расширение pun_pm
Решение: mod_edit_alert_pm
Хук: ed_pre_redirect
Код:
// MOD EDITALERT begin
require FORUM_ROOT.'lang/Russian/editalert.php';
if ($forum_page['is_admmod'] && $cur_post['poster_id'] != $forum_user['id']) {
$subject = $lang_editalert['Subj Edit Alert'];
$body = $lang_editalert['Message Edit Alert beg'].' [url]'.forum_link($forum_url['post'], $id).'[/url] '.$lang_editalert['Message Edit Alert mid'].' "'.$cur_post['subject'].'" '.$lang_editalert['Message Edit Alert end'].' '.$forum_user['username'].'.';
// Get pun_pm_new_messages
$result = $forum_db->query('SELECT username, pun_pm_new_messages FROM '.$forum_db->prefix.'users WHERE id !=1 AND id='.$cur_post['poster_id']) or error('Unable to get user id', __FILE__, __LINE__, $forum_db->error());
// Send message
if(list($usermame, $pun_pm_new_messages) = $forum_db->fetch_row($result)) {
if($pun_pm_new_messages == 'NULL')
$pun_pm_new_messages = 1;
else
$pun_pm_new_messages = $pun_pm_new_messages + 1;
$receiver_id = $cur_post['poster_id'];
$now = time();
// Save to DB
$query = array(
'INSERT' => 'sender_id, receiver_id, status, lastedited_at, read_at, subject, body',
'INTO' => 'pun_pm_messages',
'VALUES' => $forum_user['id'].', '.$receiver_id.', \'sent\', '.$now.', 0, \''.$forum_db->escape($subject).'\', \''.$forum_db->escape($body).'\''
);
$forum_db->query_build($query) or error(__FILE__, __LINE__);
$query = array(
'UPDATE' => 'users',
'SET' => 'pun_pm_new_messages = '.$pun_pm_new_messages,
'WHERE' => 'id = '.$receiver_id,
);
$forum_db->query_build($query) or error(__FILE__, __LINE__);
}
}
// MOD EDITALERT end
Добавлено спустя 50 минут 49 секунд:
Кстати, вопрос к примеру взять файл viewtopic.php строка 276, там где идёт sql-запрос сообщения.
Как в этот запрос добавить свой столбец в SELECT? Столбец в таблице posts.