diff --git a/extend/activitypub.extend.php b/extend/activitypub.extend.php
index b567b78..420c745 100644
--- a/extend/activitypub.extend.php
+++ b/extend/activitypub.extend.php
@@ -8,6 +8,7 @@ if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// * https://www.w3.org/TR/activitypub/
// * https://github.com/w3c/activitypub/issues/194
// * https://docs.joinmastodon.org/spec/webfinger/
+// * https://organicdesign.nz/ActivityPub_Code
define("ACTIVITYPUB_INSTANCE_ID", md5_file(G5_DATA_PATH . "/dbconfig.php"));
define("ACTIVITYPUB_HOST", (empty(G5_DOMAIN) ? $_SERVER['HTTP_HOST'] : G5_DOMAIN));
@@ -24,11 +25,11 @@ function activitypub_get_url($action, $params = array()) {
return ACTIVITYPUB_URL . "/?route=activitypub." . $action . "&" . http_build_query($params);
} else {
return ACTIVITYPUB_URL . "/?route=activitypub." . $action;
- }
+ }
}
function activitypub_json_encode($arr) {
- return json_encode( $arr );
+ return json_encode($arr);
}
function activitypub_get_icon($mb) {
@@ -299,7 +300,7 @@ function activitypub_parse_content($content) {
function activitypub_add_post($data) {
$wr_id = 0;
-
+
// 기본 파라미터
$to = $data['to'];
$object = $data['object'];
@@ -377,7 +378,7 @@ class _GNUBOARD_ActivityPub {
);
if (empty($params['resource'])) {
- return activitypub_json_encode(array("message" => "Resource could not empty"));
+ return activitypub_json_encode(array("message" => "Resource could not be empty"));
}
$resource = $params['resource'];
@@ -504,7 +505,6 @@ class _GNUBOARD_ActivityPub {
// 개인에게 보낸 메시지는 쪽지에 저장
// 공개(Public) 설정한 메시지는 ACTIVITYPUB_G5_TABLENAME에 저장
- // 게시물이 특정된 경우 댓글로 저장 (그누 전용)
$data = json_decode(file_get_contents("php://input"), true);
@@ -533,11 +533,13 @@ class _GNUBOARD_ActivityPub {
// 타입 별 해야될 일 지정
switch ($data['type']) {
case "Create":
+ // 스트링 및 오브젝트 타입을 모두 호환하도록 설정
+ if (is_string($object))
+ $object = array("id" => $object);
+
// 컨텐츠가 비어있는 경우
- if (empty($object['content'])) {
+ if (empty($object['content']))
$object['content'] = "[NO CONTENT]";
- $data['object'] = $object;
- }
// 수신된 내용 등록
$activity_wr_id = activitypub_add_post($data);
@@ -552,15 +554,17 @@ class _GNUBOARD_ActivityPub {
$wr_id = $query['wr_id'];
$write_table = G5_TABLE_PREFIX . $query['bo_table'];
$wr = get_write($write_table, $wr_id);
+ $bo = get_board_db(ACTIVITYPUB_G5_BOARDNAME, true);
// 글이 존재하는 경우
if (!empty($wr['wr_id'])) {
$mb = get_member(ACTIVITYPUB_G5_USERNAME);
$wr_homepage = $data['actor'];
$wr_content = sprintf(
- "%s
[외부에서 달린 댓글입니다. 답은 여기에서 하실 수 있습니다.]",
+ "%s
[외부에서 달린 댓글입니다. 자세한 내용은 %s 글을 확인하세요.]",
$content,
- G5_BBS_URL . "/bbs/board.php?bo_table=" . ACTIVITYPUB_G5_BOARDNAME . "&wr_id=" . $activity_wr_id
+ G5_BBS_URL . "/bbs/board.php?bo_table=" . ACTIVITYPUB_G5_BOARDNAME . "&wr_id=" . $activity_wr_id,
+ $bo['bo_subject'] . " #" . $activity_wr_id
);
$sql = "