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; }
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; }