/** * 纠正版块额外的数据(上级版块、是否含有子版等统计数据) */ public function correctData() { $manager = $fups = $fupnames = array(0 => ''); $hassub = $subFids = $allManager = array(); $forums = $this->_getForum()->getForumOrderByType(); foreach ($forums as $key => $value) { if ($value['parentid']) { $hassub[$value['parentid']] = 1; } if ($value['hassub']) { $subFids[] = $value['fid']; } $uppermanager = $manager[$value['parentid']]; $fup = $fups[$value['parentid']]; $fupname = $fupnames[$value['parentid']]; if ($uppermanager != $value['uppermanager'] || $fup != $value['fup'] || $fupname != $value['fupname']) { $dm = new PwForumDm($key); $dm->setUpperManager($uppermanager)->setFup($fup)->setFupname($fupname); $this->_getForum()->updateForum($dm, PwForum::FETCH_MAIN); } if ($value['manager'] = trim($value['manager'], ',')) { $allManager = array_merge($allManager, explode(',', $value['manager'])); $uppermanager = rtrim($uppermanager, ',') . ',' . $value['manager'] . ','; } $manager[$key] = $uppermanager; $fups[$key] = $key . ($fup ? ',' . $fup : ''); $fupnames[$key] = strip_tags($value['name']) . ($fupname ? "\t" . $fupname : ''); } $hassubFids = array_keys($hassub); if ($fids = array_diff($hassubFids, $subFids)) { $dm = new PwForumDm(true); $dm->setHassub(1); $this->_getForum()->batchUpdateForum($fids, $dm, PwForum::FETCH_MAIN); } if ($fids = array_diff($subFids, $hassubFids)) { $dm = new PwForumDm(true); $dm->setHassub(0); $this->_getForum()->batchUpdateForum($fids, $dm, PwForum::FETCH_MAIN); } Wekit::load('user.srv.PwUserMiscService')->updateManager($allManager); }