Example #1
0
function setEntryVisibility($id, $visibility)
{
    global $database;
    requireModel("blog.feed");
    requireModel("blog.category");
    requireComponent('Needlworks.Cache.PageCache');
    $blogid = getBlogId();
    if ($visibility < 0 || $visibility > 3) {
        return false;
    }
    list($oldVisibility, $category) = POD::queryRow("SELECT visibility, category FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND id = {$id} AND draft = 0");
    if ($category < 0) {
        if ($visibility == 1) {
            $visibility = 0;
        }
        if ($visibility == 3) {
            $visibility = 2;
        }
    }
    if ($oldVisibility === null) {
        return false;
    }
    if ($visibility == $oldVisibility) {
        return true;
    }
    if ($oldVisibility == 3) {
        syndicateEntry($id, 'delete');
    } else {
        if ($visibility == 3) {
            if (!syndicateEntry($id, 'create')) {
                POD::query("UPDATE {$database['prefix']}Entries \n\t\t\t\tSET visibility = {$oldVisibility}, \n\t\t\t\t\tmodified = UNIX_TIMESTAMP() \n\t\t\t\tWHERE blogid = {$blogid} AND id = {$id}");
                return false;
            }
        }
    }
    $result = POD::queryCount("UPDATE {$database['prefix']}Entries \n\t\tSET visibility = {$visibility}, \n\t\t\tmodified = UNIX_TIMESTAMP() \n\t\tWHERE blogid = {$blogid} AND id = {$id}");
    if (!$result) {
        // Error.
        return false;
    }
    if ($result == 0) {
        // Not changed.
        return true;
    }
    if ($category >= 0) {
        if ($oldVisibility >= 2 && $visibility < 2 || $oldVisibility < 2 && $visibility >= 2) {
            clearFeed();
        }
        if ($oldVisibility == 3 && $visibility <= 2 || $oldVisibility <= 2 && $visibility == 3) {
            clearFeed();
        }
        if ($category > 0) {
            updateCategoryByEntryId($blogid, $id, 'update', $parameters = array('visibility' => array($oldVisibility, $visibility)));
        }
        //			updateEntriesOfCategory($blogid, $category);
    }
    CacheControl::flushEntry($id);
    CacheControl::flushDBCache('entry');
    CacheControl::flushDBCache('comment');
    CacheControl::flushDBCache('trackback');
    fireEvent('ChangeVisibility', $visibility, $id);
    return true;
}
Example #2
0
function setEntryVisibility($id, $visibility)
{
    importlib("model.blog.feed");
    importlib("model.blog.category");
    $blogid = getBlogId();
    if ($visibility < 0 || $visibility > 3) {
        return false;
    }
    $pool = DBModel::getInstance();
    $pool->init("Entries");
    $pool->setQualifier("blogid", "eq", $blogid);
    $pool->setQualifier("id", "eq", $id);
    $pool->setQualifier("draft", "eq", 0);
    list($category, $oldVisibility) = $pool->getRow("category, visibility");
    if ($category < 0) {
        if ($visibility == 1) {
            $visibility = 0;
        }
        if ($visibility == 3) {
            $visibility = 2;
        }
    }
    if ($oldVisibility === null) {
        return false;
    }
    if ($visibility == $oldVisibility) {
        return true;
    }
    if ($oldVisibility == 3) {
        syndicateEntry($id, 'delete');
    } else {
        if ($visibility == 3) {
            if (!syndicateEntry($id, 'create')) {
                $pool->init("Entries");
                $pool->setQualifier("blogid", "eq", $blogid);
                $pool->setQualifier("id", "eq", $id);
                $pool->setAttribute("visibility", $oldVisibility);
                $pool->setAttribute("modified", Timestamp::getUNIXtime());
                $pool->update();
                return false;
            }
        }
    }
    $pool->init("Entries");
    $pool->setQualifier("blogid", "eq", $blogid);
    $pool->setQualifier("id", "eq", $id);
    $pool->setAttribute("visibility", $visibility);
    $pool->setAttribute("modified", Timestamp::getUNIXtime());
    $result = $pool->update();
    if (!$result) {
        return false;
    }
    if ($result == 0) {
        return true;
    }
    if ($category >= 0) {
        if ($oldVisibility >= 2 && $visibility < 2 || $oldVisibility < 2 && $visibility >= 2) {
            clearFeed();
        }
        if ($oldVisibility == 3 && $visibility <= 2 || $oldVisibility <= 2 && $visibility == 3) {
            clearFeed();
        }
        if ($category > 0) {
            updateCategoryByEntryId($blogid, $id, 'update', $parameters = array('visibility' => array($oldVisibility, $visibility)));
        }
        //			updateEntriesOfCategory($blogid, $category);
    }
    CacheControl::flushEntry($id);
    CacheControl::flushDBCache('entry');
    CacheControl::flushDBCache('comment');
    CacheControl::flushDBCache('trackback');
    fireEvent('ChangeVisibility', $visibility, $id);
    return true;
}