ずっと前にフォーラム用に作成したプロファイルウォールスクリプトの通知システムをコーディングしようとしています。私が抱えている問題は、PMの基準を満たす人にPMを1つだけ送信しようとしていることですが、PMを実行する必要がある人を見つけるためにMYSQLに2つのselectステートメントもあります。
選択できるテーブルが2つあります...log_statuses
そしてlog_status_replies
これを達成しようとしています。一度だけコメントした方にお知らせしたいです!また、それが属する人の壁と人の壁にステータスを書いた人ですが、あなたがそれを書いた場合はあなた自身ではありません。ちょっと複雑なので、これを正しく行うのに苦労しています...
コメントした人を検索してPMを送信するための私のコードは次のとおりです。誰がステータスを書き、誰がそれを壁にしているのかをチェックする方法もあります。コメントした場合は、重複したPMを送信しません。
そうでなければ、彼らはコメントしたので、そして彼らのステータス/壁のためにPMを受け取るでしょう。それを理解していただければ幸いです。説明するのはちょっと難しいです。
これが私のソースコードです。助けてくれる人がいたらいいのにと思います。
$query = $smcFunc['db_query']('', '
SELECT id_member, id_poster
FROM {db_prefix}log_statuses
WHERE id_status = {int:id_status}',
array(
'id_status' => $status,
)
);
list($id_member,$id_poster) = $smcFunc['db_fetch_row']($query);
if ($id_poster != $ucomment || $id_member != $ucomment)
{
$query2 = $smcFunc['db_query']('', '
SELECT DISTINCT id_member
FROM {db_prefix}log_status_replies
WHERE id_status = {int:id_status}',
array(
'id_status' => $status,
)
);
while ($row = $smcFunc['db_fetch_assoc']($query2)) {
if ($row['id_member'] != $ucomment)
{
$pm_recipients = array(
'to' => array($row['id_member']),
'bcc' => array(),
);
require_once($sourcedir . '/Subs-Post.php');
$notify_body = $txt['status_body'] . '[iurl]' .$scripturl . '?action=profile;area=showstatus;s=' . $status . '[/iurl]';
$notify_body = str_replace("%poster",$context['user']['name'],$notify_body);
$pm_from = array(
'id' => $ucomment,
'username' => '',
'name' => '',
);
sendpm($pm_recipients,$txt['status_subject'] , $notify_body,false,$pm_from);
}
}
}
$ id_memberは人の壁、$id_posterは壁に投稿した人です。$ucommentは投稿している人です。