Services_Backlogでxmlrpc_decode()がないとき
Posted: Updated:
PEAR Services_Backlog で Fetal errorが出てしまう
Fatal error: Call to undefined function xmlrpc_decode() in /var/www/vhosts/example.com/httpdocs/php/PEAR/Services/Backlog.php on line 800
oh...
Ext JSと合わせて、社内システム向けにBacklog APIを触ってみていたところ、上のFetal Errorでいきなり挫ける。
Backlog結構いいですよ、プロジェクト管理サービスです。導入障壁も低めな設定で、使えるところから使い始められるバランスなのが素晴らしい。
そいで以下、今回のエラー解決方法。
XML_RPC の xml_rpc_decode()で代用する
返ってきた結果をデコードするxmlrpc_decode関数が無いと怒られます。わりとすぐ試したかったので、応急処置。返ってきたナマの$resultをdumpしたらxvプロパティがソレっぽかったので、Services_Backlogの依存ライブラリであるXML_RPCに含まれていたxml_rpc_decode関数にかけてみたら見事通過。
/**
* XML-RPCサーバへリクエストを送信する
*
* @access private
* @param XML_RPC_Message $message
* @return array
*/
private function _send(XML_RPC_Message $message) {
$result = $this->client->send($message);
if ($result->faultCode()) {
throw new Services_Backlog_Exception($result->faultString(), $result->faultCode());
}
/*
$xml = $result->serialize();
return xmlrpc_decode($xml);
*/
return xml_rpc_decode($result->xv);
}
上記のコードでコメントアウトしてしまった本来の処理だと、どういう結果が返ってきていたのかは不明。今のところは、うまく動作しちゃってます。xmlrpc_decode自体はphpをコンパイルするときにオプション付けないとダメっぽいすね。レンタル系は入っていない環境もざらにありそう。
Backlog APIとExt JSを組み合わせれば、勝手にインターフェース作り放題!
かゆいところに僅かに手が届かない、じれったさを感じるBacklogのインターフェースですが、APIが提供されているので、作れば好きなカタチに加工できます。各タスクの詳細画面とかは本家のインターフェースに任せる(リンクする)というノリで。
- 複数タスクのステータス一括変更
- 複数タスクの担当者とか優先順位など各種設定を一括変更
- 複数プロジェクト間をタブインターフェースで移動
- 各項目によるフィルター&ソート完備
自分は、上記のような感じで社内向けに途中まで作ってみたものの、社内でBacklogがあまり人気ないので、日の目を見るのはまだまだ先っぽい。