標準 PEAR チャネルがサポートしている XML-RPC 関数の一覧は以下のとおりです。
logintest - スタブ関数
package.getDownloadURL - パッケージをダウンロードするための URL を取得する
package.getDepDownloadURL - パッケージの依存関係をダウンロードするための URL を取得する
package.info - パッケージの情報を取得する
package.listAll - 全パッケージの一覧および各パッケージの詳細情報を取得する
package.listLatestReleases - 全パッケージの一覧および各パッケージの最新バージョンを取得する
package.search - 条件に一致するパッケージを検索する
channel.listAll を実装することも可能ですが、これは pear.php.net および pecl.php.net によってのみ実装されることを推奨します。 というのは、これは update-channels コマンドによって 公式なチャネルの一覧を取得するために使用されるものだからです。
xml-rpc 関数 logintest は login コマンドからコールされ、 論理型の TRUE を返します。
false|struct package.getDownloadURL (
struct packageinfo
, string preferred_state = stable
, (v1.1) string installed_version = false
)
packageinfo
以下の形式の配列。
array(
'channel' => チャネル名,
'package' => パッケージ名,
['version' => 取得したい特定のバージョン,]
['state' => 取得したい特定の状態,]
)
version および state がともに設定されている場合、 version の内容は無視されます。
preferred_state = stable
クライアント側の preferred_state。これは、安定バージョンでない リリースを除くために使用します。
installed_version = false
現在クライアント側にインストールされているパッケージのバージョン。 バージョンを表す文字列か、インストールされていない場合には false となります。これは、 (version_compare(返す可能性のあるバージョン, インストールされているバージョン, "<") で定義される) 古いバージョンを返さないことを確実にするために使用します。
package.getDownloadURL 関数は、2 つあるいは 3 つの要素を持つ 配列を返します。
"version" => 返されるリリースのバージョン。
"info" => リリースの package.xml の完全な内容。
"url" => このリリースをダウンロードする URL。 preferred_state、installed_version および packageinfo の version/state によって決まる条件を満たす リリースが存在しない場合は、このインデックスは返されず そのかわりに最新リリースのバージョンおよび package.xml が返されます。
url エントリには .tgz や .tar を含めません。例えば "http://pear.php.net/get/PEAR-1.4.0.tgz" ではなく "http://pear.php.net/get/PEAR-1.4.0" とします。
package.getDownloadURL のバージョン 1.0 では installed_version パラメータをサポートしていません。バージョン 1.1 ではサポートしています。 これが、2 つのバージョン間の唯一の違いです。
false|struct package.getDepDownloadURL (
string xsdversion
, struct dependency
, struct parentpackage
, string preferred_state = stable
, (v1.1) string installed_version = false
)
xsdversion
'1.0' あるいは '2.0' のいずれかであり、トップレベルの <package version="X.0"> タグの version 属性に 一致します。これにより、第 2 パラメータをどのように処理するのかを 決定します。
dependency
第 1 パラメータ xsdversion が '1.0' の場合、以下の形式の配列となります。
array(
'name' => パッケージ名,
'type' => 'pkg' - これ以外はエラー,
'rel' => 'has', 'ge', 'le', 'lt', 'le', 'not', 'ne'
['version' => 取得したい特定のバージョン,]
)
xsdversion が '2.0' の場合、以下の形式の配列となります。
array(
'name' => パッケージ名,
'channel' => パッケージチャネル - 以下を参照,
['min' => 最小バージョン番号 (この値を含む),]
['max' => 最大バージョン番号 (この値を含む),]
['exclude' => 例外とするバージョン番号 (文字列),
あるいは例外とする複数バージョンの配列,]
)
channel があなたのチャネルと一致することを常に確かめなければ なりません。もしチャネルサーバが pear.php.net あるいは pecl.php.net 以外の場合は、xsdversion='1.0' のリクエストは すべて拒否しなければなりません。また、xsdversion='2.0' であっても channel があなたのチャネルと一致しないリクエストも 拒否しなければなりません。
parentpackage
親パッケージの情報で、以下の形式の配列となります。
array(
'channel' => チャネル名,
'package' => パッケージ名,
'version' => 取得したい特定のバージョン,
)
preferred_state = stable
クライアント側の preferred_state。これは、安定バージョンでない リリースを除くために使用します。
installed_version = false
現在クライアント側にインストールされている依存パッケージのバージョン。 バージョンを表す文字列か、インストールされていない場合には false となります。これは、 (version_compare(返す可能性のあるバージョン, インストールされているバージョン, "<") で定義される) 古いバージョンを返さないことを確実にするために使用します。
package.getDownloadURL と同様、package.getDepDownloadURL は 2 つあるいは 3 つの要素を持つ配列を返します。
"version" => 返されるリリースのバージョン。
"info" => リリースの package.xml の完全な内容。
"url" => このリリースをダウンロードする URL。 preferred_state、installed_version および packageinfo の version/state によって決まる条件を満たす リリースが存在しない場合は、このインデックスは返されず そのかわりに最新リリースのバージョンおよび package.xml が返されます。
url エントリには .tgz や .tar を含めません。例えば "http://pear.php.net/get/PEAR-1.4.0.tgz" ではなく "http://pear.php.net/get/PEAR-1.4.0" とします。
package.getDepDownloadURL のバージョン 1.0 では installed_version パラメータをサポートしていません。バージョン 1.1 ではサポートしています。 これが、2 つのバージョン間の唯一の違いです。
false|struct package.info (
string package
, string field = null
)
package
情報を取得するパッケージの名前。
field = null
情報を取得するフィールドの名前。null の場合、この関数は 以下の要素を持つ配列を返します。
<?php
array(
'name' => 'パッケージ名',
'category' => 'カテゴリ名',
'license' => 'パッケージのライセンス',
'summary' => 'パッケージの概要',
'description' => 'パッケージの説明',
'releases' =>
array( // すべてのリリースをバージョン番号をキーとして格納します
'0.1' =>
array(
'license' => 'リリースのライセンス',
'summary' => 'リリースの概要',
'description' => 'リリースの説明',
'releasedate' => 'リリース日',
'releasenotes' => 'リリースノート',
'state' => 'リリースの安定性',
// 以下の項目はオプションです
'deps' =>
array(
array( // 最新リリースの依存性
'type' => 'package.xml <dep> の type',
'relation' => 'package.xml <dep> の rel',
'version' => 'package.xml <dep> の version、あるいは空の文字列',
'name' => 'package.xml <dep> の name',
'optional' => 'yes あるいは no',
),
// すべての依存性について続けます
),
),
// すべてのリリースについて続けます
// これは、リリース日の新しい順に並べなければなりません
),
);
?>
もし第 2 パラメータを指定する場合、それは以下のいずれかでなければなりません。
authors - 現在のパッケージメンテナの一覧。形式は以下のとおりです。
<?php
array(
'handle1' =>
array(
'name' => 'メンテナの名前',
'email' => '[email protected]',
'role' => 'package.xml での role (lead, developer, contributor, helper)',
),
'handle2' =>
array(
'name' => 'メンテナ 2 の名前',
'email' => '[email protected]',
'role' => 'package.xml での role (lead, developer, contributor, helper)',
),
// など
);
?>
category - このパッケージが所属するカテゴリ。
description - 最新リリースの説明。
license - 最新リリースのライセンス。
notes - 最新リリースのリリースノート。
releases - すべてのリリースについての情報。上で説明したような 形式となります。
summary - 最新リリースの概要。
struct package.listAll (
bool released_only = true
, bool stable_only = true
)
released_only
= true
TRUE を指定すると、リリースされていないパッケージは パッケージ一覧で返されません。
stable_only
= true
TRUE を指定すると、安定版リリースでないパッケージは パッケージ一覧で返されません。
この関数は、上で示した条件を満たすすべてのパッケージを このような形式の配列で返します。
<?php
array(
array(
'name' => 'パッケージ名',
'category' => 'カテゴリ名',
'license' => 'リリースのライセンス',
'summary' => 'パッケージの概要',
'description' => 'パッケージの説明',
'stable' => '条件を満たす最新のリリースのバージョン',
'unstable' => '最新の非安定版リリースのバージョン。stable_only の場合は false',
'state' => '条件を満たす最新のリリースのリリース状態',
'deps' =>
array( // package.info と同様の形式
)
),
// など
);
?>
struct package.listLatestReleases (
string state = ''
)
state = ''
'' の場合は全パッケージの最新リリースが返されます。それ以外の場合は 'snapshot'、'devel'、'alpha'、'beta' あるいは 'stable' の いずれかを指定する必要があり、この関数は state よりも 安定しているリリースの中で最新のものを返します。
state が 'beta' の場合は、この関数は beta あるいは stable の リリースの中で最新のものを返します。state が 'devel' の場合は、 この関数は devel、alpha、beta あるいは stable のリリースの中で 最新のものを返します。その他の場合も同様です。
この関数は、パラメータ "state" で指定した条件を満たす リリースを、すべてのパッケージについて以下の形式の配列で返します。
<?php
array(
array(
'package' => 'パッケージ名',
'version' => 'リリースのバージョン',
'state' => 'リリースの安定性',
'filesize' => 'ダウンロードする .tgz ファイルの大きさ',
),
// etc.
);
?>
struct package.listAll (
string fragment
, string|bool summary = false
, bool released_only = true
, bool stable_only = true
)
fragment
パッケージ名で検索する場合に使用する文字列。
summary
= false
false の場合、このパラメータは無視されます。それ以外の場合は、 最初のパラメータにマッチした結果をさらに絞り込むために、 このパラメータを使用してパッケージの概要文を検索します。
released_only
= true
TRUE を指定すると、リリースされていないパッケージは パッケージ一覧で返されません。
stable_only
= true
TRUE を指定すると、安定版リリースでないパッケージは パッケージ一覧で返されません。
この関数は、上で示した条件を満たすすべてのパッケージを このような形式の配列で返します。
<?php
array(
array(
'name' => 'パッケージ名',
'category' => 'カテゴリ名',
'license' => 'リリースのライセンス',
'summary' => 'パッケージの概要',
'description' => 'パッケージの説明',
'stable' => '条件を満たす最新のリリースのバージョン',
'unstable' => '最新の非安定版リリースのバージョン。stable_only の場合は false',
'state' => '条件を満たす最新のリリースのリリース状態',
'deps' =>
array( // package.info と同様の形式
)
),
// など
);
?>