| 1 | <?php |
||
| 53 | final class Give {
|
||
| 54 | /** Singleton *************************************************************/ |
||
| 55 | |||
| 56 | |||
| 57 | /** |
||
| 58 | * @var Give The one true Give |
||
| 59 | * @since 1.0 |
||
| 60 | */ |
||
| 61 | private static $instance; |
||
| 62 | |||
| 63 | /** |
||
| 64 | * Give Roles Object |
||
| 65 | * |
||
| 66 | * @var Give_Roles object |
||
| 67 | * @since 1.0 |
||
| 68 | */ |
||
| 69 | public $roles; |
||
| 70 | |||
| 71 | /** |
||
| 72 | * Give Settings Object |
||
| 73 | * |
||
| 74 | * @var Give_Plugin_Settings object |
||
| 75 | * @since 1.0 |
||
| 76 | */ |
||
| 77 | public $give_settings; |
||
| 78 | |||
| 79 | /** |
||
| 80 | * Give Session Object |
||
| 81 | * |
||
| 82 | * This holds donation data for user's session |
||
| 83 | * |
||
| 84 | * @var Give_Session object |
||
| 85 | * @since 1.0 |
||
| 86 | */ |
||
| 87 | public $session; |
||
| 88 | |||
| 89 | /** |
||
| 90 | * Give HTML Element Helper Object |
||
| 91 | * |
||
| 92 | * @var Give_HTML_Elements object |
||
| 93 | * @since 1.0 |
||
| 94 | */ |
||
| 95 | public $html; |
||
| 96 | |||
| 97 | |||
| 98 | /** |
||
| 99 | * Give Emails Object |
||
| 100 | * |
||
| 101 | * @var Give_Emails object |
||
| 102 | * @since 1.0 |
||
| 103 | */ |
||
| 104 | public $emails; |
||
| 105 | |||
| 106 | /** |
||
| 107 | * Give Email Template Tags Object |
||
| 108 | * |
||
| 109 | * @var Give_Email_Template_Tags object |
||
| 110 | * @since 1.0 |
||
| 111 | */ |
||
| 112 | public $email_tags; |
||
| 113 | |||
| 114 | /** |
||
| 115 | * Give Customers DB Object |
||
| 116 | * |
||
| 117 | * @var object|Give_DB_Customers object |
||
| 118 | * @since 1.0 |
||
| 119 | */ |
||
| 120 | public $customers; |
||
| 121 | |||
| 122 | /** |
||
| 123 | * Give API Object |
||
| 124 | * |
||
| 125 | * @var Give_API object |
||
| 126 | * @since 1.1 |
||
| 127 | */ |
||
| 128 | public $api; |
||
| 129 | |||
| 130 | /** |
||
| 131 | * Give Template Loader Object |
||
| 132 | * |
||
| 133 | * @var Give_Template_Loader object |
||
| 134 | * @since 1.0 |
||
| 135 | */ |
||
| 136 | public $template_loader; |
||
| 137 | |||
| 138 | /** |
||
| 139 | * Give No Login Object |
||
| 140 | * |
||
| 141 | * @var Give_Email_Access object |
||
| 142 | * @since 1.0 |
||
| 143 | */ |
||
| 144 | public $email_access; |
||
| 145 | |||
| 146 | /** |
||
| 147 | * Main Give Instance |
||
| 148 | * |
||
| 149 | * Insures that only one instance of Give exists in memory at any one |
||
| 150 | * time. Also prevents needing to define globals all over the place. |
||
| 151 | * |
||
| 152 | * @since 1.0 |
||
| 153 | * @static |
||
| 154 | * @staticvar array $instance |
||
| 155 | * @uses Give::setup_constants() Setup the constants needed |
||
| 156 | * @uses Give::includes() Include the required files |
||
| 157 | * @uses Give::load_textdomain() load the language files |
||
| 158 | * @see Give() |
||
| 159 | * @return Give |
||
| 160 | */ |
||
| 161 | 60 | public static function instance() {
|
|
| 162 | 60 | if ( ! isset( self::$instance ) && ! ( self::$instance instanceof Give ) ) {
|
|
| 163 | self::$instance = new Give; |
||
| 164 | self::$instance->setup_constants(); |
||
| 165 | |||
| 166 | add_action( 'plugins_loaded', array( self::$instance, 'load_textdomain' ) ); |
||
| 167 | |||
| 168 | self::$instance->includes(); |
||
| 169 | self::$instance->roles = new Give_Roles(); |
||
| 170 | self::$instance->api = new Give_API(); |
||
| 171 | self::$instance->give_settings = new Give_Plugin_Settings(); |
||
| 172 | self::$instance->session = new Give_Session(); |
||
| 173 | self::$instance->html = new Give_HTML_Elements(); |
||
| 174 | self::$instance->emails = new Give_Emails(); |
||
| 175 | self::$instance->email_tags = new Give_Email_Template_Tags(); |
||
| 176 | self::$instance->customers = new Give_DB_Customers(); |
||
| 177 | self::$instance->template_loader = new Give_Template_Loader(); |
||
| 178 | self::$instance->email_access = new Give_Email_Access(); |
||
| 179 | |||
| 180 | } |
||
| 181 | |||
| 182 | |||
| 183 | 60 | return self::$instance; |
|
| 184 | } |
||
| 185 | |||
| 186 | /** |
||
| 187 | * Throw error on object clone |
||
| 188 | * |
||
| 189 | * The whole idea of the singleton design pattern is that there is a single |
||
| 190 | * object, therefore we don't want the object to be cloned. |
||
| 191 | * |
||
| 192 | * @since 1.0 |
||
| 193 | * @access protected |
||
| 194 | * @return void |
||
| 195 | */ |
||
| 196 | public function __clone() {
|
||
| 200 | |||
| 201 | /** |
||
| 202 | * Disable unserializing of the class |
||
| 203 | * |
||
| 204 | * @since 1.0 |
||
| 205 | * @access protected |
||
| 206 | * @return void |
||
| 207 | */ |
||
| 208 | public function __wakeup() {
|
||
| 212 | |||
| 213 | /** |
||
| 214 | * Setup plugin constants |
||
| 215 | * |
||
| 216 | * @access private |
||
| 217 | * @since 1.0 |
||
| 218 | * @return void |
||
| 219 | */ |
||
| 220 | private function setup_constants() {
|
||
| 252 | |||
| 253 | /** |
||
| 254 | * Include required files |
||
| 255 | * |
||
| 256 | * @access private |
||
| 257 | * @since 1.0 |
||
| 258 | * @return void |
||
| 259 | */ |
||
| 260 | private function includes() {
|
||
| 261 | global $give_options; |
||
|
1 ignored issue
–
show
|
|||
| 262 | |||
| 263 | require_once GIVE_PLUGIN_DIR . 'includes/admin/class-give-settings.php'; |
||
| 264 | $give_options = give_get_settings(); |
||
| 265 | |||
| 266 | require_once GIVE_PLUGIN_DIR . 'includes/post-types.php'; |
||
| 267 | require_once GIVE_PLUGIN_DIR . 'includes/scripts.php'; |
||
| 268 | require_once GIVE_PLUGIN_DIR . 'includes/ajax-functions.php'; |
||
| 269 | require_once GIVE_PLUGIN_DIR . 'includes/actions.php'; |
||
| 270 | require_once GIVE_PLUGIN_DIR . 'includes/api/class-give-api.php'; |
||
| 271 | |||
| 272 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-roles.php'; |
||
| 273 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-template-loader.php'; |
||
| 274 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-donate-form.php'; |
||
| 275 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-db.php'; |
||
| 276 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-db-customers.php'; |
||
| 277 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-customer.php'; |
||
| 278 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-stats.php'; |
||
| 279 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-session.php'; |
||
| 280 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-html-elements.php'; |
||
| 281 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-logging.php'; |
||
| 282 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-license-handler.php'; |
||
| 283 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-cron.php'; |
||
| 284 | require_once GIVE_PLUGIN_DIR . 'includes/class-give-email-access.php'; |
||
| 285 | |||
| 286 | require_once GIVE_PLUGIN_DIR . 'includes/country-functions.php'; |
||
| 287 | require_once GIVE_PLUGIN_DIR . 'includes/template-functions.php'; |
||
| 288 | require_once GIVE_PLUGIN_DIR . 'includes/misc-functions.php'; |
||
| 289 | require_once GIVE_PLUGIN_DIR . 'includes/forms/functions.php'; |
||
| 290 | require_once GIVE_PLUGIN_DIR . 'includes/forms/template.php'; |
||
| 291 | require_once GIVE_PLUGIN_DIR . 'includes/forms/widget.php'; |
||
| 292 | require_once GIVE_PLUGIN_DIR . 'includes/shortcodes.php'; |
||
| 293 | require_once GIVE_PLUGIN_DIR . 'includes/formatting.php'; |
||
| 294 | require_once GIVE_PLUGIN_DIR . 'includes/price-functions.php'; |
||
| 295 | require_once GIVE_PLUGIN_DIR . 'includes/error-tracking.php'; |
||
| 296 | require_once GIVE_PLUGIN_DIR . 'includes/process-purchase.php'; |
||
| 297 | require_once GIVE_PLUGIN_DIR . 'includes/login-register.php'; |
||
| 298 | require_once GIVE_PLUGIN_DIR . 'includes/user-functions.php'; |
||
| 299 | require_once GIVE_PLUGIN_DIR . 'includes/plugin-compatibility.php'; |
||
| 300 | require_once GIVE_PLUGIN_DIR . 'includes/deprecated-functions.php'; |
||
| 301 | |||
| 302 | require_once GIVE_PLUGIN_DIR . 'includes/payments/functions.php'; |
||
| 303 | require_once GIVE_PLUGIN_DIR . 'includes/payments/actions.php'; |
||
| 304 | require_once GIVE_PLUGIN_DIR . 'includes/payments/class-payment-stats.php'; |
||
| 305 | require_once GIVE_PLUGIN_DIR . 'includes/payments/class-payments-query.php'; |
||
| 306 | require_once GIVE_PLUGIN_DIR . 'includes/payments/class-give-payment.php'; |
||
| 307 | |||
| 308 | require_once GIVE_PLUGIN_DIR . 'includes/gateways/functions.php'; |
||
| 309 | require_once GIVE_PLUGIN_DIR . 'includes/gateways/actions.php'; |
||
| 310 | require_once GIVE_PLUGIN_DIR . 'includes/gateways/paypal-standard.php'; |
||
| 311 | require_once GIVE_PLUGIN_DIR . 'includes/gateways/offline-donations.php'; |
||
| 312 | require_once GIVE_PLUGIN_DIR . 'includes/gateways/manual.php'; |
||
| 313 | |||
| 314 | require_once GIVE_PLUGIN_DIR . 'includes/emails/class-give-emails.php'; |
||
| 315 | require_once GIVE_PLUGIN_DIR . 'includes/emails/class-give-email-tags.php'; |
||
| 316 | require_once GIVE_PLUGIN_DIR . 'includes/emails/functions.php'; |
||
| 317 | require_once GIVE_PLUGIN_DIR . 'includes/emails/template.php'; |
||
| 318 | require_once GIVE_PLUGIN_DIR . 'includes/emails/actions.php'; |
||
| 319 | |||
| 320 | if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
|
||
| 321 | |||
| 322 | require_once GIVE_PLUGIN_DIR . 'includes/admin/admin-footer.php'; |
||
| 323 | require_once GIVE_PLUGIN_DIR . 'includes/admin/welcome.php'; |
||
| 324 | require_once GIVE_PLUGIN_DIR . 'includes/admin/admin-pages.php'; |
||
| 325 | require_once GIVE_PLUGIN_DIR . 'includes/admin/class-admin-notices.php'; |
||
| 326 | require_once GIVE_PLUGIN_DIR . 'includes/admin/class-api-keys-table.php'; |
||
| 327 | require_once GIVE_PLUGIN_DIR . 'includes/admin/admin-actions.php'; |
||
| 328 | require_once GIVE_PLUGIN_DIR . 'includes/admin/system-info.php'; |
||
| 329 | require_once GIVE_PLUGIN_DIR . 'includes/admin/add-ons.php'; |
||
| 330 | require_once GIVE_PLUGIN_DIR . 'includes/admin/plugins.php'; |
||
| 331 | require_once GIVE_PLUGIN_DIR . 'includes/admin/dashboard-widgets.php'; |
||
| 332 | |||
| 333 | require_once GIVE_PLUGIN_DIR . 'includes/admin/payments/actions.php'; |
||
| 334 | require_once GIVE_PLUGIN_DIR . 'includes/admin/payments/payments-history.php'; |
||
| 335 | |||
| 336 | require_once GIVE_PLUGIN_DIR . 'includes/admin/customers/customers.php'; |
||
| 337 | require_once GIVE_PLUGIN_DIR . 'includes/admin/customers/customer-functions.php'; |
||
| 338 | require_once GIVE_PLUGIN_DIR . 'includes/admin/customers/customer-actions.php'; |
||
| 339 | require_once GIVE_PLUGIN_DIR . 'includes/admin/forms/metabox.php'; |
||
| 340 | require_once GIVE_PLUGIN_DIR . 'includes/admin/forms/dashboard-columns.php'; |
||
| 341 | |||
| 342 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/export/export-functions.php'; |
||
| 343 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/reports.php'; |
||
| 344 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/tools.php'; |
||
| 345 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/tools/tools-actions.php'; |
||
| 346 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/pdf-reports.php'; |
||
| 347 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/class-give-graph.php'; |
||
| 348 | require_once GIVE_PLUGIN_DIR . 'includes/admin/reporting/graphing.php'; |
||
| 349 | |||
| 350 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/abstract-shortcode-generator.php'; |
||
| 351 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/class-shortcode-button.php'; |
||
| 352 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-form.php'; |
||
| 353 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-goal.php'; |
||
| 354 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-login.php'; |
||
| 355 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-register.php'; |
||
| 356 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-profile-editor.php'; |
||
| 357 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-donation-history.php'; |
||
| 358 | require_once GIVE_PLUGIN_DIR . 'includes/admin/shortcodes/shortcode-give-receipt.php'; |
||
| 359 | |||
| 360 | require_once GIVE_PLUGIN_DIR . 'includes/admin/upgrades/upgrade-functions.php'; |
||
| 361 | require_once GIVE_PLUGIN_DIR . 'includes/admin/upgrades/upgrades.php'; |
||
| 362 | |||
| 363 | } |
||
| 364 | |||
| 365 | require_once GIVE_PLUGIN_DIR . 'includes/install.php'; |
||
| 366 | |||
| 367 | } |
||
| 368 | |||
| 369 | /** |
||
| 370 | * Loads the plugin language files |
||
| 371 | * |
||
| 372 | * @access public |
||
| 373 | * @since 1.0 |
||
| 374 | * @return void |
||
| 375 | */ |
||
| 376 | public function load_textdomain() {
|
||
| 400 | } |
||
| 401 | |||
| 402 | endif; // End if class_exists check |
||
| 424 |
The PSR-1: Basic Coding Standard recommends that a file should either introduce new symbols, that is classes, functions, constants or similar, or have side effects. Side effects are anything that executes logic, like for example printing output, changing ini settings or writing to a file.
The idea behind this recommendation is that merely auto-loading a class should not change the state of an application. It also promotes a cleaner style of programming and makes your code less prone to errors, because the logic is not spread out all over the place.
To learn more about the PSR-1, please see the PHP-FIG site on the PSR-1.