[MODx Evolution] phiEditedonで日付の変更ができない  【解決済み】

質問全般・改善要望
返信する
アバター
sodx
メンバー
メンバー
記事: 6
登録日時: 2009年8月11日(火) 13:06

[MODx Evolution] phiEditedonで日付の変更ができない  【解決済み】

投稿記事 by sodx »

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
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: [MODx Evolution] phiEditedonで日付の変更ができない

投稿記事 by sama55 »

XAMPP環境に新規インストールした1.0.0Jではエラーは出ませんね。アップグレードに限った問題でしょうか。。。
1.0.0Jでは、日付フォーマットをグローバル変数に追加してたと思います。本家版1.0.0ではどうでしょう???
コードをしっかり追ったわけではありませんが、この辺が関係してそうな気がします。

 ・グローバル設定の日付関係の設定はどうなってますでしょうか?
 ・1.0.0Jの場合、グローバル設定を保存するとどうなるでしょうか?

リソース(ドキュメント)の編集を始めたときに、設定済みの編集日付がエコーされないのは仕様だったかなーー?
(以前から表示されてなかった気も・・・仕様がよく思い出せない)
アバター
Phize
メンバー
メンバー
記事: 10
登録日時: 2009年8月11日(火) 20:02

Re: [MODx Evolution] phiEditedonで日付の変更ができない

投稿記事 by Phize »

確認してみたところ、プラグインの中でPHP5.2.2以降のみで使える表記を使ってしまっていました :oops:

プラグインコードの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
                               );
 
phiEditedonのプラグインコード(phieditedon.plugin.txt) 65~73行目

コード: 全て選択

                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;
 
参考: PHP: preg_match - Manual
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
アバター
sodx
メンバー
メンバー
記事: 6
登録日時: 2009年8月11日(火) 13:06

Re: [MODx Evolution] phiEditedonで日付の変更ができない

投稿記事 by sodx »

Phize さんが書きました:確認してみたところ、プラグインの中でPHP5.2.2以降のみで使える表記を使ってしまっていました :oops:
プラグインコードの58~62行目と65~73行目を修正してみていただけますか?
以下のコードのように、?<****>という部分を?P<****>にすると直ると思うのですが…。
修正をしたら、直りました :D PHPはあまり詳しくないので、自分で原因を突き止めれなかったのが情けないです。PHPができたらMODxの活用幅ももっと広がりますよね。近いうちに勉強しなくちゃ。
迅速な対応ありがとうございました!
返信する