diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/adm/style/acp_profile.html | 1 | ||||
| -rw-r--r-- | phpBB/docs/events.md | 7 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_profile.php | 53 | 
3 files changed, 59 insertions, 2 deletions
diff --git a/phpBB/adm/style/acp_profile.html b/phpBB/adm/style/acp_profile.html index 64bc3df09b..3ce2d9471d 100644 --- a/phpBB/adm/style/acp_profile.html +++ b/phpBB/adm/style/acp_profile.html @@ -79,6 +79,7 @@  			<dt><label for="field_hide">{L_HIDE_PROFILE_FIELD}{L_COLON}</label><br /><span>{L_HIDE_PROFILE_FIELD_EXPLAIN}</span></dt>  			<dd><input type="checkbox" class="radio" id="field_hide" name="field_hide" value="1"<!-- IF S_FIELD_HIDE --> checked="checked"<!-- ENDIF --> /></dd>  		</dl> +		<!-- EVENT acp_profile_contact_before -->  		<dl>  			<dt><label for="field_is_contact">{L_FIELD_IS_CONTACT}{L_COLON}</label><br /><span>{L_FIELD_IS_CONTACT_EXPLAIN}</span></dt>  			<dd><input type="checkbox" class="radio" id="field_is_contact" name="field_is_contact" value="1"<!-- IF S_FIELD_CONTACT --> checked="checked"<!-- ENDIF --> /></dd> diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 8086bc9f43..09c498ca86 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -133,6 +133,13 @@ acp_posting_buttons_before  * Since: 3.1.0-b4  * Purpose: Add content before BBCode posting buttons in the ACP +acp_profile_contact_before +=== +* Locations: +    + adm/style/acp_profile.html +* Since: 3.1.5-a4 +* Purpose: Add extra options to custom profile field configuration in the ACP +  acp_ranks_edit_after  ===  * Locations: diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 97c1f62077..09236f4404 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -31,7 +31,7 @@ class acp_profile  	{  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; -		global $request, $phpbb_container; +		global $request, $phpbb_container, $phpbb_dispatcher;  		include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -369,6 +369,23 @@ class acp_profile  					'field_is_contact',  				); +				/** +				* Event to add initialization for new profile field table fields +				* +				* @event core.acp_profile_create_edit_init +				* @var	string	action			create|edit +				* @var	int		step			Configuration step (1|2|3) +				* @var	bool	submit			Form has been submitted +				* @var	bool	save			Configuration should be saved +				* @var	string	field_type		Type of the field we are dealing with +				* @var	array	field_row		Array of data about the field +				* @var	array	exclude			Array of excluded fields by step +				* @var	array	visibility_ary	Array of fields that are visibility related +				* @since 3.1.5-a4 +				*/ +				$vars = array('action', 'step', 'submit', 'save', 'field_type', 'field_row', 'exclude', 'visibility_ary'); +				extract($phpbb_dispatcher->trigger_event('core.acp_profile_create_edit_init', compact($vars))); +  				$options = $profile_field->prepare_options_form($exclude, $visibility_ary);  				$cp->vars['field_ident']		= ($action == 'create' && $step == 1) ? utf8_clean_string(request_var('field_ident', $field_row['field_ident'], true)) : request_var('field_ident', $field_row['field_ident']); @@ -644,6 +661,24 @@ class acp_profile  					break;  				} +				$field_data = $cp->vars; +				/** +				* Event to add template variables for new profile field table fields +				* +				* @event core.acp_profile_create_edit_after +				* @var	string	action			create|edit +				* @var	int		step			Configuration step (1|2|3) +				* @var	bool	submit			Form has been submitted +				* @var	bool	save			Configuration should be saved +				* @var	string	field_type		Type of the field we are dealing with +				* @var	array	field_data		Array of data about the field +				* @var	array	s_hidden_fields	Array of hidden fields in case this needs modification +				* @var	array	options			Array of options specific to this step +				* @since 3.1.5-a4 +				*/ +				$vars = array('action', 'step', 'submit', 'save', 'field_type', 'field_data', 's_hidden_fields', 'options'); +				extract($phpbb_dispatcher->trigger_event('core.acp_profile_create_edit_after', compact($vars))); +  				$template->assign_vars(array(  					'S_HIDDEN_FIELDS'	=> $s_hidden_fields)  				); @@ -810,7 +845,7 @@ class acp_profile  	*/  	function save_profile_field(&$cp, $field_type, $action = 'create')  	{ -		global $db, $config, $user, $phpbb_container; +		global $db, $config, $user, $phpbb_container, $phpbb_dispatcher;  		$field_id = request_var('field_id', 0); @@ -852,6 +887,20 @@ class acp_profile  			'field_contact_url'		=> $cp->vars['field_contact_url'],  		); +		$field_data = $cp->vars; +		/** +		* Event to modify profile field configuration data before saving to database +		* +		* @event core.acp_profile_create_edit_before_save +		* @var	string	action			create|edit +		* @var	string	field_type		Type of the field we are dealing with +		* @var	array	field_data		Array of data about the field +		* @var	array	profile_fields	Array of fields to be sent to the database +		* @since 3.1.5-a4 +		*/ +		$vars = array('action', 'field_type', 'field_data', 'profile_fields'); +		extract($phpbb_dispatcher->trigger_event('core.acp_profile_create_edit_before_save', compact($vars))); +  		if ($action == 'create')  		{  			$profile_fields += array(  | 
