Project

General

Profile

Bug(バグ) #3950

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

Added by Youichi Kimura over 3 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Start date:
2016-05-24
Due date:
% Done:

0%

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

Description

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 関数 を使用してソートしているため、これに合わせて修正する。

Also available in: Atom PDF