MT5のBrand new APIと格闘してみた。

| コメント(3) | トラックバック(0)

スタッフの仕事の進捗がヤバげだったので急遽phpを担当することになってブロックタグの大物をMT5対応するためにガンダムBrand new APIと格闘してみたメモ書き。

# Power CMS for MTにはPHPプラグインが189もあるんだよ...

Twitter / Junnama Noda: MTのPHP API使ってアプリ開発してるのって日本でhoge人くらいなんだからこんなに力入れてガラッと変えなくても(泣)

さて、ブロックタグの中でのオブジェクトのロードや利用についてのメモを中心に。

エントリーをロード

$args['class'] = 'entry';
$args['blog_id'] = $blog_id;
$args['offset']=n;
$args['limit']=n;
$entries = $ctx->mt->db()->fetch_entries($args);

範囲指定をしてsqlでエントリー(や他のオブジェクト)を読み込む

$entries = $ctx->mt->db()->SelectLimit( $sql, $limit, $offset );

(範囲の指定無し)sqlを実行

$entries = $ctx->mt->db()->Execute( $sql );

読み込んだオブジェクト数の取得

$entries->RecordCount();

個々のレコードの取得

$entries->Move($counter);
$entry = $entries->FetchRow();

エントリーのオブジェクト化(但しcategoryやカスタムフィールドの読み込みはSQL側で調整する必要あり)

$e; 
while(list ($key, $val) = each($entry)) {
    if (preg_match('/^entry_/',$key)) {
        $e->$key = $val;
    }
}
# $ctx->stash('entry', $e);

特定のブログ記事オブジェクトの読み込み

$e = $ctx->mt->db()->fetch_entry($id);

特定のウェブページオブジェクトの読み込み

$e = $ctx->mt->db()->fetch_page($id);

Findでオブジェクトを読み込み

require_once 'class.mt_entry.php'; #entry
$_entry = new Entry;
$where = $where_statment;
$extra = array(
    'limit' => $limit,
    'offset' => $offset,
); 
$results = $_entry->Find($where, false, false, $extra);

続きがあります...

参考

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/577

コメント(3)

まるっと変えちゃったんですよ・・・。
DB廻り・・・。
これからプラグイン増えると良いなって思って・・・。
ドキュメント足りて無くてすいません・・・。

SelectLimitやExecuteで取得した場合にもEntryオブジェクトで得られる方法とかあるといいなぁ...(あるのかもしれんですが)とりあえずSelectLimitでmt_entry_entry_idを取得してfetch_entryして対処したんですが、ループの中で毎回fetch_entryするのが嫌で...

そうですね、今はmtdb.base.phpの中にも定義してあるんですけど単にActiveRecordのをラップしてるだけなんで、そこまでやった方がいいですねぇ

#なんで単純ラップだけで実装やめたんだろう・・
#そうか、ダイナミック側はSQL何でも通していたからクラス化しようにもSQLをパースしてごにょごにょしないとだからそこまでやる時間なかったんだ・・・


Saveは必要ないなと思っていたんですけど、MT_SESSIONだったけかなで必要だったので最後に追加しましたw チェックとか一切しないんでまだ危険ですw
管理画面をPHPで書き換える話はありましたw でもまだそこまでの機能はw

まだまだ実装足りないと思ってますので今の仕組みのままで進化させたいと思ってます。

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2010年2月20日 17:40に書いたブログ記事です。

ひとつ前のブログ記事は「New CMSContextプラグイン(β)。」です。

次のブログ記事は「MT5のBrand new API(DPAPI)と格闘してみた(続き)。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6