プロジェクト

全般

プロフィール

Bug(バグ) #3950

REST APIの allreleases.xml がバージョンの降順に並んでいない

Youichi Kimuraほぼ8年前に追加.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
-
開始日:
2016-05-24
期日:
進捗率:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

Overview (現象)

PEAR チャンネルサーバーの REST インタフェースに含まれる allreleases.xml は最新のリリースが最初に来るように並んでいる必要がありますが、現在の plugins.openpne.jp では古いリリースから順に並んでいるためこの仕様に合致していません。

Releases in this file are ordered, the latest version has to be first.

Manual :: PEAR channel server REST interface

例: opCommunityTopicPlugin の allreleases.xml
http://plugins.openpne.jp/pluginRest/r/opcommunitytopicplugin/allreleases.xml

この不具合により OpenPNE のプラグインインストール時に、

$ ./symfony opPlugin:install opCommunityTopicPlugin

のようにバージョン指定を省略して opPlugin:install を実行すると、OpenPNE 3.8.19 の場合は opCommunityTopicPlugin v0.9.10 がインストールされます。
これは、allreleases.xml に含まれるリリースのうち stable かつ最初に登場するリリースが選択されることによるものです。

Causes (原因)

apps/pc_frontend/modules/pluginRest/templates/releaseAllSuccess.xml.php:

<?php foreach ($package->PluginRelease as $release): ?>
 <r><v><?php echo $release->version ?></v><s><?php echo $release->stability ?></s></r>
<?php endforeach; ?>

上記テンプレート内でリリース情報を出力する際に PluginRelease がソートされないまま出力していることが原因です。ここでは PluginPackage->PluginRelease を参照していますが、この場合は PluginRelease が順不同で列挙されます。

Way to fix (修正内容)

PluginPackage をバージョン番号順にソートして出力する。PluginPackage クラスの他のメソッドでは version_compare 関数 を使用してソートしているため、これに合わせて修正する。

他の形式にエクスポート: Atom PDF