Exemple #1
0
function updateEntriesOfCategory($blogid, $categoryId = -1)
{
    $ctx = Model_Context::getInstance();
    clearCategoryCache();
    if ($categoryId == -1) {
        $result = POD::queryAll("SELECT * FROM " . $ctx->getProperty('database.prefix') . "Categories WHERE blogid = {$blogid} AND parent IS NULL");
    } else {
        $parent = getParentCategoryId($blogid, $categoryId);
        if (empty($parent)) {
            // It is parent.
            $lookup = $categoryId;
        } else {
            $lookup = $parent;
        }
        $result = POD::queryAll("SELECT * FROM " . $ctx->getProperty('database.prefix') . "Categories WHERE blogid = {$blogid} AND id = {$lookup}");
    }
    foreach ($result as $row) {
        $parent = $row['id'];
        $parentName = Utils_Unicode::lessenAsEncoding($row['name'], 127);
        $row['name'] = POD::escapeString($parentName);
        $countParent = POD::queryCell("SELECT COUNT(id) FROM " . $ctx->getProperty('database.prefix') . "Entries WHERE blogid = {$blogid} AND draft = 0 AND visibility > 0 AND category = {$parent}");
        $countInLoginParent = POD::queryCell("SELECT COUNT(id) FROM " . $ctx->getProperty('database.prefix') . "Entries WHERE blogid = {$blogid} AND draft = 0 AND category = {$parent}");
        $result2 = POD::queryAll("SELECT * FROM " . $ctx->getProperty('database.prefix') . "Categories WHERE blogid = {$blogid} AND parent = {$parent}");
        foreach ($result2 as $rowChild) {
            $label = POD::escapeString(Utils_Unicode::lessenAsEncoding($parentName . '/' . $rowChild['name'], 255));
            $rowChild['name'] = POD::escapeString(Utils_Unicode::lessenAsEncoding($rowChild['name'], 127));
            $countChild = POD::queryCell("SELECT COUNT(id) FROM " . $ctx->getProperty('database.prefix') . "Entries WHERE blogid = {$blogid} AND draft = 0 AND visibility > 0 AND category = {$rowChild['id']}");
            $countInLogInChild = POD::queryCell("SELECT COUNT(id) FROM " . $ctx->getProperty('database.prefix') . "Entries WHERE blogid = {$blogid} AND draft = 0 AND category = {$rowChild['id']}");
            POD::query("UPDATE " . $ctx->getProperty('database.prefix') . "Categories SET entries = {$countChild}, entriesinlogin = {$countInLogInChild}, label = '{$label}' WHERE blogid = {$blogid} AND id = {$rowChild['id']}");
            $countParent += $countChild;
            $countInLoginParent += $countInLogInChild;
        }
        POD::query("UPDATE " . $ctx->getProperty('database.prefix') . "Categories SET entries = {$countParent}, entriesinlogin = {$countInLoginParent}, label = '{$row['name']}' WHERE blogid = {$blogid} AND id = {$parent}");
    }
    if ($categoryId >= 0) {
        CacheControl::flushCategory($categoryId);
    }
    return true;
}
Exemple #2
0
function updateEntriesOfCategory($blogid, $categoryId = -1)
{
    $context = Model_Context::getInstance();
    clearCategoryCache();
    $pool = DBModel::getInstance();
    if ($categoryId == -1) {
        $pool->reset("Categories");
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("parent", "eq", null);
        $result = $pool->getAll();
    } else {
        $parent = getParentCategoryId($blogid, $categoryId);
        if (empty($parent)) {
            // It is parent.
            $lookup = $categoryId;
        } else {
            $lookup = $parent;
        }
        $pool->reset("Categories");
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("id", "eq", $lookup);
        $result = $pool->getAll();
    }
    foreach ($result as $row) {
        $parent = $row['id'];
        $parentName = Utils_Unicode::lessenAsEncoding($row['name'], 127);
        $row['name'] = $parentName;
        $pool->reset("Entries");
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("draft", "eq", 0);
        $pool->setQualifier("visibility", ">", 0);
        $pool->setQualifier("category", "eq", $parent);
        $countParent = $pool->getCount('id');
        $pool->reset("Entries");
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("draft", "eq", 0);
        $pool->setQualifier("category", "eq", $parent);
        $countInLoginParent = $pool->getCount('id');
        $pool->reset("Categories");
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("parent", "eq", $parent);
        $result2 = $pool->getAll();
        foreach ($result2 as $rowChild) {
            $label = Utils_Unicode::lessenAsEncoding($parentName . '/' . $rowChild['name'], 255);
            $rowChild['name'] = Utils_Unicode::lessenAsEncoding($rowChild['name'], 127);
            $pool->reset("Entries");
            $pool->setQualifier("blogid", "eq", $blogid);
            $pool->setQualifier("draft", "eq", 0);
            $pool->setQualifier("visibility", ">", 0);
            $pool->setQualifier("category", "eq", $rowChild['id']);
            $countChild = $pool->getCount('id');
            $pool->reset("Entries");
            $pool->setQualifier("blogid", "eq", $blogid);
            $pool->setQualifier("draft", "eq", 0);
            $pool->setQualifier("category", "eq", $rowChild['id']);
            $countInLogInChild = $pool->getCount('id');
            $pool->reset("Categories");
            $pool->setAttribute("entries", $countChild);
            $pool->setAttribute("entriesinlogin", $countInLogInChild);
            $pool->setAttribute("label", $label, true);
            $pool->setQualifier("blogid", "eq", $blogid);
            $pool->setQualifier("id", "eq", $rowChild['id']);
            $pool->update();
            $countParent += $countChild;
            $countInLoginParent += $countInLogInChild;
        }
        $pool->reset("Categories");
        $pool->setAttribute("entries", $countParent);
        $pool->setAttribute("entriesinlogin", $countInLoginParent);
        $pool->setAttribute("label", $row['name'], true);
        $pool->setQualifier("blogid", "eq", $blogid);
        $pool->setQualifier("id", "eq", $parent);
        $pool->update();
    }
    if ($categoryId >= 0) {
        CacheControl::flushCategory($categoryId);
    }
    return true;
}