Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
    }
}