a-blog cms PHP API Reference

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_Select

canComment()

アクセス中のユーザーが、エントリーのバージョンの承認フローにコメントを残せるか

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
bool

canDismissNotification()

指定したユーザーが、承認通知を自分の一覧から消せるか

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
bool

isInvolvedInApproval()

指定したユーザーが、エントリーのバージョンの承認依頼を出した・受けた(宛先のユーザーグループに所属する場合を含む)か

public isInvolvedInApproval(int $userId, int $entryId, int $revisionId) : bool
Parameters
$userId : int
$entryId : int
$revisionId : int
Return values
bool

isWorkflowParticipant()

指定したユーザーが、承認ワークフローの開始グループまたは経路グループに所属しているか

public isWorkflowParticipant(int $userId, int $blogId, int|null $categoryId) : bool

承認依頼の行(approval)はそのバージョンで最初の依頼が出るまで存在しないため、 依頼の前から承認依頼ボタンを出せる人(開始グループ・経路グループの所属者)は isInvolvedInApproval では拾えない。ワークフローの定義側から判定する。 エディションの判定は呼び出し側で行う(ワークフローが有効なのは Enterprise 版のみ)。

Parameters
$userId : int
$blogId : int
$categoryId : int|null
Return values
bool

notificationCount()

通知数をカウント

public notificationCount() : int
Return values
int

getGroupList()

protected getGroupList([int|null $uid = SUID ]) : array<string|int, mixed>
Parameters
$uid : int|null = SUID
Return values
array<string|int, mixed>

        
On this page

Search results