Example #1
0
 /**
  * Get the slug, ensuring its uniqueness
  *
  * @param string $slug the slug to check
  * @param string $separator the separator used by slug
  * @param int $increment
  *
  * @return string the unique slug
  */
 protected function makeSlugUnique($slug, $separator = '-', $increment = 0)
 {
     $slug2 = empty($increment) ? $slug : $slug . $separator . $increment;
     $slugAlreadyExists = JenkinsGroupRunQuery::create()->filterBySlug($slug2)->filterBySfGuardUserId($this->getSfGuardUserId())->prune($this)->count();
     if ($slugAlreadyExists) {
         return $this->makeSlugUnique($slug, $separator, ++$increment);
     } else {
         return $slug2;
     }
 }
 /**
  * @param sfRequest $request The current sfRequest object
  * @return mixed     A string containing the view name associated with this action
  */
 function execute($request)
 {
     $userId = $this->getUser()->getUserId();
     $jenkins = $this->getJenkins();
     $sortParams = explode('_', $request->getParameter('sort'));
     $sortType = 'none';
     $sortDirection = '';
     if (count($sortParams) == 1) {
         $sortType = strlen($sortParams[0]) ? $sortParams[0] : 'none';
     } elseif (count($sortParams) == 2) {
         list($sortType, $sortDirection) = $sortParams;
     }
     if ($request->hasParameter('git_branch_slug')) {
         $groupRun = JenkinsGroupRunPeer::retrieveBySfGuardUserIdAndGitBranchSlug($userId, $request->getParameter('git_branch_slug'));
         $this->forward404If(null === $groupRun, sprintf('Unable to find build branch with branch name %s ', $request->getParameter('git_branch_slug')));
         $currentGroupId = $groupRun->getId();
     } else {
         $currentGroupId = $request->getParameter('group_run_id');
     }
     $order = $sortDirection == 'desc' ? Criteria::DESC : Criteria::ASC;
     $query = new JenkinsGroupRunQuery();
     $query->findBySfGuardUserId($userId);
     switch ($sortType) {
         case 'date':
             $query->orderByDate($order);
             break;
         case 'label':
             $query->orderByLabel($order);
             break;
         default:
             $query->orderByDate(Criteria::DESC);
             break;
     }
     $groupRuns = $query->find();
     $dataGroupRuns = array();
     foreach ($groupRuns as $groupRun) {
         if (null === $currentGroupId) {
             $currentGroupId = $groupRun->getId();
         }
         /** @var JenkinsGroupRun $groupRun */
         $result = $groupRun->getResult($jenkins);
         $dataGroupRuns[$groupRun->getId()] = array('label' => $groupRun->getLabel(), 'git_branch' => $groupRun->getGitBranch(), 'git_branch_slug' => $groupRun->getGitBranchSlug(), 'date' => $groupRun->getDate('Y-m-d H:i:s'), 'result' => $result, 'result_weight' => $groupRun->getResultWeight($result), 'url_view' => $this->generateUrl('branch_view', $groupRun) . '/sort/' . $sortType . '_' . $sortDirection);
     }
     if ($sortType == 'result') {
         $method = $sortDirection == 'asc' ? 'sortGroupRunsByResultAsc' : 'sortGroupRunsByResultDesc';
         uasort($dataGroupRuns, array($this, $method));
     }
     $currentGroupRun = JenkinsGroupRunPeer::retrieveByPK($currentGroupId);
     $sortMenu = $partial_url_for_sort_direction = $branch_view_url = null;
     if (null !== $currentGroupRun) {
         $sortMenu = array('label' => array('label' => 'Name', 'url' => $this->generateUrl('branch_view', $currentGroupRun) . '/sort/label_' . $sortDirection), 'date' => array('label' => 'Creation date', 'url' => $this->generateUrl('branch_view', $currentGroupRun) . '/sort/date_' . $sortDirection), 'result' => array('label' => 'Status', 'url' => $this->generateUrl('branch_view', $currentGroupRun) . '/sort/result_' . $sortDirection));
         $branch_view_url = $this->generateUrl('branch_view', $currentGroupRun);
         $partial_url_for_sort_direction = sprintf('%s/sort/%s_', $this->generateUrl('branch_view', $currentGroupRun), $sortType);
     }
     $this->setVar('group_runs', $dataGroupRuns);
     $this->setVar('current_group_run_id', $currentGroupId);
     $this->setVar('sort_type', $sortType);
     $this->setVar('sort_direction', $sortDirection);
     $this->setVar('sort_menu', $sortMenu);
     $this->setVar('branch_view_url', $branch_view_url);
     $this->setVar('partial_url_for_sort_direction', $partial_url_for_sort_direction);
     $this->setVar('enabled_popover', $this->getUser()->getProfile()->getPopoverEnabled());
 }