Helper
in package
Table of Contents
Methods
- buildSql() : SQL_Select
- 通知の絞り込み
- canComment() : bool
- アクセス中のユーザーが、エントリーのバージョンの承認フローにコメントを残せるか
- canDismissNotification() : bool
- 指定したユーザーが、承認通知を自分の一覧から消せるか
- isInvolvedInApproval() : bool
- 指定したユーザーが、エントリーのバージョンの承認依頼を出した・受けた(宛先のユーザーグループに所属する場合を含む)か
- isWorkflowParticipant() : bool
- 指定したユーザーが、承認ワークフローの開始グループまたは経路グループに所属しているか
- notificationCount() : int
- 通知数をカウント
- getGroupList() : array<string|int, mixed>
Methods
buildSql()
通知の絞り込み
public
buildSql([int|null $userId = SUID ]) : SQL_Select
Parameters
- $userId : int|null = SUID
-
一覧を見るユーザー。省略時はアクセス中のユーザー(SUID)
Return values
SQL_SelectcanComment()
アクセス中のユーザーが、エントリーのバージョンの承認フローにコメントを残せるか
public
canComment(int $userId, int $entryId, int $revisionId) : bool
コメントを残せるのは、次のいずれかに当てはまる人。
- そのバージョンの承認プレビュー画面を開ける人
- そのバージョンの承認依頼の当事者(依頼者・宛先)
- 対象のブログで投稿者以上の権限があり、エントリーまたはそのバージョンの作成者である人 ただしプレビューモード中は閲覧者として振る舞うため、誰であってもコメントできない (sessionWithApprovalPreview と同じ扱い)。
Why not: 承認プレビュー画面を開ける条件(sessionWithApprovalPreview)だけにしない。 コメントのボタンがあるサイドバーは、承認機能が有効で投稿者以上なら常に表示される。 そのため、承認依頼を出した直後の依頼者(宛先でもグループ所属でもない)や、 承認依頼の前に自分のバージョンへコメントを残したい作成者(プロフェッショナル版で承認依頼を出す側)にも ボタンが見え、押すと 403 になる。 一方、編集者以上といった広い条件は足さない(承認に関わらない人がコメントだけ残せてしまう)。 作成者に限るのは、その人が承認依頼を出す側であり、依頼前に画面を開くのが正規の流れのため。 同じ理由でエンタープライズ版は、ワークフローの開始グループ・経路グループの所属者(依頼前でも 承認依頼ボタンが出る人)も許可する。どのグループにも属さない編集者は承認に関わらないため拒否のままで、 ボタン側も同じ判定(Touch_ApprovalComment)で隠す。
Parameters
- $userId : int
-
判定するユーザー(未ログインは 0)
- $entryId : int
- $revisionId : int
Return values
boolcanDismissNotification()
指定したユーザーが、承認通知を自分の一覧から消せるか
public
canDismissNotification(int $userId, int $notificationApprovalId, int $entryId, int $revisionId, int $blogId) : bool
この操作は通知の「除外ユーザー」に自分を足すもの。そのユーザーの通知一覧(buildSql)に載る通知だけに許す。
Why not: 宛先(ユーザー・グループ)との一致だけで判定しない。一覧には宛先の無い通知(全員宛て)や 差し戻し通知、エンタープライズ版の並列承認の通知も載るため、宛先一致だけだと 一覧に表示されている通知を消そうとして 403 になる。
Parameters
- $userId : int
-
判定するユーザー(未ログインは 0)
- $notificationApprovalId : int
-
approval_notification.notification_approval_id
- $entryId : int
- $revisionId : int
- $blogId : int
Return values
boolisInvolvedInApproval()
指定したユーザーが、エントリーのバージョンの承認依頼を出した・受けた(宛先のユーザーグループに所属する場合を含む)か
public
isInvolvedInApproval(int $userId, int $entryId, int $revisionId) : bool
Parameters
- $userId : int
- $entryId : int
- $revisionId : int
Return values
boolisWorkflowParticipant()
指定したユーザーが、承認ワークフローの開始グループまたは経路グループに所属しているか
public
isWorkflowParticipant(int $userId, int $blogId, int|null $categoryId) : bool
承認依頼の行(approval)はそのバージョンで最初の依頼が出るまで存在しないため、 依頼の前から承認依頼ボタンを出せる人(開始グループ・経路グループの所属者)は isInvolvedInApproval では拾えない。ワークフローの定義側から判定する。 エディションの判定は呼び出し側で行う(ワークフローが有効なのは Enterprise 版のみ)。
Parameters
- $userId : int
- $blogId : int
- $categoryId : int|null
Return values
boolnotificationCount()
通知数をカウント
public
notificationCount() : int
Return values
intgetGroupList()
protected
getGroupList([int|null $uid = SUID ]) : array<string|int, mixed>
Parameters
- $uid : int|null = SUID