PHP/VBA用Data APIライブラリでのカテゴリの並べ替え

Movable TypeのData APIバージョン2では、カテゴリを並べ替えるAPIもあります。
PHP用およびVBA用のData APIライブラリで、カテゴリを並べ替える方法を紹介します。
なお、これに合わせてライブラリを修正しました。

1.修正版のダウンロード

修正版のライブラリは、それぞれ以下からダウンロードします。

PHP用ライブラリ
VBA用ライブラリ

2.permutateCategoriesエンドポイント

カテゴリの並べ替えは、「permutateCategories」というエンドポイントで行います。
「categories」というパラメータに、以下のようなJSON文字列を渡します。
それぞれの「カテゴリのID」の箇所に、並べ替え後の各カテゴリのIDを入れます。
なお、ウェブサイト(またはブログ)内のすべてのカテゴリを指定する必要があります。

[
    {"id": カテゴリのID},
    {"id": カテゴリのID},
    ・・・
    {"id": カテゴリのID}
]

例えば、あるウェブサイト(またはブログ)にIDが1/2/3の3つのカテゴリがあるとします。
また、これらのカテゴリをIDが3/2/1の に並べたいとします。
この場合、以下のようなJSON文字列を渡します。

[
    {"id": 3},
    {"id": 2},
    {"id": 1}
]

3.PHP版ライブラリでの例

PHP用ライブラリでは、以下のようなコードでカテゴリを並べ替えることができます。
カテゴリの配列を渡すと、ライブラリ内でJSON文字列に変換します。

require_once('mt-data-api.php');

// 初期化
$api = new MTDataAPI('http://your-host/path-to-mt/mt-data-api.cgi', 'クライアントID');
// 認証
$response = $api->authenticate(array('username' => 'ユーザー名', 'password' => 'パスワード'));
if (isset($response['error'])) {
    認証失敗時の処理
}
// カテゴリの並べ替え
$params = array(
    'categories' => array(
        array('id' => カテゴリのID),
        array('id' => カテゴリのID),
        ・・・
        array('id' => カテゴリのID)
    )
);
$response = $api->permutateCategories(サイトID, $params);
if (isset($response['error'])) {
    並べ替え失敗時の処理
}

4.VBA版ライブラリでの例

PHP版ライブラリでのプログラムをVBAに置き換えると、以下のリストのようになります。

Dim api As MTDataAPI
Dim response As Object
Dim params As Scripting.Dictionary, cat As Scripting.Dictionary, cats As Collection

' 初期化
Set api = New MTDataAPI
api.init "http://your-host/path-to-mt/mt-data-api.cgi", "クライアントID"
' 認証
Set params = New Scripting.Dictionary
params("username") = "ユーザー名"
params("password") = "パスワード"
Set response = api.send("authenticate", params)
If response.Exists("error") Then
    認証失敗時の処理
End If
' カテゴリの並べ替え
Set params = New Scripting.Dictionary
Set cats = New Collection
Set cat = New Scripting.Dictionary
cat("id") = カテゴリのID
cats.Add cat
Set cat = New Scripting.Dictionary
cat("id") = カテゴリのID
cats.Add cat
・・・
Set cat = New Scripting.Dictionary
cat("id") = カテゴリのID
cats.Add cat
Set params("categories") = cats
Set response = api.send("permutateCategories", サイトID, params)
If TypeName(response) <> "Collection" Then
    If response.Exists("error") Then
        カテゴリ並べ替え失敗時の処理
    End If
End If