MODX Evolution 1.0.17J をリリースしました
2016年10月9日 19時01分 shortlink:http://modx.jp/?id=1059
MODX Evolution 1.0.17Jをリリースしました。今回は主に不具合修正です。処理を整理し、若干ですがパフォーマンスが向上しました。構成ファイルのサイズも減っています。
ダウンロード
https://modx.jp/download/download_evo.html
上記からダウンロードしてください。
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
変更内容
新機能・新仕様
- utf8mb4対応(新規インストール時)
- IF文で and or を扱えるようにした
改善
- IF文の判定を改善
テンプレート変数の値が 03-1234-5678 などの場合、これを文字列ではなく数式として評価してしまうため、負の値として判定されてしまう。値が空または0の場合のみ負の値として判定するようにした - Dittoにおいてenglish.inc.phpの読み込みを回避
- $modx->sendErrorPage() http・httpsの出し分け
- ManagerManager - mm_widget_googlemap
GoogleマップでAPI key取得が必須となったので,とりあえず対応
mm_widget_googlemap('テンプレート変数(複数の場合はカンマ区切り)','API-Key','デフォルトの座標カンマ区切り');
c.f. https://developers.google.com/maps/pricing-and-plans/standard-plan-2016-update - サンプルテンプレート - @IF文を新しい書式で記述
修正
- Ditto - ページングのURLが正しくないため修正
http://forum.modx.jp/viewtopic.php?p=9148#p9148 - mm_ddMultipleFieldsで設定したTextarea内の改行が保存されない http://forum.modx.jp/viewtopic.php?f=32&t=1692
- Fix - Backup Manager sql error
- Wayfinder - &startId=parent が動作しないため修正
- Ditto Fix - &format=json&dateSource=anyfield
jsonフォーマットの日時情報がcreatedonで決め打ちになっているため &dateSource の指定が無視される問題を修正 - Fix MySQL5.7 ORDER BY clause is not in SELECT list
- Fix - MySQL5.7ストリクトモード対応
http://ewigleere.lv9.org/cms/cms_entry/201606/20160617_1.html - Fix - イベントログで管理画面のREQUEST_URIを取得できないため修正
- Revert - スニペットコールのデリミタに半角スペース スニペットコールのスニペット名・パラメータの区切り(デリミタ)として半角スペースを使えるようにしたが、スニペット名・チャンク名に半角スペースを混在させるケースが実際にあるようなので、この改善は元に戻す
- Fix - $modx->db->importSql() インポート処理に影響しない特定のエラーを無視できるようにしているが、CHANGE構文のエラーを無視できてなかったため修正
セキュリティに関係する変更
- コアファイルの直接参照防止 (重要度・低)
if(!defined('IN_MANAGER_MODE')||IN_MANAGER_MODE!='true') exit();
を
if(!isset($modx) || !$modx->isLoggedin()) exit; に変更。
変更
- Fix - $modx->parseText() 値が存在しないため展開されないプレースホルダを削除。もともと削除される仕様だったが、デバッグをしやすいように1.0.15Jでは残すように変更した経緯がある。
$modx->config['cleanUpRemainPH']の値をfalseにすると残すことができる。 - メンテナンスモード設定時のページ表示を変更
http://forum.modx.jp/viewtopic.php?p=9149#p9149 - Minor fix - default.config.php DittoとWayfinderにおいて、default.config.phpが存在する時だけ読み込む
- $_REQUEST['id']を$_GET['id']に変更($_POST や $_COOKIE で上書きされてしまう可能性があるため)
- $_REQUEST['q'] と $_GET['q'] を内部で上書きしないようにする
現在のEvoはmod_rewriteではなくシステム内部で$_GET['q']を生成する仕組みになっているが、$_GETとして値を参照する必要がないため廃止。 これによりGoogle CSEなど$_GET['q']を用いるツールとのバッティングを回避できる
アップデート
- 管理画面で用いる jQuery をv3.1.1にアップデート
- サンプルテンプレートで読み込むjQueryとBootstrapのバージョンを更新
開発に関係する内部的な変更及び新仕様
- New - $modx->config['cleanUpRemainPH']
- New - $modx->setConfig() データベース接続に必要な変数をグローバルで扱わない
- New - $modx->gotoSetup()
- New - $modx->db->select_db()
- New - $modx->db->isConnected()
- New - $modx->db->getCollation() アップデート時に既存テーブルのコレーション設定を取得するために用いる
- New - $modx->parseTextSimple() $modx->parseText()はモディファイア対応のため処理が少し複雑になったので、ループ処理などで数百回以上呼び出されたりすると負荷が気になるようになった。そのためモディファイアやシステムイベントなどの処理が絡まないシンプルなAPIを別に作ることにした。
- 廃止 - $modx->getDocumentIdentifier()
- 廃止 - $modx->config['devmode_showhash'] 実験的に実装してみたがブラウザによって挙動が異なるため廃止
- 廃止 - $modx->db->initDataTypes()
- 廃止 - stopWork() function
- Refactor - upd_db_structure.sql(キーまわりのアップデートは最後に行なう)
- インストール時・アップデート時に読み込むsqlファイルのファイル名が分かりにくいため変更
- DBアップデートの処理を整理
- DocumentParser インスタンスの取得方法を変更
$modx = include_once('manager/includes/document.parser.class.inc.php'); 上記のようにインスタンスを得ていたが、 include_once('manager/includes/document.parser.class.inc.php'); $modx = new DocumentParser; PHP初心者でも分かるように、普通の書き方に変更 - Wayfinder - Debug情報で&startIdを表示する
- 管理画面においてtabpane.jsの読み込みタイミングを調整(mootoolsの後でロードする)
管理画面デザイン
- CSS - #preLoaderのスタイルを調整
- System Alert Box用の記述を削除(現在は使われていないため)
- CSS - 古いデートピッカー用の記述を削除
- CSS - インデントを揃える
- CSS - ベンダープレフィックスを削除
- IE6用のCSSを削除
- CSS - 古い記述を削除
- 管理画面 - タブ描写時のチラツキを修正
- 画像を軽量化
トピックス
utf8mb4に対応しました
サーバがMySQL5.5以上でutf8mb4に対応している場合、新規インストール時においてutf8mb4_general_ciなどのコレーションを選択することができるようになりました。utf8では一部の漢字を正しく扱えない問題がありましたが、utf8mb4ではより多くの漢字を扱うことができます。また、iPhoneの絵文字なども扱うことができます。
@IF文で and or を扱えるようになりました
<@IF:[*alias:is(abc)*] AND [*isfolder*]>
エイリアスが「abc」で親リソースの場合ここを表示する
<@ENDIF>
AND OR && || などで複数の条件を扱えます。
その他
気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。開発に参加して自ら機能追加・改善などを行なってみたい方もお気軽にご連絡ください。