Lock
in package
Table of Contents
Properties
- $alertOnly : mixed
- アラートのみで実際のロックはしない
- $enable : mixed
- ロック機能が有効か
- $expire : mixed
- ロックの有効時間
Methods
- __construct() : mixed
- Construct
- canOperate() : bool
- 指定したユーザーがエントリーのロックを操作・参照できるか
- canUnlock() : bool
- 指定したユーザーがエントリーのロックを解除できるか
- getExpiredDatetime() : int
- getLockedUser() : false|array<string|int, mixed>
- エントリーを保存できるか判定
- getLockHolderId() : int
- ロックしているユーザーのIDを取得(有効期限は問わない)
- isAlertOnly() : bool
- lock() : void
- エントリーをロック
- unlock() : mixed
- エントリーをアンロック
- unlockByUser() : void
- 指定されたUIDがロックしているものを全て解除
- getLockTarget() : string
- ロック判定するテーブルを判定して取得
- validateLock() : mixed
- エントリーをロックできるかバリデート
- getEntryTableLockHolderId() : int
- エントリー本体(entry テーブル)のロックユーザーIDを取得
- isEntryTableLockFallback() : bool
- リビジョンの指定が無いのに、ロック対象がリビジョン側と判定されたか
Properties
$alertOnly
アラートのみで実際のロックはしない
protected
mixed
$alertOnly
= false
$enable
ロック機能が有効か
protected
mixed
$enable
= false
$expire
ロックの有効時間
protected
mixed
$expire
= 48
Methods
__construct()
Construct
public
__construct(mixed $enable, mixed $alertOnly, mixed $expire) : mixed
Parameters
- $enable : mixed
- $alertOnly : mixed
- $expire : mixed
canOperate()
指定したユーザーがエントリーのロックを操作・参照できるか
public
canOperate(int $userId, int $eid) : bool
ロックの取得と状態の参照は、そのエントリーの編集画面を開ける人だけに許す。 Why not ログインの有無だけで判定しない: 権限の無い会員でも任意のエントリーをロックして 編集を妨害でき、ロック中のユーザーの氏名・アイコンも読めてしまう。
Parameters
- $userId : int
-
判定するユーザー(未ログインは 0)
- $eid : int
Return values
boolcanUnlock()
指定したユーザーがエントリーのロックを解除できるか
public
canUnlock(int $userId, int $eid, int|null $rvid) : bool
解除できるのは、ロックしている本人と、エントリーのブログの管理者だけ。 Why not: 編集権限があれば誰でも解除できる形(WordPress の「引き継ぐ」)は、ロックが短時間で切れる前提の仕組み。 このロックは既定で 48 時間残るため、誰でも外せるとロックの奪い合いになる。
Parameters
- $userId : int
-
判定するユーザー(未ログインは 0)
- $eid : int
- $rvid : int|null
Return values
boolgetExpiredDatetime()
public
getExpiredDatetime() : int
Return values
intgetLockedUser()
エントリーを保存できるか判定
public
getLockedUser(int $eid, int|null $rvid[, int $suid = null ]) : false|array<string|int, mixed>
Parameters
- $eid : int
- $rvid : int|null
- $suid : int = null
Return values
false|array<string|int, mixed>getLockHolderId()
ロックしているユーザーのIDを取得(有効期限は問わない)
public
getLockHolderId(int $eid, int|null $rvid) : int
Parameters
- $eid : int
- $rvid : int|null
Return values
int —ロックが無ければ 0
isAlertOnly()
public
isAlertOnly() : bool
Return values
boollock()
エントリーをロック
public
lock(int $eid, int|null $rvid, int $suid) : void
Parameters
- $eid : int
- $rvid : int|null
- $suid : int
unlock()
エントリーをアンロック
public
unlock(int $eid, int|null $rvid) : mixed
Parameters
- $eid : int
- $rvid : int|null
unlockByUser()
指定されたUIDがロックしているものを全て解除
public
unlockByUser(int $uid) : void
Parameters
- $uid : int
getLockTarget()
ロック判定するテーブルを判定して取得
protected
getLockTarget(mixed $eid, mixed $rvid) : string
Parameters
- $eid : mixed
- $rvid : mixed
Return values
stringvalidateLock()
エントリーをロックできるかバリデート
protected
validateLock(int $eid, int $rvid, int $suid) : mixed
Parameters
- $eid : int
- $rvid : int
- $suid : int
getEntryTableLockHolderId()
エントリー本体(entry テーブル)のロックユーザーIDを取得
private
getEntryTableLockHolderId(int $eid) : int
Parameters
- $eid : int
Return values
int —ロックが無ければ 0
isEntryTableLockFallback()
リビジョンの指定が無いのに、ロック対象がリビジョン側と判定されたか
private
isEntryTableLockFallback(string $table, int|null $rvid) : bool
一覧のロック表示と解除はエントリー本体(entry テーブル)を見るが、承認が必要なブログの 承認前でないエントリーは getLockTarget が entry_rev を返す。リビジョンの指定が無いと 存在しない行(rvid 0)を見てしまうため、エントリー本体のロックも対象にする。
Parameters
- $table : string
- $rvid : int|null