操作
Backport(バックポート) #2248
完了[api] 取得したアクティビティのリンク先URLが streamUrl に格納されている
開始日:
2011-06-21
期日:
進捗率:
100%
予定工数:
説明
Overview (現象)¶
下記のように activity_data.uri にURIが設定されたアクティビティをAPIで取得した場合に、URLが url
フィールドではなく streamUrl
フィールドに格納されてしまう。
sqlite> select * from activity_data; id|member_id|in_reply_to_activity_id|body|uri|public_flag|is_pc|is_mobile|source|source_uri|foreign_table|foreign_id|template|template_param|created_at|updated_at 1|1||test|http://sns.localhost/|1|1|1|||||||2011-06-02 21:29:57|2011-06-02 21:29:57
APIで取得されるアクティビティ:
(※: URLの値が壊れている問題については #2231 で取り扱います)
{
"id": "1",
"userId": "1",
"title": "test",
"postedTime": "2011-06-02T21:29:57+09:00",
"streamUrl": "http:\/\/sns.localhost\/sqlite\/http%3A\/"
}
Causes (原因)¶
opJsonDbOpensocialService::getActivities() メソッド内で、下記のように activity_data.uri の値を streamUrl へ代入している箇所がある。
if ($activity->getUri())
{
$a['streamUrl'] = app_url_for('pc_frontend', $activity->getUri(), true);
}
Way to fix (修正内容)¶
activity_data.uri の値の代入先を streamUrl から url に変更する。
diff --git a/lib/util/opJsonDbOpensocialService.class.php b/lib/util/opJsonDbOpensocialService.class.php
index 398ff69..0f0d61f 100644
--- a/lib/util/opJsonDbOpensocialService.class.php
+++ b/lib/util/opJsonDbOpensocialService.class.php
@@ -171,7 +171,7 @@ class opJsonDbOpensocialService implements ActivityService, PersonService, AppDa
if ($activity->getUri())
{
- $a['streamUrl'] = app_url_for('pc_frontend', $activity->getUri(), true);
+ $a['url'] = app_url_for('pc_frontend', $activity->getUri(), true);
}
if ($activity->getForeignTable() == Doctrine::getTable('MemberApplication')->getTableName())
{
操作