Пример #1
0
function fof_subscribe($user_id, $url, $unread = "today")
{
    if (!$url) {
        return false;
    }
    $url = fof_prepare_url($url);
    $feed = fof_db_get_feed_by_url($url);
    if (fof_is_subscribed($user_id, $url)) {
        return "You are already subscribed to " . fof_render_feed_link($feed) . "<br>";
    }
    if (fof_feed_exists($url)) {
        fof_db_add_subscription($user_id, $feed['feed_id']);
        fof_apply_plugin_tags($id, NULL, $user_id);
        fof_update_feed($feed['feed_id']);
        if ($unread != "no") {
            fof_db_mark_feed_unread($user_id, $feed['feed_id'], $unread);
        }
        return '<font color="green"><b>Subscribed.</b></font><br>';
    }
    $rss = fof_parse($url);
    if (isset($rss->error)) {
        return "Error: <B>" . $rss->error . "</b> <a href=\"http://feedvalidator.org/check?url={$url}\">try to validate it?</a><br>";
    } else {
        $url = html_entity_decode($rss->subscribe_url(), ENT_QUOTES);
        $self = $rss->get_link(0, 'self');
        if ($self) {
            $url = html_entity_decode($self, ENT_QUOTES);
        }
        if (fof_feed_exists($url)) {
            $feed = fof_db_get_feed_by_url($url);
            if (fof_is_subscribed($user_id, $url)) {
                return "You are already subscribed to " . fof_render_feed_link($feed) . "<br>";
            }
            fof_db_add_subscription($user_id, $feed['feed_id']);
            if ($unread != "no") {
                fof_db_mark_feed_unread($user_id, $feed['feed_id'], $unread);
            }
            return '<font color="green"><b>Subscribed.</b></font><br>';
        }
        $id = fof_add_feed($url, $rss->get_title(), $rss->get_link(), $rss->get_description());
        fof_update_feed($id);
        fof_db_add_subscription($user_id, $id);
        if ($unread != "no") {
            fof_db_mark_feed_unread($user_id, $id, $unread);
        }
        fof_apply_plugin_tags($id, NULL, $user_id);
        return '<font color="green"><b>Subscribed.</b></font><br>';
    }
}
Пример #2
0
function fof_subscribe($user_id, $url, $unread = 'today')
{
    fof_trace();
    $url = trim($url);
    if (empty($url)) {
        return "<span style=\"color:red\">Error: <b>cannot subscribe to nothing</b> (empty url?)</span><br>\n";
    }
    /* ensure url at least has a reasonable protocol */
    $url = fof_prepare_url($url);
    $feed = fof_db_get_feed_by_url($url);
    if (empty($feed)) {
        /* raw url does not exist, try cooking it with simplepie */
        if (($rss = fof_parse($url)) === false || $rss->error()) {
            $rss_error = isset($rss) && $rss->error() ? $rss->error() : '';
            return "<span style=\"color:red\">Error: <b>Failed to subscribe to '{$url}'</b>" . (!empty($rss_error) ? ": {$rss_error}</span> <span><a href=\"http://feedvalidator.org/check?url=" . urlencode($url) . "\">try to validate it?</a>" : "") . "</span><br>\n";
        }
        $self = $rss->get_link(0, 'self');
        $url = html_entity_decode($self ? $self : $rss->subscribe_url(), ENT_QUOTES);
        $feed = fof_db_get_feed_by_url($url);
        if (empty($feed)) {
            /* cooked url does not exist, add it */
            $new_feed_id = fof_db_add_feed($url, $rss->get_title(), $rss->get_link(), $rss->get_description());
            if (empty($new_feed_id)) {
                return "<span style=\"color:red\">Error: <b>Failed to subscribe to '{$url}'</b></span<br>\n";
            }
            $feed = fof_db_get_feed_by_id($new_feed_id);
            /* assert(!empty($feed)) */
        }
    }
    if (fof_db_is_subscribed($user_id, $url)) {
        return "<span>You are already subscribed to '" . fof_render_feed_link($feed) . "'.</span><br>\n";
    }
    /* subscribe to the feed */
    fof_db_add_subscription($user_id, $feed['feed_id']);
    /* update the feed */
    list($n, $err) = fof_update_feed($new_feed_id);
    if (!empty($err)) {
        return "<span style=\"color:red\">{$err}</span><br>\n";
    }
    /* set requested existing items unread */
    if ($unread != 'no') {
        fof_db_mark_feed_unread($user_id, $feed['feed_id'], $unread);
    }
    /* set tags for user on any existing items */
    fof_apply_plugin_tags($feed['feed_id'], NULL, $user_id);
    return "<span style=\"color:green\"><b>Subscribed to '" . fof_render_feed_link($feed) . "'.</b></span><br>\n";
}