function api_red_xchan(&$a, $type) { logger('api_xchan'); if (api_user() === false) { return false; } logger('api_xchan'); require_once 'include/hubloc.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $r = xchan_store($_REQUEST); } $r = xchan_fetch($_REQUEST); json_return_and_die($r); }
function reflect_comment_store($channel, $post, $comment, $user) { // if the commenter was the channel owner, use their hubzilla xchan if ($comment['author'] === REFLECT_EXPORTUSERNAME && $comment['registered']) { $hash = $channel['xchan_hash']; } else { // we need a unique hash for the commenter. We don't know how many may have supplied // http://yahoo.com as their URL, so we'll use their avatar guid if they have one. // anonymous folks may get more than one xchan_hash if they commented more than once. $hash = $comment['registered'] && $user ? $user['avatar'] : ''; if (!$hash) { $hash = random_string() . '.unknown'; } // create an xchan for them which will also import their profile photo // they will have a network type 'unknown'. $x = array('hash' => $hash, 'guid' => $hash, 'url' => $comment['url'] ? $comment['url'] : z_root(), 'photo' => $user ? REFLECT_BASEURL . $user['avatar'] : z_root() . '/' . get_default_profile_photo(), 'name' => $comment['author']); xchan_store($x); } $arr = array(); $r = q("select * from item where mid = '%s' and uid = %d limit 1", dbesc($comment['guid']), intval($channel['channel_id'])); if ($r) { if (REFLECT_OVERWRITE) { $arr['id'] = $r[0]['id']; } else { return; } } // this is a lot like storing the post except for subtle differences, like parent_mid, flags, author_xchan, // and we don't have a comment edited field so use creation date $arr['uid'] = $channel['channel_account_id']; $arr['aid'] = $channel['channel_id']; $arr['mid'] = $comment['guid']; $arr['parent_mid'] = $post['mid']; $arr['created'] = $comment['created']; $arr['edited'] = $comment['created']; $arr['author_xchan'] = $hash; $arr['owner_xchan'] = $channel['channel_hash']; $arr['item_origin'] = 1; $arr['item_wall'] = 1; $arr['verb'] = ACTIVITY_POST; $arr['comment_policy'] = 'contacts'; $arr['title'] = html2bbcode($comment['title']); $arr['title'] = htmlspecialchars($arr['title'], ENT_COMPAT, 'UTF-8', false); $arr['body'] = html2bbcode($comment['body']); $arr['body'] = htmlspecialchars($arr['body'], ENT_COMPAT, 'UTF-8', false); $arr['body'] = preg_replace_callback("/\\[url\\=\\/+article\\/(.*?)\\](.*?)\\[url\\]/", 'reflect_article_callback', $arr['body']); $arr['body'] = preg_replace_callback("/\\[img(.*?)\\](.*?)\\[\\/img\\]/", 'reflect_photo_callback', $arr['body']); // logger('comment: ' . print_r($arr,true)); if ($arr['id']) { item_store_update($arr); } else { item_store($arr); } }