Releases: modxcms-jp/evolution-jp
release-1.2.0J
概要
Evolution JP 1.2.0J をリリースしました。本バージョンでは PHP8(8.0–8.4)への完全対応 を達成し、長年にわたって蓄積されてきた技術的負債を大規模に解消しています。
PHP7.4 環境でも動作するため、段階的なアップグレードが可能です。
主な変更点(ハイライト)
- PHP8(8.0–8.4)完全対応
- UTF-8MB4 完全対応(絵文字・異体字・多言語強化)
- CSRF 対策を含むセキュリティ強化
- インストーラの改善(詳細ログ出力)
- TinyMCE 7 へのアップデート
- 管理画面テーマ・メディアブラウザの刷新
- 大規模な安定性向上とエラー修正
新機能・改善内容
UTF-8MB4 完全対応
- データベースを UTF-8MB4 へ簡単に変換可能
- 絵文字の利用が可能
- 旧字体・異体字(例: 﨑 / 髙)を正しく保存
- より広範な Unicode 文字セットに対応
セキュリティ強化
-
CSRF(クロスサイトリクエストフォージェリ)対策を全面導入
- マルチタブ対応のセッションベース実装
- 管理画面のすべてのフォーム送信で検証
-
ファイルアップロード処理の安全性向上
-
入力値取得を安全なヘルパー関数に統一
インストーラの改善
- インストール時のエラー詳細を
temp/install.logに記録 - 問題発生時の原因特定が容易に
エディタ・UI 改善
-
TinyMCE 7 へアップデート
-
管理画面テーマを複数用意(デフォルト含む 7 種類)
-
MCPUK メディアブラウザの大幅改善
- フォルダツリー表示
- テーマと統一されたデザイン
- 長いファイル名への対応
- 操作性の向上
その他の改善
-
イベントログのエクスポート機能
-
メール送信ログ機能(オプション)
-
.envによる環境変数対応- 本番/ステージング/テスト環境の切り替えが容易に
- ※
.envファイルへの外部アクセスは Web サーバー設定で必ず拒否してください
-
プレビュー機能の強化(トークンベース)
-
Internet Explorer 対応を完全廃止(モダンブラウザのみ対応)
安定性向上
- PHP8 環境で発生していたエラー・警告を多数修正
- Ditto スニペット、WebLogin プラグインの改善
- リソース管理画面の不具合修正
- キャッシュ処理の最適化
エンジニア向け情報
PHP8 対応・コードモダン化
- 動的プロパティの明示的宣言(PHP8.2 対応)
- Null 合体演算子(
??)による安全な配列アクセス - 非推奨関数の置き換え(例:
strftime()→date()) - 型安全性の強化
- 配列構文の統一(
array()→[])
JavaScript モダン化
- ES6+ 対応(
var→let/const) - クラス構文の導入
addEventListenerへの完全移行- アロー関数の活用
コード品質向上
- トレイト導入による再利用性向上
- アクセス修飾子の明示化
- 入力値取得ヘルパーの統一(
getv()/postv()/anyv()) - 不要コードの大規模削除
- コードスタイルの統一
アーキテクチャ改善
セキュリティ
- セッションベースのマルチトークン CSRF 保護(FIFO キュー方式)
- Referer 検証(
validate_referer)の廃止
キャッシュ
MODX_CACHE_PATH定数による一元管理- キャッシュリフレッシュロジックの改善
- URL → ドキュメント ID マッピング最適化
データベース
- MySQL 拡張を完全削除(MySQLi 専用)
- 接続処理の改善(タイムアウト・エラーハンドリング)
event_logテーブルのsourceカラム拡張- UTF-8MB4 変換をインストーラで自動実行
インストーラ
- 設定修正処理を SQL から PHP に移行
- インストール工程のログ取得
- 必須項目のセッション検証強化
テーマシステム
- CSS 変数を 150 箇所以上導入
- 論理プロパティによる RTL 対応
- 共通リソースの集約による保守性向上
技術的負債の解消
-
レガシーコードの大規模削除
- IE 対応コードの完全削除
- MooTools の削除(ネイティブ実装へ移行)
-
PHP8 非互換コードを数千箇所修正
-
セキュリティ脆弱性の修正
-
エラーハンドリングの包括的改善
開発規模
- 882 コミット
- 782 ファイル変更
- 44,588 行追加 / 30,784 行削除
アップグレード時の注意
推奨手順(PHP7.4 利用中の場合)
- PHP7.4 環境のまま Evolution JP をアップグレード
- 動作確認後、PHP8(8.0 以上)へ移行
動作環境
- PHP 7.0–8.4(8.2 以上推奨)
- MySQL 5.7 以上 / MariaDB 10.2 以上
- Chrome / Firefox / Edge / Safari(最新版)
MODX Evolution 1.1.0J
MODX Evolution 1.1.0Jをリリースしました。今回のアップデートでは、約500件のコミットを通じて多くの新機能の追加とバグ修正が施され、特にutf8mb4とMySQL8への対応を実現しました。PHPについては7.4を維持していますが、次のバージョンではPHP8への完全対応を目指してシステム内部の整理を図ります。
アップデートの手順
上記を参照してください。
注意
今回のアップデートでは既存データのコレーション変換を行います。既存サイトをアップデートする際はDBのバックアップを保存することをおすすめします。
新機能
- 管理画面リソースツリーの表示順設定を追加: グローバル設定に「リソースツリーの並び順」という項目を追加。管理画面左側のリソースツリーのデフォルトの並び順を設定可能に。
- 管理画面リソース一覧の表示順設定を追加: グローバル設定に「リソース一覧の並び順」という項目を追加。管理画面リソース一覧のデフォルトの並び順を設定可能に。
- フィールド継承機能の追加: 新機能である
@inheritルールを用いて、親リソースの属性を継承することが可能に。例えば[*pagetitle@inherit*]と記述すると、親リソースのページタイトルが現在のリソースに出力されます。
改善
- MySQL8に対応: MySQL8に対応しました。
- エクスポート機能の拡張: サイトが非公開設定でもHTMLエクスポートが可能に。
- ファイルマネージャーのUI改善: 従来のテキストエリアから、シンプルな表示専用デザインへと変更。
- DocManagerのUI向上: コンテナ設定のリソースをフォルダアイコンに変更。
- キャッシュファイルの増加を抑制: utm_sourceなどの広告用パラメータを持つURLでリクエストを受けると、その数だけキャッシュファイルが増加する問題がありましたが、これを解決。
変更点
- DBのコレーション変更: データベースのコレーションを utf8mb4_general_ciに変更し、特殊文字や絵文字のサポートを強化。既存のデータはアップデート時に自動的に変換されます。
- キャッシュディレクトリの再配置: キャッシュディレクトリをassets/からtemp/に移動し、システム構成の整理を図りました。
修正
- 一般的なバグ修正: 各種メソッドの最適化やエラーハンドリングの改善など、広範囲にわたる修正を実施。
- 特定機能のバグ修正: index-ajax.php, stopWork(), docmanagerなど、特定機能に関連する問題を解消。
廃止
- 古い機能の削除: PHP5.3・PHP5.4対応の処理、PHPセーフモードサポートを廃止しました。
- エクスポート機能のダイレクトパースモードを廃止: 100ページ程度の小規模サイトを高速にエクスポートするダイレクトパース設定を廃止しました。処理をシンプルに整理し、さらに高速な処理を実現するための準備となります。
開発者向けの新機能と改善
- 設定とセキュリティの強化: evo()->saveConfig(), evo()->setConfig()の導入により、設定の柔軟性が向上。
- 開発環境の整備: .gitignoreの更新や.editorconfigの導入により、開発効率の向上をサポート。
何か問題が発生した場合はご連絡ください。
MODX Evolution 1.0.26J
MODX Evolution 1.0.25J
MODX Evolution 1.0.25J
MODX Evolution 1.0.25Jをリリースしました。PHP5.3対応版としては次が最終バージョンになります。次にリリースする1.0.26Jでは全体的なソースコード整形を行ない、PHP8対応版への移行に備えます。
新機能
evo()->hasChunk(string $chunk_name):bool- チャンクの存在を確認するメソッドremove_tags(string $text):string- strip_tags()関数の機能に加え、style要素・script要素の中身・スニペットコール文字列の削除を行なう- composer対応 - index.phpにcomposerへのフックを追記し、PHP処理まわりの機能を追加手軽にできるようにした
- New - 公開開始日時自動設定
- New where()
修正
- mm_movefieldstotab - ウェブリンクの移動ができないため修正
- fix mm_renameField() ウェブリンクの指定が動作しないため修正
- mm_renamefield()でウェブリンクのラベル名を変更できないため修正
- fix mm_moveFieldsToTab() ウェブリンクが動作しないため修正
- ウェブリンクの値を空にできないため修正
- mm_hideFields() ウェブリンクの指定が動作しないため修正
- WordPressとの関数名重複を修正 https://forum.modx.jp/viewtopic.php?f=32&t=1986
- ユーザ設定画面でプラグインの値を更新できないため修正
- ログインプロセッサでイベントハンドラーが動作しないため修正
- ログイン失敗時のアラート文字化けを修正 - login.processor.functions.php
- fix remember_last_tab
- mm_default() ラジオボタン系UIの指定が動作しないため修正
- mm_hideFields() - 動作しないようになっていたため修正
- fix managermanager - テンプレート変数のinput-typeの種別判定ができていなかったw
- 「ファイル管理」 - PHPのバージョンによっては動作しないため修正
- anyv()の内部処理を変更 -
$_GET・$_POST・$_COOKIEの参照を廃止し、$_REQUESTを参照するように変更 - evo()->getField() - テンプレート変数の値を取得できないことがあるため修正
- ファイルブラウザー - 日本語ファイル名を削除できないため修正
- easy_hash() - 生成される文字列に片寄りがあるため修正
- 特定バージョンのPHPでQuickManagerが動作しないことがあるため修正
- ユーザ設定を更新できないため修正
- サイトのCSSの記述によってはQuickManagerの編集バーが表示されないため修正
- インストール時のチャンクを無条件で追加してしまうことがあるため修正
- WebARENA対策 https://forum.modx.jp/viewtopic.php?f=32&t=1984
- Fix - evo()->getTemplateVar() https://forum.modx.jp/viewtopic.php?f=32&t=1982
- ユーザ設定の「曜日制限」を設定しようとするとエラーになる
- 一部サーバでhttps判定を誤るため修正 http://forum.modx.jp/viewtopic.php?p=10442#p10442
- Forgot Manager Login プラグイン - リマインダーメールが送信されないため修正
改善
- array_get()を改善 - Evolution CMSのget_by_key()メソッドと同じ。Laravelの Arr::set() 同等の機能に加え、第4引数でvalidationメソッドを指定できる。validationをパスしなかった場合は第3引数のデフォルト値を返す。
- Ditto - プレースホルダを含まないテンプレートを使えるようにする
- .gitignoreを整備
- array_get()にvalidateオプションを追加
- db()->delete()のwhereで配列を使えるようにする
- ログイン失敗時はログイン画面に戻す(JavaScriptの「前のページに戻る」だった)
- リソースとの紐付けが失われたテンプレート変数をグローバル設定更新時に削除する
- ManagerManager - mm_default('template') - デフォルトのテンプレートを設定できるようにする
- pr() - htmlタグ文字列を表示できるようにする
- .editorconfigを追加
- datetime_format() - YYYY/MM/DD形式の値を入力元として使えるように改善
- strftimeモディファイアを改善(日本語の曜日対応など)
- Doc Manager 1.2 - アップデートしやすいファイル構造に変更
アップデート
- Doc Manager 1.2
- Forgot Manager Login プラグイン 1.3
- update jquery 3.6.0 (管理画面用)
廃止
- CDATA記述を削除
- IE用のjavascript記述を削除
- magic_quotes_gpc()を廃止
MODX Evolution 1.0.24J
release-1.0.24J Merge branch '1.0.24J' into develop
