GravityView  1.19.4
The best, easiest way to display Gravity Forms entries on your website.
gravityview.php
Go to the documentation of this file.
1 <?php
2 /**
3  * Plugin Name: GravityView
4  * Plugin URI: https://gravityview.co
5  * Description: The best, easiest way to display Gravity Forms entries on your website.
6  * Version: 1.19.4
7  * Author: GravityView
8  * Author URI: https://gravityview.co
9  * Text Domain: gravityview
10  * License: GPLv2 or later
11  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
12  * Domain Path: /languages
13  */
14 
15 /** If this file is called directly, abort. */
16 if ( ! defined( 'ABSPATH' ) ) {
17  die;
18 }
19 
20 /** Constants */
21 
22 /**
23  * Full path to the GravityView file
24  * @define "GRAVITYVIEW_FILE" "./gravityview.php"
25  */
26 define( 'GRAVITYVIEW_FILE', __FILE__ );
27 
28 /**
29  * The URL to this file, with trailing slash
30  */
31 define( 'GRAVITYVIEW_URL', plugin_dir_url( __FILE__ ) );
32 
33 
34 /** @define "GRAVITYVIEW_DIR" "./" The absolute path to the plugin directory */
35 define( 'GRAVITYVIEW_DIR', plugin_dir_path( __FILE__ ) );
36 
37 /**
38  * GravityView requires at least this version of Gravity Forms to function properly.
39  */
40 define( 'GV_MIN_GF_VERSION', '1.9.14' );
41 
42 /**
43  * GravityView requires at least this version of WordPress to function properly.
44  * @since 1.12
45  */
46 define( 'GV_MIN_WP_VERSION', '4.0' );
47 
48 /**
49  * GravityView requires at least this version of PHP to function properly.
50  * @since 1.12
51  */
52 define( 'GV_MIN_PHP_VERSION', '5.2.4' );
53 
54 /**
55  * GravityView will require this version of PHP soon. False if no future PHP version changes are planned.
56  * @since 1.19.2
57  * @var string|false
58  */
59 define( 'GV_FUTURE_MIN_PHP_VERSION', '5.3' );
60 
61 /**
62  * GravityView will soon require at least this version of Gravity Forms to function properly.
63  * @since 1.19.4
64  */
65 define( 'GV_FUTURE_MIN_GF_VERSION', '2.0.0-rc-1' );
66 
67 /** Register hooks that are fired when the plugin is activated and deactivated. */
68 register_activation_hook( __FILE__, array( 'GravityView_Plugin', 'activate' ) );
69 
70 register_deactivation_hook( __FILE__, array( 'GravityView_Plugin', 'deactivate' ) );
71 
72 /**
73  * The future is here and now.
74  */
75 require GRAVITYVIEW_DIR . '/future/gravityview.php';
76 
77 /**
78  * GravityView_Plugin main class.
79  */
80 final class GravityView_Plugin {
81 
82  const version = '1.19.4';
83 
84  private static $instance;
85 
86  /**
87  * Singleton instance
88  *
89  * @return GravityView_Plugin GravityView_Plugin object
90  */
91  public static function getInstance() {
92 
93  if( empty( self::$instance ) ) {
94  self::$instance = new self;
95  }
96 
97  return self::$instance;
98  }
99 
100  private function __construct() {
101 
102  self::require_files();
103 
105  return;
106  }
107 
108  $this->include_files();
109 
110  $this->add_hooks();
111  }
112 
113  /**
114  * Include files that are required by the plugin
115  * @since 1.18
116  */
117  private static function require_files() {
118  require_once( GRAVITYVIEW_DIR . 'includes/helper-functions.php' );
119  require_once( GRAVITYVIEW_DIR . 'includes/class-common.php');
120  require_once( GRAVITYVIEW_DIR . 'includes/connector-functions.php');
121  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-compatibility.php' );
122  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-roles-capabilities.php' );
123  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-admin-notices.php' );
124  require_once( GRAVITYVIEW_DIR .'includes/class-admin.php' );
125  require_once( GRAVITYVIEW_DIR . 'includes/class-post-types.php');
126  require_once( GRAVITYVIEW_DIR . 'includes/class-cache.php');
127  }
128 
129  /**
130  * Add hooks to set up the plugin
131  *
132  * @since 1.12
133  */
134  private function add_hooks() {
135  // Load plugin text domain
136  add_action( 'init', array( $this, 'load_plugin_textdomain' ), 1 );
137 
138  // Load frontend files
139  add_action( 'init', array( $this, 'frontend_actions' ), 20 );
140  }
141 
142  /**
143  * Include global plugin files
144  *
145  * @since 1.12
146  */
147  public function include_files() {
148 
149  // Load fields
150  include_once( GRAVITYVIEW_DIR . 'includes/fields/class-gravityview-fields.php' );
151  include_once( GRAVITYVIEW_DIR . 'includes/fields/class-gravityview-field.php' );
152 
153  // Load all field files automatically
154  foreach ( glob( GRAVITYVIEW_DIR . 'includes/fields/class-gravityview-field*.php' ) as $gv_field_filename ) {
155  include_once( $gv_field_filename );
156  }
157 
158  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-entry-approval-status.php' );
159  include_once( GRAVITYVIEW_DIR .'includes/class-gravityview-entry-approval.php' );
160 
161  include_once( GRAVITYVIEW_DIR .'includes/class-gravityview-entry-notes.php' );
162  include_once( GRAVITYVIEW_DIR .'includes/load-plugin-and-theme-hooks.php' );
163 
164  // Load Extensions
165  // @todo: Convert to a scan of the directory or a method where this all lives
166  include_once( GRAVITYVIEW_DIR .'includes/extensions/edit-entry/class-edit-entry.php' );
167  include_once( GRAVITYVIEW_DIR .'includes/extensions/delete-entry/class-delete-entry.php' );
168  include_once( GRAVITYVIEW_DIR .'includes/extensions/entry-notes/class-gravityview-field-notes.php' );
169 
170  // Load WordPress Widgets
171  include_once( GRAVITYVIEW_DIR .'includes/wordpress-widgets/register-wordpress-widgets.php' );
172 
173  // Load GravityView Widgets
174  include_once( GRAVITYVIEW_DIR .'includes/widgets/register-gravityview-widgets.php' );
175 
176  // Add oEmbed
177  include_once( GRAVITYVIEW_DIR . 'includes/class-oembed.php' );
178 
179  // Add logging
180  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-logging.php' );
181 
182  include_once( GRAVITYVIEW_DIR . 'includes/class-ajax.php' );
183  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-settings.php' );
184  include_once( GRAVITYVIEW_DIR . 'includes/class-frontend-views.php' );
185  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-admin-bar.php' );
186  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-entry-list.php' );
187  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-merge-tags.php'); /** @since 1.8.4 */
188  include_once( GRAVITYVIEW_DIR . 'includes/class-data.php' );
189  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-shortcode.php' );
190  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-entry-link-shortcode.php' );
191  include_once( GRAVITYVIEW_DIR . 'includes/class-gvlogic-shortcode.php' );
192  include_once( GRAVITYVIEW_DIR . 'includes/presets/register-default-templates.php' );
193 
194  }
195 
196  /**
197  * Check whether GravityView is network activated
198  * @since 1.7.6
199  * @return bool
200  */
201  public static function is_network_activated() {
202  return is_multisite() && ( function_exists('is_plugin_active_for_network') && is_plugin_active_for_network( 'gravityview/gravityview.php' ) );
203  }
204 
205 
206  /**
207  * Plugin activate function.
208  *
209  * @access public
210  * @static
211  * @return void
212  */
213  public static function activate() {
214 
215  self::require_files();
216 
217  /** Deprecate in favor of \GV\View::register_post_type. */
218  if ( ! function_exists( 'gravityview' ) ) {
219  // register post types
221  }
222 
223  /** Deprecate in favor of \GV\View::add_rewrite_endpoint. */
224  if ( ! function_exists( 'gravityview' ) ) {
225  // register rewrite rules
227  }
228 
229  /** Deprecate. Handled in \GV\Plugin::activate now. */
230  if ( ! function_exists( 'gravityview' ) ) {
231  flush_rewrite_rules();
232 
233  // Update the current GV version
234  update_option( 'gv_version', self::version );
235  }
236 
237  // Add the transient to redirect to configuration page
238  set_transient( '_gv_activation_redirect', true, 60 );
239 
240  // Clear settings transient
241  delete_transient( 'gravityview_edd-activate_valid' );
242 
244  }
245 
246 
247  /**
248  * Plugin deactivate function.
249  *
250  * @access public
251  * @deprecated
252  * @return void
253  */
254  public static function deactivate() {
255  if ( ! function_exists( 'gravityview' ) ) {
256  flush_rewrite_rules();
257  }
258  }
259 
260  /**
261  * Include the extension class
262  *
263  * @since 1.5.1
264  * @return void
265  */
266  public static function include_extension_framework() {
267  if ( ! class_exists( 'GravityView_Extension' ) ) {
268  require_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-extension.php' );
269  }
270  }
271 
272  /**
273  * Load GravityView_Widget class
274  *
275  * @since 1.7.5.1
276  */
277  public static function include_widget_class() {
278  include_once( GRAVITYVIEW_DIR .'includes/widgets/class-gravityview-widget.php' );
279  }
280 
281 
282  /**
283  * Loads the plugin's translated strings.
284  *
285  * @access public
286  * @return void
287  */
288  public function load_plugin_textdomain() {
289 
290  $loaded = load_plugin_textdomain( 'gravityview', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
291 
292  if ( ! $loaded ) {
293  $loaded = load_muplugin_textdomain( 'gravityview', '/languages/' );
294  }
295  if ( ! $loaded ) {
296  $loaded = load_theme_textdomain( 'gravityview', '/languages/' );
297  }
298  if ( ! $loaded ) {
299  $locale = apply_filters( 'plugin_locale', get_locale(), 'gravityview' );
300  $mofile = dirname( __FILE__ ) . '/languages/gravityview-'. $locale .'.mo';
301  load_textdomain( 'gravityview', $mofile );
302  }
303 
304  }
305 
306  /**
307  * Check if is_admin(), and make sure not DOING_AJAX
308  * @since 1.7.5
309  * @return bool
310  */
311  public static function is_admin() {
312 
313  $doing_ajax = defined( 'DOING_AJAX' ) ? DOING_AJAX : false;
314 
315  return is_admin() && ! $doing_ajax;
316  }
317 
318  /**
319  * Function to launch frontend objects
320  *
321  * @since 1.17 Added $force param
322  *
323  * @access public
324  *
325  * @param bool $force Whether to force loading, even if GravityView_Plugin::is_admin() returns true
326  *
327  * @return void
328  */
329  public function frontend_actions( $force = false ) {
330 
331  if( self::is_admin() && ! $force ) { return; }
332 
333  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-image.php' );
334  include_once( GRAVITYVIEW_DIR .'includes/class-template.php' );
335  include_once( GRAVITYVIEW_DIR .'includes/class-api.php' );
336  include_once( GRAVITYVIEW_DIR .'includes/class-frontend-views.php' );
337  include_once( GRAVITYVIEW_DIR . 'includes/class-gravityview-change-entry-creator.php' );
338 
339 
340  /**
341  * When an entry is created, check if we need to update the custom slug meta
342  * todo: move this to its own class..
343  */
344  add_action( 'gform_entry_created', array( 'GravityView_API', 'entry_create_custom_slug' ), 10, 2 );
345 
346  /**
347  * @action `gravityview_include_frontend_actions` Triggered after all GravityView frontend files are loaded
348  *
349  * Nice place to insert extensions' frontend stuff
350  */
351  do_action( 'gravityview_include_frontend_actions' );
352  }
353 
354  /**
355  * helper function to define the default widget areas
356  * @todo Move somewhere logical
357  * @return array definition for default widget areas
358  */
359  public static function get_default_widget_areas() {
360  $default_areas = array(
361  array( '1-1' => array( array( 'areaid' => 'top', 'title' => __('Top', 'gravityview' ) , 'subtitle' => '' ) ) ),
362  array( '1-2' => array( array( 'areaid' => 'left', 'title' => __('Left', 'gravityview') , 'subtitle' => '' ) ), '2-2' => array( array( 'areaid' => 'right', 'title' => __('Right', 'gravityview') , 'subtitle' => '' ) ) ),
363  );
364 
365  /**
366  * @filter `gravityview_widget_active_areas` Array of zones available for widgets to be dropped into
367  * @param array $default_areas Definition for default widget areas
368  */
369  return apply_filters( 'gravityview_widget_active_areas', $default_areas );
370  }
371 
372  /** DEBUG */
373 
374  /**
375  * Logs messages using Gravity Forms logging add-on
376  * @param string $message log message
377  * @param mixed $data Additional data to display
378  * @return void
379  */
380  public static function log_debug( $message, $data = null ){
381  /**
382  * @action `gravityview_log_debug` Log a debug message that shows up in the Gravity Forms Logging Addon and also the Debug Bar plugin output
383  * @param string $message Message to display
384  * @param mixed $data Supporting data to print alongside it
385  */
386  do_action( 'gravityview_log_debug', $message, $data );
387  }
388 
389  /**
390  * Logs messages using Gravity Forms logging add-on
391  * @param string $message log message
392  * @return void
393  */
394  public static function log_error( $message, $data = null ){
395  /**
396  * @action `gravityview_log_error` Log an error message that shows up in the Gravity Forms Logging Addon and also the Debug Bar plugin output
397  * @param string $message Error message to display
398  * @param mixed $data Supporting data to print alongside it
399  */
400  do_action( 'gravityview_log_error', $message, $data );
401  }
402 
403 } // end class GravityView_Plugin
404 
405 add_action('plugins_loaded', array('GravityView_Plugin', 'getInstance'), 1);
const GRAVITYVIEW_DIR
"GRAVITYVIEW_DIR" "./" The absolute path to the plugin directory
Definition: gravityview.php:35
static deactivate()
Plugin deactivate function.
The future is here and now.
Definition: gravityview.php:80
include_files()
Include global plugin files.
static activate()
Plugin activate function.
static require_files()
Include files that are required by the plugin.
static include_extension_framework()
Include the extension class.
load_plugin_textdomain()
Loads the plugin&#39;s translated strings.
static is_valid()
Is everything compatible with this version of GravityView?
static get_default_widget_areas()
helper function to define the default widget areas
static log_debug($message, $data=null)
DEBUG.
static init_post_types()
Init plugin components such as register own custom post types.
frontend_actions($force=false)
Function to launch frontend objects.
add_hooks()
Add hooks to set up the plugin.
static is_admin()
Check if is_admin(), and make sure not DOING_AJAX.
static log_error($message, $data=null)
Logs messages using Gravity Forms logging add-on.
static is_network_activated()
Check whether GravityView is network activated.
static getInstance()
Singleton instance.
Definition: gravityview.php:91
static include_widget_class()
Load GravityView_Widget class.
static init_rewrite()
Register rewrite rules to capture the single entry view.