MODX Evolution 1.0.20J をリリースしました
2017年12月31日 14時00分 shortlink:http://modx.jp/?id=1064
MODX Evolution 1.0.20Jをリリースしました。EvolutionCMSへの搭載を前提とした新しいAPIをいくつか搭載しています。
ダウンロード
https://modx.jp/download/download_evo.html
上記からダウンロードしてください。
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
変更内容
脆弱性修正
- PHPMailer 修正 (CVE-2016-10033)
※この脆弱性はMODX上で動作させる場合は問題が起きません。PHPMailerを取り出してMODXから独立して動作するようなシステムを自作した場合は攻撃を受ける可能性がありますが、そのような使い方はサポート対象外です。今回の脆弱性対応は形式的な対応となります。
新機能・新仕様
- $modx->escapeLiteralTagsContent() MODXタグ文字列をそのまま表示
- $modx->config['disable_cache_at_login'] 管理画面ログイン時はキャッシュを無効とし、常に動的出力するように設定できる
- $modx->RecoveryEscapedTags() (http://forum.modx.jp/viewtopic.php?p=9479#p9479 )
- [+pagetitle@parent+]
改善
- ログイン時はini_set(display_errors)を有効とする
- time()ではなくできるだけ$_SERVER['REQUEST_TIME']を使う
- 処理開始時にmb_internal_encoding('utf-8')を実行
- メールアドレスで管理画面にログインできるようにする
- インストール時にPHPエラーを表示できるようにする
- 不要なLEFT JOINを削除(テンプレート変数取得処理)
- 管理画面 - リソース移動操作後のリソース一覧を、移動先ではなく移動元のままにする
- $modx->sendRedirect() ネットワークパス参照形式のURLに対応
- $modx->config['required_email_wuser'] ウェブユーザ - メアドなしで登録できるようにする
- 管理画面エレメント一覧 - description表示内のhtmlタグを除去
- pagetitle中にバックスラッシュを記述すると削除されるため修正
- フォームの値操作の際にstripslashesを実行することを廃止
新しいシステムイベント
- OnDocListPrerender - 管理画面・リソース一覧表示直前にフック
- OnDocListRender - 管理画面・リソース一覧表示直後にフック
- OnBeforeGetDocID - リソースID取得直前でフック
- OnGetConfig - グローバル設定取得直後にフック
新しいAPI
- $modx->treatRequestUri()
- $modx->atBind()
- $modx->db->getRows() 結果セットから全てのデータを配列で取得する
- $modx->db->save() db->insert・db->updateの複合版
- $modx->reload() - 同じページをリロードする
- $modx->parseList() - 二次元配列データをparseTextで処理
- $modx->lastQuery
- $modx->hasPermission('move_document')
- $modx->addSnippet('スニペット名', 'phpコードまたは関数名')
[[#スニペット名]] - $modx->addFilter()
- $modx->moduleObject
- $modx->config['mgr_jquery_path']
- $modx->setDBCache()
- $modx->getDBCache()
- $modx->purgeDBCache()
APIの変更
- $modx->getUaType() 「bot」タイプを追加
- $modx->config['cache_expire'] を $modx->config['cache_ttl'] に変更
- $modx->docid を追加($modx->documentiDentifierのエイリアス)
- $modx->doc を追加($modx->documentObjectのエイリアス)
- $modx->db->getRow() - select文を直接記述可とする
- $modx->db->getValue()- select文を直接記述可とする
- $modx->db->getRecordCount() - select文を直接記述可とする
- $modx->getField()の処理を高速化
- New - replyto ($modx-sendmail)
- $modx->db->select() $whereパラメータで配列を扱えるようにする
修正
- テンプレート内でIF構文を使えないことがあるため修正
- リストア機能 - リストア時(インポート時)にエラーが発生することがあるため修正
- グローバル設定「ルートの使用許可」の管理画面内での判定を修正
- fbrowserから貼付時にパス中のスラッシュが消えることがあるため修正(http://forum.modx.jp/viewtopic.php?f=32&t=1781)
- unvalid tokenと表示されることがあるため修正
- 「このページから移動しますか? 入力したデータは保存されません」が表示されることがあるため修正
- URLに含まれる文字列がエラーを起こすことがあるため修正(大文字小文字)
- スニペットのパラメータに文字列以外が入った時にエラーにならないように修正(通常の記述では入らないが、直接evalSnippet()を実行した時に任意のパラメータを付けると問題になる)
- 下書き公開時にtokenエラーになる問題を修正
- 新規インストール時に「ホスト名:ポート番号」の形式でデータベースサーバを指定すると接続できないため修正
- PHPMailerでsmtp送信できないため修正(http://forum.modx.jp/viewtopic.php?f=32&t=1734)
- CAPTCHAが動作しないことがあるため修正
- スニペット複製時に同じ名前のスニペットが2つできることがあるため修正(http://forum.modx.jp/viewtopic.php?f=32&t=1729)
- スニペットコール中にコメントを記述すると正しく動作しないため修正(http://forum.modx.jp/viewtopic.php?p=9352#p9352)
- チャンクの複製・削除ができないため修正
- eform - チェックボックス項目が動作しないため修正
- 「パスワードを忘れた場合はこちら」が動作しないため修正
- Wayfinder - hideSubMenusパラメータの挙動を修正(http://forum.modx.jp/viewtopic.php?f=32&t=1730)
- $modx->getChildIds() 誤動作を修正
- タグのネストの問題を仮修正
- @PARSEコマンドを書かなくてもタグが実行されてしまうため修正(http://forum.modx.jp/viewtopic.php?f=32&t=1725)
新しいモディファイア
- array_pop
- array_shift
- makeUrl
- json_encode
- json_decode
- html_decode(別名)
- html_encode(別名)
- url_encode(別名)
- url_decode(別名)
モディファイアの修正・変更
- idモディファイアを[*content*]で用いると無限ループになるため修正
(http://forum.modx.jp/viewtopic.php?p=9353#p9353) - strip_tagsモディファイアで<script>要素を意図どおりに除去できないため修正(要素の中身のJavascriptを残さず削除する)
- selectモディファイアで「=」を含む値を正しく処理できないため修正
- summaryモディファイアの精度を改善
- getImageモディファイアの仕様を拡張
[*content:getImage(jpg,png)*]
[*content:getImage('/\.jpg/i')*]
[*content:getImage('class="thumbnail"')*] - phxモディファイア(dummyモディファイア)がパースされない問題を修正
変更
- IF文判定の際、定義されていない変数の値はfalse扱いにする(http://forum.modx.jp/viewtopic.php?p=9541#p9541)
Ditto関連
- [+class+] プレースホルダ
- &tpl パラメータで「@CODE:」を省略可とする
- [ +var@parent+ ]
- pub_date・unpub_dateの順に並ばないため修正
- フィルター機能で regex スイッチが誤動作するため修正
- RSSフィードなどでcontentTypeを正しく出力
- json.formatでタブ(\t)をエスケープ
- モディファイア内のプレースホルダ処理精度を向上
- 日付の値がゼロの場合に判定を誤ることがあるため修正
ManagerManager
- mm_widget_showimagetvsウィジェットでhttps urlを利用できるようにする(http://forum.modx.jp/viewtopic.php?f=32&t=1778 )
- mm_requireFieldsウィジェットでselectフォームの必須入力指定がきかないため修正(http://forum.modx.jp/viewtopic.php?f=32&t=1773 )
- mm_ddMultipleFields - デートピッカーが動作しないため修正(http://forum.modx.jp/viewtopic.php?p=9367#p9367)
- レイアウトが崩れることがあるため修正(http://forum.modx.jp/viewtopic.php?p=9314#p9314)
ライブラリの更新
- jquery.powertip.cssをminify
- Update - air datepicker v2.2.3
- Update - jQuery 3.2.1
トピックス
MODXタグ文字列をそのまま表示
<@LITERAL>
[*pagetitle*]
[*テンプレート変数*]
{{any string}}
[[スニペットコール]]
[(site_name)]
<@ENDLITERAL>
上記のように書くと、MODXタグ文字列をそのまま出力できます。Smartyのliteralタグ機能のようなもので、最近流行のVue.jsなどで用いられるマスタッシュ記法とチャンクコール記述とのバッティングなどを回避することができます。
\{\ {チャンク\} \}
上記のようにバックスラッシュでエスケープすることもできます。ケースに応じて使い分けてください。
@IF/@ELSE/@ENDIF文の精度が向上
@IF文を複雑にネストさせると誤動作することがありましたが、処理の考え方を根本的に見直し、誤動作が起きないようにしました。原則的には、複雑な@IF文を書くようなケースでは処理をスニペットなどにまとめるのがよいでしょう。
Evoution CMSとの関係について
MODX Evolution日本版は今後も開発を継続します。バージョンは1.0.xベースで推移し、xの番号が上限を定めず増加します。将来的には開発の主軸をEvolution CMSに移行する方向で調整を進めています。
その他
気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。開発に参加して自ら機能追加・改善などを行なってみたい方もお気軽にご連絡ください。