MODxを9.xからMODx Evolutionに変更したので、日付編集をするプラグイン「phiEditedon(1.1.0)」をアップデートしたのですが、
日付更新の方法をManualにして日付を入れドキュメントの保存をした際に、下記のメッセージがでて、日付が変更できませんでした。
AutoとDisableはちゃんと動作したのですが、何が原因なのでしょうか?
-----------------------------------------------------------------------------------------------------------------------------------
Compilation failed: unrecognized character after (?< at offset 4
Warning: preg_match() [function.preg-match]: Compilation failed: unrecognized character after (?< at offset 4 in サーバーのアドレス/manager/includes/document.parser.class.inc.php(746) : eval()'d code on line 66
-----------------------------------------------------------------------------------------------------------------------------------
環境情報
MODxバージョン:1.0.0J
PHPバージョン:5.1.6
mysqlバージョン: 5.0.45
[MODx Evolution] phiEditedonで日付の変更ができない 【解決済み】
Re: [MODx Evolution] phiEditedonで日付の変更ができない
XAMPP環境に新規インストールした1.0.0Jではエラーは出ませんね。アップグレードに限った問題でしょうか。。。
1.0.0Jでは、日付フォーマットをグローバル変数に追加してたと思います。本家版1.0.0ではどうでしょう???
コードをしっかり追ったわけではありませんが、この辺が関係してそうな気がします。
・グローバル設定の日付関係の設定はどうなってますでしょうか?
・1.0.0Jの場合、グローバル設定を保存するとどうなるでしょうか?
リソース(ドキュメント)の編集を始めたときに、設定済みの編集日付がエコーされないのは仕様だったかなーー?
(以前から表示されてなかった気も・・・仕様がよく思い出せない)
1.0.0Jでは、日付フォーマットをグローバル変数に追加してたと思います。本家版1.0.0ではどうでしょう???
コードをしっかり追ったわけではありませんが、この辺が関係してそうな気がします。
・グローバル設定の日付関係の設定はどうなってますでしょうか?
・1.0.0Jの場合、グローバル設定を保存するとどうなるでしょうか?
リソース(ドキュメント)の編集を始めたときに、設定済みの編集日付がエコーされないのは仕様だったかなーー?
(以前から表示されてなかった気も・・・仕様がよく思い出せない)
Re: [MODx Evolution] phiEditedonで日付の変更ができない
確認してみたところ、プラグインの中でPHP5.2.2以降のみで使える表記を使ってしまっていました
プラグインコードの58~62行目と65~73行目を修正してみていただけますか?
以下のコードのように、?<****>という部分を?P<****>にすると直ると思うのですが…。
phiEditedonのプラグインコード(phieditedon.plugin.txt) 58~62行目
phiEditedonのプラグインコード(phieditedon.plugin.txt) 65~73行目
参考: PHP: preg_match - Manual
プラグインコードの58~62行目と65~73行目を修正してみていただけますか?
以下のコードのように、?<****>という部分を?P<****>にすると直ると思うのですが…。
phiEditedonのプラグインコード(phieditedon.plugin.txt) 58~62行目
コード: 全て選択
$datetime_format = str_replace(
array('dd-mm-YYYY', 'mm/dd/YYYY', 'YYYY/mm/dd'),
array('(?P<day>\d{1,2})-(?P<month>\d{1,2})-(?P<year>\d{4})', '(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<year>\d{4})', '(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})'),
$datetime_format
);
コード: 全て選択
case 0: // Manual mode
if (!empty($pe_editedon['value']) && preg_match('!^' . $datetime_format . ' (?P<hour>\d{1,2}):(?P<minute>\d{1,2}):(?P<second>\d{1,2})$!', $pe_editedon['value'], $matches)) {
$editedon = mktime($matches['hour'], $matches['minute'], $matches['second'], $matches['month'], $matches['day'], $matches['year']);
$modx->logEvent(1, 1, 'start');
$modx->db->update("editedon = " . $editedon, $table, "id = '" . $id . "'");
}
break;
http://phize.net MODxブログ http://dxd8.com modxコミュニティ on Twitter
利用環境
MODx Evolution 本家版 & 日本語版 / Revolution
XREA / Core Server (PHP5, セーフモード / CGI版, MySQL5) / DreamHost (PHP5, CGI版, FastCGI, MySQL5) / お名前VPS / Saases ST
利用環境
MODx Evolution 本家版 & 日本語版 / Revolution
XREA / Core Server (PHP5, セーフモード / CGI版, MySQL5) / DreamHost (PHP5, CGI版, FastCGI, MySQL5) / お名前VPS / Saases ST
Re: [MODx Evolution] phiEditedonで日付の変更ができない
修正をしたら、直りました PHPはあまり詳しくないので、自分で原因を突き止めれなかったのが情けないです。PHPができたらMODxの活用幅ももっと広がりますよね。近いうちに勉強しなくちゃ。Phize さんが書きました:確認してみたところ、プラグインの中でPHP5.2.2以降のみで使える表記を使ってしまっていました
プラグインコードの58~62行目と65~73行目を修正してみていただけますか?
以下のコードのように、?<****>という部分を?P<****>にすると直ると思うのですが…。
迅速な対応ありがとうございました!