Bug(バグ) #3950
REST APIの allreleases.xml がバージョンの降順に並んでいない
0%
Description
Overview (現象)¶
PEAR チャンネルサーバーの REST インタフェースに含まれる allreleases.xml
は最新のリリースが最初に来るように並んでいる必要がありますが、現在の plugins.openpne.jp では古いリリースから順に並んでいるためこの仕様に合致していません。
Releases in this file are ordered, the latest version has to be first.
例: 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 関数 を使用してソートしているため、これに合わせて修正する。