@@ -294,33 +294,39 @@ func CanUserForkRepo(user *user_model.User, repo *repo_model.Repository) (bool,
294294 return false , nil
295295}
296296
297+ // FindUserOrgForks returns the forked repositories for one user from a repository
298+ func FindUserOrgForks (repoID , userID int64 ) ([]* repo_model.Repository , error ) {
299+ var cond builder.Cond = builder .And (
300+ builder.Eq {"fork_id" : repoID },
301+ builder .In ("owner_id" ,
302+ builder .Select ("org_id" ).
303+ From ("org_user" ).
304+ Where (builder.Eq {"uid" : userID }),
305+ ),
306+ )
307+
308+ var repos []* repo_model.Repository
309+ return repos , db .GetEngine (db .DefaultContext ).Table ("repository" ).Where (cond ).Find (& repos )
310+ }
311+
297312// GetForksByUserAndOrgs return forked repos of the user and owned orgs
298313func GetForksByUserAndOrgs (user * user_model.User , repo * repo_model.Repository ) ([]* repo_model.Repository , error ) {
299314 var repoList []* repo_model.Repository
300315 if user == nil {
301316 return repoList , nil
302317 }
303- var forkedRepo * repo_model.Repository
304318 forkedRepo , err := repo_model .GetUserFork (repo .ID , user .ID )
305319 if err != nil {
306320 return repoList , err
307321 }
308322 if forkedRepo != nil {
309323 repoList = append (repoList , forkedRepo )
310324 }
311- canCreateRepos , err := GetOrgsCanCreateRepoByUserID ( user .ID )
325+ orgForks , err := FindUserOrgForks ( repo . ID , user .ID )
312326 if err != nil {
313- return repoList , err
314- }
315- for _ , org := range canCreateRepos {
316- forkedRepo , err := repo_model .GetUserFork (repo .ID , org .ID )
317- if err != nil {
318- return repoList , err
319- }
320- if forkedRepo != nil {
321- repoList = append (repoList , forkedRepo )
322- }
327+ return nil , err
323328 }
329+ repoList = append (repoList , orgForks ... )
324330 return repoList , nil
325331}
326332
0 commit comments