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