2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								< ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ***** BEGIN LICENSE BLOCK *****
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# This file is part of InDefero, an open source project management application.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Copyright (C) 2008 Céondo Ltd and contributors.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# InDefero is free software; you can redistribute it and/or modify
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# it under the terms of the GNU General Public License as published by
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# the Free Software Foundation; either version 2 of the License, or
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# (at your option) any later version.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# InDefero is distributed in the hope that it will be useful,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# GNU General Public License for more details.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# You should have received a copy of the GNU General Public License
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# along with this program; if not, write to the Free Software
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								#
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ***** END LICENSE BLOCK ***** */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Create  a  project . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  A  kind  of  merge  of  the  member  configuration ,  overview  and  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  former  source  tab . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class  IDF_Form_Admin_ProjectCreate  extends  Pluf_Form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  initFields ( $extra = array ()) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $choices  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $options  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                         'git'  =>  __ ( 'git' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                         'svn'  =>  __ ( 'Subversion' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                         'mercurial'  =>  __ ( 'mercurial' ), 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                         'mtn'  =>  __ ( 'monotone' ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                         ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( Pluf :: f ( 'allowed_scm' ,  array ())  as  $key  =>  $class )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $choices [ $options [ $key ]]  =  $key ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'name' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      array ( 'required'  =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'label'  =>  __ ( 'Name' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 22:11:23 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'private_project' ]  =  new  Pluf_Form_Field_Boolean ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Private project' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget'  =>  'Pluf_Form_Widget_CheckboxInput' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'shortname' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      array ( 'required'  =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'label'  =>  __ ( 'Shortname' ), 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 22:11:23 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                            'initial'  =>  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-27 05:45:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                                            'help_text'  =>  __ ( 'It must be unique for each project and composed only of letters, digits and dash (-) like "my-project".' ), 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                            )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'scm' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Repository type' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  'git' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget_attrs'  =>  array ( 'choices'  =>  $choices ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget'  =>  'Pluf_Form_Widget_SelectInput' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'svn_remote_url' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Remote Subversion repository' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget_attrs'  =>  array ( 'size'  =>  '30' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'svn_username' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Repository username' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget_attrs'  =>  array ( 'size'  =>  '15' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'svn_password' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Repository password' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget'  =>  'Pluf_Form_Widget_PasswordInput' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'mtn_master_branch' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                    array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'label'  =>  __ ( 'Master branch' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'widget'  =>  'Pluf_Form_Widget_Input' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'help_text'  =>  __ ( 'This should be a world-wide unique identifier for your project. A reverse DNS notation like "com.my-domain.my-project" is a good idea.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'owners' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'label'  =>  __ ( 'Project owners' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'initial'  =>  $extra [ 'user' ] -> login , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'widget'  =>  'Pluf_Form_Widget_TextareaInput' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'widget_attrs'  =>  array ( 'rows'  =>  5 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                    'cols'  =>  40 ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $this -> fields [ 'members' ]  =  new  Pluf_Form_Field_Varchar ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                      array ( 'required'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'label'  =>  __ ( 'Project members' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'initial'  =>  '' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'widget_attrs'  =>  array ( 'rows'  =>  7 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                                                    'cols'  =>  40 ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            'widget'  =>  'Pluf_Form_Widget_TextareaInput' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            )); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-12 14:57:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ signal ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  IDF_Form_Admin_ProjectCreate :: initFields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ sender ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  IDF_Form_Admin_ProjectCreate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ description ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  This  signal  allows  an  application  to  modify  the  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  for  the  creation  of  a  project . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ parameters ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  array ( 'form'  =>  $form ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $params  =  array ( 'form'  =>  $this ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Pluf_Signal :: send ( 'IDF_Form_Admin_ProjectCreate::initFields' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'IDF_Form_Admin_ProjectCreate' ,  $params ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-05-26 13:33:00 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  function  clean_owners () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  IDF_Form_MembersConf :: checkBadLogins ( $this -> cleaned_data [ 'owners' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  clean_members () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  IDF_Form_MembersConf :: checkBadLogins ( $this -> cleaned_data [ 'members' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  clean_svn_remote_url () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-12 14:57:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $this -> cleaned_data [ 'svn_remote_url' ]  =  ( ! empty ( $this -> cleaned_data [ 'svn_remote_url' ]))  ?  $this -> cleaned_data [ 'svn_remote_url' ]  :  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $url  =  trim ( $this -> cleaned_data [ 'svn_remote_url' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( strlen ( $url )  ==  0 )  return  $url ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // we accept only starting with http(s):// to avoid people
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        // trying to access the local filesystem.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! preg_match ( '#^(http|https)://#' ,  $url ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'Only a remote repository available throught http or https are allowed. For example "http://somewhere.com/svn/trunk".' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $url ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    public  function  clean_mtn_master_branch () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $mtn_master_branch  =  mb_strtolower ( $this -> cleaned_data [ 'mtn_master_branch' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! preg_match ( '/^([\w\d]+([-][\w\d]+)*)(\.[\w\d]+([-][\w\d]+)*)*$/' ,  $mtn_master_branch ))  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'This master branch contains illegal characters, please use only letters, digits, dashs and dots as separators.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'vkey=%s AND vdesc=%s' ,  array ( " mtn_master_branch " ,  $mtn_master_branch )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $l  =  Pluf :: factory ( 'IDF_Conf' ) -> getList ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $l -> count ()  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'This master branch is already used. Please select another one.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $mtn_master_branch ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    public  function  clean_shortname () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-22 20:50:54 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $shortname  =  mb_strtolower ( $this -> cleaned_data [ 'shortname' ]); 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 17:26:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( preg_match ( '/[^\-A-Za-z0-9]/' ,  $shortname ))  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-27 05:45:30 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'This shortname contains illegal characters, please use only letters, digits and dash (-).' )); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 17:26:52 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        if  ( mb_substr ( $shortname ,  0 ,  1 )  ==  '-' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'The shortname cannot start with the dash (-) character.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( mb_substr ( $shortname ,  - 1 )  ==  '-' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'The shortname cannot end with the dash (-) character.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $sql  =  new  Pluf_SQL ( 'shortname=%s' ,  array ( $shortname )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $l  =  Pluf :: factory ( 'IDF_Project' ) -> getList ( array ( 'filter' => $sql -> gen ())); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $l -> count ()  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Pluf_Form_Invalid ( __ ( 'This shortname is already used. Please select another one.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $shortname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  clean () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $this -> cleaned_data [ 'scm' ]  !=  'svn' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            foreach  ( array ( 'svn_remote_url' ,  'svn_username' ,  'svn_password' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                     as  $key )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                $this -> cleaned_data [ $key ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( $this -> cleaned_data [ 'scm' ]  !=  'mtn' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            $this -> cleaned_data [ 'mtn_master_branch' ]  =  '' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-12 14:57:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ signal ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  IDF_Form_Admin_ProjectCreate :: clean 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ sender ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  IDF_Form_Admin_ProjectCreate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ description ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  This  signal  allows  an  application  to  clean  the  form 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  for  the  creation  of  a  project . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  [ parameters ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         *  array ( 'cleaned_data'  =>  $cleaned_data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $params  =  array ( 'cleaned_data'  =>  $this -> cleaned_data ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        Pluf_Signal :: send ( 'IDF_Form_Admin_ProjectCreate::clean' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                          'IDF_Form_Admin_ProjectCreate' ,  $params ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        return  $this -> cleaned_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    public  function  save ( $commit = true ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        if  ( ! $this -> isValid ())  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								            throw  new  Exception ( __ ( 'Cannot save the model from an invalid form.' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $project  =  new  IDF_Project (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $project -> name  =  $this -> cleaned_data [ 'name' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $project -> shortname  =  $this -> cleaned_data [ 'shortname' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 22:11:23 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $project -> private  =  $this -> cleaned_data [ 'private_project' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-01 14:44:39 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $project -> description  =  __ ( 'Click on the Project Management tab to set the description of your project.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        $project -> create (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $conf  =  new  IDF_Conf (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $conf -> setProject ( $project ); 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        $keys  =  array ( 'scm' ,  'svn_remote_url' ,  'svn_username' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                      'svn_password' ,  'mtn_master_branch' ); 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								        foreach  ( $keys  as  $key )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								            $this -> cleaned_data [ $key ]  =  ( ! empty ( $this -> cleaned_data [ $key ]))  ? 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-12 14:57:09 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								                $this -> cleaned_data [ $key ]  :  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								            $conf -> setVal ( $key ,  $this -> cleaned_data [ $key ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $project -> created (); 
							 
						 
					
						
							
								
									
										
										
										
											2010-04-27 00:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								        IDF_Form_MembersConf :: updateMemberships ( $project , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 00:36:27 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								                                                $this -> cleaned_data ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        $project -> membershipsUpdated (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        return  $project ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}