| 
									
										
										
										
											2017-03-06 09:54:34 -08:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | final class PhabricatorPeopleProfileCommitsController | 
					
						
							|  |  |  |   extends PhabricatorPeopleProfileController { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   public function handleRequest(AphrontRequest $request) { | 
					
						
							|  |  |  |     $viewer = $this->getViewer(); | 
					
						
							|  |  |  |     $id = $request->getURIData('id'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $user = id(new PhabricatorPeopleQuery()) | 
					
						
							|  |  |  |       ->setViewer($viewer) | 
					
						
							|  |  |  |       ->withIDs(array($id)) | 
					
						
							|  |  |  |       ->needProfile(true) | 
					
						
							|  |  |  |       ->needProfileImage(true) | 
					
						
							|  |  |  |       ->needAvailability(true) | 
					
						
							|  |  |  |       ->executeOne(); | 
					
						
							|  |  |  |     if (!$user) { | 
					
						
							|  |  |  |       return new Aphront404Response(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $class = 'PhabricatorDiffusionApplication'; | 
					
						
							|  |  |  |     if (!PhabricatorApplication::isClassInstalledForViewer($class, $viewer)) { | 
					
						
							|  |  |  |       return new Aphront404Response(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $this->setUser($user); | 
					
						
							|  |  |  |     $title = array(pht('Recent Commits'), $user->getUsername()); | 
					
						
							|  |  |  |     $header = $this->buildProfileHeader(); | 
					
						
							|  |  |  |     $commits = $this->buildCommitsView($user); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $crumbs = $this->buildApplicationCrumbs(); | 
					
						
							|  |  |  |     $crumbs->addTextCrumb(pht('Recent Commits')); | 
					
						
							|  |  |  |     $crumbs->setBorder(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $nav = $this->getProfileMenu(); | 
					
						
							|  |  |  |     $nav->selectFilter(PhabricatorPeopleProfileMenuEngine::ITEM_COMMITS); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $view = id(new PHUITwoColumnView()) | 
					
						
							|  |  |  |       ->setHeader($header) | 
					
						
							|  |  |  |       ->addClass('project-view-home') | 
					
						
							|  |  |  |       ->addClass('project-view-people-home') | 
					
						
							|  |  |  |       ->setFooter(array( | 
					
						
							|  |  |  |         $commits, | 
					
						
							|  |  |  |       )); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return $this->newPage() | 
					
						
							|  |  |  |       ->setTitle($title) | 
					
						
							|  |  |  |       ->setCrumbs($crumbs) | 
					
						
							|  |  |  |       ->setNavigation($nav) | 
					
						
							|  |  |  |       ->appendChild($view); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private function buildCommitsView(PhabricatorUser $user) { | 
					
						
							|  |  |  |     $viewer = $this->getViewer(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $commits = id(new DiffusionCommitQuery()) | 
					
						
							|  |  |  |       ->setViewer($viewer) | 
					
						
							| 
									
										
										
										
											2017-03-07 22:37:42 -08:00
										 |  |  |       ->withAuthorPHIDs(array($user->getPHID())) | 
					
						
							| 
									
										
										
										
											2017-03-07 01:23:59 +00:00
										 |  |  |       ->needCommitData(true) | 
					
						
							| 
									
										
										
										
											2017-03-06 09:54:34 -08:00
										 |  |  |       ->setLimit(100) | 
					
						
							|  |  |  |       ->execute(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-26 09:26:06 -07:00
										 |  |  |     $list = id(new DiffusionCommitListView()) | 
					
						
							| 
									
										
										
										
											2017-03-06 09:54:34 -08:00
										 |  |  |       ->setViewer($viewer) | 
					
						
							|  |  |  |       ->setCommits($commits) | 
					
						
							|  |  |  |       ->setNoDataString(pht('No recent commits.')); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 14:01:32 -07:00
										 |  |  |     return $list; | 
					
						
							| 
									
										
										
										
											2017-03-06 09:54:34 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | } |