Exemplo n.º 1
0
 /**
  * 纠正版块额外的数据(上级版块、是否含有子版等统计数据)
  */
 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);
 }