-
Notifications
You must be signed in to change notification settings - Fork 0
/
userfields.plugin.php
98 lines (88 loc) · 2.79 KB
/
userfields.plugin.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
/**
* User Fields - A plugin to display additional fields on the user page
*
* echo $post->author->info->userfield_{your field}
**/
class userfields extends Plugin
{
/**
* Add actions to the plugin page for this plugin
*
* @param array $actions An array of actions that apply to this plugin
* @param string $plugin_id The string id of a plugin, generated by the system
* @return array The array of actions to attach to the specified $plugin_id
*/
public function filter_plugin_config($actions, $plugin_id)
{
if ( $plugin_id == $this->plugin_id() ){
$actions[ 'Configure' ] = _t( 'Configure' );
}
return $actions;
}
/**
* Respond to the user selecting an action on the plugin page
*
* @param string $plugin_id The string id of the acted-upon plugin
* @param string $action The action string supplied via the filter_plugin_config hook
*/
public function action_plugin_ui($plugin_id, $action)
{
if ($plugin_id == $this->plugin_id()) {
if ( $action == 'Configure' ) {
$ui = new FormUI('userfields');
$ui->append('textmulti', 'fields', 'userfields__fields' , _t( 'Additional User Fields:' ) );
$ui->append('submit', 'submit', 'Submit');
$ui->out();
}
}
}
/**
* Add additional controls to the User page
*
* @param FormUI $form The form that is used on the User page
* @param Post $post The user being edited
**/
public function action_form_user( $form, $edit_user )
{
$fields = Options::get('userfields__fields' );
if(!is_array($fields) || count($fields) == 0) {
return;
}
$userfields = $form->append( 'wrapper', 'userfields', 'User Fields');
$userfields->class = 'container settings';
$userfields->append( 'static', 'userfields', _t( '<h2>Additional fields</h2>' ) );
foreach($fields as $field) {
$fieldname = "userfield_{$field}";
$customfield = $userfields->append( 'text', $fieldname, 'null:null', $field );
$customfield->value = isset( $edit_user->info->{$fieldname} ) ? $edit_user->info->{$fieldname} : '';
$customfield->class[] = 'important item clear';
$customfield->template = 'optionscontrol_text';
}
$form->move_after( $userfields, $form->user_info );
}
/**
* Add the Additional User Fields to the list of valid field names.
* This causes adminhandler to recognize the fields and
* to set the userinfo record appropriately
**/
public function filter_adminhandler_post_user_fields( $fields )
{
$userfields = Options::get( 'userfields__fields' );
if ( !is_array($userfields) || count( $userfields ) == 0 ) {
return;
}
foreach($userfields as $field) {
$fields[ $field ] = "userfield_{$field}";
}
return $fields;
}
/**
* Add update beacon support
**/
public function action_update_check()
{
Update::add( 'User Fields', 'a847f8d0-e63e-4501-9bd0-e9a0013c0e2b', $this->info->version );
}
}
?>