- WebP形式の画像をサポートしました(画像として扱え、サムネイル作成などが可能に)。
- プラグイン「ImageWebP」を追加しました。アップロードした画像を WebPフォーマットに変換します。
- RebuildOptimizer を追加しました。「performance_logging」指定のある時、パフォーマンス・ログからモデルごとの再構築単位を自動設定します。
- 環境変数「select_preview_urlmap」を追加しました。モデルに複数の URLマップが割り当てられている時、プレビューする URLマップを選択できるようになりました。
- 選択項目カラムのオプションで、値とラベルをデリミタ「=」で繋いだ形式のデータ指定をサポートしました(PowerCMS のカスタムフィールドと同じように指定 : 例「値A=ラベルA,値B=ラベルB...」)。
WebPの利用方法
webp をサポートするには --with-webp-dir=DIR を追加してください。 PHP 7.4.0 以降では、 --with-webp を代わりに使って下さい。
サーバーの PHPが imagecreatefromwebp/imagewebp 関数をサポートしているか、ImageMagickがインストールされていて環境変数「imagick_convert_path」に convertコマンドのパスを指定してください。pt-check.php でサポート状況を確認できます。以下の画像の場合はサポートしていません。ただし、未サポートの場合でもアセットのアップロードなどは可能です。
ImageWebP プラグインを利用した webpフォーマットへの変換方法
プラグイン「ImageWebP」を有効化します。プラグイン設定で、変換対象の拡張子と変換対応のモデルを設定すると、ファイルが出力されるタイミングで webp形式の画像を生成して出力します。オリジナルの画像が削除された時は、webp形式の画像も削除されます。WebP変換時の画質は環境変数「image_quality」で指定します。初期値は60です。
または、テンプレート・タグのグローバルモディファイア「convert2webp」を利用することもできます。指定されたURLの画像をWebP形式に変換して変換後のURLを返します。属性値には画質を指定する数値( 0=低品質・軽量〜100=高品質・サイズ大 ※ 1を指定した時は無視されます)を指定します。
RebuildOptimizer の利用方法
RebuildOptimizerは、ポップアップウィンドウで再構築する際に、モデルごと、スコープごとに1リクエストあたりの再構築単位を自動で設定するものです。
デフォルトで有効になっていますので、追加で環境変数「performance_logging」に true を指定してください。「performance_logging_threshold」の初期値は 1.0 秒で、1秒以上再構築に時間を要したログが記録されます。必要に応じて設定してください。最適化は夜間に自動的に行われますが、手動で設定することもできます。
- 環境変数「performance_logging」に「true」を指定する
- ポップアップウィンドウから再構築を実行する (必要に応じて数回繰り返す)
- log_dir (デフォルトでは PowerCMSX/log) に「performance.log」が生成されていることを確認する
- 以下のコマンドを実行する (パスや実行ユーザーは環境によって変更してください)
cd path/to/PowerCMSX; sudo -u apache php ./tools/rebuildOptimizer.php --verbose
- 実行後、定期的に最適化を行う必要がなければ環境変数「performance_logging」を削除し、「performance.log」を削除してください。
リリースノート
新機能
- WebP形式をサポートしました(画像として扱え、サムネイル作成などが可能に)。サーバーの PHPが imagecreatefromwebp/imagewebp 関数をサポートしているか、ImageMagickがインストールされていて環境変数「imagick_convert_path」に convertコマンドのパスを指定している時に WebP形式の画像をサポートします。
- プラグイン「ImageWebP」を追加しました。アップロードした画像を WebPフォーマットに変換します。また、グローバルモディファイア「convert2webp」を追加しました。2〜100の数値を指定することで、指定された画質で webp形式の画像に変換し、変換後の URLを返します。
- 環境変数「select_preview_urlmap」を追加しました。モデルに複数の URLマップが割り当てられている時、プレビューする URLマップを選択できるようになりました。
- 選択項目カラムのオプションで、値とラベルをデリミタ「=」で繋いだ形式のデータ指定をサポートしました(例:値A=ラベルA,値B=ラベルB)。
- 環境変数「preview_redirect」に「tmpfile」を指定するとプレビュー用の一時ファイルを生成してリダイレクトするようにしました。一時ファイルは 5秒後に削除されます。
- 定数「PADO_DB_CLEANUP_BLOB」を指定すると「PADO_DB_BLOB2FILE」の設定のある時、ファイルが差し替えられたときなどに古い BLOBファイルを確実に削除できるようになりました。
- 「mt:trans」タグにモディファイア「noescape」を追加しました。この属性指定時のみ環境変数「esc_trans」を無視します。
- 「mt:entries」などのオブジェクトをループするブロックタグの「options」属性にカラム名をキーにしたハッシュを指定できるようになりました。
- プラグイン「TinyMCE」で CDNの URLを利用可能になりました。
- グローバルモディファイア「escape」に「single」を指定可能にしました。「double_encode」を falseにして htmlspecialchars を通した値を返します。
- グローバルモディファイア「unescape」を追加しました。「decode_html」と同様にHTMLエンティティを該当する文字に変換します。
- 環境変数「logrotate」を追加しました。数値を指定すると月に1回、指定数だけ「error.log」ログローテーションを行えます。「-1」を指定するとローテーション数の制限がなくなります。
- 環境変数「logrotate」に配列を指定することで複数のログファイルを対象にし、期間の指定などの詳細設定ができます(例:"logrotate" : {"error.log" : ["weekly", 10, "gz"],"performance.log" : ["monthly", 10, "gz"],"load_avg_peak_memory.log" : ["daily", 10, "gz"]},)。
- プラグイン「SiteSync」でステージング環境の指定をしている時、ステージング環境にバーチャルホストを設定している場合にサイトの URLを設定に追加し、ツリーの URLをステージング環境の URLに変更して表示するようにしました。
- 環境変数「sitemap_sort_order」「sitesync_sort_order」を追加しました。プラグイン「SiteMap」「SiteSync」のツリーの表示順を「ascend」「descend」のいずれかで指定できます。
- 環境変数「sitesync_assets_base」を追加しました。プラグイン「SiteSync」はオプションプラグインのため「/PowerCMSX/plugins/SiteSync/assets/」を異なるパスに設置する時、パスを指定します。
- プラグイン「SiteSync」のプラグイン設定に「ステージング環境のURL」「本番環境のURL」を追加しました。「ステージング環境のURL」設定のある時、本番環境同期画面のツリーの URLが「ステージング環境のURL」起点のツリーに変わります。また、同期後に同期先 URLのリンクが表示されるため、同期結果を画面から確認できるようになります。
- プラグイン「SiteSync」で同期対象のファイルが存在しない時、画面にその旨を表示するようにしました。
- プラグイン「SiteMap」で非公開のオブジェクトをツリーに表示できる設定を追加しました。
- プラグイン「SearchEstraier」のコールバックモデル名を「seaech_estraier」から「searchestraier」に変更しました。「searchestraier_callback_compat」に trueを指定すると修正前のコールバックモデル名に変更されます。初期値は false です。
- プラグイン「Mirroring」でミラーリング、デバッグ、タスクでのミラーリング終了時に「post_mirroring」コールバックを追加しました。第3引数にコマンドの実行結果の配列を渡します。
- プラグイン「Members」にログインメンバーのみにファイルを見せたいときにリライト先に指定するプログラムのサンプル「plugins/Members/app/pt-view-members.php」を追加しました。
- プラグイン「Members」で会員の退会処理に環境変数「verify_form_referrer」の設定を適用するようにしました。
- フォーム機能のトークンを利用する選択時に「セッションを利用する」オプションを追加しました。クッキーを利用して投稿者が確認画面を表示させたユーザーかどうかを識別してセキュリティを高めます。
- 環境変数「form_session_name」を追加しました。フォームにセッションを利用するときにセッションのキーを指定します。初期値は「pcmsx_form_token」です。
- プラグイン「AccessAnalytics」のファンクションタグ「mt:accesstracking」に「relative」モディファイアを指定できるようにしました。
- プラグイン「SearchEstraier」に環境変数「searchestraier_definitely」を追加しました。初期値は trueです。offset指定のないときにヒット件数が正しくならないケースに対応します。
- プラグイン「SiteSync」を ver.2.0にアップデートしました。変更内容は plugins/SiteSync/docs/README.ja.md を参照してください。
- pt-check.php にテストメールの送信とディレクトリへの書き込みテストを追加しました。
- 「mt:date」の formatモディファイア、format_tsモディファイアにエスケープのためのバックスラッシュを指定できるようしました。
- プラグイン「UploadUtilities」でモデルのステータスと同期を指定している時、数値型 1対1のリレーションカラムでアセットを利用しているモデルにも対応しました。
- プラグイン「CacheManager」で期限切れセッションをクリアできるようにしました。
- プラグイン「CacheManager」で画面上部にも「リセット」ボタンを追加しました。
- ファンクションタグ「mt:asseturl」をサポートしました。このタグは「mt:assetfileurl」のエイリアスでアップロードされたアセットのURLを出力します。
- 環境変数「session_dir」を追加しました。指定のある時 PHPの「session_save_path」を変更します。
- プラグイン「DisplayOptions」で一覧画面のソート順を設定できるようにしました。
- tools/rebuildFile.php に「--sleep」(タスク開始前の待ち時間秒)、「--limit」(対象の件数)、「--offset」(スキップする件数)を指定できるようになりました。
- 環境変数「rebuild_order」を追加しました。ポップアップウィンドウの再構築のモデルの順番を指定できます。初期値は「ascend」です。環境変数「rebuild_order_compat」を指定することでこれまでと同様の並び順にすることができます。
- プラグイン「AppProperty」で値に JSONの配列を指定できるようになりました。
- ブロックタグ「mt:archivenext」「mt:archiveprevious」をサポートしました。このタグは日付ベースアーカイブ専用となります。
- 環境変数「rebuild_optimizer」を追加しました。「performance_logging」指定のある時、パフォーマンス・ログからモデルごとの再構築単位を自動設定します。
- 環境変数「rebuild_request_time」を追加しました。「rebuild_optimizer」指定のある時、1回のリクエストが指定秒におさまるように再構築単位を設定します。初期値は40(秒)です。
- tools/rebuildOptimizer.php を追加しました。定期実行タスクとは別に再構築の最適化処理のみを単独で実行します。
- モデル「グループ」で選択したオブジェクトにバイナリ型のカラムのある時、選択したオブジェクトのサムネイルまたはアイコンを表示するようにしました。
- プラグイン設定をプラグイン毎に1度の SQL文でまとめて取得し、キャッシュするようにしました。
- プラグイン「SimplifiedJapanese」の「詳細を表示」欄に形態素解析の結果を表示する設定を追加しました。
- やさしい日本語エディタの要約の文章数の初期値をプラグイン設定で指定できるようにしました。
改善された機能
- Chromeブラウザでテキストエリア内で改行した時にカーソル位置がずれる問題を修正しました。
- 環境変数「published_on_default」指定のある時、一覧のフィルタの日付に現在の日付をセットするようにしました。
- オブジェクトのリビジョン作成時(明示的に作成した時)に「post_save_revision」コールバックを追加しました。
- オブジェクトの複製時に「post_save_clone」コールバックを追加しました。
- オブジェクトを複製した時プラグイン「ExternalPreview」で外部プレビューの有効期限を設定された日数後に延長するようにしました。
- リビジョン一覧で「変更メモ」を検索対象に含めるようにしました。
- プラグイン「HTMLImporter」で「ZIPファイル」ラジオボタンを選択した時、ZIPファイルに関するヒントを表示されるようにしました。
- テーマのウィジェットのメインビジュアルの URL指定にブラウザキャッシュ対策のパラメタを追加しました。
- 環境変数「per_rebuild」の初期値を「100」から「50」に変更しました。
- 「thumbnail」を予約カラム名に追加しました。
- 環境変数「fmgr_delayed」指定のある時「temp_dir」配下には即時にファイルを書き出すようにしました。
- URLマップの作成・編集画面で「コンテナ」ドロップダウンを常に表示するようにしました。
- autoloadの処理を見直し、データベースアクセス時のディスクアクセスを減らしました。
- 数値型 1対1のリレーションカラムの disp_editカラムに「relation」、optionカラムにモデル名をセットするようにしました。
- リスト・アクション実行後の post_saveコールバックをすべてのオブジェクトに対する処理が終了してから実行するようにしました。
- プレビュー画面を開く時の「_target」属性値を画面単位に指定するようにしました。
- 「timestamp」「timestamp_end」を予約カラム名に追加しました。
- 記事の編集画面でのカテゴリ、ページの編集画面でのフォルダの選択 UIでラベルを翻訳するようにしました。
- 一覧画面のフィルタで、作成者と更新者を「ユーザー」と同じく「表示名」で検索するように統一しました。
- プラグイン「MTMLReference」の「mt:getvar」の説明を修正しました。
- リビジョン一覧の画面に「変更メモ」の表示位置を「差分」の最下部に変更しました。
- リビジョン一覧の画面オプションを非表示にするように処理を統一しました。
- プラグイン「DocumentSearch」の環境変数「documentsearch_skip_pdf_test」の初期値を「true」に変更しました。
- オブジェクトの作成・編集画面で階層型/数値型のリレーション型モデルのオブジェクトが存在しない時カラムを非表示にするようにしました。
- プラグイン設定を保存・リセットした時にログを保存するようにしました。
- アセット編集画面のアセットの利用状況に数値型 1対1のリレーションカラムで関連付けられているオブジェクトを追加しました。
修正・変更された機能
- プラグイン「SimplifiedJapanese」「Keywords」で「String could not be parsed as XML」が発生して要約の自動生成に失敗する問題を修正しました。
- URLマップにベースネームを含む時「basename」カラムを変更してコンテンツを保存・公開した時古い URLがキャッシュされたままになる問題を修正しました。
- CSVインポートでステータス「0」がモデルのステータス初期値にセットされる問題を修正しました。
- モデル名に「_」を含むときプレビュー時にオブジェクトのリレーションをループ出力するタグがプレビューの判別に失敗するケースを修正しました。
- プライマリカラムに値「0」がセットされている時一覧や編集画面でオブジェクト名の表示が「null」となる問題を修正しました。
- 必須項目となっているカラムに文字列「0」が保存できない問題を修正しました。
- 環境変数「denied_exts」で「htaccess」を禁止拡張子から除外した時「.htaccess」がアップロードできない問題を修正しました。環境変数「can_upload_hidden」の指定があわせて必要になります。
- プラグイン「FileUploader」で同じ画面から再度同名ファイルをドロップした時に連番が付く問題を修正しました。
- 「mt:entries」などのオブジェクトをループするブロックタグにリレーションカラムの属性を指定している時プライマリカラムが「0」というオブジェクトでのフィルタが効かない問題を修正しました。
- リレーション型のカラムに「翻訳」指定している時、編集画面で翻訳されないケースを修正しました。
- プラグイン「SearchEstraier」が無効の時プラグイン「DocumentSearch」が有効だとアセットがアップロードできない問題を修正しました。
- CSV/ZIPファイルからアセットをインポートする時に正しいパスにアップロードされない問題を修正しました。
- 異なるオブジェクトの URLが重複していたことなどが原因で、公開されているべきファイルが一時的に消えてしまった時、pt-view.php がリクエストを受けた時にファイルを再生成するようにしました。
- URLオブジェクトの削除時にアクティブな同一ファイルパスの URLが別に存在している時、ファイルを削除しないようにしました。
- プラグイン「SiteSync」で環境変数「sitesync_workspaces_in_system」設定のない時もシステムのツリーにスペースのツリーが一部表示されていた問題を修正しました。
- プラグイン「SiteSync」でツリーのチェックボックスではなくリンクをクリックした時には、チェックボックスについては状態を変更しないようにしました。
- プラグイン「SiteSync」でシステムに URLが存在しない時もツリーの一部が表示される問題を修正しました。
- スペースの編集画面から「一覧へ戻る」をクリックするとダッシュボードに遷移する問題を修正しました。
- プラグイン「FixDeniedAssets」を更新しました。一部のパラメタのサニタイズ処理を追加しました。
- モデル「グループ」で選択したオブジェクトをステータスアイコンのコントラスト比が不足していた問題を修正しました。
- 「workspace_id」カラムを持つオブジェクトの編集画面へのリクエストに異なる workspace_idパラメタが渡された時、正しいスコープの画面にリダイレクトするようにしました。
- 管理画面でスペースにいる時にプラグインのアップグレードバッヂが付かない問題を修正しました。
- 環境変数「export_int2label」を追加しました。true指定のある時、CSVインポート&エクスポートで数値型リレーションカラムの値をオブジェクトのラベル(プライマリカラムの値)で扱うようになります。
- 日付ベースアーカイブで「オブジェクトがない時アーカイブを出力しない」チェックボックスにチェックが入っている時、最古のページが出力されない問題を修正しました。
- 環境変数「path_verify」に falseを指定しているときに「../」を含む URLマップの出力ファイルが出力されない問題を修正しました。
- プラグイン「SimplifiedJapanese」「Keywords」プラグインでの自動要約生成時に「Uncaught DivisionByZeroError: Division by zero」エラーが出るケースを修正しました。
- プラグイン「Keywords」で要約を自動生成するときにテキストに含まれている script要素と style要素の内容を除外するようにしました。
- プラグイン「Keywords」で要約を自動生成するときに HTML5のタグが含まれているとエラーログに「Tag タグ名 invalid in Entity」が残る問題を修正しました。
- プラグイン「Keywords」で要約を自動生成するときに句点で終わっていない見出しに句点を補完するようにしました。環境変数「keywords_add_punctuation」を falseにすることで設定を無効化できます。
- 一覧画面のアクションでタグを削除した時「Creating default object from empty value」エラーとなる問題を修正しました。
- プラグイン「BatchApproval」が有効な時、ワークフロー設定のあるモデルの一覧でワークルロー以降のアクションを実行するとモーダルを開く問題を修正しました。
- 再構築トリガーを複数設定している時、以前に再構築されたアーカイブのコンテキストが残る問題を修正しました。
- 一部の画面におけるクロスサイト・スクリプティングの脆弱性を修正しました。
- 日付ベースアーカイブをプレビューしたときに「mt:archivetitle」タグが正しくセットされない問題を修正しました。
- header.tmpl 内の </div> の開始タグが欠落している箇所を修正しました。
- システムスコープでフィルタによる一覧絞り込み条件にリレーションカラムが含まれていると期待した結果とならないケースを修正しました。
- アセット以外のモデルにバイナリ型のカラムを追加している時、編集画面から画像を編集するとデータが常に PNG形式で保存される問題を修正しました。
- バイナリカラムに添付されているファイルが GIF形式の時、画像の編集ボタンを非表示にしました。
- CSVインポートでリレーション先のオブジェクトの添付ファイルを更新した時、一覧画面のサムネイルのキャッシュが更新されない問題を修正しました。
- 1対1のリレーションでアセットモデルを定義している時、選択されたバッヂにサムネイルが表示されない問題を修正しました。
- プラグイン「ExternalPreview」で、リレーションで関連づいている非公開のオブジェクトをプレビューできるようにしました。
- 環境変数「fmgr_delayed」を指定している時、画像のサムネイル作成に失敗する問題を修正しました。
- プラグイン「DisplayOptions」で画面オプションの「オブジェクトごとのオプションを保存」を指定した時、管理者など除外対象のユーザーに対しても個別のカスタマイズが反映されるようにしました。
- 環境変数「objectloop_order」に「descend」が指定されている時、モデルの設定でカラムの表示順が降順になる問題を修正しました。
- 拡張子のないファイルをアップロードした時に末尾に「.」が追加される問題を修正しました。
- アセット/画像型のフィールドでダイアログ選択ボタンがスコープを考慮していない問題を修正しました。
- 一覧からのアクションでステータスを変更した時、オブジェクトの更新者が更新されない問題を修正しました。
- プラグイン「DisplayOptions」で管理者以外のユーザーがシステムスコープにアクセスした時にメニュー位置のカスタマイズが反映されない問題を修正しました。
- システムの「すべてを再構築」でシステムスコープに権限のないユーザーが権限エラーになる問題を修正しました。