added a new configuration item 'email_sender'
enhanced the code review controller to send a email when a new review message is inserted
This commit is contained in:
		| @ -252,6 +252,11 @@ cloc_command_path =  "@CFGDIR@/cloc.pl" | |||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| code_folder_readme = "README.wiki,README.txt,README" | code_folder_readme = "README.wiki,README.txt,README" | ||||||
|  |  | ||||||
|  | ;------------------------------------------------------------------------------ | ||||||
|  | ; Email address to use when sending notification emails | ||||||
|  | ;------------------------------------------------------------------------------ | ||||||
|  | email_sender = "" | ||||||
|  |  | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| ; Codepot sets this revision property to assign a tag to a specific revision.  | ; Codepot sets this revision property to assign a tag to a specific revision.  | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| @ -287,3 +292,4 @@ svn_restriction_allowed_subdir_depth_max = "0" | |||||||
| ; Set it to an empty string to allow all users. | ; Set it to an empty string to allow all users. | ||||||
| ;------------------------------------------------------------------------------ | ;------------------------------------------------------------------------------ | ||||||
| codepot_user_executor = "root" | codepot_user_executor = "root" | ||||||
|  |  | ||||||
|  | |||||||
| @ -553,7 +553,8 @@ class Code extends Controller | |||||||
| 					if ($this->form_validation->run()) | 					if ($this->form_validation->run()) | ||||||
| 					{ | 					{ | ||||||
| 						$review_comment = $this->input->post('new_review_comment'); | 						$review_comment = $this->input->post('new_review_comment'); | ||||||
| 						if ($this->code_review->insertReview ($projectid, $rev, $login['id'], $review_comment) === FALSE) | 						$review_sno = $this->code_review->insertReview ($projectid, $rev, $login['id'], $review_comment); | ||||||
|  | 						if ($review_sno === FALSE) | ||||||
| 						{ | 						{ | ||||||
| 							$data['popup_error_message'] = 'Cannot add code review comment'; | 							$data['popup_error_message'] = 'Cannot add code review comment'; | ||||||
| 						} | 						} | ||||||
| @ -561,6 +562,13 @@ class Code extends Controller | |||||||
| 						{ | 						{ | ||||||
| 							// this is a hack to clear form data upon success | 							// this is a hack to clear form data upon success | ||||||
| 							$this->form_validation->_field_data = array(); | 							$this->form_validation->_field_data = array(); | ||||||
|  |  | ||||||
|  | 							// TODO: message localization | ||||||
|  | 							$email_subject =  sprintf ('New review message #%d by %s in %s', $review_sno, $login['id'], $projectid); | ||||||
|  | 							$email_message = 'See ' . current_url(); | ||||||
|  | 							$this->projects->emailMessageToMembers ( | ||||||
|  | 								$projectid, $this->login, $email_subject, $email_message | ||||||
|  | 							); | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 					else | 					else | ||||||
|  | |||||||
| @ -72,8 +72,7 @@ class DbLoginModel extends LoginModel | |||||||
|  |  | ||||||
| 	function changePassword ($userid, $passwd) | 	function changePassword ($userid, $passwd) | ||||||
| 	{ | 	{ | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_begin (); | ||||||
| 		$this->db->trans_complete (); |  | ||||||
|  |  | ||||||
| 		$this->db->where ('userid', $userid); | 		$this->db->where ('userid', $userid); | ||||||
| 		$this->db->set ('passwd', format_password($passwd,5)); | 		$this->db->set ('passwd', format_password($passwd,5)); | ||||||
| @ -91,8 +90,28 @@ class DbLoginModel extends LoginModel | |||||||
|  |  | ||||||
| 	function queryUserInfo ($userid) | 	function queryUserInfo ($userid) | ||||||
| 	{ | 	{ | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
|  | 		$this->db->select ('email'); | ||||||
|  | 		$this->db->where ('userid', $userid); | ||||||
|  | 		$query = $this->db->get ('user_account'); | ||||||
|  |  | ||||||
|  | 		if ($this->db->trans_status() == FALSE) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->trans_complete (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$result = $query->result (); | ||||||
|  | 		if (empty($result)) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->trans_complete (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		$user['id'] = $userid; | 		$user['id'] = $userid; | ||||||
| 		$user['email'] = ''; | 		$user['email'] = $result[0]->email; | ||||||
|  |  | ||||||
| 		return $user; | 		return $user; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -110,8 +110,9 @@ class LdapLoginModel extends LoginModel | |||||||
|  |  | ||||||
| 	function queryUserInfo ($userid) | 	function queryUserInfo ($userid) | ||||||
| 	{ | 	{ | ||||||
| 		$ldap = @ldap_connect ( | 		//$ldap = @ldap_connect ( | ||||||
| 			CODEPOT_LDAP_SERVER_HOST, CODEPOT_LDAP_SERVER_PORT); | 		//	CODEPOT_LDAP_SERVER_HOST, CODEPOT_LDAP_SERVER_PORT); | ||||||
|  | 		$ldap = @ldap_connect (CODEPOT_LDAP_SERVER_URI); | ||||||
| 		if ($ldap === FALSE) | 		if ($ldap === FALSE) | ||||||
| 		{ | 		{ | ||||||
| 			$this->setErrorMessage ("Can't connect to LDAP server"); | 			$this->setErrorMessage ("Can't connect to LDAP server"); | ||||||
|  | |||||||
| @ -559,6 +559,34 @@ class ProjectModel extends Model | |||||||
|  |  | ||||||
| 		return $out; | 		return $out; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function emailMessageToMembers ($projectid, $login_model, $subject, $message) | ||||||
|  | 	{ | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  | 		$this->db->select ('userid'); | ||||||
|  | 		$this->db->where ('projectid', $projectid); | ||||||
|  | 		$query = $this->db->get ('project_membership'); | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  | 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||||
|  |  | ||||||
|  | 		$recipients = ''; | ||||||
|  | 		foreach ($query->result() as $v) | ||||||
|  | 		{ | ||||||
|  | 			$m = $login_model->queryUserInfo ($v->userid); | ||||||
|  | 			if ($m !== FALSE && $m['email'] != '') | ||||||
|  | 			{ | ||||||
|  | 				if (!empty($recipients)) $recipients .= ', '; | ||||||
|  | 				$recipients .= $m['email']; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$additional_headers = ''; | ||||||
|  | 		if (CODEPOT_EMAIL_SENDER != '') $additional_headers .= 'From: ' . CODEPOT_EMAIL_SENDER . "\r\n"; | ||||||
|  |  | ||||||
|  | 		if (empty($recipients)) return FALSE; | ||||||
|  | 		mail ($recipients, $subject, wordwrap($message, 70, "\r\n"), $additional_headers); | ||||||
|  | 		return TRUE; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -84,8 +84,9 @@ function load_ini ($file) | |||||||
| 		array ('footer',                       'string',      ''), | 		array ('footer',                       'string',      ''), | ||||||
| 		array ('cloc_command_path',            'string',      CODEPOT_CFG_DIR.'/cloc.pl'), | 		array ('cloc_command_path',            'string',      CODEPOT_CFG_DIR.'/cloc.pl'), | ||||||
| 		array ('code_folder_readme',           'string',     'README'), | 		array ('code_folder_readme',           'string',     'README'), | ||||||
| 		array ('svn_tag_property',             'string',     'codepot:tag'), | 		array ('email_sender',                 'string',     ''), | ||||||
|  |  | ||||||
|  | 		array ('svn_tag_property',             'string',     'codepot:tag'), | ||||||
|  |  | ||||||
| 		// these items are not used by php but by subersion hooks written in perl. | 		// these items are not used by php but by subersion hooks written in perl. | ||||||
| 		array ('svn_read_access',                          'string',      'member'), | 		array ('svn_read_access',                          'string',      'member'), | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user