カテゴリー別アーカイブ: 開発ツール

PukiWiki Plus! を Ubuntu にインストール

Wikiはずっと Pukiwiki を使ってきたんですが、その後継版(?)の PukiWiki Plus! というものがあると知ったので、Ubuntu にインストールしてみました。

PHP5.3 対応やHTML5+jQueryUIポートを行なっている PukiWiki Advance というものもあるようですが、7-zip形式という良くわからない形式でアーカイブされているので試すことはできませんでした。

PukiWiki Plus! のインストール方法は普通の Pukiwiki とほぼ同じようで、多少 locale の設定で迷った位で簡単にインストールできました。

まずは /etc/locale.alias に utf-8 の設定を追加して、ロケールを作り直します。

ja_JP           ja_JP.utf8

% sudo locale-gen

その後、Apacheを再起動すれば前準備は完了です。ロケールが正しく設定されていないと、英語表示となります。詳細に関しては PukiWiki Plus! の質問問箱/247 が参考になるかと思います。

あとは PukiWiki Plus! をインストールするだけです。まずはgitからファイルを持ってきます。

% git clone https://github.com/miko2u/pukiwiki-plus-i18n

次に適当なディレクトリに移動して、Basic認証の設定とファイルのパーミッションを修正します。

% htpasswd .htpasswd xxxxuser
% sudo chown -R www-data *

あとは auth.ini.php でパスワードを設定したり、各種 ini で自分のお好みの設定をすれば完了です。

$adminpass = '{x-php-md5}' . md5('xxxpasswords');

2012/03/29追記:会社にあった Ubuntu 11.04 で試した場合、デフォルトの状態が変わったのか、日本語関係の設定がされてないだけだったのかわかりませんが、locale-gen の前に、言語パックなどのインストール・設定が必要でした。

% sudo aptitude install language-pack-ja
% sudo localedef -i ja_JP -f UTF-8 -A /etc/locale.alias ja_JP.UTF-8

 


PHPから任意のbacklog APIを呼び出す

最近、Backlog を会社で使うようになりました。まだベータ版とは言え APIがあるようなので、PHPからAPIへのアクセスを試してみました。

Backlogアプリケーション を見てみると PHP用のライブラリがありましたが、2009年から更新されておらず、また対応しているAPIの数が圧倒的に少ないようです。ただ中身を見ると単なるXML-RPCコールに過ぎないので、こんな感じの関数を追加して任意のAPIを呼び出せるように改造しました。

% diff -u org/Backlog.php Backlog.php
--- org/Backlog.php     2009-05-20 12:05:53.000000000 +0900
+++ Backlog.php     2012-04-08 11:46:09.434337869 +0900
@@ -75,6 +75,16 @@
         $this->client->setCredentials($user, $password);
     }

+
+    public function callAPI($method, $params = NULL) {
+               if ($params == NULL) {
+                    $message = new XML_RPC_Message(self::PREFIX . $method);
+               } else {
+                    $message = new XML_RPC_Message(self::PREFIX . $method, $params);
+               }
+               return $this->_send($message);
+    }
+
     /**
      * 参加プロジェクトを取得する
      *

APIの呼び出し自体は非常に簡単です。ID/Passwordを指定してライブラリのインスタンスを作成して、メソッドを呼び出すだけです。

<?php
require_once 'Services/Backlog.php';

define('FQDN', 'hogehoge.backlog.jp');
define('ID', 'apiuser');
define('PASSWORD', 'password');

$backlog = new Services_Backlog(FQDN, ID, PASSWORD);

echo '<pre>';

# getProjectsの呼び出し
$result = $backlog->callAPI('getProjects');
print_r($result);

# getProjectの呼び出し
$params = new XML_RPC_Value('TESTProjectKey', 'string');
$result = $backlog->callAPI('getProject', array($params));
print_r($result);

# countIssueの呼び出し(ProjectID=12345, 状態=未対応、担当者未設定)
$params = array();
$params['projectId'] = new XML_RPC_Value('12345', 'string');
$params['statusId'] = new XML_RPC_Value(1, 'int');
$params['assignerId'] = new XML_RPC_Value(-1, 'int');
$result = $backlog->callAPI('countIssue',
  array(new XML_RPC_Value($params, 'struct')));
print_r($result);

echo '</pre>';

当たり前ではありますが、管理者権限じゃない限り、任意のプロジェクトの情報などを取得することはできません(人間ができないことはAPIでもできない)。

いずれは自動投稿なども試しては見たいですが、最初はプロジェクトや課題の状態を表示するダッシュボードのようなものが作れれば十分なので、ビューアー権限でAPI用のユーザ(例えばapiuser)を作成して、全プロジェクトに追加するという運用にしました。