Completed
Push — develop ( 406a4f...613d21 )
by Zack
17:44
created
includes/class-gravityview-change-entry-creator.php 1 patch
Indentation   +209 added lines, -209 removed lines patch added patch discarded remove patch
@@ -5,239 +5,239 @@
 block discarded – undo
5 5
  */
6 6
 class GravityView_Change_Entry_Creator {
7 7
 
8
-    function __construct() {
9
-
10
-    	/**
11
-    	 * @since  1.5.1
12
-    	 */
13
-    	add_action('gform_user_registered', array( $this, 'assign_new_user_to_lead'), 10, 4 );
14
-
15
-    	// ONLY ADMIN FROM HERE ON.
16
-    	if( !is_admin() ) { return; }
17
-
18
-	    /**
19
-         * @filter `gravityview_disable_change_entry_creator` Disable the Change Entry Creator functionality
20
-	     * @since 1.7.4
21
-	     * @param boolean $disable Disable the Change Entry Creator functionality. Default: false.
22
-	     */
23
-	    if( apply_filters('gravityview_disable_change_entry_creator', false ) ) {
24
-		    return;
25
-	    }
26
-
27
-        /**
28
-         * Use `init` to fix bbPress warning
29
-         * @see https://bbpress.trac.wordpress.org/ticket/2309
30
-         */
31
-    	add_action('init', array( $this, 'load'), 100 );
32
-
33
-    	add_action('plugins_loaded', array( $this, 'prevent_conflicts') );
34
-
35
-    }
36
-
37
-    /**
38
-     * When an user is created using the User Registration add-on, assign the entry to them
39
-     *
40
-     * @since  1.5.1
41
-     * @uses RGFormsModel::update_lead_property() Modify the entry `created_by` field
42
-     * @param  int $user_id  WordPress User ID
43
-     * @param  array $config   User registration feed configuration
44
-     * @param  array  $entry     GF Entry array
45
-     * @param  string $password User password
46
-     * @return void
47
-     */
48
-    function assign_new_user_to_lead( $user_id, $config, $entry = array(), $password = '' ) {
49
-
50
-    	/**
51
-    	 * Disable assigning the new user to the entry by returning false.
52
-    	 * @param  int $user_id  WordPress User ID
53
-	     * @param  array $config   User registration feed configuration
54
-	     * @param  array  $entry     GF Entry array
55
-    	 */
56
-    	$assign_to_lead = apply_filters( 'gravityview_assign_new_user_to_entry', true, $user_id, $config, $entry );
57
-
58
-    	// If filter returns false, do not process
59
-    	if( empty( $assign_to_lead ) ) {
60
-    		return;
61
-    	}
62
-
63
-    	// Update the entry. The `false` prevents checking Akismet; `true` disables the user updated hook from firing
64
-    	$result = RGFormsModel::update_entry_property( (int) $entry['id'], 'created_by', (int) $user_id, false, true );
65
-
66
-    	if ( false === $result ) {
67
-    		$status = __('Error', 'gravityview');
68
-    		global $wpdb;
69
-		    $note = sprintf( '%s: Failed to assign User ID #%d as the entry creator (Last database error: "%s")', $status, $user_id, $wpdb->last_error );
70
-    	} else {
71
-    		$status = __('Success', 'gravityview');
72
-    	    $note = sprintf( _x('%s: Assigned User ID #%d as the entry creator.', 'First parameter: Success or error of the action. Second: User ID number', 'gravityview'), $status, $user_id );
73
-    	}
74
-
75
-    	gravityview()->log->debug( 'GravityView_Change_Entry_Creator[assign_new_user_to_lead] - {note}', array( 'note' => $note ) );
76
-
77
-	    /**
78
-	     * @filter `gravityview_disable_change_entry_creator_note` Disable adding a note when changing the entry creator
79
-	     * @since 1.21.5
80
-	     * @param boolean $disable Disable the Change Entry Creator note. Default: false.
81
-	     */
82
-	    if( apply_filters('gravityview_disable_change_entry_creator_note', false ) ) {
83
-		    return;
84
-	    }
85
-
86
-        GravityView_Entry_Notes::add_note( $entry['id'], -1, 'GravityView', $note, 'gravityview' );
87
-
88
-    }
89
-
90
-    /**
91
-     * Disable previous functionality; use this one as the canonical.
92
-     * @return void
93
-     */
94
-    function prevent_conflicts() {
95
-
96
-    	// Plugin that was provided here:
97
-    	// @link https://gravityview.co/support/documentation/201991205/
98
-    	remove_action("gform_entry_info", 'gravityview_change_entry_creator_form', 10 );
99
-    	remove_action("gform_after_update_entry", 'gravityview_update_entry_creator', 10 );
100
-
101
-    }
102
-
103
-    /**
104
-     * @since  3.6.3
105
-     * @return void
106
-     */
107
-    function load() {
108
-
109
-    	// Does GF exist?
110
-        if( !class_exists('GFCommon') ) {
111
-            return;
112
-        }
113
-
114
-        // Can the user edit entries?
115
-        if( ! GVCommon::has_cap( array( 'gravityforms_edit_entries', 'gravityview_edit_entries' ) ) ) {
116
-            return;
117
-        }
118
-
119
-        // If screen mode isn't set, then we're in the wrong place.
120
-        if( empty( $_REQUEST['screen_mode'] ) ) {
121
-            return;
122
-        }
123
-
124
-        // Now, no validation is required in the methods; let's hook in.
125
-        add_action('admin_init', array( &$this, 'set_screen_mode' ) );
126
-
127
-        add_action("gform_entry_info", array( &$this, 'add_select' ), 10, 2);
128
-
129
-        add_action("gform_after_update_entry", array( &$this, 'update_entry_creator' ), 10, 2);
130
-
131
-    }
132
-
133
-    /**
134
-     * Allows for edit links to work with a link instead of a form (GET instead of POST)
135
-     * @return void
136
-     */
137
-    function set_screen_mode() {
138
-
139
-    	// If $_GET['screen_mode'] is set to edit, set $_POST value
140
-        if( \GV\Utils::_GET( 'screen_mode' ) === 'edit' ) {
141
-            $_POST["screen_mode"] = 'edit';
142
-        }
143
-
144
-    }
145
-
146
-    /**
147
-     * When the entry creator is changed, add a note to the entry
148
-     * @param  array $form   GF entry array
149
-     * @param  int $entry_id Entry ID
150
-     * @return void
151
-     */
152
-    function update_entry_creator($form, $entry_id) {
153
-            global $current_user;
8
+	function __construct() {
9
+
10
+		/**
11
+		 * @since  1.5.1
12
+		 */
13
+		add_action('gform_user_registered', array( $this, 'assign_new_user_to_lead'), 10, 4 );
14
+
15
+		// ONLY ADMIN FROM HERE ON.
16
+		if( !is_admin() ) { return; }
17
+
18
+		/**
19
+		 * @filter `gravityview_disable_change_entry_creator` Disable the Change Entry Creator functionality
20
+		 * @since 1.7.4
21
+		 * @param boolean $disable Disable the Change Entry Creator functionality. Default: false.
22
+		 */
23
+		if( apply_filters('gravityview_disable_change_entry_creator', false ) ) {
24
+			return;
25
+		}
26
+
27
+		/**
28
+		 * Use `init` to fix bbPress warning
29
+		 * @see https://bbpress.trac.wordpress.org/ticket/2309
30
+		 */
31
+		add_action('init', array( $this, 'load'), 100 );
32
+
33
+		add_action('plugins_loaded', array( $this, 'prevent_conflicts') );
34
+
35
+	}
36
+
37
+	/**
38
+	 * When an user is created using the User Registration add-on, assign the entry to them
39
+	 *
40
+	 * @since  1.5.1
41
+	 * @uses RGFormsModel::update_lead_property() Modify the entry `created_by` field
42
+	 * @param  int $user_id  WordPress User ID
43
+	 * @param  array $config   User registration feed configuration
44
+	 * @param  array  $entry     GF Entry array
45
+	 * @param  string $password User password
46
+	 * @return void
47
+	 */
48
+	function assign_new_user_to_lead( $user_id, $config, $entry = array(), $password = '' ) {
49
+
50
+		/**
51
+		 * Disable assigning the new user to the entry by returning false.
52
+		 * @param  int $user_id  WordPress User ID
53
+		 * @param  array $config   User registration feed configuration
54
+		 * @param  array  $entry     GF Entry array
55
+		 */
56
+		$assign_to_lead = apply_filters( 'gravityview_assign_new_user_to_entry', true, $user_id, $config, $entry );
57
+
58
+		// If filter returns false, do not process
59
+		if( empty( $assign_to_lead ) ) {
60
+			return;
61
+		}
62
+
63
+		// Update the entry. The `false` prevents checking Akismet; `true` disables the user updated hook from firing
64
+		$result = RGFormsModel::update_entry_property( (int) $entry['id'], 'created_by', (int) $user_id, false, true );
65
+
66
+		if ( false === $result ) {
67
+			$status = __('Error', 'gravityview');
68
+			global $wpdb;
69
+			$note = sprintf( '%s: Failed to assign User ID #%d as the entry creator (Last database error: "%s")', $status, $user_id, $wpdb->last_error );
70
+		} else {
71
+			$status = __('Success', 'gravityview');
72
+			$note = sprintf( _x('%s: Assigned User ID #%d as the entry creator.', 'First parameter: Success or error of the action. Second: User ID number', 'gravityview'), $status, $user_id );
73
+		}
74
+
75
+		gravityview()->log->debug( 'GravityView_Change_Entry_Creator[assign_new_user_to_lead] - {note}', array( 'note' => $note ) );
76
+
77
+		/**
78
+		 * @filter `gravityview_disable_change_entry_creator_note` Disable adding a note when changing the entry creator
79
+		 * @since 1.21.5
80
+		 * @param boolean $disable Disable the Change Entry Creator note. Default: false.
81
+		 */
82
+		if( apply_filters('gravityview_disable_change_entry_creator_note', false ) ) {
83
+			return;
84
+		}
85
+
86
+		GravityView_Entry_Notes::add_note( $entry['id'], -1, 'GravityView', $note, 'gravityview' );
87
+
88
+	}
89
+
90
+	/**
91
+	 * Disable previous functionality; use this one as the canonical.
92
+	 * @return void
93
+	 */
94
+	function prevent_conflicts() {
95
+
96
+		// Plugin that was provided here:
97
+		// @link https://gravityview.co/support/documentation/201991205/
98
+		remove_action("gform_entry_info", 'gravityview_change_entry_creator_form', 10 );
99
+		remove_action("gform_after_update_entry", 'gravityview_update_entry_creator', 10 );
100
+
101
+	}
102
+
103
+	/**
104
+	 * @since  3.6.3
105
+	 * @return void
106
+	 */
107
+	function load() {
108
+
109
+		// Does GF exist?
110
+		if( !class_exists('GFCommon') ) {
111
+			return;
112
+		}
113
+
114
+		// Can the user edit entries?
115
+		if( ! GVCommon::has_cap( array( 'gravityforms_edit_entries', 'gravityview_edit_entries' ) ) ) {
116
+			return;
117
+		}
118
+
119
+		// If screen mode isn't set, then we're in the wrong place.
120
+		if( empty( $_REQUEST['screen_mode'] ) ) {
121
+			return;
122
+		}
123
+
124
+		// Now, no validation is required in the methods; let's hook in.
125
+		add_action('admin_init', array( &$this, 'set_screen_mode' ) );
126
+
127
+		add_action("gform_entry_info", array( &$this, 'add_select' ), 10, 2);
128
+
129
+		add_action("gform_after_update_entry", array( &$this, 'update_entry_creator' ), 10, 2);
130
+
131
+	}
132
+
133
+	/**
134
+	 * Allows for edit links to work with a link instead of a form (GET instead of POST)
135
+	 * @return void
136
+	 */
137
+	function set_screen_mode() {
138
+
139
+		// If $_GET['screen_mode'] is set to edit, set $_POST value
140
+		if( \GV\Utils::_GET( 'screen_mode' ) === 'edit' ) {
141
+			$_POST["screen_mode"] = 'edit';
142
+		}
143
+
144
+	}
145
+
146
+	/**
147
+	 * When the entry creator is changed, add a note to the entry
148
+	 * @param  array $form   GF entry array
149
+	 * @param  int $entry_id Entry ID
150
+	 * @return void
151
+	 */
152
+	function update_entry_creator($form, $entry_id) {
153
+			global $current_user;
154 154
 
155
-        // Update the entry
156
-        $created_by = absint( \GV\Utils::_POST( 'created_by') );
155
+		// Update the entry
156
+		$created_by = absint( \GV\Utils::_POST( 'created_by') );
157 157
 
158
-        RGFormsModel::update_lead_property( $entry_id, 'created_by', $created_by );
158
+		RGFormsModel::update_lead_property( $entry_id, 'created_by', $created_by );
159 159
 
160
-        // If the creator has changed, let's add a note about who it used to be.
161
-        $originally_created_by = \GV\Utils::_POST( 'originally_created_by' );
160
+		// If the creator has changed, let's add a note about who it used to be.
161
+		$originally_created_by = \GV\Utils::_POST( 'originally_created_by' );
162 162
 
163
-        // If there's no owner and there didn't used to be, keep going
164
-        if( empty( $originally_created_by ) && empty( $created_by ) ) {
165
-            return;
166
-        }
163
+		// If there's no owner and there didn't used to be, keep going
164
+		if( empty( $originally_created_by ) && empty( $created_by ) ) {
165
+			return;
166
+		}
167 167
 
168
-        // If the values have changed
169
-        if( absint( $originally_created_by ) !== absint( $created_by ) ) {
168
+		// If the values have changed
169
+		if( absint( $originally_created_by ) !== absint( $created_by ) ) {
170 170
 
171
-            $user_data = get_userdata($current_user->ID);
171
+			$user_data = get_userdata($current_user->ID);
172 172
 
173
-            $user_format = _x('%s (ID #%d)', 'The name and the ID of users who initiated changes to entry ownership', 'gravityview');
173
+			$user_format = _x('%s (ID #%d)', 'The name and the ID of users who initiated changes to entry ownership', 'gravityview');
174 174
 
175
-            $original_name = $created_by_name = esc_attr_x( 'No User', 'To show that the entry was unassigned from an actual user to no user.', 'gravityview');
175
+			$original_name = $created_by_name = esc_attr_x( 'No User', 'To show that the entry was unassigned from an actual user to no user.', 'gravityview');
176 176
 
177
-            if( !empty( $originally_created_by ) ) {
178
-                $originally_created_by_user_data = get_userdata($originally_created_by);
179
-                $original_name = sprintf( $user_format, $originally_created_by_user_data->display_name, $originally_created_by_user_data->ID );
180
-            }
177
+			if( !empty( $originally_created_by ) ) {
178
+				$originally_created_by_user_data = get_userdata($originally_created_by);
179
+				$original_name = sprintf( $user_format, $originally_created_by_user_data->display_name, $originally_created_by_user_data->ID );
180
+			}
181 181
 
182
-            if( !empty( $created_by ) ) {
183
-                $created_by_user_data =  get_userdata($created_by);
184
-                $created_by_name = sprintf( $user_format, $created_by_user_data->display_name, $created_by_user_data->ID );
185
-            }
182
+			if( !empty( $created_by ) ) {
183
+				$created_by_user_data =  get_userdata($created_by);
184
+				$created_by_name = sprintf( $user_format, $created_by_user_data->display_name, $created_by_user_data->ID );
185
+			}
186 186
 
187
-            GravityView_Entry_Notes::add_note( $entry_id, $current_user->ID, $user_data->display_name, sprintf( __('Changed entry creator from %s to %s', 'gravityview'), $original_name, $created_by_name ), 'note' );
188
-        }
187
+			GravityView_Entry_Notes::add_note( $entry_id, $current_user->ID, $user_data->display_name, sprintf( __('Changed entry creator from %s to %s', 'gravityview'), $original_name, $created_by_name ), 'note' );
188
+		}
189 189
 
190
-    }
190
+	}
191 191
 
192
-    /**
193
-     * Output the select to change the entry creator
194
-     * @param int $form_id GF Form ID
195
-     * @param array $entry    GF entry array
196
-     * @return void
197
-     */
198
-    function add_select($form_id, $entry ) {
192
+	/**
193
+	 * Output the select to change the entry creator
194
+	 * @param int $form_id GF Form ID
195
+	 * @param array $entry    GF entry array
196
+	 * @return void
197
+	 */
198
+	function add_select($form_id, $entry ) {
199 199
 
200
-        if( \GV\Utils::_POST( 'screen_mode' ) !== 'edit' ) {
201
-            return;
202
-        }
200
+		if( \GV\Utils::_POST( 'screen_mode' ) !== 'edit' ) {
201
+			return;
202
+		}
203 203
 
204
-        $created_by_id = \GV\Utils::get( $entry, 'created_by' );
204
+		$created_by_id = \GV\Utils::get( $entry, 'created_by' );
205 205
 
206
-        $users = GVCommon::get_users( 'change_entry_creator' );
206
+		$users = GVCommon::get_users( 'change_entry_creator' );
207 207
 
208
-        $is_created_by_in_users = wp_list_filter( $users, array( 'ID' => $created_by_id ) );
208
+		$is_created_by_in_users = wp_list_filter( $users, array( 'ID' => $created_by_id ) );
209 209
 
210
-        // Make sure that the entry creator is included in the users list. If not, add them.
211
-        if ( ! empty( $created_by_id ) && empty( $is_created_by_in_users ) ) {
210
+		// Make sure that the entry creator is included in the users list. If not, add them.
211
+		if ( ! empty( $created_by_id ) && empty( $is_created_by_in_users ) ) {
212 212
 
213
-	        if ( $created_by_user = GVCommon::get_users( 'change_entry_creator', array( 'include' => $created_by_id ) ) ) {
214
-	            $users = array_merge( $users, $created_by_user );
215
-	        }
216
-	    }
213
+			if ( $created_by_user = GVCommon::get_users( 'change_entry_creator', array( 'include' => $created_by_id ) ) ) {
214
+				$users = array_merge( $users, $created_by_user );
215
+			}
216
+		}
217 217
 
218
-        $output = '<label for="change_created_by">';
219
-        $output .= esc_html__('Change Entry Creator:', 'gravityview');
220
-        $output .= '</label>';
218
+		$output = '<label for="change_created_by">';
219
+		$output .= esc_html__('Change Entry Creator:', 'gravityview');
220
+		$output .= '</label>';
221 221
 
222
-	    // If there are users who are not being shown, show a warning.
223
-	    // TODO: Use AJAX instead of <select>
224
-	    $count_users = count_users();
225
-	    if( sizeof( $users ) < $count_users['total_users'] ) {
226
-		    $output .= '<p><i class="dashicons dashicons-warning"></i> ' . sprintf( esc_html__( 'The displayed list of users has been trimmed due to the large number of users. %sLearn how to remove this limit%s.', 'gravityview' ), '<a href="https://docs.gravityview.co/article/251-i-only-see-some-users-in-the-change-entry-creator-dropdown" rel="external">', '</a>' ) . '</p>';
227
-	    }
222
+		// If there are users who are not being shown, show a warning.
223
+		// TODO: Use AJAX instead of <select>
224
+		$count_users = count_users();
225
+		if( sizeof( $users ) < $count_users['total_users'] ) {
226
+			$output .= '<p><i class="dashicons dashicons-warning"></i> ' . sprintf( esc_html__( 'The displayed list of users has been trimmed due to the large number of users. %sLearn how to remove this limit%s.', 'gravityview' ), '<a href="https://docs.gravityview.co/article/251-i-only-see-some-users-in-the-change-entry-creator-dropdown" rel="external">', '</a>' ) . '</p>';
227
+		}
228 228
 
229
-	    $output .= '<select name="created_by" id="change_created_by" class="widefat">';
230
-        $output .= '<option value="' . selected( $entry['created_by'], '0', false ) . '"> &mdash; '.esc_attr_x( 'No User', 'No user assigned to the entry', 'gravityview').' &mdash; </option>';
231
-        foreach($users as $user) {
232
-            $output .= '<option value="'. $user->ID .'"'. selected( $entry['created_by'], $user->ID, false ).'>'.esc_attr( $user->display_name.' ('.$user->user_nicename.')' ).'</option>';
233
-        }
234
-        $output .= '</select>';
235
-        $output .= '<input name="originally_created_by" value="'.esc_attr( $entry['created_by'] ).'" type="hidden" />';
229
+		$output .= '<select name="created_by" id="change_created_by" class="widefat">';
230
+		$output .= '<option value="' . selected( $entry['created_by'], '0', false ) . '"> &mdash; '.esc_attr_x( 'No User', 'No user assigned to the entry', 'gravityview').' &mdash; </option>';
231
+		foreach($users as $user) {
232
+			$output .= '<option value="'. $user->ID .'"'. selected( $entry['created_by'], $user->ID, false ).'>'.esc_attr( $user->display_name.' ('.$user->user_nicename.')' ).'</option>';
233
+		}
234
+		$output .= '</select>';
235
+		$output .= '<input name="originally_created_by" value="'.esc_attr( $entry['created_by'] ).'" type="hidden" />';
236 236
 
237
-	    unset( $is_created_by_in_users, $created_by_user, $users, $created_by_id, $count_users );
237
+		unset( $is_created_by_in_users, $created_by_user, $users, $created_by_id, $count_users );
238 238
 
239
-        echo $output;
240
-    }
239
+		echo $output;
240
+	}
241 241
 
242 242
 }
243 243
 
Please login to merge, or discard this patch.