Completed
Branch dependabot/npm_and_yarn/wordpr... (563a96)
by
unknown
57:01 queued 49:08
created
core/admin/EE_Admin_Page_Loader.core.php 3 patches
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -1,7 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 use EventEspresso\core\domain\entities\notifications\PersistentAdminNotice;
4
-use EventEspresso\core\exceptions\InvalidDataTypeException;
5 4
 
6 5
 /**
7 6
  * Event Espresso
Please login to merge, or discard this patch.
Indentation   +673 added lines, -673 removed lines patch added patch discarded remove patch
@@ -24,677 +24,677 @@
 block discarded – undo
24 24
 class EE_Admin_Page_Loader
25 25
 {
26 26
 
27
-    /**
28
-     * _installed_pages
29
-     * objects for page_init objects detected and loaded
30
-     *
31
-     * @access private
32
-     * @var \EE_Admin_Page_Init[]
33
-     */
34
-    private $_installed_pages = array();
35
-
36
-
37
-    /**
38
-     * this is used to hold the registry of menu slugs for all the installed admin pages
39
-     *
40
-     * @var array
41
-     */
42
-    private $_menu_slugs = array();
43
-
44
-
45
-    /**
46
-     * _caffeinated_extends
47
-     * This array is the generated configuration array for which core EE_Admin pages are extended (and the bits and
48
-     * pieces needed to do so).  This property is defined in the _set_caffeinated method.
49
-     *
50
-     * @var array
51
-     */
52
-    private $_caffeinated_extends = array();
53
-
54
-
55
-    /**
56
-     * _current_caf_extend_slug
57
-     * This property is used for holding the page slug that is required for referencing the correct
58
-     * _caffeinated_extends index when the corresponding core child EE_Admin_Page_init hooks are executed.
59
-     *
60
-     * @var array
61
-     */
62
-    private $_current_caf_extend_slug;
63
-
64
-    /**
65
-     * _prepped_menu_maps
66
-     * This is the prepared array of EE_Admin_Page_Menu_Maps for adding to the admin_menu.
67
-     *
68
-     * @since  4.4.0
69
-     * @var EE_Admin_Page_Menu_Map[]
70
-     */
71
-    private $_prepped_menu_maps = array();
72
-
73
-
74
-    /**
75
-     * _admin_menu_groups
76
-     * array that holds the group headings and details for
77
-     *
78
-     * @access private
79
-     * @var array
80
-     */
81
-    private $_admin_menu_groups = array();
82
-
83
-
84
-    /**
85
-     * This property will hold the hook file for setting up the filter that does all the connections between admin
86
-     * pages.
87
-     *
88
-     * @var string
89
-     */
90
-    public $hook_file;
91
-
92
-
93
-    /**
94
-     * constructor
95
-     *
96
-     * @access public
97
-     * @return \EE_Admin_Page_Loader
98
-     */
99
-    public function __construct()
100
-    {
101
-        // load menu_map classes
102
-        EE_Registry::instance()->load_file(EE_ADMIN, 'EE_Admin_Page_Menu_Map', 'core');
103
-        // define the default "groups" for the admin_pages
104
-        $this->_set_menu_groups();
105
-
106
-        // let's do a scan and see what installed pages we have
107
-        $this->_get_installed_pages();
108
-        // set menus (has to be done on every load - we're not actually loading the page just setting the menus and where they point to).
109
-        add_action('admin_menu', array($this, 'set_menus'));
110
-        add_action('network_admin_menu', array($this, 'set_network_menus'));
111
-    }
112
-
113
-
114
-    /**
115
-     * When caffeinated system is detected, this method is called to setup the caffeinated directory constants used by
116
-     * files in the caffeinated folder.
117
-     *
118
-     * @access private
119
-     * @return void
120
-     */
121
-    private function _define_caffeinated_constants()
122
-    {
123
-        if (! defined('EE_CORE_CAF_ADMIN')) {
124
-            define('EE_CORE_CAF_ADMIN', EE_PLUGIN_DIR_PATH . 'caffeinated/admin/');
125
-            define('EE_CORE_CAF_ADMIN_URL', EE_PLUGIN_DIR_URL . 'caffeinated/admin/');
126
-            define('EE_CORE_CAF_ADMIN_NEW', EE_CORE_CAF_ADMIN . 'new/');
127
-            define('EE_CORE_CAF_ADMIN_EXTEND', EE_CORE_CAF_ADMIN . 'extend/');
128
-            define('EE_CORE_CAF_ADMIN_EXTEND_URL', EE_CORE_CAF_ADMIN_URL . 'extend/');
129
-            define('EE_CORE_CAF_ADMIN_HOOKS', EE_CORE_CAF_ADMIN . 'hooks/');
130
-        }
131
-    }
132
-
133
-
134
-    /**
135
-     * _set_menu_groups
136
-     * sets the filterable _admin_menu_groups property (list of various "groupings" within the EE admin menu array)
137
-     *
138
-     * @access private
139
-     * @return void
140
-     */
141
-    private function _set_menu_groups()
142
-    {
143
-
144
-        // set array of EE_Admin_Page_Menu_Group objects
145
-        $groups = array(
146
-            'main'       => new EE_Admin_Page_Menu_Group(
147
-                array(
148
-                    'menu_label'   => __('Main', 'event_espresso'),
149
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::NONE,
150
-                    'menu_slug'    => 'main',
151
-                    'capability'   => 'ee_read_ee',
152
-                    'menu_order'   => 0,
153
-                    'parent_slug'  => 'espresso_events',
154
-                )
155
-            ),
156
-            'management' => new EE_Admin_Page_Menu_Group(
157
-                array(
158
-                    'menu_label'   => __('Management', 'event_espresso'),
159
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
160
-                    'menu_slug'    => 'management',
161
-                    'capability'   => 'ee_read_ee',
162
-                    'menu_order'   => 10,
163
-                    'parent_slug'  => 'espresso_events',
164
-                )
165
-            ),
166
-            'settings'   => new EE_Admin_Page_Menu_Group(
167
-                array(
168
-                    'menu_label'   => __('Settings', 'event_espresso'),
169
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
170
-                    'menu_slug'    => 'settings',
171
-                    'capability'   => 'ee_read_ee',
172
-                    'menu_order'   => 30,
173
-                    'parent_slug'  => 'espresso_events',
174
-                )
175
-            ),
176
-            'templates'  => new EE_Admin_Page_Menu_Group(
177
-                array(
178
-                    'menu_label'   => __('Templates', 'event_espresso'),
179
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
180
-                    'menu_slug'    => 'templates',
181
-                    'capability'   => 'ee_read_ee',
182
-                    'menu_order'   => 40,
183
-                    'parent_slug'  => 'espresso_events',
184
-                )
185
-            ),
186
-            'extras'     => new EE_Admin_Page_Menu_Group(
187
-                array(
188
-                    'menu_label'              => __('Extras', 'event_espresso'),
189
-                    'show_on_menu'            => EE_Admin_Page_Menu_Map::BLOG_AND_NETWORK_ADMIN,
190
-                    'menu_slug'               => 'extras',
191
-                    'capability'              => 'ee_read_ee',
192
-                    'menu_order'              => 50,
193
-                    'parent_slug'             => 'espresso_events',
194
-                    'maintenance_mode_parent' => 'espresso_maintenance_settings',
195
-                )
196
-            ),
197
-            'tools'      => new EE_Admin_Page_Menu_Group(
198
-                array(
199
-                    'menu_label'   => __("Tools", "event_espresso"),
200
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
201
-                    'menu_slug'    => 'tools',
202
-                    'capability'   => 'ee_read_ee',
203
-                    'menu_order'   => 60,
204
-                    'parent_slug'  => 'espresso_events',
205
-                )
206
-            ),
207
-            'addons'     => new EE_Admin_Page_Menu_Group(
208
-                array(
209
-                    'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_AND_NETWORK_ADMIN,
210
-                    'menu_label'   => __('Add-ons', 'event_espresso'),
211
-                    'menu_slug'    => 'addons',
212
-                    'capability'   => 'ee_read_ee',
213
-                    'menu_order'   => 20,
214
-                    'parent_slug'  => 'espresso_events',
215
-                )
216
-            ),
217
-        );
218
-        $this->_admin_menu_groups = apply_filters(
219
-            'FHEE__EE_Admin_Page_Loader___set_menu_groups__admin_menu_groups',
220
-            $groups
221
-        );
222
-    }
223
-
224
-
225
-    /**
226
-     * This takes all the groups in the _admin_menu_groups array and returns the array indexed by group
227
-     * slug.  The other utility with this function is it validates that all the groups are instances of
228
-     * EE_Admin_Page_Menu_Group (cause some invalid things might have slipped in via addons).
229
-     *
230
-     * @since  4.4.0
231
-     * @throws \EE_Error
232
-     * @return EE_Admin_Page_Menu_Group[]
233
-     */
234
-    private function _rearrange_menu_groups()
235
-    {
236
-        $groups = array();
237
-        // first let's order the menu groups by their internal menu order (note usort type hinting to ensure the incoming array is EE_Admin_Page_Menu_Map objects )
238
-        usort($this->_admin_menu_groups, array($this, '_sort_menu_maps'));
239
-        foreach ($this->_admin_menu_groups as $group) {
240
-            if (! $group instanceof EE_Admin_Page_Menu_Group) {
241
-                throw new EE_Error(
242
-                    sprintf(
243
-                        __(
244
-                            'Unable to continue sorting the menu groups array because there is an invalid value for the menu groups.  All values in this array are required to be a EE_Admin_Page_Menu_Group object.  Instead there was: %s',
245
-                            'event_espresso'
246
-                        ),
247
-                        print_r($group, true)
248
-                    )
249
-                );
250
-            }
251
-            $groups[ $group->menu_slug ] = $group;
252
-        }
253
-        return $groups;
254
-    }
255
-
256
-
257
-    /**
258
-     * _get_installed_pages
259
-     * This just gets the list of installed EE_Admin_pages.
260
-     *
261
-     * @access private
262
-     * @throws EE_Error
263
-     * @return void
264
-     */
265
-    private function _get_installed_pages()
266
-    {
267
-        $installed_refs = array();
268
-        $exclude = array('assets', 'templates');
269
-        // grab everything in the  admin core directory
270
-        $admin_screens = glob(EE_ADMIN_PAGES . '*', GLOB_ONLYDIR);
271
-        if ($admin_screens) {
272
-            foreach ($admin_screens as $admin_screen) {
273
-                // files and anything in the exclude array need not apply
274
-                if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
275
-                    // these folders represent the different EE admin pages
276
-                    $installed_refs[ basename($admin_screen) ] = $admin_screen;
277
-                }
278
-            }
279
-        }
280
-        if (empty($installed_refs)) {
281
-            $error_msg[] = __(
282
-                'There are no EE_Admin pages detected, it looks like EE did not install properly',
283
-                'event_espresso'
284
-            );
285
-            $error_msg[] = $error_msg[0] . "\r\n"
286
-                           . sprintf(
287
-                               __(
288
-                                   'Check that the %s folder exists and is writable. Maybe try deactivating, then reactivating Event Espresso again.',
289
-                                   'event_espresso'
290
-                               ),
291
-                               EE_ADMIN_PAGES
292
-                           );
293
-            throw new EE_Error(implode('||', $error_msg));
294
-        }
295
-        // this just checks the caffeinated folder and takes care of setting up any caffeinated stuff.
296
-        $installed_refs = $this->_set_caffeinated($installed_refs);
297
-        // allow plugins to add in their own pages (note at this point they will need to have an autoloader defined for their class) OR hook into EEH_Autoloader::load_admin_page() to add their path.;
298
-        $installed_refs = apply_filters(
299
-            'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs',
300
-            $installed_refs
301
-        );
302
-        $this->_caffeinated_extends = apply_filters(
303
-            'FHEE__EE_Admin_Page_Loader___get_installed_pages__caffeinated_extends',
304
-            $this->_caffeinated_extends
305
-        );
306
-        // loop through admin pages and setup the $_installed_pages array.
307
-        $hooks_ref = array();
308
-        foreach ($installed_refs as $page => $path) {
309
-            // set autoloaders for our admin page classes based on included path information
310
-            EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($path);
311
-            // build list of installed pages
312
-            $this->_installed_pages[ $page ] = $this->_load_admin_page($page, $path);
313
-            // verify returned object
314
-            if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
315
-                if (! $this->_installed_pages[ $page ]->get_menu_map() instanceof EE_Admin_Page_Menu_Map) {
316
-                    continue;
317
-                }
318
-                // skip if in full maintenance mode and maintenance_mode_parent is set
319
-                $maintenance_mode_parent = $this->_installed_pages[ $page ]->get_menu_map()->maintenance_mode_parent;
320
-                if (empty($maintenance_mode_parent)
321
-                    && EE_Maintenance_Mode::instance()->level() === EE_Maintenance_Mode::level_2_complete_maintenance
322
-                ) {
323
-                    unset($installed_refs[ $page ]);
324
-                    continue;
325
-                }
326
-                $menu_slug = $this->_installed_pages[ $page ]->get_menu_map()->menu_slug;
327
-                $this->_menu_slugs[ $menu_slug ] = $page;
328
-                // flag for register hooks on extended pages b/c extended pages use the default INIT.
329
-                $extend = false;
330
-                // now that we've got the admin_init objects... lets see if there are any caffeinated pages extending the originals.  If there are then let's hook into the init admin filter and load our extend instead.
331
-                if (isset($this->_caffeinated_extends[ $page ])) {
332
-                    $this->_current_caf_extend_slug = $page;
333
-                    $admin_page_name = $this->_installed_pages[ $page ]->get_admin_page_name();
334
-                    $caf_path = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['path'];
335
-                    $caf_admin_page = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['admin_page'];
336
-                    add_filter(
337
-                        "FHEE__EE_Admin_Page_Init___initialize_admin_page__path_to_file__{$menu_slug}_{$admin_page_name}",
338
-                        function ($path_to_file) use ($caf_path) {
339
-                            return $caf_path;
340
-                        }
341
-                    );
342
-                    add_filter(
343
-                        "FHEE__EE_Admin_Page_Init___initialize_admin_page__admin_page__{$menu_slug}_{$admin_page_name}",
344
-                        function ($admin_page) use ($caf_admin_page) {
345
-                            return $caf_admin_page;
346
-                        }
347
-                    );
348
-                    $extend = true;
349
-                }
350
-                // let's do the registered hooks
351
-                $extended_hooks = $this->_installed_pages[ $page ]->register_hooks($extend);
352
-                $hooks_ref = array_merge($hooks_ref, $extended_hooks);
353
-            }
354
-        }
355
-        // the hooks_ref is all the pages where we have $extended _Hooks files that will extend a class in a different folder.  So we want to make sure we load the file for the parent.
356
-        // first make sure we've got unique values
357
-        $hooks_ref = array_unique($hooks_ref);
358
-        // now let's loop and require!
359
-        foreach ($hooks_ref as $path) {
360
-            require_once($path);
361
-        }
362
-        // make sure we have menu slugs global setup. Used in EE_Admin_Page->page_setup() to ensure we don't do a full class load for an admin page that isn't requested.
363
-        global $ee_menu_slugs;
364
-        $ee_menu_slugs = $this->_menu_slugs;
365
-        // we need to loop again to run any early code
366
-        foreach ($installed_refs as $page => $path) {
367
-            if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
368
-                $this->_installed_pages[ $page ]->do_initial_loads();
369
-            }
370
-        }
371
-        do_action('AHEE__EE_Admin_Page_Loader___get_installed_pages_loaded', $this->_installed_pages);
372
-    }
373
-
374
-
375
-    /**
376
-     * get_admin_page_object
377
-     *
378
-     * @param string $page_slug
379
-     * @return EE_Admin_Page
380
-     */
381
-    public function get_admin_page_object($page_slug = '')
382
-    {
383
-        if (isset($this->_installed_pages[ $page_slug ])) {
384
-            return $this->_installed_pages[ $page_slug ]->loaded_page_object();
385
-        }
386
-        return null;
387
-    }
388
-
389
-
390
-    /**
391
-     * _get_classname_for_admin_page
392
-     * generates an "Admin Page" class based on the directory  name
393
-     *
394
-     * @param $dir_name
395
-     * @return string
396
-     */
397
-    private function _get_classname_for_admin_page($dir_name = '')
398
-    {
399
-        $class_name = str_replace('_', ' ', strtolower($dir_name));
400
-        return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page';
401
-    }
402
-
403
-
404
-    /**
405
-     * _get_classname_for_admin_init_page
406
-     * generates an "Admin Page Init" class based on the directory  name
407
-     *
408
-     * @param $dir_name
409
-     * @return string
410
-     */
411
-    private function _get_classname_for_admin_init_page($dir_name = '')
412
-    {
413
-        $class_name = str_replace('_', ' ', strtolower($dir_name));
414
-        return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page_Init';
415
-    }
416
-
417
-
418
-    /**
419
-     * _load_admin_page
420
-     * Loads and instantiates page_init object for a single EE_admin page.
421
-     *
422
-     * @param  string $page page_reference
423
-     * @param string  $path
424
-     * @throws EE_Error
425
-     * @return object|bool  return page object if valid, bool false if not.
426
-     */
427
-    private function _load_admin_page($page = '', $path = '')
428
-    {
429
-        $class_name = $this->_get_classname_for_admin_init_page($page);
430
-        EE_Registry::instance()->load_file($path, $class_name, 'core');
431
-        if (! class_exists($class_name)) {
432
-            $inner_error_msg = '<br />'
433
-                               . sprintf(
434
-                                   esc_html__(
435
-                                       'Make sure you have %1$s defined. If this is a non-EE-core admin page then you also must have an autoloader in place for your class',
436
-                                       'event_espresso'
437
-                                   ),
438
-                                   '<strong>' . $class_name . '</strong>'
439
-                               );
440
-            $error_msg[] = sprintf(
441
-                __('Something went wrong with loading the %s admin page.', 'event_espresso'),
442
-                $page
443
-            );
444
-            $error_msg[] = $error_msg[0]
445
-                           . "\r\n"
446
-                           . sprintf(
447
-                               esc_html__(
448
-                                   'There is no Init class in place for the %s admin page.',
449
-                                   'event_espresso'
450
-                               ),
451
-                               $page
452
-                           )
453
-                           . $inner_error_msg;
454
-            throw new EE_Error(implode('||', $error_msg));
455
-        }
456
-        $a = new ReflectionClass($class_name);
457
-        return $a->newInstance();
458
-    }
459
-
460
-
461
-    /**
462
-     * set_menus
463
-     * This method sets up the menus for EE Admin Pages
464
-     *
465
-     * @access private
466
-     * @return void
467
-     */
468
-    public function set_menus()
469
-    {
470
-        // prep the menu pages (sort, group.)
471
-        $this->_prep_pages();
472
-        foreach ($this->_prepped_menu_maps as $menu_map) {
473
-            if (EE_Registry::instance()->CAP->current_user_can($menu_map->capability, $menu_map->menu_slug)) {
474
-                $menu_map->add_menu_page(false);
475
-            }
476
-        }
477
-    }
478
-
479
-
480
-    /**
481
-     * set_network_menus
482
-     * This method sets up the menus for network EE Admin Pages.
483
-     * Almost identical to EE_Admin_Page_Loader::set_menus() except pages
484
-     * are only added to the menu map if they are intended for the admin menu
485
-     *
486
-     * @return void
487
-     */
488
-    public function set_network_menus()
489
-    {
490
-        $this->_prep_pages();
491
-        foreach ($this->_prepped_menu_maps as $menu_map) {
492
-            if (EE_Registry::instance()->CAP->current_user_can($menu_map->capability, $menu_map->menu_slug)) {
493
-                $menu_map->add_menu_page(true);
494
-            }
495
-        }
496
-    }
497
-
498
-
499
-    /**
500
-     * _prep_pages
501
-     * sets the _prepped_menu_maps property
502
-     *
503
-     * @access private
504
-     * @throws EE_Error
505
-     * @return void
506
-     */
507
-    private function _prep_pages()
508
-    {
509
-        $pages_array = array();
510
-        // rearrange _admin_menu_groups to be indexed by group slug.
511
-        $menu_groups = $this->_rearrange_menu_groups();
512
-        foreach ($this->_installed_pages as $page) {
513
-            if ($page instanceof EE_Admin_page_Init) {
514
-                $page_map = $page->get_menu_map();
515
-                // if we've got an array then the menu map is in the old format so let's throw a persistent notice that the admin system isn't setup correctly for this item.
516
-                if (is_array($page_map) || empty($page_map)) {
517
-                    new PersistentAdminNotice(
518
-                        'menu_map_warning_' . str_replace(' ', '_', $page->label) . '_' . EVENT_ESPRESSO_VERSION,
519
-                        sprintf(
520
-                            __(
521
-                                'The admin page for %s was not correctly setup because it is using an older method for integrating with Event Espresso Core.  This means that full functionality for this component is not available.  This error message usually appears with an Add-on that is out of date.  Make sure you update all your Event Espresso 4 add-ons to the latest version to ensure they have necessary compatibility updates in place.',
522
-                                'event_espresso'
523
-                            ),
524
-                            $page->label
525
-                        )
526
-                    );
527
-                    continue;
528
-                }
529
-                // if page map is NOT a EE_Admin_Page_Menu_Map object then throw error.
530
-                if (! $page_map instanceof EE_Admin_Page_Menu_Map) {
531
-                    throw new EE_Error(
532
-                        sprintf(
533
-                            __(
534
-                                'The menu map for %s must be an EE_Admin_Page_Menu_Map object.  Instead it is %s.  Please double check that the menu map has been configured correctly.',
535
-                                'event_espresso'
536
-                            ),
537
-                            $page->label,
538
-                            $page_map
539
-                        )
540
-                    );
541
-                }
542
-                // use the maintenance_mode_parent property and maintenance mode status to determine if this page even gets added to array.
543
-                if (empty($page_map->maintenance_mode_parent)
544
-                    && EE_Maintenance_Mode::instance()->level()
545
-                       == EE_Maintenance_Mode::level_2_complete_maintenance) {
546
-                    continue;
547
-                }
548
-                // assign to group (remember $page_map has the admin page stored in it).
549
-                $pages_array[ $page_map->menu_group ][] = $page_map;
550
-            }
551
-        }
552
-        if (empty($pages_array)) {
553
-            throw new EE_Error(__('Something went wrong when prepping the admin pages', 'event_espresso'));
554
-        }
555
-        // let's sort the groups, make sure it's a valid group, add header (if to show).
556
-        foreach ($pages_array as $group => $menu_maps) {
557
-            // valid_group?
558
-            if (! array_key_exists($group, $menu_groups)) {
559
-                continue;
560
-            }
561
-            // sort pages.
562
-            usort($menu_maps, array($this, '_sort_menu_maps'));
563
-            // prepend header
564
-            array_unshift($menu_maps, $menu_groups[ $group ]);
565
-            // reset $pages_array with prepped data
566
-            $pages_array[ $group ] = $menu_maps;
567
-        }
568
-        // now let's setup the _prepped_menu_maps property
569
-        foreach ($menu_groups as $group => $group_objs) {
570
-            if (isset($pages_array[ $group ])) {
571
-                $this->_prepped_menu_maps = array_merge($this->_prepped_menu_maps, $pages_array[ $group ]);
572
-            }
573
-        }/**/
574
-    }
575
-
576
-
577
-    /**
578
-     * This method is the "workhorse" for detecting and setting up caffeinated functionality.
579
-     * In this method there are three checks being done:
580
-     * 1. Do we have any NEW admin page sets.  If we do, lets add them into the menu setup (via the $installed_refs
581
-     * array) etc.  (new page sets are found in caffeinated/new/{page})
582
-     * 2. Do we have any EXTENDED page sets.  Basically an extended EE_Admin Page extends the core {child}_Admin_Page
583
-     * class.  eg. would be caffeinated/extend/events/Extend_Events_Admin_Page.core.php and in there would be a class:
584
-     * Extend_Events_Admin_Page extends Events_Admin_Page.
585
-     * 3. Do we have any files just for setting up hooks into other core pages.  The files can be any name in
586
-     * "caffeinated/hooks" EXCEPT they need a ".class.php" extension and the file name must correspond with the
587
-     * classname inside.  These classes are instantiated really early so that any hooks in them are run before the
588
-     * corresponding apply_filters/do_actions that are found in any future loaded EE_Admin pages (INCLUDING caffeinated
589
-     * admin_pages)
590
-     *
591
-     * @param array $installed_refs the original installed_refs array that may contain our NEW EE_Admin_Pages to be
592
-     *                              loaded.
593
-     * @return array
594
-     */
595
-    private function _set_caffeinated($installed_refs)
596
-    {
597
-
598
-        // first let's check if there IS a caffeinated folder. If there is not then lets get out.
599
-        if (! is_dir(EE_PLUGIN_DIR_PATH . 'caffeinated/admin') || (defined('EE_DECAF') && EE_DECAF)) {
600
-            return $installed_refs;
601
-        }
602
-        $this->_define_caffeinated_constants();
603
-        $exclude = array('tickets');
604
-        // okay let's setup an "New" pages first (we'll return installed refs later)
605
-        $new_admin_screens = glob(EE_CORE_CAF_ADMIN . 'new/*', GLOB_ONLYDIR);
606
-        if ($new_admin_screens) {
607
-            foreach ($new_admin_screens as $admin_screen) {
608
-                // files and anything in the exclude array need not apply
609
-                if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
610
-                    // these folders represent the different NEW EE admin pages
611
-                    $installed_refs[ basename($admin_screen) ] = $admin_screen;
612
-                    // set autoloaders for our admin page classes based on included path information
613
-                    EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($admin_screen);
614
-                }
615
-            }
616
-        }
617
-        // let's see if there are any EXTENDS to setup in the $_caffeinated_extends array (that will be used later for hooking into the _initialize_admin_age in the related core_init admin page)
618
-        $extends = glob(EE_CORE_CAF_ADMIN . 'extend/*', GLOB_ONLYDIR);
619
-        if ($extends) {
620
-            foreach ($extends as $extend) {
621
-                if (is_dir($extend)) {
622
-                    $extend_ref = basename($extend);
623
-                    // now let's make sure there is a file that matches the expected format
624
-                    $filename = str_replace(
625
-                        ' ',
626
-                        '_',
627
-                        ucwords(
628
-                            str_replace(
629
-                                '_',
630
-                                ' ',
631
-                                $extend_ref
632
-                            )
633
-                        )
634
-                    );
635
-                    $filename = 'Extend_' . $filename . '_Admin_Page';
636
-                    $this->_caffeinated_extends[ $extend_ref ]['path'] = str_replace(
637
-                        array('\\', '/'),
638
-                        '/',
639
-                        EE_CORE_CAF_ADMIN
640
-                        . 'extend/'
641
-                        . $extend_ref
642
-                        . '/'
643
-                        . $filename
644
-                        . '.core.php'
645
-                    );
646
-                    $this->_caffeinated_extends[ $extend_ref ]['admin_page'] = $filename;
647
-                    // set autoloaders for our admin page classes based on included path information
648
-                    EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($extend);
649
-                }
650
-            }
651
-        }
652
-        // let's see if there are any HOOK files and instantiate them if there are (so that hooks are loaded early!).
653
-        $ee_admin_hooks = array();
654
-        $hooks = glob(EE_CORE_CAF_ADMIN . 'hooks/*.class.php');
655
-        if ($hooks) {
656
-            foreach ($hooks as $hook) {
657
-                if (is_readable($hook)) {
658
-                    require_once $hook;
659
-                    $classname = str_replace(EE_CORE_CAF_ADMIN . 'hooks/', '', $hook);
660
-                    $classname = str_replace('.class.php', '', $classname);
661
-                    if (class_exists($classname)) {
662
-                        $a = new ReflectionClass($classname);
663
-                        $ee_admin_hooks[] = $a->newInstance();
664
-                    }
665
-                }
666
-            }
667
-        }/**/
668
-        $ee_admin_hooks = apply_filters('FHEE__EE_Admin_Page_Loader__set_caffeinated__ee_admin_hooks', $ee_admin_hooks);
669
-        return $installed_refs;
670
-    }
671
-
672
-
673
-    /**
674
-     * Utility method for sorting the _menu_maps (callback for usort php function)
675
-     *
676
-     * @since  4.4.0
677
-     * @param  EE_Admin_Page_Menu_Map $a menu_map object
678
-     * @param  EE_Admin_Page_Menu_Map $b being compared to
679
-     * @return int    sort order
680
-     */
681
-    private function _sort_menu_maps(EE_Admin_Page_Menu_Map $a, EE_Admin_Page_Menu_Map $b)
682
-    {
683
-        if ($a->menu_order == $b->menu_order) {
684
-            return 0;
685
-        }
686
-        return ($a->menu_order < $b->menu_order) ? -1 : 1;
687
-    }
688
-
689
-
690
-    /**
691
-     * _default_header_link
692
-     * This is just a dummy method to use with header submenu items
693
-     *
694
-     * @return bool false
695
-     */
696
-    public function _default_header_link()
697
-    {
698
-        return false;
699
-    }
27
+	/**
28
+	 * _installed_pages
29
+	 * objects for page_init objects detected and loaded
30
+	 *
31
+	 * @access private
32
+	 * @var \EE_Admin_Page_Init[]
33
+	 */
34
+	private $_installed_pages = array();
35
+
36
+
37
+	/**
38
+	 * this is used to hold the registry of menu slugs for all the installed admin pages
39
+	 *
40
+	 * @var array
41
+	 */
42
+	private $_menu_slugs = array();
43
+
44
+
45
+	/**
46
+	 * _caffeinated_extends
47
+	 * This array is the generated configuration array for which core EE_Admin pages are extended (and the bits and
48
+	 * pieces needed to do so).  This property is defined in the _set_caffeinated method.
49
+	 *
50
+	 * @var array
51
+	 */
52
+	private $_caffeinated_extends = array();
53
+
54
+
55
+	/**
56
+	 * _current_caf_extend_slug
57
+	 * This property is used for holding the page slug that is required for referencing the correct
58
+	 * _caffeinated_extends index when the corresponding core child EE_Admin_Page_init hooks are executed.
59
+	 *
60
+	 * @var array
61
+	 */
62
+	private $_current_caf_extend_slug;
63
+
64
+	/**
65
+	 * _prepped_menu_maps
66
+	 * This is the prepared array of EE_Admin_Page_Menu_Maps for adding to the admin_menu.
67
+	 *
68
+	 * @since  4.4.0
69
+	 * @var EE_Admin_Page_Menu_Map[]
70
+	 */
71
+	private $_prepped_menu_maps = array();
72
+
73
+
74
+	/**
75
+	 * _admin_menu_groups
76
+	 * array that holds the group headings and details for
77
+	 *
78
+	 * @access private
79
+	 * @var array
80
+	 */
81
+	private $_admin_menu_groups = array();
82
+
83
+
84
+	/**
85
+	 * This property will hold the hook file for setting up the filter that does all the connections between admin
86
+	 * pages.
87
+	 *
88
+	 * @var string
89
+	 */
90
+	public $hook_file;
91
+
92
+
93
+	/**
94
+	 * constructor
95
+	 *
96
+	 * @access public
97
+	 * @return \EE_Admin_Page_Loader
98
+	 */
99
+	public function __construct()
100
+	{
101
+		// load menu_map classes
102
+		EE_Registry::instance()->load_file(EE_ADMIN, 'EE_Admin_Page_Menu_Map', 'core');
103
+		// define the default "groups" for the admin_pages
104
+		$this->_set_menu_groups();
105
+
106
+		// let's do a scan and see what installed pages we have
107
+		$this->_get_installed_pages();
108
+		// set menus (has to be done on every load - we're not actually loading the page just setting the menus and where they point to).
109
+		add_action('admin_menu', array($this, 'set_menus'));
110
+		add_action('network_admin_menu', array($this, 'set_network_menus'));
111
+	}
112
+
113
+
114
+	/**
115
+	 * When caffeinated system is detected, this method is called to setup the caffeinated directory constants used by
116
+	 * files in the caffeinated folder.
117
+	 *
118
+	 * @access private
119
+	 * @return void
120
+	 */
121
+	private function _define_caffeinated_constants()
122
+	{
123
+		if (! defined('EE_CORE_CAF_ADMIN')) {
124
+			define('EE_CORE_CAF_ADMIN', EE_PLUGIN_DIR_PATH . 'caffeinated/admin/');
125
+			define('EE_CORE_CAF_ADMIN_URL', EE_PLUGIN_DIR_URL . 'caffeinated/admin/');
126
+			define('EE_CORE_CAF_ADMIN_NEW', EE_CORE_CAF_ADMIN . 'new/');
127
+			define('EE_CORE_CAF_ADMIN_EXTEND', EE_CORE_CAF_ADMIN . 'extend/');
128
+			define('EE_CORE_CAF_ADMIN_EXTEND_URL', EE_CORE_CAF_ADMIN_URL . 'extend/');
129
+			define('EE_CORE_CAF_ADMIN_HOOKS', EE_CORE_CAF_ADMIN . 'hooks/');
130
+		}
131
+	}
132
+
133
+
134
+	/**
135
+	 * _set_menu_groups
136
+	 * sets the filterable _admin_menu_groups property (list of various "groupings" within the EE admin menu array)
137
+	 *
138
+	 * @access private
139
+	 * @return void
140
+	 */
141
+	private function _set_menu_groups()
142
+	{
143
+
144
+		// set array of EE_Admin_Page_Menu_Group objects
145
+		$groups = array(
146
+			'main'       => new EE_Admin_Page_Menu_Group(
147
+				array(
148
+					'menu_label'   => __('Main', 'event_espresso'),
149
+					'show_on_menu' => EE_Admin_Page_Menu_Map::NONE,
150
+					'menu_slug'    => 'main',
151
+					'capability'   => 'ee_read_ee',
152
+					'menu_order'   => 0,
153
+					'parent_slug'  => 'espresso_events',
154
+				)
155
+			),
156
+			'management' => new EE_Admin_Page_Menu_Group(
157
+				array(
158
+					'menu_label'   => __('Management', 'event_espresso'),
159
+					'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
160
+					'menu_slug'    => 'management',
161
+					'capability'   => 'ee_read_ee',
162
+					'menu_order'   => 10,
163
+					'parent_slug'  => 'espresso_events',
164
+				)
165
+			),
166
+			'settings'   => new EE_Admin_Page_Menu_Group(
167
+				array(
168
+					'menu_label'   => __('Settings', 'event_espresso'),
169
+					'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
170
+					'menu_slug'    => 'settings',
171
+					'capability'   => 'ee_read_ee',
172
+					'menu_order'   => 30,
173
+					'parent_slug'  => 'espresso_events',
174
+				)
175
+			),
176
+			'templates'  => new EE_Admin_Page_Menu_Group(
177
+				array(
178
+					'menu_label'   => __('Templates', 'event_espresso'),
179
+					'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
180
+					'menu_slug'    => 'templates',
181
+					'capability'   => 'ee_read_ee',
182
+					'menu_order'   => 40,
183
+					'parent_slug'  => 'espresso_events',
184
+				)
185
+			),
186
+			'extras'     => new EE_Admin_Page_Menu_Group(
187
+				array(
188
+					'menu_label'              => __('Extras', 'event_espresso'),
189
+					'show_on_menu'            => EE_Admin_Page_Menu_Map::BLOG_AND_NETWORK_ADMIN,
190
+					'menu_slug'               => 'extras',
191
+					'capability'              => 'ee_read_ee',
192
+					'menu_order'              => 50,
193
+					'parent_slug'             => 'espresso_events',
194
+					'maintenance_mode_parent' => 'espresso_maintenance_settings',
195
+				)
196
+			),
197
+			'tools'      => new EE_Admin_Page_Menu_Group(
198
+				array(
199
+					'menu_label'   => __("Tools", "event_espresso"),
200
+					'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_ADMIN_ONLY,
201
+					'menu_slug'    => 'tools',
202
+					'capability'   => 'ee_read_ee',
203
+					'menu_order'   => 60,
204
+					'parent_slug'  => 'espresso_events',
205
+				)
206
+			),
207
+			'addons'     => new EE_Admin_Page_Menu_Group(
208
+				array(
209
+					'show_on_menu' => EE_Admin_Page_Menu_Map::BLOG_AND_NETWORK_ADMIN,
210
+					'menu_label'   => __('Add-ons', 'event_espresso'),
211
+					'menu_slug'    => 'addons',
212
+					'capability'   => 'ee_read_ee',
213
+					'menu_order'   => 20,
214
+					'parent_slug'  => 'espresso_events',
215
+				)
216
+			),
217
+		);
218
+		$this->_admin_menu_groups = apply_filters(
219
+			'FHEE__EE_Admin_Page_Loader___set_menu_groups__admin_menu_groups',
220
+			$groups
221
+		);
222
+	}
223
+
224
+
225
+	/**
226
+	 * This takes all the groups in the _admin_menu_groups array and returns the array indexed by group
227
+	 * slug.  The other utility with this function is it validates that all the groups are instances of
228
+	 * EE_Admin_Page_Menu_Group (cause some invalid things might have slipped in via addons).
229
+	 *
230
+	 * @since  4.4.0
231
+	 * @throws \EE_Error
232
+	 * @return EE_Admin_Page_Menu_Group[]
233
+	 */
234
+	private function _rearrange_menu_groups()
235
+	{
236
+		$groups = array();
237
+		// first let's order the menu groups by their internal menu order (note usort type hinting to ensure the incoming array is EE_Admin_Page_Menu_Map objects )
238
+		usort($this->_admin_menu_groups, array($this, '_sort_menu_maps'));
239
+		foreach ($this->_admin_menu_groups as $group) {
240
+			if (! $group instanceof EE_Admin_Page_Menu_Group) {
241
+				throw new EE_Error(
242
+					sprintf(
243
+						__(
244
+							'Unable to continue sorting the menu groups array because there is an invalid value for the menu groups.  All values in this array are required to be a EE_Admin_Page_Menu_Group object.  Instead there was: %s',
245
+							'event_espresso'
246
+						),
247
+						print_r($group, true)
248
+					)
249
+				);
250
+			}
251
+			$groups[ $group->menu_slug ] = $group;
252
+		}
253
+		return $groups;
254
+	}
255
+
256
+
257
+	/**
258
+	 * _get_installed_pages
259
+	 * This just gets the list of installed EE_Admin_pages.
260
+	 *
261
+	 * @access private
262
+	 * @throws EE_Error
263
+	 * @return void
264
+	 */
265
+	private function _get_installed_pages()
266
+	{
267
+		$installed_refs = array();
268
+		$exclude = array('assets', 'templates');
269
+		// grab everything in the  admin core directory
270
+		$admin_screens = glob(EE_ADMIN_PAGES . '*', GLOB_ONLYDIR);
271
+		if ($admin_screens) {
272
+			foreach ($admin_screens as $admin_screen) {
273
+				// files and anything in the exclude array need not apply
274
+				if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
275
+					// these folders represent the different EE admin pages
276
+					$installed_refs[ basename($admin_screen) ] = $admin_screen;
277
+				}
278
+			}
279
+		}
280
+		if (empty($installed_refs)) {
281
+			$error_msg[] = __(
282
+				'There are no EE_Admin pages detected, it looks like EE did not install properly',
283
+				'event_espresso'
284
+			);
285
+			$error_msg[] = $error_msg[0] . "\r\n"
286
+						   . sprintf(
287
+							   __(
288
+								   'Check that the %s folder exists and is writable. Maybe try deactivating, then reactivating Event Espresso again.',
289
+								   'event_espresso'
290
+							   ),
291
+							   EE_ADMIN_PAGES
292
+						   );
293
+			throw new EE_Error(implode('||', $error_msg));
294
+		}
295
+		// this just checks the caffeinated folder and takes care of setting up any caffeinated stuff.
296
+		$installed_refs = $this->_set_caffeinated($installed_refs);
297
+		// allow plugins to add in their own pages (note at this point they will need to have an autoloader defined for their class) OR hook into EEH_Autoloader::load_admin_page() to add their path.;
298
+		$installed_refs = apply_filters(
299
+			'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs',
300
+			$installed_refs
301
+		);
302
+		$this->_caffeinated_extends = apply_filters(
303
+			'FHEE__EE_Admin_Page_Loader___get_installed_pages__caffeinated_extends',
304
+			$this->_caffeinated_extends
305
+		);
306
+		// loop through admin pages and setup the $_installed_pages array.
307
+		$hooks_ref = array();
308
+		foreach ($installed_refs as $page => $path) {
309
+			// set autoloaders for our admin page classes based on included path information
310
+			EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($path);
311
+			// build list of installed pages
312
+			$this->_installed_pages[ $page ] = $this->_load_admin_page($page, $path);
313
+			// verify returned object
314
+			if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
315
+				if (! $this->_installed_pages[ $page ]->get_menu_map() instanceof EE_Admin_Page_Menu_Map) {
316
+					continue;
317
+				}
318
+				// skip if in full maintenance mode and maintenance_mode_parent is set
319
+				$maintenance_mode_parent = $this->_installed_pages[ $page ]->get_menu_map()->maintenance_mode_parent;
320
+				if (empty($maintenance_mode_parent)
321
+					&& EE_Maintenance_Mode::instance()->level() === EE_Maintenance_Mode::level_2_complete_maintenance
322
+				) {
323
+					unset($installed_refs[ $page ]);
324
+					continue;
325
+				}
326
+				$menu_slug = $this->_installed_pages[ $page ]->get_menu_map()->menu_slug;
327
+				$this->_menu_slugs[ $menu_slug ] = $page;
328
+				// flag for register hooks on extended pages b/c extended pages use the default INIT.
329
+				$extend = false;
330
+				// now that we've got the admin_init objects... lets see if there are any caffeinated pages extending the originals.  If there are then let's hook into the init admin filter and load our extend instead.
331
+				if (isset($this->_caffeinated_extends[ $page ])) {
332
+					$this->_current_caf_extend_slug = $page;
333
+					$admin_page_name = $this->_installed_pages[ $page ]->get_admin_page_name();
334
+					$caf_path = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['path'];
335
+					$caf_admin_page = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['admin_page'];
336
+					add_filter(
337
+						"FHEE__EE_Admin_Page_Init___initialize_admin_page__path_to_file__{$menu_slug}_{$admin_page_name}",
338
+						function ($path_to_file) use ($caf_path) {
339
+							return $caf_path;
340
+						}
341
+					);
342
+					add_filter(
343
+						"FHEE__EE_Admin_Page_Init___initialize_admin_page__admin_page__{$menu_slug}_{$admin_page_name}",
344
+						function ($admin_page) use ($caf_admin_page) {
345
+							return $caf_admin_page;
346
+						}
347
+					);
348
+					$extend = true;
349
+				}
350
+				// let's do the registered hooks
351
+				$extended_hooks = $this->_installed_pages[ $page ]->register_hooks($extend);
352
+				$hooks_ref = array_merge($hooks_ref, $extended_hooks);
353
+			}
354
+		}
355
+		// the hooks_ref is all the pages where we have $extended _Hooks files that will extend a class in a different folder.  So we want to make sure we load the file for the parent.
356
+		// first make sure we've got unique values
357
+		$hooks_ref = array_unique($hooks_ref);
358
+		// now let's loop and require!
359
+		foreach ($hooks_ref as $path) {
360
+			require_once($path);
361
+		}
362
+		// make sure we have menu slugs global setup. Used in EE_Admin_Page->page_setup() to ensure we don't do a full class load for an admin page that isn't requested.
363
+		global $ee_menu_slugs;
364
+		$ee_menu_slugs = $this->_menu_slugs;
365
+		// we need to loop again to run any early code
366
+		foreach ($installed_refs as $page => $path) {
367
+			if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
368
+				$this->_installed_pages[ $page ]->do_initial_loads();
369
+			}
370
+		}
371
+		do_action('AHEE__EE_Admin_Page_Loader___get_installed_pages_loaded', $this->_installed_pages);
372
+	}
373
+
374
+
375
+	/**
376
+	 * get_admin_page_object
377
+	 *
378
+	 * @param string $page_slug
379
+	 * @return EE_Admin_Page
380
+	 */
381
+	public function get_admin_page_object($page_slug = '')
382
+	{
383
+		if (isset($this->_installed_pages[ $page_slug ])) {
384
+			return $this->_installed_pages[ $page_slug ]->loaded_page_object();
385
+		}
386
+		return null;
387
+	}
388
+
389
+
390
+	/**
391
+	 * _get_classname_for_admin_page
392
+	 * generates an "Admin Page" class based on the directory  name
393
+	 *
394
+	 * @param $dir_name
395
+	 * @return string
396
+	 */
397
+	private function _get_classname_for_admin_page($dir_name = '')
398
+	{
399
+		$class_name = str_replace('_', ' ', strtolower($dir_name));
400
+		return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page';
401
+	}
402
+
403
+
404
+	/**
405
+	 * _get_classname_for_admin_init_page
406
+	 * generates an "Admin Page Init" class based on the directory  name
407
+	 *
408
+	 * @param $dir_name
409
+	 * @return string
410
+	 */
411
+	private function _get_classname_for_admin_init_page($dir_name = '')
412
+	{
413
+		$class_name = str_replace('_', ' ', strtolower($dir_name));
414
+		return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page_Init';
415
+	}
416
+
417
+
418
+	/**
419
+	 * _load_admin_page
420
+	 * Loads and instantiates page_init object for a single EE_admin page.
421
+	 *
422
+	 * @param  string $page page_reference
423
+	 * @param string  $path
424
+	 * @throws EE_Error
425
+	 * @return object|bool  return page object if valid, bool false if not.
426
+	 */
427
+	private function _load_admin_page($page = '', $path = '')
428
+	{
429
+		$class_name = $this->_get_classname_for_admin_init_page($page);
430
+		EE_Registry::instance()->load_file($path, $class_name, 'core');
431
+		if (! class_exists($class_name)) {
432
+			$inner_error_msg = '<br />'
433
+							   . sprintf(
434
+								   esc_html__(
435
+									   'Make sure you have %1$s defined. If this is a non-EE-core admin page then you also must have an autoloader in place for your class',
436
+									   'event_espresso'
437
+								   ),
438
+								   '<strong>' . $class_name . '</strong>'
439
+							   );
440
+			$error_msg[] = sprintf(
441
+				__('Something went wrong with loading the %s admin page.', 'event_espresso'),
442
+				$page
443
+			);
444
+			$error_msg[] = $error_msg[0]
445
+						   . "\r\n"
446
+						   . sprintf(
447
+							   esc_html__(
448
+								   'There is no Init class in place for the %s admin page.',
449
+								   'event_espresso'
450
+							   ),
451
+							   $page
452
+						   )
453
+						   . $inner_error_msg;
454
+			throw new EE_Error(implode('||', $error_msg));
455
+		}
456
+		$a = new ReflectionClass($class_name);
457
+		return $a->newInstance();
458
+	}
459
+
460
+
461
+	/**
462
+	 * set_menus
463
+	 * This method sets up the menus for EE Admin Pages
464
+	 *
465
+	 * @access private
466
+	 * @return void
467
+	 */
468
+	public function set_menus()
469
+	{
470
+		// prep the menu pages (sort, group.)
471
+		$this->_prep_pages();
472
+		foreach ($this->_prepped_menu_maps as $menu_map) {
473
+			if (EE_Registry::instance()->CAP->current_user_can($menu_map->capability, $menu_map->menu_slug)) {
474
+				$menu_map->add_menu_page(false);
475
+			}
476
+		}
477
+	}
478
+
479
+
480
+	/**
481
+	 * set_network_menus
482
+	 * This method sets up the menus for network EE Admin Pages.
483
+	 * Almost identical to EE_Admin_Page_Loader::set_menus() except pages
484
+	 * are only added to the menu map if they are intended for the admin menu
485
+	 *
486
+	 * @return void
487
+	 */
488
+	public function set_network_menus()
489
+	{
490
+		$this->_prep_pages();
491
+		foreach ($this->_prepped_menu_maps as $menu_map) {
492
+			if (EE_Registry::instance()->CAP->current_user_can($menu_map->capability, $menu_map->menu_slug)) {
493
+				$menu_map->add_menu_page(true);
494
+			}
495
+		}
496
+	}
497
+
498
+
499
+	/**
500
+	 * _prep_pages
501
+	 * sets the _prepped_menu_maps property
502
+	 *
503
+	 * @access private
504
+	 * @throws EE_Error
505
+	 * @return void
506
+	 */
507
+	private function _prep_pages()
508
+	{
509
+		$pages_array = array();
510
+		// rearrange _admin_menu_groups to be indexed by group slug.
511
+		$menu_groups = $this->_rearrange_menu_groups();
512
+		foreach ($this->_installed_pages as $page) {
513
+			if ($page instanceof EE_Admin_page_Init) {
514
+				$page_map = $page->get_menu_map();
515
+				// if we've got an array then the menu map is in the old format so let's throw a persistent notice that the admin system isn't setup correctly for this item.
516
+				if (is_array($page_map) || empty($page_map)) {
517
+					new PersistentAdminNotice(
518
+						'menu_map_warning_' . str_replace(' ', '_', $page->label) . '_' . EVENT_ESPRESSO_VERSION,
519
+						sprintf(
520
+							__(
521
+								'The admin page for %s was not correctly setup because it is using an older method for integrating with Event Espresso Core.  This means that full functionality for this component is not available.  This error message usually appears with an Add-on that is out of date.  Make sure you update all your Event Espresso 4 add-ons to the latest version to ensure they have necessary compatibility updates in place.',
522
+								'event_espresso'
523
+							),
524
+							$page->label
525
+						)
526
+					);
527
+					continue;
528
+				}
529
+				// if page map is NOT a EE_Admin_Page_Menu_Map object then throw error.
530
+				if (! $page_map instanceof EE_Admin_Page_Menu_Map) {
531
+					throw new EE_Error(
532
+						sprintf(
533
+							__(
534
+								'The menu map for %s must be an EE_Admin_Page_Menu_Map object.  Instead it is %s.  Please double check that the menu map has been configured correctly.',
535
+								'event_espresso'
536
+							),
537
+							$page->label,
538
+							$page_map
539
+						)
540
+					);
541
+				}
542
+				// use the maintenance_mode_parent property and maintenance mode status to determine if this page even gets added to array.
543
+				if (empty($page_map->maintenance_mode_parent)
544
+					&& EE_Maintenance_Mode::instance()->level()
545
+					   == EE_Maintenance_Mode::level_2_complete_maintenance) {
546
+					continue;
547
+				}
548
+				// assign to group (remember $page_map has the admin page stored in it).
549
+				$pages_array[ $page_map->menu_group ][] = $page_map;
550
+			}
551
+		}
552
+		if (empty($pages_array)) {
553
+			throw new EE_Error(__('Something went wrong when prepping the admin pages', 'event_espresso'));
554
+		}
555
+		// let's sort the groups, make sure it's a valid group, add header (if to show).
556
+		foreach ($pages_array as $group => $menu_maps) {
557
+			// valid_group?
558
+			if (! array_key_exists($group, $menu_groups)) {
559
+				continue;
560
+			}
561
+			// sort pages.
562
+			usort($menu_maps, array($this, '_sort_menu_maps'));
563
+			// prepend header
564
+			array_unshift($menu_maps, $menu_groups[ $group ]);
565
+			// reset $pages_array with prepped data
566
+			$pages_array[ $group ] = $menu_maps;
567
+		}
568
+		// now let's setup the _prepped_menu_maps property
569
+		foreach ($menu_groups as $group => $group_objs) {
570
+			if (isset($pages_array[ $group ])) {
571
+				$this->_prepped_menu_maps = array_merge($this->_prepped_menu_maps, $pages_array[ $group ]);
572
+			}
573
+		}/**/
574
+	}
575
+
576
+
577
+	/**
578
+	 * This method is the "workhorse" for detecting and setting up caffeinated functionality.
579
+	 * In this method there are three checks being done:
580
+	 * 1. Do we have any NEW admin page sets.  If we do, lets add them into the menu setup (via the $installed_refs
581
+	 * array) etc.  (new page sets are found in caffeinated/new/{page})
582
+	 * 2. Do we have any EXTENDED page sets.  Basically an extended EE_Admin Page extends the core {child}_Admin_Page
583
+	 * class.  eg. would be caffeinated/extend/events/Extend_Events_Admin_Page.core.php and in there would be a class:
584
+	 * Extend_Events_Admin_Page extends Events_Admin_Page.
585
+	 * 3. Do we have any files just for setting up hooks into other core pages.  The files can be any name in
586
+	 * "caffeinated/hooks" EXCEPT they need a ".class.php" extension and the file name must correspond with the
587
+	 * classname inside.  These classes are instantiated really early so that any hooks in them are run before the
588
+	 * corresponding apply_filters/do_actions that are found in any future loaded EE_Admin pages (INCLUDING caffeinated
589
+	 * admin_pages)
590
+	 *
591
+	 * @param array $installed_refs the original installed_refs array that may contain our NEW EE_Admin_Pages to be
592
+	 *                              loaded.
593
+	 * @return array
594
+	 */
595
+	private function _set_caffeinated($installed_refs)
596
+	{
597
+
598
+		// first let's check if there IS a caffeinated folder. If there is not then lets get out.
599
+		if (! is_dir(EE_PLUGIN_DIR_PATH . 'caffeinated/admin') || (defined('EE_DECAF') && EE_DECAF)) {
600
+			return $installed_refs;
601
+		}
602
+		$this->_define_caffeinated_constants();
603
+		$exclude = array('tickets');
604
+		// okay let's setup an "New" pages first (we'll return installed refs later)
605
+		$new_admin_screens = glob(EE_CORE_CAF_ADMIN . 'new/*', GLOB_ONLYDIR);
606
+		if ($new_admin_screens) {
607
+			foreach ($new_admin_screens as $admin_screen) {
608
+				// files and anything in the exclude array need not apply
609
+				if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
610
+					// these folders represent the different NEW EE admin pages
611
+					$installed_refs[ basename($admin_screen) ] = $admin_screen;
612
+					// set autoloaders for our admin page classes based on included path information
613
+					EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($admin_screen);
614
+				}
615
+			}
616
+		}
617
+		// let's see if there are any EXTENDS to setup in the $_caffeinated_extends array (that will be used later for hooking into the _initialize_admin_age in the related core_init admin page)
618
+		$extends = glob(EE_CORE_CAF_ADMIN . 'extend/*', GLOB_ONLYDIR);
619
+		if ($extends) {
620
+			foreach ($extends as $extend) {
621
+				if (is_dir($extend)) {
622
+					$extend_ref = basename($extend);
623
+					// now let's make sure there is a file that matches the expected format
624
+					$filename = str_replace(
625
+						' ',
626
+						'_',
627
+						ucwords(
628
+							str_replace(
629
+								'_',
630
+								' ',
631
+								$extend_ref
632
+							)
633
+						)
634
+					);
635
+					$filename = 'Extend_' . $filename . '_Admin_Page';
636
+					$this->_caffeinated_extends[ $extend_ref ]['path'] = str_replace(
637
+						array('\\', '/'),
638
+						'/',
639
+						EE_CORE_CAF_ADMIN
640
+						. 'extend/'
641
+						. $extend_ref
642
+						. '/'
643
+						. $filename
644
+						. '.core.php'
645
+					);
646
+					$this->_caffeinated_extends[ $extend_ref ]['admin_page'] = $filename;
647
+					// set autoloaders for our admin page classes based on included path information
648
+					EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($extend);
649
+				}
650
+			}
651
+		}
652
+		// let's see if there are any HOOK files and instantiate them if there are (so that hooks are loaded early!).
653
+		$ee_admin_hooks = array();
654
+		$hooks = glob(EE_CORE_CAF_ADMIN . 'hooks/*.class.php');
655
+		if ($hooks) {
656
+			foreach ($hooks as $hook) {
657
+				if (is_readable($hook)) {
658
+					require_once $hook;
659
+					$classname = str_replace(EE_CORE_CAF_ADMIN . 'hooks/', '', $hook);
660
+					$classname = str_replace('.class.php', '', $classname);
661
+					if (class_exists($classname)) {
662
+						$a = new ReflectionClass($classname);
663
+						$ee_admin_hooks[] = $a->newInstance();
664
+					}
665
+				}
666
+			}
667
+		}/**/
668
+		$ee_admin_hooks = apply_filters('FHEE__EE_Admin_Page_Loader__set_caffeinated__ee_admin_hooks', $ee_admin_hooks);
669
+		return $installed_refs;
670
+	}
671
+
672
+
673
+	/**
674
+	 * Utility method for sorting the _menu_maps (callback for usort php function)
675
+	 *
676
+	 * @since  4.4.0
677
+	 * @param  EE_Admin_Page_Menu_Map $a menu_map object
678
+	 * @param  EE_Admin_Page_Menu_Map $b being compared to
679
+	 * @return int    sort order
680
+	 */
681
+	private function _sort_menu_maps(EE_Admin_Page_Menu_Map $a, EE_Admin_Page_Menu_Map $b)
682
+	{
683
+		if ($a->menu_order == $b->menu_order) {
684
+			return 0;
685
+		}
686
+		return ($a->menu_order < $b->menu_order) ? -1 : 1;
687
+	}
688
+
689
+
690
+	/**
691
+	 * _default_header_link
692
+	 * This is just a dummy method to use with header submenu items
693
+	 *
694
+	 * @return bool false
695
+	 */
696
+	public function _default_header_link()
697
+	{
698
+		return false;
699
+	}
700 700
 }
Please login to merge, or discard this patch.
Spacing   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -120,13 +120,13 @@  discard block
 block discarded – undo
120 120
      */
121 121
     private function _define_caffeinated_constants()
122 122
     {
123
-        if (! defined('EE_CORE_CAF_ADMIN')) {
124
-            define('EE_CORE_CAF_ADMIN', EE_PLUGIN_DIR_PATH . 'caffeinated/admin/');
125
-            define('EE_CORE_CAF_ADMIN_URL', EE_PLUGIN_DIR_URL . 'caffeinated/admin/');
126
-            define('EE_CORE_CAF_ADMIN_NEW', EE_CORE_CAF_ADMIN . 'new/');
127
-            define('EE_CORE_CAF_ADMIN_EXTEND', EE_CORE_CAF_ADMIN . 'extend/');
128
-            define('EE_CORE_CAF_ADMIN_EXTEND_URL', EE_CORE_CAF_ADMIN_URL . 'extend/');
129
-            define('EE_CORE_CAF_ADMIN_HOOKS', EE_CORE_CAF_ADMIN . 'hooks/');
123
+        if ( ! defined('EE_CORE_CAF_ADMIN')) {
124
+            define('EE_CORE_CAF_ADMIN', EE_PLUGIN_DIR_PATH.'caffeinated/admin/');
125
+            define('EE_CORE_CAF_ADMIN_URL', EE_PLUGIN_DIR_URL.'caffeinated/admin/');
126
+            define('EE_CORE_CAF_ADMIN_NEW', EE_CORE_CAF_ADMIN.'new/');
127
+            define('EE_CORE_CAF_ADMIN_EXTEND', EE_CORE_CAF_ADMIN.'extend/');
128
+            define('EE_CORE_CAF_ADMIN_EXTEND_URL', EE_CORE_CAF_ADMIN_URL.'extend/');
129
+            define('EE_CORE_CAF_ADMIN_HOOKS', EE_CORE_CAF_ADMIN.'hooks/');
130 130
         }
131 131
     }
132 132
 
@@ -237,7 +237,7 @@  discard block
 block discarded – undo
237 237
         // first let's order the menu groups by their internal menu order (note usort type hinting to ensure the incoming array is EE_Admin_Page_Menu_Map objects )
238 238
         usort($this->_admin_menu_groups, array($this, '_sort_menu_maps'));
239 239
         foreach ($this->_admin_menu_groups as $group) {
240
-            if (! $group instanceof EE_Admin_Page_Menu_Group) {
240
+            if ( ! $group instanceof EE_Admin_Page_Menu_Group) {
241 241
                 throw new EE_Error(
242 242
                     sprintf(
243 243
                         __(
@@ -248,7 +248,7 @@  discard block
 block discarded – undo
248 248
                     )
249 249
                 );
250 250
             }
251
-            $groups[ $group->menu_slug ] = $group;
251
+            $groups[$group->menu_slug] = $group;
252 252
         }
253 253
         return $groups;
254 254
     }
@@ -267,13 +267,13 @@  discard block
 block discarded – undo
267 267
         $installed_refs = array();
268 268
         $exclude = array('assets', 'templates');
269 269
         // grab everything in the  admin core directory
270
-        $admin_screens = glob(EE_ADMIN_PAGES . '*', GLOB_ONLYDIR);
270
+        $admin_screens = glob(EE_ADMIN_PAGES.'*', GLOB_ONLYDIR);
271 271
         if ($admin_screens) {
272 272
             foreach ($admin_screens as $admin_screen) {
273 273
                 // files and anything in the exclude array need not apply
274 274
                 if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
275 275
                     // these folders represent the different EE admin pages
276
-                    $installed_refs[ basename($admin_screen) ] = $admin_screen;
276
+                    $installed_refs[basename($admin_screen)] = $admin_screen;
277 277
                 }
278 278
             }
279 279
         }
@@ -282,7 +282,7 @@  discard block
 block discarded – undo
282 282
                 'There are no EE_Admin pages detected, it looks like EE did not install properly',
283 283
                 'event_espresso'
284 284
             );
285
-            $error_msg[] = $error_msg[0] . "\r\n"
285
+            $error_msg[] = $error_msg[0]."\r\n"
286 286
                            . sprintf(
287 287
                                __(
288 288
                                    'Check that the %s folder exists and is writable. Maybe try deactivating, then reactivating Event Espresso again.',
@@ -309,46 +309,46 @@  discard block
 block discarded – undo
309 309
             // set autoloaders for our admin page classes based on included path information
310 310
             EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($path);
311 311
             // build list of installed pages
312
-            $this->_installed_pages[ $page ] = $this->_load_admin_page($page, $path);
312
+            $this->_installed_pages[$page] = $this->_load_admin_page($page, $path);
313 313
             // verify returned object
314
-            if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
315
-                if (! $this->_installed_pages[ $page ]->get_menu_map() instanceof EE_Admin_Page_Menu_Map) {
314
+            if ($this->_installed_pages[$page] instanceof EE_Admin_Page_Init) {
315
+                if ( ! $this->_installed_pages[$page]->get_menu_map() instanceof EE_Admin_Page_Menu_Map) {
316 316
                     continue;
317 317
                 }
318 318
                 // skip if in full maintenance mode and maintenance_mode_parent is set
319
-                $maintenance_mode_parent = $this->_installed_pages[ $page ]->get_menu_map()->maintenance_mode_parent;
319
+                $maintenance_mode_parent = $this->_installed_pages[$page]->get_menu_map()->maintenance_mode_parent;
320 320
                 if (empty($maintenance_mode_parent)
321 321
                     && EE_Maintenance_Mode::instance()->level() === EE_Maintenance_Mode::level_2_complete_maintenance
322 322
                 ) {
323
-                    unset($installed_refs[ $page ]);
323
+                    unset($installed_refs[$page]);
324 324
                     continue;
325 325
                 }
326
-                $menu_slug = $this->_installed_pages[ $page ]->get_menu_map()->menu_slug;
327
-                $this->_menu_slugs[ $menu_slug ] = $page;
326
+                $menu_slug = $this->_installed_pages[$page]->get_menu_map()->menu_slug;
327
+                $this->_menu_slugs[$menu_slug] = $page;
328 328
                 // flag for register hooks on extended pages b/c extended pages use the default INIT.
329 329
                 $extend = false;
330 330
                 // now that we've got the admin_init objects... lets see if there are any caffeinated pages extending the originals.  If there are then let's hook into the init admin filter and load our extend instead.
331
-                if (isset($this->_caffeinated_extends[ $page ])) {
331
+                if (isset($this->_caffeinated_extends[$page])) {
332 332
                     $this->_current_caf_extend_slug = $page;
333
-                    $admin_page_name = $this->_installed_pages[ $page ]->get_admin_page_name();
334
-                    $caf_path = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['path'];
335
-                    $caf_admin_page = $this->_caffeinated_extends[ $this->_current_caf_extend_slug ]['admin_page'];
333
+                    $admin_page_name = $this->_installed_pages[$page]->get_admin_page_name();
334
+                    $caf_path = $this->_caffeinated_extends[$this->_current_caf_extend_slug]['path'];
335
+                    $caf_admin_page = $this->_caffeinated_extends[$this->_current_caf_extend_slug]['admin_page'];
336 336
                     add_filter(
337 337
                         "FHEE__EE_Admin_Page_Init___initialize_admin_page__path_to_file__{$menu_slug}_{$admin_page_name}",
338
-                        function ($path_to_file) use ($caf_path) {
338
+                        function($path_to_file) use ($caf_path) {
339 339
                             return $caf_path;
340 340
                         }
341 341
                     );
342 342
                     add_filter(
343 343
                         "FHEE__EE_Admin_Page_Init___initialize_admin_page__admin_page__{$menu_slug}_{$admin_page_name}",
344
-                        function ($admin_page) use ($caf_admin_page) {
344
+                        function($admin_page) use ($caf_admin_page) {
345 345
                             return $caf_admin_page;
346 346
                         }
347 347
                     );
348 348
                     $extend = true;
349 349
                 }
350 350
                 // let's do the registered hooks
351
-                $extended_hooks = $this->_installed_pages[ $page ]->register_hooks($extend);
351
+                $extended_hooks = $this->_installed_pages[$page]->register_hooks($extend);
352 352
                 $hooks_ref = array_merge($hooks_ref, $extended_hooks);
353 353
             }
354 354
         }
@@ -364,8 +364,8 @@  discard block
 block discarded – undo
364 364
         $ee_menu_slugs = $this->_menu_slugs;
365 365
         // we need to loop again to run any early code
366 366
         foreach ($installed_refs as $page => $path) {
367
-            if ($this->_installed_pages[ $page ] instanceof EE_Admin_Page_Init) {
368
-                $this->_installed_pages[ $page ]->do_initial_loads();
367
+            if ($this->_installed_pages[$page] instanceof EE_Admin_Page_Init) {
368
+                $this->_installed_pages[$page]->do_initial_loads();
369 369
             }
370 370
         }
371 371
         do_action('AHEE__EE_Admin_Page_Loader___get_installed_pages_loaded', $this->_installed_pages);
@@ -380,8 +380,8 @@  discard block
 block discarded – undo
380 380
      */
381 381
     public function get_admin_page_object($page_slug = '')
382 382
     {
383
-        if (isset($this->_installed_pages[ $page_slug ])) {
384
-            return $this->_installed_pages[ $page_slug ]->loaded_page_object();
383
+        if (isset($this->_installed_pages[$page_slug])) {
384
+            return $this->_installed_pages[$page_slug]->loaded_page_object();
385 385
         }
386 386
         return null;
387 387
     }
@@ -397,7 +397,7 @@  discard block
 block discarded – undo
397 397
     private function _get_classname_for_admin_page($dir_name = '')
398 398
     {
399 399
         $class_name = str_replace('_', ' ', strtolower($dir_name));
400
-        return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page';
400
+        return str_replace(' ', '_', ucwords($class_name)).'_Admin_Page';
401 401
     }
402 402
 
403 403
 
@@ -411,7 +411,7 @@  discard block
 block discarded – undo
411 411
     private function _get_classname_for_admin_init_page($dir_name = '')
412 412
     {
413 413
         $class_name = str_replace('_', ' ', strtolower($dir_name));
414
-        return str_replace(' ', '_', ucwords($class_name)) . '_Admin_Page_Init';
414
+        return str_replace(' ', '_', ucwords($class_name)).'_Admin_Page_Init';
415 415
     }
416 416
 
417 417
 
@@ -428,14 +428,14 @@  discard block
 block discarded – undo
428 428
     {
429 429
         $class_name = $this->_get_classname_for_admin_init_page($page);
430 430
         EE_Registry::instance()->load_file($path, $class_name, 'core');
431
-        if (! class_exists($class_name)) {
431
+        if ( ! class_exists($class_name)) {
432 432
             $inner_error_msg = '<br />'
433 433
                                . sprintf(
434 434
                                    esc_html__(
435 435
                                        'Make sure you have %1$s defined. If this is a non-EE-core admin page then you also must have an autoloader in place for your class',
436 436
                                        'event_espresso'
437 437
                                    ),
438
-                                   '<strong>' . $class_name . '</strong>'
438
+                                   '<strong>'.$class_name.'</strong>'
439 439
                                );
440 440
             $error_msg[] = sprintf(
441 441
                 __('Something went wrong with loading the %s admin page.', 'event_espresso'),
@@ -515,7 +515,7 @@  discard block
 block discarded – undo
515 515
                 // if we've got an array then the menu map is in the old format so let's throw a persistent notice that the admin system isn't setup correctly for this item.
516 516
                 if (is_array($page_map) || empty($page_map)) {
517 517
                     new PersistentAdminNotice(
518
-                        'menu_map_warning_' . str_replace(' ', '_', $page->label) . '_' . EVENT_ESPRESSO_VERSION,
518
+                        'menu_map_warning_'.str_replace(' ', '_', $page->label).'_'.EVENT_ESPRESSO_VERSION,
519 519
                         sprintf(
520 520
                             __(
521 521
                                 'The admin page for %s was not correctly setup because it is using an older method for integrating with Event Espresso Core.  This means that full functionality for this component is not available.  This error message usually appears with an Add-on that is out of date.  Make sure you update all your Event Espresso 4 add-ons to the latest version to ensure they have necessary compatibility updates in place.',
@@ -527,7 +527,7 @@  discard block
 block discarded – undo
527 527
                     continue;
528 528
                 }
529 529
                 // if page map is NOT a EE_Admin_Page_Menu_Map object then throw error.
530
-                if (! $page_map instanceof EE_Admin_Page_Menu_Map) {
530
+                if ( ! $page_map instanceof EE_Admin_Page_Menu_Map) {
531 531
                     throw new EE_Error(
532 532
                         sprintf(
533 533
                             __(
@@ -546,7 +546,7 @@  discard block
 block discarded – undo
546 546
                     continue;
547 547
                 }
548 548
                 // assign to group (remember $page_map has the admin page stored in it).
549
-                $pages_array[ $page_map->menu_group ][] = $page_map;
549
+                $pages_array[$page_map->menu_group][] = $page_map;
550 550
             }
551 551
         }
552 552
         if (empty($pages_array)) {
@@ -555,20 +555,20 @@  discard block
 block discarded – undo
555 555
         // let's sort the groups, make sure it's a valid group, add header (if to show).
556 556
         foreach ($pages_array as $group => $menu_maps) {
557 557
             // valid_group?
558
-            if (! array_key_exists($group, $menu_groups)) {
558
+            if ( ! array_key_exists($group, $menu_groups)) {
559 559
                 continue;
560 560
             }
561 561
             // sort pages.
562 562
             usort($menu_maps, array($this, '_sort_menu_maps'));
563 563
             // prepend header
564
-            array_unshift($menu_maps, $menu_groups[ $group ]);
564
+            array_unshift($menu_maps, $menu_groups[$group]);
565 565
             // reset $pages_array with prepped data
566
-            $pages_array[ $group ] = $menu_maps;
566
+            $pages_array[$group] = $menu_maps;
567 567
         }
568 568
         // now let's setup the _prepped_menu_maps property
569 569
         foreach ($menu_groups as $group => $group_objs) {
570
-            if (isset($pages_array[ $group ])) {
571
-                $this->_prepped_menu_maps = array_merge($this->_prepped_menu_maps, $pages_array[ $group ]);
570
+            if (isset($pages_array[$group])) {
571
+                $this->_prepped_menu_maps = array_merge($this->_prepped_menu_maps, $pages_array[$group]);
572 572
             }
573 573
         }/**/
574 574
     }
@@ -596,26 +596,26 @@  discard block
 block discarded – undo
596 596
     {
597 597
 
598 598
         // first let's check if there IS a caffeinated folder. If there is not then lets get out.
599
-        if (! is_dir(EE_PLUGIN_DIR_PATH . 'caffeinated/admin') || (defined('EE_DECAF') && EE_DECAF)) {
599
+        if ( ! is_dir(EE_PLUGIN_DIR_PATH.'caffeinated/admin') || (defined('EE_DECAF') && EE_DECAF)) {
600 600
             return $installed_refs;
601 601
         }
602 602
         $this->_define_caffeinated_constants();
603 603
         $exclude = array('tickets');
604 604
         // okay let's setup an "New" pages first (we'll return installed refs later)
605
-        $new_admin_screens = glob(EE_CORE_CAF_ADMIN . 'new/*', GLOB_ONLYDIR);
605
+        $new_admin_screens = glob(EE_CORE_CAF_ADMIN.'new/*', GLOB_ONLYDIR);
606 606
         if ($new_admin_screens) {
607 607
             foreach ($new_admin_screens as $admin_screen) {
608 608
                 // files and anything in the exclude array need not apply
609 609
                 if (is_dir($admin_screen) && ! in_array(basename($admin_screen), $exclude)) {
610 610
                     // these folders represent the different NEW EE admin pages
611
-                    $installed_refs[ basename($admin_screen) ] = $admin_screen;
611
+                    $installed_refs[basename($admin_screen)] = $admin_screen;
612 612
                     // set autoloaders for our admin page classes based on included path information
613 613
                     EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($admin_screen);
614 614
                 }
615 615
             }
616 616
         }
617 617
         // let's see if there are any EXTENDS to setup in the $_caffeinated_extends array (that will be used later for hooking into the _initialize_admin_age in the related core_init admin page)
618
-        $extends = glob(EE_CORE_CAF_ADMIN . 'extend/*', GLOB_ONLYDIR);
618
+        $extends = glob(EE_CORE_CAF_ADMIN.'extend/*', GLOB_ONLYDIR);
619 619
         if ($extends) {
620 620
             foreach ($extends as $extend) {
621 621
                 if (is_dir($extend)) {
@@ -632,8 +632,8 @@  discard block
 block discarded – undo
632 632
                             )
633 633
                         )
634 634
                     );
635
-                    $filename = 'Extend_' . $filename . '_Admin_Page';
636
-                    $this->_caffeinated_extends[ $extend_ref ]['path'] = str_replace(
635
+                    $filename = 'Extend_'.$filename.'_Admin_Page';
636
+                    $this->_caffeinated_extends[$extend_ref]['path'] = str_replace(
637 637
                         array('\\', '/'),
638 638
                         '/',
639 639
                         EE_CORE_CAF_ADMIN
@@ -643,7 +643,7 @@  discard block
 block discarded – undo
643 643
                         . $filename
644 644
                         . '.core.php'
645 645
                     );
646
-                    $this->_caffeinated_extends[ $extend_ref ]['admin_page'] = $filename;
646
+                    $this->_caffeinated_extends[$extend_ref]['admin_page'] = $filename;
647 647
                     // set autoloaders for our admin page classes based on included path information
648 648
                     EEH_Autoloader::instance()->register_autoloaders_for_each_file_in_folder($extend);
649 649
                 }
@@ -651,12 +651,12 @@  discard block
 block discarded – undo
651 651
         }
652 652
         // let's see if there are any HOOK files and instantiate them if there are (so that hooks are loaded early!).
653 653
         $ee_admin_hooks = array();
654
-        $hooks = glob(EE_CORE_CAF_ADMIN . 'hooks/*.class.php');
654
+        $hooks = glob(EE_CORE_CAF_ADMIN.'hooks/*.class.php');
655 655
         if ($hooks) {
656 656
             foreach ($hooks as $hook) {
657 657
                 if (is_readable($hook)) {
658 658
                     require_once $hook;
659
-                    $classname = str_replace(EE_CORE_CAF_ADMIN . 'hooks/', '', $hook);
659
+                    $classname = str_replace(EE_CORE_CAF_ADMIN.'hooks/', '', $hook);
660 660
                     $classname = str_replace('.class.php', '', $classname);
661 661
                     if (class_exists($classname)) {
662 662
                         $a = new ReflectionClass($classname);
Please login to merge, or discard this patch.
core/admin/EE_Admin_Page_Menu_Map.core.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -124,7 +124,7 @@
 block discarded – undo
124 124
      *
125 125
      * @param  array $menu_args           An array of arguments used to setup the menu
126 126
      *                                    properties on construct.
127
-     * @param  array $required            An array of keys that should be in the $menu_args, this
127
+     * @param  string[] $required            An array of keys that should be in the $menu_args, this
128 128
      *                                    is used to validate that the items that should be defined
129 129
      *                                    are present.
130 130
      * @return void
Please login to merge, or discard this patch.
Indentation   +357 added lines, -357 removed lines patch added patch discarded remove patch
@@ -11,257 +11,257 @@  discard block
 block discarded – undo
11 11
 {
12 12
 
13 13
 
14
-    /**
15
-     * The title for the menu page. (the page the menu links to)
16
-     *
17
-     * @since  4.4.0
18
-     * @var string
19
-     */
20
-    public $title;
21
-
22
-
23
-    /**
24
-     * The label for the menu item. (What shows up in the actual menu).
25
-     *
26
-     * @since 4.4.0
27
-     * @var string
28
-     */
29
-    public $menu_label;
30
-
31
-
32
-    /**
33
-     * What menu item is the parent of this menu item.
34
-     *
35
-     * @since 4.4.0
36
-     * @var string
37
-     */
38
-    public $parent_slug;
39
-
40
-
41
-    /**
42
-     * What capability is required to access this page.
43
-     *
44
-     * @since 4.4.0
45
-     * @var string
46
-     */
47
-    public $capability = 'administrator';
48
-
49
-
50
-    /**
51
-     * What slug should be used to reference this menu item.
52
-     *
53
-     * @since 4.4.0
54
-     * @var string
55
-     */
56
-    public $menu_slug;
57
-
58
-
59
-    /**
60
-     * The callback for displaying the page that the menu references.
61
-     *
62
-     * @since 4.4.0
63
-     * @var string
64
-     */
65
-    public $menu_callback;
66
-
67
-
68
-    /**
69
-     * The EE_Admin_Page_Init attached to this map.
70
-     *
71
-     * @var EE_Admin_Page_Init
72
-     */
73
-    public $admin_init_page;
74
-
75
-
76
-    /**
77
-     * The EE specific group this menu item belongs in (group slug).
78
-     *
79
-     * @since 4.4.0
80
-     * @var string
81
-     */
82
-    public $menu_group;
83
-
84
-
85
-    /**
86
-     * What order this item should be in the menu.
87
-     *
88
-     * @since 4.4.0
89
-     * @var int
90
-     */
91
-    public $menu_order;
92
-
93
-
94
-    const NONE = 0;
95
-    const BLOG_ADMIN_ONLY = 1;
96
-    const BLOG_AND_NETWORK_ADMIN = 2;
97
-    const NETWORK_ADMIN_ONLY = 3;
98
-
99
-
100
-    /**
101
-     * Whether this item is displayed in the menu or not.
102
-     * Sometimes an EE Admin Page needs to register itself but is not accessible via the WordPress
103
-     * admin menu.
104
-     *
105
-     * @since 4.4.0
106
-     * @var int
107
-     */
108
-    public $show_on_menu = self::BLOG_ADMIN_ONLY;
109
-
110
-
111
-    /**
112
-     * Menu maps can define a parent slug that gets used instead of the main parent slug for the menu when
113
-     * EE_Maintenance_Mode::level_2_complete_maintenance is active.
114
-     *
115
-     * @var bool
116
-     */
117
-    public $maintenance_mode_parent = '';
118
-
119
-
120
-    /**
121
-     * Constructor.
122
-     *
123
-     * @since 4.4.0
124
-     *
125
-     * @param  array $menu_args           An array of arguments used to setup the menu
126
-     *                                    properties on construct.
127
-     * @param  array $required            An array of keys that should be in the $menu_args, this
128
-     *                                    is used to validate that the items that should be defined
129
-     *                                    are present.
130
-     * @return void
131
-     */
132
-    public function __construct($menu_args, $required)
133
-    {
134
-        // filter all args before processing so plugins can manipulate various settings for menus.
135
-        $menu_args = apply_filters(
136
-            'FHEE__EE_Admin_Page_Menu_Map__construct__menu_args',
137
-            $menu_args,
138
-            $required,
139
-            get_class($this)
140
-        );
141
-
142
-
143
-        // verify that required keys are present in the incoming array.
144
-        $missing = array_diff((array) $required, array_keys((array) $menu_args));
145
-
146
-        if (! empty($missing)) {
147
-            throw new EE_Error(
148
-                sprintf(
149
-                    __(
150
-                        '%s is missing some expected keys in the argument array.  The following keys are missing: %s',
151
-                        'event_espresso'
152
-                    ),
153
-                    get_class($this),
154
-                    implode(', ', $missing)
155
-                )
156
-            );
157
-        }
158
-
159
-        // made it here okay, so let's set the properties!
160
-        foreach ($menu_args as $prop => $value) {
161
-            switch ($prop) {
162
-                case 'show_on_menu':
163
-                    $value = (int) $value;
164
-                    break;
165
-                case 'admin_init_page':
166
-                    if (in_array('admin_init_page', $required) && ! $value instanceof EE_Admin_Page_Init) {
167
-                        throw new EE_Error(
168
-                            sprintf(
169
-                                __(
170
-                                    'The value for the "admin_init_page" argument must be an instance of an EE_Admin_Page_Init object.  Instead %s was given as the value.',
171
-                                    'event_espresso'
172
-                                ),
173
-                                print_r($value, true)
174
-                            )
175
-                        );
176
-                    }
177
-                    break;
178
-                case 'menu_callback':
179
-                    break;
180
-
181
-                default:
182
-                    $value = (string) $value;
183
-                    break;
184
-            }
185
-            if (! EEH_Class_Tools::has_property($this, $prop)) {
186
-                throw new EE_Error(
187
-                    sprintf(
188
-                        __(
189
-                            'The $menu_args coming into %s has a index key (%s) representing a property that is not defined by the class.  Perhaps there is a typo?',
190
-                            'event_espresso'
191
-                        ),
192
-                        get_class($this),
193
-                        $prop
194
-                    )
195
-                );
196
-            }
197
-            $this->{$prop} = $value;
198
-        }
199
-
200
-        // filter capabilities (both static and dynamic)
201
-        $this->capability = apply_filters('FHEE_management_capability', $this->capability, null);
202
-        $this->capability = apply_filters('FHEE_' . $this->menu_slug . '_capability', $this->capability, null);
203
-
204
-        // Might need to change parent slug depending on maintenance mode.
205
-        if (! empty($this->maintenance_mode_parent)
206
-            && EE_Maintenance_Mode::instance()->level() == EE_Maintenance_Mode::level_2_complete_maintenance
207
-        ) {
208
-            $this->parent_slug = $this->maintenance_mode_parent;
209
-        }
210
-
211
-        // if empty menu_callback let's set default (but only if we have admin page init object)
212
-        if (empty($this->menu_callback) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
213
-            $this->menu_callback = array($this->admin_init_page, 'initialize_admin_page');
214
-        }
215
-    }
216
-
217
-
218
-    /**
219
-     * This method should define how the menu page gets added for this particular item
220
-     * and go ahead and define it.  Note that child classes MUST also return the result of
221
-     * the function used to register the WordPress admin page (the wp_page_slug string)
222
-     *
223
-     * @since  4.4.0
224
-     * @return string wp_page_slug.
225
-     */
226
-    abstract protected function _add_menu_page();
227
-
228
-
229
-    /**
230
-     * Called by client code to use this menu map for registering a WordPress admin page
231
-     *
232
-     * @param boolean $network_admin whether this is being added to the network admin page or not
233
-     * @since  4.4.0
234
-     */
235
-    public function add_menu_page($network_admin = false)
236
-    {
237
-
238
-        $show_on_menu_int = (int) $this->show_on_menu;
239
-        if (($network_admin
240
-             && in_array(
241
-                 $show_on_menu_int,
242
-                 array(self::BLOG_AND_NETWORK_ADMIN, self::NETWORK_ADMIN_ONLY),
243
-                 true
244
-             ))
245
-            ||
246
-            (! $network_admin
247
-             && in_array(
248
-                 $show_on_menu_int,
249
-                 array(self::BLOG_AND_NETWORK_ADMIN, self::BLOG_ADMIN_ONLY),
250
-                 true
251
-             ))) {
252
-            $wp_page_slug = $this->_add_menu_page();
253
-        } else {
254
-            $wp_page_slug = '';
255
-        }
256
-
257
-        if (! empty($wp_page_slug) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
258
-            try {
259
-                $this->admin_init_page->set_page_dependencies($wp_page_slug);
260
-            } catch (EE_Error $e) {
261
-                $e->get_error();
262
-            }
263
-        }
264
-    }
14
+	/**
15
+	 * The title for the menu page. (the page the menu links to)
16
+	 *
17
+	 * @since  4.4.0
18
+	 * @var string
19
+	 */
20
+	public $title;
21
+
22
+
23
+	/**
24
+	 * The label for the menu item. (What shows up in the actual menu).
25
+	 *
26
+	 * @since 4.4.0
27
+	 * @var string
28
+	 */
29
+	public $menu_label;
30
+
31
+
32
+	/**
33
+	 * What menu item is the parent of this menu item.
34
+	 *
35
+	 * @since 4.4.0
36
+	 * @var string
37
+	 */
38
+	public $parent_slug;
39
+
40
+
41
+	/**
42
+	 * What capability is required to access this page.
43
+	 *
44
+	 * @since 4.4.0
45
+	 * @var string
46
+	 */
47
+	public $capability = 'administrator';
48
+
49
+
50
+	/**
51
+	 * What slug should be used to reference this menu item.
52
+	 *
53
+	 * @since 4.4.0
54
+	 * @var string
55
+	 */
56
+	public $menu_slug;
57
+
58
+
59
+	/**
60
+	 * The callback for displaying the page that the menu references.
61
+	 *
62
+	 * @since 4.4.0
63
+	 * @var string
64
+	 */
65
+	public $menu_callback;
66
+
67
+
68
+	/**
69
+	 * The EE_Admin_Page_Init attached to this map.
70
+	 *
71
+	 * @var EE_Admin_Page_Init
72
+	 */
73
+	public $admin_init_page;
74
+
75
+
76
+	/**
77
+	 * The EE specific group this menu item belongs in (group slug).
78
+	 *
79
+	 * @since 4.4.0
80
+	 * @var string
81
+	 */
82
+	public $menu_group;
83
+
84
+
85
+	/**
86
+	 * What order this item should be in the menu.
87
+	 *
88
+	 * @since 4.4.0
89
+	 * @var int
90
+	 */
91
+	public $menu_order;
92
+
93
+
94
+	const NONE = 0;
95
+	const BLOG_ADMIN_ONLY = 1;
96
+	const BLOG_AND_NETWORK_ADMIN = 2;
97
+	const NETWORK_ADMIN_ONLY = 3;
98
+
99
+
100
+	/**
101
+	 * Whether this item is displayed in the menu or not.
102
+	 * Sometimes an EE Admin Page needs to register itself but is not accessible via the WordPress
103
+	 * admin menu.
104
+	 *
105
+	 * @since 4.4.0
106
+	 * @var int
107
+	 */
108
+	public $show_on_menu = self::BLOG_ADMIN_ONLY;
109
+
110
+
111
+	/**
112
+	 * Menu maps can define a parent slug that gets used instead of the main parent slug for the menu when
113
+	 * EE_Maintenance_Mode::level_2_complete_maintenance is active.
114
+	 *
115
+	 * @var bool
116
+	 */
117
+	public $maintenance_mode_parent = '';
118
+
119
+
120
+	/**
121
+	 * Constructor.
122
+	 *
123
+	 * @since 4.4.0
124
+	 *
125
+	 * @param  array $menu_args           An array of arguments used to setup the menu
126
+	 *                                    properties on construct.
127
+	 * @param  array $required            An array of keys that should be in the $menu_args, this
128
+	 *                                    is used to validate that the items that should be defined
129
+	 *                                    are present.
130
+	 * @return void
131
+	 */
132
+	public function __construct($menu_args, $required)
133
+	{
134
+		// filter all args before processing so plugins can manipulate various settings for menus.
135
+		$menu_args = apply_filters(
136
+			'FHEE__EE_Admin_Page_Menu_Map__construct__menu_args',
137
+			$menu_args,
138
+			$required,
139
+			get_class($this)
140
+		);
141
+
142
+
143
+		// verify that required keys are present in the incoming array.
144
+		$missing = array_diff((array) $required, array_keys((array) $menu_args));
145
+
146
+		if (! empty($missing)) {
147
+			throw new EE_Error(
148
+				sprintf(
149
+					__(
150
+						'%s is missing some expected keys in the argument array.  The following keys are missing: %s',
151
+						'event_espresso'
152
+					),
153
+					get_class($this),
154
+					implode(', ', $missing)
155
+				)
156
+			);
157
+		}
158
+
159
+		// made it here okay, so let's set the properties!
160
+		foreach ($menu_args as $prop => $value) {
161
+			switch ($prop) {
162
+				case 'show_on_menu':
163
+					$value = (int) $value;
164
+					break;
165
+				case 'admin_init_page':
166
+					if (in_array('admin_init_page', $required) && ! $value instanceof EE_Admin_Page_Init) {
167
+						throw new EE_Error(
168
+							sprintf(
169
+								__(
170
+									'The value for the "admin_init_page" argument must be an instance of an EE_Admin_Page_Init object.  Instead %s was given as the value.',
171
+									'event_espresso'
172
+								),
173
+								print_r($value, true)
174
+							)
175
+						);
176
+					}
177
+					break;
178
+				case 'menu_callback':
179
+					break;
180
+
181
+				default:
182
+					$value = (string) $value;
183
+					break;
184
+			}
185
+			if (! EEH_Class_Tools::has_property($this, $prop)) {
186
+				throw new EE_Error(
187
+					sprintf(
188
+						__(
189
+							'The $menu_args coming into %s has a index key (%s) representing a property that is not defined by the class.  Perhaps there is a typo?',
190
+							'event_espresso'
191
+						),
192
+						get_class($this),
193
+						$prop
194
+					)
195
+				);
196
+			}
197
+			$this->{$prop} = $value;
198
+		}
199
+
200
+		// filter capabilities (both static and dynamic)
201
+		$this->capability = apply_filters('FHEE_management_capability', $this->capability, null);
202
+		$this->capability = apply_filters('FHEE_' . $this->menu_slug . '_capability', $this->capability, null);
203
+
204
+		// Might need to change parent slug depending on maintenance mode.
205
+		if (! empty($this->maintenance_mode_parent)
206
+			&& EE_Maintenance_Mode::instance()->level() == EE_Maintenance_Mode::level_2_complete_maintenance
207
+		) {
208
+			$this->parent_slug = $this->maintenance_mode_parent;
209
+		}
210
+
211
+		// if empty menu_callback let's set default (but only if we have admin page init object)
212
+		if (empty($this->menu_callback) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
213
+			$this->menu_callback = array($this->admin_init_page, 'initialize_admin_page');
214
+		}
215
+	}
216
+
217
+
218
+	/**
219
+	 * This method should define how the menu page gets added for this particular item
220
+	 * and go ahead and define it.  Note that child classes MUST also return the result of
221
+	 * the function used to register the WordPress admin page (the wp_page_slug string)
222
+	 *
223
+	 * @since  4.4.0
224
+	 * @return string wp_page_slug.
225
+	 */
226
+	abstract protected function _add_menu_page();
227
+
228
+
229
+	/**
230
+	 * Called by client code to use this menu map for registering a WordPress admin page
231
+	 *
232
+	 * @param boolean $network_admin whether this is being added to the network admin page or not
233
+	 * @since  4.4.0
234
+	 */
235
+	public function add_menu_page($network_admin = false)
236
+	{
237
+
238
+		$show_on_menu_int = (int) $this->show_on_menu;
239
+		if (($network_admin
240
+			 && in_array(
241
+				 $show_on_menu_int,
242
+				 array(self::BLOG_AND_NETWORK_ADMIN, self::NETWORK_ADMIN_ONLY),
243
+				 true
244
+			 ))
245
+			||
246
+			(! $network_admin
247
+			 && in_array(
248
+				 $show_on_menu_int,
249
+				 array(self::BLOG_AND_NETWORK_ADMIN, self::BLOG_ADMIN_ONLY),
250
+				 true
251
+			 ))) {
252
+			$wp_page_slug = $this->_add_menu_page();
253
+		} else {
254
+			$wp_page_slug = '';
255
+		}
256
+
257
+		if (! empty($wp_page_slug) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
258
+			try {
259
+				$this->admin_init_page->set_page_dependencies($wp_page_slug);
260
+			} catch (EE_Error $e) {
261
+				$e->get_error();
262
+			}
263
+		}
264
+	}
265 265
 }
266 266
 
267 267
 
@@ -275,75 +275,75 @@  discard block
 block discarded – undo
275 275
 class EE_Admin_Page_Main_Menu extends EE_Admin_Page_Menu_Map
276 276
 {
277 277
 
278
-    /**
279
-     * If included int incoming params, then this class will also register a Sub Menue Admin page with a different
280
-     * subtitle than the main menu item.
281
-     *
282
-     * @since 4.4.0
283
-     *
284
-     * @var string
285
-     */
286
-    public $subtitle;
287
-
288
-    /**
289
-     * The page to a icon used for this menu.
290
-     *
291
-     * @since  4.4.0
292
-     * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
293
-     *        for what can be set for this property.
294
-     * @var string
295
-     */
296
-    public $icon_url;
297
-
298
-
299
-    /**
300
-     * What position in the main menu order for the WP admin menu this menu item
301
-     * should show.
302
-     *
303
-     * @since  4.4.0
304
-     * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
305
-     *        for what can be set for this property.
306
-     * @var integer
307
-     */
308
-    public $position;
309
-
310
-
311
-    public function __construct($menu_args)
312
-    {
313
-        $required = array('menu_label', 'parent_slug', 'menu_slug', 'menu_group', 'menu_order', 'admin_init_page');
314
-
315
-        parent::__construct($menu_args, $required);
316
-
317
-        $this->position = ! empty($this->position) ? (int) $this->position : $this->position;
318
-    }
319
-
320
-
321
-    /**
322
-     * Uses the proper WP utility for registering a menu page for the main WP pages.
323
-     */
324
-    protected function _add_menu_page()
325
-    {
326
-        $main = add_menu_page(
327
-            $this->title,
328
-            $this->menu_label,
329
-            $this->capability,
330
-            $this->parent_slug,
331
-            $this->menu_callback,
332
-            $this->icon_url,
333
-            $this->position
334
-        );
335
-        if (! empty($this->subtitle)) {
336
-            add_submenu_page(
337
-                $this->parent_slug,
338
-                $this->subtitle,
339
-                $this->subtitle,
340
-                $this->capability,
341
-                $this->menu_slug,
342
-                $this->menu_callback
343
-            );
344
-        }
345
-        return $main;
346
-    }
278
+	/**
279
+	 * If included int incoming params, then this class will also register a Sub Menue Admin page with a different
280
+	 * subtitle than the main menu item.
281
+	 *
282
+	 * @since 4.4.0
283
+	 *
284
+	 * @var string
285
+	 */
286
+	public $subtitle;
287
+
288
+	/**
289
+	 * The page to a icon used for this menu.
290
+	 *
291
+	 * @since  4.4.0
292
+	 * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
293
+	 *        for what can be set for this property.
294
+	 * @var string
295
+	 */
296
+	public $icon_url;
297
+
298
+
299
+	/**
300
+	 * What position in the main menu order for the WP admin menu this menu item
301
+	 * should show.
302
+	 *
303
+	 * @since  4.4.0
304
+	 * @see    http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters
305
+	 *        for what can be set for this property.
306
+	 * @var integer
307
+	 */
308
+	public $position;
309
+
310
+
311
+	public function __construct($menu_args)
312
+	{
313
+		$required = array('menu_label', 'parent_slug', 'menu_slug', 'menu_group', 'menu_order', 'admin_init_page');
314
+
315
+		parent::__construct($menu_args, $required);
316
+
317
+		$this->position = ! empty($this->position) ? (int) $this->position : $this->position;
318
+	}
319
+
320
+
321
+	/**
322
+	 * Uses the proper WP utility for registering a menu page for the main WP pages.
323
+	 */
324
+	protected function _add_menu_page()
325
+	{
326
+		$main = add_menu_page(
327
+			$this->title,
328
+			$this->menu_label,
329
+			$this->capability,
330
+			$this->parent_slug,
331
+			$this->menu_callback,
332
+			$this->icon_url,
333
+			$this->position
334
+		);
335
+		if (! empty($this->subtitle)) {
336
+			add_submenu_page(
337
+				$this->parent_slug,
338
+				$this->subtitle,
339
+				$this->subtitle,
340
+				$this->capability,
341
+				$this->menu_slug,
342
+				$this->menu_callback
343
+			);
344
+		}
345
+		return $main;
346
+	}
347 347
 } //end EE_Admin_Page_Main_Menu
348 348
 
349 349
 
@@ -357,23 +357,23 @@  discard block
 block discarded – undo
357 357
 class EE_Admin_Page_Sub_Menu extends EE_Admin_Page_Main_Menu
358 358
 {
359 359
 
360
-    public function __construct($menu_args)
361
-    {
362
-        parent::__construct($menu_args);
363
-    }
364
-
365
-
366
-    protected function _add_menu_page()
367
-    {
368
-        return add_submenu_page(
369
-            $this->parent_slug,
370
-            $this->title,
371
-            $this->menu_label,
372
-            $this->capability,
373
-            $this->menu_slug,
374
-            $this->menu_callback
375
-        );
376
-    }
360
+	public function __construct($menu_args)
361
+	{
362
+		parent::__construct($menu_args);
363
+	}
364
+
365
+
366
+	protected function _add_menu_page()
367
+	{
368
+		return add_submenu_page(
369
+			$this->parent_slug,
370
+			$this->title,
371
+			$this->menu_label,
372
+			$this->capability,
373
+			$this->menu_slug,
374
+			$this->menu_callback
375
+		);
376
+	}
377 377
 }
378 378
 
379 379
 
@@ -392,28 +392,28 @@  discard block
 block discarded – undo
392 392
 {
393 393
 
394 394
 
395
-    public function __construct($menu_args = array())
396
-    {
397
-        $required = array('menu_label', 'menu_slug', 'menu_order', 'parent_slug');
398
-        parent::__construct($menu_args, $required);
399
-    }
395
+	public function __construct($menu_args = array())
396
+	{
397
+		$required = array('menu_label', 'menu_slug', 'menu_order', 'parent_slug');
398
+		parent::__construct($menu_args, $required);
399
+	}
400 400
 
401 401
 
402
-    protected function _add_menu_page()
403
-    {
404
-        return add_submenu_page(
405
-            $this->parent_slug,
406
-            $this->menu_label,
407
-            $this->_group_link(),
408
-            $this->capability,
409
-            $this->menu_slug,
410
-            '__return_false'
411
-        );
412
-    }
402
+	protected function _add_menu_page()
403
+	{
404
+		return add_submenu_page(
405
+			$this->parent_slug,
406
+			$this->menu_label,
407
+			$this->_group_link(),
408
+			$this->capability,
409
+			$this->menu_slug,
410
+			'__return_false'
411
+		);
412
+	}
413 413
 
414 414
 
415
-    private function _group_link()
416
-    {
417
-        return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
418
-    }
415
+	private function _group_link()
416
+	{
417
+		return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
418
+	}
419 419
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
         // verify that required keys are present in the incoming array.
144 144
         $missing = array_diff((array) $required, array_keys((array) $menu_args));
145 145
 
146
-        if (! empty($missing)) {
146
+        if ( ! empty($missing)) {
147 147
             throw new EE_Error(
148 148
                 sprintf(
149 149
                     __(
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
                     $value = (string) $value;
183 183
                     break;
184 184
             }
185
-            if (! EEH_Class_Tools::has_property($this, $prop)) {
185
+            if ( ! EEH_Class_Tools::has_property($this, $prop)) {
186 186
                 throw new EE_Error(
187 187
                     sprintf(
188 188
                         __(
@@ -199,10 +199,10 @@  discard block
 block discarded – undo
199 199
 
200 200
         // filter capabilities (both static and dynamic)
201 201
         $this->capability = apply_filters('FHEE_management_capability', $this->capability, null);
202
-        $this->capability = apply_filters('FHEE_' . $this->menu_slug . '_capability', $this->capability, null);
202
+        $this->capability = apply_filters('FHEE_'.$this->menu_slug.'_capability', $this->capability, null);
203 203
 
204 204
         // Might need to change parent slug depending on maintenance mode.
205
-        if (! empty($this->maintenance_mode_parent)
205
+        if ( ! empty($this->maintenance_mode_parent)
206 206
             && EE_Maintenance_Mode::instance()->level() == EE_Maintenance_Mode::level_2_complete_maintenance
207 207
         ) {
208 208
             $this->parent_slug = $this->maintenance_mode_parent;
@@ -243,7 +243,7 @@  discard block
 block discarded – undo
243 243
                  true
244 244
              ))
245 245
             ||
246
-            (! $network_admin
246
+            ( ! $network_admin
247 247
              && in_array(
248 248
                  $show_on_menu_int,
249 249
                  array(self::BLOG_AND_NETWORK_ADMIN, self::BLOG_ADMIN_ONLY),
@@ -254,7 +254,7 @@  discard block
 block discarded – undo
254 254
             $wp_page_slug = '';
255 255
         }
256 256
 
257
-        if (! empty($wp_page_slug) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
257
+        if ( ! empty($wp_page_slug) && $this->admin_init_page instanceof EE_Admin_Page_Init) {
258 258
             try {
259 259
                 $this->admin_init_page->set_page_dependencies($wp_page_slug);
260 260
             } catch (EE_Error $e) {
@@ -332,7 +332,7 @@  discard block
 block discarded – undo
332 332
             $this->icon_url,
333 333
             $this->position
334 334
         );
335
-        if (! empty($this->subtitle)) {
335
+        if ( ! empty($this->subtitle)) {
336 336
             add_submenu_page(
337 337
                 $this->parent_slug,
338 338
                 $this->subtitle,
@@ -414,6 +414,6 @@  discard block
 block discarded – undo
414 414
 
415 415
     private function _group_link()
416 416
     {
417
-        return '<span class="ee_menu_group"  onclick="return false;">' . $this->menu_label . '</span>';
417
+        return '<span class="ee_menu_group"  onclick="return false;">'.$this->menu_label.'</span>';
418 418
     }
419 419
 }
Please login to merge, or discard this patch.
core/admin/EE_Help_Tour.core.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -96,7 +96,7 @@
 block discarded – undo
96 96
      *
97 97
      * @access public
98 98
      * @param boolean $caf used to indicate if this tour is happening on caf install or not.
99
-     * @return void
99
+     * @return EE_Help_Tour
100 100
      */
101 101
     public function __construct($caf = false)
102 102
     {
Please login to merge, or discard this patch.
Indentation   +264 added lines, -264 removed lines patch added patch discarded remove patch
@@ -15,268 +15,268 @@
 block discarded – undo
15 15
 abstract class EE_Help_Tour extends EE_Base
16 16
 {
17 17
 
18
-    /**
19
-     * This is the label for the tour. It is used when regenerating restart buttons for the tour. Set this in the
20
-     * constructor of the child class.
21
-     *
22
-     * @access protected
23
-     * @var string
24
-     */
25
-    protected $_label = '';
26
-
27
-
28
-    /**
29
-     * This is the slug for the tour.  It should be unique from all tours and is used for starting a tour and setting
30
-     * cookies for the tour. Set this in the constructor of the child class.
31
-     *
32
-     * @access protected
33
-     * @var string
34
-     */
35
-    protected $_slug = '';
36
-
37
-
38
-    /**
39
-     * This will contain the formatted array for the stops that gets used by EE_Admin_Page->_add_help_tour() for
40
-     * setting up a tour on a given page. format for array is: array(
41
-     *        0 => array(
42
-     *            'id' => 'id_element', //if attached to an css id for an element then use this param. id's will take
43
-     *            precendence even if you also set class.
44
-     *            'class' => 'class_element', //if attached to a css class for an element anchoring the stop then use
45
-     *            this param. The first element for that class is the anchor. If the class or the id are empty then the
46
-     *            stop will be a modal on the page anchored to the main body.
47
-     *            'custom_class' => 'some_custom_class', //optional custom class to add for this stop.
48
-     *            'button_text' => 'custom text for button', //optional
49
-     *            'content' => 'The content for the stop', //required
50
-     *            'pause_after' => false, //indicate if you want the tour to pause after this stop and it will get
51
-     *            added to the pauseAfter global option array setup for the joyride instance. This is only applicable
52
-     *            when this tour has been set to run on timer.
53
-     *            'options' => array(
54
-     *                //override any of the global options set via the help_tour "option_callback" for the joyride
55
-     *                instance on this specific stop.
56
-     *                )
57
-     *            )
58
-     *        );
59
-     *
60
-     * @access protected
61
-     * @var array
62
-     */
63
-    protected $_stops = array();
64
-
65
-
66
-    /**
67
-     * This contains any stop specific options for the tour.
68
-     * defaults are set but child classes can override.
69
-     *
70
-     * @access protected
71
-     * @var array
72
-     */
73
-    protected $_options = array();
74
-
75
-
76
-    /**
77
-     * holds anything found in the $_REQUEST object (however we override any _gets with _post data).
78
-     *
79
-     * @access protected
80
-     * @var array
81
-     */
82
-    protected $_req_data = array();
83
-
84
-
85
-    /**
86
-     * a flag that is set on init for whether this help_tour is happening on a caf install or not.
87
-     *
88
-     * @var boolean
89
-     */
90
-    protected $_is_caf = false;
91
-
92
-
93
-    /**
94
-     * _constructor
95
-     * initialized the tour object and sets up important properties required to setup the tour.
96
-     *
97
-     * @access public
98
-     * @param boolean $caf used to indicate if this tour is happening on caf install or not.
99
-     * @return void
100
-     */
101
-    public function __construct($caf = false)
102
-    {
103
-        $this->_is_caf = $caf;
104
-        $this->_req_data = array_merge($_GET, $_POST);
105
-        $this->_set_tour_properties();
106
-        $this->_set_tour_stops();
107
-        $this->_set_tour_options();
108
-
109
-        // make sure the last tour stop has "end tour" for its button
110
-        $end = array_pop($this->_stops);
111
-        $end['button_text'] = __('End Tour', 'event_espresso');
112
-        // add back to stops
113
-        $this->_stops[] = $end;
114
-    }
115
-
116
-
117
-    /**
118
-     * required method that has the sole purpose of setting up the tour $_label and $_slug properties
119
-     *
120
-     * @abstract
121
-     * @access protected
122
-     * @return void
123
-     */
124
-    abstract protected function _set_tour_properties();
125
-
126
-
127
-    /**
128
-     * required method that's sole purpose is to setup the $_stops property
129
-     *
130
-     * @abstract
131
-     * @access protected
132
-     * @return void
133
-     */
134
-    abstract protected function _set_tour_stops();
135
-
136
-
137
-    /**
138
-     * The method can optionally be overridden by child classes to set the _options array if there are any default
139
-     * options the child wishes to override for a this tour. See property definition for more info
140
-     *
141
-     * @access protected
142
-     * @return void
143
-     */
144
-    protected function _set_tour_options($options = array())
145
-    {
146
-        $defaults = array(
147
-            'tipLocation'           => 'bottom',
148
-            // 'top', 'bottom', 'right', 'left' in relation to parent
149
-            'nubPosition'           => 'auto',
150
-            // override on a per tooltip bases. can be "auto", "right", "top", "bottom", "left"
151
-            'tipAdjustmentY'        => 0,
152
-            // allow for adjustment of tip
153
-            'tipAdjustmentX'        => 0,
154
-            // allow for adjustment of tip
155
-            'scroll'                => true,
156
-            // whether to scrollTo the next step or not
157
-            'scrollSpeed'           => 300,
158
-            // Page scrolling speed in ms
159
-            'timer'                 => 0,
160
-            // 0 = off, all other numbers = time(ms)
161
-            'autoStart'             => true,
162
-            // true or false - false tour starts when restart called
163
-            'startTimerOnClick'     => true,
164
-            // true/false to start timer on first click
165
-            'nextButton'            => true,
166
-            // true/false for next button visibility
167
-            'button_text'           => __('Next', 'event_espresso'),
168
-            'tipAnimation'          => 'fade',
169
-            // 'pop' or 'fade' in each tip
170
-            'pauseAfter'            => array(),
171
-            // array of indexes where to pause the tour after
172
-            'tipAnimationFadeSpeed' => 300,
173
-            // if 'fade'- speed in ms of transition
174
-            'cookieMonster'         => true,
175
-            // true/false for whether cookies are used
176
-            'cookieName'            => $this->get_slug(),
177
-            // choose your own cookie name (setup will add the prefix for the specific page joyride)
178
-            'cookieDomain'          => false,
179
-            // set to false or yoursite.com
180
-            // 'tipContainer' => 'body',            // Where the tip be attached if not inline
181
-            'modal'                 => false,
182
-            // Whether to cover page with modal during the tour
183
-            'expose'                => false,
184
-            // Whether to expose the elements at each step in the tour (requires modal:true),
185
-            'postExposeCallback'    => 'EEHelpTour.postExposeCallback',
186
-            // A method to call after an element has been exposed
187
-            'preRideCallback'       => 'EEHelpTour_preRideCallback',
188
-            // A method to call before the tour starts (passed index, tip, and cloned exposed element)
189
-            'postRideCallback'      => 'EEHelpTour_postRideCallback',
190
-            // a method to call once the tour closes.  This will correspond to the name of a js method that will have to be defined in loaded js.
191
-            'preStepCallback'       => 'EEHelpTour_preStepCallback',
192
-            // A method to call before each step
193
-            'postStepCallback'      => 'EEHelpTour_postStepCallback',
194
-            // A method to call after each step (remember this will correspond with a js method that you will have to define in a js file BEFORE ee-help-tour.js loads, if the default methods do not exist, then ee-help-tour.js just substitues empty functions $.noop)/**/
195
-        );
196
-
197
-        $options = ! empty($options) && is_array($options) ? array_merge($defaults, $options) : $defaults;
198
-        $this->_options = $options;
199
-    }
200
-
201
-
202
-    /**
203
-     * getter functions to return all the properties for the tour.
204
-     */
205
-
206
-
207
-    /**
208
-     * get_slug
209
-     *
210
-     * @return string slug for the tour
211
-     */
212
-    public function get_slug()
213
-    {
214
-        if (empty($this->_slug)) {
215
-            throw new EE_Error(
216
-                sprintf(
217
-                    __(
218
-                        'There is no slug set for the help tour class (%s). Make sure that the $_slug property is set in the class constructor',
219
-                        'event_espresso'
220
-                    ),
221
-                    get_class($this)
222
-                )
223
-            );
224
-        }
225
-        return $this->_slug;
226
-    }
227
-
228
-
229
-    /**
230
-     * get_label
231
-     *
232
-     * @return string
233
-     */
234
-    public function get_label()
235
-    {
236
-        if (empty($this->_label)) {
237
-            throw new EE_Error(
238
-                sprintf(
239
-                    __(
240
-                        'There is no label set for the help tour class (%s). Make sure that the $_label property is set in the class constructor',
241
-                        'event_espresso'
242
-                    ),
243
-                    get_class($this)
244
-                )
245
-            );
246
-        }
247
-        return $this->_label;
248
-    }
249
-
250
-
251
-    /**
252
-     * get_stops
253
-     *
254
-     * @return array
255
-     */
256
-    public function get_stops()
257
-    {
258
-        foreach ($this->_stops as $ind => $stop) {
259
-            if (! isset($stop['button_text'])) {
260
-                $this->_stops[ $ind ]['button_text'] = $this->_options['button_text'];
261
-            }
262
-        }
263
-        return $this->_stops;
264
-    }
265
-
266
-
267
-    /**
268
-     * get options
269
-     *
270
-     * @return array
271
-     */
272
-    public function get_options()
273
-    {
274
-        // let's make sure there are not pauses set
275
-        foreach ($this->_stops as $ind => $stop) {
276
-            if (isset($stop['pause_after']) && $stop['pause_after']) {
277
-                $this->_options['pauseAfter'][] = $ind;
278
-            }
279
-        }
280
-        return apply_filters('FHEE__' . get_class($this) . '__get_options', $this->_options, $this);
281
-    }
18
+	/**
19
+	 * This is the label for the tour. It is used when regenerating restart buttons for the tour. Set this in the
20
+	 * constructor of the child class.
21
+	 *
22
+	 * @access protected
23
+	 * @var string
24
+	 */
25
+	protected $_label = '';
26
+
27
+
28
+	/**
29
+	 * This is the slug for the tour.  It should be unique from all tours and is used for starting a tour and setting
30
+	 * cookies for the tour. Set this in the constructor of the child class.
31
+	 *
32
+	 * @access protected
33
+	 * @var string
34
+	 */
35
+	protected $_slug = '';
36
+
37
+
38
+	/**
39
+	 * This will contain the formatted array for the stops that gets used by EE_Admin_Page->_add_help_tour() for
40
+	 * setting up a tour on a given page. format for array is: array(
41
+	 *        0 => array(
42
+	 *            'id' => 'id_element', //if attached to an css id for an element then use this param. id's will take
43
+	 *            precendence even if you also set class.
44
+	 *            'class' => 'class_element', //if attached to a css class for an element anchoring the stop then use
45
+	 *            this param. The first element for that class is the anchor. If the class or the id are empty then the
46
+	 *            stop will be a modal on the page anchored to the main body.
47
+	 *            'custom_class' => 'some_custom_class', //optional custom class to add for this stop.
48
+	 *            'button_text' => 'custom text for button', //optional
49
+	 *            'content' => 'The content for the stop', //required
50
+	 *            'pause_after' => false, //indicate if you want the tour to pause after this stop and it will get
51
+	 *            added to the pauseAfter global option array setup for the joyride instance. This is only applicable
52
+	 *            when this tour has been set to run on timer.
53
+	 *            'options' => array(
54
+	 *                //override any of the global options set via the help_tour "option_callback" for the joyride
55
+	 *                instance on this specific stop.
56
+	 *                )
57
+	 *            )
58
+	 *        );
59
+	 *
60
+	 * @access protected
61
+	 * @var array
62
+	 */
63
+	protected $_stops = array();
64
+
65
+
66
+	/**
67
+	 * This contains any stop specific options for the tour.
68
+	 * defaults are set but child classes can override.
69
+	 *
70
+	 * @access protected
71
+	 * @var array
72
+	 */
73
+	protected $_options = array();
74
+
75
+
76
+	/**
77
+	 * holds anything found in the $_REQUEST object (however we override any _gets with _post data).
78
+	 *
79
+	 * @access protected
80
+	 * @var array
81
+	 */
82
+	protected $_req_data = array();
83
+
84
+
85
+	/**
86
+	 * a flag that is set on init for whether this help_tour is happening on a caf install or not.
87
+	 *
88
+	 * @var boolean
89
+	 */
90
+	protected $_is_caf = false;
91
+
92
+
93
+	/**
94
+	 * _constructor
95
+	 * initialized the tour object and sets up important properties required to setup the tour.
96
+	 *
97
+	 * @access public
98
+	 * @param boolean $caf used to indicate if this tour is happening on caf install or not.
99
+	 * @return void
100
+	 */
101
+	public function __construct($caf = false)
102
+	{
103
+		$this->_is_caf = $caf;
104
+		$this->_req_data = array_merge($_GET, $_POST);
105
+		$this->_set_tour_properties();
106
+		$this->_set_tour_stops();
107
+		$this->_set_tour_options();
108
+
109
+		// make sure the last tour stop has "end tour" for its button
110
+		$end = array_pop($this->_stops);
111
+		$end['button_text'] = __('End Tour', 'event_espresso');
112
+		// add back to stops
113
+		$this->_stops[] = $end;
114
+	}
115
+
116
+
117
+	/**
118
+	 * required method that has the sole purpose of setting up the tour $_label and $_slug properties
119
+	 *
120
+	 * @abstract
121
+	 * @access protected
122
+	 * @return void
123
+	 */
124
+	abstract protected function _set_tour_properties();
125
+
126
+
127
+	/**
128
+	 * required method that's sole purpose is to setup the $_stops property
129
+	 *
130
+	 * @abstract
131
+	 * @access protected
132
+	 * @return void
133
+	 */
134
+	abstract protected function _set_tour_stops();
135
+
136
+
137
+	/**
138
+	 * The method can optionally be overridden by child classes to set the _options array if there are any default
139
+	 * options the child wishes to override for a this tour. See property definition for more info
140
+	 *
141
+	 * @access protected
142
+	 * @return void
143
+	 */
144
+	protected function _set_tour_options($options = array())
145
+	{
146
+		$defaults = array(
147
+			'tipLocation'           => 'bottom',
148
+			// 'top', 'bottom', 'right', 'left' in relation to parent
149
+			'nubPosition'           => 'auto',
150
+			// override on a per tooltip bases. can be "auto", "right", "top", "bottom", "left"
151
+			'tipAdjustmentY'        => 0,
152
+			// allow for adjustment of tip
153
+			'tipAdjustmentX'        => 0,
154
+			// allow for adjustment of tip
155
+			'scroll'                => true,
156
+			// whether to scrollTo the next step or not
157
+			'scrollSpeed'           => 300,
158
+			// Page scrolling speed in ms
159
+			'timer'                 => 0,
160
+			// 0 = off, all other numbers = time(ms)
161
+			'autoStart'             => true,
162
+			// true or false - false tour starts when restart called
163
+			'startTimerOnClick'     => true,
164
+			// true/false to start timer on first click
165
+			'nextButton'            => true,
166
+			// true/false for next button visibility
167
+			'button_text'           => __('Next', 'event_espresso'),
168
+			'tipAnimation'          => 'fade',
169
+			// 'pop' or 'fade' in each tip
170
+			'pauseAfter'            => array(),
171
+			// array of indexes where to pause the tour after
172
+			'tipAnimationFadeSpeed' => 300,
173
+			// if 'fade'- speed in ms of transition
174
+			'cookieMonster'         => true,
175
+			// true/false for whether cookies are used
176
+			'cookieName'            => $this->get_slug(),
177
+			// choose your own cookie name (setup will add the prefix for the specific page joyride)
178
+			'cookieDomain'          => false,
179
+			// set to false or yoursite.com
180
+			// 'tipContainer' => 'body',            // Where the tip be attached if not inline
181
+			'modal'                 => false,
182
+			// Whether to cover page with modal during the tour
183
+			'expose'                => false,
184
+			// Whether to expose the elements at each step in the tour (requires modal:true),
185
+			'postExposeCallback'    => 'EEHelpTour.postExposeCallback',
186
+			// A method to call after an element has been exposed
187
+			'preRideCallback'       => 'EEHelpTour_preRideCallback',
188
+			// A method to call before the tour starts (passed index, tip, and cloned exposed element)
189
+			'postRideCallback'      => 'EEHelpTour_postRideCallback',
190
+			// a method to call once the tour closes.  This will correspond to the name of a js method that will have to be defined in loaded js.
191
+			'preStepCallback'       => 'EEHelpTour_preStepCallback',
192
+			// A method to call before each step
193
+			'postStepCallback'      => 'EEHelpTour_postStepCallback',
194
+			// A method to call after each step (remember this will correspond with a js method that you will have to define in a js file BEFORE ee-help-tour.js loads, if the default methods do not exist, then ee-help-tour.js just substitues empty functions $.noop)/**/
195
+		);
196
+
197
+		$options = ! empty($options) && is_array($options) ? array_merge($defaults, $options) : $defaults;
198
+		$this->_options = $options;
199
+	}
200
+
201
+
202
+	/**
203
+	 * getter functions to return all the properties for the tour.
204
+	 */
205
+
206
+
207
+	/**
208
+	 * get_slug
209
+	 *
210
+	 * @return string slug for the tour
211
+	 */
212
+	public function get_slug()
213
+	{
214
+		if (empty($this->_slug)) {
215
+			throw new EE_Error(
216
+				sprintf(
217
+					__(
218
+						'There is no slug set for the help tour class (%s). Make sure that the $_slug property is set in the class constructor',
219
+						'event_espresso'
220
+					),
221
+					get_class($this)
222
+				)
223
+			);
224
+		}
225
+		return $this->_slug;
226
+	}
227
+
228
+
229
+	/**
230
+	 * get_label
231
+	 *
232
+	 * @return string
233
+	 */
234
+	public function get_label()
235
+	{
236
+		if (empty($this->_label)) {
237
+			throw new EE_Error(
238
+				sprintf(
239
+					__(
240
+						'There is no label set for the help tour class (%s). Make sure that the $_label property is set in the class constructor',
241
+						'event_espresso'
242
+					),
243
+					get_class($this)
244
+				)
245
+			);
246
+		}
247
+		return $this->_label;
248
+	}
249
+
250
+
251
+	/**
252
+	 * get_stops
253
+	 *
254
+	 * @return array
255
+	 */
256
+	public function get_stops()
257
+	{
258
+		foreach ($this->_stops as $ind => $stop) {
259
+			if (! isset($stop['button_text'])) {
260
+				$this->_stops[ $ind ]['button_text'] = $this->_options['button_text'];
261
+			}
262
+		}
263
+		return $this->_stops;
264
+	}
265
+
266
+
267
+	/**
268
+	 * get options
269
+	 *
270
+	 * @return array
271
+	 */
272
+	public function get_options()
273
+	{
274
+		// let's make sure there are not pauses set
275
+		foreach ($this->_stops as $ind => $stop) {
276
+			if (isset($stop['pause_after']) && $stop['pause_after']) {
277
+				$this->_options['pauseAfter'][] = $ind;
278
+			}
279
+		}
280
+		return apply_filters('FHEE__' . get_class($this) . '__get_options', $this->_options, $this);
281
+	}
282 282
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -256,8 +256,8 @@  discard block
 block discarded – undo
256 256
     public function get_stops()
257 257
     {
258 258
         foreach ($this->_stops as $ind => $stop) {
259
-            if (! isset($stop['button_text'])) {
260
-                $this->_stops[ $ind ]['button_text'] = $this->_options['button_text'];
259
+            if ( ! isset($stop['button_text'])) {
260
+                $this->_stops[$ind]['button_text'] = $this->_options['button_text'];
261 261
             }
262 262
         }
263 263
         return $this->_stops;
@@ -277,6 +277,6 @@  discard block
 block discarded – undo
277 277
                 $this->_options['pauseAfter'][] = $ind;
278 278
             }
279 279
         }
280
-        return apply_filters('FHEE__' . get_class($this) . '__get_options', $this->_options, $this);
280
+        return apply_filters('FHEE__'.get_class($this).'__get_options', $this->_options, $this);
281 281
     }
282 282
 }
Please login to merge, or discard this patch.
core/data_migration_scripts/4_1_0_stages/EE_DMS_4_1_0_answers.dmsstage.php 3 patches
Doc Comments   -1 removed lines patch added patch discarded remove patch
@@ -62,7 +62,6 @@
 block discarded – undo
62 62
     /**
63 63
      * Creates a 4.1 price base type
64 64
      * @global type $wpdb
65
-     * @param array $old_price
66 65
      * @param int $new_reg_id
67 66
      * @return int
68 67
      */
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -42,8 +42,8 @@  discard block
 block discarded – undo
42 42
         // join to attendee and then join to events table
43 43
         $this->select_expression = 'ans.*, e.event_status';
44 44
         $this->_extra_where_sql = ' AS ans 
45
-            INNER JOIN ' . $wpdb->prefix . 'events_attendee AS att ON ans.attendee_id = att.id
46
-            INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON att.event_id = e.id 
45
+            INNER JOIN ' . $wpdb->prefix.'events_attendee AS att ON ans.attendee_id = att.id
46
+            INNER JOIN ' . $wpdb->prefix.'events_detail AS e ON att.event_id = e.id 
47 47
             WHERE e.event_status !="D"';
48 48
         $this->_new_answer_table = $wpdb->prefix."esp_answer";
49 49
         $this->_new_question_table = $wpdb->prefix."esp_question";
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
         $old_attendee_table = $wpdb->prefix."events_attendee";
57 57
         $new_reg_table = $wpdb->prefix."esp_registration";
58 58
         $regs = $this->get_migration_script()->get_mapping_new_pk($old_attendee_table, $old_row['attendee_id'], $new_reg_table);
59
-        if (! $regs) {
59
+        if ( ! $regs) {
60 60
             $this->add_error(sprintf(__("Could not find new registrations for old attendee %d when creating answer %s", "event_espresso"), $old_row['attendee_id'], $this->_json_encode($old_row)));
61 61
             return false;
62 62
         }
@@ -90,12 +90,12 @@  discard block
 block discarded – undo
90 90
             'ANS_value'=>$ans_value
91 91
         );
92 92
         $datatypes = array(
93
-            '%d',// REG_ID
94
-            '%d',// QST_ID
95
-            '%s',// ANS_value
93
+            '%d', // REG_ID
94
+            '%d', // QST_ID
95
+            '%s', // ANS_value
96 96
         );
97 97
         $success = $wpdb->insert($this->_new_answer_table, $cols_n_values, $datatypes);
98
-        if (! $success) {
98
+        if ( ! $success) {
99 99
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_answer, $this->_new_answer_table, $cols_n_values, $datatypes));
100 100
             return 0;
101 101
         }
Please login to merge, or discard this patch.
Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -32,102 +32,102 @@
 block discarded – undo
32 32
 
33 33
 class EE_DMS_4_1_0_answers extends EE_Data_Migration_Script_Stage_Table
34 34
 {
35
-    private $_new_answer_table;
36
-    private $_new_question_table;
37
-    public function __construct()
38
-    {
39
-        global $wpdb;
40
-        $this->_pretty_name = __("Answers", "event_espresso");
41
-        $this->_old_table = $wpdb->prefix."events_answer";
42
-        // join to attendee and then join to events table
43
-        $this->select_expression = 'ans.*, e.event_status';
44
-        $this->_extra_where_sql = ' AS ans 
35
+	private $_new_answer_table;
36
+	private $_new_question_table;
37
+	public function __construct()
38
+	{
39
+		global $wpdb;
40
+		$this->_pretty_name = __("Answers", "event_espresso");
41
+		$this->_old_table = $wpdb->prefix."events_answer";
42
+		// join to attendee and then join to events table
43
+		$this->select_expression = 'ans.*, e.event_status';
44
+		$this->_extra_where_sql = ' AS ans 
45 45
             INNER JOIN ' . $wpdb->prefix . 'events_attendee AS att ON ans.attendee_id = att.id
46 46
             INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON att.event_id = e.id 
47 47
             WHERE e.event_status !="D"';
48
-        $this->_new_answer_table = $wpdb->prefix."esp_answer";
49
-        $this->_new_question_table = $wpdb->prefix."esp_question";
50
-        parent::__construct();
51
-    }
52
-    protected function _migrate_old_row($old_row)
53
-    {
54
-        // get the new REGs for the old answer
55
-        global $wpdb;
56
-        $old_attendee_table = $wpdb->prefix."events_attendee";
57
-        $new_reg_table = $wpdb->prefix."esp_registration";
58
-        $regs = $this->get_migration_script()->get_mapping_new_pk($old_attendee_table, $old_row['attendee_id'], $new_reg_table);
59
-        if (! $regs) {
60
-            $this->add_error(sprintf(__("Could not find new registrations for old attendee %d when creating answer %s", "event_espresso"), $old_row['attendee_id'], $this->_json_encode($old_row)));
61
-            return false;
62
-        }
63
-        // as inefficient as this sounds, we create an answer per REGISTRATION, (even if the registrations use the same attendee)
64
-        foreach ($regs as $new_reg_id) {
65
-            $this->_insert_new_answer($old_row, $new_reg_id);
66
-        }
67
-    }
68
-    /**
69
-     * Creates a 4.1 price base type
70
-     * @global type $wpdb
71
-     * @param array $old_price
72
-     * @param int $new_reg_id
73
-     * @return int
74
-     */
75
-    private function _insert_new_answer($old_answer, $new_reg_id)
76
-    {
77
-        global $wpdb;
78
-        $old_question_table = $wpdb->prefix."events_question";
79
-        $new_question_id = $this->get_migration_script()->get_mapping_new_pk($old_question_table, $old_answer['question_id'], $this->_new_question_table);
48
+		$this->_new_answer_table = $wpdb->prefix."esp_answer";
49
+		$this->_new_question_table = $wpdb->prefix."esp_question";
50
+		parent::__construct();
51
+	}
52
+	protected function _migrate_old_row($old_row)
53
+	{
54
+		// get the new REGs for the old answer
55
+		global $wpdb;
56
+		$old_attendee_table = $wpdb->prefix."events_attendee";
57
+		$new_reg_table = $wpdb->prefix."esp_registration";
58
+		$regs = $this->get_migration_script()->get_mapping_new_pk($old_attendee_table, $old_row['attendee_id'], $new_reg_table);
59
+		if (! $regs) {
60
+			$this->add_error(sprintf(__("Could not find new registrations for old attendee %d when creating answer %s", "event_espresso"), $old_row['attendee_id'], $this->_json_encode($old_row)));
61
+			return false;
62
+		}
63
+		// as inefficient as this sounds, we create an answer per REGISTRATION, (even if the registrations use the same attendee)
64
+		foreach ($regs as $new_reg_id) {
65
+			$this->_insert_new_answer($old_row, $new_reg_id);
66
+		}
67
+	}
68
+	/**
69
+	 * Creates a 4.1 price base type
70
+	 * @global type $wpdb
71
+	 * @param array $old_price
72
+	 * @param int $new_reg_id
73
+	 * @return int
74
+	 */
75
+	private function _insert_new_answer($old_answer, $new_reg_id)
76
+	{
77
+		global $wpdb;
78
+		$old_question_table = $wpdb->prefix."events_question";
79
+		$new_question_id = $this->get_migration_script()->get_mapping_new_pk($old_question_table, $old_answer['question_id'], $this->_new_question_table);
80 80
 
81
-        $question_row = $this->_get_question_type_and_system($new_question_id);
82
-        if ($question_row['QST_system']) {
83
-            // It's an answer to a system question? EE3 used to store that on both the attendee and the answers column,
84
-            // but not EE4! It's just stored in the attendee meta table. The answers table is ONLY for answers to custom
85
-            // questions.
86
-            return 0;
87
-        }
88
-        if (in_array($question_row['QST_type'], array('MULTIPLE'))) {
89
-            $ans_value = serialize(explode(",", stripslashes($old_answer['answer'])));
90
-        } else {
91
-            $ans_value = stripslashes($old_answer['answer']);
92
-        }
93
-        $cols_n_values = array(
94
-            'REG_ID'=>$new_reg_id,
95
-            'QST_ID'=>$new_question_id,
96
-            'ANS_value'=>$ans_value
97
-        );
98
-        $datatypes = array(
99
-            '%d',// REG_ID
100
-            '%d',// QST_ID
101
-            '%s',// ANS_value
102
-        );
103
-        $success = $wpdb->insert($this->_new_answer_table, $cols_n_values, $datatypes);
104
-        if (! $success) {
105
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_answer, $this->_new_answer_table, $cols_n_values, $datatypes));
106
-            return 0;
107
-        }
108
-        $new_id = $wpdb->insert_id;
109
-        return $new_id;
110
-    }
81
+		$question_row = $this->_get_question_type_and_system($new_question_id);
82
+		if ($question_row['QST_system']) {
83
+			// It's an answer to a system question? EE3 used to store that on both the attendee and the answers column,
84
+			// but not EE4! It's just stored in the attendee meta table. The answers table is ONLY for answers to custom
85
+			// questions.
86
+			return 0;
87
+		}
88
+		if (in_array($question_row['QST_type'], array('MULTIPLE'))) {
89
+			$ans_value = serialize(explode(",", stripslashes($old_answer['answer'])));
90
+		} else {
91
+			$ans_value = stripslashes($old_answer['answer']);
92
+		}
93
+		$cols_n_values = array(
94
+			'REG_ID'=>$new_reg_id,
95
+			'QST_ID'=>$new_question_id,
96
+			'ANS_value'=>$ans_value
97
+		);
98
+		$datatypes = array(
99
+			'%d',// REG_ID
100
+			'%d',// QST_ID
101
+			'%s',// ANS_value
102
+		);
103
+		$success = $wpdb->insert($this->_new_answer_table, $cols_n_values, $datatypes);
104
+		if (! $success) {
105
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_answer, $this->_new_answer_table, $cols_n_values, $datatypes));
106
+			return 0;
107
+		}
108
+		$new_id = $wpdb->insert_id;
109
+		return $new_id;
110
+	}
111 111
 
112
-    /**
113
-     * Gets the question's type
114
-     * @global type $wpdb
115
-     * @param type $question_id
116
-     * @return array {
117
-     *  @type string $QST_type
118
-     *  @type string $QST_system
119
-     * }
120
-     */
121
-    private function _get_question_type_and_system($question_id)
122
-    {
123
-        global $wpdb;
124
-        $row = $wpdb->get_row(
125
-            $wpdb->prepare(
126
-                "SELECT QST_type, QST_system FROM ".$this->_new_question_table." WHERE QST_ID=%d LIMIT 1",
127
-                $question_id
128
-            ),
129
-            ARRAY_A
130
-        );
131
-        return $row;
132
-    }
112
+	/**
113
+	 * Gets the question's type
114
+	 * @global type $wpdb
115
+	 * @param type $question_id
116
+	 * @return array {
117
+	 *  @type string $QST_type
118
+	 *  @type string $QST_system
119
+	 * }
120
+	 */
121
+	private function _get_question_type_and_system($question_id)
122
+	{
123
+		global $wpdb;
124
+		$row = $wpdb->get_row(
125
+			$wpdb->prepare(
126
+				"SELECT QST_type, QST_system FROM ".$this->_new_question_table." WHERE QST_ID=%d LIMIT 1",
127
+				$question_id
128
+			),
129
+			ARRAY_A
130
+		);
131
+		return $row;
132
+	}
133 133
 }
Please login to merge, or discard this patch.
core/data_migration_scripts/4_1_0_stages/EE_DMS_4_1_0_checkins.dmsstage.php 3 patches
Doc Comments   +2 added lines, -3 removed lines patch added patch discarded remove patch
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
      * (because we know the attendee was for an event as a specific time, and we know
86 86
      * the event's OLD ID...)
87 87
      * @global type $wpdb
88
-     * @param array $old_attendee_row
88
+     * @param array $old_attendee
89 89
      * @return array row of datetime from DB
90 90
      */
91 91
     private function _try_to_find_datetime($old_attendee)
@@ -121,8 +121,7 @@  discard block
 block discarded – undo
121 121
     /**
122 122
      * Adds a new Check-in/checkout record according for $new_reg_id,$new_datetime_id,$checking_in, and $timestmap
123 123
      * @param int $new_reg_id
124
-     * @param int $new_datetime_id
125
-     * @param string $timestamp mysql datetime
124
+     * @param int $new_datetime
126 125
      * @return int new Check-in id
127 126
      */
128 127
     private function _insert_checkin_record($new_reg_id, $new_datetime)
Please login to merge, or discard this patch.
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -26,160 +26,160 @@
 block discarded – undo
26 26
 
27 27
 class EE_DMS_4_1_0_checkins extends EE_Data_Migration_Script_Stage_Table
28 28
 {
29
-    private $_new_table;
30
-    public function __construct()
31
-    {
32
-        global $wpdb;
33
-        $this->_pretty_name = esc_html__('Checkins', 'event_espresso');
34
-        $this->_old_table = $wpdb->prefix."events_attendee";
35
-        $this->select_expression = 'att.*, e.event_status';
36
-        $this->_extra_where_sql = 'AS att
29
+	private $_new_table;
30
+	public function __construct()
31
+	{
32
+		global $wpdb;
33
+		$this->_pretty_name = esc_html__('Checkins', 'event_espresso');
34
+		$this->_old_table = $wpdb->prefix."events_attendee";
35
+		$this->select_expression = 'att.*, e.event_status';
36
+		$this->_extra_where_sql = 'AS att
37 37
             INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON att.event_id=e.id
38 38
             WHERE e.event_status!="D"';
39
-        $this->_new_table = $wpdb->prefix."esp_checkin";
40
-        parent::__construct();
41
-    }
42
-    protected function _migrate_old_row($old_row)
43
-    {
44
-        global $wpdb;
45
-        $new_reg_table = $wpdb->prefix."esp_registration";
39
+		$this->_new_table = $wpdb->prefix."esp_checkin";
40
+		parent::__construct();
41
+	}
42
+	protected function _migrate_old_row($old_row)
43
+	{
44
+		global $wpdb;
45
+		$new_reg_table = $wpdb->prefix."esp_registration";
46 46
 
47
-        $num_to_checkin_at_this_time = max(array(intval($old_row['checked_in_quantity']),intval($old_row['checked_in']))) ;
47
+		$num_to_checkin_at_this_time = max(array(intval($old_row['checked_in_quantity']),intval($old_row['checked_in']))) ;
48 48
 
49
-        $new_registrations_for_attendee = $this->get_migration_script()->get_mapping_new_pk($this->_old_table, $old_row['id'], $new_reg_table);
50
-        if (! $new_registrations_for_attendee) {
51
-            $new_registrations_for_attendee = array();
52
-        }
53
-        $new_datetime = $this->_try_to_find_datetime($old_row);
49
+		$new_registrations_for_attendee = $this->get_migration_script()->get_mapping_new_pk($this->_old_table, $old_row['id'], $new_reg_table);
50
+		if (! $new_registrations_for_attendee) {
51
+			$new_registrations_for_attendee = array();
52
+		}
53
+		$new_datetime = $this->_try_to_find_datetime($old_row);
54 54
 
55
-        // make sure registrations array is numerically indexed starting at 0 (it probably already is)
56
-        $new_registrations_for_attendee = array_values($new_registrations_for_attendee);
57
-        $new_checkin_ids = array();
58
-        for ($i = 0; $i<abs($num_to_checkin_at_this_time); $i++) {
59
-            $new_reg_id = $new_registrations_for_attendee[ $i ];
60
-            if (! $new_reg_id) {
61
-                $this->add_error(sprintf(
62
-                    esc_html__(
63
-                        /* translators: %1$s database row represented in JSON, %2$s number of registrations to check-in
55
+		// make sure registrations array is numerically indexed starting at 0 (it probably already is)
56
+		$new_registrations_for_attendee = array_values($new_registrations_for_attendee);
57
+		$new_checkin_ids = array();
58
+		for ($i = 0; $i<abs($num_to_checkin_at_this_time); $i++) {
59
+			$new_reg_id = $new_registrations_for_attendee[ $i ];
60
+			if (! $new_reg_id) {
61
+				$this->add_error(sprintf(
62
+					esc_html__(
63
+						/* translators: %1$s database row represented in JSON, %2$s number of registrations to check-in
64 64
                         *  %3$s number of registrations for the attendee, %4$s new registration rows represented in JSON
65 65
                         */
66
-                        // @codingStandardsIgnoreStart
67
-                        'It appears we wanted to check-in more registrations than actually exist. The old attendee record (%1$s) indicated we should check-in %2$d registrations, but there are only %3$d registrations for that attendee (%4$s)',
68
-                        // @codingStandardsIgnoreEnd
69
-                        'event_espresso'
70
-                    ),
71
-                    $this->_json_encode($old_row),
72
-                    abs($num_to_checkin_at_this_time),
73
-                    count($new_registrations_for_attendee),
74
-                    $this->_json_encode($new_registrations_for_attendee)
75
-                ));
76
-                break;
77
-            }
78
-            $existing_checkin_record = $wpdb->get_var(
79
-                $wpdb->prepare(
80
-                    "SELECT CHK_ID FROM $this->_new_table WHERE REG_ID = %d ORDER BY CHK_ID DESC LIMIT 1",
81
-                    $new_reg_id
82
-                )
83
-            );
84
-            if (! $existing_checkin_record) {
85
-                $new_id = $this->_insert_checkin_record($new_reg_id, $new_datetime);
86
-                if ($new_id) {
87
-                    $new_checkin_ids[]= $new_id;
88
-                }
89
-            }
90
-        }
91
-        if ($new_checkin_ids) {
92
-            $this->get_migration_script()->set_mapping(
93
-                $this->_old_table,
94
-                $old_row['id'],
95
-                $this->_new_table,
96
-                $new_checkin_ids
97
-            );
98
-        }
99
-    }
66
+						// @codingStandardsIgnoreStart
67
+						'It appears we wanted to check-in more registrations than actually exist. The old attendee record (%1$s) indicated we should check-in %2$d registrations, but there are only %3$d registrations for that attendee (%4$s)',
68
+						// @codingStandardsIgnoreEnd
69
+						'event_espresso'
70
+					),
71
+					$this->_json_encode($old_row),
72
+					abs($num_to_checkin_at_this_time),
73
+					count($new_registrations_for_attendee),
74
+					$this->_json_encode($new_registrations_for_attendee)
75
+				));
76
+				break;
77
+			}
78
+			$existing_checkin_record = $wpdb->get_var(
79
+				$wpdb->prepare(
80
+					"SELECT CHK_ID FROM $this->_new_table WHERE REG_ID = %d ORDER BY CHK_ID DESC LIMIT 1",
81
+					$new_reg_id
82
+				)
83
+			);
84
+			if (! $existing_checkin_record) {
85
+				$new_id = $this->_insert_checkin_record($new_reg_id, $new_datetime);
86
+				if ($new_id) {
87
+					$new_checkin_ids[]= $new_id;
88
+				}
89
+			}
90
+		}
91
+		if ($new_checkin_ids) {
92
+			$this->get_migration_script()->set_mapping(
93
+				$this->_old_table,
94
+				$old_row['id'],
95
+				$this->_new_table,
96
+				$new_checkin_ids
97
+			);
98
+		}
99
+	}
100 100
 
101 101
 
102
-    /**
103
-     * Tries to find the new datetime the Check-in was for, based on the attendee row
104
-     * (because we know the attendee was for an event as a specific time, and we know
105
-     * the event's OLD ID...)
106
-     * @global type $wpdb
107
-     * @param array $old_attendee_row
108
-     * @return array row of datetime from DB
109
-     */
110
-    private function _try_to_find_datetime($old_attendee)
111
-    {
112
-        global $wpdb;
102
+	/**
103
+	 * Tries to find the new datetime the Check-in was for, based on the attendee row
104
+	 * (because we know the attendee was for an event as a specific time, and we know
105
+	 * the event's OLD ID...)
106
+	 * @global type $wpdb
107
+	 * @param array $old_attendee_row
108
+	 * @return array row of datetime from DB
109
+	 */
110
+	private function _try_to_find_datetime($old_attendee)
111
+	{
112
+		global $wpdb;
113 113
 
114
-        $new_event_id = $this->get_migration_script()->get_mapping_new_pk($wpdb->prefix."events_detail", $old_attendee['event_id'], $wpdb->posts);
115
-        if (! $new_event_id) {
116
-            $this->add_error(
117
-                sprintf(
118
-                    esc_html__(
119
-                        /* translators: 1: original event ID, 2: original attendee database row */
120
-                        // @codingStandardsIgnoreStart
121
-                        'Could not find new event ID with old event ID %1$d, on attendee row %2$s; and because of that couldn\'t find the correct datetime for Check-in',
122
-                        // @codingStandardsIgnoreEnd
123
-                        'event_espresso'
124
-                    ),
125
-                    $old_attendee['event_id'],
126
-                    $this->_json_encode($old_attendee)
127
-                )
128
-            );
129
-            return 0;
130
-        }
131
-        $old_att_start_date = $old_attendee['start_date'];
132
-        $old_att_start_time = $this->get_migration_script()->convertTimeFromAMPM($old_attendee['event_time']);
133
-        $old_att_datetime = $this->get_migration_script()->convert_date_string_to_utc($this, $old_attendee, "$old_att_start_date $old_att_start_time:00");
114
+		$new_event_id = $this->get_migration_script()->get_mapping_new_pk($wpdb->prefix."events_detail", $old_attendee['event_id'], $wpdb->posts);
115
+		if (! $new_event_id) {
116
+			$this->add_error(
117
+				sprintf(
118
+					esc_html__(
119
+						/* translators: 1: original event ID, 2: original attendee database row */
120
+						// @codingStandardsIgnoreStart
121
+						'Could not find new event ID with old event ID %1$d, on attendee row %2$s; and because of that couldn\'t find the correct datetime for Check-in',
122
+						// @codingStandardsIgnoreEnd
123
+						'event_espresso'
124
+					),
125
+					$old_attendee['event_id'],
126
+					$this->_json_encode($old_attendee)
127
+				)
128
+			);
129
+			return 0;
130
+		}
131
+		$old_att_start_date = $old_attendee['start_date'];
132
+		$old_att_start_time = $this->get_migration_script()->convertTimeFromAMPM($old_attendee['event_time']);
133
+		$old_att_datetime = $this->get_migration_script()->convert_date_string_to_utc($this, $old_attendee, "$old_att_start_date $old_att_start_time:00");
134 134
 
135
-        $datetime_table = $wpdb->prefix."esp_datetime";
136
-        // add all conditions to an array from which we can SHIFT conditions off in order to widen our search
137
-        // the most important condition should be last, as it will be array_shift'ed off last
138
-        $conditions = array(
139
-            $wpdb->prepare("$datetime_table.DTT_EVT_start = %s", $old_att_datetime),// times match?
140
-            $wpdb->prepare("$datetime_table.EVT_ID = %d", $new_event_id),// events match?
141
-        );
142
-        // start running queries, widening search each time by removing a condition
143
-        $datetime_found = null;
144
-        do {
145
-            $full_query = "SELECT * FROM $datetime_table WHERE ".implode(" AND ", $conditions)." LIMIT 1";
146
-            $datetime_found = $wpdb->get_row($full_query, ARRAY_A);
147
-            array_shift($conditions);
148
-        } while (! $datetime_found && $conditions);
149
-        return $datetime_found;
150
-    }
135
+		$datetime_table = $wpdb->prefix."esp_datetime";
136
+		// add all conditions to an array from which we can SHIFT conditions off in order to widen our search
137
+		// the most important condition should be last, as it will be array_shift'ed off last
138
+		$conditions = array(
139
+			$wpdb->prepare("$datetime_table.DTT_EVT_start = %s", $old_att_datetime),// times match?
140
+			$wpdb->prepare("$datetime_table.EVT_ID = %d", $new_event_id),// events match?
141
+		);
142
+		// start running queries, widening search each time by removing a condition
143
+		$datetime_found = null;
144
+		do {
145
+			$full_query = "SELECT * FROM $datetime_table WHERE ".implode(" AND ", $conditions)." LIMIT 1";
146
+			$datetime_found = $wpdb->get_row($full_query, ARRAY_A);
147
+			array_shift($conditions);
148
+		} while (! $datetime_found && $conditions);
149
+		return $datetime_found;
150
+	}
151 151
 
152
-    /**
153
-     * Adds a new Check-in/checkout record according for $new_reg_id,$new_datetime_id,$checking_in, and $timestmap
154
-     * @param int $new_reg_id
155
-     * @param int $new_datetime_id
156
-     * @param string $timestamp mysql datetime
157
-     * @return int new Check-in id
158
-     */
159
-    private function _insert_checkin_record($new_reg_id, $new_datetime)
160
-    {
161
-        global $wpdb;
152
+	/**
153
+	 * Adds a new Check-in/checkout record according for $new_reg_id,$new_datetime_id,$checking_in, and $timestmap
154
+	 * @param int $new_reg_id
155
+	 * @param int $new_datetime_id
156
+	 * @param string $timestamp mysql datetime
157
+	 * @return int new Check-in id
158
+	 */
159
+	private function _insert_checkin_record($new_reg_id, $new_datetime)
160
+	{
161
+		global $wpdb;
162 162
 
163 163
 
164
-        // ok we can actually do what we set out to do: add a checkin/checkout record
165
-        $cols_n_values = array(
166
-            'REG_ID'=>$new_reg_id,
167
-            'DTT_ID'=>$new_datetime['DTT_ID'],
168
-            'CHK_in'=>true,
169
-            'CHK_timestamp'=>$new_datetime['DTT_EVT_start']
170
-        );
171
-        $datatypes = array(
172
-            '%d',// REG_ID
173
-            '%d',// DTT_ID
174
-            '%d',// CHK_in
175
-            '%s',// CHK_timestamp
176
-        );
177
-        $success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
178
-        if (! $success) {
179
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_checkin, $this->_new_table, $cols_n_values, $datatypes));
180
-            return 0;
181
-        }
182
-        $new_id = $wpdb->insert_id;
183
-        return $new_id;
184
-    }
164
+		// ok we can actually do what we set out to do: add a checkin/checkout record
165
+		$cols_n_values = array(
166
+			'REG_ID'=>$new_reg_id,
167
+			'DTT_ID'=>$new_datetime['DTT_ID'],
168
+			'CHK_in'=>true,
169
+			'CHK_timestamp'=>$new_datetime['DTT_EVT_start']
170
+		);
171
+		$datatypes = array(
172
+			'%d',// REG_ID
173
+			'%d',// DTT_ID
174
+			'%d',// CHK_in
175
+			'%s',// CHK_timestamp
176
+		);
177
+		$success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
178
+		if (! $success) {
179
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_checkin, $this->_new_table, $cols_n_values, $datatypes));
180
+			return 0;
181
+		}
182
+		$new_id = $wpdb->insert_id;
183
+		return $new_id;
184
+	}
185 185
 }
Please login to merge, or discard this patch.
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -34,7 +34,7 @@  discard block
 block discarded – undo
34 34
         $this->_old_table = $wpdb->prefix."events_attendee";
35 35
         $this->select_expression = 'att.*, e.event_status';
36 36
         $this->_extra_where_sql = 'AS att
37
-            INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON att.event_id=e.id
37
+            INNER JOIN ' . $wpdb->prefix.'events_detail AS e ON att.event_id=e.id
38 38
             WHERE e.event_status!="D"';
39 39
         $this->_new_table = $wpdb->prefix."esp_checkin";
40 40
         parent::__construct();
@@ -44,10 +44,10 @@  discard block
 block discarded – undo
44 44
         global $wpdb;
45 45
         $new_reg_table = $wpdb->prefix."esp_registration";
46 46
 
47
-        $num_to_checkin_at_this_time = max(array(intval($old_row['checked_in_quantity']),intval($old_row['checked_in']))) ;
47
+        $num_to_checkin_at_this_time = max(array(intval($old_row['checked_in_quantity']), intval($old_row['checked_in'])));
48 48
 
49 49
         $new_registrations_for_attendee = $this->get_migration_script()->get_mapping_new_pk($this->_old_table, $old_row['id'], $new_reg_table);
50
-        if (! $new_registrations_for_attendee) {
50
+        if ( ! $new_registrations_for_attendee) {
51 51
             $new_registrations_for_attendee = array();
52 52
         }
53 53
         $new_datetime = $this->_try_to_find_datetime($old_row);
@@ -55,9 +55,9 @@  discard block
 block discarded – undo
55 55
         // make sure registrations array is numerically indexed starting at 0 (it probably already is)
56 56
         $new_registrations_for_attendee = array_values($new_registrations_for_attendee);
57 57
         $new_checkin_ids = array();
58
-        for ($i = 0; $i<abs($num_to_checkin_at_this_time); $i++) {
59
-            $new_reg_id = $new_registrations_for_attendee[ $i ];
60
-            if (! $new_reg_id) {
58
+        for ($i = 0; $i < abs($num_to_checkin_at_this_time); $i++) {
59
+            $new_reg_id = $new_registrations_for_attendee[$i];
60
+            if ( ! $new_reg_id) {
61 61
                 $this->add_error(sprintf(
62 62
                     esc_html__(
63 63
                         /* translators: %1$s database row represented in JSON, %2$s number of registrations to check-in
@@ -81,10 +81,10 @@  discard block
 block discarded – undo
81 81
                     $new_reg_id
82 82
                 )
83 83
             );
84
-            if (! $existing_checkin_record) {
84
+            if ( ! $existing_checkin_record) {
85 85
                 $new_id = $this->_insert_checkin_record($new_reg_id, $new_datetime);
86 86
                 if ($new_id) {
87
-                    $new_checkin_ids[]= $new_id;
87
+                    $new_checkin_ids[] = $new_id;
88 88
                 }
89 89
             }
90 90
         }
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
         global $wpdb;
113 113
 
114 114
         $new_event_id = $this->get_migration_script()->get_mapping_new_pk($wpdb->prefix."events_detail", $old_attendee['event_id'], $wpdb->posts);
115
-        if (! $new_event_id) {
115
+        if ( ! $new_event_id) {
116 116
             $this->add_error(
117 117
                 sprintf(
118 118
                     esc_html__(
@@ -136,8 +136,8 @@  discard block
 block discarded – undo
136 136
         // add all conditions to an array from which we can SHIFT conditions off in order to widen our search
137 137
         // the most important condition should be last, as it will be array_shift'ed off last
138 138
         $conditions = array(
139
-            $wpdb->prepare("$datetime_table.DTT_EVT_start = %s", $old_att_datetime),// times match?
140
-            $wpdb->prepare("$datetime_table.EVT_ID = %d", $new_event_id),// events match?
139
+            $wpdb->prepare("$datetime_table.DTT_EVT_start = %s", $old_att_datetime), // times match?
140
+            $wpdb->prepare("$datetime_table.EVT_ID = %d", $new_event_id), // events match?
141 141
         );
142 142
         // start running queries, widening search each time by removing a condition
143 143
         $datetime_found = null;
@@ -145,7 +145,7 @@  discard block
 block discarded – undo
145 145
             $full_query = "SELECT * FROM $datetime_table WHERE ".implode(" AND ", $conditions)." LIMIT 1";
146 146
             $datetime_found = $wpdb->get_row($full_query, ARRAY_A);
147 147
             array_shift($conditions);
148
-        } while (! $datetime_found && $conditions);
148
+        }while ( ! $datetime_found && $conditions);
149 149
         return $datetime_found;
150 150
     }
151 151
 
@@ -169,13 +169,13 @@  discard block
 block discarded – undo
169 169
             'CHK_timestamp'=>$new_datetime['DTT_EVT_start']
170 170
         );
171 171
         $datatypes = array(
172
-            '%d',// REG_ID
173
-            '%d',// DTT_ID
174
-            '%d',// CHK_in
175
-            '%s',// CHK_timestamp
172
+            '%d', // REG_ID
173
+            '%d', // DTT_ID
174
+            '%d', // CHK_in
175
+            '%s', // CHK_timestamp
176 176
         );
177 177
         $success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
178
-        if (! $success) {
178
+        if ( ! $success) {
179 179
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_checkin, $this->_new_table, $cols_n_values, $datatypes));
180 180
             return 0;
181 181
         }
Please login to merge, or discard this patch.
4_1_0_stages/EE_DMS_4_1_0_event_question_group.dmsstage.php 3 patches
Doc Comments   +3 added lines patch added patch discarded remove patch
@@ -98,6 +98,9 @@
 block discarded – undo
98 98
         $this->get_migration_script()->set_mapping($this->_old_table, $old_event['id'], $this->_new_table, $new_event_question_group_ids);
99 99
     }
100 100
 
101
+    /**
102
+     * @param boolean $primary
103
+     */
101 104
     private function _insert_event_question_group($old_event, $old_question_group_id, $primary)
102 105
     {
103 106
         global $wpdb;
Please login to merge, or discard this patch.
Indentation   +104 added lines, -106 removed lines patch added patch discarded remove patch
@@ -16,15 +16,13 @@  discard block
 block discarded – undo
16 16
             'EQG_primary'=>new EE_Boolean_Field('EQG_primary', __('Flag indicating question is only for primary attendees','event_espresso'), false, false)
17 17
         )
18 18
     );
19
-
20
-
21 19
  *
22 20
  */
23 21
 class EE_DMS_4_1_0_event_question_group extends EE_Data_Migration_Script_Stage_Table
24 22
 {
25
-    private $_new_table;
26
-    public function _migrate_old_row($old_row)
27
-    {
23
+	private $_new_table;
24
+	public function _migrate_old_row($old_row)
25
+	{
28 26
 //      $txn_id = $this->get_migration_script()->get_mapping_new_pk($this->_old_table, $old_row['id'], $this->_new_transaction_table);
29 27
 //          if ( ! $txn_id ){
30 28
 //              $this->add_error(sprintf(__("Could not find the transaction for the 3.1 attendee %d from row %s", "event_espresso"),$old_row['id'],$this->_json_encode($old_row)));
@@ -34,8 +32,8 @@  discard block
 block discarded – undo
34 32
 //          $new_line_items = $this->_insert_new_line_items($txn,$old_row);
35 33
 //          $this->get_migration_script()->set_mapping($this->_old_table,$old_row['id'],$this->_new_line_table,$new_line_items);
36 34
 
37
-            $this->_insert_new_event_question_groups($old_row);
38
-    }
35
+			$this->_insert_new_event_question_groups($old_row);
36
+	}
39 37
 //  function _migration_step($num_items=50){
40 38
 //      global $wpdb;
41 39
 //      $start_at_record = $this->count_records_migrated();
@@ -55,109 +53,109 @@  discard block
 block discarded – undo
55 53
 //      $count = $wpdb->get_var("SELECT COUNT(id) FROM ".$this->_old_table);
56 54
 //      return $count;
57 55
 //  }
58
-    public function __construct()
59
-    {
60
-        global $wpdb;
61
-        $this->_old_table = $wpdb->prefix."events_detail";
62
-        $this->_extra_where_sql = 'WHERE event_status!="D"';
63
-        $this->_new_table = $wpdb->prefix."esp_event_question_group";
64
-        $this->_pretty_name = __("Question Groups in each Event", "event_espresso");
65
-        parent::__construct();
66
-    }
56
+	public function __construct()
57
+	{
58
+		global $wpdb;
59
+		$this->_old_table = $wpdb->prefix."events_detail";
60
+		$this->_extra_where_sql = 'WHERE event_status!="D"';
61
+		$this->_new_table = $wpdb->prefix."esp_event_question_group";
62
+		$this->_pretty_name = __("Question Groups in each Event", "event_espresso");
63
+		parent::__construct();
64
+	}
67 65
 
68
-    /**
69
-     * Attempts to insert a new question group inthe new format given an old one
70
-     * @global type $wpdb
71
-     * @param array $old_event
72
-     * @return void
73
-     */
74
-    private function _insert_new_event_question_groups($old_event)
75
-    {
76
-        $new_event_question_group_ids = array();
77
-        $question_groups_for_primary = maybe_unserialize($old_event['question_groups']);
78
-        if (is_array($question_groups_for_primary)) {
79
-            foreach ($question_groups_for_primary as $old_question_group_id) {
80
-                $new_id = $this->_insert_event_question_group($old_event, $old_question_group_id, true);
81
-                if ($new_id) {
82
-                    $new_event_question_group_ids[] = $new_id;
83
-                }
84
-            }
85
-        }
86
-        $event_meta = maybe_unserialize($old_event['event_meta']);
87
-        if (isset($event_meta['add_attendee_question_groups'])) {
88
-            if (is_array($event_meta['add_attendee_question_groups'])) {
89
-                foreach ($event_meta['add_attendee_question_groups'] as $old_question_group_id) {
90
-                    $new_id = $this->_insert_event_question_group($old_event, $old_question_group_id, false);
91
-                    if ($new_id) {
92
-                        $new_event_question_group_ids[] = $new_id;
93
-                    }
94
-                }
95
-            }
96
-        }
66
+	/**
67
+	 * Attempts to insert a new question group inthe new format given an old one
68
+	 * @global type $wpdb
69
+	 * @param array $old_event
70
+	 * @return void
71
+	 */
72
+	private function _insert_new_event_question_groups($old_event)
73
+	{
74
+		$new_event_question_group_ids = array();
75
+		$question_groups_for_primary = maybe_unserialize($old_event['question_groups']);
76
+		if (is_array($question_groups_for_primary)) {
77
+			foreach ($question_groups_for_primary as $old_question_group_id) {
78
+				$new_id = $this->_insert_event_question_group($old_event, $old_question_group_id, true);
79
+				if ($new_id) {
80
+					$new_event_question_group_ids[] = $new_id;
81
+				}
82
+			}
83
+		}
84
+		$event_meta = maybe_unserialize($old_event['event_meta']);
85
+		if (isset($event_meta['add_attendee_question_groups'])) {
86
+			if (is_array($event_meta['add_attendee_question_groups'])) {
87
+				foreach ($event_meta['add_attendee_question_groups'] as $old_question_group_id) {
88
+					$new_id = $this->_insert_event_question_group($old_event, $old_question_group_id, false);
89
+					if ($new_id) {
90
+						$new_event_question_group_ids[] = $new_id;
91
+					}
92
+				}
93
+			}
94
+		}
97 95
 
98 96
 
99
-        $this->get_migration_script()->set_mapping($this->_old_table, $old_event['id'], $this->_new_table, $new_event_question_group_ids);
100
-    }
97
+		$this->get_migration_script()->set_mapping($this->_old_table, $old_event['id'], $this->_new_table, $new_event_question_group_ids);
98
+	}
101 99
 
102
-    private function _insert_event_question_group($old_event, $old_question_group_id, $primary)
103
-    {
104
-        global $wpdb;
105
-        $new_question_group_id = $this->get_migration_script()->get_mapping_new_pk(
106
-            $wpdb->prefix . "events_qst_group",
107
-            intval($old_question_group_id),
108
-            $wpdb->prefix . "esp_question_group"
109
-        );
100
+	private function _insert_event_question_group($old_event, $old_question_group_id, $primary)
101
+	{
102
+		global $wpdb;
103
+		$new_question_group_id = $this->get_migration_script()->get_mapping_new_pk(
104
+			$wpdb->prefix . "events_qst_group",
105
+			intval($old_question_group_id),
106
+			$wpdb->prefix . "esp_question_group"
107
+		);
110 108
 
111
-        if (! $new_question_group_id) {
112
-            $this->add_error(
113
-                sprintf(
114
-                    // translators: %s question ID, %s event ID
115
-                    __("Could not find 4.1 question ID for 3.1 question id #%s on event $%s", "event_espresso"),
116
-                    $old_question_group_id,
117
-                    $old_event['id']
118
-                )
119
-            );
120
-            return 0;
121
-        }
122
-        $new_event_id = $this->get_migration_script()->get_mapping_new_pk(
123
-            $wpdb->prefix . "events_detail",
124
-            intval($old_event['id']),
125
-            $wpdb->posts
126
-        );
127
-        if (! $new_question_group_id) {
128
-            $this->add_error(
129
-                sprintf(
130
-                    // translators: %s event ID
131
-                    __("Could not find 4.1 event 3.1 event id #%s", "event_espresso"),
132
-                    $old_event['id']
133
-                )
134
-            );
135
-            return 0;
136
-        }
137
-        $cols_n_values = array(
138
-            'EVT_ID'=>$new_event_id,
139
-            'QSG_ID'=>$new_question_group_id,
140
-            'EQG_primary' => $primary
141
-        );
109
+		if (! $new_question_group_id) {
110
+			$this->add_error(
111
+				sprintf(
112
+					// translators: %s question ID, %s event ID
113
+					__("Could not find 4.1 question ID for 3.1 question id #%s on event $%s", "event_espresso"),
114
+					$old_question_group_id,
115
+					$old_event['id']
116
+				)
117
+			);
118
+			return 0;
119
+		}
120
+		$new_event_id = $this->get_migration_script()->get_mapping_new_pk(
121
+			$wpdb->prefix . "events_detail",
122
+			intval($old_event['id']),
123
+			$wpdb->posts
124
+		);
125
+		if (! $new_question_group_id) {
126
+			$this->add_error(
127
+				sprintf(
128
+					// translators: %s event ID
129
+					__("Could not find 4.1 event 3.1 event id #%s", "event_espresso"),
130
+					$old_event['id']
131
+				)
132
+			);
133
+			return 0;
134
+		}
135
+		$cols_n_values = array(
136
+			'EVT_ID'=>$new_event_id,
137
+			'QSG_ID'=>$new_question_group_id,
138
+			'EQG_primary' => $primary
139
+		);
142 140
 
143
-        $datatypes = array(
144
-            '%d',// EVT_ID
145
-            '%d',// QSG_ID
146
-            '%d',// EQG_primary
147
-        );
148
-        $success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
149
-        if (! $success) {
150
-            $this->add_error(
151
-                $this->get_migration_script()->_create_error_message_for_db_insertion(
152
-                    $this->_old_table,
153
-                    $old_event,
154
-                    $this->_new_table,
155
-                    $cols_n_values,
156
-                    $datatypes
157
-                )
158
-            );
159
-            return 0;
160
-        }
161
-        return $wpdb->insert_id;
162
-    }
141
+		$datatypes = array(
142
+			'%d',// EVT_ID
143
+			'%d',// QSG_ID
144
+			'%d',// EQG_primary
145
+		);
146
+		$success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
147
+		if (! $success) {
148
+			$this->add_error(
149
+				$this->get_migration_script()->_create_error_message_for_db_insertion(
150
+					$this->_old_table,
151
+					$old_event,
152
+					$this->_new_table,
153
+					$cols_n_values,
154
+					$datatypes
155
+				)
156
+			);
157
+			return 0;
158
+		}
159
+		return $wpdb->insert_id;
160
+	}
163 161
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -103,12 +103,12 @@  discard block
 block discarded – undo
103 103
     {
104 104
         global $wpdb;
105 105
         $new_question_group_id = $this->get_migration_script()->get_mapping_new_pk(
106
-            $wpdb->prefix . "events_qst_group",
106
+            $wpdb->prefix."events_qst_group",
107 107
             intval($old_question_group_id),
108
-            $wpdb->prefix . "esp_question_group"
108
+            $wpdb->prefix."esp_question_group"
109 109
         );
110 110
 
111
-        if (! $new_question_group_id) {
111
+        if ( ! $new_question_group_id) {
112 112
             $this->add_error(
113 113
                 sprintf(
114 114
                     // translators: %s question ID, %s event ID
@@ -120,11 +120,11 @@  discard block
 block discarded – undo
120 120
             return 0;
121 121
         }
122 122
         $new_event_id = $this->get_migration_script()->get_mapping_new_pk(
123
-            $wpdb->prefix . "events_detail",
123
+            $wpdb->prefix."events_detail",
124 124
             intval($old_event['id']),
125 125
             $wpdb->posts
126 126
         );
127
-        if (! $new_question_group_id) {
127
+        if ( ! $new_question_group_id) {
128 128
             $this->add_error(
129 129
                 sprintf(
130 130
                     // translators: %s event ID
@@ -141,12 +141,12 @@  discard block
 block discarded – undo
141 141
         );
142 142
 
143 143
         $datatypes = array(
144
-            '%d',// EVT_ID
145
-            '%d',// QSG_ID
146
-            '%d',// EQG_primary
144
+            '%d', // EVT_ID
145
+            '%d', // QSG_ID
146
+            '%d', // EQG_primary
147 147
         );
148 148
         $success = $wpdb->insert($this->_new_table, $cols_n_values, $datatypes);
149
-        if (! $success) {
149
+        if ( ! $success) {
150 150
             $this->add_error(
151 151
                 $this->get_migration_script()->_create_error_message_for_db_insertion(
152 152
                     $this->_old_table,
Please login to merge, or discard this patch.
core/data_migration_scripts/4_1_0_stages/EE_DMS_4_1_0_events.dmsstage.php 3 patches
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -426,7 +426,7 @@  discard block
 block discarded – undo
426 426
 
427 427
     /**
428 428
      * @param $old_event
429
-     * @param $new_cpt_id
429
+     * @param integer $new_cpt_id
430 430
      * @return int
431 431
      */
432 432
     private function _insert_event_meta($old_event, $new_cpt_id)
@@ -693,8 +693,8 @@  discard block
 block discarded – undo
693 693
 
694 694
 
695 695
     /**
696
-     * @param $new_event_id
697
-     * @param $new_venue_id
696
+     * @param integer $new_event_id
697
+     * @param integer $new_venue_id
698 698
      * @return int
699 699
      */
700 700
     private function _insert_new_venue_to_event($new_event_id, $new_venue_id)
Please login to merge, or discard this patch.
Indentation   +634 added lines, -639 removed lines patch added patch discarded remove patch
@@ -84,8 +84,6 @@  discard block
 block discarded – undo
84 84
   KEY `submitted` (`submitted`),
85 85
   KEY `likes` (`likes`)
86 86
 ) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8$$
87
-
88
-
89 87
  *
90 88
  * 4.1 Event model:
91 89
  * $this->_tables = array(
@@ -124,7 +122,6 @@  discard block
 block discarded – undo
124 122
                 'EVT_donations'=>new EE_Boolean_Field('EVT_donations', __("Accept Donations?", "event_espresso"), false, false)
125 123
 
126 124
             ));
127
-
128 125
  *
129 126
  * 3.1's start end table
130 127
  *
@@ -137,8 +134,6 @@  discard block
 block discarded – undo
137 134
   PRIMARY KEY (`id`),
138 135
   KEY `event_id` (`event_id`)
139 136
 ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8$$
140
-
141
-
142 137
  *
143 138
  * and 4.1 Datetime model's tables and fields:
144 139
  * $this->_tables = array(
@@ -160,172 +155,172 @@  discard block
 block discarded – undo
160 155
  */
161 156
 class EE_DMS_4_1_0_events extends EE_Data_Migration_Script_Stage
162 157
 {
163
-    private $_old_table;
164
-    private $_old_start_end_table;
165
-    private $_new_table;
166
-    private $_new_meta_table;
167
-    private $_new_datetime_table;
168
-
169
-
170
-
171
-    /**
172
-     * Just initializes the status of the migration
173
-     * @throws EE_Error
174
-     */
175
-    public function __construct()
176
-    {
177
-        global $wpdb;
178
-        $this->_old_table = $wpdb->prefix."events_detail";
179
-        $this->_old_start_end_table = $wpdb->prefix."events_start_end";
180
-        $this->_new_table = $wpdb->prefix."posts";
181
-        $this->_new_meta_table = $wpdb->prefix."esp_event_meta";
182
-        $this->_new_datetime_table = $wpdb->prefix."esp_datetime";
183
-        $this->_pretty_name = __("Events", "event_espresso");
184
-        parent::__construct();
185
-    }
186
-
187
-
188
-
189
-    /**
190
-     * Counts the records to migrate; the public version may cache it
191
-     * @return int
192
-     */
193
-    public function _count_records_to_migrate()
194
-    {
195
-        global $wpdb;
196
-        $count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->_old_table . ' WHERE event_status !="D"');
197
-        return intval($count);
198
-    }
199
-
200
-
201
-
202
-    /**
203
-     * IMPORTANT: if an error is encountered, or everything is finished, this stage should update its status property accordingly.
204
-     * Note: it should not alter the count of items migrated. That is done in the public function that calls this.
205
-     * IMPORTANT: The count of items migrated should ONLY be less than $num_items_to_migrate when it's the last migration step, otherwise it
206
-     * should always return $num_items_to_migrate. (Eg, if we're migrating attendees rows from the database, and $num_items_to_migrate is set to 50,
207
-     * then we SHOULD actually migrate 50 rows,but at very least we MUST report/return 50 items migrated)
208
-     * @param int $num_items_to_migrate
209
-     * @return int number of items ACTUALLY migrated
210
-     */
211
-    protected function _migration_step($num_items_to_migrate = 50)
212
-    {
213
-        global $wpdb;
214
-        // because the migration of each event can be a LOT more work, make each step smaller
215
-        $num_items_to_migrate = max(1, $num_items_to_migrate/5);
216
-        $events = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->_old_table WHERE event_status!='D' LIMIT %d,%d", $this->count_records_migrated(), $num_items_to_migrate), ARRAY_A);
217
-        $items_migrated_this_step = 0;
218
-
219
-        foreach ($events as $event_row) {
220
-            $guid = null;
221
-            // insert new 4.1 Attendee object using $wpdb
222
-            $post_id = $this->_insert_cpt($event_row);
223
-            if ($post_id) {
224
-                $this->get_migration_script()->set_mapping($this->_old_table, $event_row['id'], $this->_new_table, $post_id);
225
-                $meta_id = $this->_insert_event_meta($event_row, $post_id);
226
-                if ($meta_id) {
227
-                    $this->get_migration_script()->set_mapping($this->_old_table, $event_row['id'], $this->_new_meta_table, $meta_id);
228
-                }
229
-                $this->_convert_start_end_times($event_row, $post_id);
230
-                $event_meta = maybe_unserialize($event_row['event_meta']);
231
-                $guid = isset($event_meta['event_thumbnail_url']) ? $event_meta['event_thumbnail_url'] : null;
232
-                $this->get_migration_script()->convert_image_url_to_attachment_and_attach_to_post($guid, $post_id, $this);
233
-
234
-                // maybe create a venue from info on the event?
235
-                $new_venue_id = $this->_maybe_create_venue($event_row);
236
-                if ($new_venue_id) {
237
-                    $this->_insert_new_venue_to_event($post_id, $new_venue_id);
238
-                }
239
-                $this->_add_post_metas($event_row, $post_id);
240
-            }
241
-            $items_migrated_this_step++;
242
-            if ($guid) {
243
-                // if we had to check for an image attachment
244
-                // then let's call it a day (avoid timing out, because this took a long time)
245
-                break;
246
-            }
247
-        }
248
-        if ($this->count_records_migrated() + $items_migrated_this_step >= $this->count_records_to_migrate()) {
249
-            $this->set_status(EE_Data_Migration_Manager::status_completed);
250
-        }
251
-        return $items_migrated_this_step;
252
-    }
253
-
254
-    /**
255
-     * Stores any extra 3.1 "event_meta" column things as post meta
256
-     * @param array $old_event
257
-     * @param int $post_id
258
-     * @return void
259
-     */
260
-    private function _add_post_metas($old_event, $post_id)
261
-    {
262
-        $event_meta = maybe_unserialize($old_event['event_meta']);
263
-        if (! $event_meta || ! is_array($event_meta)) {
264
-            return;
265
-        }
266
-        unset($event_meta['date_submitted']);// factored into CPT
267
-        unset($event_meta['additional_attendee_reg_info']);// factored into event meta table
268
-        unset($event_meta['default_payment_status']);// dido
269
-        unset($event_meta['event_thumbnail_url']);// used to find post featured image
270
-        foreach ($event_meta as $meta_key => $meta_value) {
271
-            if ($meta_key) {// if the meta key is just an empty string, ignore it
272
-                $success = add_post_meta($post_id, $meta_key, $meta_value, true);
273
-                if (! $success) {
274
-                    $this->add_error(sprintf(__("Could not add post meta for CPT with ID #%d. Meta key: '%s',meta value:'%d' for 3.1 event: %s", "event_espresso"), $post_id, $meta_key, $meta_value, implode(",", $old_event)));
275
-                }
276
-            }
277
-        }
278
-        if ($old_event['alt_email']) {
279
-            add_post_meta($post_id, 'alt_email', $old_event['alt_email']);
280
-        }
281
-        if ($old_event['recurrence_id']) {
282
-            add_post_meta($post_id, 'recurrence_id', $old_event['recurrence_id']);
283
-        }
284
-    }
285
-
286
-
287
-
288
-    /**
289
-     * Finds a unique slug for this event, given its name (we could have simply used
290
-     * the old unique_identifier column, but it added a long string of seemingly random characters onto the end
291
-     * and really wasn't that pretty for a slug, so we decided we'd make our own slug again)
292
-     * @param string $event_name (the name of the event for reading by humans)
293
-     * @param string $old_identifier the old EE3 identifier (a long unique string)
294
-     * @param string $new_post_status a post status
295
-     * @return string
296
-     */
297
-    private function _find_unique_slug($event_name, $old_identifier = '', $new_post_status = 'publish')
298
-    {
299
-        $count = 0;
300
-        $original_name = $event_name ? sanitize_title($event_name) : $old_identifier;
301
-        return wp_unique_post_slug($original_name, 0, $new_post_status, 'espresso_events', 0);
302
-    }
303
-
304
-    /**
305
-     * returns whether or not there is a post that has this same slug (post_title)
306
-     * @global wpdb $wpdb
307
-     * @param string $slug
308
-     * @return boolean
309
-     */
310
-    private function _other_post_exists_with_that_slug($slug)
311
-    {
312
-        global $wpdb;
313
-        $query = $wpdb->prepare("SELECT COUNT(ID) FROM {$this->_new_table} WHERE event_status != 'D' AND post_name = %s", $slug);
314
-        $count = $wpdb->get_var($query);
315
-        return (boolean) intval($count);
316
-    }
317
-
318
-
319
-
320
-    /**
321
-     * @param $old_event
322
-     * @return int
323
-     */
324
-    private function _insert_cpt($old_event)
325
-    {
326
-        global $wpdb;
327
-        // convert 3.1 event status to 4.1 CPT status
328
-        // for reference, 3.1 event stati available for setting are:
158
+	private $_old_table;
159
+	private $_old_start_end_table;
160
+	private $_new_table;
161
+	private $_new_meta_table;
162
+	private $_new_datetime_table;
163
+
164
+
165
+
166
+	/**
167
+	 * Just initializes the status of the migration
168
+	 * @throws EE_Error
169
+	 */
170
+	public function __construct()
171
+	{
172
+		global $wpdb;
173
+		$this->_old_table = $wpdb->prefix."events_detail";
174
+		$this->_old_start_end_table = $wpdb->prefix."events_start_end";
175
+		$this->_new_table = $wpdb->prefix."posts";
176
+		$this->_new_meta_table = $wpdb->prefix."esp_event_meta";
177
+		$this->_new_datetime_table = $wpdb->prefix."esp_datetime";
178
+		$this->_pretty_name = __("Events", "event_espresso");
179
+		parent::__construct();
180
+	}
181
+
182
+
183
+
184
+	/**
185
+	 * Counts the records to migrate; the public version may cache it
186
+	 * @return int
187
+	 */
188
+	public function _count_records_to_migrate()
189
+	{
190
+		global $wpdb;
191
+		$count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->_old_table . ' WHERE event_status !="D"');
192
+		return intval($count);
193
+	}
194
+
195
+
196
+
197
+	/**
198
+	 * IMPORTANT: if an error is encountered, or everything is finished, this stage should update its status property accordingly.
199
+	 * Note: it should not alter the count of items migrated. That is done in the public function that calls this.
200
+	 * IMPORTANT: The count of items migrated should ONLY be less than $num_items_to_migrate when it's the last migration step, otherwise it
201
+	 * should always return $num_items_to_migrate. (Eg, if we're migrating attendees rows from the database, and $num_items_to_migrate is set to 50,
202
+	 * then we SHOULD actually migrate 50 rows,but at very least we MUST report/return 50 items migrated)
203
+	 * @param int $num_items_to_migrate
204
+	 * @return int number of items ACTUALLY migrated
205
+	 */
206
+	protected function _migration_step($num_items_to_migrate = 50)
207
+	{
208
+		global $wpdb;
209
+		// because the migration of each event can be a LOT more work, make each step smaller
210
+		$num_items_to_migrate = max(1, $num_items_to_migrate/5);
211
+		$events = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->_old_table WHERE event_status!='D' LIMIT %d,%d", $this->count_records_migrated(), $num_items_to_migrate), ARRAY_A);
212
+		$items_migrated_this_step = 0;
213
+
214
+		foreach ($events as $event_row) {
215
+			$guid = null;
216
+			// insert new 4.1 Attendee object using $wpdb
217
+			$post_id = $this->_insert_cpt($event_row);
218
+			if ($post_id) {
219
+				$this->get_migration_script()->set_mapping($this->_old_table, $event_row['id'], $this->_new_table, $post_id);
220
+				$meta_id = $this->_insert_event_meta($event_row, $post_id);
221
+				if ($meta_id) {
222
+					$this->get_migration_script()->set_mapping($this->_old_table, $event_row['id'], $this->_new_meta_table, $meta_id);
223
+				}
224
+				$this->_convert_start_end_times($event_row, $post_id);
225
+				$event_meta = maybe_unserialize($event_row['event_meta']);
226
+				$guid = isset($event_meta['event_thumbnail_url']) ? $event_meta['event_thumbnail_url'] : null;
227
+				$this->get_migration_script()->convert_image_url_to_attachment_and_attach_to_post($guid, $post_id, $this);
228
+
229
+				// maybe create a venue from info on the event?
230
+				$new_venue_id = $this->_maybe_create_venue($event_row);
231
+				if ($new_venue_id) {
232
+					$this->_insert_new_venue_to_event($post_id, $new_venue_id);
233
+				}
234
+				$this->_add_post_metas($event_row, $post_id);
235
+			}
236
+			$items_migrated_this_step++;
237
+			if ($guid) {
238
+				// if we had to check for an image attachment
239
+				// then let's call it a day (avoid timing out, because this took a long time)
240
+				break;
241
+			}
242
+		}
243
+		if ($this->count_records_migrated() + $items_migrated_this_step >= $this->count_records_to_migrate()) {
244
+			$this->set_status(EE_Data_Migration_Manager::status_completed);
245
+		}
246
+		return $items_migrated_this_step;
247
+	}
248
+
249
+	/**
250
+	 * Stores any extra 3.1 "event_meta" column things as post meta
251
+	 * @param array $old_event
252
+	 * @param int $post_id
253
+	 * @return void
254
+	 */
255
+	private function _add_post_metas($old_event, $post_id)
256
+	{
257
+		$event_meta = maybe_unserialize($old_event['event_meta']);
258
+		if (! $event_meta || ! is_array($event_meta)) {
259
+			return;
260
+		}
261
+		unset($event_meta['date_submitted']);// factored into CPT
262
+		unset($event_meta['additional_attendee_reg_info']);// factored into event meta table
263
+		unset($event_meta['default_payment_status']);// dido
264
+		unset($event_meta['event_thumbnail_url']);// used to find post featured image
265
+		foreach ($event_meta as $meta_key => $meta_value) {
266
+			if ($meta_key) {// if the meta key is just an empty string, ignore it
267
+				$success = add_post_meta($post_id, $meta_key, $meta_value, true);
268
+				if (! $success) {
269
+					$this->add_error(sprintf(__("Could not add post meta for CPT with ID #%d. Meta key: '%s',meta value:'%d' for 3.1 event: %s", "event_espresso"), $post_id, $meta_key, $meta_value, implode(",", $old_event)));
270
+				}
271
+			}
272
+		}
273
+		if ($old_event['alt_email']) {
274
+			add_post_meta($post_id, 'alt_email', $old_event['alt_email']);
275
+		}
276
+		if ($old_event['recurrence_id']) {
277
+			add_post_meta($post_id, 'recurrence_id', $old_event['recurrence_id']);
278
+		}
279
+	}
280
+
281
+
282
+
283
+	/**
284
+	 * Finds a unique slug for this event, given its name (we could have simply used
285
+	 * the old unique_identifier column, but it added a long string of seemingly random characters onto the end
286
+	 * and really wasn't that pretty for a slug, so we decided we'd make our own slug again)
287
+	 * @param string $event_name (the name of the event for reading by humans)
288
+	 * @param string $old_identifier the old EE3 identifier (a long unique string)
289
+	 * @param string $new_post_status a post status
290
+	 * @return string
291
+	 */
292
+	private function _find_unique_slug($event_name, $old_identifier = '', $new_post_status = 'publish')
293
+	{
294
+		$count = 0;
295
+		$original_name = $event_name ? sanitize_title($event_name) : $old_identifier;
296
+		return wp_unique_post_slug($original_name, 0, $new_post_status, 'espresso_events', 0);
297
+	}
298
+
299
+	/**
300
+	 * returns whether or not there is a post that has this same slug (post_title)
301
+	 * @global wpdb $wpdb
302
+	 * @param string $slug
303
+	 * @return boolean
304
+	 */
305
+	private function _other_post_exists_with_that_slug($slug)
306
+	{
307
+		global $wpdb;
308
+		$query = $wpdb->prepare("SELECT COUNT(ID) FROM {$this->_new_table} WHERE event_status != 'D' AND post_name = %s", $slug);
309
+		$count = $wpdb->get_var($query);
310
+		return (boolean) intval($count);
311
+	}
312
+
313
+
314
+
315
+	/**
316
+	 * @param $old_event
317
+	 * @return int
318
+	 */
319
+	private function _insert_cpt($old_event)
320
+	{
321
+		global $wpdb;
322
+		// convert 3.1 event status to 4.1 CPT status
323
+		// for reference, 3.1 event stati available for setting are:
329 324
 //      $status = array(array('id' => 'A', 'text' => __('Public', 'event_espresso')), array('id' => 'S', 'text' => __('Waitlist', 'event_espresso')), array('id' => 'O', 'text' => __('Ongoing', 'event_espresso')), array('id' => 'R', 'text' => __('Draft', 'event_espresso')), array('id' => 'D', 'text' => __('Deleted', 'event_espresso')));
330 325
 //      and the json api uses the following to convert from 3.1 to 4.0
331 326
 //      'S'=>'secondary/waitlist',
@@ -339,486 +334,486 @@  discard block
 block discarded – undo
339 334
 //      4.1 Event Post stati are the normal post statis
340 335
 //      (publish,future,draft,pending,private,trash,auto-draft,inherit)
341 336
 //      and 3 custom ones: cancelled,postponed,sold_out
342
-        $status_conversions = array(
343
-            'R'=>'draft',
344
-            'X'=>'draft',// 4.1 doesn't have a "not approved for publishing" status. this is what posts are set to that aren't approved
345
-            'P'=>'pending',
346
-            'IA'=>'draft',// draft and in the past
337
+		$status_conversions = array(
338
+			'R'=>'draft',
339
+			'X'=>'draft',// 4.1 doesn't have a "not approved for publishing" status. this is what posts are set to that aren't approved
340
+			'P'=>'pending',
341
+			'IA'=>'draft',// draft and in the past
347 342
 // IA=inactive in 3.1: events were switched to this when they expired. in 4.1 that's just calculated
348
-            'O'=>'publish',// @todo: will be an event type later; if this is the status, set the end date WAAAY later; and add term for 'ongoing'
349
-            'A'=>'publish',
350
-            'S'=>'draft',// @todo: is it ok to just mark secondary/waitlist events as DRAFTS?
351
-            'D'=>'trash',
352
-        );
353
-        $post_status = $status_conversions[ $old_event['event_status'] ];
354
-        // check if we've sold out
355
-        if (intval($old_event['reg_limit']) <= self::count_registrations($old_event['id'])) {
356
-            $post_status = 'sold_out';
357
-        }
343
+			'O'=>'publish',// @todo: will be an event type later; if this is the status, set the end date WAAAY later; and add term for 'ongoing'
344
+			'A'=>'publish',
345
+			'S'=>'draft',// @todo: is it ok to just mark secondary/waitlist events as DRAFTS?
346
+			'D'=>'trash',
347
+		);
348
+		$post_status = $status_conversions[ $old_event['event_status'] ];
349
+		// check if we've sold out
350
+		if (intval($old_event['reg_limit']) <= self::count_registrations($old_event['id'])) {
351
+			$post_status = 'sold_out';
352
+		}
358 353
 //      FYI postponed and cancelled don't exist in 3.1
359
-        $cols_n_values = array(
360
-            'post_title'=>stripslashes($old_event['event_name']),// EVT_name
361
-            'post_content'=>stripslashes($old_event['event_desc']),// EVT_desc
362
-            'post_name'=>$this->_find_unique_slug($old_event['event_name'], $old_event['event_identifier'], $post_status),// EVT_slug
363
-            'post_date'=>$old_event['submitted'],// EVT_created NOT
364
-            'post_date_gmt'=>get_gmt_from_date($old_event['submitted']),
365
-            'post_excerpt'=>'',// EVT_short_desc
366
-            'post_modified'=>$old_event['submitted'],// EVT_modified
367
-            'post_modified_gmt'=>get_gmt_from_date($old_event['submitted']),
368
-            'post_author'=>$old_event['wp_user'],// EVT_wp_user
369
-            'post_parent'=>0,// parent maybe get this from some REM field?
370
-            'menu_order'=>0,// EVT_order
371
-            'post_type'=>'espresso_events',// post_type
372
-            'post_status'=>$post_status,// status
373
-        );
374
-        $cols_n_values_with_no_invalid_text = array();
375
-        foreach ($cols_n_values as $col => $value) {
376
-            $value_sans_invalid_chars = $wpdb->strip_invalid_text_for_column($this->_new_table, $col, $value);
377
-            if (! is_wp_error($value_sans_invalid_chars)) {
378
-                $cols_n_values_with_no_invalid_text[ $col ] = $value_sans_invalid_chars;
379
-            } else {
380
-                // otherwise leave it as-is. It will blow everything up and stop the migration
381
-                $cols_n_values_with_no_invalid_text[ $col ] = $value;
382
-            }
383
-        }
384
-        $cols_n_values = $cols_n_values_with_no_invalid_text;
385
-        $datatypes = array(
386
-            '%s',// EVT_name
387
-            '%s',// EVT_desc
388
-            '%s',// EVT_slug
389
-            '%s',// EVT_created
390
-            '%s',
391
-            '%s',// EVT_short_desc
392
-            '%s',// EVT_modified
393
-            '%s',
394
-            '%s',// EVT_wp_user
395
-            '%d',// post_parent
396
-            '%d',// EVT_order
397
-            '%s',// post_type
398
-            '%s',// status
399
-        );
400
-        $success = $wpdb->insert(
401
-            $this->_new_table,
402
-            $cols_n_values,
403
-            $datatypes
404
-        );
405
-        if (! $success) {
406
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_table, $cols_n_values, $datatypes));
407
-            return 0;
408
-        }
409
-        return $wpdb->insert_id;
410
-    }
411
-
412
-    /**
413
-     * Counts all the registrations for the event in the 3.1 DB. (takes into account attendee rows which represent various registrations)
414
-     * @global wpdb $wpdb
415
-     * @param int $event_id
416
-     * @return int
417
-     */
418
-    public static function count_registrations($event_id)
419
-    {
420
-        global $wpdb;
421
-        $count = $wpdb->get_var($wpdb->prepare("SELECT sum(quantity) FROM {$wpdb->prefix}events_attendee WHERE event_id=%d", $event_id));
422
-        return intval($count);
423
-    }
424
-
425
-
426
-
427
-    /**
428
-     * @param $old_event
429
-     * @param $new_cpt_id
430
-     * @return int
431
-     */
432
-    private function _insert_event_meta($old_event, $new_cpt_id)
433
-    {
434
-        global $wpdb;
435
-        $event_meta = maybe_unserialize($old_event['event_meta']);
354
+		$cols_n_values = array(
355
+			'post_title'=>stripslashes($old_event['event_name']),// EVT_name
356
+			'post_content'=>stripslashes($old_event['event_desc']),// EVT_desc
357
+			'post_name'=>$this->_find_unique_slug($old_event['event_name'], $old_event['event_identifier'], $post_status),// EVT_slug
358
+			'post_date'=>$old_event['submitted'],// EVT_created NOT
359
+			'post_date_gmt'=>get_gmt_from_date($old_event['submitted']),
360
+			'post_excerpt'=>'',// EVT_short_desc
361
+			'post_modified'=>$old_event['submitted'],// EVT_modified
362
+			'post_modified_gmt'=>get_gmt_from_date($old_event['submitted']),
363
+			'post_author'=>$old_event['wp_user'],// EVT_wp_user
364
+			'post_parent'=>0,// parent maybe get this from some REM field?
365
+			'menu_order'=>0,// EVT_order
366
+			'post_type'=>'espresso_events',// post_type
367
+			'post_status'=>$post_status,// status
368
+		);
369
+		$cols_n_values_with_no_invalid_text = array();
370
+		foreach ($cols_n_values as $col => $value) {
371
+			$value_sans_invalid_chars = $wpdb->strip_invalid_text_for_column($this->_new_table, $col, $value);
372
+			if (! is_wp_error($value_sans_invalid_chars)) {
373
+				$cols_n_values_with_no_invalid_text[ $col ] = $value_sans_invalid_chars;
374
+			} else {
375
+				// otherwise leave it as-is. It will blow everything up and stop the migration
376
+				$cols_n_values_with_no_invalid_text[ $col ] = $value;
377
+			}
378
+		}
379
+		$cols_n_values = $cols_n_values_with_no_invalid_text;
380
+		$datatypes = array(
381
+			'%s',// EVT_name
382
+			'%s',// EVT_desc
383
+			'%s',// EVT_slug
384
+			'%s',// EVT_created
385
+			'%s',
386
+			'%s',// EVT_short_desc
387
+			'%s',// EVT_modified
388
+			'%s',
389
+			'%s',// EVT_wp_user
390
+			'%d',// post_parent
391
+			'%d',// EVT_order
392
+			'%s',// post_type
393
+			'%s',// status
394
+		);
395
+		$success = $wpdb->insert(
396
+			$this->_new_table,
397
+			$cols_n_values,
398
+			$datatypes
399
+		);
400
+		if (! $success) {
401
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_table, $cols_n_values, $datatypes));
402
+			return 0;
403
+		}
404
+		return $wpdb->insert_id;
405
+	}
406
+
407
+	/**
408
+	 * Counts all the registrations for the event in the 3.1 DB. (takes into account attendee rows which represent various registrations)
409
+	 * @global wpdb $wpdb
410
+	 * @param int $event_id
411
+	 * @return int
412
+	 */
413
+	public static function count_registrations($event_id)
414
+	{
415
+		global $wpdb;
416
+		$count = $wpdb->get_var($wpdb->prepare("SELECT sum(quantity) FROM {$wpdb->prefix}events_attendee WHERE event_id=%d", $event_id));
417
+		return intval($count);
418
+	}
419
+
420
+
421
+
422
+	/**
423
+	 * @param $old_event
424
+	 * @param $new_cpt_id
425
+	 * @return int
426
+	 */
427
+	private function _insert_event_meta($old_event, $new_cpt_id)
428
+	{
429
+		global $wpdb;
430
+		$event_meta = maybe_unserialize($old_event['event_meta']);
436 431
 //      for reference, 3.1 'default_payment_status' are: $default_payment_status = array(
437 432
 //  array('id' => "", 'text' => 'No Change'),
438 433
 //  array('id' => 'Incomplete', 'text' => 'Incomplete'),
439 434
 //  array('id' => 'Pending', 'text' => 'Pending'),
440 435
 //  //array('id' => 'Completed', 'text' => 'Completed')
441 436
 // );
442
-        $default_reg_status = $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID(isset($event_meta['default_payment_status']) ? $event_meta['default_payment_status'] : '', intval($old_event['require_pre_approval']));
443
-        $cols_n_values = array(
444
-            'EVT_ID'=>$new_cpt_id,// EVT_ID_fk
445
-            'EVT_display_desc'=> 'Y' == $old_event['display_desc'],
446
-            'EVT_display_ticket_selector'=> 'Y'== $old_event['display_reg_form'],
447
-            'EVT_visible_on'=> $this->get_migration_script()->convert_date_string_to_utc($this, $old_event, current_time('mysql'), $old_event['timezone_string']),// don't use the old 'visible_on', as it wasn't ever used
448
-            'EVT_additional_limit'=> $old_event['allow_multiple'] == 'N' ? 1 : $old_event['additional_limit'],
449
-            'EVT_default_registration_status' => $default_reg_status,
450
-            'EVT_member_only'=>$old_event['member_only'],
451
-            'EVT_phone'=> $old_event['phone'],
452
-            'EVT_allow_overflow' => 'Y' == $old_event['allow_overflow'],
453
-            'EVT_timezone_string'=> $old_event['timezone_string'],
454
-            'EVT_external_URL'=>$old_event['externalURL'],
455
-            'EVT_donations'=>false// doesnt exist in 3.1
456
-
457
-        );
458
-        $datatypes = array(
459
-            '%s',// EVT_ID
460
-            '%d',// EVT_display_desc
461
-            '%d',// EVT_display_ticket_selector
462
-            '%s',// EVT_visible_on
463
-            '%d',// EVT_additional_limit
464
-            '%s',// EVT_default_registration_status
465
-            '%d',// EVT_member_only
466
-            '%s',// EVT_phone
467
-            '%d',// EVT_allow_overflow
468
-            '%s',// EVT_timezone_string
469
-            '%s',// EVT_external_URL
470
-            '%d',// EVT_donations
471
-        );
472
-        $success = $wpdb->insert(
473
-            $this->_new_meta_table,
474
-            $cols_n_values,
475
-            $datatypes
476
-        );
477
-        if (! $success) {
478
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $cols_n_values, $datatypes));
479
-            return 0;
480
-        }
481
-        return $wpdb->insert_id;
482
-    }
483
-
484
-
485
-
486
-    /**
487
-     * @param $old_event
488
-     * @return int
489
-     */
490
-    private function _maybe_create_venue($old_event)
491
-    {
492
-        if ($old_event['address'] ||
493
-                $old_event['address2'] ||
494
-                $old_event['city'] ||
495
-                $old_event['state'] ||
496
-                $old_event['zip'] ||
497
-                $old_event['venue_title'] ||
498
-                $old_event['venue_url'] ||
499
-                $old_event['venue_image'] ||
500
-                $old_event['venue_phone'] ||
501
-                $old_event['virtual_url'] ||
502
-                $old_event['virtual_phone']
503
-                ) {
504
-            $old_id = $this->_duplicate_venue_exists($old_event);
505
-            if ($old_id) {
506
-                return $old_id;
507
-            }
508
-            $new_id = $this->_insert_venue_into_posts($old_event);
509
-            if ($new_id) {
510
-                $this->_insert_venue_into_meta_table($new_id, $old_event);
511
-                $guid = isset($old_event['venue_image']) ? $old_event['venue_image']  : null;
512
-                $this->get_migration_script()->convert_image_url_to_attachment_and_attach_to_post($guid, $new_id, $this);
513
-            }
514
-            // we don't bother recording the conversion from old events to venues as that
515
-            // will complicate finding the conversion from old venues to new events
516
-            return $new_id;
517
-        } else {
518
-            return 0;
519
-        }
520
-    }
521
-
522
-    /**
523
-     * Assuming there is venue data on this event, check if there is a duplicate venue already in the system for it.
524
-     * If so, return it. Otherwise return NULL.
525
-     * @param array $old_event
526
-     * @return int duplicate venue id
527
-     */
528
-    private function _duplicate_venue_exists($old_event)
529
-    {
530
-        global $wpdb;
531
-        $conditions = array(
532
-            'VNU_address' => $old_event ['address'],
533
-            'VNU_address2' => $old_event['address2'],
534
-            'VNU_city' => $old_event['city'],
535
-            'VNU_zip' => $old_event['zip'],
536
-            'post_title'=> $this->_get_venue_title_for_event($old_event),
537
-            'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
538
-            'VNU_url'=>$old_event['venue_url'],// VNU_url
539
-            'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
540
-            'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
541
-        );
542
-        $sql_conditions = array();
543
-        foreach ($conditions as $column => $value) {
544
-            $sql_conditions [] = $wpdb->prepare("$column = %s", $value);
545
-        }
546
-        $query = "SELECT VNU_ID
437
+		$default_reg_status = $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID(isset($event_meta['default_payment_status']) ? $event_meta['default_payment_status'] : '', intval($old_event['require_pre_approval']));
438
+		$cols_n_values = array(
439
+			'EVT_ID'=>$new_cpt_id,// EVT_ID_fk
440
+			'EVT_display_desc'=> 'Y' == $old_event['display_desc'],
441
+			'EVT_display_ticket_selector'=> 'Y'== $old_event['display_reg_form'],
442
+			'EVT_visible_on'=> $this->get_migration_script()->convert_date_string_to_utc($this, $old_event, current_time('mysql'), $old_event['timezone_string']),// don't use the old 'visible_on', as it wasn't ever used
443
+			'EVT_additional_limit'=> $old_event['allow_multiple'] == 'N' ? 1 : $old_event['additional_limit'],
444
+			'EVT_default_registration_status' => $default_reg_status,
445
+			'EVT_member_only'=>$old_event['member_only'],
446
+			'EVT_phone'=> $old_event['phone'],
447
+			'EVT_allow_overflow' => 'Y' == $old_event['allow_overflow'],
448
+			'EVT_timezone_string'=> $old_event['timezone_string'],
449
+			'EVT_external_URL'=>$old_event['externalURL'],
450
+			'EVT_donations'=>false// doesnt exist in 3.1
451
+
452
+		);
453
+		$datatypes = array(
454
+			'%s',// EVT_ID
455
+			'%d',// EVT_display_desc
456
+			'%d',// EVT_display_ticket_selector
457
+			'%s',// EVT_visible_on
458
+			'%d',// EVT_additional_limit
459
+			'%s',// EVT_default_registration_status
460
+			'%d',// EVT_member_only
461
+			'%s',// EVT_phone
462
+			'%d',// EVT_allow_overflow
463
+			'%s',// EVT_timezone_string
464
+			'%s',// EVT_external_URL
465
+			'%d',// EVT_donations
466
+		);
467
+		$success = $wpdb->insert(
468
+			$this->_new_meta_table,
469
+			$cols_n_values,
470
+			$datatypes
471
+		);
472
+		if (! $success) {
473
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $cols_n_values, $datatypes));
474
+			return 0;
475
+		}
476
+		return $wpdb->insert_id;
477
+	}
478
+
479
+
480
+
481
+	/**
482
+	 * @param $old_event
483
+	 * @return int
484
+	 */
485
+	private function _maybe_create_venue($old_event)
486
+	{
487
+		if ($old_event['address'] ||
488
+				$old_event['address2'] ||
489
+				$old_event['city'] ||
490
+				$old_event['state'] ||
491
+				$old_event['zip'] ||
492
+				$old_event['venue_title'] ||
493
+				$old_event['venue_url'] ||
494
+				$old_event['venue_image'] ||
495
+				$old_event['venue_phone'] ||
496
+				$old_event['virtual_url'] ||
497
+				$old_event['virtual_phone']
498
+				) {
499
+			$old_id = $this->_duplicate_venue_exists($old_event);
500
+			if ($old_id) {
501
+				return $old_id;
502
+			}
503
+			$new_id = $this->_insert_venue_into_posts($old_event);
504
+			if ($new_id) {
505
+				$this->_insert_venue_into_meta_table($new_id, $old_event);
506
+				$guid = isset($old_event['venue_image']) ? $old_event['venue_image']  : null;
507
+				$this->get_migration_script()->convert_image_url_to_attachment_and_attach_to_post($guid, $new_id, $this);
508
+			}
509
+			// we don't bother recording the conversion from old events to venues as that
510
+			// will complicate finding the conversion from old venues to new events
511
+			return $new_id;
512
+		} else {
513
+			return 0;
514
+		}
515
+	}
516
+
517
+	/**
518
+	 * Assuming there is venue data on this event, check if there is a duplicate venue already in the system for it.
519
+	 * If so, return it. Otherwise return NULL.
520
+	 * @param array $old_event
521
+	 * @return int duplicate venue id
522
+	 */
523
+	private function _duplicate_venue_exists($old_event)
524
+	{
525
+		global $wpdb;
526
+		$conditions = array(
527
+			'VNU_address' => $old_event ['address'],
528
+			'VNU_address2' => $old_event['address2'],
529
+			'VNU_city' => $old_event['city'],
530
+			'VNU_zip' => $old_event['zip'],
531
+			'post_title'=> $this->_get_venue_title_for_event($old_event),
532
+			'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
533
+			'VNU_url'=>$old_event['venue_url'],// VNU_url
534
+			'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
535
+			'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
536
+		);
537
+		$sql_conditions = array();
538
+		foreach ($conditions as $column => $value) {
539
+			$sql_conditions [] = $wpdb->prepare("$column = %s", $value);
540
+		}
541
+		$query = "SELECT VNU_ID
547 542
 					FROM
548 543
 		{$wpdb->posts} as p INNER JOIN
549 544
 		{$wpdb->prefix}esp_venue_meta as v ON p.ID = v.VNU_ID
550 545
 			WHERE " . implode(" AND ", $sql_conditions) . " LIMIT 1";
551
-        $id = $wpdb->get_var($query);
552
-        return $id;
553
-    }
554
-
555
-    /**
556
-     * Gets teh venue's title or makes one up if there is none
557
-     * @param array $event_data_array keys are events_details columns and values are their values
558
-     * @return string
559
-     */
560
-    protected function _get_venue_title_for_event($event_data_array)
561
-    {
562
-        return $event_data_array['venue_title'] ? stripslashes($event_data_array['venue_title']) : stripslashes(sprintf(__('Venue of %s', 'event_espresso'), $event_data_array['event_name']));
563
-    }
564
-
565
-    /**
566
-     * Inserts the CPT
567
-     *
568
-     * @param array $old_event keys are cols, values are col values
569
-     * @return int
570
-     */
571
-    private function _insert_venue_into_posts($old_event)
572
-    {
573
-        global $wpdb;
574
-        $insertion_array = array(
575
-                    'post_title'=> $this->_get_venue_title_for_event($old_event),// VNU_name
576
-                    'post_content'=>'',// VNU_desc
577
-                    'post_name'=> $this->_find_unique_slug($old_event['venue_title'], sanitize_title('venue-of-' . $old_event['event_name'])),// VNU_identifier
578
-                    'post_date'=>current_time('mysql'),// VNU_created
579
-                    'post_date_gmt'=>get_gmt_from_date(current_time('mysql')),
580
-                    'post_excerpt'=>'',// VNU_short_desc arbitrary only 50 characters
581
-                    'post_modified'=>current_time('mysql'),// VNU_modified
582
-                    'post_modified_gmt'=>get_gmt_from_date(current_time('mysql')),
583
-                    'post_author'=>$old_event['wp_user'],// VNU_wp_user
584
-                    'post_parent'=>0,// parent
585
-                    'menu_order'=>0,// VNU_order
586
-                    'post_type'=>'espresso_venues'// post_type
587
-                );
588
-        $datatypes_array = array(
589
-                    '%s',// VNU_name
590
-                    '%s',// VNU_desc
591
-                    '%s',// VNU_identifier
592
-                    '%s',// VNU_created
593
-                    '%s',
594
-                    '%s',// VNU_short_desc
595
-                    '%s',// VNU_modified
596
-                    '%s',
597
-                    '%d',// VNU_wp_user
598
-                    '%d',// parent
599
-                    '%d',// VNU_order
600
-                    '%s',// post_type
601
-                );
602
-        $success = $wpdb->insert(
603
-            $wpdb->posts,
604
-            $insertion_array,
605
-            $datatypes_array
606
-        );
607
-        if (! $success) {
608
-            $this->add_error(
609
-                $this->get_migration_script()->_create_error_message_for_db_insertion(
610
-                    $this->_old_table,
611
-                    $old_event,
612
-                    $this->_new_table,
613
-                    $insertion_array,
614
-                    $datatypes_array
615
-                )
616
-            );
617
-            return 0;
618
-        }
619
-        return $wpdb->insert_id;
620
-    }
621
-
622
-    /**
623
-     * Inserts into the venue_meta table
624
-     * @param int $cpt_id
625
-     * @param array $old_event
626
-     * @return int
627
-     */
628
-    private function _insert_venue_into_meta_table($cpt_id, $old_event)
629
-    {
630
-        global $wpdb;
631
-
632
-        // assume the country is the same as the organization's old settings
633
-        $country_iso = $this->get_migration_script()->get_default_country_iso();
634
-        // find the state from the venue, or the organization, or just guess california
635
-        if (! $old_event['state']) {
636
-            $old_org_options = get_option('events_organization_settings');
637
-            $state_name = stripslashes($old_org_options['organization_state']);
638
-        } else {
639
-            $state_name = $old_event['state'];
640
-        }
641
-        if (! $state_name) {
642
-            $state_name = 'CA';
643
-        }
644
-        // get a state ID with the same name, if possible
645
-        try {
646
-            $state = $this->get_migration_script()->get_or_create_state($state_name, $country_iso);
647
-            $state_id = $state['STA_ID'];
648
-        } catch (EE_Error $e) {
649
-            $this->add_error($e->getMessage());
650
-            $state_id = 0;
651
-        }
652
-        // now insert into meta table
653
-        $insertion_array = array(
654
-            'VNU_ID'=>$cpt_id,// VNU_ID_fk
655
-            'VNU_address'=>stripslashes($old_event['address']),// VNU_address
656
-            'VNU_address2'=>stripslashes($old_event['address2']),// VNU_address2
657
-            'VNU_city'=>stripslashes($old_event['city']),// VNU_city
658
-            'STA_ID'=>$state_id,// STA_ID
659
-            'CNT_ISO'=>$country_iso,// CNT_ISO
660
-            'VNU_zip'=>$old_event['zip'],// VNU_zip
661
-            'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
662
-            'VNU_capacity'=>-1,// VNU_capacity
663
-            'VNU_url'=>$old_event['venue_url'],// VNU_url
664
-            'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
665
-            'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
666
-            'VNU_google_map_link'=>'',// VNU_google_map_link
667
-            'VNU_enable_for_gmap'=>true // VNU_enable_for_gmap
668
-        );
669
-        $datatypes = array(
670
-            '%d',// VNU_ID_fk
671
-            '%s',// VNU_address
672
-            '%s',// VNU_address2
673
-            '%s',// VNU_city
674
-            '%d',// STA_ID
675
-            '%s',// CNT_ISO
676
-            '%s',// VNU_zip
677
-            '%s',// VNU_phone
678
-            '%d',// VNU_capacity
679
-            '%s',// VNU_url
680
-            '%s',// VNU_virtual_phone
681
-            '%s',// VNU_virtual_url
682
-            '%s',// VNU_google_map_link
683
-            '%d',// VNU_enable_for_gmap
684
-        );
685
-        $success = $wpdb->insert($wpdb->prefix."esp_venue_meta", $insertion_array, $datatypes);
686
-        if (! $success) {
687
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $insertion_array, $datatypes));
688
-            return 0;
689
-        }
690
-        return $wpdb->insert_id;
691
-    }
692
-
693
-
694
-
695
-    /**
696
-     * @param $new_event_id
697
-     * @param $new_venue_id
698
-     * @return int
699
-     */
700
-    private function _insert_new_venue_to_event($new_event_id, $new_venue_id)
701
-    {
702
-        global $wpdb;
703
-        if (! $new_event_id) {
704
-            $this->add_error(sprintf(__("Could not find 4.1 event id for 3.1 event #%d.", "event_espresso"), $new_event_id));
705
-            return 0;
706
-        }
707
-        if (! $new_venue_id) {
708
-            $this->add_error(sprintf(__("Could not find 4.1 venue id for 3.1 venue #%d.", "event_espresso"), $new_venue_id));
709
-            return 0;
710
-        }
711
-        $cols_n_values = array(
712
-            'EVT_ID'=>$new_event_id,
713
-            'VNU_ID'=>$new_venue_id,
714
-            'EVV_primary'=>true
715
-        );
716
-        $datatypes = array(
717
-            '%d',// EVT_ID
718
-            '%d',// VNU_ID
719
-            '%d',// EVT_primary
720
-        );
721
-        $success = $wpdb->insert($wpdb->prefix."esp_event_venue", $cols_n_values, $datatypes);
722
-        if (! $success) {
723
-            $this->add_error(
724
-                $this->get_migration_script()->_create_error_message_for_db_insertion(
725
-                    $this->_old_table,
726
-                    array(),
727
-                    $this->_new_table,
728
-                    $cols_n_values,
729
-                    $datatypes
730
-                )
731
-            );
732
-            return 0;
733
-        }
734
-        return $wpdb->insert_id;
735
-    }
736
-    /**
737
-     * Converts all the 3.1 start-end times for the event to 4.1 datetimes
738
-     * @global wpdb $wpdb
739
-     * @param array $old_event results of get_results(...,ARRAY_A)
740
-     * @param int $new_cpt_id new post ID
741
-     * @return void (if there are errors though, adds them to the stage's error list
742
-     */
743
-    private function _convert_start_end_times($old_event, $new_cpt_id)
744
-    {
745
-        $start_end_times = $this->_get_old_start_end_times($old_event['id']);
746
-        foreach ($start_end_times as $start_end_time) {
747
-            $datetime_id = $this->_insert_new_datetime($start_end_time, $old_event, $new_cpt_id);
748
-            if ($datetime_id) {
749
-                $this->get_migration_script()->set_mapping($this->_old_start_end_table, $start_end_time['id'], $this->_new_datetime_table, $datetime_id);
750
-            }
751
-        }
752
-    }
753
-    /**
754
-     * Queries the 3.1 wp_events_start_end table to get all the start and end times for the event
755
-     * @global wpdb $wpdb
756
-     * @param int $old_event_id
757
-     * @return array
758
-     */
759
-    private function _get_old_start_end_times($old_event_id)
760
-    {
761
-        global $wpdb;
762
-        return $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->_old_start_end_table WHERE event_id=%d", $old_event_id), ARRAY_A);
763
-    }
764
-    /**
765
-     * Inserts a 4.1 datetime given the 3.1 start_end db row and event_details row
766
-     * @param array $start_end_time_row
767
-     * @param array $old_event_row
768
-     * @param int $new_cpt_id
769
-     * @return int ID of new datetime
770
-     */
771
-    private function _insert_new_datetime($start_end_time_row, $old_event_row, $new_cpt_id)
772
-    {
773
-        global $wpdb;
774
-        $start_date = $old_event_row['start_date'];
775
-        $start_time = $this->get_migration_script()->convertTimeFromAMPM($start_end_time_row['start_time']);
776
-        $end_date = $old_event_row['end_date'];
777
-        $end_time = $this->get_migration_script()->convertTimeFromAMPM($start_end_time_row['end_time']);
778
-        $existing_datetimes = $this->_count_other_datetimes_exist_for_new_event($new_cpt_id);
779
-        $start_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$start_date $start_time:00", $old_event_row['timezone_string']);
780
-        $end_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$end_date $end_time:00", $old_event_row['timezone_string']);
781
-        $cols_n_values = array(
782
-            'EVT_ID'=>$new_cpt_id,// EVT_ID
783
-            'DTT_EVT_start'=>$start_datetime_utc,// DTT_EVT_start
784
-            'DTT_EVT_end'=> $end_datetime_utc,// DTT_EVT_end
785
-            'DTT_reg_limit'=>intval($start_end_time_row['reg_limit']) ? $start_end_time_row['reg_limit'] : $old_event_row['reg_limit'],// DTT_reg_limit
786
-            'DTT_sold'=>0,// note: we will increment this as registrations are added during the migration
546
+		$id = $wpdb->get_var($query);
547
+		return $id;
548
+	}
549
+
550
+	/**
551
+	 * Gets teh venue's title or makes one up if there is none
552
+	 * @param array $event_data_array keys are events_details columns and values are their values
553
+	 * @return string
554
+	 */
555
+	protected function _get_venue_title_for_event($event_data_array)
556
+	{
557
+		return $event_data_array['venue_title'] ? stripslashes($event_data_array['venue_title']) : stripslashes(sprintf(__('Venue of %s', 'event_espresso'), $event_data_array['event_name']));
558
+	}
559
+
560
+	/**
561
+	 * Inserts the CPT
562
+	 *
563
+	 * @param array $old_event keys are cols, values are col values
564
+	 * @return int
565
+	 */
566
+	private function _insert_venue_into_posts($old_event)
567
+	{
568
+		global $wpdb;
569
+		$insertion_array = array(
570
+					'post_title'=> $this->_get_venue_title_for_event($old_event),// VNU_name
571
+					'post_content'=>'',// VNU_desc
572
+					'post_name'=> $this->_find_unique_slug($old_event['venue_title'], sanitize_title('venue-of-' . $old_event['event_name'])),// VNU_identifier
573
+					'post_date'=>current_time('mysql'),// VNU_created
574
+					'post_date_gmt'=>get_gmt_from_date(current_time('mysql')),
575
+					'post_excerpt'=>'',// VNU_short_desc arbitrary only 50 characters
576
+					'post_modified'=>current_time('mysql'),// VNU_modified
577
+					'post_modified_gmt'=>get_gmt_from_date(current_time('mysql')),
578
+					'post_author'=>$old_event['wp_user'],// VNU_wp_user
579
+					'post_parent'=>0,// parent
580
+					'menu_order'=>0,// VNU_order
581
+					'post_type'=>'espresso_venues'// post_type
582
+				);
583
+		$datatypes_array = array(
584
+					'%s',// VNU_name
585
+					'%s',// VNU_desc
586
+					'%s',// VNU_identifier
587
+					'%s',// VNU_created
588
+					'%s',
589
+					'%s',// VNU_short_desc
590
+					'%s',// VNU_modified
591
+					'%s',
592
+					'%d',// VNU_wp_user
593
+					'%d',// parent
594
+					'%d',// VNU_order
595
+					'%s',// post_type
596
+				);
597
+		$success = $wpdb->insert(
598
+			$wpdb->posts,
599
+			$insertion_array,
600
+			$datatypes_array
601
+		);
602
+		if (! $success) {
603
+			$this->add_error(
604
+				$this->get_migration_script()->_create_error_message_for_db_insertion(
605
+					$this->_old_table,
606
+					$old_event,
607
+					$this->_new_table,
608
+					$insertion_array,
609
+					$datatypes_array
610
+				)
611
+			);
612
+			return 0;
613
+		}
614
+		return $wpdb->insert_id;
615
+	}
616
+
617
+	/**
618
+	 * Inserts into the venue_meta table
619
+	 * @param int $cpt_id
620
+	 * @param array $old_event
621
+	 * @return int
622
+	 */
623
+	private function _insert_venue_into_meta_table($cpt_id, $old_event)
624
+	{
625
+		global $wpdb;
626
+
627
+		// assume the country is the same as the organization's old settings
628
+		$country_iso = $this->get_migration_script()->get_default_country_iso();
629
+		// find the state from the venue, or the organization, or just guess california
630
+		if (! $old_event['state']) {
631
+			$old_org_options = get_option('events_organization_settings');
632
+			$state_name = stripslashes($old_org_options['organization_state']);
633
+		} else {
634
+			$state_name = $old_event['state'];
635
+		}
636
+		if (! $state_name) {
637
+			$state_name = 'CA';
638
+		}
639
+		// get a state ID with the same name, if possible
640
+		try {
641
+			$state = $this->get_migration_script()->get_or_create_state($state_name, $country_iso);
642
+			$state_id = $state['STA_ID'];
643
+		} catch (EE_Error $e) {
644
+			$this->add_error($e->getMessage());
645
+			$state_id = 0;
646
+		}
647
+		// now insert into meta table
648
+		$insertion_array = array(
649
+			'VNU_ID'=>$cpt_id,// VNU_ID_fk
650
+			'VNU_address'=>stripslashes($old_event['address']),// VNU_address
651
+			'VNU_address2'=>stripslashes($old_event['address2']),// VNU_address2
652
+			'VNU_city'=>stripslashes($old_event['city']),// VNU_city
653
+			'STA_ID'=>$state_id,// STA_ID
654
+			'CNT_ISO'=>$country_iso,// CNT_ISO
655
+			'VNU_zip'=>$old_event['zip'],// VNU_zip
656
+			'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
657
+			'VNU_capacity'=>-1,// VNU_capacity
658
+			'VNU_url'=>$old_event['venue_url'],// VNU_url
659
+			'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
660
+			'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
661
+			'VNU_google_map_link'=>'',// VNU_google_map_link
662
+			'VNU_enable_for_gmap'=>true // VNU_enable_for_gmap
663
+		);
664
+		$datatypes = array(
665
+			'%d',// VNU_ID_fk
666
+			'%s',// VNU_address
667
+			'%s',// VNU_address2
668
+			'%s',// VNU_city
669
+			'%d',// STA_ID
670
+			'%s',// CNT_ISO
671
+			'%s',// VNU_zip
672
+			'%s',// VNU_phone
673
+			'%d',// VNU_capacity
674
+			'%s',// VNU_url
675
+			'%s',// VNU_virtual_phone
676
+			'%s',// VNU_virtual_url
677
+			'%s',// VNU_google_map_link
678
+			'%d',// VNU_enable_for_gmap
679
+		);
680
+		$success = $wpdb->insert($wpdb->prefix."esp_venue_meta", $insertion_array, $datatypes);
681
+		if (! $success) {
682
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $insertion_array, $datatypes));
683
+			return 0;
684
+		}
685
+		return $wpdb->insert_id;
686
+	}
687
+
688
+
689
+
690
+	/**
691
+	 * @param $new_event_id
692
+	 * @param $new_venue_id
693
+	 * @return int
694
+	 */
695
+	private function _insert_new_venue_to_event($new_event_id, $new_venue_id)
696
+	{
697
+		global $wpdb;
698
+		if (! $new_event_id) {
699
+			$this->add_error(sprintf(__("Could not find 4.1 event id for 3.1 event #%d.", "event_espresso"), $new_event_id));
700
+			return 0;
701
+		}
702
+		if (! $new_venue_id) {
703
+			$this->add_error(sprintf(__("Could not find 4.1 venue id for 3.1 venue #%d.", "event_espresso"), $new_venue_id));
704
+			return 0;
705
+		}
706
+		$cols_n_values = array(
707
+			'EVT_ID'=>$new_event_id,
708
+			'VNU_ID'=>$new_venue_id,
709
+			'EVV_primary'=>true
710
+		);
711
+		$datatypes = array(
712
+			'%d',// EVT_ID
713
+			'%d',// VNU_ID
714
+			'%d',// EVT_primary
715
+		);
716
+		$success = $wpdb->insert($wpdb->prefix."esp_event_venue", $cols_n_values, $datatypes);
717
+		if (! $success) {
718
+			$this->add_error(
719
+				$this->get_migration_script()->_create_error_message_for_db_insertion(
720
+					$this->_old_table,
721
+					array(),
722
+					$this->_new_table,
723
+					$cols_n_values,
724
+					$datatypes
725
+				)
726
+			);
727
+			return 0;
728
+		}
729
+		return $wpdb->insert_id;
730
+	}
731
+	/**
732
+	 * Converts all the 3.1 start-end times for the event to 4.1 datetimes
733
+	 * @global wpdb $wpdb
734
+	 * @param array $old_event results of get_results(...,ARRAY_A)
735
+	 * @param int $new_cpt_id new post ID
736
+	 * @return void (if there are errors though, adds them to the stage's error list
737
+	 */
738
+	private function _convert_start_end_times($old_event, $new_cpt_id)
739
+	{
740
+		$start_end_times = $this->_get_old_start_end_times($old_event['id']);
741
+		foreach ($start_end_times as $start_end_time) {
742
+			$datetime_id = $this->_insert_new_datetime($start_end_time, $old_event, $new_cpt_id);
743
+			if ($datetime_id) {
744
+				$this->get_migration_script()->set_mapping($this->_old_start_end_table, $start_end_time['id'], $this->_new_datetime_table, $datetime_id);
745
+			}
746
+		}
747
+	}
748
+	/**
749
+	 * Queries the 3.1 wp_events_start_end table to get all the start and end times for the event
750
+	 * @global wpdb $wpdb
751
+	 * @param int $old_event_id
752
+	 * @return array
753
+	 */
754
+	private function _get_old_start_end_times($old_event_id)
755
+	{
756
+		global $wpdb;
757
+		return $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->_old_start_end_table WHERE event_id=%d", $old_event_id), ARRAY_A);
758
+	}
759
+	/**
760
+	 * Inserts a 4.1 datetime given the 3.1 start_end db row and event_details row
761
+	 * @param array $start_end_time_row
762
+	 * @param array $old_event_row
763
+	 * @param int $new_cpt_id
764
+	 * @return int ID of new datetime
765
+	 */
766
+	private function _insert_new_datetime($start_end_time_row, $old_event_row, $new_cpt_id)
767
+	{
768
+		global $wpdb;
769
+		$start_date = $old_event_row['start_date'];
770
+		$start_time = $this->get_migration_script()->convertTimeFromAMPM($start_end_time_row['start_time']);
771
+		$end_date = $old_event_row['end_date'];
772
+		$end_time = $this->get_migration_script()->convertTimeFromAMPM($start_end_time_row['end_time']);
773
+		$existing_datetimes = $this->_count_other_datetimes_exist_for_new_event($new_cpt_id);
774
+		$start_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$start_date $start_time:00", $old_event_row['timezone_string']);
775
+		$end_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$end_date $end_time:00", $old_event_row['timezone_string']);
776
+		$cols_n_values = array(
777
+			'EVT_ID'=>$new_cpt_id,// EVT_ID
778
+			'DTT_EVT_start'=>$start_datetime_utc,// DTT_EVT_start
779
+			'DTT_EVT_end'=> $end_datetime_utc,// DTT_EVT_end
780
+			'DTT_reg_limit'=>intval($start_end_time_row['reg_limit']) ? $start_end_time_row['reg_limit'] : $old_event_row['reg_limit'],// DTT_reg_limit
781
+			'DTT_sold'=>0,// note: we will increment this as registrations are added during the migration
787 782
 //          'DTT_is_primary'=> 0 == $existing_datetimes ,//DTT_is_primary... if count==0, then we'll call it the 'primary'
788
-            'DTT_order'=> $existing_datetimes,// DTT_order, just give it the same order as the count of how many datetimes already exist
789
-            'DTT_parent'=>0,
790
-            'DTT_deleted'=>false
791
-        );
792
-        $datatypes = array(
793
-            '%d',// EVT_Id
794
-            '%s',// DTT_EVT_start
795
-            '%s',// DTT_EVT_end
796
-            '%d',// DTT_reg_limit
797
-            '%d',// DTT_sold
783
+			'DTT_order'=> $existing_datetimes,// DTT_order, just give it the same order as the count of how many datetimes already exist
784
+			'DTT_parent'=>0,
785
+			'DTT_deleted'=>false
786
+		);
787
+		$datatypes = array(
788
+			'%d',// EVT_Id
789
+			'%s',// DTT_EVT_start
790
+			'%s',// DTT_EVT_end
791
+			'%d',// DTT_reg_limit
792
+			'%d',// DTT_sold
798 793
 //          '%d',//DTT_is_primary
799
-            '%d',// DTT_order
800
-            '%d',// DTT_parent
801
-            '%d',// DTT_deleted
802
-        );
803
-        $success = $wpdb->insert($this->_new_datetime_table, $cols_n_values, $datatypes);
804
-        if (! $success) {
805
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_start_end_table, array_merge($old_event_row, $start_end_time_row), $this->_new_datetime_table, $cols_n_values, $datatypes));
806
-            return 0;
807
-        }
808
-        return $wpdb->insert_id;
809
-    }
810
-
811
-    /**
812
-     * Checks if there's a 4.1 datetime for this event already. This is mostly only handy
813
-     * when deciding whether a datetime we're about ot insert should be the 'primary' or not
814
-     * @global wpdb $wpdb
815
-     * @param int $cpt_event_id
816
-     * @return int
817
-     */
818
-    private function _count_other_datetimes_exist_for_new_event($cpt_event_id)
819
-    {
820
-        global $wpdb;
821
-        $count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $this->_new_datetime_table WHERE EVT_ID=%d", $cpt_event_id));
822
-        return intval($count);
823
-    }
794
+			'%d',// DTT_order
795
+			'%d',// DTT_parent
796
+			'%d',// DTT_deleted
797
+		);
798
+		$success = $wpdb->insert($this->_new_datetime_table, $cols_n_values, $datatypes);
799
+		if (! $success) {
800
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_start_end_table, array_merge($old_event_row, $start_end_time_row), $this->_new_datetime_table, $cols_n_values, $datatypes));
801
+			return 0;
802
+		}
803
+		return $wpdb->insert_id;
804
+	}
805
+
806
+	/**
807
+	 * Checks if there's a 4.1 datetime for this event already. This is mostly only handy
808
+	 * when deciding whether a datetime we're about ot insert should be the 'primary' or not
809
+	 * @global wpdb $wpdb
810
+	 * @param int $cpt_event_id
811
+	 * @return int
812
+	 */
813
+	private function _count_other_datetimes_exist_for_new_event($cpt_event_id)
814
+	{
815
+		global $wpdb;
816
+		$count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $this->_new_datetime_table WHERE EVT_ID=%d", $cpt_event_id));
817
+		return intval($count);
818
+	}
824 819
 }
Please login to merge, or discard this patch.
Spacing   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
     public function _count_records_to_migrate()
194 194
     {
195 195
         global $wpdb;
196
-        $count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->_old_table . ' WHERE event_status !="D"');
196
+        $count = $wpdb->get_var("SELECT COUNT(*) FROM ".$this->_old_table.' WHERE event_status !="D"');
197 197
         return intval($count);
198 198
     }
199 199
 
@@ -212,7 +212,7 @@  discard block
 block discarded – undo
212 212
     {
213 213
         global $wpdb;
214 214
         // because the migration of each event can be a LOT more work, make each step smaller
215
-        $num_items_to_migrate = max(1, $num_items_to_migrate/5);
215
+        $num_items_to_migrate = max(1, $num_items_to_migrate / 5);
216 216
         $events = $wpdb->get_results($wpdb->prepare("SELECT * FROM $this->_old_table WHERE event_status!='D' LIMIT %d,%d", $this->count_records_migrated(), $num_items_to_migrate), ARRAY_A);
217 217
         $items_migrated_this_step = 0;
218 218
 
@@ -260,17 +260,17 @@  discard block
 block discarded – undo
260 260
     private function _add_post_metas($old_event, $post_id)
261 261
     {
262 262
         $event_meta = maybe_unserialize($old_event['event_meta']);
263
-        if (! $event_meta || ! is_array($event_meta)) {
263
+        if ( ! $event_meta || ! is_array($event_meta)) {
264 264
             return;
265 265
         }
266
-        unset($event_meta['date_submitted']);// factored into CPT
267
-        unset($event_meta['additional_attendee_reg_info']);// factored into event meta table
268
-        unset($event_meta['default_payment_status']);// dido
269
-        unset($event_meta['event_thumbnail_url']);// used to find post featured image
266
+        unset($event_meta['date_submitted']); // factored into CPT
267
+        unset($event_meta['additional_attendee_reg_info']); // factored into event meta table
268
+        unset($event_meta['default_payment_status']); // dido
269
+        unset($event_meta['event_thumbnail_url']); // used to find post featured image
270 270
         foreach ($event_meta as $meta_key => $meta_value) {
271 271
             if ($meta_key) {// if the meta key is just an empty string, ignore it
272 272
                 $success = add_post_meta($post_id, $meta_key, $meta_value, true);
273
-                if (! $success) {
273
+                if ( ! $success) {
274 274
                     $this->add_error(sprintf(__("Could not add post meta for CPT with ID #%d. Meta key: '%s',meta value:'%d' for 3.1 event: %s", "event_espresso"), $post_id, $meta_key, $meta_value, implode(",", $old_event)));
275 275
                 }
276 276
             }
@@ -341,68 +341,68 @@  discard block
 block discarded – undo
341 341
 //      and 3 custom ones: cancelled,postponed,sold_out
342 342
         $status_conversions = array(
343 343
             'R'=>'draft',
344
-            'X'=>'draft',// 4.1 doesn't have a "not approved for publishing" status. this is what posts are set to that aren't approved
344
+            'X'=>'draft', // 4.1 doesn't have a "not approved for publishing" status. this is what posts are set to that aren't approved
345 345
             'P'=>'pending',
346
-            'IA'=>'draft',// draft and in the past
346
+            'IA'=>'draft', // draft and in the past
347 347
 // IA=inactive in 3.1: events were switched to this when they expired. in 4.1 that's just calculated
348
-            'O'=>'publish',// @todo: will be an event type later; if this is the status, set the end date WAAAY later; and add term for 'ongoing'
348
+            'O'=>'publish', // @todo: will be an event type later; if this is the status, set the end date WAAAY later; and add term for 'ongoing'
349 349
             'A'=>'publish',
350
-            'S'=>'draft',// @todo: is it ok to just mark secondary/waitlist events as DRAFTS?
350
+            'S'=>'draft', // @todo: is it ok to just mark secondary/waitlist events as DRAFTS?
351 351
             'D'=>'trash',
352 352
         );
353
-        $post_status = $status_conversions[ $old_event['event_status'] ];
353
+        $post_status = $status_conversions[$old_event['event_status']];
354 354
         // check if we've sold out
355 355
         if (intval($old_event['reg_limit']) <= self::count_registrations($old_event['id'])) {
356 356
             $post_status = 'sold_out';
357 357
         }
358 358
 //      FYI postponed and cancelled don't exist in 3.1
359 359
         $cols_n_values = array(
360
-            'post_title'=>stripslashes($old_event['event_name']),// EVT_name
361
-            'post_content'=>stripslashes($old_event['event_desc']),// EVT_desc
362
-            'post_name'=>$this->_find_unique_slug($old_event['event_name'], $old_event['event_identifier'], $post_status),// EVT_slug
363
-            'post_date'=>$old_event['submitted'],// EVT_created NOT
360
+            'post_title'=>stripslashes($old_event['event_name']), // EVT_name
361
+            'post_content'=>stripslashes($old_event['event_desc']), // EVT_desc
362
+            'post_name'=>$this->_find_unique_slug($old_event['event_name'], $old_event['event_identifier'], $post_status), // EVT_slug
363
+            'post_date'=>$old_event['submitted'], // EVT_created NOT
364 364
             'post_date_gmt'=>get_gmt_from_date($old_event['submitted']),
365
-            'post_excerpt'=>'',// EVT_short_desc
366
-            'post_modified'=>$old_event['submitted'],// EVT_modified
365
+            'post_excerpt'=>'', // EVT_short_desc
366
+            'post_modified'=>$old_event['submitted'], // EVT_modified
367 367
             'post_modified_gmt'=>get_gmt_from_date($old_event['submitted']),
368
-            'post_author'=>$old_event['wp_user'],// EVT_wp_user
369
-            'post_parent'=>0,// parent maybe get this from some REM field?
370
-            'menu_order'=>0,// EVT_order
371
-            'post_type'=>'espresso_events',// post_type
372
-            'post_status'=>$post_status,// status
368
+            'post_author'=>$old_event['wp_user'], // EVT_wp_user
369
+            'post_parent'=>0, // parent maybe get this from some REM field?
370
+            'menu_order'=>0, // EVT_order
371
+            'post_type'=>'espresso_events', // post_type
372
+            'post_status'=>$post_status, // status
373 373
         );
374 374
         $cols_n_values_with_no_invalid_text = array();
375 375
         foreach ($cols_n_values as $col => $value) {
376 376
             $value_sans_invalid_chars = $wpdb->strip_invalid_text_for_column($this->_new_table, $col, $value);
377
-            if (! is_wp_error($value_sans_invalid_chars)) {
378
-                $cols_n_values_with_no_invalid_text[ $col ] = $value_sans_invalid_chars;
377
+            if ( ! is_wp_error($value_sans_invalid_chars)) {
378
+                $cols_n_values_with_no_invalid_text[$col] = $value_sans_invalid_chars;
379 379
             } else {
380 380
                 // otherwise leave it as-is. It will blow everything up and stop the migration
381
-                $cols_n_values_with_no_invalid_text[ $col ] = $value;
381
+                $cols_n_values_with_no_invalid_text[$col] = $value;
382 382
             }
383 383
         }
384 384
         $cols_n_values = $cols_n_values_with_no_invalid_text;
385 385
         $datatypes = array(
386
-            '%s',// EVT_name
387
-            '%s',// EVT_desc
388
-            '%s',// EVT_slug
389
-            '%s',// EVT_created
386
+            '%s', // EVT_name
387
+            '%s', // EVT_desc
388
+            '%s', // EVT_slug
389
+            '%s', // EVT_created
390 390
             '%s',
391
-            '%s',// EVT_short_desc
392
-            '%s',// EVT_modified
391
+            '%s', // EVT_short_desc
392
+            '%s', // EVT_modified
393 393
             '%s',
394
-            '%s',// EVT_wp_user
395
-            '%d',// post_parent
396
-            '%d',// EVT_order
397
-            '%s',// post_type
398
-            '%s',// status
394
+            '%s', // EVT_wp_user
395
+            '%d', // post_parent
396
+            '%d', // EVT_order
397
+            '%s', // post_type
398
+            '%s', // status
399 399
         );
400 400
         $success = $wpdb->insert(
401 401
             $this->_new_table,
402 402
             $cols_n_values,
403 403
             $datatypes
404 404
         );
405
-        if (! $success) {
405
+        if ( ! $success) {
406 406
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_table, $cols_n_values, $datatypes));
407 407
             return 0;
408 408
         }
@@ -441,10 +441,10 @@  discard block
 block discarded – undo
441 441
 // );
442 442
         $default_reg_status = $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID(isset($event_meta['default_payment_status']) ? $event_meta['default_payment_status'] : '', intval($old_event['require_pre_approval']));
443 443
         $cols_n_values = array(
444
-            'EVT_ID'=>$new_cpt_id,// EVT_ID_fk
444
+            'EVT_ID'=>$new_cpt_id, // EVT_ID_fk
445 445
             'EVT_display_desc'=> 'Y' == $old_event['display_desc'],
446
-            'EVT_display_ticket_selector'=> 'Y'== $old_event['display_reg_form'],
447
-            'EVT_visible_on'=> $this->get_migration_script()->convert_date_string_to_utc($this, $old_event, current_time('mysql'), $old_event['timezone_string']),// don't use the old 'visible_on', as it wasn't ever used
446
+            'EVT_display_ticket_selector'=> 'Y' == $old_event['display_reg_form'],
447
+            'EVT_visible_on'=> $this->get_migration_script()->convert_date_string_to_utc($this, $old_event, current_time('mysql'), $old_event['timezone_string']), // don't use the old 'visible_on', as it wasn't ever used
448 448
             'EVT_additional_limit'=> $old_event['allow_multiple'] == 'N' ? 1 : $old_event['additional_limit'],
449 449
             'EVT_default_registration_status' => $default_reg_status,
450 450
             'EVT_member_only'=>$old_event['member_only'],
@@ -456,25 +456,25 @@  discard block
 block discarded – undo
456 456
 
457 457
         );
458 458
         $datatypes = array(
459
-            '%s',// EVT_ID
460
-            '%d',// EVT_display_desc
461
-            '%d',// EVT_display_ticket_selector
462
-            '%s',// EVT_visible_on
463
-            '%d',// EVT_additional_limit
464
-            '%s',// EVT_default_registration_status
465
-            '%d',// EVT_member_only
466
-            '%s',// EVT_phone
467
-            '%d',// EVT_allow_overflow
468
-            '%s',// EVT_timezone_string
469
-            '%s',// EVT_external_URL
470
-            '%d',// EVT_donations
459
+            '%s', // EVT_ID
460
+            '%d', // EVT_display_desc
461
+            '%d', // EVT_display_ticket_selector
462
+            '%s', // EVT_visible_on
463
+            '%d', // EVT_additional_limit
464
+            '%s', // EVT_default_registration_status
465
+            '%d', // EVT_member_only
466
+            '%s', // EVT_phone
467
+            '%d', // EVT_allow_overflow
468
+            '%s', // EVT_timezone_string
469
+            '%s', // EVT_external_URL
470
+            '%d', // EVT_donations
471 471
         );
472 472
         $success = $wpdb->insert(
473 473
             $this->_new_meta_table,
474 474
             $cols_n_values,
475 475
             $datatypes
476 476
         );
477
-        if (! $success) {
477
+        if ( ! $success) {
478 478
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $cols_n_values, $datatypes));
479 479
             return 0;
480 480
         }
@@ -508,7 +508,7 @@  discard block
 block discarded – undo
508 508
             $new_id = $this->_insert_venue_into_posts($old_event);
509 509
             if ($new_id) {
510 510
                 $this->_insert_venue_into_meta_table($new_id, $old_event);
511
-                $guid = isset($old_event['venue_image']) ? $old_event['venue_image']  : null;
511
+                $guid = isset($old_event['venue_image']) ? $old_event['venue_image'] : null;
512 512
                 $this->get_migration_script()->convert_image_url_to_attachment_and_attach_to_post($guid, $new_id, $this);
513 513
             }
514 514
             // we don't bother recording the conversion from old events to venues as that
@@ -534,10 +534,10 @@  discard block
 block discarded – undo
534 534
             'VNU_city' => $old_event['city'],
535 535
             'VNU_zip' => $old_event['zip'],
536 536
             'post_title'=> $this->_get_venue_title_for_event($old_event),
537
-            'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
538
-            'VNU_url'=>$old_event['venue_url'],// VNU_url
539
-            'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
540
-            'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
537
+            'VNU_phone'=>$old_event['venue_phone'], // VNU_phone
538
+            'VNU_url'=>$old_event['venue_url'], // VNU_url
539
+            'VNU_virtual_phone'=>$old_event['virtual_phone'], // VNU_virtual_phone
540
+            'VNU_virtual_url'=>$old_event['virtual_url'], // VNU_virtual_url
541 541
         );
542 542
         $sql_conditions = array();
543 543
         foreach ($conditions as $column => $value) {
@@ -547,7 +547,7 @@  discard block
 block discarded – undo
547 547
 					FROM
548 548
 		{$wpdb->posts} as p INNER JOIN
549 549
 		{$wpdb->prefix}esp_venue_meta as v ON p.ID = v.VNU_ID
550
-			WHERE " . implode(" AND ", $sql_conditions) . " LIMIT 1";
550
+			WHERE ".implode(" AND ", $sql_conditions)." LIMIT 1";
551 551
         $id = $wpdb->get_var($query);
552 552
         return $id;
553 553
     }
@@ -572,39 +572,39 @@  discard block
 block discarded – undo
572 572
     {
573 573
         global $wpdb;
574 574
         $insertion_array = array(
575
-                    'post_title'=> $this->_get_venue_title_for_event($old_event),// VNU_name
576
-                    'post_content'=>'',// VNU_desc
577
-                    'post_name'=> $this->_find_unique_slug($old_event['venue_title'], sanitize_title('venue-of-' . $old_event['event_name'])),// VNU_identifier
578
-                    'post_date'=>current_time('mysql'),// VNU_created
575
+                    'post_title'=> $this->_get_venue_title_for_event($old_event), // VNU_name
576
+                    'post_content'=>'', // VNU_desc
577
+                    'post_name'=> $this->_find_unique_slug($old_event['venue_title'], sanitize_title('venue-of-'.$old_event['event_name'])), // VNU_identifier
578
+                    'post_date'=>current_time('mysql'), // VNU_created
579 579
                     'post_date_gmt'=>get_gmt_from_date(current_time('mysql')),
580
-                    'post_excerpt'=>'',// VNU_short_desc arbitrary only 50 characters
581
-                    'post_modified'=>current_time('mysql'),// VNU_modified
580
+                    'post_excerpt'=>'', // VNU_short_desc arbitrary only 50 characters
581
+                    'post_modified'=>current_time('mysql'), // VNU_modified
582 582
                     'post_modified_gmt'=>get_gmt_from_date(current_time('mysql')),
583
-                    'post_author'=>$old_event['wp_user'],// VNU_wp_user
584
-                    'post_parent'=>0,// parent
585
-                    'menu_order'=>0,// VNU_order
583
+                    'post_author'=>$old_event['wp_user'], // VNU_wp_user
584
+                    'post_parent'=>0, // parent
585
+                    'menu_order'=>0, // VNU_order
586 586
                     'post_type'=>'espresso_venues'// post_type
587 587
                 );
588 588
         $datatypes_array = array(
589
-                    '%s',// VNU_name
590
-                    '%s',// VNU_desc
591
-                    '%s',// VNU_identifier
592
-                    '%s',// VNU_created
589
+                    '%s', // VNU_name
590
+                    '%s', // VNU_desc
591
+                    '%s', // VNU_identifier
592
+                    '%s', // VNU_created
593 593
                     '%s',
594
-                    '%s',// VNU_short_desc
595
-                    '%s',// VNU_modified
594
+                    '%s', // VNU_short_desc
595
+                    '%s', // VNU_modified
596 596
                     '%s',
597
-                    '%d',// VNU_wp_user
598
-                    '%d',// parent
599
-                    '%d',// VNU_order
600
-                    '%s',// post_type
597
+                    '%d', // VNU_wp_user
598
+                    '%d', // parent
599
+                    '%d', // VNU_order
600
+                    '%s', // post_type
601 601
                 );
602 602
         $success = $wpdb->insert(
603 603
             $wpdb->posts,
604 604
             $insertion_array,
605 605
             $datatypes_array
606 606
         );
607
-        if (! $success) {
607
+        if ( ! $success) {
608 608
             $this->add_error(
609 609
                 $this->get_migration_script()->_create_error_message_for_db_insertion(
610 610
                     $this->_old_table,
@@ -632,13 +632,13 @@  discard block
 block discarded – undo
632 632
         // assume the country is the same as the organization's old settings
633 633
         $country_iso = $this->get_migration_script()->get_default_country_iso();
634 634
         // find the state from the venue, or the organization, or just guess california
635
-        if (! $old_event['state']) {
635
+        if ( ! $old_event['state']) {
636 636
             $old_org_options = get_option('events_organization_settings');
637 637
             $state_name = stripslashes($old_org_options['organization_state']);
638 638
         } else {
639 639
             $state_name = $old_event['state'];
640 640
         }
641
-        if (! $state_name) {
641
+        if ( ! $state_name) {
642 642
             $state_name = 'CA';
643 643
         }
644 644
         // get a state ID with the same name, if possible
@@ -651,39 +651,39 @@  discard block
 block discarded – undo
651 651
         }
652 652
         // now insert into meta table
653 653
         $insertion_array = array(
654
-            'VNU_ID'=>$cpt_id,// VNU_ID_fk
655
-            'VNU_address'=>stripslashes($old_event['address']),// VNU_address
656
-            'VNU_address2'=>stripslashes($old_event['address2']),// VNU_address2
657
-            'VNU_city'=>stripslashes($old_event['city']),// VNU_city
658
-            'STA_ID'=>$state_id,// STA_ID
659
-            'CNT_ISO'=>$country_iso,// CNT_ISO
660
-            'VNU_zip'=>$old_event['zip'],// VNU_zip
661
-            'VNU_phone'=>$old_event['venue_phone'],// VNU_phone
662
-            'VNU_capacity'=>-1,// VNU_capacity
663
-            'VNU_url'=>$old_event['venue_url'],// VNU_url
664
-            'VNU_virtual_phone'=>$old_event['virtual_phone'],// VNU_virtual_phone
665
-            'VNU_virtual_url'=>$old_event['virtual_url'],// VNU_virtual_url
666
-            'VNU_google_map_link'=>'',// VNU_google_map_link
654
+            'VNU_ID'=>$cpt_id, // VNU_ID_fk
655
+            'VNU_address'=>stripslashes($old_event['address']), // VNU_address
656
+            'VNU_address2'=>stripslashes($old_event['address2']), // VNU_address2
657
+            'VNU_city'=>stripslashes($old_event['city']), // VNU_city
658
+            'STA_ID'=>$state_id, // STA_ID
659
+            'CNT_ISO'=>$country_iso, // CNT_ISO
660
+            'VNU_zip'=>$old_event['zip'], // VNU_zip
661
+            'VNU_phone'=>$old_event['venue_phone'], // VNU_phone
662
+            'VNU_capacity'=>-1, // VNU_capacity
663
+            'VNU_url'=>$old_event['venue_url'], // VNU_url
664
+            'VNU_virtual_phone'=>$old_event['virtual_phone'], // VNU_virtual_phone
665
+            'VNU_virtual_url'=>$old_event['virtual_url'], // VNU_virtual_url
666
+            'VNU_google_map_link'=>'', // VNU_google_map_link
667 667
             'VNU_enable_for_gmap'=>true // VNU_enable_for_gmap
668 668
         );
669 669
         $datatypes = array(
670
-            '%d',// VNU_ID_fk
671
-            '%s',// VNU_address
672
-            '%s',// VNU_address2
673
-            '%s',// VNU_city
674
-            '%d',// STA_ID
675
-            '%s',// CNT_ISO
676
-            '%s',// VNU_zip
677
-            '%s',// VNU_phone
678
-            '%d',// VNU_capacity
679
-            '%s',// VNU_url
680
-            '%s',// VNU_virtual_phone
681
-            '%s',// VNU_virtual_url
682
-            '%s',// VNU_google_map_link
683
-            '%d',// VNU_enable_for_gmap
670
+            '%d', // VNU_ID_fk
671
+            '%s', // VNU_address
672
+            '%s', // VNU_address2
673
+            '%s', // VNU_city
674
+            '%d', // STA_ID
675
+            '%s', // CNT_ISO
676
+            '%s', // VNU_zip
677
+            '%s', // VNU_phone
678
+            '%d', // VNU_capacity
679
+            '%s', // VNU_url
680
+            '%s', // VNU_virtual_phone
681
+            '%s', // VNU_virtual_url
682
+            '%s', // VNU_google_map_link
683
+            '%d', // VNU_enable_for_gmap
684 684
         );
685 685
         $success = $wpdb->insert($wpdb->prefix."esp_venue_meta", $insertion_array, $datatypes);
686
-        if (! $success) {
686
+        if ( ! $success) {
687 687
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_event, $this->_new_meta_table, $insertion_array, $datatypes));
688 688
             return 0;
689 689
         }
@@ -700,11 +700,11 @@  discard block
 block discarded – undo
700 700
     private function _insert_new_venue_to_event($new_event_id, $new_venue_id)
701 701
     {
702 702
         global $wpdb;
703
-        if (! $new_event_id) {
703
+        if ( ! $new_event_id) {
704 704
             $this->add_error(sprintf(__("Could not find 4.1 event id for 3.1 event #%d.", "event_espresso"), $new_event_id));
705 705
             return 0;
706 706
         }
707
-        if (! $new_venue_id) {
707
+        if ( ! $new_venue_id) {
708 708
             $this->add_error(sprintf(__("Could not find 4.1 venue id for 3.1 venue #%d.", "event_espresso"), $new_venue_id));
709 709
             return 0;
710 710
         }
@@ -714,12 +714,12 @@  discard block
 block discarded – undo
714 714
             'EVV_primary'=>true
715 715
         );
716 716
         $datatypes = array(
717
-            '%d',// EVT_ID
718
-            '%d',// VNU_ID
719
-            '%d',// EVT_primary
717
+            '%d', // EVT_ID
718
+            '%d', // VNU_ID
719
+            '%d', // EVT_primary
720 720
         );
721 721
         $success = $wpdb->insert($wpdb->prefix."esp_event_venue", $cols_n_values, $datatypes);
722
-        if (! $success) {
722
+        if ( ! $success) {
723 723
             $this->add_error(
724 724
                 $this->get_migration_script()->_create_error_message_for_db_insertion(
725 725
                     $this->_old_table,
@@ -779,29 +779,29 @@  discard block
 block discarded – undo
779 779
         $start_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$start_date $start_time:00", $old_event_row['timezone_string']);
780 780
         $end_datetime_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $start_end_time_row, "$end_date $end_time:00", $old_event_row['timezone_string']);
781 781
         $cols_n_values = array(
782
-            'EVT_ID'=>$new_cpt_id,// EVT_ID
783
-            'DTT_EVT_start'=>$start_datetime_utc,// DTT_EVT_start
784
-            'DTT_EVT_end'=> $end_datetime_utc,// DTT_EVT_end
785
-            'DTT_reg_limit'=>intval($start_end_time_row['reg_limit']) ? $start_end_time_row['reg_limit'] : $old_event_row['reg_limit'],// DTT_reg_limit
786
-            'DTT_sold'=>0,// note: we will increment this as registrations are added during the migration
782
+            'EVT_ID'=>$new_cpt_id, // EVT_ID
783
+            'DTT_EVT_start'=>$start_datetime_utc, // DTT_EVT_start
784
+            'DTT_EVT_end'=> $end_datetime_utc, // DTT_EVT_end
785
+            'DTT_reg_limit'=>intval($start_end_time_row['reg_limit']) ? $start_end_time_row['reg_limit'] : $old_event_row['reg_limit'], // DTT_reg_limit
786
+            'DTT_sold'=>0, // note: we will increment this as registrations are added during the migration
787 787
 //          'DTT_is_primary'=> 0 == $existing_datetimes ,//DTT_is_primary... if count==0, then we'll call it the 'primary'
788
-            'DTT_order'=> $existing_datetimes,// DTT_order, just give it the same order as the count of how many datetimes already exist
788
+            'DTT_order'=> $existing_datetimes, // DTT_order, just give it the same order as the count of how many datetimes already exist
789 789
             'DTT_parent'=>0,
790 790
             'DTT_deleted'=>false
791 791
         );
792 792
         $datatypes = array(
793
-            '%d',// EVT_Id
794
-            '%s',// DTT_EVT_start
795
-            '%s',// DTT_EVT_end
796
-            '%d',// DTT_reg_limit
797
-            '%d',// DTT_sold
793
+            '%d', // EVT_Id
794
+            '%s', // DTT_EVT_start
795
+            '%s', // DTT_EVT_end
796
+            '%d', // DTT_reg_limit
797
+            '%d', // DTT_sold
798 798
 //          '%d',//DTT_is_primary
799
-            '%d',// DTT_order
800
-            '%d',// DTT_parent
801
-            '%d',// DTT_deleted
799
+            '%d', // DTT_order
800
+            '%d', // DTT_parent
801
+            '%d', // DTT_deleted
802 802
         );
803 803
         $success = $wpdb->insert($this->_new_datetime_table, $cols_n_values, $datatypes);
804
-        if (! $success) {
804
+        if ( ! $success) {
805 805
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_start_end_table, array_merge($old_event_row, $start_end_time_row), $this->_new_datetime_table, $cols_n_values, $datatypes));
806 806
             return 0;
807 807
         }
Please login to merge, or discard this patch.
data_migration_scripts/4_1_0_stages/EE_DMS_4_1_0_org_options.dmsstage.php 3 patches
Doc Comments   -1 removed lines patch added patch discarded remove patch
@@ -273,7 +273,6 @@
 block discarded – undo
273 273
     /**
274 274
      * Creates a 4.1 member price discount
275 275
      * @global type $wpdb
276
-     * @param type $old_price
277 276
      * @return int
278 277
      */
279 278
     private function _insert_new_global_surcharge_price($org_options)
Please login to merge, or discard this patch.
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -110,17 +110,17 @@  discard block
 block discarded – undo
110 110
         $old_org_options = get_option('events_organization_settings');
111 111
         foreach ($this->_org_options_we_know_how_to_migrate as $option_name) {
112 112
             // only bother migrating if there's a setting to migrate. Otherwise we'll just use the default
113
-            if (isset($old_org_options[ $option_name ])) {
114
-                $this->_handle_org_option($option_name, $old_org_options[ $option_name ]);
113
+            if (isset($old_org_options[$option_name])) {
114
+                $this->_handle_org_option($option_name, $old_org_options[$option_name]);
115 115
             }
116
-            if ($option_name=='surcharge') {
116
+            if ($option_name == 'surcharge') {
117 117
                 $this->_insert_new_global_surcharge_price($old_org_options);
118 118
             }
119 119
             $items_actually_migrated++;
120 120
         }
121 121
 
122 122
         $success = EE_Config::instance()->update_espresso_config(false, true);
123
-        if (! $success) {
123
+        if ( ! $success) {
124 124
             $this->add_error(sprintf(__('Could not save EE Config during org options stage. Reason: %s', 'event_espresso'), EE_Error::get_notices(false)));
125 125
             EE_Error::overwrite_errors();
126 126
         }
@@ -176,24 +176,24 @@  discard block
 block discarded – undo
176 176
                 $c->organization->email = $value;
177 177
                 break;
178 178
             case 'default_payment_status':
179
-                $c->registration->default_STS_ID =  $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID($value);
179
+                $c->registration->default_STS_ID = $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID($value);
180 180
                 break;
181 181
             case 'organization_country':
182
-                $iso =$this->get_migration_script()->get_iso_from_3_1_country_id($value);
182
+                $iso = $this->get_migration_script()->get_iso_from_3_1_country_id($value);
183 183
                 $c->organization->CNT_ISO = $iso;
184 184
                 $country_row = $this->get_migration_script()->get_or_create_country($iso);
185
-                if (! $country_row) {
185
+                if ( ! $country_row) {
186 186
                     $this->add_error(sprintf(__("Could not set country's currency config because no country exists for ISO %s", "event_espresso"), $iso));
187 187
                 }
188 188
                 // can't use EE_Currency_Config's handy constructor because the models are off-limits right now (and it uses them)
189
-                $c->currency->code = $country_row['CNT_cur_code'];          // currency code: USD, CAD, EUR
190
-                $c->currency->name = $country_row['CNT_cur_single'];    // Dollar
191
-                $c->currency->plural = $country_row['CNT_cur_plural'];  // Dollars
192
-                $c->currency->sign =  $country_row['CNT_cur_sign'];             // currency sign: $
193
-                $c->currency->sign_b4 = filter_var($country_row['CNT_cur_sign_b4'], FILTER_VALIDATE_BOOLEAN);        // currency sign before or after: $TRUE  or  FALSE$
194
-                $c->currency->dec_plc = (int) $country_row['CNT_cur_dec_plc'];    // decimal places: 2 = 0.00  3 = 0.000
195
-                $c->currency->dec_mrk = $country_row['CNT_cur_dec_mrk'];    // decimal mark: (comma) ',' = 0,01   or (decimal) '.' = 0.01
196
-                $c->currency->thsnds = $country_row['CNT_cur_thsnds'];  // thousands separator: (comma) ',' = 1,000   or (decimal) '.' = 1.000
189
+                $c->currency->code = $country_row['CNT_cur_code']; // currency code: USD, CAD, EUR
190
+                $c->currency->name = $country_row['CNT_cur_single']; // Dollar
191
+                $c->currency->plural = $country_row['CNT_cur_plural']; // Dollars
192
+                $c->currency->sign = $country_row['CNT_cur_sign']; // currency sign: $
193
+                $c->currency->sign_b4 = filter_var($country_row['CNT_cur_sign_b4'], FILTER_VALIDATE_BOOLEAN); // currency sign before or after: $TRUE  or  FALSE$
194
+                $c->currency->dec_plc = (int) $country_row['CNT_cur_dec_plc']; // decimal places: 2 = 0.00  3 = 0.000
195
+                $c->currency->dec_mrk = $country_row['CNT_cur_dec_mrk']; // decimal mark: (comma) ',' = 0,01   or (decimal) '.' = 0.01
196
+                $c->currency->thsnds = $country_row['CNT_cur_thsnds']; // thousands separator: (comma) ',' = 1,000   or (decimal) '.' = 1.000
197 197
   //            $c->currency = new EE_Currency_Config($c->organization->CNT_ISO);break;
198 198
   //        case 'currency_symbol': ignore the currency symbol. we'll just go by their country.
199 199
   //            $c->currency->sign = $value;break;
@@ -280,7 +280,7 @@  discard block
 block discarded – undo
280 280
     {
281 281
         $amount = floatval($org_options['surcharge']);
282 282
         // dont createa a price if the surcharge is 0
283
-        if ($amount <=.01) {
283
+        if ($amount <= .01) {
284 284
             return 0;
285 285
         }
286 286
         if ($org_options['surcharge_type'] == 'flat_rate') {
@@ -301,18 +301,18 @@  discard block
 block discarded – undo
301 301
 
302 302
         );
303 303
         $datatypes = array(
304
-            '%d',// PRT_ID
305
-            '%f',// PRT_amount
306
-            '%s',// PRC_name
307
-            '%d',// PRC_is_default
308
-            '%d',// PRC_overrides
309
-            '%d',// PRC_order
310
-            '%d',// PRC_deleted
311
-            '%d',// PRC_parent
304
+            '%d', // PRT_ID
305
+            '%f', // PRT_amount
306
+            '%s', // PRC_name
307
+            '%d', // PRC_is_default
308
+            '%d', // PRC_overrides
309
+            '%d', // PRC_order
310
+            '%d', // PRC_deleted
311
+            '%d', // PRC_parent
312 312
         );
313 313
         $price_table = $wpdb->prefix."esp_price";
314 314
         $success = $wpdb->insert($price_table, $cols_n_values, $datatypes);
315
-        if (! $success) {
315
+        if ( ! $success) {
316 316
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion(
317 317
                 'org_options',
318 318
                 array(
@@ -342,8 +342,8 @@  discard block
 block discarded – undo
342 342
       'payment_message',
343 343
       'message',
344 344
       'default_payment_status',
345
-      'surcharge',// unused?
346
-      'country_id',// unused?
345
+      'surcharge', // unused?
346
+      'country_id', // unused?
347 347
       'organization_country',
348 348
 //    'currency_symbol',
349 349
       'expire_on_registration_end',
@@ -355,13 +355,13 @@  discard block
 block discarded – undo
355 355
       'show_pending_payment_options',
356 356
       'show_reg_footer',
357 357
       'skip_confirmation_page',
358
-      'allow_mer_discounts',// no equiv
359
-      'allow_mer_vouchers',// no equiv
358
+      'allow_mer_discounts', // no equiv
359
+      'allow_mer_vouchers', // no equiv
360 360
       'display_short_description_in_event_list',
361 361
       'display_description_on_multi_reg_page',
362 362
       'display_address_in_event_list',
363 363
       'display_address_in_regform',
364
-      'use_custom_post_types',// no equiv
364
+      'use_custom_post_types', // no equiv
365 365
       'display_ical_download',
366 366
       'display_featured_image',
367 367
       'themeroller',
@@ -380,11 +380,11 @@  discard block
 block discarded – undo
380 380
       'espresso_dashboard_widget',
381 381
       'time_reg_limit',
382 382
 //    'use_attendee_pre_approval', removed in 4.1- instead this is factored into the default reg status
383
-      'use_personnel_manager',// no equiv
383
+      'use_personnel_manager', // no equiv
384 384
       'use_event_timezones',
385 385
       'full_logging',
386
-      'surcharge_type',// unused
387
-      'surcharge_text',// unused
386
+      'surcharge_type', // unused
387
+      'surcharge_text', // unused
388 388
       'affiliate_id',
389 389
       'site_license_key',
390 390
     );
Please login to merge, or discard this patch.
Indentation   +270 added lines, -270 removed lines patch added patch discarded remove patch
@@ -103,286 +103,286 @@
 block discarded – undo
103 103
 class EE_DMS_4_1_0_org_options extends EE_Data_Migration_Script_Stage
104 104
 {
105 105
 
106
-    public function _migration_step($num_items = 50)
107
-    {
106
+	public function _migration_step($num_items = 50)
107
+	{
108 108
 
109
-        $items_actually_migrated = 0;
110
-        $old_org_options = get_option('events_organization_settings');
111
-        foreach ($this->_org_options_we_know_how_to_migrate as $option_name) {
112
-            // only bother migrating if there's a setting to migrate. Otherwise we'll just use the default
113
-            if (isset($old_org_options[ $option_name ])) {
114
-                $this->_handle_org_option($option_name, $old_org_options[ $option_name ]);
115
-            }
116
-            if ($option_name=='surcharge') {
117
-                $this->_insert_new_global_surcharge_price($old_org_options);
118
-            }
119
-            $items_actually_migrated++;
120
-        }
109
+		$items_actually_migrated = 0;
110
+		$old_org_options = get_option('events_organization_settings');
111
+		foreach ($this->_org_options_we_know_how_to_migrate as $option_name) {
112
+			// only bother migrating if there's a setting to migrate. Otherwise we'll just use the default
113
+			if (isset($old_org_options[ $option_name ])) {
114
+				$this->_handle_org_option($option_name, $old_org_options[ $option_name ]);
115
+			}
116
+			if ($option_name=='surcharge') {
117
+				$this->_insert_new_global_surcharge_price($old_org_options);
118
+			}
119
+			$items_actually_migrated++;
120
+		}
121 121
 
122
-        $success = EE_Config::instance()->update_espresso_config(false, true);
123
-        if (! $success) {
124
-            $this->add_error(sprintf(__('Could not save EE Config during org options stage. Reason: %s', 'event_espresso'), EE_Error::get_notices(false)));
125
-            EE_Error::overwrite_errors();
126
-        }
127
-        EE_Network_Config::instance()->update_config(false, false);
128
-        if ($this->count_records_migrated() + $items_actually_migrated >= $this->count_records_to_migrate()) {
129
-            // we may have added new pages and this might be necessary
130
-            flush_rewrite_rules();
131
-            $this->set_completed();
132
-        }
133
-        return $items_actually_migrated;
134
-    }
135
-    public function _count_records_to_migrate()
136
-    {
137
-        $count_of_options_to_migrate = count($this->_org_options_we_know_how_to_migrate);
138
-        return $count_of_options_to_migrate;
139
-    }
140
-    public function __construct()
141
-    {
142
-        $this->_pretty_name = __("Organization Options/Config", "event_espresso");
143
-        $this->_org_options_we_know_how_to_migrate = apply_filters('FHEE__EE_DMS_4_1_0_org_options__org_options_we_know_how_to_migrate', $this->_org_options_we_know_how_to_migrate);
144
-        parent::__construct();
145
-    }
122
+		$success = EE_Config::instance()->update_espresso_config(false, true);
123
+		if (! $success) {
124
+			$this->add_error(sprintf(__('Could not save EE Config during org options stage. Reason: %s', 'event_espresso'), EE_Error::get_notices(false)));
125
+			EE_Error::overwrite_errors();
126
+		}
127
+		EE_Network_Config::instance()->update_config(false, false);
128
+		if ($this->count_records_migrated() + $items_actually_migrated >= $this->count_records_to_migrate()) {
129
+			// we may have added new pages and this might be necessary
130
+			flush_rewrite_rules();
131
+			$this->set_completed();
132
+		}
133
+		return $items_actually_migrated;
134
+	}
135
+	public function _count_records_to_migrate()
136
+	{
137
+		$count_of_options_to_migrate = count($this->_org_options_we_know_how_to_migrate);
138
+		return $count_of_options_to_migrate;
139
+	}
140
+	public function __construct()
141
+	{
142
+		$this->_pretty_name = __("Organization Options/Config", "event_espresso");
143
+		$this->_org_options_we_know_how_to_migrate = apply_filters('FHEE__EE_DMS_4_1_0_org_options__org_options_we_know_how_to_migrate', $this->_org_options_we_know_how_to_migrate);
144
+		parent::__construct();
145
+	}
146 146
 
147
-    private function _handle_org_option($option_name, $value)
148
-    {
149
-        $c = EE_Config::instance();
150
-        $cn = EE_Network_Config::instance();
151
-        switch ($option_name) {
152
-            case 'organization':
153
-                $c->organization->name = $value;
154
-                break;
155
-            case 'organization_street1':
156
-                $c->organization->address_1 = $value;
157
-                break;
158
-            case 'organization_street2':
159
-                $c->organization->address_2 = $value;
160
-                break;
161
-            case 'organization_city':
162
-                $c->organization->city = $value;
163
-                break;
164
-            case 'organization_state':
165
-                try {
166
-                    $state = $this->get_migration_script()->get_or_create_state($value);
167
-                    $state_id = $state['STA_ID'];
168
-                    $c->organization->STA_ID = $state_id;
169
-                } catch (EE_Error $e) {
170
-                }
171
-                break;
172
-            case 'organization_zip':
173
-                $c->organization->zip = $value;
174
-                break;
175
-            case 'contact_email':
176
-                $c->organization->email = $value;
177
-                break;
178
-            case 'default_payment_status':
179
-                $c->registration->default_STS_ID =  $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID($value);
180
-                break;
181
-            case 'organization_country':
182
-                $iso =$this->get_migration_script()->get_iso_from_3_1_country_id($value);
183
-                $c->organization->CNT_ISO = $iso;
184
-                $country_row = $this->get_migration_script()->get_or_create_country($iso);
185
-                if (! $country_row) {
186
-                    $this->add_error(sprintf(__("Could not set country's currency config because no country exists for ISO %s", "event_espresso"), $iso));
187
-                }
188
-                // can't use EE_Currency_Config's handy constructor because the models are off-limits right now (and it uses them)
189
-                $c->currency->code = $country_row['CNT_cur_code'];          // currency code: USD, CAD, EUR
190
-                $c->currency->name = $country_row['CNT_cur_single'];    // Dollar
191
-                $c->currency->plural = $country_row['CNT_cur_plural'];  // Dollars
192
-                $c->currency->sign =  $country_row['CNT_cur_sign'];             // currency sign: $
193
-                $c->currency->sign_b4 = filter_var($country_row['CNT_cur_sign_b4'], FILTER_VALIDATE_BOOLEAN);        // currency sign before or after: $TRUE  or  FALSE$
194
-                $c->currency->dec_plc = (int) $country_row['CNT_cur_dec_plc'];    // decimal places: 2 = 0.00  3 = 0.000
195
-                $c->currency->dec_mrk = $country_row['CNT_cur_dec_mrk'];    // decimal mark: (comma) ',' = 0,01   or (decimal) '.' = 0.01
196
-                $c->currency->thsnds = $country_row['CNT_cur_thsnds'];  // thousands separator: (comma) ',' = 1,000   or (decimal) '.' = 1.000
147
+	private function _handle_org_option($option_name, $value)
148
+	{
149
+		$c = EE_Config::instance();
150
+		$cn = EE_Network_Config::instance();
151
+		switch ($option_name) {
152
+			case 'organization':
153
+				$c->organization->name = $value;
154
+				break;
155
+			case 'organization_street1':
156
+				$c->organization->address_1 = $value;
157
+				break;
158
+			case 'organization_street2':
159
+				$c->organization->address_2 = $value;
160
+				break;
161
+			case 'organization_city':
162
+				$c->organization->city = $value;
163
+				break;
164
+			case 'organization_state':
165
+				try {
166
+					$state = $this->get_migration_script()->get_or_create_state($value);
167
+					$state_id = $state['STA_ID'];
168
+					$c->organization->STA_ID = $state_id;
169
+				} catch (EE_Error $e) {
170
+				}
171
+				break;
172
+			case 'organization_zip':
173
+				$c->organization->zip = $value;
174
+				break;
175
+			case 'contact_email':
176
+				$c->organization->email = $value;
177
+				break;
178
+			case 'default_payment_status':
179
+				$c->registration->default_STS_ID =  $this->get_migration_script()->convert_3_1_payment_status_to_4_1_STS_ID($value);
180
+				break;
181
+			case 'organization_country':
182
+				$iso =$this->get_migration_script()->get_iso_from_3_1_country_id($value);
183
+				$c->organization->CNT_ISO = $iso;
184
+				$country_row = $this->get_migration_script()->get_or_create_country($iso);
185
+				if (! $country_row) {
186
+					$this->add_error(sprintf(__("Could not set country's currency config because no country exists for ISO %s", "event_espresso"), $iso));
187
+				}
188
+				// can't use EE_Currency_Config's handy constructor because the models are off-limits right now (and it uses them)
189
+				$c->currency->code = $country_row['CNT_cur_code'];          // currency code: USD, CAD, EUR
190
+				$c->currency->name = $country_row['CNT_cur_single'];    // Dollar
191
+				$c->currency->plural = $country_row['CNT_cur_plural'];  // Dollars
192
+				$c->currency->sign =  $country_row['CNT_cur_sign'];             // currency sign: $
193
+				$c->currency->sign_b4 = filter_var($country_row['CNT_cur_sign_b4'], FILTER_VALIDATE_BOOLEAN);        // currency sign before or after: $TRUE  or  FALSE$
194
+				$c->currency->dec_plc = (int) $country_row['CNT_cur_dec_plc'];    // decimal places: 2 = 0.00  3 = 0.000
195
+				$c->currency->dec_mrk = $country_row['CNT_cur_dec_mrk'];    // decimal mark: (comma) ',' = 0,01   or (decimal) '.' = 0.01
196
+				$c->currency->thsnds = $country_row['CNT_cur_thsnds'];  // thousands separator: (comma) ',' = 1,000   or (decimal) '.' = 1.000
197 197
   //            $c->currency = new EE_Currency_Config($c->organization->CNT_ISO);break;
198 198
   //        case 'currency_symbol': ignore the currency symbol. we'll just go by their country.
199 199
   //            $c->currency->sign = $value;break;
200
-            case 'show_pending_payment_options':
201
-                $c->registration->show_pending_payment_options = ($value == 'Y');
202
-                break;
203
-            case 'display_address_in_regform':
204
-                $c->template_settings->display_address_in_regform = ($value == 'Y');
205
-                break;
206
-            case 'default_logo_url':
207
-                $c->organization->logo_url = $value;
208
-                break;
209
-            case 'event_page_id':
210
-                // also, find that post, and changes the shortcode in it from ESPRESSO_PAYMENTS
211
-                // to ESPRESSO_THANK_YOU
212
-                $reg_page_post = get_post($value);
213
-                $reg_page_post->post_content = str_replace("[ESPRESSO_EVENTS]", "[ESPRESSO_CHECKOUT]", $reg_page_post->post_content);
214
-                wp_update_post($reg_page_post);
215
-                $c->core->reg_page_id = $value;
216
-                break;
217
-            case 'return_url':
218
-                // also, find that post, and changes the shortcode in it from ESPRESSO_PAYMENTS
219
-                // to ESPRESSO_THANK_YOU
220
-                $thank_you_page_post = get_post($value);
221
-                $thank_you_page_post->post_content = str_replace("[ESPRESSO_PAYMENTS]", "[ESPRESSO_THANK_YOU]", $thank_you_page_post->post_content);
222
-                wp_update_post($thank_you_page_post);
223
-                $c->core->thank_you_page_id = $value;
224
-                break;
225
-            case 'cancel_return':
226
-                $c->core->cancel_page_id = $value;
200
+			case 'show_pending_payment_options':
201
+				$c->registration->show_pending_payment_options = ($value == 'Y');
202
+				break;
203
+			case 'display_address_in_regform':
204
+				$c->template_settings->display_address_in_regform = ($value == 'Y');
205
+				break;
206
+			case 'default_logo_url':
207
+				$c->organization->logo_url = $value;
208
+				break;
209
+			case 'event_page_id':
210
+				// also, find that post, and changes the shortcode in it from ESPRESSO_PAYMENTS
211
+				// to ESPRESSO_THANK_YOU
212
+				$reg_page_post = get_post($value);
213
+				$reg_page_post->post_content = str_replace("[ESPRESSO_EVENTS]", "[ESPRESSO_CHECKOUT]", $reg_page_post->post_content);
214
+				wp_update_post($reg_page_post);
215
+				$c->core->reg_page_id = $value;
216
+				break;
217
+			case 'return_url':
218
+				// also, find that post, and changes the shortcode in it from ESPRESSO_PAYMENTS
219
+				// to ESPRESSO_THANK_YOU
220
+				$thank_you_page_post = get_post($value);
221
+				$thank_you_page_post->post_content = str_replace("[ESPRESSO_PAYMENTS]", "[ESPRESSO_THANK_YOU]", $thank_you_page_post->post_content);
222
+				wp_update_post($thank_you_page_post);
223
+				$c->core->thank_you_page_id = $value;
224
+				break;
225
+			case 'cancel_return':
226
+				$c->core->cancel_page_id = $value;
227 227
 
228
-                break;
229
-            case 'notify_url':
230
-                $c->core->txn_page_id = $value;
231
-                break;
232
-            case 'use_captcha':
233
-                $c->registration->use_captcha = ($value == 'Y');
234
-                break;
235
-            case 'recaptcha_publickey':
236
-                $c->registration->recaptcha_publickey = $value;
237
-                break;
238
-            case 'recaptcha_privatekey':
239
-                $c->registration->recaptcha_privatekey = $value;
240
-                break;
241
-            case 'recaptcha_theme':
242
-                $c->registration->recaptcha_theme = $value;
243
-                break;
244
-            case 'recaptcha_width':
245
-                $c->registration->recaptcha_width = $value;
246
-                break;
247
-            case 'recaptcha_language':
248
-                $c->registration->recaptcha_language = $value;
249
-                break;
250
-            case 'espresso_dashboard_widget':
251
-                $c->admin->use_dashboard_widget = ($value == 'Y');
252
-                break;
253
-            case 'use_personnel_manager':
254
-                $c->admin->use_personnel_manager = ($value == 'Y');
255
-                break;
256
-            case 'use_event_timezones':
257
-                $c->admin->use_event_timezones = ($value == 'Y');
258
-                break;
259
-            case 'affiliate_id':
260
-                $c->admin->affiliate_id = $value;
261
-                break;
262
-            case 'site_license_key':
263
-                $cn->core->site_license_key = $value;
264
-                break;
265
-            default:
266
-                do_action('AHEE__EE_DMS_4_1_0__handle_org_option', $option_name, $value);
267
-        }
268
-    }
228
+				break;
229
+			case 'notify_url':
230
+				$c->core->txn_page_id = $value;
231
+				break;
232
+			case 'use_captcha':
233
+				$c->registration->use_captcha = ($value == 'Y');
234
+				break;
235
+			case 'recaptcha_publickey':
236
+				$c->registration->recaptcha_publickey = $value;
237
+				break;
238
+			case 'recaptcha_privatekey':
239
+				$c->registration->recaptcha_privatekey = $value;
240
+				break;
241
+			case 'recaptcha_theme':
242
+				$c->registration->recaptcha_theme = $value;
243
+				break;
244
+			case 'recaptcha_width':
245
+				$c->registration->recaptcha_width = $value;
246
+				break;
247
+			case 'recaptcha_language':
248
+				$c->registration->recaptcha_language = $value;
249
+				break;
250
+			case 'espresso_dashboard_widget':
251
+				$c->admin->use_dashboard_widget = ($value == 'Y');
252
+				break;
253
+			case 'use_personnel_manager':
254
+				$c->admin->use_personnel_manager = ($value == 'Y');
255
+				break;
256
+			case 'use_event_timezones':
257
+				$c->admin->use_event_timezones = ($value == 'Y');
258
+				break;
259
+			case 'affiliate_id':
260
+				$c->admin->affiliate_id = $value;
261
+				break;
262
+			case 'site_license_key':
263
+				$cn->core->site_license_key = $value;
264
+				break;
265
+			default:
266
+				do_action('AHEE__EE_DMS_4_1_0__handle_org_option', $option_name, $value);
267
+		}
268
+	}
269 269
 
270
-    /**
271
-     * Creates a 4.1 member price discount
272
-     * @global type $wpdb
273
-     * @param type $old_price
274
-     * @return int
275
-     */
276
-    private function _insert_new_global_surcharge_price($org_options)
277
-    {
278
-        $amount = floatval($org_options['surcharge']);
279
-        // dont createa a price if the surcharge is 0
280
-        if ($amount <=.01) {
281
-            return 0;
282
-        }
283
-        if ($org_options['surcharge_type'] == 'flat_rate') {
284
-            $price_type = EE_DMS_4_1_0_prices::price_type_flat_surcharge;
285
-        } else {
286
-            $price_type = EE_DMS_4_1_0_prices::price_type_percent_surcharge;
287
-        }
288
-        global $wpdb;
289
-        $cols_n_values = array(
290
-            'PRT_ID'=>$price_type,
291
-            'PRC_amount'=>$amount,
292
-            'PRC_name'=>  $org_options['surcharge_text'],
293
-            'PRC_is_default'=>true,
294
-            'PRC_overrides'=>false,
295
-            'PRC_order'=>100,
296
-            'PRC_deleted'=>false,
297
-            'PRC_parent'=>null
270
+	/**
271
+	 * Creates a 4.1 member price discount
272
+	 * @global type $wpdb
273
+	 * @param type $old_price
274
+	 * @return int
275
+	 */
276
+	private function _insert_new_global_surcharge_price($org_options)
277
+	{
278
+		$amount = floatval($org_options['surcharge']);
279
+		// dont createa a price if the surcharge is 0
280
+		if ($amount <=.01) {
281
+			return 0;
282
+		}
283
+		if ($org_options['surcharge_type'] == 'flat_rate') {
284
+			$price_type = EE_DMS_4_1_0_prices::price_type_flat_surcharge;
285
+		} else {
286
+			$price_type = EE_DMS_4_1_0_prices::price_type_percent_surcharge;
287
+		}
288
+		global $wpdb;
289
+		$cols_n_values = array(
290
+			'PRT_ID'=>$price_type,
291
+			'PRC_amount'=>$amount,
292
+			'PRC_name'=>  $org_options['surcharge_text'],
293
+			'PRC_is_default'=>true,
294
+			'PRC_overrides'=>false,
295
+			'PRC_order'=>100,
296
+			'PRC_deleted'=>false,
297
+			'PRC_parent'=>null
298 298
 
299
-        );
300
-        $datatypes = array(
301
-            '%d',// PRT_ID
302
-            '%f',// PRT_amount
303
-            '%s',// PRC_name
304
-            '%d',// PRC_is_default
305
-            '%d',// PRC_overrides
306
-            '%d',// PRC_order
307
-            '%d',// PRC_deleted
308
-            '%d',// PRC_parent
309
-        );
310
-        $price_table = $wpdb->prefix."esp_price";
311
-        $success = $wpdb->insert($price_table, $cols_n_values, $datatypes);
312
-        if (! $success) {
313
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion(
314
-                'org_options',
315
-                array(
316
-                        'surcharge'=>$org_options['surcharge'],
317
-                        'surcharge_type'=>$org_options['surcharge_type'],
318
-                        'surcharge_text'=>$org_options['surcharge_text']),
319
-                $price_table,
320
-                $cols_n_values,
321
-                $datatypes
322
-            ));
323
-            return 0;
324
-        }
325
-        $new_id = $wpdb->insert_id;
326
-        return $new_id;
327
-    }
299
+		);
300
+		$datatypes = array(
301
+			'%d',// PRT_ID
302
+			'%f',// PRT_amount
303
+			'%s',// PRC_name
304
+			'%d',// PRC_is_default
305
+			'%d',// PRC_overrides
306
+			'%d',// PRC_order
307
+			'%d',// PRC_deleted
308
+			'%d',// PRC_parent
309
+		);
310
+		$price_table = $wpdb->prefix."esp_price";
311
+		$success = $wpdb->insert($price_table, $cols_n_values, $datatypes);
312
+		if (! $success) {
313
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion(
314
+				'org_options',
315
+				array(
316
+						'surcharge'=>$org_options['surcharge'],
317
+						'surcharge_type'=>$org_options['surcharge_type'],
318
+						'surcharge_text'=>$org_options['surcharge_text']),
319
+				$price_table,
320
+				$cols_n_values,
321
+				$datatypes
322
+			));
323
+			return 0;
324
+		}
325
+		$new_id = $wpdb->insert_id;
326
+		return $new_id;
327
+	}
328 328
 
329
-    protected $_org_options_we_know_how_to_migrate = array(
330
-      'organization',
331
-      'organization_street1',
332
-      'organization_street2',
333
-      'organization_city',
334
-      'organization_state',
335
-      'organization_zip',
336
-      'contact_email',
337
-      'default_mail',
338
-      'payment_subject',
339
-      'payment_message',
340
-      'message',
341
-      'default_payment_status',
342
-      'surcharge',// unused?
343
-      'country_id',// unused?
344
-      'organization_country',
329
+	protected $_org_options_we_know_how_to_migrate = array(
330
+	  'organization',
331
+	  'organization_street1',
332
+	  'organization_street2',
333
+	  'organization_city',
334
+	  'organization_state',
335
+	  'organization_zip',
336
+	  'contact_email',
337
+	  'default_mail',
338
+	  'payment_subject',
339
+	  'payment_message',
340
+	  'message',
341
+	  'default_payment_status',
342
+	  'surcharge',// unused?
343
+	  'country_id',// unused?
344
+	  'organization_country',
345 345
 //    'currency_symbol',
346
-      'expire_on_registration_end',
347
-      'email_before_payment',
348
-      'email_fancy_headers',
349
-      'enable_default_style',
350
-      'event_ssl_active',
351
-      'selected_style',
352
-      'show_pending_payment_options',
353
-      'show_reg_footer',
354
-      'skip_confirmation_page',
355
-      'allow_mer_discounts',// no equiv
356
-      'allow_mer_vouchers',// no equiv
357
-      'display_short_description_in_event_list',
358
-      'display_description_on_multi_reg_page',
359
-      'display_address_in_event_list',
360
-      'display_address_in_regform',
361
-      'use_custom_post_types',// no equiv
362
-      'display_ical_download',
363
-      'display_featured_image',
364
-      'themeroller',
365
-      'default_logo_url',
366
-      'event_page_id',
367
-      'return_url',
368
-      'cancel_return',
369
-      'notify_url',
370
-      'events_in_dashboard',
371
-      'use_captcha',
372
-      'recaptcha_publickey',
373
-      'recaptcha_privatekey',
374
-      'recaptcha_theme',
375
-      'recaptcha_width',
376
-      'recaptcha_language',
377
-      'espresso_dashboard_widget',
378
-      'time_reg_limit',
346
+	  'expire_on_registration_end',
347
+	  'email_before_payment',
348
+	  'email_fancy_headers',
349
+	  'enable_default_style',
350
+	  'event_ssl_active',
351
+	  'selected_style',
352
+	  'show_pending_payment_options',
353
+	  'show_reg_footer',
354
+	  'skip_confirmation_page',
355
+	  'allow_mer_discounts',// no equiv
356
+	  'allow_mer_vouchers',// no equiv
357
+	  'display_short_description_in_event_list',
358
+	  'display_description_on_multi_reg_page',
359
+	  'display_address_in_event_list',
360
+	  'display_address_in_regform',
361
+	  'use_custom_post_types',// no equiv
362
+	  'display_ical_download',
363
+	  'display_featured_image',
364
+	  'themeroller',
365
+	  'default_logo_url',
366
+	  'event_page_id',
367
+	  'return_url',
368
+	  'cancel_return',
369
+	  'notify_url',
370
+	  'events_in_dashboard',
371
+	  'use_captcha',
372
+	  'recaptcha_publickey',
373
+	  'recaptcha_privatekey',
374
+	  'recaptcha_theme',
375
+	  'recaptcha_width',
376
+	  'recaptcha_language',
377
+	  'espresso_dashboard_widget',
378
+	  'time_reg_limit',
379 379
 //    'use_attendee_pre_approval', removed in 4.1- instead this is factored into the default reg status
380
-      'use_personnel_manager',// no equiv
381
-      'use_event_timezones',
382
-      'full_logging',
383
-      'surcharge_type',// unused
384
-      'surcharge_text',// unused
385
-      'affiliate_id',
386
-      'site_license_key',
387
-    );
380
+	  'use_personnel_manager',// no equiv
381
+	  'use_event_timezones',
382
+	  'full_logging',
383
+	  'surcharge_type',// unused
384
+	  'surcharge_text',// unused
385
+	  'affiliate_id',
386
+	  'site_license_key',
387
+	);
388 388
 }
Please login to merge, or discard this patch.
core/data_migration_scripts/4_1_0_stages/EE_DMS_4_1_0_prices.dmsstage.php 3 patches
Doc Comments   +3 added lines, -4 removed lines patch added patch discarded remove patch
@@ -349,8 +349,8 @@  discard block
 block discarded – undo
349 349
     /**
350 350
      * Adds a join between a ticket and a price
351 351
      * @global type $wpdb
352
-     * @param type $new_ticket_id
353
-     * @param type $new_price_id
352
+     * @param integer $new_ticket_id
353
+     * @param integer $new_price_id
354 354
      * @return int
355 355
      */
356 356
     private function _insert_ticket_price_relation($new_ticket_id, $new_price_id)
@@ -376,8 +376,7 @@  discard block
 block discarded – undo
376 376
     /**
377 377
      * Adds a join between a ticket and a datetime
378 378
      * @global type $wpdb
379
-     * @param type $new_ticket_id
380
-     * @param type $new_price_id
379
+     * @param integer $new_ticket_id
381 380
      * @return int
382 381
      */
383 382
     private function _insert_datetime_ticket_relation($new_datetime_id, $new_ticket_id)
Please login to merge, or discard this patch.
Indentation   +292 added lines, -292 removed lines patch added patch discarded remove patch
@@ -87,57 +87,57 @@  discard block
 block discarded – undo
87 87
  */
88 88
 class EE_DMS_4_1_0_prices extends EE_Data_Migration_Script_Stage_Table
89 89
 {
90
-    private $_new_price_table;
91
-    private $_new_ticket_table;
92
-    private $_new_ticket_price_table;
93
-    private $_new_datetime_ticket_table;
94
-    /**
95
-     * A count of all the different tickets created, used for setting the new ones' TKT_Order
96
-     * @var int
97
-     */
98
-    private $_ticket_count = 0;
99
-    const price_type_base = 1;
100
-    const price_type_member_discount = 3;
101
-    const price_type_percent_surcharge = 4;
102
-    const price_type_flat_surcharge = 5;
90
+	private $_new_price_table;
91
+	private $_new_ticket_table;
92
+	private $_new_ticket_price_table;
93
+	private $_new_datetime_ticket_table;
94
+	/**
95
+	 * A count of all the different tickets created, used for setting the new ones' TKT_Order
96
+	 * @var int
97
+	 */
98
+	private $_ticket_count = 0;
99
+	const price_type_base = 1;
100
+	const price_type_member_discount = 3;
101
+	const price_type_percent_surcharge = 4;
102
+	const price_type_flat_surcharge = 5;
103 103
 
104
-    public function __construct()
105
-    {
106
-        global $wpdb;
107
-        $this->_pretty_name = __("Prices", "event_espresso");
108
-        $this->_old_table = $wpdb->prefix."events_prices";
109
-        $this->select_expression = 'p.*, e.event_status';
110
-        $this->_extra_where_sql = ' AS p 
104
+	public function __construct()
105
+	{
106
+		global $wpdb;
107
+		$this->_pretty_name = __("Prices", "event_espresso");
108
+		$this->_old_table = $wpdb->prefix."events_prices";
109
+		$this->select_expression = 'p.*, e.event_status';
110
+		$this->_extra_where_sql = ' AS p 
111 111
             INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON p.event_id=e.id
112 112
             WHERE e.event_status!="D"';
113
-        $this->_new_price_table = $wpdb->prefix."esp_price";
114
-        $this->_new_ticket_table = $wpdb->prefix."esp_ticket";
115
-        $this->_new_ticket_price_table = $wpdb->prefix."esp_ticket_price";
116
-        $this->_new_datetime_ticket_table = $wpdb->prefix."esp_datetime_ticket";
117
-        parent::__construct();
118
-    }
119
-    protected function _migrate_old_row($old_row)
120
-    {
121
-        // create the base price
122
-        $new_price_id = $this->_insert_new_price($old_row);
123
-        // create the member discount if there is any
124
-        // commented-out because we may actually NOT be supporting this in 4.1
113
+		$this->_new_price_table = $wpdb->prefix."esp_price";
114
+		$this->_new_ticket_table = $wpdb->prefix."esp_ticket";
115
+		$this->_new_ticket_price_table = $wpdb->prefix."esp_ticket_price";
116
+		$this->_new_datetime_ticket_table = $wpdb->prefix."esp_datetime_ticket";
117
+		parent::__construct();
118
+	}
119
+	protected function _migrate_old_row($old_row)
120
+	{
121
+		// create the base price
122
+		$new_price_id = $this->_insert_new_price($old_row);
123
+		// create the member discount if there is any
124
+		// commented-out because we may actually NOT be supporting this in 4.1
125 125
 //      if($old_row['event_cost'] != $old_row['member_price']){
126 126
 //          $member_price_discount_id = $this->_insert_new_member_price($old_row);
127 127
 //      }else{
128 128
 //          $member_price_discount_id = 0;
129 129
 //      }
130
-        // create the surcharge if there is any
131
-        if (floatval($old_row['surcharge']) >= 0.01) {
132
-            $surcharge_price_id = $this->_insert_new_surcharge_price($old_row);
133
-            $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id,$surcharge_price_id));
134
-        } else {
135
-            $surcharge_price_id = 0;
136
-            $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id));
137
-        }
138
-        // associate the ticket to all datetimes for event (ie, this ONE ticket grants access to ALL datetimes, not just one of the attendee's choice.
139
-        // if the latter were the case, then we'd create a separate ticket for each datetime and ahve their association be one-to-one)
140
-        // create ticket
130
+		// create the surcharge if there is any
131
+		if (floatval($old_row['surcharge']) >= 0.01) {
132
+			$surcharge_price_id = $this->_insert_new_surcharge_price($old_row);
133
+			$this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id,$surcharge_price_id));
134
+		} else {
135
+			$surcharge_price_id = 0;
136
+			$this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id));
137
+		}
138
+		// associate the ticket to all datetimes for event (ie, this ONE ticket grants access to ALL datetimes, not just one of the attendee's choice.
139
+		// if the latter were the case, then we'd create a separate ticket for each datetime and ahve their association be one-to-one)
140
+		// create ticket
141 141
 //      $ticket_id = $this->_insert_new_ticket($old_row);
142 142
 //      if($ticket_id){
143 143
 //          $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_ticket_table, $ticket_id);
@@ -149,62 +149,62 @@  discard block
 block discarded – undo
149 149
 //              $this->_insert_datetime_ticket_relation($new_datetime_id, $ticket_id);
150 150
 //          }
151 151
 //      }
152
-        // create a ticket for each old price -old datetime combo
153
-        $tickets_for_old_price = array();
154
-        foreach ($this->_get_datetime_ids_for_old_event_id($old_row['event_id']) as $new_datetime_id) {
155
-            $ticket_id = $this->_insert_new_ticket($old_row);
156
-            $tickets_for_old_price[] = $ticket_id;
157
-            // associate to old prices
158
-            $this->_insert_ticket_price_relation($ticket_id, $new_price_id);
159
-            $this->_insert_ticket_price_relation($ticket_id, $surcharge_price_id);
160
-            $this->_insert_datetime_ticket_relation($new_datetime_id, $ticket_id);
161
-        }
162
-        $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_ticket_table, $tickets_for_old_price);
163
-    }
164
-    /**
165
-     * Creates a 4.1 price base type
166
-     * @global type $wpdb
167
-     * @param type $old_price
168
-     * @return int
169
-     */
170
-    private function _insert_new_price($old_price)
171
-    {
172
-        global $wpdb;
173
-        $cols_n_values = array(
174
-            'PRT_ID'=>self::price_type_base,
175
-            'PRC_amount'=>floatval($old_price['event_cost']),
176
-            'PRC_name'=>$old_price['price_type'],
177
-            'PRC_is_default'=>false,
178
-            'PRC_overrides'=>false,
179
-            'PRC_order'=>0,
180
-            'PRC_deleted'=>false,
181
-            'PRC_parent'=>null
152
+		// create a ticket for each old price -old datetime combo
153
+		$tickets_for_old_price = array();
154
+		foreach ($this->_get_datetime_ids_for_old_event_id($old_row['event_id']) as $new_datetime_id) {
155
+			$ticket_id = $this->_insert_new_ticket($old_row);
156
+			$tickets_for_old_price[] = $ticket_id;
157
+			// associate to old prices
158
+			$this->_insert_ticket_price_relation($ticket_id, $new_price_id);
159
+			$this->_insert_ticket_price_relation($ticket_id, $surcharge_price_id);
160
+			$this->_insert_datetime_ticket_relation($new_datetime_id, $ticket_id);
161
+		}
162
+		$this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_ticket_table, $tickets_for_old_price);
163
+	}
164
+	/**
165
+	 * Creates a 4.1 price base type
166
+	 * @global type $wpdb
167
+	 * @param type $old_price
168
+	 * @return int
169
+	 */
170
+	private function _insert_new_price($old_price)
171
+	{
172
+		global $wpdb;
173
+		$cols_n_values = array(
174
+			'PRT_ID'=>self::price_type_base,
175
+			'PRC_amount'=>floatval($old_price['event_cost']),
176
+			'PRC_name'=>$old_price['price_type'],
177
+			'PRC_is_default'=>false,
178
+			'PRC_overrides'=>false,
179
+			'PRC_order'=>0,
180
+			'PRC_deleted'=>false,
181
+			'PRC_parent'=>null
182 182
 
183
-        );
184
-        $datatypes = array(
185
-            '%d',// PRT_ID
186
-            '%f',// PRT_amount
187
-            '%s',// PRC_name
188
-            '%d',// PRC_is_default
189
-            '%d',// PRC_overrides
190
-            '%d',// PRC_order
191
-            '%d',// PRC_deleted
192
-            '%d',// PRC_parent
193
-        );
194
-        $success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
195
-        if (! $success) {
196
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
197
-            return 0;
198
-        }
199
-        $new_id = $wpdb->insert_id;
200
-        return $new_id;
201
-    }
202
-    /**
203
-     * Creates a 4.1 member price discount
204
-     * @global type $wpdb
205
-     * @param type $old_price
206
-     * @return int
207
-     */
183
+		);
184
+		$datatypes = array(
185
+			'%d',// PRT_ID
186
+			'%f',// PRT_amount
187
+			'%s',// PRC_name
188
+			'%d',// PRC_is_default
189
+			'%d',// PRC_overrides
190
+			'%d',// PRC_order
191
+			'%d',// PRC_deleted
192
+			'%d',// PRC_parent
193
+		);
194
+		$success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
195
+		if (! $success) {
196
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
197
+			return 0;
198
+		}
199
+		$new_id = $wpdb->insert_id;
200
+		return $new_id;
201
+	}
202
+	/**
203
+	 * Creates a 4.1 member price discount
204
+	 * @global type $wpdb
205
+	 * @param type $old_price
206
+	 * @return int
207
+	 */
208 208
 //  private function _insert_new_member_price($old_price){
209 209
 //      $discount_amount = floatval($old_price['event_cost']) - floatval($old_price['member_price']);
210 210
 //      global $wpdb;
@@ -237,207 +237,207 @@  discard block
 block discarded – undo
237 237
 //      $new_id = $wpdb->insert_id;
238 238
 //      return $new_id;
239 239
 //  }
240
-    /**
241
-     * Creates a 4.1 member price discount
242
-     * @global type $wpdb
243
-     * @param type $old_price
244
-     * @return int
245
-     */
246
-    private function _insert_new_surcharge_price($old_price)
247
-    {
240
+	/**
241
+	 * Creates a 4.1 member price discount
242
+	 * @global type $wpdb
243
+	 * @param type $old_price
244
+	 * @return int
245
+	 */
246
+	private function _insert_new_surcharge_price($old_price)
247
+	{
248 248
 
249
-        if ($old_price['surcharge_type'] == 'flat_rate') {
250
-            $price_type = self::price_type_flat_surcharge;
251
-        } else {
252
-            $price_type = self::price_type_percent_surcharge;
253
-        }
254
-        global $wpdb;
255
-        $cols_n_values = array(
256
-            'PRT_ID'=>$price_type,
257
-            'PRC_amount'=>floatval($old_price['surcharge']),
258
-            'PRC_name'=>  __("Surcharge", "event_espresso"),
259
-            'PRC_is_default'=>false,
260
-            'PRC_overrides'=>false,
261
-            'PRC_order'=>20,
262
-            'PRC_deleted'=>false,
263
-            'PRC_parent'=>null
249
+		if ($old_price['surcharge_type'] == 'flat_rate') {
250
+			$price_type = self::price_type_flat_surcharge;
251
+		} else {
252
+			$price_type = self::price_type_percent_surcharge;
253
+		}
254
+		global $wpdb;
255
+		$cols_n_values = array(
256
+			'PRT_ID'=>$price_type,
257
+			'PRC_amount'=>floatval($old_price['surcharge']),
258
+			'PRC_name'=>  __("Surcharge", "event_espresso"),
259
+			'PRC_is_default'=>false,
260
+			'PRC_overrides'=>false,
261
+			'PRC_order'=>20,
262
+			'PRC_deleted'=>false,
263
+			'PRC_parent'=>null
264 264
 
265
-        );
266
-        $datatypes = array(
267
-            '%d',// PRT_ID
268
-            '%f',// PRT_amount
269
-            '%s',// PRC_name
270
-            '%d',// PRC_is_default
271
-            '%d',// PRC_overrides
272
-            '%d',// PRC_order
273
-            '%d',// PRC_deleted
274
-            '%d',// PRC_parent
275
-        );
276
-        $success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
277
-        if (! $success) {
278
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
279
-            return 0;
280
-        }
281
-        $new_id = $wpdb->insert_id;
282
-        return $new_id;
283
-    }
284
-    /**
285
-     * Inserts a 4.1 ticket based off the 3.1 price, and the price IDs we've already made from the 3.1 price
286
-     * @param $old_price_row array where keys are columns
287
-     * @param $new_base_price_id int
288
-     * @param $new_member_discount_id int
289
-     * @param $new_surcharge_id int
290
-     * @return int new ticket id
291
-     */
292
-    private function _insert_new_ticket($old_price_row)
293
-    {
294
-        global $wpdb;
295
-        $event_row = $this->_get_event_row($old_price_row['event_id']);
296
-        if ($old_price_row['surcharge_type'] == 'flat_rate') {
297
-            $final_ticket_price = floatval($old_price_row['event_cost']) + floatval($old_price_row['surcharge']);
298
-        } else {// percent surcharge
299
-            $final_ticket_price = floatval($old_price_row['event_cost']) * (1 + floatval($old_price_row['surcharge'])/100);
300
-        }
301
-        $start_date = $event_row['registration_start']." ".$this->get_migration_script()->convertTimeFromAMPM($event_row['registration_startT']);
302
-        $start_date_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $old_price_row, $start_date, $event_row['timezone_string']);
303
-        $end_date = $event_row['registration_end']." ".$this->get_migration_script()->convertTimeFromAMPM($event_row['registration_endT']);
304
-        $end_date_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $old_price_row, $end_date, $event_row['timezone_string']);
305
-        $cols_n_values = array(
306
-            'TTM_ID'=>0,
307
-            'TKT_name'=>$old_price_row['price_type'],
308
-            'TKT_description'=>'',
309
-            'TKT_start_date'=>$start_date_utc,
310
-            'TKT_end_date'=>$end_date_utc,
311
-            'TKT_min'=>0,
312
-            'TKT_max'=>-1,
313
-            'TKT_price'=>$final_ticket_price,
314
-            'TKT_sold'=> 0,// note: this will get calculated as we actually add registrations during the migration
315
-            'TKT_qty'=> -1,
316
-            'TKT_uses'=> 1,
317
-            'TKT_taxable'=>false,// so by default, old prices are NOT taxable. This way they don't suddenly have a sudden spike in prices
318
-            'TKT_is_default'=>false,
319
-            'TKT_order'=>$this->_get_ticket_count(),
320
-            'TKT_row'=>0,// doesn't matter because UI reset this on first save anyways
321
-            'TKT_deleted'=>false,
322
-            'TKT_parent'=>0
265
+		);
266
+		$datatypes = array(
267
+			'%d',// PRT_ID
268
+			'%f',// PRT_amount
269
+			'%s',// PRC_name
270
+			'%d',// PRC_is_default
271
+			'%d',// PRC_overrides
272
+			'%d',// PRC_order
273
+			'%d',// PRC_deleted
274
+			'%d',// PRC_parent
275
+		);
276
+		$success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
277
+		if (! $success) {
278
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
279
+			return 0;
280
+		}
281
+		$new_id = $wpdb->insert_id;
282
+		return $new_id;
283
+	}
284
+	/**
285
+	 * Inserts a 4.1 ticket based off the 3.1 price, and the price IDs we've already made from the 3.1 price
286
+	 * @param $old_price_row array where keys are columns
287
+	 * @param $new_base_price_id int
288
+	 * @param $new_member_discount_id int
289
+	 * @param $new_surcharge_id int
290
+	 * @return int new ticket id
291
+	 */
292
+	private function _insert_new_ticket($old_price_row)
293
+	{
294
+		global $wpdb;
295
+		$event_row = $this->_get_event_row($old_price_row['event_id']);
296
+		if ($old_price_row['surcharge_type'] == 'flat_rate') {
297
+			$final_ticket_price = floatval($old_price_row['event_cost']) + floatval($old_price_row['surcharge']);
298
+		} else {// percent surcharge
299
+			$final_ticket_price = floatval($old_price_row['event_cost']) * (1 + floatval($old_price_row['surcharge'])/100);
300
+		}
301
+		$start_date = $event_row['registration_start']." ".$this->get_migration_script()->convertTimeFromAMPM($event_row['registration_startT']);
302
+		$start_date_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $old_price_row, $start_date, $event_row['timezone_string']);
303
+		$end_date = $event_row['registration_end']." ".$this->get_migration_script()->convertTimeFromAMPM($event_row['registration_endT']);
304
+		$end_date_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $old_price_row, $end_date, $event_row['timezone_string']);
305
+		$cols_n_values = array(
306
+			'TTM_ID'=>0,
307
+			'TKT_name'=>$old_price_row['price_type'],
308
+			'TKT_description'=>'',
309
+			'TKT_start_date'=>$start_date_utc,
310
+			'TKT_end_date'=>$end_date_utc,
311
+			'TKT_min'=>0,
312
+			'TKT_max'=>-1,
313
+			'TKT_price'=>$final_ticket_price,
314
+			'TKT_sold'=> 0,// note: this will get calculated as we actually add registrations during the migration
315
+			'TKT_qty'=> -1,
316
+			'TKT_uses'=> 1,
317
+			'TKT_taxable'=>false,// so by default, old prices are NOT taxable. This way they don't suddenly have a sudden spike in prices
318
+			'TKT_is_default'=>false,
319
+			'TKT_order'=>$this->_get_ticket_count(),
320
+			'TKT_row'=>0,// doesn't matter because UI reset this on first save anyways
321
+			'TKT_deleted'=>false,
322
+			'TKT_parent'=>0
323 323
 
324
-        );
325
-        $datatypes = array(
326
-            '%d',// TTM_ID
327
-            '%s',// TKT_name
328
-            '%s',// TKT_description
329
-            '%s',// TKT_start_date
330
-            '%s',// TKT_end_date
331
-            '%d',// TKT_min
332
-            '%d',// TKT_max
333
-            '%f',// TKT_price
334
-            '%d',// TKT_sold
335
-            '%d',// TKT_qty
336
-            '%d',// TKT_uses
337
-            '%d',// TKT_taxable
338
-            '%d',// TKT_is_default
339
-            '%d',// TKT_order
340
-            '%d',// TKT_row
341
-            '%d',// TKT_deleted
342
-            '%d',// TKT_parent
343
-        );
344
-        $success = $wpdb->insert($this->_new_ticket_table, $cols_n_values, $datatypes);
345
-        if (! $success) {
346
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price_row, $this->_new_ticket_table, $cols_n_values, $datatypes));
347
-            return 0;
348
-        }
349
-        $new_id = $wpdb->insert_id;
350
-        return $new_id;
351
-    }
324
+		);
325
+		$datatypes = array(
326
+			'%d',// TTM_ID
327
+			'%s',// TKT_name
328
+			'%s',// TKT_description
329
+			'%s',// TKT_start_date
330
+			'%s',// TKT_end_date
331
+			'%d',// TKT_min
332
+			'%d',// TKT_max
333
+			'%f',// TKT_price
334
+			'%d',// TKT_sold
335
+			'%d',// TKT_qty
336
+			'%d',// TKT_uses
337
+			'%d',// TKT_taxable
338
+			'%d',// TKT_is_default
339
+			'%d',// TKT_order
340
+			'%d',// TKT_row
341
+			'%d',// TKT_deleted
342
+			'%d',// TKT_parent
343
+		);
344
+		$success = $wpdb->insert($this->_new_ticket_table, $cols_n_values, $datatypes);
345
+		if (! $success) {
346
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price_row, $this->_new_ticket_table, $cols_n_values, $datatypes));
347
+			return 0;
348
+		}
349
+		$new_id = $wpdb->insert_id;
350
+		return $new_id;
351
+	}
352 352
 
353
-    /**
354
-     * Adds a join between a ticket and a price
355
-     * @global type $wpdb
356
-     * @param type $new_ticket_id
357
-     * @param type $new_price_id
358
-     * @return int
359
-     */
360
-    private function _insert_ticket_price_relation($new_ticket_id, $new_price_id)
361
-    {
362
-        global $wpdb;
363
-        $cols_n_values = array(
364
-            'TKT_ID'=>$new_ticket_id,
365
-            'PRC_ID'=>$new_price_id,
366
-        );
367
-        $datatypes = array(
368
-            '%d',// TKT_ID
369
-            '%d',// PRC_ID
370
-        );
371
-        $success = $wpdb->insert($this->_new_ticket_price_table, $cols_n_values, $datatypes);
372
-        if (! $success) {
373
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'price id'=>$new_price_id), $this->_new_ticket_price_table, $cols_n_values, $datatypes));
374
-            return 0;
375
-        }
376
-        $new_id = $wpdb->insert_id;
377
-        return $new_id;
378
-    }
353
+	/**
354
+	 * Adds a join between a ticket and a price
355
+	 * @global type $wpdb
356
+	 * @param type $new_ticket_id
357
+	 * @param type $new_price_id
358
+	 * @return int
359
+	 */
360
+	private function _insert_ticket_price_relation($new_ticket_id, $new_price_id)
361
+	{
362
+		global $wpdb;
363
+		$cols_n_values = array(
364
+			'TKT_ID'=>$new_ticket_id,
365
+			'PRC_ID'=>$new_price_id,
366
+		);
367
+		$datatypes = array(
368
+			'%d',// TKT_ID
369
+			'%d',// PRC_ID
370
+		);
371
+		$success = $wpdb->insert($this->_new_ticket_price_table, $cols_n_values, $datatypes);
372
+		if (! $success) {
373
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'price id'=>$new_price_id), $this->_new_ticket_price_table, $cols_n_values, $datatypes));
374
+			return 0;
375
+		}
376
+		$new_id = $wpdb->insert_id;
377
+		return $new_id;
378
+	}
379 379
 
380
-    /**
381
-     * Adds a join between a ticket and a datetime
382
-     * @global type $wpdb
383
-     * @param type $new_ticket_id
384
-     * @param type $new_price_id
385
-     * @return int
386
-     */
387
-    private function _insert_datetime_ticket_relation($new_datetime_id, $new_ticket_id)
388
-    {
389
-        global $wpdb;
390
-        $cols_n_values = array(
391
-            'TKT_ID'=>$new_ticket_id,
392
-            'DTT_ID'=>$new_datetime_id,
393
-        );
394
-        $datatypes = array(
395
-            '%d',// TKT_ID
396
-            '%d',// DTT_ID
397
-        );
398
-        $success = $wpdb->insert($this->_new_datetime_ticket_table, $cols_n_values, $datatypes);
399
-        if (! $success) {
400
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'datetime id'=>$new_datetime_id), $this->_new_datetime_ticket_table, $cols_n_values, $datatypes));
401
-            return 0;
402
-        }
403
-        $new_id = $wpdb->insert_id;
404
-        return $new_id;
405
-    }
380
+	/**
381
+	 * Adds a join between a ticket and a datetime
382
+	 * @global type $wpdb
383
+	 * @param type $new_ticket_id
384
+	 * @param type $new_price_id
385
+	 * @return int
386
+	 */
387
+	private function _insert_datetime_ticket_relation($new_datetime_id, $new_ticket_id)
388
+	{
389
+		global $wpdb;
390
+		$cols_n_values = array(
391
+			'TKT_ID'=>$new_ticket_id,
392
+			'DTT_ID'=>$new_datetime_id,
393
+		);
394
+		$datatypes = array(
395
+			'%d',// TKT_ID
396
+			'%d',// DTT_ID
397
+		);
398
+		$success = $wpdb->insert($this->_new_datetime_ticket_table, $cols_n_values, $datatypes);
399
+		if (! $success) {
400
+			$this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'datetime id'=>$new_datetime_id), $this->_new_datetime_ticket_table, $cols_n_values, $datatypes));
401
+			return 0;
402
+		}
403
+		$new_id = $wpdb->insert_id;
404
+		return $new_id;
405
+	}
406 406
 
407
-    /**
408
-     * Simply gets the 3.1 event row data
409
-     * @global type $wpdb
410
-     * @param type $event_id
411
-     * @return array
412
-     */
413
-    private function _get_event_row($event_id)
414
-    {
415
-        global $wpdb;
416
-        $old_event_table = $wpdb->prefix."events_detail";
417
-        return $wpdb->get_row($wpdb->prepare("SELECT * FROM $old_event_table WHERE id=%d", $event_id), ARRAY_A);
418
-    }
419
-    /**
420
-     * Gets a higher ticket count than last time it was called (and is persisted between HTTP requests).
421
-     * Yes we COULD run a query joining events->datetimes->ticket_datetimes->tickets, but this should work fine too
422
-     * @return int
423
-     */
424
-    private function _get_ticket_count()
425
-    {
426
-        return $this->_ticket_count++;
427
-    }
407
+	/**
408
+	 * Simply gets the 3.1 event row data
409
+	 * @global type $wpdb
410
+	 * @param type $event_id
411
+	 * @return array
412
+	 */
413
+	private function _get_event_row($event_id)
414
+	{
415
+		global $wpdb;
416
+		$old_event_table = $wpdb->prefix."events_detail";
417
+		return $wpdb->get_row($wpdb->prepare("SELECT * FROM $old_event_table WHERE id=%d", $event_id), ARRAY_A);
418
+	}
419
+	/**
420
+	 * Gets a higher ticket count than last time it was called (and is persisted between HTTP requests).
421
+	 * Yes we COULD run a query joining events->datetimes->ticket_datetimes->tickets, but this should work fine too
422
+	 * @return int
423
+	 */
424
+	private function _get_ticket_count()
425
+	{
426
+		return $this->_ticket_count++;
427
+	}
428 428
 
429
-    /**
430
-     * Using the 3.1 event id, gets the 4.1 datetimes for it
431
-     * @param int $old_event_id
432
-     * @return array where values are datetime ids
433
-     */
434
-    private function _get_datetime_ids_for_old_event_id($old_event_id)
435
-    {
436
-        global $wpdb;
437
-        $new_cpt_id = $this->get_migration_script()->get_mapping_new_pk($wpdb->prefix."events_detail", $old_event_id, $wpdb->posts);
438
-        $datetime_ids = $wpdb->get_col($wpdb->prepare("SELECT DTT_ID FROM {$wpdb->prefix}esp_datetime WHERE EVT_ID=%d", $new_cpt_id));
439
-        return $datetime_ids;
440
-    }
429
+	/**
430
+	 * Using the 3.1 event id, gets the 4.1 datetimes for it
431
+	 * @param int $old_event_id
432
+	 * @return array where values are datetime ids
433
+	 */
434
+	private function _get_datetime_ids_for_old_event_id($old_event_id)
435
+	{
436
+		global $wpdb;
437
+		$new_cpt_id = $this->get_migration_script()->get_mapping_new_pk($wpdb->prefix."events_detail", $old_event_id, $wpdb->posts);
438
+		$datetime_ids = $wpdb->get_col($wpdb->prepare("SELECT DTT_ID FROM {$wpdb->prefix}esp_datetime WHERE EVT_ID=%d", $new_cpt_id));
439
+		return $datetime_ids;
440
+	}
441 441
 }
442 442
 // @todo: tell users that in 3.1 the limit was on registration PER event,in 4.1 it's limit PER TICKET... SO, if they sell 2 different types of tickets
443 443
 //
Please login to merge, or discard this patch.
Spacing   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
         $this->_old_table = $wpdb->prefix."events_prices";
109 109
         $this->select_expression = 'p.*, e.event_status';
110 110
         $this->_extra_where_sql = ' AS p 
111
-            INNER JOIN ' . $wpdb->prefix . 'events_detail AS e ON p.event_id=e.id
111
+            INNER JOIN ' . $wpdb->prefix.'events_detail AS e ON p.event_id=e.id
112 112
             WHERE e.event_status!="D"';
113 113
         $this->_new_price_table = $wpdb->prefix."esp_price";
114 114
         $this->_new_ticket_table = $wpdb->prefix."esp_ticket";
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
         // create the surcharge if there is any
131 131
         if (floatval($old_row['surcharge']) >= 0.01) {
132 132
             $surcharge_price_id = $this->_insert_new_surcharge_price($old_row);
133
-            $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id,$surcharge_price_id));
133
+            $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id, $surcharge_price_id));
134 134
         } else {
135 135
             $surcharge_price_id = 0;
136 136
             $this->get_migration_script()->set_mapping($this->_old_table, $old_row['id'], $this->_new_price_table, array($new_price_id));
@@ -182,17 +182,17 @@  discard block
 block discarded – undo
182 182
 
183 183
         );
184 184
         $datatypes = array(
185
-            '%d',// PRT_ID
186
-            '%f',// PRT_amount
187
-            '%s',// PRC_name
188
-            '%d',// PRC_is_default
189
-            '%d',// PRC_overrides
190
-            '%d',// PRC_order
191
-            '%d',// PRC_deleted
192
-            '%d',// PRC_parent
185
+            '%d', // PRT_ID
186
+            '%f', // PRT_amount
187
+            '%s', // PRC_name
188
+            '%d', // PRC_is_default
189
+            '%d', // PRC_overrides
190
+            '%d', // PRC_order
191
+            '%d', // PRC_deleted
192
+            '%d', // PRC_parent
193 193
         );
194 194
         $success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
195
-        if (! $success) {
195
+        if ( ! $success) {
196 196
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
197 197
             return 0;
198 198
         }
@@ -264,17 +264,17 @@  discard block
 block discarded – undo
264 264
 
265 265
         );
266 266
         $datatypes = array(
267
-            '%d',// PRT_ID
268
-            '%f',// PRT_amount
269
-            '%s',// PRC_name
270
-            '%d',// PRC_is_default
271
-            '%d',// PRC_overrides
272
-            '%d',// PRC_order
273
-            '%d',// PRC_deleted
274
-            '%d',// PRC_parent
267
+            '%d', // PRT_ID
268
+            '%f', // PRT_amount
269
+            '%s', // PRC_name
270
+            '%d', // PRC_is_default
271
+            '%d', // PRC_overrides
272
+            '%d', // PRC_order
273
+            '%d', // PRC_deleted
274
+            '%d', // PRC_parent
275 275
         );
276 276
         $success = $wpdb->insert($this->_new_price_table, $cols_n_values, $datatypes);
277
-        if (! $success) {
277
+        if ( ! $success) {
278 278
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price, $this->_new_price_table, $cols_n_values, $datatypes));
279 279
             return 0;
280 280
         }
@@ -296,7 +296,7 @@  discard block
 block discarded – undo
296 296
         if ($old_price_row['surcharge_type'] == 'flat_rate') {
297 297
             $final_ticket_price = floatval($old_price_row['event_cost']) + floatval($old_price_row['surcharge']);
298 298
         } else {// percent surcharge
299
-            $final_ticket_price = floatval($old_price_row['event_cost']) * (1 + floatval($old_price_row['surcharge'])/100);
299
+            $final_ticket_price = floatval($old_price_row['event_cost']) * (1 + floatval($old_price_row['surcharge']) / 100);
300 300
         }
301 301
         $start_date = $event_row['registration_start']." ".$this->get_migration_script()->convertTimeFromAMPM($event_row['registration_startT']);
302 302
         $start_date_utc = $this->get_migration_script()->convert_date_string_to_utc($this, $old_price_row, $start_date, $event_row['timezone_string']);
@@ -311,38 +311,38 @@  discard block
 block discarded – undo
311 311
             'TKT_min'=>0,
312 312
             'TKT_max'=>-1,
313 313
             'TKT_price'=>$final_ticket_price,
314
-            'TKT_sold'=> 0,// note: this will get calculated as we actually add registrations during the migration
314
+            'TKT_sold'=> 0, // note: this will get calculated as we actually add registrations during the migration
315 315
             'TKT_qty'=> -1,
316 316
             'TKT_uses'=> 1,
317
-            'TKT_taxable'=>false,// so by default, old prices are NOT taxable. This way they don't suddenly have a sudden spike in prices
317
+            'TKT_taxable'=>false, // so by default, old prices are NOT taxable. This way they don't suddenly have a sudden spike in prices
318 318
             'TKT_is_default'=>false,
319 319
             'TKT_order'=>$this->_get_ticket_count(),
320
-            'TKT_row'=>0,// doesn't matter because UI reset this on first save anyways
320
+            'TKT_row'=>0, // doesn't matter because UI reset this on first save anyways
321 321
             'TKT_deleted'=>false,
322 322
             'TKT_parent'=>0
323 323
 
324 324
         );
325 325
         $datatypes = array(
326
-            '%d',// TTM_ID
327
-            '%s',// TKT_name
328
-            '%s',// TKT_description
329
-            '%s',// TKT_start_date
330
-            '%s',// TKT_end_date
331
-            '%d',// TKT_min
332
-            '%d',// TKT_max
333
-            '%f',// TKT_price
334
-            '%d',// TKT_sold
335
-            '%d',// TKT_qty
336
-            '%d',// TKT_uses
337
-            '%d',// TKT_taxable
338
-            '%d',// TKT_is_default
339
-            '%d',// TKT_order
340
-            '%d',// TKT_row
341
-            '%d',// TKT_deleted
342
-            '%d',// TKT_parent
326
+            '%d', // TTM_ID
327
+            '%s', // TKT_name
328
+            '%s', // TKT_description
329
+            '%s', // TKT_start_date
330
+            '%s', // TKT_end_date
331
+            '%d', // TKT_min
332
+            '%d', // TKT_max
333
+            '%f', // TKT_price
334
+            '%d', // TKT_sold
335
+            '%d', // TKT_qty
336
+            '%d', // TKT_uses
337
+            '%d', // TKT_taxable
338
+            '%d', // TKT_is_default
339
+            '%d', // TKT_order
340
+            '%d', // TKT_row
341
+            '%d', // TKT_deleted
342
+            '%d', // TKT_parent
343 343
         );
344 344
         $success = $wpdb->insert($this->_new_ticket_table, $cols_n_values, $datatypes);
345
-        if (! $success) {
345
+        if ( ! $success) {
346 346
             $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, $old_price_row, $this->_new_ticket_table, $cols_n_values, $datatypes));
347 347
             return 0;
348 348
         }
@@ -365,12 +365,12 @@  discard block
 block discarded – undo
365 365
             'PRC_ID'=>$new_price_id,
366 366
         );
367 367
         $datatypes = array(
368
-            '%d',// TKT_ID
369
-            '%d',// PRC_ID
368
+            '%d', // TKT_ID
369
+            '%d', // PRC_ID
370 370
         );
371 371
         $success = $wpdb->insert($this->_new_ticket_price_table, $cols_n_values, $datatypes);
372
-        if (! $success) {
373
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'price id'=>$new_price_id), $this->_new_ticket_price_table, $cols_n_values, $datatypes));
372
+        if ( ! $success) {
373
+            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id, 'price id'=>$new_price_id), $this->_new_ticket_price_table, $cols_n_values, $datatypes));
374 374
             return 0;
375 375
         }
376 376
         $new_id = $wpdb->insert_id;
@@ -392,12 +392,12 @@  discard block
 block discarded – undo
392 392
             'DTT_ID'=>$new_datetime_id,
393 393
         );
394 394
         $datatypes = array(
395
-            '%d',// TKT_ID
396
-            '%d',// DTT_ID
395
+            '%d', // TKT_ID
396
+            '%d', // DTT_ID
397 397
         );
398 398
         $success = $wpdb->insert($this->_new_datetime_ticket_table, $cols_n_values, $datatypes);
399
-        if (! $success) {
400
-            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id,'datetime id'=>$new_datetime_id), $this->_new_datetime_ticket_table, $cols_n_values, $datatypes));
399
+        if ( ! $success) {
400
+            $this->add_error($this->get_migration_script()->_create_error_message_for_db_insertion($this->_old_table, array('ticket id'=>$new_ticket_id, 'datetime id'=>$new_datetime_id), $this->_new_datetime_ticket_table, $cols_n_values, $datatypes));
401 401
             return 0;
402 402
         }
403 403
         $new_id = $wpdb->insert_id;
Please login to merge, or discard this patch.