Completed
Branch BUG-10626-dst-unit-test (8c5dd4)
by
unknown
138:48 queued 126:51
created

espresso.php ➔ bootstrap_espresso()   B

Complexity

Conditions 2
Paths 15

Size

Total Lines 26
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 20
nc 15
nop 0
dl 0
loc 26
rs 8.8571
c 0
b 0
f 0
1
<?php if ( ! defined('ABSPATH')) {
2
    exit('No direct script access allowed');
3
}
4
/*
5
  Plugin Name:		Event Espresso
6
  Plugin URI:  		http://eventespresso.com/pricing/?ee_ver=ee4&utm_source=ee4_plugin_admin&utm_medium=link&utm_campaign=wordpress_plugins_page&utm_content=support_link
7
  Description: 		Manage your events from your WordPress dashboard. Reduce your admin, reduce your costs make your life easier! | <a href="admin.php?page=espresso_support&action=contact_support">Support</a>
8
  Version:			4.9.37.rc.002
9
  Author:			Event Espresso
10
  Author URI: 		http://eventespresso.com/?ee_ver=ee4&utm_source=ee4_plugin_admin&utm_medium=link&utm_campaign=wordpress_plugins_page&utm_content=support_link
11
  License: 		    GPLv2
12
  Text Domain: 		event_espresso
13
  GitHub Plugin URI: https://github.com/eventespresso/event-espresso-core
14
  Copyright 		(c) 2008-2017 Event Espresso  All Rights Reserved.
15
16
  This program is free software; you can redistribute it and/or modify
17
  it under the terms of the GNU General Public License as published by
18
  the Free Software Foundation; either version 2 of the License, or
19
  (at your option) any later version.
20
21
  This program is distributed in the hope that it will be useful,
22
  but WITHOUT ANY WARRANTY; without even the implied warranty of
23
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
  GNU General Public License for more details.
25
26
  You should have received a copy of the GNU General Public License
27
  along with this program; if not, write to the Free Software
28
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29
 */
30
/**
31
 * Event Espresso
32
 * Event Registration and Management Plugin for WordPress
33
 *
34
 * @package          Event Espresso
35
 * @author           Seth Shoultes
36
 * @copyright    (c) 2008-2017 Event Espresso  All Rights Reserved.
37
 * @license          {@link http://eventespresso.com/support/terms-conditions/}
38
 * @see              Plugin Licensing
39
 * @link             {@link http://www.eventespresso.com}
40
 * @since            4.0
41
 */
