③友達リクエストの申請、承認、非承認
あくまで私見による一例です。
もちろん「メール送信」があったほうがログインしなくても気づけるのでありがたいですけど、なくても実装は可能です。
まずは「その友達のページにアクセスしたときに自分の友達にいるかいないか」で「友達リクエスト機能(多分ボタンとか)」を表示するかどうかが決まりますよね。
これが第一段階。
次に「友達リクエスト管理テーブル」を用意します。
テーブルには連番のID,申請者ユーザID,申請先ユーザID,申請状態
とかあればいいかと(できれば作成日時、更新日時)
次は
「友達リクエスト機能」の表示非表示の条件に「友達リクエスト管理テーブル」の「申請状態」を追加します。
「申請中」なのに申請ボタンが押せたらおかしいですしね。
他に表示非表示を判断するのは仕様です。却下された場合に再申請OKにするのかとか。
あと申請履歴を残すかどうか。
次は
「友達リクエスト機能」を押した際に「友達リクエスト管理テーブル」にデータを「申請中」で保管します。
ボタンですが画面遷移を伴う必要はないのでAjaxで更新し、その結果でJavaScriptでボタンの表示状態を切り替えておくのもありです(PHPで判断して切り替えるのは必須)
次は
「友達リクエスト機能」の表示状態を「友達リクエスト管理テーブル」の「申請状態」によって表示文言をかえたりしてみます。
「非表示」だけだとわからないので「申請中」と表示して押せないようにするとかですね。
次は
「申請者ユーザ」の「友達申請一覧」を作りましょう。「友達リクエスト管理テーブル」の情報をとってきて表示すればいいですね。
あくまで状態を見るだけのものです。初期は「申請中」だけ表示させて切り替えてもいいかもしれません。
次は
「申請先ユーザ」がログインした際に「友達リクエスト管理テーブル」を確認し「申請状態」によって通知を画面表示します。
最初は「申請中」だけで良いでしょう。履歴を残したい場合は「受付申請一覧」などのページを作っても良いでしょうし、通知をクリックしたらその一覧に飛ぶようにすると良いでしょう。
次は
「申請先ユーザ」が「受付申請一覧」から「申請」のものから「承認」「却下」を押せるようにしましょう。
押したら「友達リクエスト管理テーブル」の「申請状態」を更新します。連番でIDをとっているのでUPDATE先はそのIDですね。
次は
「申請者ユーザ」がログインした際に「友達リクエスト管理テーブル」を確認し「申請状態」によって通知を画面表示します。
「承認されました」「却下されました」 どうするかは仕様です。決めてください。
「承認」された場合は「友達リストテーブル」に追加します。このあたりは作られている前提です(最初の表示非表示にかかってくる部分)
ザッと書きましたが、
昨今のソーシャルゲームの仕組みを少し詳細に書き出しただけとなります。
もしこれを「どのようなコードを」となると作業依頼となるのでteratailでは非推奨です。お気をつけください。
というか余程の独自仕様を盛り込まない限り、CMSのプラグインとかで充分事足りるのではないか
という疑問が拭えませんが(WordPressとかXOOPSとか)、自前で作っているということなので、ひとまず参考まで頑張ってください。