From aaeda894ae5af41cdf5c0ab6f7fa5bf2ad4a9c01 Mon Sep 17 00:00:00 2001 From: Dan Cryer Date: Thu, 16 May 2013 00:33:12 +0100 Subject: [PATCH] Fixing the add / edit project form to make the reference field validation more intelligent. Fixes #19 --- PHPCI/Controller/ProjectController.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/PHPCI/Controller/ProjectController.php b/PHPCI/Controller/ProjectController.php index aae1bbb1..396e5bad 100644 --- a/PHPCI/Controller/ProjectController.php +++ b/PHPCI/Controller/ProjectController.php @@ -222,7 +222,27 @@ class ProjectController extends b8\Controller $field = new Form\Element\Text('reference'); $field->setRequired(true); - $field->setPattern('[a-zA-Z0-9_\-\/]+'); + $field->setValidator(function($val) use ($values) + { + $type = $values['type']; + + switch($type) { + case 'local': + if(!is_dir($val)) { + throw new \Exception('The path you specified does not exist.'); + } + break; + + case 'github': + case 'bitbucket': + if(!preg_match('/^[a-zA-Z0-9_\-]+\/[a-zA-Z0-9_\-]+$/', $val)) { + throw new \Exception('Repository name must be in the format "owner/repo".'); + } + break; + } + + return true; + }); $field->setLabel('Repository Name / URL (Remote) or Path (Local)'); $field->setClass('span4'); $form->addField($field);