42
if (function_exists('espresso_version')) {
43
    /**
44
     *    espresso_duplicate_plugin_error
45
     *    displays if more than one version of EE is activated at the same time
46
     */
47
    function espresso_duplicate_plugin_error()
48
    {
49
        ?>
50
        <div class="error">
51
            <p>
52
                <?php echo esc_html__(
53
                        'Can not run multiple versions of Event Espresso! One version has been automatically deactivated. Please verify that you have the correct version you want still active.',
54
                        'event_espresso'
55
                ); ?>
56
            </p>
57
        </div>
58
        <?php
59
        espresso_deactivate_plugin(plugin_basename(__FILE__));
60
    }
61
62
    add_action('admin_notices', 'espresso_duplicate_plugin_error', 1);
63
} else {
64
    define('EE_MIN_PHP_VER_REQUIRED', '5.3.9');
65
    if ( ! version_compare(PHP_VERSION, EE_MIN_PHP_VER_REQUIRED, '>=')) {
66
        /**
67
         * espresso_minimum_php_version_error
68
         *
69
         * @return void
70
         */
71
        function espresso_minimum_php_version_error()
72
        {
73
            ?>
74
            <div class="error">
75
                <p>
76
                    <?php
77
                    printf(
78
                            esc_html__(
79
                                    'We\'re sorry, but Event Espresso requires PHP version %1$s or greater in order to operate. You are currently running version %2$s.%3$sIn order to update your version of PHP, you will need to contact your current hosting provider.%3$sFor information on stable PHP versions, please go to %4$s.',
80
                                    'event_espresso'
81
                            ),
82
                            EE_MIN_PHP_VER_REQUIRED,
83
                            PHP_VERSION,
84
                            '<br/>',
85
                            '<a href="http://php.net/downloads.php">http://php.net/downloads.php</a>'
86
                    );
87
                    ?>
88
                </p>
89
            </div>
90
            <?php
91
            espresso_deactivate_plugin(plugin_basename(__FILE__));
92
        }
93
94
        add_action('admin_notices', 'espresso_minimum_php_version_error', 1);
95
    } else {
96
        /**
97
         * espresso_version
98
         * Returns the plugin version
99
         *
100
         * @return string
101
         */
102
        function espresso_version()
103
        {
104
            return apply_filters('FHEE__espresso__espresso_version', '4.9.37.rc.002');
105
        }
106
107
        // define versions
108
        define('EVENT_ESPRESSO_VERSION', espresso_version());
109
        define('EE_MIN_WP_VER_REQUIRED', '4.1');
110
        define('EE_MIN_WP_VER_RECOMMENDED', '4.4.2');
111
        define('EE_MIN_PHP_VER_RECOMMENDED', '5.4.44');
112
        define('EVENT_ESPRESSO_MAIN_FILE', __FILE__);
113
        //used to be DIRECTORY_SEPARATOR, but that caused issues on windows
114
        if ( ! defined('DS')) {
115
            define('DS', '/');
116
        }
117
        if ( ! defined('PS')) {
118
            define('PS', PATH_SEPARATOR);
119
        }
120
        if ( ! defined('SP')) {
121
            define('SP', ' ');
122
        }
123
        if ( ! defined('EENL')) {
124
            define('EENL', "\n");
125
        }
126
        define('EE_SUPPORT_EMAIL', '[email protected]');
127
        // define the plugin directory and URL
128
        define('EE_PLUGIN_BASENAME', plugin_basename(EVENT_ESPRESSO_MAIN_FILE));
129
        define('EE_PLUGIN_DIR_PATH', plugin_dir_path(EVENT_ESPRESSO_MAIN_FILE));
130
        define('EE_PLUGIN_DIR_URL', plugin_dir_url(EVENT_ESPRESSO_MAIN_FILE));
131
        // main root folder paths
132
        define('EE_ADMIN_PAGES', EE_PLUGIN_DIR_PATH . 'admin_pages' . DS);
133
        define('EE_CORE', EE_PLUGIN_DIR_PATH . 'core' . DS);
134
        define('EE_MODULES', EE_PLUGIN_DIR_PATH . 'modules' . DS);
135
        define('EE_PUBLIC', EE_PLUGIN_DIR_PATH . 'public' . DS);
136
        define('EE_SHORTCODES', EE_PLUGIN_DIR_PATH . 'shortcodes' . DS);
137
        define('EE_WIDGETS', EE_PLUGIN_DIR_PATH . 'widgets' . DS);
138
        define('EE_PAYMENT_METHODS', EE_PLUGIN_DIR_PATH . 'payment_methods' . DS);
139
        define('EE_CAFF_PATH', EE_PLUGIN_DIR_PATH . 'caffeinated' . DS);
140
        // core system paths
141
        define('EE_ADMIN', EE_CORE . 'admin' . DS);
142
        define('EE_CPTS', EE_CORE . 'CPTs' . DS);
143
        define('EE_CLASSES', EE_CORE . 'db_classes' . DS);
144
        define('EE_INTERFACES', EE_CORE . 'interfaces' . DS);
145
        define('EE_BUSINESS', EE_CORE . 'business' . DS);
146
        define('EE_MODELS', EE_CORE . 'db_models' . DS);
147
        define('EE_HELPERS', EE_CORE . 'helpers' . DS);
148
        define('EE_LIBRARIES', EE_CORE . 'libraries' . DS);
149
        define('EE_TEMPLATES', EE_CORE . 'templates' . DS);
150
        define('EE_THIRD_PARTY', EE_CORE . 'third_party_libs' . DS);
151
        define('EE_GLOBAL_ASSETS', EE_TEMPLATES . 'global_assets' . DS);
152
        define('EE_FORM_SECTIONS', EE_LIBRARIES . 'form_sections' . DS);
153
        // gateways
154
        define('EE_GATEWAYS', EE_MODULES . 'gateways' . DS);
155
        define('EE_GATEWAYS_URL', EE_PLUGIN_DIR_URL . 'modules' . DS . 'gateways' . DS);
156
        // asset URL paths
157
        define('EE_TEMPLATES_URL', EE_PLUGIN_DIR_URL . 'core' . DS . 'templates' . DS);
158
        define('EE_GLOBAL_ASSETS_URL', EE_TEMPLATES_URL . 'global_assets' . DS);
159
        define('EE_IMAGES_URL', EE_GLOBAL_ASSETS_URL . 'images' . DS);
160
        define('EE_THIRD_PARTY_URL', EE_PLUGIN_DIR_URL . 'core' . DS . 'third_party_libs' . DS);
161
        define('EE_HELPERS_ASSETS', EE_PLUGIN_DIR_URL . 'core/helpers/assets/');
162
        define('EE_LIBRARIES_URL', EE_PLUGIN_DIR_URL . 'core/libraries/');
163
        // define upload paths
164
        $uploads = wp_upload_dir();
165
        // define the uploads directory and URL
166
        define('EVENT_ESPRESSO_UPLOAD_DIR', $uploads['basedir'] . DS . 'espresso' . DS);
167
        define('EVENT_ESPRESSO_UPLOAD_URL', $uploads['baseurl'] . DS . 'espresso' . DS);
168
        // define the templates directory and URL
169
        define('EVENT_ESPRESSO_TEMPLATE_DIR', $uploads['basedir'] . DS . 'espresso' . DS . 'templates' . DS);
170
        define('EVENT_ESPRESSO_TEMPLATE_URL', $uploads['baseurl'] . DS . 'espresso' . DS . 'templates' . DS);
171
        // define the gateway directory and URL
172
        define('EVENT_ESPRESSO_GATEWAY_DIR', $uploads['basedir'] . DS . 'espresso' . DS . 'gateways' . DS);
173
        define('EVENT_ESPRESSO_GATEWAY_URL', $uploads['baseurl'] . DS . 'espresso' . DS . 'gateways' . DS);
174
        // languages folder/path
175
        define('EE_LANGUAGES_SAFE_LOC', '..' . DS . 'uploads' . DS . 'espresso' . DS . 'languages' . DS);
176
        define('EE_LANGUAGES_SAFE_DIR', EVENT_ESPRESSO_UPLOAD_DIR . 'languages' . DS);
177
        //check for dompdf fonts in uploads
178
        if (file_exists(EVENT_ESPRESSO_UPLOAD_DIR . 'fonts' . DS)) {
179
            define('DOMPDF_FONT_DIR', EVENT_ESPRESSO_UPLOAD_DIR . 'fonts' . DS);
180
        }
181
        //ajax constants
182
        define(
183
                'EE_FRONT_AJAX',
184
                isset($_REQUEST['ee_front_ajax']) || isset($_REQUEST['data']['ee_front_ajax']) ? true : false
185
        );
186
        define(
187
                'EE_ADMIN_AJAX',
188
                isset($_REQUEST['ee_admin_ajax']) || isset($_REQUEST['data']['ee_admin_ajax']) ? true : false
189
        );
190
        //just a handy constant occasionally needed for finding values representing infinity in the DB
191
        //you're better to use this than its straight value (currently -1) in case you ever
192
        //want to change its default value! or find when -1 means infinity
193
        define('EE_INF_IN_DB', -1);
194
        define('EE_INF', INF > (float)PHP_INT_MAX ? INF : PHP_INT_MAX);
195
        define('EE_DEBUG', false);
196
        // for older WP versions
197
        if ( ! defined('MONTH_IN_SECONDS')) {
198
            define('MONTH_IN_SECONDS', DAY_IN_SECONDS * 30);
199
        }
200
        /**
201
         *    espresso_plugin_activation
202
         *    adds a wp-option to indicate that EE has been activated via the WP admin plugins page
203
         */
204
        function espresso_plugin_activation()
205
        {
206
            update_option('ee_espresso_activation', true);
207
        }
208
209
        register_activation_hook(EVENT_ESPRESSO_MAIN_FILE, 'espresso_plugin_activation');
210
        /**
211
         *    espresso_load_error_handling
212
         *    this function loads EE's class for handling exceptions and errors
213
         */
214
        function espresso_load_error_handling()
215
        {
216
            // load debugging tools
217
            if (WP_DEBUG === true && is_readable(EE_HELPERS . 'EEH_Debug_Tools.helper.php')) {
218
                require_once(EE_HELPERS . 'EEH_Debug_Tools.helper.php');
219
                EEH_Debug_Tools::instance();
220
            }
221
            // load error handling
222
            if (is_readable(EE_CORE . 'EE_Error.core.php')) {
223
                require_once(EE_CORE . 'EE_Error.core.php');
224
            } else {
225
                wp_die(esc_html__('The EE_Error core class could not be loaded.', 'event_espresso'));
226
            }
227
        }
228
229
        /**
230
         *    espresso_load_required
231
         *    given a class name and path, this function will load that file or throw an exception
232
         *
233
         * @param    string $classname
234
         * @param    string $full_path_to_file
235
         * @throws    EE_Error
236
         */
237
        function espresso_load_required($classname, $full_path_to_file)
238
        {
239
            static $error_handling_loaded = false;
240
            if ( ! $error_handling_loaded) {
241
                espresso_load_error_handling();
242
                $error_handling_loaded = true;
243
            }
244
            if (is_readable($full_path_to_file)) {
245
                require_once($full_path_to_file);
246
            } else {
247
                throw new EE_Error (
248
                        sprintf(
249
                                esc_html__(
250
                                        'The %s class file could not be located or is not readable due to file permissions.',
251
                                        'event_espresso'
252
                                ),
253
                                $classname
254
                        )
255
                );
256
            }
257
        }
258
259
        espresso_load_required('EEH_Base', EE_CORE . 'helpers' . DS . 'EEH_Base.helper.php');
260
        espresso_load_required('EEH_File', EE_CORE . 'helpers' . DS . 'EEH_File.helper.php');
261
        espresso_load_required('EE_Bootstrap', EE_CORE . 'EE_Bootstrap.core.php');
262
        new EE_Bootstrap();
263
    }
264
}
265
if ( ! function_exists('espresso_deactivate_plugin')) {
266
    /**
267
     *    deactivate_plugin
268
     * usage:  espresso_deactivate_plugin( plugin_basename( __FILE__ ));
269
     *
270
     * @access public
271
     * @param string $plugin_basename - the results of plugin_basename( __FILE__ ) for the plugin's main file
272
     * @return    void
273
     */
274
    function espresso_deactivate_plugin($plugin_basename = '')
275
    {
276
        if ( ! function_exists('deactivate_plugins')) {
277
            require_once(ABSPATH . 'wp-admin/includes/plugin.php');
278
        }
279
        unset($_GET['activate'], $_REQUEST['activate']);
280
        deactivate_plugins($plugin_basename);
281
    }
282
}