PowerCMS X ブログ
2023-12-03
PowerCMS Xではアセット(ファイルアップロード)機能について、ステータス管理が標準で可能になっていて、下書き(非公開)、公開、日時指定公開、時限公開(日時指定で非公開)ができます。シビアに適時開示しなければならないIR情報や事前に漏洩しては困る新商品情報などを管理するために役立ちます。
しかしながら、実際のウェブサイトの運用においては、それだけでは事足りず、色々な要求が出てきます。その一つが「記事に添付したアセットの同時公開」ですが、PowerCMS Xにはそれを実現するためのいくつかの方法が提供されています。
バイナリカラムや添付ファイルは「オブジェクトとファイルが1対1」で関連付いていてオブジェクトが公開されれば同時に公開され、削除や非公開化されると非公開になります。
問題は「UploadUtilities」プラグインの「ステータス同期」機能なのですが、添付ファイルやバイナリカラムのファイルと違い、記事アセットやページアセットなど複数のオブジェクトと関連付けされていることから、単純に参照元のオブジェクトのステータスと連動させるわけにはいきません。
そこで、「すべての参照元オブジェクトのステータスが同じ場合のみ」アセットのステータスが同期する、がこれまでの仕様でした。
しかし、実際の運用では上手くいかないケースが多発します。
自分としてはこのタイミングで公開されると思っていたのに、他の未公開の記事にも関連付けされていた、というケースで、この問題が起こりえます。自分がアップロードした画像が他の記事に使われていた、など、気付かないことがあるからです。
そこで、(互換性を維持した上で)機能を変更できるようにしました。
考え方としては
というものです。後者は「一度公開されたものはインターネット上に公開されたものなのだから非公開にする意味はなかろう」という考え方によります。ただ、それはウェブサイトを運用する側のポリシーによりますから、以下のように機能追加しました。もちろん互換性を保った上で。
この時、オブジェクトが非公開にされたときは、参照元オブジェクトのステータスのうちのステータスの最大値になる(つまり、公開されているオブジェクトと関連付いているのなら非公開にはならない)ようにします。
もしくは、公開済みのアセットは非公開にならない「一度公開されたアセットは、参照元オブジェクトのステータス変更の影響を受けない」というものです。考え方によるのですが、「一度インターネット上に公開されたものは、非公開にしたところで意味はない」と考えれば、それはそれで合理的にも思えます。
設定の組み合わせによって、以下のようにできるようになりました。