protected function loadFullMenuTree() { if (self::$fullMenuTree != null) { return; } $cache_id = 'FULL_MENU_LIST'; $cacheSvc = Openbiz::getService(CACHE_SERVICE, 1); $cacheSvc->init($this->objectName, 600); // cache for 10 mins if ($cacheSvc->test($cache_id)) { self::$fullMenuTree = $cacheSvc->load($cache_id); return; } $rs = parent::directFetch(); foreach ($rs as $record) { if (empty($record['PId'])) { $record['PId'] = "__root__"; } unset($record['create_by']); unset($record['create_time']); unset($record['update_by']); unset($record['update_time']); unset($record['name']); unset($record['parent']); self::$fullMenuTree[$record['Id']] = $record; } foreach (self::$fullMenuTree as $mId => $record) { self::$fullMenuTree[$record['PId']]['children'][] = $mId; } //print_r(self::$fullMenuTree); $cacheSvc->save(self::$fullMenuTree, $cache_id); // put it in apc or file cache }