PluginProbe ʕ •ᴥ•ʔ
Advanced Custom Fields: Extended / 0.9.2.7
Advanced Custom Fields: Extended v0.9.2.7
0.9.2.7 0.9.2.6 0.9.2.5 0.8.6 0.8.6.1 0.8.6.3 0.8.6.5 0.8.6.6 0.8.6.7 0.8.6.8 0.8.6.9 0.8.7 0.8.7.1 0.8.7.2 0.8.7.3 0.8.7.4 0.8.7.5 0.8.7.6 0.8.8 0.8.8.1 0.8.8.10 0.8.8.11 0.8.8.2 0.8.8.3 0.8.8.4 0.8.8.5 0.8.8.6 0.8.8.7 0.8.8.8 0.8.8.9 0.8.9 0.8.9.1 0.8.9.2 0.8.9.3 0.8.9.4 0.8.9.5 0.9 0.9.0.1 0.9.0.2 0.9.0.3 0.9.0.4 0.9.0.5 0.9.0.6 0.9.0.7 0.9.0.8 0.9.0.9 0.9.1 0.9.1.1 0.9.2 0.9.2.1 0.9.2.2 0.9.2.3 0.9.2.4 trunk 0.5 0.5.1 0.5.2 0.5.2.1 0.5.2.3 0.5.5 0.5.5.1 0.5.8 0.5.8.1 0.6 0.6.0.1 0.6.0.2 0.6.1 0.6.3 0.6.5 0.6.7 0.6.7.2 0.7 0.7.0.3 0.7.5 0.7.5.5 0.7.8 0.7.9 0.7.9.3 0.7.9.4 0.7.9.9.8 0.7.9.9.9 0.8 0.8.1 0.8.2 0.8.3 0.8.3.1 0.8.4 0.8.4.1 0.8.4.5 0.8.4.6 0.8.5 0.8.5.5
acf-extended / includes / fields-settings / permissions.php
acf-extended / includes / fields-settings Last commit date
bidirectional.php 3 months ago choices-label.php 3 months ago data.php 3 months ago instructions.php 3 months ago permissions.php 3 months ago settings.php 3 months ago validation.php 3 months ago
permissions.php
113 lines
1 <?php
2
3 if(!defined('ABSPATH')){
4 exit;
5 }
6
7 if(!class_exists('acfe_permissions')):
8
9 class acfe_permissions{
10
11 /**
12 * construct
13 */
14 function __construct(){
15
16 // hook name
17 $render_field_settings = acfe_is_acf('6.0') ? 'render_field_validation_settings' : 'render_field_settings';
18
19 // loop field types
20 foreach(acf_get_field_types() as $field_type){
21 if(!empty($field_type->name)){
22 add_action("acf/{$render_field_settings}/type={$field_type->name}", array($this, 'render_field_settings'));
23 }
24 }
25
26 add_filter('acf/prepare_field', array($this, 'prepare_field'));
27
28 }
29
30
31 /**
32 * render_field_settings
33 *
34 * @param $field
35 *
36 * @return void
37 */
38 function render_field_settings($field){
39
40 $field_type = acf_get_field_type($field['type']);
41
42 if(
43 acf_is_filter_enabled('acfe/field_group/advanced')
44 || acfe_get($field, 'acfe_permissions')
45 || ($field_type && !empty($field_type->defaults['acfe_permissions']))
46 ){
47
48 // render permissions setting
49 acf_render_field_setting($field, array(
50 'label' => __('Permissions', 'acfe'),
51 'name' => 'acfe_permissions',
52 'key' => 'acfe_permissions',
53 'instructions' => __('Restrict user roles that are allowed to view and edit this field', 'acfe'),
54 'type' => 'checkbox',
55 'required' => false,
56 'default_value' => false,
57 'choices' => acfe_get_roles(),
58 'layout' => 'horizontal',
59 ));
60
61 }
62
63 }
64
65
66 /**
67 * prepare_field
68 *
69 * @param $field
70 *
71 * @return false|mixed
72 */
73 function prepare_field($field){
74
75 // default var
76 $target_field = $field;
77
78 // exception: clone field
79 if(!empty($field['_clone']) && acf_is_field_key($field['_clone'])){
80
81 // get clone field
82 $clone_field = acf_get_field($field['_clone']);
83
84 // validate
85 if(!empty($clone_field)){
86 $target_field = $clone_field;
87 }
88
89 }
90
91 // empty permissions: always render field
92 if(empty($target_field['acfe_permissions'])){
93 return $field;
94 }
95
96 // check current user permissions
97 $has_role = acfe_has_current_user_role($target_field['acfe_permissions']);
98
99 // bail early
100 if(!$has_role){
101 return false;
102 }
103
104 // return field
105 return $field;
106
107 }
108
109 }
110
111 new acfe_permissions();
112
113 endif;