/**
  * Execute any application/business logic for this component.
  *
  * @param sfRequest $request The current sfRequest object
  *
  * @return mixed     A string containing the view name associated with this action
  */
 function execute($request)
 {
     //pas de jenkins => pas de form
     if (!$this->getJenkins()->isAvailable()) {
         $this->redirect('jenkins/index');
     }
     if (is_array($buildRequest = $request->getParameter('build'))) {
         $groupRunId = isset($buildRequest['group_run_id']) ? $buildRequest['group_run_id'] : null;
     } else {
         $groupRunId = $request->getParameter('group_run_id');
     }
     $this->forward404If($groupRunId === null, 'group_run_id parameter is required');
     $jenkinsGroupRun = JenkinsGroupRunPeer::retrieveByPK($groupRunId);
     $this->forward404Unless($jenkinsGroupRun instanceof JenkinsGroupRun, sprintf('Can\'t create JenkinsGroupRun with id %s', $groupRunId));
     $defaults = array();
     if ($request->hasParameter('auto_launch')) {
         $autoLaunch = $request->getParameter('auto_launch');
         if ('on' === $autoLaunch) {
             $defaults = array('auto_launch' => true);
         }
     } else {
         $defaults = array('auto_launch' => true);
     }
     $form = new BuildForm($defaults, array('jenkins' => $this->getJenkins(), 'group_run' => $jenkinsGroupRun));
     if (sfRequest::POST === $request->getMethod()) {
         $form->bind($buildRequest);
         if ($form->isValid()) {
             $jobName = $form->getValue('job');
             $autoLaunch = 'on' === $form->getValue('auto_launch');
             $extraParameters = $form->getValue('parameters');
             $jobParameters = array();
             if (isset($extraParameters[$jobName])) {
                 $jobParameters = $extraParameters[$jobName];
             }
             //créer les builds
             $run = new JenkinsRun();
             $run->setJenkinsGroupRun($jenkinsGroupRun);
             $run->setJobName($jobName);
             $run->encodeParameters($jobParameters);
             $run->setLaunched($autoLaunch);
             $run->save();
             //launcher les builds
             if ($autoLaunch) {
                 $run->launch($this->getJenkins(), $jobParameters);
                 $run->computeJobBuildNumber($this->getJenkins(), $this->getUser());
             }
             $this->getUser()->setFlash('info', sprintf('Build [%s] has been added to build branch [%s]', $run->getJobName(), $jenkinsGroupRun->getLabel()));
             if ($request->hasParameter('add_and_continue')) {
                 $urlRedirect = sprintf('jenkins/addBuild?auto_launch=%s&group_run_id=%s', $autoLaunch ? 'on' : 'off', $jenkinsGroupRun->getId());
             } else {
                 $urlRedirect = $this->generateUrl('branch_view', $jenkinsGroupRun);
             }
             $this->redirect($urlRedirect);
         }
     }
     $this->setVar('form', $form);
     $this->setVar('group_run', array('label' => $jenkinsGroupRun->getLabel(), 'git_branch' => $jenkinsGroupRun->getGitBranch(), 'git_branch_slug' => $jenkinsGroupRun->getGitBranchSlug(), 'result' => $jenkinsGroupRun->getResult($this->getJenkins()), 'url' => $this->generateUrl('branch_view', $jenkinsGroupRun)));
 }
 /**
  * @param sfRequest $request The current sfRequest object
  *
  * @return mixed     A string containing the view name associated with this action
  */
 function execute($request)
 {
     $runs = JenkinsRunPeer::getDelayed($this->getUser());
     $form = new DelayedRunForm(array(), array('runs' => $runs));
     $jenkins = $this->getJenkins();
     if (sfRequest::POST === $request->getMethod()) {
         $form->bind($request->getParameter('delayed_run'));
         if ($form->isValid()) {
             $messages = array();
             foreach ($form->getValue('runs') as $id => $datas) {
                 $run = JenkinsRunPeer::retrieveByPK($id);
                 if ('on' !== $datas['launch_job']) {
                     $run->setLaunchDelayed(null);
                     $run->save();
                     continue;
                 }
                 $launchAt = null;
                 if (strlen($datas['scheduled_at']) > 0) {
                     $launchAt = strtotime($datas['scheduled_at']);
                 }
                 if (null === $launchAt) {
                     $run->launchDelayed($this->getJenkins());
                     $messages[] = sprintf('The job [%s] in build branch has been launched', $run->getJobName(), $run->getGitBranch());
                 } else {
                     $run->setLaunchDelayed($launchAt);
                     $run->save();
                     $messages[] = sprintf('The job [%s] in build %s branch will be launched at %s ', $run->getJobName(), $run->getGitBranch(), $run->getLaunchDelayed('Y-m-d H:i'));
                 }
             }
             $this->getUser()->setFlash('info', $messages);
             $this->redirect('jenkins/index');
         }
     }
     $delayedRuns = array();
     $durationFormatter = new durationFormatter();
     foreach ($runs as $run) {
         $groupRun = $run->getJenkinsGroupRun();
         $parameters = $run->getParameters();
         $build = $run->getJenkinsJob($jenkins)->getLastSuccessfulBuild($jenkins);
         $lastDuration = 0;
         if (null !== $build) {
             $lastDuration = $build->getDuration();
         }
         $delayedRuns[$run->getId()] = array('group_run_label' => $groupRun->getLabel(), 'group_run_url' => $this->generateUrl('branch_view', $groupRun), 'group_run_result' => $groupRun->getResult($jenkins), 'last_duration' => $lastDuration, 'parameters' => null === $parameters ? $parameters : json_decode($run->getParameters(), true));
     }
     $this->setVar('form', $form);
     $this->setVar('delayed_runs', $delayedRuns);
     $this->setVar('duration_formatter', $durationFormatter);
 }
 /**
  *
  * @param sfRequest $request The current sfRequest object
  *
  * @return mixed     A string containing the view name associated with this action
  */
 public function execute($request)
 {
     $profile = $this->getUser()->getProfile();
     $form = new ConfigureUserProfileForm($profile);
     if (sfRequest::PUT === $request->getMethod()) {
         $form->bind($request->getParameter('profile'));
         if ($form->isValid()) {
             $form->save();
             $this->getUser()->setFlash('notice', 'Your profile has been saved');
             $this->redirect('user/configure');
         }
     }
     $this->setVar('form', $form);
     $this->setVar('api_enabled', Configuration::get('api_enabled', false));
     $this->setVar('api_key', $profile->getApiKey());
 }
 /**
  * Execute any application/business logic for this component.
  *
  * @param sfRequest $request The current sfRequest object
  *
  * @return mixed     A string containing the view name associated with this action
  */
 function execute($request)
 {
     //pas de jenkins => pas de form
     if (!$this->getJenkins()->isAvailable()) {
         $this->redirect('jenkins/index');
     }
     $default = array('sf_guard_user_id' => $this->getUser()->getUserId());
     if ($request->hasParameter('from_group_run_id')) {
         //duplication de la configuration
         $groupRun = JenkinsGroupRunPeer::retrieveByPK($request->getParameter('from_group_run_id'));
         if (null !== $groupRun) {
             $default = $groupRun->buildDefaultFormValue($this->getJenkins(), $default);
         }
     }
     if ($request->hasParameter('branch')) {
         $branch = $request->getParameter('branch');
         $default['git_branch'] = $branch;
         $default['label'] = $branch;
     }
     $form = new GroupRunForm($default, array('jenkins' => $this->getJenkins(), 'sf_guard_user_id' => $this->getUser()->getUserId()));
     if (sfRequest::POST === $request->getMethod()) {
         $form->bind($request->getParameter('group_run'));
         if ($form->isValid()) {
             $autoLaunch = 'on' === $form->getValue('auto_launch');
             //création du group run
             $runGroup = new JenkinsGroupRun();
             $runGroup->setSfGuardUserId($this->getUser()->getUserId());
             $runGroup->setDate(new DateTime());
             $runGroup->setGitBranch($form->getValue('git_branch'));
             $runGroup->setLabel($form->getValue('label'));
             $runGroup->save();
             $nbJobs = 0;
             foreach ($form->getValue('builds') as $jobName => $jobInfo) {
                 if (!$jobInfo['job_name']) {
                     continue;
                 }
                 $parameters = array();
                 if (isset($jobInfo['parameters'])) {
                     $parameters = $jobInfo['parameters'];
                 }
                 //créer les builds
                 $run = new JenkinsRun();
                 $run->setJenkinsGroupRun($runGroup);
                 $run->setJobName($jobName);
                 $run->encodeParameters($parameters);
                 $run->setLaunched($autoLaunch);
                 $run->save();
                 $nbJobs++;
                 if ($autoLaunch) {
                     //launcher les builds
                     $run->launch($this->getJenkins(), $parameters);
                     $run->computeJobBuildNumber($this->getJenkins(), $this->getUser());
                 }
             }
             if (0 === $nbJobs) {
                 $this->getUser()->setFlash('info', sprintf('Build branch [%s] has been created', $runGroup->getLabel()));
             } else {
                 $label = 1 === $nbJobs ? 'Job has ' : 'Jobs have ';
                 $this->getUser()->setFlash('info', $label . ($autoLaunch ? "been launched" : "been registered in delayed list"));
             }
             $this->redirect($this->generateUrl('branch_view', $runGroup));
         }
     }
     $views = $this->getViews($this->getJenkins());
     $defaultView = $this->getJenkins()->getPrimaryView();
     $this->setVar('form', $form);
     $this->setVar('view_by_jobs', $this->buildViewByJobs($this->getJenkins()));
     $this->setVar('views', $views);
     $this->setVar('default_active_view', null === $defaultView ? null : $defaultView->getName());
 }