GravityView  1.19.4
The best, easiest way to display Gravity Forms entries on your website.
class-admin.php
Go to the documentation of this file.
1 <?php
2 
4 
5  function __construct() {
6 
7  if( ! is_admin() ) { return; }
8 
9  // If Gravity Forms isn't active or compatibile, stop loading
10  if( false === GravityView_Compatibility::is_valid() ) {
11  return;
12  }
13 
14  $this->include_required_files();
15  $this->add_hooks();
16  }
17 
18  /**
19  * @since 1.15
20  * @return void
21  */
22  private function include_required_files() {
23 
24  // Migrate Class
25  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-migrate.php' );
26 
27  // Don't load tooltips if on Gravity Forms, otherwise it overrides translations
28  if( class_exists( 'GFCommon' ) && class_exists( 'GFForms' ) && !GFForms::is_gravity_page() ) {
29  require_once( GFCommon::get_base_path() . '/tooltips.php' );
30  }
31 
32  require_once( GRAVITYVIEW_DIR . 'includes/admin/metaboxes/class-gravityview-admin-metaboxes.php' );
33  require_once( GRAVITYVIEW_DIR . 'includes/admin/entry-list.php' );
34  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-change-entry-creator.php' );
35 
36  /** @since 1.15 **/
37  require_once( GRAVITYVIEW_DIR . 'includes/admin/class-gravityview-support-port.php' );
38 
39  /** @since 1.6 */
40  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-admin-duplicate-view.php' );
41 
42  /** @since 1.17 */
43  require_once( GRAVITYVIEW_DIR . 'includes/admin/class-gravityview-admin-no-conflict.php' );
44  }
45 
46  /**
47  * @since 1.7.5
48  * @return void
49  */
50  private function add_hooks() {
51 
52  // Filter Admin messages
53  add_filter( 'post_updated_messages', array( $this, 'post_updated_messages' ) );
54  add_filter( 'bulk_post_updated_messages', array( $this, 'post_updated_messages' ) );
55 
56  add_filter( 'plugin_action_links_'. plugin_basename( GRAVITYVIEW_FILE ) , array( $this, 'plugin_action_links' ) );
57 
58  add_action( 'plugins_loaded', array( $this, 'backend_actions' ), 100 );
59 
60  }
61 
62  /**
63  * Get text for no views found.
64  *
65  * @since 1.18 Moved to GravityView_Admin
66  *
67  * @return string HTML message with no container tags.
68  */
69  public static function no_views_text() {
70 
71  if ( isset( $_REQUEST['post_status'] ) && 'trash' === $_REQUEST['post_status'] ) {
72  return __( 'No Views found in Trash', 'gravityview' );
73  } elseif( ! empty( $_GET['s'] ) ) {
74  return __( 'No Views found.', 'gravityview' );
75  }
76 
77  // Floaty the Astronaut says "oi"
78  $image = self::get_floaty();
79 
80  if ( GVCommon::has_cap( 'edit_gravityviews' ) ) {
81  $output = sprintf( esc_attr__( "%sYou don't have any active views. Let&rsquo;s go %screate one%s!%s\n\nIf you feel like you're lost in space and need help getting started, check out the %sGetting Started%s page.", 'gravityview' ), '<h3>', '<a href="' . admin_url( 'post-new.php?post_type=gravityview' ) . '">', '</a>', '</h3>', '<a href="' . admin_url( 'edit.php?post_type=gravityview&page=gv-getting-started' ) . '">', '</a>' );
82  } else {
83  $output = esc_attr__( 'There are no active Views', 'gravityview' );
84  }
85 
86  return $image . wpautop( $output );
87  }
88 
89  /**
90  * Display error HTML in Edit View when the form is in the trash or no longer exists in Gravity Forms
91  *
92  * @since 1.19
93  *
94  * @param int $form_id Gravity Forms
95  *
96  * @return void
97  */
98  public static function connected_form_warning( $form_id = 0 ) {
99  global $pagenow;
100 
101  if ( ! is_int( $form_id ) || $pagenow === 'post-new.php' ) {
102  return;
103  }
104 
105  $form_info = GFFormsModel::get_form( $form_id, true );
106 
107  $error = '';
108  if ( empty( $form_info ) ) {
109  $error = esc_html__( 'The form connected to this View no longer exists.', 'gravityview' );
110  $error .= ' ' . esc_html__( 'Select another form as the data source for this View.', 'gravityview' );
111  } elseif ( $form_info->is_trash ) {
112  $error = esc_html__( 'The connected form is in the trash.', 'gravityview' );
113  $error .= ' ' . gravityview_get_link( admin_url( 'admin.php?page=gf_edit_forms&filter=trash' ), esc_html__( 'Restore the form from the trash', 'gravityview' ) );
114  $error .= ' ' . esc_html__( 'or select another form.', 'gravityview' );
115  }
116 
117  if( $error ) {
118  ?>
119  <div class="wp-dialog notice-warning inline error wp-clearfix">
120  <?php echo gravityview_get_floaty(); ?>
121  <h3><?php echo $error; ?></h3>
122  </div>
123  <?php
124  }
125  }
126 
127  /**
128  * Function to launch admin objects
129  *
130  * @access public
131  * @return void
132  */
133  public function backend_actions() {
134 
135  /** @define "GRAVITYVIEW_DIR" "../" */
136  include_once( GRAVITYVIEW_DIR .'includes/admin/class.field.type.php' );
137  include_once( GRAVITYVIEW_DIR .'includes/admin/class.render.settings.php' );
138  include_once( GRAVITYVIEW_DIR .'includes/admin/class-gravityview-admin-view-item.php' );
139  include_once( GRAVITYVIEW_DIR .'includes/admin/class-gravityview-admin-view-field.php' );
140  include_once( GRAVITYVIEW_DIR .'includes/admin/class-gravityview-admin-view-widget.php' );
141  include_once( GRAVITYVIEW_DIR .'includes/class-admin-views.php' );
142  include_once( GRAVITYVIEW_DIR .'includes/class-admin-welcome.php' );
143  include_once( GRAVITYVIEW_DIR .'includes/class-admin-add-shortcode.php' );
144  include_once( GRAVITYVIEW_DIR .'includes/class-admin-approve-entries.php' );
145 
146  /**
147  * @action `gravityview_include_backend_actions` Triggered after all GravityView admin files are loaded
148  *
149  * Nice place to insert extensions' backend stuff
150  */
151  do_action('gravityview_include_backend_actions');
152  }
153 
154  /**
155  * Modify plugin action links at plugins screen
156  *
157  * @since 1.15 Added check for `gravityview_view_settings` and `gravityview_support_port` capabilities
158  * @access public
159  * @static
160  * @param array $links Array of action links under GravityView on the plugin page
161  * @return array Action links with Settings and Support included, if the user has the appropriate caps
162  */
163  public static function plugin_action_links( $links ) {
164 
165  $actions = array();
166 
167  if( GVCommon::has_cap( 'gravityview_view_settings' ) ) {
168  $actions[] = sprintf( '<a href="%s">%s</a>', admin_url( 'edit.php?post_type=gravityview&page=gravityview_settings' ), esc_html__( 'Settings', 'gravityview' ) );
169  }
170 
171  if( GVCommon::has_cap( 'gravityview_support_port' ) ) {
172  $actions[] = '<a href="http://docs.gravityview.co">' . esc_html__( 'Support', 'gravityview' ) . '</a>';
173  }
174 
175  return array_merge( $actions, $links );
176  }
177 
178  /**
179  * Get an image of our intrepid explorer friend
180  * @return string HTML image tag with floaty's cute mug on it
181  */
182  public static function get_floaty() {
183  return gravityview_get_floaty();
184  }
185 
186  /**
187  * Filter Admin messages
188  *
189  * @param array $messages Existing messages
190  * @return array Messages with GravityView views!
191  */
192  function post_updated_messages( $messages, $bulk_counts = NULL ) {
193  global $post;
194 
195  $post_id = get_the_ID();
196 
197  // By default, there will only be one item being modified.
198  // When in the `bulk_post_updated_messages` filter, there will be passed a number
199  // of modified items that will override this array.
200  $bulk_counts = is_null( $bulk_counts ) ? array( 'updated' => 1 , 'locked' => 1 , 'deleted' => 1 , 'trashed' => 1, 'untrashed' => 1 ) : $bulk_counts;
201 
202  // If we're starting fresh, a new form was created.
203  // We should let the user know this is the case.
204  $start_fresh = get_post_meta( $post_id, '_gravityview_start_fresh', true );
205 
206  $new_form_text = '';
207 
208  if( !empty( $start_fresh ) ) {
209 
210  // Get the form that was created
211  $connected_form = gravityview_get_form_id( $post_id );
212 
213  if( !empty( $connected_form ) ) {
214  $form = gravityview_get_form( $connected_form );
215  $form_name = esc_attr( $form['title'] );
216  $image = self::get_floaty();
217  $new_form_text .= '<h3>'.$image.sprintf( __( 'A new form was created for this View: "%s"', 'gravityview' ), $form_name ).'</h3>';
218  $new_form_text .= sprintf( __( '%sThere are no entries for the new form, so the View will also be empty.%s To start collecting entries, you can add submissions through %sthe preview form%s and also embed the form on a post or page using this code: %s
219 
220  You can %sedit the form%s in Gravity Forms and the updated fields will be available here. Don&rsquo;t forget to %scustomize the form settings%s.
221  ', 'gravityview' ), '<strong>', '</strong>', '<a href="'.site_url( '?gf_page=preview&amp;id='.$connected_form ).'">', '</a>', '<code>[gravityform id="'.$connected_form.'" name="'.$form_name.'"]</code>', '<a href="'.admin_url( 'admin.php?page=gf_edit_forms&amp;id='.$connected_form ).'">', '</a>', '<a href="'.admin_url( 'admin.php?page=gf_edit_forms&amp;view=settings&amp;id='.$connected_form ).'">', '</a>');
222  $new_form_text = wpautop( $new_form_text );
223 
224  delete_post_meta( $post_id, '_gravityview_start_fresh' );
225  }
226  }
227 
228  $messages['gravityview'] = array(
229  0 => '', // Unused. Messages start at index 1.
230  /* translators: %s and %s are HTML tags linking to the View on the website */
231  1 => sprintf(__( 'View updated. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>'),
232  /* translators: %s and %s are HTML tags linking to the View on the website */
233  2 => sprintf(__( 'View updated. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>'),
234  3 => __( 'View deleted.', 'gravityview' ),
235  /* translators: %s and %s are HTML tags linking to the View on the website */
236  4 => sprintf(__( 'View updated. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>'),
237  /* translators: %s: date and time of the revision */
238  5 => isset( $_GET['revision'] ) ? sprintf( __( 'View restored to revision from %s', 'gravityview' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
239  /* translators: %s and %s are HTML tags linking to the View on the website */
240  6 => sprintf(__( 'View published. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>') . $new_form_text,
241  /* translators: %s and %s are HTML tags linking to the View on the website */
242  7 => sprintf(__( 'View saved. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>') . $new_form_text,
243  8 => __( 'View submitted.', 'gravityview' ),
244  9 => sprintf(
245  /* translators: Date and time the View is scheduled to be published */
246  __( 'View scheduled for: %1$s.', 'gravityview' ),
247  // translators: Publish box date format, see http://php.net/date
248  date_i18n( __( 'M j, Y @ G:i', 'gravityview' ), strtotime( ( isset( $post->post_date ) ? $post->post_date : NULL ) ) )
249  ) . $new_form_text,
250  /* translators: %s and %s are HTML tags linking to the View on the website */
251  10 => sprintf(__( 'View draft updated. %sView on website.%s', 'gravityview' ), '<a href="'.get_permalink( $post_id ).'">', '</a>') . $new_form_text,
252 
253  /**
254  * These apply to `bulk_post_updated_messages`
255  * @file wp-admin/edit.php
256  */
257  'updated' => _n( '%s View updated.', '%s Views updated.', $bulk_counts['updated'], 'gravityview' ),
258  'locked' => _n( '%s View not updated, somebody is editing it.', '%s Views not updated, somebody is editing them.', $bulk_counts['locked'], 'gravityview' ),
259  'deleted' => _n( '%s View permanently deleted.', '%s Views permanently deleted.', $bulk_counts['deleted'], 'gravityview' ),
260  'trashed' => _n( '%s View moved to the Trash.', '%s Views moved to the Trash.', $bulk_counts['trashed'], 'gravityview' ),
261  'untrashed' => _n( '%s View restored from the Trash.', '%s Views restored from the Trash.', $bulk_counts['untrashed'], 'gravityview' ),
262  );
263 
264  return $messages;
265  }
266 
267 
268  /**
269  * Get admin notices
270  * @deprecated since 1.12
271  * @return array
272  */
273  public static function get_notices() {
275  }
276 
277  /**
278  * Add a notice to be displayed in the admin.
279  * @deprecated since 1.12
280  * @param array $notice Array with `class` and `message` keys. The message is not escaped.
281  */
282  public static function add_notice( $notice = array() ) {
284  }
285 
286  /**
287  * Check if Gravity Forms plugin is active and show notice if not.
288  *
289  * @deprecated since 1.12
290  * @see GravityView_Compatibility::get_plugin_status()
291  * @return boolean True: checks have been passed; GV is fine to run; False: checks have failed, don't continue loading
292  */
293  public static function check_gravityforms() {
295  }
296 
297  /**
298  * Check if specified plugin is active, inactive or not installed
299  *
300  * @deprecated since 1.12
301  * @see GravityView_Compatibility::get_plugin_status()
302 
303  * @return boolean|string True: plugin is active; False: plugin file doesn't exist at path; 'inactive' it's inactive
304  */
305  static function get_plugin_status( $location = '' ) {
307  }
308 
309  /**
310  * Is the current admin page a GravityView-related page?
311  *
312  * @todo Convert to use WP_Screen
313  * @param string $hook
314  * @param null|string $page Optional. String return value of page to compare against.
315  *
316  * @return bool|string|void If `false`, not a GravityView page. `true` if $page is passed and is the same as current page. Otherwise, the name of the page (`single`, `settings`, or `views`)
317  */
318  static function is_admin_page( $hook = '', $page = NULL ) {
319  global $current_screen, $plugin_page, $pagenow, $post;
320 
321  if( ! is_admin() ) { return false; }
322 
323  $is_page = false;
324 
325  $is_gv_screen = (!empty($current_screen) && isset($current_screen->post_type) && $current_screen->post_type === 'gravityview');
326 
327  $is_gv_post_type_get = (isset($_GET['post_type']) && $_GET['post_type'] === 'gravityview');
328 
329  $is_gv_settings_get = isset( $_GET['page'] ) && $_GET['page'] === 'gravityview_settings';
330 
331  if( empty( $post ) && $pagenow === 'post.php' && !empty( $_GET['post'] ) ) {
332  $gv_post = get_post( intval( $_GET['post'] ) );
333  $is_gv_post_type = (!empty($gv_post) && !empty($gv_post->post_type) && $gv_post->post_type === 'gravityview');
334  } else {
335  $is_gv_post_type = (!empty($post) && !empty($post->post_type) && $post->post_type === 'gravityview');
336  }
337 
338  if( $is_gv_screen || $is_gv_post_type || $is_gv_post_type || $is_gv_post_type_get || $is_gv_settings_get ) {
339 
340  // $_GET `post_type` variable
341  if(in_array($pagenow, array( 'post.php' , 'post-new.php' )) ) {
342  $is_page = 'single';
343  } else if ( in_array( $plugin_page, array( 'gravityview_settings', 'gravityview_page_gravityview_settings' ) ) || ( !empty( $_GET['page'] ) && $_GET['page'] === 'gravityview_settings' ) ) {
344  $is_page = 'settings';
345  } else {
346  $is_page = 'views';
347  }
348  }
349 
350  /**
351  * @filter `gravityview_is_admin_page` Is the current admin page a GravityView-related page?
352  * @param[in,out] string|bool $is_page If false, no. If string, the name of the page (`single`, `settings`, or `views`)
353  * @param[in] string $hook The name of the page to check against. Is passed to the method.
354  */
355  $is_page = apply_filters( 'gravityview_is_admin_page', $is_page, $hook );
356 
357  // If the current page is the same as the compared page
358  if( !empty( $page ) ) {
359  return $is_page === $page;
360  }
361 
362  return $is_page;
363  }
364 
365 }
366 
368 
369 /**
370  * Alias for GravityView_Admin::is_admin_page()
371  *
372  * @see GravityView_Admin::is_admin_page
373  *
374  * @param string $hook
375  * @param null|string $page Optional. String return value of page to compare against.
376  *
377  * @return bool|string|void If `false`, not a GravityView page. `true` if $page is passed and is the same as current page. Otherwise, the name of the page (`single`, `settings`, or `views`)
378  */
379 function gravityview_is_admin_page($hook = '', $page = NULL) {
380  return GravityView_Admin::is_admin_page( $hook, $page );
381 }
const GRAVITYVIEW_DIR
"GRAVITYVIEW_DIR" "./" The absolute path to the plugin directory
Definition: gravityview.php:35
$image
Definition: post_image.php:98
static plugin_action_links($links)
Modify plugin action links at plugins screen.
static connected_form_warning($form_id=0)
Display error HTML in Edit View when the form is in the trash or no longer exists in Gravity Forms...
Definition: class-admin.php:98
static get_notices()
Get admin notices.
static has_cap($caps= '', $object_id=null, $user_id=null)
Alias of GravityView_Roles_Capabilities::has_cap()
new GravityView_Admin
static check_gravityforms()
Check if Gravity Forms plugin is active and show notice if not.
static is_valid()
Is everything compatible with this version of GravityView?
const GRAVITYVIEW_FILE(!defined( 'ABSPATH'))
Plugin Name: GravityView Plugin URI: https://gravityview.co Description: The best, easiest way to display Gravity Forms entries on your website.
Definition: gravityview.php:26
backend_actions()
Function to launch admin objects.
static get_plugin_status($location= '')
Check if specified plugin is active, inactive or not installed.
static no_views_text()
Get text for no views found.
Definition: class-admin.php:69
static get_plugin_status($location= '')
Check if specified plugin is active, inactive or not installed.
gravityview_is_admin_page($hook= '', $page=NULL)
Alias for GravityView_Admin::is_admin_page()
gravityview_get_form($form_id)
Returns the form object for a given Form ID.
gravityview_get_floaty($height=87)
Get an image of our intrepid explorer friend.
gravityview_get_link($href= '', $anchor_text= '', $atts=array())
Generate an HTML anchor tag with a list of supported attributes.
static add_notice($notice=array())
Add a notice to be displayed in the admin.
static check_gravityforms()
Check if Gravity Forms plugin is active and show notice if not.
static add_notice($notice=array())
Add a notice to be displayed in the admin.
if(empty($created_by)) $form_id
static get_floaty()
Get an image of our intrepid explorer friend.
global $post
gravityview_get_form_id($view_id)
Get the connected form ID from a View ID.
static get_notices()
Get admin notices.
static is_admin_page($hook= '', $page=NULL)
Is the current admin page a GravityView-related page?