private function getServersForProjectAndItsChildren(Project $project) { $remote_servers = $this->gerrit_server_factory->getServersForProject($project); $children = $this->project_manager->getChildProjects($project->getID()); foreach ($children as $child) { $child_remote_servers = $this->gerrit_server_factory->getServersForProject($child); $remote_servers = array_unique(array_merge($remote_servers, $child_remote_servers)); } return $remote_servers; }
/** * @return Git_RemoteServer_GerritServer[] */ public function getServersForProject(Project $project) { $servers = array(); foreach ($this->dao->searchAllByProjectId($project->getID()) as $row) { $servers[$row['id']] = $this->instantiateFromRow($row); } foreach ($this->project_manager->getChildProjects($project->getID()) as $child) { // don't use array_merge, it will nuke the keys $servers = $servers + $this->getServersForProject($child); } return $servers; }