a-blog cms PHP API Reference

StorageDirPolicy
in package

storage/ 直下のディレクトリ名がバックアップ対象(メディアファイルの実体)かを判定する。

Why not: バックアップ・エクスポート類のディレクトリ名を除外する方式(除外リスト)にしない。 storage/ 直下は運用機能の追加ごとに増え、sql_export / export_wxr / entry_tmp のような 生成物を列挙しきれない。実際に除外名の記述ミスで backup_database と backup_blog が漏れ、 アーカイブのバックアップが過去のバックアップと DB ダンプを取り込んでいた。数字ディレクトリ (ブログ ID)だけを通す許可リスト(既定拒否)にする。

Why not: 静的書き出しの Acms\Services\StaticExport\StorageDirPolicy を再利用しない。 目的が別で(バックアップは復元のための保全、静的書き出しは公開)、片方の都合で対象を 広げた/狭めた変更がもう片方へ波及してはいけない。静的書き出し側が持つ「許可名を設定で 追加する」仕組みもこちらには設けない。バックアップの対象は storage/ の構造そのもので 決まり、運用者が絞り込む必要がないため。

Table of Contents

Constants

SAFE_NAME_PATTERN  = '/\A[0-9A-Za-z_.-]+\z/'
ディレクトリ名として受け付ける文字種。英数字・アンダースコア・ハイフン・ピリオドのみ。

Methods

isBackupTargetDirName()  : bool
storage/ 直下のディレクトリ名がバックアップ対象(メディアファイルの実体)かを判定する。
isSafeName()  : bool
ディレクトリ名として安全な文字種のみで構成され、'.' '..' でないかを判定する。

Constants

SAFE_NAME_PATTERN

ディレクトリ名として受け付ける文字種。英数字・アンダースコア・ハイフン・ピリオドのみ。

private mixed SAFE_NAME_PATTERN = '/\A[0-9A-Za-z_.-]+\z/'

Why not: 呼び出し元(ACMS_POST_Backup_ArchiveExport)は readdir() が返す名前しか 渡さないためパス区切り文字は実害が無いが、この判定はクラス名どおり「安全な名前だけを true にする」ことを保証する必要がある。判定の入口で '/' '' 等を含む名前を拒否しておく。

Methods

isBackupTargetDirName()

storage/ 直下のディレクトリ名がバックアップ対象(メディアファイルの実体)かを判定する。

public static isBackupTargetDirName(string $name) : bool

ブログ数が 1000 を超えると sprintf('%03d') は 4 桁を返すため桁数は固定しない。

Parameters
$name : string

ディレクトリ名(basename)

Return values
bool

isSafeName()

ディレクトリ名として安全な文字種のみで構成され、'.' '..' でないかを判定する。

private static isSafeName(string $name) : bool
Parameters
$name : string
Return values
bool

        
On this page

Search results