if (!$setting['enable']) { return; } $cache_dir = CACHE_DIR . DIRECTORY_SEPARATOR . 'github_repo'; try_mkdir($cache_dir); Hook::AddHook(Hook::FIND_POST_LIST, function (&$list) use($setting, $cache_dir) { $files = array(); if (isset($setting['repos'])) { foreach ($setting['repos'] as $repostring) { $repo = new Repo($repostring); $helper = new RepoHelper($repo); $helper->setFileCacheDir($cache_dir); try { $tree = $helper->getTreeInPath(); $tree = array_filter($tree, function ($item) { return $item['type'] === 'blob' && ParserFactory::CanParse($item['path']); }); $files = array_merge($files, $helper->getAllLocalBlob($tree)); } catch (GitHubException $ex) { throw $ex; } } } $list = array_merge($list, $files); // 删除其余文件 $all = glob($cache_dir . DIRECTORY_SEPARATOR . '*'); $remove = array_diff($all, $files); array_walk($remove, function ($fn) { unlink($fn); }); //var_dump($files,$all,$remove);