Completed
Branch models-cleanup/model-relations (db5ca7)
by
unknown
13:03 queued 08:35
created
core/Factory.php 1 patch
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -16,54 +16,54 @@
 block discarded – undo
16 16
 class Factory
17 17
 {
18 18
 
19
-    /**
20
-     * @param string $class_name
21
-     * @param array  $arguments
22
-     * @return mixed|null
23
-     * @throws \EE_Error
24
-     */
25
-    public static function create($class_name, $arguments = array())
26
-    {
27
-        if (empty($class_name)) {
28
-            throw new \EE_Error(
29
-                __('You must provide a class name in order to instantiate it.', 'event_espresso')
30
-            );
31
-        }
32
-        // if ( ! class_exists( $class_name ) ) {
33
-        //     throw new \EE_Error(
34
-        //         sprintf(
35
-        //             __('The "%1$s" class was not found. Please include the correct file or set an autoloader for it',
36
-        //                 'event_espresso'),
37
-        //             $class_name
38
-        //         )
39
-        //     );
40
-        // }
41
-        $object = null;
42
-        switch ($class_name) {
43
-            case 'EE_Request':
44
-                $object = new \EE_Request($_GET, $_POST, $_COOKIE);
45
-                break;
46
-            case 'Iframe':
47
-                $title = isset($arguments['title']) ? $arguments['title'] : null;
48
-                $content = isset($arguments['content']) ? $arguments['content'] : null;
49
-                $object = new Iframe($title, $content);
50
-                break;
51
-            default:
52
-                $object = new $class_name($arguments);
53
-        }
19
+	/**
20
+	 * @param string $class_name
21
+	 * @param array  $arguments
22
+	 * @return mixed|null
23
+	 * @throws \EE_Error
24
+	 */
25
+	public static function create($class_name, $arguments = array())
26
+	{
27
+		if (empty($class_name)) {
28
+			throw new \EE_Error(
29
+				__('You must provide a class name in order to instantiate it.', 'event_espresso')
30
+			);
31
+		}
32
+		// if ( ! class_exists( $class_name ) ) {
33
+		//     throw new \EE_Error(
34
+		//         sprintf(
35
+		//             __('The "%1$s" class was not found. Please include the correct file or set an autoloader for it',
36
+		//                 'event_espresso'),
37
+		//             $class_name
38
+		//         )
39
+		//     );
40
+		// }
41
+		$object = null;
42
+		switch ($class_name) {
43
+			case 'EE_Request':
44
+				$object = new \EE_Request($_GET, $_POST, $_COOKIE);
45
+				break;
46
+			case 'Iframe':
47
+				$title = isset($arguments['title']) ? $arguments['title'] : null;
48
+				$content = isset($arguments['content']) ? $arguments['content'] : null;
49
+				$object = new Iframe($title, $content);
50
+				break;
51
+			default:
52
+				$object = new $class_name($arguments);
53
+		}
54 54
 
55
-        // if ( ! $object instanceof $class_name ) {
56
-        //     throw new \EE_Error(
57
-        //         sprintf(
58
-        //             __(
59
-        //                 'An error occurred during class instantiation and the requested object could not be created. The result was: %1$s %2$s',
60
-        //                 'event_espresso'
61
-        //             ),
62
-        //             '<br />',
63
-        //             var_export($object, true)
64
-        //         )
65
-        //     );
66
-        // }
67
-        return $object;
68
-    }
55
+		// if ( ! $object instanceof $class_name ) {
56
+		//     throw new \EE_Error(
57
+		//         sprintf(
58
+		//             __(
59
+		//                 'An error occurred during class instantiation and the requested object could not be created. The result was: %1$s %2$s',
60
+		//                 'event_espresso'
61
+		//             ),
62
+		//             '<br />',
63
+		//             var_export($object, true)
64
+		//         )
65
+		//     );
66
+		// }
67
+		return $object;
68
+	}
69 69
 }
Please login to merge, or discard this patch.
core/admin/PostShortcodeTracking.php 1 patch
Indentation   +134 added lines, -134 removed lines patch added patch discarded remove patch
@@ -12,138 +12,138 @@
 block discarded – undo
12 12
 class PostShortcodeTracking
13 13
 {
14 14
 
15
-    /**
16
-     * @deprecated 4.9.26
17
-     * @return    void
18
-     */
19
-    public static function set_hooks_admin()
20
-    {
21
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
22
-    }
23
-
24
-
25
-    /**
26
-     * @deprecated 4.9.26
27
-     * @param $post_ID
28
-     * @param $post
29
-     * @return void
30
-     */
31
-    public static function parse_post_content_on_save($post_ID, $post)
32
-    {
33
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
34
-    }
35
-
36
-
37
-    /**
38
-     * @deprecated 4.9.26
39
-     * @param $page_for_posts
40
-     * @return void
41
-     */
42
-    protected static function set_post_shortcodes_for_posts_page($page_for_posts)
43
-    {
44
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
45
-    }
46
-
47
-
48
-    /**
49
-     * @deprecated 4.9.26
50
-     * @param $page_for_posts
51
-     * @param $EES_Shortcode
52
-     * @param $post_ID
53
-     * @return void
54
-     */
55
-    protected static function set_post_shortcode_for_posts_page($page_for_posts, $EES_Shortcode, $post_ID)
56
-    {
57
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
58
-    }
59
-
60
-
61
-    /**
62
-     * @deprecated 4.9.26
63
-     * @param $ID
64
-     * @return void
65
-     */
66
-    public static function unset_post_shortcodes_on_delete($ID)
67
-    {
68
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
69
-    }
70
-
71
-
72
-    /**
73
-     * @deprecated 4.9.26
74
-     * @param      $ID
75
-     * @param      $shortcode_class
76
-     * @param      $shortcode_posts
77
-     * @param      $page_for_posts
78
-     * @param bool $update_post_shortcodes
79
-     * @return void
80
-     */
81
-    protected static function unset_posts_page_shortcode_for_post(
82
-        $ID,
83
-        $shortcode_class,
84
-        $shortcode_posts,
85
-        $page_for_posts,
86
-        $update_post_shortcodes = false
87
-    ) {
88
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
89
-    }
90
-
91
-
92
-    /**
93
-     * @deprecated 4.9.26
94
-     * @param string $page_for_posts
95
-     * @return void
96
-     */
97
-    public static function update_post_shortcodes($page_for_posts = '')
98
-    {
99
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
100
-    }
101
-
102
-
103
-    /**
104
-     * @deprecated 4.9.26
105
-     * @param $option
106
-     * @param $value
107
-     * @return void
108
-     */
109
-    public static function reset_page_for_posts_on_initial_set($option, $value)
110
-    {
111
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
112
-    }
113
-
114
-
115
-    /**
116
-     * @deprecated 4.9.26
117
-     * @param        $option
118
-     * @param string $old_value
119
-     * @param string $value
120
-     * @return void
121
-     */
122
-    public static function reset_page_for_posts_on_change($option, $old_value = '', $value = '')
123
-    {
124
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
125
-    }
126
-
127
-
128
-    /**
129
-     * @deprecated 4.9.26
130
-     * @param $option
131
-     * @return void
132
-     */
133
-    public static function reset_page_for_posts_on_delete($option)
134
-    {
135
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
136
-    }
137
-
138
-
139
-    /**
140
-     * @deprecated 4.9.26
141
-     * @param      $shortcodes
142
-     * @param bool $index_results
143
-     * @return void
144
-     */
145
-    public static function get_post_ids_for_shortcode($shortcodes, $index_results = true)
146
-    {
147
-        \EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
148
-    }
15
+	/**
16
+	 * @deprecated 4.9.26
17
+	 * @return    void
18
+	 */
19
+	public static function set_hooks_admin()
20
+	{
21
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
22
+	}
23
+
24
+
25
+	/**
26
+	 * @deprecated 4.9.26
27
+	 * @param $post_ID
28
+	 * @param $post
29
+	 * @return void
30
+	 */
31
+	public static function parse_post_content_on_save($post_ID, $post)
32
+	{
33
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
34
+	}
35
+
36
+
37
+	/**
38
+	 * @deprecated 4.9.26
39
+	 * @param $page_for_posts
40
+	 * @return void
41
+	 */
42
+	protected static function set_post_shortcodes_for_posts_page($page_for_posts)
43
+	{
44
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
45
+	}
46
+
47
+
48
+	/**
49
+	 * @deprecated 4.9.26
50
+	 * @param $page_for_posts
51
+	 * @param $EES_Shortcode
52
+	 * @param $post_ID
53
+	 * @return void
54
+	 */
55
+	protected static function set_post_shortcode_for_posts_page($page_for_posts, $EES_Shortcode, $post_ID)
56
+	{
57
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
58
+	}
59
+
60
+
61
+	/**
62
+	 * @deprecated 4.9.26
63
+	 * @param $ID
64
+	 * @return void
65
+	 */
66
+	public static function unset_post_shortcodes_on_delete($ID)
67
+	{
68
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
69
+	}
70
+
71
+
72
+	/**
73
+	 * @deprecated 4.9.26
74
+	 * @param      $ID
75
+	 * @param      $shortcode_class
76
+	 * @param      $shortcode_posts
77
+	 * @param      $page_for_posts
78
+	 * @param bool $update_post_shortcodes
79
+	 * @return void
80
+	 */
81
+	protected static function unset_posts_page_shortcode_for_post(
82
+		$ID,
83
+		$shortcode_class,
84
+		$shortcode_posts,
85
+		$page_for_posts,
86
+		$update_post_shortcodes = false
87
+	) {
88
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
89
+	}
90
+
91
+
92
+	/**
93
+	 * @deprecated 4.9.26
94
+	 * @param string $page_for_posts
95
+	 * @return void
96
+	 */
97
+	public static function update_post_shortcodes($page_for_posts = '')
98
+	{
99
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
100
+	}
101
+
102
+
103
+	/**
104
+	 * @deprecated 4.9.26
105
+	 * @param $option
106
+	 * @param $value
107
+	 * @return void
108
+	 */
109
+	public static function reset_page_for_posts_on_initial_set($option, $value)
110
+	{
111
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
112
+	}
113
+
114
+
115
+	/**
116
+	 * @deprecated 4.9.26
117
+	 * @param        $option
118
+	 * @param string $old_value
119
+	 * @param string $value
120
+	 * @return void
121
+	 */
122
+	public static function reset_page_for_posts_on_change($option, $old_value = '', $value = '')
123
+	{
124
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
125
+	}
126
+
127
+
128
+	/**
129
+	 * @deprecated 4.9.26
130
+	 * @param $option
131
+	 * @return void
132
+	 */
133
+	public static function reset_page_for_posts_on_delete($option)
134
+	{
135
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
136
+	}
137
+
138
+
139
+	/**
140
+	 * @deprecated 4.9.26
141
+	 * @param      $shortcodes
142
+	 * @param bool $index_results
143
+	 * @return void
144
+	 */
145
+	public static function get_post_ids_for_shortcode($shortcodes, $index_results = true)
146
+	{
147
+		\EE_Error::doing_it_wrong(__METHOD__, __('Usage is deprecated.', 'event_espresso'), '4.9.26');
148
+	}
149 149
 }
Please login to merge, or discard this patch.
core/domain/entities/Context.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -14,62 +14,62 @@
 block discarded – undo
14 14
 class Context implements ContextInterface
15 15
 {
16 16
 
17
-    /**
18
-     * @var string $slug
19
-     */
20
-    private $slug;
17
+	/**
18
+	 * @var string $slug
19
+	 */
20
+	private $slug;
21 21
 
22
-    /**
23
-     * @var string $description
24
-     */
25
-    private $description;
22
+	/**
23
+	 * @var string $description
24
+	 */
25
+	private $description;
26 26
 
27 27
 
28
-    /**
29
-     * Context constructor.
30
-     *
31
-     * @param string $slug
32
-     * @param string $description
33
-     */
34
-    public function __construct($slug, $description)
35
-    {
36
-        $this->setSlug($slug);
37
-        $this->setDescription($description);
38
-    }
28
+	/**
29
+	 * Context constructor.
30
+	 *
31
+	 * @param string $slug
32
+	 * @param string $description
33
+	 */
34
+	public function __construct($slug, $description)
35
+	{
36
+		$this->setSlug($slug);
37
+		$this->setDescription($description);
38
+	}
39 39
 
40 40
 
41
-    /**
42
-     * @return string
43
-     */
44
-    public function slug()
45
-    {
46
-        return $this->slug;
47
-    }
41
+	/**
42
+	 * @return string
43
+	 */
44
+	public function slug()
45
+	{
46
+		return $this->slug;
47
+	}
48 48
 
49 49
 
50
-    /**
51
-     * @param string $slug
52
-     */
53
-    private function setSlug($slug)
54
-    {
55
-        $this->slug = sanitize_key($slug);
56
-    }
50
+	/**
51
+	 * @param string $slug
52
+	 */
53
+	private function setSlug($slug)
54
+	{
55
+		$this->slug = sanitize_key($slug);
56
+	}
57 57
 
58 58
 
59
-    /**
60
-     * @return string
61
-     */
62
-    public function description()
63
-    {
64
-        return $this->description;
65
-    }
59
+	/**
60
+	 * @return string
61
+	 */
62
+	public function description()
63
+	{
64
+		return $this->description;
65
+	}
66 66
 
67 67
 
68
-    /**
69
-     * @param string $description
70
-     */
71
-    private function setDescription($description)
72
-    {
73
-        $this->description = sanitize_text_field($description);
74
-    }
68
+	/**
69
+	 * @param string $description
70
+	 */
71
+	private function setDescription($description)
72
+	{
73
+		$this->description = sanitize_text_field($description);
74
+	}
75 75
 }
Please login to merge, or discard this patch.
modules/ticket_selector/DatetimeSelector.php 2 patches
Indentation   +167 added lines, -167 removed lines patch added patch discarded remove patch
@@ -12,171 +12,171 @@
 block discarded – undo
12 12
 class DatetimeSelector
13 13
 {
14 14
 
15
-    /**
16
-     * @var \EE_Event $event
17
-     */
18
-    protected $event;
19
-
20
-    /**
21
-     * @var \EE_Ticket[] $tickets
22
-     */
23
-    protected $tickets;
24
-
25
-    /**
26
-     * @var \EE_Datetime[] $datetimes
27
-     */
28
-    protected $datetimes;
29
-
30
-    /**
31
-     * @var \EE_Datetime[] $unique_dates
32
-     */
33
-    protected $unique_dates;
34
-
35
-    /**
36
-     * @var \EE_Ticket_Selector_Config $template_settings
37
-     */
38
-    protected $template_settings;
39
-
40
-    /**
41
-     * @var boolean $active
42
-     */
43
-    protected $active = false;
44
-
45
-
46
-    /**
47
-     * DatetimeSelector constructor.
48
-     *
49
-     * @param \EE_Event                  $event
50
-     * @param \EE_Ticket[]               $tickets
51
-     * @param \EE_Ticket_Selector_Config $template_settings
52
-     * @param string                     $date_format
53
-     * @param string                     $time_format
54
-     * @throws \EE_Error
55
-     */
56
-    public function __construct(
57
-        \EE_Event $event,
58
-        array $tickets,
59
-        \EE_Ticket_Selector_Config $template_settings,
60
-        $date_format = 'Y-m-d',
61
-        $time_format = 'g:i a'
62
-    ) {
63
-        $this->event = $event;
64
-        $this->tickets = $tickets;
65
-        $this->template_settings = $template_settings;
66
-        $this->datetimes = $this->getAllDatetimesForAllTicket($tickets);
67
-        $this->unique_dates = $this->getUniqueDatetimeOptions($date_format, $time_format);
68
-        $this->active = $this->template_settings->showDatetimeSelector($this->unique_dates);
69
-    }
70
-
71
-
72
-    /**
73
-     * @param \EE_Ticket[] $tickets
74
-     * @return array
75
-     * @throws \EE_Error
76
-     */
77
-    protected function getAllDatetimesForAllTicket($tickets = array())
78
-    {
79
-        $datetimes = array();
80
-        foreach ($tickets as $ticket) {
81
-            $datetimes = $this->getTicketDatetimes($ticket, $datetimes);
82
-        }
83
-        return $datetimes;
84
-    }
85
-
86
-
87
-    /**
88
-     * @param \EE_Ticket      $ticket
89
-     * @param  \EE_Datetime[] $datetimes
90
-     * @return \EE_Datetime[]
91
-     * @throws \EE_Error
92
-     */
93
-    protected function getTicketDatetimes(\EE_Ticket $ticket, $datetimes = array())
94
-    {
95
-        $ticket_datetimes = $ticket->datetimes(
96
-            array(
97
-                'order_by'                 => array(
98
-                    'DTT_order'     => 'ASC',
99
-                    'DTT_EVT_start' => 'ASC',
100
-                ),
101
-                'default_where_conditions' => 'none',
102
-            )
103
-        );
104
-        foreach ($ticket_datetimes as $ticket_datetime) {
105
-            if (! $ticket_datetime instanceof \EE_Datetime) {
106
-                continue;
107
-            }
108
-            $datetimes[ $ticket_datetime->ID() ] = $ticket_datetime;
109
-        }
110
-        return $datetimes;
111
-    }
112
-
113
-
114
-    /**
115
-     * @param \EE_Ticket $ticket
116
-     * @return string
117
-     * @throws \EE_Error
118
-     */
119
-    public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120
-    {
121
-        if (! $this->active) {
122
-            return '';
123
-        }
124
-        $ticket_datetimes = $this->getTicketDatetimes($ticket);
125
-        $classes = '';
126
-        foreach ($this->datetimes as $datetime) {
127
-            if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128
-                continue;
129
-            }
130
-            $classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131
-        }
132
-        return $classes;
133
-    }
134
-
135
-
136
-    /**
137
-     * @param string $date_format
138
-     * @param string $time_format
139
-     * @return array
140
-     * @throws \EE_Error
141
-     */
142
-    public function getUniqueDatetimeOptions($date_format = 'Y-m-d', $time_format = 'g:i a')
143
-    {
144
-        $datetime_options = array();
145
-        foreach ($this->datetimes as $datetime) {
146
-            if (! $datetime instanceof \EE_Datetime) {
147
-                continue;
148
-            }
149
-            $datetime_options[ $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_') ] =
150
-                $datetime->date_and_time_range($date_format, $time_format, ' - ');
151
-        }
152
-        return $datetime_options;
153
-    }
154
-
155
-
156
-    /**
157
-     * @return string
158
-     * @throws \EE_Error
159
-     */
160
-    public function getDatetimeSelector()
161
-    {
162
-        if (! $this->active) {
163
-            return '';
164
-        }
165
-        $dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166
-            $this->unique_dates,
167
-            array(
168
-                'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
-                'html_name'             => 'datetime_selector_' . $this->event->ID(),
170
-                'html_class'            => 'datetime-selector',
171
-                'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172
-                                           . esc_html__('Filter by Date', 'event_espresso'),
173
-                'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
174
-            )
175
-        );
176
-        return \EEH_HTML::div(
177
-            $dropdown_selector->get_html_for_input(),
178
-            '',
179
-            'datetime_selector-dv'
180
-        );
181
-    }
15
+	/**
16
+	 * @var \EE_Event $event
17
+	 */
18
+	protected $event;
19
+
20
+	/**
21
+	 * @var \EE_Ticket[] $tickets
22
+	 */
23
+	protected $tickets;
24
+
25
+	/**
26
+	 * @var \EE_Datetime[] $datetimes
27
+	 */
28
+	protected $datetimes;
29
+
30
+	/**
31
+	 * @var \EE_Datetime[] $unique_dates
32
+	 */
33
+	protected $unique_dates;
34
+
35
+	/**
36
+	 * @var \EE_Ticket_Selector_Config $template_settings
37
+	 */
38
+	protected $template_settings;
39
+
40
+	/**
41
+	 * @var boolean $active
42
+	 */
43
+	protected $active = false;
44
+
45
+
46
+	/**
47
+	 * DatetimeSelector constructor.
48
+	 *
49
+	 * @param \EE_Event                  $event
50
+	 * @param \EE_Ticket[]               $tickets
51
+	 * @param \EE_Ticket_Selector_Config $template_settings
52
+	 * @param string                     $date_format
53
+	 * @param string                     $time_format
54
+	 * @throws \EE_Error
55
+	 */
56
+	public function __construct(
57
+		\EE_Event $event,
58
+		array $tickets,
59
+		\EE_Ticket_Selector_Config $template_settings,
60
+		$date_format = 'Y-m-d',
61
+		$time_format = 'g:i a'
62
+	) {
63
+		$this->event = $event;
64
+		$this->tickets = $tickets;
65
+		$this->template_settings = $template_settings;
66
+		$this->datetimes = $this->getAllDatetimesForAllTicket($tickets);
67
+		$this->unique_dates = $this->getUniqueDatetimeOptions($date_format, $time_format);
68
+		$this->active = $this->template_settings->showDatetimeSelector($this->unique_dates);
69
+	}
70
+
71
+
72
+	/**
73
+	 * @param \EE_Ticket[] $tickets
74
+	 * @return array
75
+	 * @throws \EE_Error
76
+	 */
77
+	protected function getAllDatetimesForAllTicket($tickets = array())
78
+	{
79
+		$datetimes = array();
80
+		foreach ($tickets as $ticket) {
81
+			$datetimes = $this->getTicketDatetimes($ticket, $datetimes);
82
+		}
83
+		return $datetimes;
84
+	}
85
+
86
+
87
+	/**
88
+	 * @param \EE_Ticket      $ticket
89
+	 * @param  \EE_Datetime[] $datetimes
90
+	 * @return \EE_Datetime[]
91
+	 * @throws \EE_Error
92
+	 */
93
+	protected function getTicketDatetimes(\EE_Ticket $ticket, $datetimes = array())
94
+	{
95
+		$ticket_datetimes = $ticket->datetimes(
96
+			array(
97
+				'order_by'                 => array(
98
+					'DTT_order'     => 'ASC',
99
+					'DTT_EVT_start' => 'ASC',
100
+				),
101
+				'default_where_conditions' => 'none',
102
+			)
103
+		);
104
+		foreach ($ticket_datetimes as $ticket_datetime) {
105
+			if (! $ticket_datetime instanceof \EE_Datetime) {
106
+				continue;
107
+			}
108
+			$datetimes[ $ticket_datetime->ID() ] = $ticket_datetime;
109
+		}
110
+		return $datetimes;
111
+	}
112
+
113
+
114
+	/**
115
+	 * @param \EE_Ticket $ticket
116
+	 * @return string
117
+	 * @throws \EE_Error
118
+	 */
119
+	public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120
+	{
121
+		if (! $this->active) {
122
+			return '';
123
+		}
124
+		$ticket_datetimes = $this->getTicketDatetimes($ticket);
125
+		$classes = '';
126
+		foreach ($this->datetimes as $datetime) {
127
+			if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128
+				continue;
129
+			}
130
+			$classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131
+		}
132
+		return $classes;
133
+	}
134
+
135
+
136
+	/**
137
+	 * @param string $date_format
138
+	 * @param string $time_format
139
+	 * @return array
140
+	 * @throws \EE_Error
141
+	 */
142
+	public function getUniqueDatetimeOptions($date_format = 'Y-m-d', $time_format = 'g:i a')
143
+	{
144
+		$datetime_options = array();
145
+		foreach ($this->datetimes as $datetime) {
146
+			if (! $datetime instanceof \EE_Datetime) {
147
+				continue;
148
+			}
149
+			$datetime_options[ $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_') ] =
150
+				$datetime->date_and_time_range($date_format, $time_format, ' - ');
151
+		}
152
+		return $datetime_options;
153
+	}
154
+
155
+
156
+	/**
157
+	 * @return string
158
+	 * @throws \EE_Error
159
+	 */
160
+	public function getDatetimeSelector()
161
+	{
162
+		if (! $this->active) {
163
+			return '';
164
+		}
165
+		$dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166
+			$this->unique_dates,
167
+			array(
168
+				'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
+				'html_name'             => 'datetime_selector_' . $this->event->ID(),
170
+				'html_class'            => 'datetime-selector',
171
+				'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172
+										   . esc_html__('Filter by Date', 'event_espresso'),
173
+				'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
174
+			)
175
+		);
176
+		return \EEH_HTML::div(
177
+			$dropdown_selector->get_html_for_input(),
178
+			'',
179
+			'datetime_selector-dv'
180
+		);
181
+	}
182 182
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -102,10 +102,10 @@  discard block
 block discarded – undo
102 102
             )
103 103
         );
104 104
         foreach ($ticket_datetimes as $ticket_datetime) {
105
-            if (! $ticket_datetime instanceof \EE_Datetime) {
105
+            if ( ! $ticket_datetime instanceof \EE_Datetime) {
106 106
                 continue;
107 107
             }
108
-            $datetimes[ $ticket_datetime->ID() ] = $ticket_datetime;
108
+            $datetimes[$ticket_datetime->ID()] = $ticket_datetime;
109 109
         }
110 110
         return $datetimes;
111 111
     }
@@ -118,16 +118,16 @@  discard block
 block discarded – undo
118 118
      */
119 119
     public function getTicketDatetimeClasses(\EE_Ticket $ticket)
120 120
     {
121
-        if (! $this->active) {
121
+        if ( ! $this->active) {
122 122
             return '';
123 123
         }
124 124
         $ticket_datetimes = $this->getTicketDatetimes($ticket);
125 125
         $classes = '';
126 126
         foreach ($this->datetimes as $datetime) {
127
-            if (! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
127
+            if ( ! $datetime instanceof \EE_Datetime || ! in_array($datetime, $ticket_datetimes, true)) {
128 128
                 continue;
129 129
             }
130
-            $classes .= ' ee-ticket-datetimes-' . $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
130
+            $classes .= ' ee-ticket-datetimes-'.$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_');
131 131
         }
132 132
         return $classes;
133 133
     }
@@ -143,10 +143,10 @@  discard block
 block discarded – undo
143 143
     {
144 144
         $datetime_options = array();
145 145
         foreach ($this->datetimes as $datetime) {
146
-            if (! $datetime instanceof \EE_Datetime) {
146
+            if ( ! $datetime instanceof \EE_Datetime) {
147 147
                 continue;
148 148
             }
149
-            $datetime_options[ $datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_') ] =
149
+            $datetime_options[$datetime->date_and_time_range('Y_m_d', 'H_i', '-', '_')] =
150 150
                 $datetime->date_and_time_range($date_format, $time_format, ' - ');
151 151
         }
152 152
         return $datetime_options;
@@ -159,18 +159,18 @@  discard block
 block discarded – undo
159 159
      */
160 160
     public function getDatetimeSelector()
161 161
     {
162
-        if (! $this->active) {
162
+        if ( ! $this->active) {
163 163
             return '';
164 164
         }
165 165
         $dropdown_selector = new \EE_Checkbox_Dropdown_Selector_Input(
166 166
             $this->unique_dates,
167 167
             array(
168
-                'html_id'               => 'datetime-selector-' . $this->event->ID(),
169
-                'html_name'             => 'datetime_selector_' . $this->event->ID(),
168
+                'html_id'               => 'datetime-selector-'.$this->event->ID(),
169
+                'html_name'             => 'datetime_selector_'.$this->event->ID(),
170 170
                 'html_class'            => 'datetime-selector',
171 171
                 'select_button_text'    => '<span class="dashicons dashicons-calendar-alt"></span> '
172 172
                                            . esc_html__('Filter by Date', 'event_espresso'),
173
-                'other_html_attributes' => ' data-tkt_slctr_evt="' . $this->event->ID() . '"',
173
+                'other_html_attributes' => ' data-tkt_slctr_evt="'.$this->event->ID().'"',
174 174
             )
175 175
         );
176 176
         return \EEH_HTML::div(
Please login to merge, or discard this patch.
caffeinated/modules/recaptcha/ReCaptcha/Response.php 2 patches
Indentation   +61 added lines, -61 removed lines patch added patch discarded remove patch
@@ -28,74 +28,74 @@
 block discarded – undo
28 28
  */
29 29
 class Response
30 30
 {
31
-    /**
32
-     * Succes or failure.
33
-     *
34
-     * @var boolean
35
-     */
36
-    private $success = false;
31
+	/**
32
+	 * Succes or failure.
33
+	 *
34
+	 * @var boolean
35
+	 */
36
+	private $success = false;
37 37
 
38
-    /**
39
-     * Error code strings.
40
-     *
41
-     * @var array
42
-     */
43
-    private $errorCodes = array();
38
+	/**
39
+	 * Error code strings.
40
+	 *
41
+	 * @var array
42
+	 */
43
+	private $errorCodes = array();
44 44
 
45
-    /**
46
-     * Build the response from the expected JSON returned by the service.
47
-     *
48
-     * @param string $json
49
-     * @return \ReCaptcha\Response
50
-     */
51
-    public static function fromJson($json)
52
-    {
53
-        $responseData = json_decode($json, true);
45
+	/**
46
+	 * Build the response from the expected JSON returned by the service.
47
+	 *
48
+	 * @param string $json
49
+	 * @return \ReCaptcha\Response
50
+	 */
51
+	public static function fromJson($json)
52
+	{
53
+		$responseData = json_decode($json, true);
54 54
 
55
-        if (! $responseData) {
56
-            return new Response(false, array('invalid-json'));
57
-        }
55
+		if (! $responseData) {
56
+			return new Response(false, array('invalid-json'));
57
+		}
58 58
 
59
-        if (isset($responseData['success']) && $responseData['success'] == true) {
60
-            return new Response(true);
61
-        }
59
+		if (isset($responseData['success']) && $responseData['success'] == true) {
60
+			return new Response(true);
61
+		}
62 62
 
63
-        if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) {
64
-            return new Response(false, $responseData['error-codes']);
65
-        }
63
+		if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) {
64
+			return new Response(false, $responseData['error-codes']);
65
+		}
66 66
 
67
-        return new Response(false);
68
-    }
67
+		return new Response(false);
68
+	}
69 69
 
70
-    /**
71
-     * Constructor.
72
-     *
73
-     * @param boolean $success
74
-     * @param array   $errorCodes
75
-     */
76
-    public function __construct($success, array $errorCodes = array())
77
-    {
78
-        $this->success = $success;
79
-        $this->errorCodes = $errorCodes;
80
-    }
70
+	/**
71
+	 * Constructor.
72
+	 *
73
+	 * @param boolean $success
74
+	 * @param array   $errorCodes
75
+	 */
76
+	public function __construct($success, array $errorCodes = array())
77
+	{
78
+		$this->success = $success;
79
+		$this->errorCodes = $errorCodes;
80
+	}
81 81
 
82
-    /**
83
-     * Is success?
84
-     *
85
-     * @return boolean
86
-     */
87
-    public function isSuccess()
88
-    {
89
-        return $this->success;
90
-    }
82
+	/**
83
+	 * Is success?
84
+	 *
85
+	 * @return boolean
86
+	 */
87
+	public function isSuccess()
88
+	{
89
+		return $this->success;
90
+	}
91 91
 
92
-    /**
93
-     * Get error codes.
94
-     *
95
-     * @return array
96
-     */
97
-    public function getErrorCodes()
98
-    {
99
-        return $this->errorCodes;
100
-    }
92
+	/**
93
+	 * Get error codes.
94
+	 *
95
+	 * @return array
96
+	 */
97
+	public function getErrorCodes()
98
+	{
99
+		return $this->errorCodes;
100
+	}
101 101
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -52,7 +52,7 @@
 block discarded – undo
52 52
     {
53 53
         $responseData = json_decode($json, true);
54 54
 
55
-        if (! $responseData) {
55
+        if ( ! $responseData) {
56 56
             return new Response(false, array('invalid-json'));
57 57
         }
58 58
 
Please login to merge, or discard this patch.
core/exceptions/ExceptionStackTraceDisplay.php 2 patches
Indentation   +285 added lines, -285 removed lines patch added patch discarded remove patch
@@ -19,52 +19,52 @@  discard block
 block discarded – undo
19 19
 {
20 20
 
21 21
 
22
-    /**
23
-     * @param Exception $exception
24
-     * @throws Exception
25
-     */
26
-    public function __construct(Exception $exception)
27
-    {
28
-        if (WP_DEBUG && ! defined('EE_TESTS_DIR')) {
29
-            $this->displayException($exception);
30
-        } else {
31
-            throw $exception;
32
-        }
33
-    }
22
+	/**
23
+	 * @param Exception $exception
24
+	 * @throws Exception
25
+	 */
26
+	public function __construct(Exception $exception)
27
+	{
28
+		if (WP_DEBUG && ! defined('EE_TESTS_DIR')) {
29
+			$this->displayException($exception);
30
+		} else {
31
+			throw $exception;
32
+		}
33
+	}
34 34
 
35 35
 
36
-    /**
37
-     * @access protected
38
-     * @param Exception $exception
39
-     * @throws ReflectionException
40
-     */
41
-    protected function displayException(Exception $exception)
42
-    {
43
-        $error_code = '';
44
-        $trace_details = '';
45
-        $time = time();
46
-        $trace = $exception->getTrace();
47
-        // get separate user and developer messages if they exist
48
-        $msg = explode('||', $exception->getMessage());
49
-        $user_msg = $msg[0];
50
-        $dev_msg = isset($msg[1]) ? $msg[1] : $msg[0];
51
-        $msg = WP_DEBUG ? $dev_msg : $user_msg;
52
-        // start gathering output
53
-        $output = $this->exceptionStyles();
54
-        $output .= '
36
+	/**
37
+	 * @access protected
38
+	 * @param Exception $exception
39
+	 * @throws ReflectionException
40
+	 */
41
+	protected function displayException(Exception $exception)
42
+	{
43
+		$error_code = '';
44
+		$trace_details = '';
45
+		$time = time();
46
+		$trace = $exception->getTrace();
47
+		// get separate user and developer messages if they exist
48
+		$msg = explode('||', $exception->getMessage());
49
+		$user_msg = $msg[0];
50
+		$dev_msg = isset($msg[1]) ? $msg[1] : $msg[0];
51
+		$msg = WP_DEBUG ? $dev_msg : $user_msg;
52
+		// start gathering output
53
+		$output = $this->exceptionStyles();
54
+		$output .= '
55 55
 <div id="ee-error-message" class="error">';
56
-        if (! WP_DEBUG) {
57
-            $output .= '
56
+		if (! WP_DEBUG) {
57
+			$output .= '
58 58
 	<p>';
59
-        }
60
-        // process trace info
61
-        if (empty($trace)) {
62
-            $trace_details .= __(
63
-                'Sorry, but no trace information was available for this exception.',
64
-                'event_espresso'
65
-            );
66
-        } else {
67
-            $trace_details .= '
59
+		}
60
+		// process trace info
61
+		if (empty($trace)) {
62
+			$trace_details .= __(
63
+				'Sorry, but no trace information was available for this exception.',
64
+				'event_espresso'
65
+			);
66
+		} else {
67
+			$trace_details .= '
68 68
 			<div id="ee-trace-details">
69 69
 			<table width="100%" border="0" cellpadding="5" cellspacing="0">
70 70
 				<tr>
@@ -72,263 +72,263 @@  discard block
 block discarded – undo
72 72
 					<th scope="col" align="right" style="width:3.5%;">Line</th>
73 73
 					<th scope="col" align="left" style="width:40%;">File</th>
74 74
 					<th scope="col" align="left">' . __('Class', 'event_espresso') . '->'
75
-                              . __(
76
-                                  'Method( arguments )',
77
-                                  'event_espresso'
78
-                              ) . '</th>
75
+							  . __(
76
+								  'Method( arguments )',
77
+								  'event_espresso'
78
+							  ) . '</th>
79 79
 				</tr>';
80
-            $last_on_stack = count($trace) - 1;
81
-            // reverse array so that stack is in proper chronological order
82
-            $sorted_trace = array_reverse($trace);
83
-            foreach ($sorted_trace as $nmbr => $trace) {
84
-                $file = isset($trace['file']) ? $trace['file'] : '';
85
-                $class = isset($trace['class']) ? $trace['class'] : '';
86
-                $type = isset($trace['type']) ? $trace['type'] : '';
87
-                $function = isset($trace['function']) ? $trace['function'] : '';
88
-                $args = isset($trace['args']) ? $this->_convert_args_to_string($trace['args']) : '';
89
-                $args = isset($trace['args']) && count($trace['args']) > 4 ? ' <br />' . $args . '<br />' : $args;
90
-                $line = isset($trace['line']) ? $trace['line'] : '';
91
-                $zebra = $nmbr % 2 !== 0 ? ' odd' : '';
92
-                if (empty($file) && ! empty($class)) {
93
-                    $a = new ReflectionClass($class);
94
-                    $file = $a->getFileName();
95
-                    if (empty($line) && ! empty($function)) {
96
-                        try {
97
-                            // if $function is a closure, this throws an exception
98
-                            $b = new ReflectionMethod($class, $function);
99
-                            $line = $b->getStartLine();
100
-                        } catch (Exception $closure_exception) {
101
-                            $line = 'unknown';
102
-                        }
103
-                    }
104
-                }
105
-                if ($nmbr === $last_on_stack) {
106
-                    $file = $exception->getFile() !== '' ? $exception->getFile() : $file;
107
-                    $line = $exception->getLine() !== '' ? $exception->getLine() : $line;
108
-                    $error_code = $this->generate_error_code($file, $trace['function'], $line);
109
-                }
110
-                $file = \EEH_File::standardise_directory_separators($file);
111
-                $nmbr = ! empty($nmbr) ? $nmbr : '&nbsp;';
112
-                $line = ! empty($line) ? $line : '&nbsp;';
113
-                $file = ! empty($file) ? $file : '&nbsp;';
114
-                $class_display = ! empty($class) ? $class : '';
115
-                $type = ! empty($type) ? $type : '';
116
-                $function = ! empty($function) ? $function : '';
117
-                $args = ! empty($args) ? '( ' . $args . ' )' : '()';
118
-                $trace_details .= '
80
+			$last_on_stack = count($trace) - 1;
81
+			// reverse array so that stack is in proper chronological order
82
+			$sorted_trace = array_reverse($trace);
83
+			foreach ($sorted_trace as $nmbr => $trace) {
84
+				$file = isset($trace['file']) ? $trace['file'] : '';
85
+				$class = isset($trace['class']) ? $trace['class'] : '';
86
+				$type = isset($trace['type']) ? $trace['type'] : '';
87
+				$function = isset($trace['function']) ? $trace['function'] : '';
88
+				$args = isset($trace['args']) ? $this->_convert_args_to_string($trace['args']) : '';
89
+				$args = isset($trace['args']) && count($trace['args']) > 4 ? ' <br />' . $args . '<br />' : $args;
90
+				$line = isset($trace['line']) ? $trace['line'] : '';
91
+				$zebra = $nmbr % 2 !== 0 ? ' odd' : '';
92
+				if (empty($file) && ! empty($class)) {
93
+					$a = new ReflectionClass($class);
94
+					$file = $a->getFileName();
95
+					if (empty($line) && ! empty($function)) {
96
+						try {
97
+							// if $function is a closure, this throws an exception
98
+							$b = new ReflectionMethod($class, $function);
99
+							$line = $b->getStartLine();
100
+						} catch (Exception $closure_exception) {
101
+							$line = 'unknown';
102
+						}
103
+					}
104
+				}
105
+				if ($nmbr === $last_on_stack) {
106
+					$file = $exception->getFile() !== '' ? $exception->getFile() : $file;
107
+					$line = $exception->getLine() !== '' ? $exception->getLine() : $line;
108
+					$error_code = $this->generate_error_code($file, $trace['function'], $line);
109
+				}
110
+				$file = \EEH_File::standardise_directory_separators($file);
111
+				$nmbr = ! empty($nmbr) ? $nmbr : '&nbsp;';
112
+				$line = ! empty($line) ? $line : '&nbsp;';
113
+				$file = ! empty($file) ? $file : '&nbsp;';
114
+				$class_display = ! empty($class) ? $class : '';
115
+				$type = ! empty($type) ? $type : '';
116
+				$function = ! empty($function) ? $function : '';
117
+				$args = ! empty($args) ? '( ' . $args . ' )' : '()';
118
+				$trace_details .= '
119 119
 					<tr>
120 120
 						<td align="right" valign="top" class="'
121
-                                  . $zebra
122
-                                  . '">'
123
-                                  . $nmbr
124
-                                  . '</td>
121
+								  . $zebra
122
+								  . '">'
123
+								  . $nmbr
124
+								  . '</td>
125 125
 						<td align="right" valign="top" class="'
126
-                                  . $zebra
127
-                                  . '">'
128
-                                  . $line
129
-                                  . '</td>
126
+								  . $zebra
127
+								  . '">'
128
+								  . $line
129
+								  . '</td>
130 130
 						<td align="left" valign="top" class="'
131
-                                  . $zebra
132
-                                  . '">'
133
-                                  . $file
134
-                                  . '</td>
131
+								  . $zebra
132
+								  . '">'
133
+								  . $file
134
+								  . '</td>
135 135
 						<td align="left" valign="top" class="'
136
-                                  . $zebra
137
-                                  . '">'
138
-                                  . $class_display
139
-                                  . $type
140
-                                  . $function
141
-                                  . $args
142
-                                  . '</td>
136
+								  . $zebra
137
+								  . '">'
138
+								  . $class_display
139
+								  . $type
140
+								  . $function
141
+								  . $args
142
+								  . '</td>
143 143
 					</tr>';
144
-            }
145
-            $trace_details .= '
144
+			}
145
+			$trace_details .= '
146 146
 			 </table>
147 147
 			</div>';
148
-        }
149
-        $code = $exception->getCode() ? $exception->getCode() : $error_code;
150
-        // add generic non-identifying messages for non-privileged users
151
-        if (! WP_DEBUG) {
152
-            $output .= '<span class="ee-error-user-msg-spn">'
153
-                       . trim($msg)
154
-                       . '</span> &nbsp; <sup>'
155
-                       . $code
156
-                       . '</sup><br />';
157
-        } else {
158
-            // or helpful developer messages if debugging is on
159
-            $output .= '
148
+		}
149
+		$code = $exception->getCode() ? $exception->getCode() : $error_code;
150
+		// add generic non-identifying messages for non-privileged users
151
+		if (! WP_DEBUG) {
152
+			$output .= '<span class="ee-error-user-msg-spn">'
153
+					   . trim($msg)
154
+					   . '</span> &nbsp; <sup>'
155
+					   . $code
156
+					   . '</sup><br />';
157
+		} else {
158
+			// or helpful developer messages if debugging is on
159
+			$output .= '
160 160
 		<div class="ee-error-dev-msg-dv">
161 161
 			<p class="ee-error-dev-msg-pg">
162 162
 				'
163
-                       . sprintf(
164
-                           __('%1$sAn %2$s was thrown!%3$s code: %4$s', 'event_espresso'),
165
-                           '<strong class="ee-error-dev-msg-str">',
166
-                           get_class($exception),
167
-                           '</strong>  &nbsp; <span>',
168
-                           $code . '</span>'
169
-                       )
170
-                       . '<br />
163
+					   . sprintf(
164
+						   __('%1$sAn %2$s was thrown!%3$s code: %4$s', 'event_espresso'),
165
+						   '<strong class="ee-error-dev-msg-str">',
166
+						   get_class($exception),
167
+						   '</strong>  &nbsp; <span>',
168
+						   $code . '</span>'
169
+					   )
170
+					   . '<br />
171 171
 				<span class="big-text">"'
172
-                       . trim($msg)
173
-                       . '"</span><br/>
172
+					   . trim($msg)
173
+					   . '"</span><br/>
174 174
 				<a id="display-ee-error-trace-1'
175
-                       . $time
176
-                       . '" class="display-ee-error-trace-lnk small-text" rel="ee-error-trace-1'
177
-                       . $time
178
-                       . '">
175
+					   . $time
176
+					   . '" class="display-ee-error-trace-lnk small-text" rel="ee-error-trace-1'
177
+					   . $time
178
+					   . '">
179 179
 					'
180
-                       . __('click to view backtrace and class/method details', 'event_espresso')
181
-                       . '
180
+					   . __('click to view backtrace and class/method details', 'event_espresso')
181
+					   . '
182 182
 				</a><br />
183 183
 				'
184
-                       . $exception->getFile()
185
-                       . sprintf(
186
-                           __('%1$s( line no: %2$s )%3$s', 'event_espresso'),
187
-                           ' &nbsp; <span class="small-text lt-grey-text">',
188
-                           $exception->getLine(),
189
-                           '</span>'
190
-                       )
191
-                       . '
184
+					   . $exception->getFile()
185
+					   . sprintf(
186
+						   __('%1$s( line no: %2$s )%3$s', 'event_espresso'),
187
+						   ' &nbsp; <span class="small-text lt-grey-text">',
188
+						   $exception->getLine(),
189
+						   '</span>'
190
+					   )
191
+					   . '
192 192
 			</p>
193 193
 			<div id="ee-error-trace-1'
194
-                       . $time
195
-                       . '-dv" class="ee-error-trace-dv" style="display: none;">
194
+					   . $time
195
+					   . '-dv" class="ee-error-trace-dv" style="display: none;">
196 196
 				'
197
-                       . $trace_details;
198
-            if (! empty($class)) {
199
-                $output .= '
197
+					   . $trace_details;
198
+			if (! empty($class)) {
199
+				$output .= '
200 200
 				<div style="padding:3px; margin:0 0 1em; border:1px solid #999; background:#fff; border-radius:3px;">
201 201
 					<div style="padding:1em 2em; border:1px solid #999; background:#fcfcfc;">
202 202
 						<h3>' . __('Class Details', 'event_espresso') . '</h3>';
203
-                $a = new ReflectionClass($class);
204
-                $output .= '
203
+				$a = new ReflectionClass($class);
204
+				$output .= '
205 205
 						<pre>' . $a . '</pre>
206 206
 					</div>
207 207
 				</div>';
208
-            }
209
-            $output .= '
208
+			}
209
+			$output .= '
210 210
 			</div>
211 211
 		</div>
212 212
 		<br />';
213
-        }
214
-        // remove last linebreak
215
-        $output = substr($output, 0, -6);
216
-        if (! WP_DEBUG) {
217
-            $output .= '
213
+		}
214
+		// remove last linebreak
215
+		$output = substr($output, 0, -6);
216
+		if (! WP_DEBUG) {
217
+			$output .= '
218 218
 	</p>';
219
-        }
220
-        $output .= '
219
+		}
220
+		$output .= '
221 221
 </div>';
222
-        $output .= $this->printScripts(true);
223
-        if (defined('DOING_AJAX')) {
224
-            echo wp_json_encode(array('error' => $output));
225
-            exit();
226
-        }
227
-        echo $output;
228
-    }
222
+		$output .= $this->printScripts(true);
223
+		if (defined('DOING_AJAX')) {
224
+			echo wp_json_encode(array('error' => $output));
225
+			exit();
226
+		}
227
+		echo $output;
228
+	}
229 229
 
230 230
 
231
-    // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
232
-    // phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
231
+	// phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
232
+	// phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
233 233
 
234
-    /**
235
-     * generate string from exception trace args
236
-     *
237
-     * @param array $arguments
238
-     * @param int   $indent
239
-     * @param bool  $array
240
-     * @return string
241
-     */
242
-    private function _convert_args_to_string($arguments = array(), $indent = 0, $array = false)
243
-    {
244
-        $args = array();
245
-        $args_count = count($arguments);
246
-        if ($args_count > 2) {
247
-            $indent++;
248
-            $args[] = '<br />';
249
-        }
250
-        $x = 0;
251
-        foreach ($arguments as $arg) {
252
-            $x++;
253
-            for ($i = 0; $i < $indent; $i++) {
254
-                $args[] = ' &nbsp;&nbsp; ';
255
-            }
256
-            if (is_string($arg)) {
257
-                if (! $array && strlen($arg) > 75) {
258
-                    $args[] = '<br />';
259
-                    for ($i = 0; $i <= $indent; $i++) {
260
-                        $args[] = ' &nbsp;&nbsp; ';
261
-                    }
262
-                    $args[] = "'" . $arg . "'<br />";
263
-                } else {
264
-                    $args[] = " '" . $arg . "'";
265
-                }
266
-            } elseif (is_array($arg)) {
267
-                $arg_count = count($arg);
268
-                if ($arg_count > 2) {
269
-                    $indent++;
270
-                    $args[] = ' array(' . $this->_convert_args_to_string($arg, $indent, true) . ')';
271
-                    $indent--;
272
-                } elseif ($arg_count === 0) {
273
-                    $args[] = ' array()';
274
-                } else {
275
-                    $args[] = ' array( ' . $this->_convert_args_to_string($arg) . ' )';
276
-                }
277
-            } elseif ($arg === null) {
278
-                $args[] = ' null';
279
-            } elseif (is_bool($arg)) {
280
-                $args[] = $arg ? ' true' : ' false';
281
-            } elseif (is_object($arg)) {
282
-                $args[] = get_class($arg);
283
-            } elseif (is_resource($arg)) {
284
-                $args[] = get_resource_type($arg);
285
-            } else {
286
-                $args[] = $arg;
287
-            }
288
-            if ($x === $args_count) {
289
-                if ($args_count > 2) {
290
-                    $args[] = '<br />';
291
-                    $indent--;
292
-                    for ($i = 1; $i < $indent; $i++) {
293
-                        $args[] = ' &nbsp;&nbsp; ';
294
-                    }
295
-                }
296
-            } else {
297
-                $args[] = $args_count > 2 ? ',<br />' : ', ';
298
-            }
299
-        }
300
-        return implode('', $args);
301
-    }
234
+	/**
235
+	 * generate string from exception trace args
236
+	 *
237
+	 * @param array $arguments
238
+	 * @param int   $indent
239
+	 * @param bool  $array
240
+	 * @return string
241
+	 */
242
+	private function _convert_args_to_string($arguments = array(), $indent = 0, $array = false)
243
+	{
244
+		$args = array();
245
+		$args_count = count($arguments);
246
+		if ($args_count > 2) {
247
+			$indent++;
248
+			$args[] = '<br />';
249
+		}
250
+		$x = 0;
251
+		foreach ($arguments as $arg) {
252
+			$x++;
253
+			for ($i = 0; $i < $indent; $i++) {
254
+				$args[] = ' &nbsp;&nbsp; ';
255
+			}
256
+			if (is_string($arg)) {
257
+				if (! $array && strlen($arg) > 75) {
258
+					$args[] = '<br />';
259
+					for ($i = 0; $i <= $indent; $i++) {
260
+						$args[] = ' &nbsp;&nbsp; ';
261
+					}
262
+					$args[] = "'" . $arg . "'<br />";
263
+				} else {
264
+					$args[] = " '" . $arg . "'";
265
+				}
266
+			} elseif (is_array($arg)) {
267
+				$arg_count = count($arg);
268
+				if ($arg_count > 2) {
269
+					$indent++;
270
+					$args[] = ' array(' . $this->_convert_args_to_string($arg, $indent, true) . ')';
271
+					$indent--;
272
+				} elseif ($arg_count === 0) {
273
+					$args[] = ' array()';
274
+				} else {
275
+					$args[] = ' array( ' . $this->_convert_args_to_string($arg) . ' )';
276
+				}
277
+			} elseif ($arg === null) {
278
+				$args[] = ' null';
279
+			} elseif (is_bool($arg)) {
280
+				$args[] = $arg ? ' true' : ' false';
281
+			} elseif (is_object($arg)) {
282
+				$args[] = get_class($arg);
283
+			} elseif (is_resource($arg)) {
284
+				$args[] = get_resource_type($arg);
285
+			} else {
286
+				$args[] = $arg;
287
+			}
288
+			if ($x === $args_count) {
289
+				if ($args_count > 2) {
290
+					$args[] = '<br />';
291
+					$indent--;
292
+					for ($i = 1; $i < $indent; $i++) {
293
+						$args[] = ' &nbsp;&nbsp; ';
294
+					}
295
+				}
296
+			} else {
297
+				$args[] = $args_count > 2 ? ',<br />' : ', ';
298
+			}
299
+		}
300
+		return implode('', $args);
301
+	}
302 302
 
303 303
 
304
-    /**
305
-     * create error code from filepath, function name,
306
-     * and line number where exception or error was thrown
307
-     *
308
-     * @access protected
309
-     * @param string $file
310
-     * @param string $func
311
-     * @param string $line
312
-     * @return string
313
-     */
314
-    protected function generate_error_code($file = '', $func = '', $line = '')
315
-    {
316
-        $file_bits = explode('.', basename($file));
317
-        $error_code = ! empty($file_bits[0]) ? $file_bits[0] : '';
318
-        $error_code .= ! empty($func) ? ' - ' . $func : '';
319
-        $error_code .= ! empty($line) ? ' - ' . $line : '';
320
-        return $error_code;
321
-    }
304
+	/**
305
+	 * create error code from filepath, function name,
306
+	 * and line number where exception or error was thrown
307
+	 *
308
+	 * @access protected
309
+	 * @param string $file
310
+	 * @param string $func
311
+	 * @param string $line
312
+	 * @return string
313
+	 */
314
+	protected function generate_error_code($file = '', $func = '', $line = '')
315
+	{
316
+		$file_bits = explode('.', basename($file));
317
+		$error_code = ! empty($file_bits[0]) ? $file_bits[0] : '';
318
+		$error_code .= ! empty($func) ? ' - ' . $func : '';
319
+		$error_code .= ! empty($line) ? ' - ' . $line : '';
320
+		return $error_code;
321
+	}
322 322
 
323 323
 
324
-    /**
325
-     * _exception_styles
326
-     *
327
-     * @return string
328
-     */
329
-    private function exceptionStyles()
330
-    {
331
-        return '
324
+	/**
325
+	 * _exception_styles
326
+	 *
327
+	 * @return string
328
+	 */
329
+	private function exceptionStyles()
330
+	{
331
+		return '
332 332
 <style type="text/css">
333 333
 	#ee-error-message {
334 334
 		max-width:90% !important;
@@ -385,29 +385,29 @@  discard block
 block discarded – undo
385 385
 		color: #999;
386 386
 	}
387 387
 </style>';
388
-    }
388
+	}
389 389
 
390 390
 
391
-    /**
392
-     * _print_scripts
393
-     *
394
-     * @param bool $force_print
395
-     * @return string
396
-     */
397
-    private function printScripts($force_print = false)
398
-    {
399
-        if (! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) {
400
-            if (wp_script_is('ee_error_js', 'enqueued')) {
401
-                return '';
402
-            }
403
-            if (wp_script_is('ee_error_js', 'registered')) {
404
-                wp_enqueue_style('espresso_default');
405
-                wp_enqueue_style('espresso_custom_css');
406
-                wp_enqueue_script('ee_error_js');
407
-                wp_localize_script('ee_error_js', 'ee_settings', array('wp_debug' => WP_DEBUG));
408
-            }
409
-        } else {
410
-            return '
391
+	/**
392
+	 * _print_scripts
393
+	 *
394
+	 * @param bool $force_print
395
+	 * @return string
396
+	 */
397
+	private function printScripts($force_print = false)
398
+	{
399
+		if (! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) {
400
+			if (wp_script_is('ee_error_js', 'enqueued')) {
401
+				return '';
402
+			}
403
+			if (wp_script_is('ee_error_js', 'registered')) {
404
+				wp_enqueue_style('espresso_default');
405
+				wp_enqueue_style('espresso_custom_css');
406
+				wp_enqueue_script('ee_error_js');
407
+				wp_localize_script('ee_error_js', 'ee_settings', array('wp_debug' => WP_DEBUG));
408
+			}
409
+		} else {
410
+			return '
411 411
 <script>
412 412
 /* <![CDATA[ */
413 413
 var ee_settings = {"wp_debug":"' . WP_DEBUG . '"};
@@ -417,7 +417,7 @@  discard block
 block discarded – undo
417 417
 <script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script>
418 418
 <script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script>
419 419
 ';
420
-        }
421
-        return '';
422
-    }
420
+		}
421
+		return '';
422
+	}
423 423
 }
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -53,7 +53,7 @@  discard block
 block discarded – undo
53 53
         $output = $this->exceptionStyles();
54 54
         $output .= '
55 55
 <div id="ee-error-message" class="error">';
56
-        if (! WP_DEBUG) {
56
+        if ( ! WP_DEBUG) {
57 57
             $output .= '
58 58
 	<p>';
59 59
         }
@@ -71,11 +71,11 @@  discard block
 block discarded – undo
71 71
 					<th scope="col" align="right" style="width:2.5%;">#</th>
72 72
 					<th scope="col" align="right" style="width:3.5%;">Line</th>
73 73
 					<th scope="col" align="left" style="width:40%;">File</th>
74
-					<th scope="col" align="left">' . __('Class', 'event_espresso') . '->'
74
+					<th scope="col" align="left">' . __('Class', 'event_espresso').'->'
75 75
                               . __(
76 76
                                   'Method( arguments )',
77 77
                                   'event_espresso'
78
-                              ) . '</th>
78
+                              ).'</th>
79 79
 				</tr>';
80 80
             $last_on_stack = count($trace) - 1;
81 81
             // reverse array so that stack is in proper chronological order
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
                 $type = isset($trace['type']) ? $trace['type'] : '';
87 87
                 $function = isset($trace['function']) ? $trace['function'] : '';
88 88
                 $args = isset($trace['args']) ? $this->_convert_args_to_string($trace['args']) : '';
89
-                $args = isset($trace['args']) && count($trace['args']) > 4 ? ' <br />' . $args . '<br />' : $args;
89
+                $args = isset($trace['args']) && count($trace['args']) > 4 ? ' <br />'.$args.'<br />' : $args;
90 90
                 $line = isset($trace['line']) ? $trace['line'] : '';
91 91
                 $zebra = $nmbr % 2 !== 0 ? ' odd' : '';
92 92
                 if (empty($file) && ! empty($class)) {
@@ -114,7 +114,7 @@  discard block
 block discarded – undo
114 114
                 $class_display = ! empty($class) ? $class : '';
115 115
                 $type = ! empty($type) ? $type : '';
116 116
                 $function = ! empty($function) ? $function : '';
117
-                $args = ! empty($args) ? '( ' . $args . ' )' : '()';
117
+                $args = ! empty($args) ? '( '.$args.' )' : '()';
118 118
                 $trace_details .= '
119 119
 					<tr>
120 120
 						<td align="right" valign="top" class="'
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
         }
149 149
         $code = $exception->getCode() ? $exception->getCode() : $error_code;
150 150
         // add generic non-identifying messages for non-privileged users
151
-        if (! WP_DEBUG) {
151
+        if ( ! WP_DEBUG) {
152 152
             $output .= '<span class="ee-error-user-msg-spn">'
153 153
                        . trim($msg)
154 154
                        . '</span> &nbsp; <sup>'
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
                            '<strong class="ee-error-dev-msg-str">',
166 166
                            get_class($exception),
167 167
                            '</strong>  &nbsp; <span>',
168
-                           $code . '</span>'
168
+                           $code.'</span>'
169 169
                        )
170 170
                        . '<br />
171 171
 				<span class="big-text">"'
@@ -195,14 +195,14 @@  discard block
 block discarded – undo
195 195
                        . '-dv" class="ee-error-trace-dv" style="display: none;">
196 196
 				'
197 197
                        . $trace_details;
198
-            if (! empty($class)) {
198
+            if ( ! empty($class)) {
199 199
                 $output .= '
200 200
 				<div style="padding:3px; margin:0 0 1em; border:1px solid #999; background:#fff; border-radius:3px;">
201 201
 					<div style="padding:1em 2em; border:1px solid #999; background:#fcfcfc;">
202
-						<h3>' . __('Class Details', 'event_espresso') . '</h3>';
202
+						<h3>' . __('Class Details', 'event_espresso').'</h3>';
203 203
                 $a = new ReflectionClass($class);
204 204
                 $output .= '
205
-						<pre>' . $a . '</pre>
205
+						<pre>' . $a.'</pre>
206 206
 					</div>
207 207
 				</div>';
208 208
             }
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
         }
214 214
         // remove last linebreak
215 215
         $output = substr($output, 0, -6);
216
-        if (! WP_DEBUG) {
216
+        if ( ! WP_DEBUG) {
217 217
             $output .= '
218 218
 	</p>';
219 219
         }
@@ -254,25 +254,25 @@  discard block
 block discarded – undo
254 254
                 $args[] = ' &nbsp;&nbsp; ';
255 255
             }
256 256
             if (is_string($arg)) {
257
-                if (! $array && strlen($arg) > 75) {
257
+                if ( ! $array && strlen($arg) > 75) {
258 258
                     $args[] = '<br />';
259 259
                     for ($i = 0; $i <= $indent; $i++) {
260 260
                         $args[] = ' &nbsp;&nbsp; ';
261 261
                     }
262
-                    $args[] = "'" . $arg . "'<br />";
262
+                    $args[] = "'".$arg."'<br />";
263 263
                 } else {
264
-                    $args[] = " '" . $arg . "'";
264
+                    $args[] = " '".$arg."'";
265 265
                 }
266 266
             } elseif (is_array($arg)) {
267 267
                 $arg_count = count($arg);
268 268
                 if ($arg_count > 2) {
269 269
                     $indent++;
270
-                    $args[] = ' array(' . $this->_convert_args_to_string($arg, $indent, true) . ')';
270
+                    $args[] = ' array('.$this->_convert_args_to_string($arg, $indent, true).')';
271 271
                     $indent--;
272 272
                 } elseif ($arg_count === 0) {
273 273
                     $args[] = ' array()';
274 274
                 } else {
275
-                    $args[] = ' array( ' . $this->_convert_args_to_string($arg) . ' )';
275
+                    $args[] = ' array( '.$this->_convert_args_to_string($arg).' )';
276 276
                 }
277 277
             } elseif ($arg === null) {
278 278
                 $args[] = ' null';
@@ -315,8 +315,8 @@  discard block
 block discarded – undo
315 315
     {
316 316
         $file_bits = explode('.', basename($file));
317 317
         $error_code = ! empty($file_bits[0]) ? $file_bits[0] : '';
318
-        $error_code .= ! empty($func) ? ' - ' . $func : '';
319
-        $error_code .= ! empty($line) ? ' - ' . $line : '';
318
+        $error_code .= ! empty($func) ? ' - '.$func : '';
319
+        $error_code .= ! empty($line) ? ' - '.$line : '';
320 320
         return $error_code;
321 321
     }
322 322
 
@@ -396,7 +396,7 @@  discard block
 block discarded – undo
396 396
      */
397 397
     private function printScripts($force_print = false)
398 398
     {
399
-        if (! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) {
399
+        if ( ! $force_print && (did_action('admin_enqueue_scripts') || did_action('wp_enqueue_scripts'))) {
400 400
             if (wp_script_is('ee_error_js', 'enqueued')) {
401 401
                 return '';
402 402
             }
@@ -410,12 +410,12 @@  discard block
 block discarded – undo
410 410
             return '
411 411
 <script>
412 412
 /* <![CDATA[ */
413
-var ee_settings = {"wp_debug":"' . WP_DEBUG . '"};
413
+var ee_settings = {"wp_debug":"' . WP_DEBUG.'"};
414 414
 /* ]]> */
415 415
 </script>
416
-<script src="' . includes_url() . 'js/jquery/jquery.js" type="text/javascript"></script>
417
-<script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/espresso_core.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script>
418
-<script src="' . EE_GLOBAL_ASSETS_URL . 'scripts/EE_Error.js' . '?ver=' . espresso_version() . '" type="text/javascript"></script>
416
+<script src="' . includes_url().'js/jquery/jquery.js" type="text/javascript"></script>
417
+<script src="' . EE_GLOBAL_ASSETS_URL.'scripts/espresso_core.js'.'?ver='.espresso_version().'" type="text/javascript"></script>
418
+<script src="' . EE_GLOBAL_ASSETS_URL.'scripts/EE_Error.js'.'?ver='.espresso_version().'" type="text/javascript"></script>
419 419
 ';
420 420
         }
421 421
         return '';
Please login to merge, or discard this patch.
core/services/cache/PostRelatedCacheManager.php 2 patches
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -13,121 +13,121 @@
 block discarded – undo
13 13
 class PostRelatedCacheManager extends BasicCacheManager
14 14
 {
15 15
 
16
-    /**
17
-     * @type string
18
-     */
19
-    const POST_CACHE_PREFIX = 'ee_cache_post_';
20
-
21
-    /**
22
-     * wp-option option_name for tracking post related cache
23
-     *
24
-     * @type string
25
-     */
26
-    const POST_CACHE_OPTIONS_KEY = 'ee_post_cache';
27
-
28
-
29
-    /**
30
-     * PostRelatedCacheManager constructor.
31
-     *
32
-     * @param CacheStorageInterface $cache_storage
33
-     */
34
-    public function __construct(CacheStorageInterface $cache_storage)
35
-    {
36
-        parent::__construct($cache_storage);
37
-        add_action('save_post', array($this, 'clearPostRelatedCache'));
38
-    }
39
-
40
-
41
-    /**
42
-     * returns a string that will be prepended to all cache identifiers
43
-     *
44
-     * @return string
45
-     */
46
-    public function cachePrefix()
47
-    {
48
-        return PostRelatedCacheManager::POST_CACHE_PREFIX;
49
-    }
50
-
51
-
52
-    /**
53
-     * @return array
54
-     */
55
-    protected function getPostRelatedCache()
56
-    {
57
-        $post_related_cache = get_option(PostRelatedCacheManager::POST_CACHE_OPTIONS_KEY, array());
58
-        // verify that cached data was not truncated or corrupted and no longer an array
59
-        if (! is_array($post_related_cache)) {
60
-            // uh-oh... let's get rid of any transients using our cache prefix
61
-            $this->clear(PostRelatedCacheManager::CACHE_PREFIX);
62
-            // then update the post related cache tracking option
63
-            $post_related_cache = array();
64
-            $this->updatePostRelatedCache($post_related_cache);
65
-        }
66
-        return $post_related_cache;
67
-    }
68
-
69
-
70
-    /**
71
-     * @param array $post_related_cache
72
-     */
73
-    protected function updatePostRelatedCache(array $post_related_cache = array())
74
-    {
75
-        update_option(PostRelatedCacheManager::POST_CACHE_OPTIONS_KEY, $post_related_cache);
76
-    }
77
-
78
-
79
-    /**
80
-     * If you are caching content that pertains to a Post of any type,
81
-     * then it is recommended to pass the post id and cache id prefix to this method
82
-     * so that it can be added to the post related cache tracking.
83
-     * Then, whenever that post is updated, the cache will automatically be deleted,
84
-     * which helps to ensure that outdated cache content will not be served
85
-     *
86
-     * @param int    $post_ID    [required]
87
-     * @param string $id_prefix  [required] Appended to all cache IDs. Can be helpful in finding specific cache types.
88
-     *                           May also be helpful to include an additional specific identifier,
89
-     *                           such as a post ID as part of the $id_prefix so that individual caches
90
-     *                           can be found and/or cleared. ex: "venue-28", or "shortcode-156".
91
-     *                           BasicCacheManager::CACHE_PREFIX will also be prepended to the cache id.
92
-     */
93
-    public function clearPostRelatedCacheOnUpdate($post_ID, $id_prefix)
94
-    {
95
-        $post_related_cache = $this->getPostRelatedCache();
96
-        // if post is not already being tracked
97
-        if (! isset($post_related_cache[ $post_ID ])) {
98
-            // add array to add cache ids to
99
-            $post_related_cache[ $post_ID ] = array();
100
-        }
101
-        if (! in_array($id_prefix, $post_related_cache[ $post_ID ], true)) {
102
-            // add cache id to be tracked
103
-            $post_related_cache[ $post_ID ][] = $id_prefix;
104
-            $this->updatePostRelatedCache($post_related_cache);
105
-        }
106
-    }
107
-
108
-
109
-    /**
110
-     * callback hooked into the WordPress "save_post" action
111
-     * deletes any cache content associated with the post
112
-     *
113
-     * @param int $post_ID [required]
114
-     */
115
-    public function clearPostRelatedCache($post_ID)
116
-    {
117
-        $post_related_cache = $this->getPostRelatedCache();
118
-        // if post is not being tracked
119
-        if (! isset($post_related_cache[ $post_ID ])) {
120
-            // let's clean up some of the duplicate IDs that were getting added
121
-            foreach ($post_related_cache as $other_post_ID => $cache_IDs) {
122
-                // remove duplicates
123
-                $post_related_cache[ $other_post_ID ] = array_unique($post_related_cache[ $other_post_ID ]);
124
-            }
125
-            $this->updatePostRelatedCache($post_related_cache);
126
-            return;
127
-        }
128
-        // get cache id prefixes for post, and delete their corresponding transients
129
-        $this->clear($post_related_cache[ $post_ID ]);
130
-        unset($post_related_cache[ $post_ID ]);
131
-        $this->updatePostRelatedCache($post_related_cache);
132
-    }
16
+	/**
17
+	 * @type string
18
+	 */
19
+	const POST_CACHE_PREFIX = 'ee_cache_post_';
20
+
21
+	/**
22
+	 * wp-option option_name for tracking post related cache
23
+	 *
24
+	 * @type string
25
+	 */
26
+	const POST_CACHE_OPTIONS_KEY = 'ee_post_cache';
27
+
28
+
29
+	/**
30
+	 * PostRelatedCacheManager constructor.
31
+	 *
32
+	 * @param CacheStorageInterface $cache_storage
33
+	 */
34
+	public function __construct(CacheStorageInterface $cache_storage)
35
+	{
36
+		parent::__construct($cache_storage);
37
+		add_action('save_post', array($this, 'clearPostRelatedCache'));
38
+	}
39
+
40
+
41
+	/**
42
+	 * returns a string that will be prepended to all cache identifiers
43
+	 *
44
+	 * @return string
45
+	 */
46
+	public function cachePrefix()
47
+	{
48
+		return PostRelatedCacheManager::POST_CACHE_PREFIX;
49
+	}
50
+
51
+
52
+	/**
53
+	 * @return array
54
+	 */
55
+	protected function getPostRelatedCache()
56
+	{
57
+		$post_related_cache = get_option(PostRelatedCacheManager::POST_CACHE_OPTIONS_KEY, array());
58
+		// verify that cached data was not truncated or corrupted and no longer an array
59
+		if (! is_array($post_related_cache)) {
60
+			// uh-oh... let's get rid of any transients using our cache prefix
61
+			$this->clear(PostRelatedCacheManager::CACHE_PREFIX);
62
+			// then update the post related cache tracking option
63
+			$post_related_cache = array();
64
+			$this->updatePostRelatedCache($post_related_cache);
65
+		}
66
+		return $post_related_cache;
67
+	}
68
+
69
+
70
+	/**
71
+	 * @param array $post_related_cache
72
+	 */
73
+	protected function updatePostRelatedCache(array $post_related_cache = array())
74
+	{
75
+		update_option(PostRelatedCacheManager::POST_CACHE_OPTIONS_KEY, $post_related_cache);
76
+	}
77
+
78
+
79
+	/**
80
+	 * If you are caching content that pertains to a Post of any type,
81
+	 * then it is recommended to pass the post id and cache id prefix to this method
82
+	 * so that it can be added to the post related cache tracking.
83
+	 * Then, whenever that post is updated, the cache will automatically be deleted,
84
+	 * which helps to ensure that outdated cache content will not be served
85
+	 *
86
+	 * @param int    $post_ID    [required]
87
+	 * @param string $id_prefix  [required] Appended to all cache IDs. Can be helpful in finding specific cache types.
88
+	 *                           May also be helpful to include an additional specific identifier,
89
+	 *                           such as a post ID as part of the $id_prefix so that individual caches
90
+	 *                           can be found and/or cleared. ex: "venue-28", or "shortcode-156".
91
+	 *                           BasicCacheManager::CACHE_PREFIX will also be prepended to the cache id.
92
+	 */
93
+	public function clearPostRelatedCacheOnUpdate($post_ID, $id_prefix)
94
+	{
95
+		$post_related_cache = $this->getPostRelatedCache();
96
+		// if post is not already being tracked
97
+		if (! isset($post_related_cache[ $post_ID ])) {
98
+			// add array to add cache ids to
99
+			$post_related_cache[ $post_ID ] = array();
100
+		}
101
+		if (! in_array($id_prefix, $post_related_cache[ $post_ID ], true)) {
102
+			// add cache id to be tracked
103
+			$post_related_cache[ $post_ID ][] = $id_prefix;
104
+			$this->updatePostRelatedCache($post_related_cache);
105
+		}
106
+	}
107
+
108
+
109
+	/**
110
+	 * callback hooked into the WordPress "save_post" action
111
+	 * deletes any cache content associated with the post
112
+	 *
113
+	 * @param int $post_ID [required]
114
+	 */
115
+	public function clearPostRelatedCache($post_ID)
116
+	{
117
+		$post_related_cache = $this->getPostRelatedCache();
118
+		// if post is not being tracked
119
+		if (! isset($post_related_cache[ $post_ID ])) {
120
+			// let's clean up some of the duplicate IDs that were getting added
121
+			foreach ($post_related_cache as $other_post_ID => $cache_IDs) {
122
+				// remove duplicates
123
+				$post_related_cache[ $other_post_ID ] = array_unique($post_related_cache[ $other_post_ID ]);
124
+			}
125
+			$this->updatePostRelatedCache($post_related_cache);
126
+			return;
127
+		}
128
+		// get cache id prefixes for post, and delete their corresponding transients
129
+		$this->clear($post_related_cache[ $post_ID ]);
130
+		unset($post_related_cache[ $post_ID ]);
131
+		$this->updatePostRelatedCache($post_related_cache);
132
+	}
133 133
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -56,7 +56,7 @@  discard block
 block discarded – undo
56 56
     {
57 57
         $post_related_cache = get_option(PostRelatedCacheManager::POST_CACHE_OPTIONS_KEY, array());
58 58
         // verify that cached data was not truncated or corrupted and no longer an array
59
-        if (! is_array($post_related_cache)) {
59
+        if ( ! is_array($post_related_cache)) {
60 60
             // uh-oh... let's get rid of any transients using our cache prefix
61 61
             $this->clear(PostRelatedCacheManager::CACHE_PREFIX);
62 62
             // then update the post related cache tracking option
@@ -94,13 +94,13 @@  discard block
 block discarded – undo
94 94
     {
95 95
         $post_related_cache = $this->getPostRelatedCache();
96 96
         // if post is not already being tracked
97
-        if (! isset($post_related_cache[ $post_ID ])) {
97
+        if ( ! isset($post_related_cache[$post_ID])) {
98 98
             // add array to add cache ids to
99
-            $post_related_cache[ $post_ID ] = array();
99
+            $post_related_cache[$post_ID] = array();
100 100
         }
101
-        if (! in_array($id_prefix, $post_related_cache[ $post_ID ], true)) {
101
+        if ( ! in_array($id_prefix, $post_related_cache[$post_ID], true)) {
102 102
             // add cache id to be tracked
103
-            $post_related_cache[ $post_ID ][] = $id_prefix;
103
+            $post_related_cache[$post_ID][] = $id_prefix;
104 104
             $this->updatePostRelatedCache($post_related_cache);
105 105
         }
106 106
     }
@@ -116,18 +116,18 @@  discard block
 block discarded – undo
116 116
     {
117 117
         $post_related_cache = $this->getPostRelatedCache();
118 118
         // if post is not being tracked
119
-        if (! isset($post_related_cache[ $post_ID ])) {
119
+        if ( ! isset($post_related_cache[$post_ID])) {
120 120
             // let's clean up some of the duplicate IDs that were getting added
121 121
             foreach ($post_related_cache as $other_post_ID => $cache_IDs) {
122 122
                 // remove duplicates
123
-                $post_related_cache[ $other_post_ID ] = array_unique($post_related_cache[ $other_post_ID ]);
123
+                $post_related_cache[$other_post_ID] = array_unique($post_related_cache[$other_post_ID]);
124 124
             }
125 125
             $this->updatePostRelatedCache($post_related_cache);
126 126
             return;
127 127
         }
128 128
         // get cache id prefixes for post, and delete their corresponding transients
129
-        $this->clear($post_related_cache[ $post_ID ]);
130
-        unset($post_related_cache[ $post_ID ]);
129
+        $this->clear($post_related_cache[$post_ID]);
130
+        unset($post_related_cache[$post_ID]);
131 131
         $this->updatePostRelatedCache($post_related_cache);
132 132
     }
133 133
 }
Please login to merge, or discard this patch.
core/services/Benchmark.php 2 patches
Indentation   +320 added lines, -320 removed lines patch added patch discarded remove patch
@@ -15,324 +15,324 @@
 block discarded – undo
15 15
 class Benchmark
16 16
 {
17 17
 
18
-    /**
19
-     * @var string $output
20
-     */
21
-    private static $output;
22
-
23
-    /**
24
-     * @var array $start_times array containing the start time for the timers
25
-     */
26
-    private static $start_times;
27
-
28
-    /**
29
-     * @var array $times array containing all the timer'd times, which can be outputted via show_times()
30
-     */
31
-    private static $times = array();
32
-
33
-    /**
34
-     * @var array $memory_usage
35
-     */
36
-    protected static $memory_usage = array();
37
-
38
-
39
-    /**
40
-     * @param string $output
41
-     * @param bool   $formatted
42
-     */
43
-    public static function addOutput($output, $formatted = true)
44
-    {
45
-        Benchmark::$output .= $formatted
46
-            ? "<br />{$output}"
47
-            : "\n{$output}";
48
-    }
49
-
50
-
51
-    /**
52
-     * @return void
53
-     */
54
-    public static function resetOutput()
55
-    {
56
-        Benchmark::$output = '';
57
-    }
58
-
59
-    /**
60
-     * whether to benchmark code or not
61
-     */
62
-    public static function doNotRun()
63
-    {
64
-        return ! WP_DEBUG || (defined('DOING_AJAX') && DOING_AJAX);
65
-    }
66
-
67
-
68
-    /**
69
-     * resetTimes
70
-     */
71
-    public static function resetTimes()
72
-    {
73
-        Benchmark::$times = array();
74
-    }
75
-
76
-
77
-    /**
78
-     * Add Benchmark::startTimer() before a block of code you want to measure the performance of
79
-     *
80
-     * @param null $timer_name
81
-     */
82
-    public static function startTimer($timer_name = null)
83
-    {
84
-        if (Benchmark::doNotRun()) {
85
-            return;
86
-        }
87
-        $timer_name = $timer_name !== '' ? $timer_name : get_called_class();
88
-        Benchmark::$start_times[ $timer_name ] = microtime(true);
89
-    }
90
-
91
-
92
-    /**
93
-     * Add Benchmark::stopTimer() after a block of code you want to measure the performance of
94
-     *
95
-     * @param string $timer_name
96
-     */
97
-    public static function stopTimer($timer_name = '')
98
-    {
99
-        if (Benchmark::doNotRun()) {
100
-            return;
101
-        }
102
-        $timer_name = $timer_name !== '' ? $timer_name : get_called_class();
103
-        if (isset(Benchmark::$start_times[ $timer_name ])) {
104
-            $start_time = Benchmark::$start_times[ $timer_name ];
105
-            unset(Benchmark::$start_times[ $timer_name ]);
106
-        } else {
107
-            $start_time = array_pop(Benchmark::$start_times);
108
-        }
109
-        Benchmark::$times[ $timer_name ] = number_format(microtime(true) - $start_time, 8);
110
-    }
111
-
112
-
113
-    /**
114
-     * Measure the memory usage by PHP so far.
115
-     *
116
-     * @param string  $label      The label to show for this time eg "Start of calling Some_Class::some_function"
117
-     * @param boolean $output_now whether to echo now, or wait until EEH_Debug_Tools::show_times() is called
118
-     * @param bool    $formatted
119
-     * @return void
120
-     */
121
-    public static function measureMemory($label = 'memory usage', $output_now = false, $formatted = true)
122
-    {
123
-        if (Benchmark::doNotRun()) {
124
-            return;
125
-        }
126
-        $memory_used = Benchmark::convert(memory_get_usage(true));
127
-        Benchmark::$memory_usage[ $label ] = $memory_used;
128
-        if ($output_now) {
129
-            echo $formatted
130
-                ? "<br>{$label} : {$memory_used}"
131
-                : "\n {$label} : {$memory_used}";
132
-        }
133
-    }
134
-
135
-
136
-    /**
137
-     * will display the benchmarking results at shutdown
138
-     *
139
-     * @param bool $formatted
140
-     * @return void
141
-     */
142
-    public static function displayResultsAtShutdown($formatted = true)
143
-    {
144
-        Benchmark::resetOutput();
145
-        add_action(
146
-            'shutdown',
147
-            function () use ($formatted) {
148
-                Benchmark::displayResults(true, $formatted);
149
-            },
150
-            999999
151
-        );
152
-    }
153
-
154
-
155
-    /**
156
-     * will display the benchmarking results at shutdown
157
-     *
158
-     * @param string $filepath
159
-     * @param bool   $formatted
160
-     * @param bool   $append
161
-     * @return void
162
-     */
163
-    public static function writeResultsAtShutdown($filepath = '', $formatted = true, $append = true)
164
-    {
165
-        Benchmark::resetOutput();
166
-        add_action(
167
-            'shutdown',
168
-            function () use ($filepath, $formatted, $append) {
169
-                Benchmark::writeResultsToFile($filepath, $formatted, $append);
170
-            },
171
-            999999
172
-        );
173
-    }
174
-
175
-
176
-    /**
177
-     * @param bool $formatted
178
-     * @return string
179
-     */
180
-    private static function generateResults($formatted = true)
181
-    {
182
-        if (Benchmark::doNotRun()) {
183
-            return '';
184
-        }
185
-        if (! empty(Benchmark::$times)) {
186
-            $total = 0;
187
-            Benchmark::$output .= $formatted
188
-                ? '<span style="color:#999999; font-size:.8em;">( time in milliseconds )</span><br />'
189
-                : '';
190
-            foreach (Benchmark::$times as $timer_name => $total_time) {
191
-                Benchmark::$output .= Benchmark::formatTime($timer_name, $total_time, $formatted);
192
-                Benchmark::$output .= $formatted ? '<br />' : "\n";
193
-                $total += $total_time;
194
-            }
195
-            if ($formatted) {
196
-                Benchmark::$output .= '<br />';
197
-                Benchmark::$output .= '<h4>TOTAL TIME</h4>';
198
-                Benchmark::$output .= Benchmark::formatTime('', $total, $formatted);
199
-                Benchmark::$output .= '<span style="color:#999999; font-size:.8em;"> milliseconds</span><br />';
200
-                Benchmark::$output .= '<br />';
201
-                Benchmark::$output .= '<h5>Performance scale (from best to worse)</h5>';
202
-                Benchmark::$output .= '<span style="color:mediumpurple">Like wow! How about a Scooby snack?</span><br />';
203
-                Benchmark::$output .= '<span style="color:deepskyblue">Like...no way man!</span><br />';
204
-                Benchmark::$output .= '<span style="color:limegreen">Like...groovy!</span><br />';
205
-                Benchmark::$output .= '<span style="color:gold">Ruh Oh</span><br />';
206
-                Benchmark::$output .= '<span style="color:darkorange">Zoinks!</span><br />';
207
-                Benchmark::$output .= '<span style="color:red">Like...HEEELLLP</span><br />';
208
-            }
209
-        }
210
-        if (! empty(Benchmark::$memory_usage)) {
211
-            Benchmark::$output .= $formatted
212
-                ? '<h5>Memory</h5>'
213
-                : "\nMemory";
214
-            foreach (Benchmark::$memory_usage as $label => $memory_usage) {
215
-                Benchmark::$output .= $formatted
216
-                    ? "<br />{$memory_usage} : {$label}"
217
-                    : "\n{$memory_usage} : {$label}";
218
-            }
219
-        }
220
-        if (empty(Benchmark::$output)) {
221
-            return '';
222
-        }
223
-        Benchmark::$output = $formatted
224
-            ? '<div style="border:1px solid #dddddd; background-color:#ffffff;'
225
-              . (is_admin()
226
-                ? ' margin:2em 2em 2em 180px;'
227
-                : ' margin:2em;')
228
-              . ' padding:2em;">'
229
-              . '<h4>BENCHMARKING</h4>'
230
-              . Benchmark::$output
231
-              . '</div>'
232
-            : Benchmark::$output;
233
-        return Benchmark::$output;
234
-    }
235
-
236
-
237
-    /**
238
-     * @param bool $echo
239
-     * @param bool $formatted
240
-     * @return string
241
-     */
242
-    public static function displayResults($echo = true, $formatted = true)
243
-    {
244
-        $results = Benchmark::generateResults($formatted);
245
-        if ($echo) {
246
-            echo $results;
247
-            $results = '';
248
-        }
249
-        return $results;
250
-    }
251
-
252
-
253
-    /**
254
-     * @param string $filepath
255
-     * @param bool   $formatted
256
-     * @param bool   $append
257
-     * @throws EE_Error
258
-     */
259
-    public static function writeResultsToFile($filepath = '', $formatted = true, $append = true)
260
-    {
261
-        $filepath = ! empty($filepath) && is_readable(dirname($filepath))
262
-            ? $filepath
263
-            : '';
264
-        if (empty($filepath)) {
265
-            $filepath = EVENT_ESPRESSO_UPLOAD_DIR . 'logs/benchmarking-' . date('Y-m-d') . '.html';
266
-        }
267
-        EEH_File::ensure_file_exists_and_is_writable($filepath);
268
-        file_put_contents(
269
-            $filepath,
270
-            "\n" . date('Y-m-d H:i:s') . Benchmark::generateResults($formatted),
271
-            $append ? FILE_APPEND | LOCK_EX : LOCK_EX
272
-        );
273
-    }
274
-
275
-
276
-    /**
277
-     * Converts a measure of memory bytes into the most logical units (eg kb, mb, etc)
278
-     *
279
-     * @param int $size
280
-     * @return string
281
-     */
282
-    public static function convert($size)
283
-    {
284
-        $unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
285
-        return round(
286
-            $size / pow(1024, $i = floor(log($size, 1024))),
287
-            2
288
-        ) . ' ' . $unit[ absint($i) ];
289
-    }
290
-
291
-
292
-    /**
293
-     * @param string $timer_name
294
-     * @param float  $total_time
295
-     * @param bool   $formatted
296
-     * @return string
297
-     */
298
-    public static function formatTime($timer_name, $total_time, $formatted = true)
299
-    {
300
-        $total_time *= 1000;
301
-        switch ($total_time) {
302
-            case $total_time > 12500:
303
-                $color = 'red';
304
-                $bold = 'bold';
305
-                break;
306
-            case $total_time > 2500:
307
-                $color = 'darkorange';
308
-                $bold = 'bold';
309
-                break;
310
-            case $total_time > 500:
311
-                $color = 'gold';
312
-                $bold = 'bold';
313
-                break;
314
-            case $total_time > 100:
315
-                $color = 'limegreen';
316
-                $bold = 'normal';
317
-                break;
318
-            case $total_time > 20:
319
-                $color = 'deepskyblue';
320
-                $bold = 'normal';
321
-                break;
322
-            default:
323
-                $color = 'mediumpurple';
324
-                $bold = 'normal';
325
-                break;
326
-        }
327
-        return $formatted
328
-            ? '<span style="min-width: 10px; margin:0 1em; color:'
329
-              . $color
330
-              . '; font-weight:'
331
-              . $bold
332
-              . '; font-size:1.2em;">'
333
-              . str_pad(number_format($total_time, 3), 9, '0', STR_PAD_LEFT)
334
-              . '</span> '
335
-              . $timer_name
336
-            : str_pad(number_format($total_time, 3), 9, '0', STR_PAD_LEFT);
337
-    }
18
+	/**
19
+	 * @var string $output
20
+	 */
21
+	private static $output;
22
+
23
+	/**
24
+	 * @var array $start_times array containing the start time for the timers
25
+	 */
26
+	private static $start_times;
27
+
28
+	/**
29
+	 * @var array $times array containing all the timer'd times, which can be outputted via show_times()
30
+	 */
31
+	private static $times = array();
32
+
33
+	/**
34
+	 * @var array $memory_usage
35
+	 */
36
+	protected static $memory_usage = array();
37
+
38
+
39
+	/**
40
+	 * @param string $output
41
+	 * @param bool   $formatted
42
+	 */
43
+	public static function addOutput($output, $formatted = true)
44
+	{
45
+		Benchmark::$output .= $formatted
46
+			? "<br />{$output}"
47
+			: "\n{$output}";
48
+	}
49
+
50
+
51
+	/**
52
+	 * @return void
53
+	 */
54
+	public static function resetOutput()
55
+	{
56
+		Benchmark::$output = '';
57
+	}
58
+
59
+	/**
60
+	 * whether to benchmark code or not
61
+	 */
62
+	public static function doNotRun()
63
+	{
64
+		return ! WP_DEBUG || (defined('DOING_AJAX') && DOING_AJAX);
65
+	}
66
+
67
+
68
+	/**
69
+	 * resetTimes
70
+	 */
71
+	public static function resetTimes()
72
+	{
73
+		Benchmark::$times = array();
74
+	}
75
+
76
+
77
+	/**
78
+	 * Add Benchmark::startTimer() before a block of code you want to measure the performance of
79
+	 *
80
+	 * @param null $timer_name
81
+	 */
82
+	public static function startTimer($timer_name = null)
83
+	{
84
+		if (Benchmark::doNotRun()) {
85
+			return;
86
+		}
87
+		$timer_name = $timer_name !== '' ? $timer_name : get_called_class();
88
+		Benchmark::$start_times[ $timer_name ] = microtime(true);
89
+	}
90
+
91
+
92
+	/**
93
+	 * Add Benchmark::stopTimer() after a block of code you want to measure the performance of
94
+	 *
95
+	 * @param string $timer_name
96
+	 */
97
+	public static function stopTimer($timer_name = '')
98
+	{
99
+		if (Benchmark::doNotRun()) {
100
+			return;
101
+		}
102
+		$timer_name = $timer_name !== '' ? $timer_name : get_called_class();
103
+		if (isset(Benchmark::$start_times[ $timer_name ])) {
104
+			$start_time = Benchmark::$start_times[ $timer_name ];
105
+			unset(Benchmark::$start_times[ $timer_name ]);
106
+		} else {
107
+			$start_time = array_pop(Benchmark::$start_times);
108
+		}
109
+		Benchmark::$times[ $timer_name ] = number_format(microtime(true) - $start_time, 8);
110
+	}
111
+
112
+
113
+	/**
114
+	 * Measure the memory usage by PHP so far.
115
+	 *
116
+	 * @param string  $label      The label to show for this time eg "Start of calling Some_Class::some_function"
117
+	 * @param boolean $output_now whether to echo now, or wait until EEH_Debug_Tools::show_times() is called
118
+	 * @param bool    $formatted
119
+	 * @return void
120
+	 */
121
+	public static function measureMemory($label = 'memory usage', $output_now = false, $formatted = true)
122
+	{
123
+		if (Benchmark::doNotRun()) {
124
+			return;
125
+		}
126
+		$memory_used = Benchmark::convert(memory_get_usage(true));
127
+		Benchmark::$memory_usage[ $label ] = $memory_used;
128
+		if ($output_now) {
129
+			echo $formatted
130
+				? "<br>{$label} : {$memory_used}"
131
+				: "\n {$label} : {$memory_used}";
132
+		}
133
+	}
134
+
135
+
136
+	/**
137
+	 * will display the benchmarking results at shutdown
138
+	 *
139
+	 * @param bool $formatted
140
+	 * @return void
141
+	 */
142
+	public static function displayResultsAtShutdown($formatted = true)
143
+	{
144
+		Benchmark::resetOutput();
145
+		add_action(
146
+			'shutdown',
147
+			function () use ($formatted) {
148
+				Benchmark::displayResults(true, $formatted);
149
+			},
150
+			999999
151
+		);
152
+	}
153
+
154
+
155
+	/**
156
+	 * will display the benchmarking results at shutdown
157
+	 *
158
+	 * @param string $filepath
159
+	 * @param bool   $formatted
160
+	 * @param bool   $append
161
+	 * @return void
162
+	 */
163
+	public static function writeResultsAtShutdown($filepath = '', $formatted = true, $append = true)
164
+	{
165
+		Benchmark::resetOutput();
166
+		add_action(
167
+			'shutdown',
168
+			function () use ($filepath, $formatted, $append) {
169
+				Benchmark::writeResultsToFile($filepath, $formatted, $append);
170
+			},
171
+			999999
172
+		);
173
+	}
174
+
175
+
176
+	/**
177
+	 * @param bool $formatted
178
+	 * @return string
179
+	 */
180
+	private static function generateResults($formatted = true)
181
+	{
182
+		if (Benchmark::doNotRun()) {
183
+			return '';
184
+		}
185
+		if (! empty(Benchmark::$times)) {
186
+			$total = 0;
187
+			Benchmark::$output .= $formatted
188
+				? '<span style="color:#999999; font-size:.8em;">( time in milliseconds )</span><br />'
189
+				: '';
190
+			foreach (Benchmark::$times as $timer_name => $total_time) {
191
+				Benchmark::$output .= Benchmark::formatTime($timer_name, $total_time, $formatted);
192
+				Benchmark::$output .= $formatted ? '<br />' : "\n";
193
+				$total += $total_time;
194
+			}
195
+			if ($formatted) {
196
+				Benchmark::$output .= '<br />';
197
+				Benchmark::$output .= '<h4>TOTAL TIME</h4>';
198
+				Benchmark::$output .= Benchmark::formatTime('', $total, $formatted);
199
+				Benchmark::$output .= '<span style="color:#999999; font-size:.8em;"> milliseconds</span><br />';
200
+				Benchmark::$output .= '<br />';
201
+				Benchmark::$output .= '<h5>Performance scale (from best to worse)</h5>';
202
+				Benchmark::$output .= '<span style="color:mediumpurple">Like wow! How about a Scooby snack?</span><br />';
203
+				Benchmark::$output .= '<span style="color:deepskyblue">Like...no way man!</span><br />';
204
+				Benchmark::$output .= '<span style="color:limegreen">Like...groovy!</span><br />';
205
+				Benchmark::$output .= '<span style="color:gold">Ruh Oh</span><br />';
206
+				Benchmark::$output .= '<span style="color:darkorange">Zoinks!</span><br />';
207
+				Benchmark::$output .= '<span style="color:red">Like...HEEELLLP</span><br />';
208
+			}
209
+		}
210
+		if (! empty(Benchmark::$memory_usage)) {
211
+			Benchmark::$output .= $formatted
212
+				? '<h5>Memory</h5>'
213
+				: "\nMemory";
214
+			foreach (Benchmark::$memory_usage as $label => $memory_usage) {
215
+				Benchmark::$output .= $formatted
216
+					? "<br />{$memory_usage} : {$label}"
217
+					: "\n{$memory_usage} : {$label}";
218
+			}
219
+		}
220
+		if (empty(Benchmark::$output)) {
221
+			return '';
222
+		}
223
+		Benchmark::$output = $formatted
224
+			? '<div style="border:1px solid #dddddd; background-color:#ffffff;'
225
+			  . (is_admin()
226
+				? ' margin:2em 2em 2em 180px;'
227
+				: ' margin:2em;')
228
+			  . ' padding:2em;">'
229
+			  . '<h4>BENCHMARKING</h4>'
230
+			  . Benchmark::$output
231
+			  . '</div>'
232
+			: Benchmark::$output;
233
+		return Benchmark::$output;
234
+	}
235
+
236
+
237
+	/**
238
+	 * @param bool $echo
239
+	 * @param bool $formatted
240
+	 * @return string
241
+	 */
242
+	public static function displayResults($echo = true, $formatted = true)
243
+	{
244
+		$results = Benchmark::generateResults($formatted);
245
+		if ($echo) {
246
+			echo $results;
247
+			$results = '';
248
+		}
249
+		return $results;
250
+	}
251
+
252
+
253
+	/**
254
+	 * @param string $filepath
255
+	 * @param bool   $formatted
256
+	 * @param bool   $append
257
+	 * @throws EE_Error
258
+	 */
259
+	public static function writeResultsToFile($filepath = '', $formatted = true, $append = true)
260
+	{
261
+		$filepath = ! empty($filepath) && is_readable(dirname($filepath))
262
+			? $filepath
263
+			: '';
264
+		if (empty($filepath)) {
265
+			$filepath = EVENT_ESPRESSO_UPLOAD_DIR . 'logs/benchmarking-' . date('Y-m-d') . '.html';
266
+		}
267
+		EEH_File::ensure_file_exists_and_is_writable($filepath);
268
+		file_put_contents(
269
+			$filepath,
270
+			"\n" . date('Y-m-d H:i:s') . Benchmark::generateResults($formatted),
271
+			$append ? FILE_APPEND | LOCK_EX : LOCK_EX
272
+		);
273
+	}
274
+
275
+
276
+	/**
277
+	 * Converts a measure of memory bytes into the most logical units (eg kb, mb, etc)
278
+	 *
279
+	 * @param int $size
280
+	 * @return string
281
+	 */
282
+	public static function convert($size)
283
+	{
284
+		$unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
285
+		return round(
286
+			$size / pow(1024, $i = floor(log($size, 1024))),
287
+			2
288
+		) . ' ' . $unit[ absint($i) ];
289
+	}
290
+
291
+
292
+	/**
293
+	 * @param string $timer_name
294
+	 * @param float  $total_time
295
+	 * @param bool   $formatted
296
+	 * @return string
297
+	 */
298
+	public static function formatTime($timer_name, $total_time, $formatted = true)
299
+	{
300
+		$total_time *= 1000;
301
+		switch ($total_time) {
302
+			case $total_time > 12500:
303
+				$color = 'red';
304
+				$bold = 'bold';
305
+				break;
306
+			case $total_time > 2500:
307
+				$color = 'darkorange';
308
+				$bold = 'bold';
309
+				break;
310
+			case $total_time > 500:
311
+				$color = 'gold';
312
+				$bold = 'bold';
313
+				break;
314
+			case $total_time > 100:
315
+				$color = 'limegreen';
316
+				$bold = 'normal';
317
+				break;
318
+			case $total_time > 20:
319
+				$color = 'deepskyblue';
320
+				$bold = 'normal';
321
+				break;
322
+			default:
323
+				$color = 'mediumpurple';
324
+				$bold = 'normal';
325
+				break;
326
+		}
327
+		return $formatted
328
+			? '<span style="min-width: 10px; margin:0 1em; color:'
329
+			  . $color
330
+			  . '; font-weight:'
331
+			  . $bold
332
+			  . '; font-size:1.2em;">'
333
+			  . str_pad(number_format($total_time, 3), 9, '0', STR_PAD_LEFT)
334
+			  . '</span> '
335
+			  . $timer_name
336
+			: str_pad(number_format($total_time, 3), 9, '0', STR_PAD_LEFT);
337
+	}
338 338
 }
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -85,7 +85,7 @@  discard block
 block discarded – undo
85 85
             return;
86 86
         }
87 87
         $timer_name = $timer_name !== '' ? $timer_name : get_called_class();
88
-        Benchmark::$start_times[ $timer_name ] = microtime(true);
88
+        Benchmark::$start_times[$timer_name] = microtime(true);
89 89
     }
90 90
 
91 91
 
@@ -100,13 +100,13 @@  discard block
 block discarded – undo
100 100
             return;
101 101
         }
102 102
         $timer_name = $timer_name !== '' ? $timer_name : get_called_class();
103
-        if (isset(Benchmark::$start_times[ $timer_name ])) {
104
-            $start_time = Benchmark::$start_times[ $timer_name ];
105
-            unset(Benchmark::$start_times[ $timer_name ]);
103
+        if (isset(Benchmark::$start_times[$timer_name])) {
104
+            $start_time = Benchmark::$start_times[$timer_name];
105
+            unset(Benchmark::$start_times[$timer_name]);
106 106
         } else {
107 107
             $start_time = array_pop(Benchmark::$start_times);
108 108
         }
109
-        Benchmark::$times[ $timer_name ] = number_format(microtime(true) - $start_time, 8);
109
+        Benchmark::$times[$timer_name] = number_format(microtime(true) - $start_time, 8);
110 110
     }
111 111
 
112 112
 
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
             return;
125 125
         }
126 126
         $memory_used = Benchmark::convert(memory_get_usage(true));
127
-        Benchmark::$memory_usage[ $label ] = $memory_used;
127
+        Benchmark::$memory_usage[$label] = $memory_used;
128 128
         if ($output_now) {
129 129
             echo $formatted
130 130
                 ? "<br>{$label} : {$memory_used}"
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
         Benchmark::resetOutput();
145 145
         add_action(
146 146
             'shutdown',
147
-            function () use ($formatted) {
147
+            function() use ($formatted) {
148 148
                 Benchmark::displayResults(true, $formatted);
149 149
             },
150 150
             999999
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
         Benchmark::resetOutput();
166 166
         add_action(
167 167
             'shutdown',
168
-            function () use ($filepath, $formatted, $append) {
168
+            function() use ($filepath, $formatted, $append) {
169 169
                 Benchmark::writeResultsToFile($filepath, $formatted, $append);
170 170
             },
171 171
             999999
@@ -182,7 +182,7 @@  discard block
 block discarded – undo
182 182
         if (Benchmark::doNotRun()) {
183 183
             return '';
184 184
         }
185
-        if (! empty(Benchmark::$times)) {
185
+        if ( ! empty(Benchmark::$times)) {
186 186
             $total = 0;
187 187
             Benchmark::$output .= $formatted
188 188
                 ? '<span style="color:#999999; font-size:.8em;">( time in milliseconds )</span><br />'
@@ -207,7 +207,7 @@  discard block
 block discarded – undo
207 207
                 Benchmark::$output .= '<span style="color:red">Like...HEEELLLP</span><br />';
208 208
             }
209 209
         }
210
-        if (! empty(Benchmark::$memory_usage)) {
210
+        if ( ! empty(Benchmark::$memory_usage)) {
211 211
             Benchmark::$output .= $formatted
212 212
                 ? '<h5>Memory</h5>'
213 213
                 : "\nMemory";
@@ -262,12 +262,12 @@  discard block
 block discarded – undo
262 262
             ? $filepath
263 263
             : '';
264 264
         if (empty($filepath)) {
265
-            $filepath = EVENT_ESPRESSO_UPLOAD_DIR . 'logs/benchmarking-' . date('Y-m-d') . '.html';
265
+            $filepath = EVENT_ESPRESSO_UPLOAD_DIR.'logs/benchmarking-'.date('Y-m-d').'.html';
266 266
         }
267 267
         EEH_File::ensure_file_exists_and_is_writable($filepath);
268 268
         file_put_contents(
269 269
             $filepath,
270
-            "\n" . date('Y-m-d H:i:s') . Benchmark::generateResults($formatted),
270
+            "\n".date('Y-m-d H:i:s').Benchmark::generateResults($formatted),
271 271
             $append ? FILE_APPEND | LOCK_EX : LOCK_EX
272 272
         );
273 273
     }
@@ -285,7 +285,7 @@  discard block
 block discarded – undo
285 285
         return round(
286 286
             $size / pow(1024, $i = floor(log($size, 1024))),
287 287
             2
288
-        ) . ' ' . $unit[ absint($i) ];
288
+        ).' '.$unit[absint($i)];
289 289
     }
290 290
 
291 291
 
Please login to merge, or discard this patch.
core/services/container/CoffeeShop.php 2 patches
Indentation   +565 added lines, -565 removed lines patch added patch discarded remove patch
@@ -30,569 +30,569 @@
 block discarded – undo
30 30
 {
31 31
 
32 32
 
33
-    /**
34
-     * This was the best coffee related name I could think of to represent class name "aliases"
35
-     * So classes can be found via an alias identifier,
36
-     * that is revealed when it is run through... the filters... eh? get it?
37
-     *
38
-     * @var array $filters
39
-     */
40
-    private $filters;
41
-
42
-    /**
43
-     * These are the classes that will actually build the objects (to order of course)
44
-     *
45
-     * @var array $coffee_makers
46
-     */
47
-    private $coffee_makers;
48
-
49
-    /**
50
-     * where the instantiated "singleton" objects are stored
51
-     *
52
-     * @var CollectionInterface $carafe
53
-     */
54
-    private $carafe;
55
-
56
-    /**
57
-     * collection of Recipes that instruct us how to brew objects
58
-     *
59
-     * @var CollectionInterface $recipes
60
-     */
61
-    private $recipes;
62
-
63
-    /**
64
-     * collection of closures for brewing objects
65
-     *
66
-     * @var CollectionInterface $reservoir
67
-     */
68
-    private $reservoir;
69
-
70
-
71
-    /**
72
-     * CoffeeShop constructor
73
-     *
74
-     * @throws InvalidInterfaceException
75
-     */
76
-    public function __construct()
77
-    {
78
-        // array for storing class aliases
79
-        $this->filters = array();
80
-        // create collection for storing shared services
81
-        $this->carafe = new LooseCollection('');
82
-        // create collection for storing recipes that tell us how to build services and entities
83
-        $this->recipes = new Collection('EventEspresso\core\services\container\RecipeInterface');
84
-        // create collection for storing closures for constructing new entities
85
-        $this->reservoir = new Collection('Closure');
86
-        // create collection for storing the generators that build our services and entity closures
87
-        $this->coffee_makers = new Collection('EventEspresso\core\services\container\CoffeeMakerInterface');
88
-    }
89
-
90
-
91
-    /**
92
-     * Returns true if the container can return an entry for the given identifier.
93
-     * Returns false otherwise.
94
-     * `has($identifier)` returning true does not mean that `get($identifier)` will not throw an exception.
95
-     * It does however mean that `get($identifier)` will not throw a `ServiceNotFoundException`.
96
-     *
97
-     * @param string $identifier  Identifier of the entry to look for.
98
-     *                            Typically a Fully Qualified Class Name
99
-     * @return boolean
100
-     * @throws InvalidIdentifierException
101
-     */
102
-    public function has($identifier)
103
-    {
104
-        $identifier = $this->filterIdentifier($identifier);
105
-        return $this->carafe->has($identifier);
106
-    }
107
-
108
-
109
-    /**
110
-     * finds a previously brewed (SHARED) service and returns it
111
-     *
112
-     * @param  string $identifier Identifier for the entity class to be constructed.
113
-     *                            Typically a Fully Qualified Class Name
114
-     * @return mixed
115
-     * @throws InvalidIdentifierException
116
-     * @throws ServiceNotFoundException No service was found for this identifier.
117
-     */
118
-    public function get($identifier)
119
-    {
120
-        $identifier = $this->filterIdentifier($identifier);
121
-        if ($this->carafe->has($identifier)) {
122
-            return $this->carafe->get($identifier);
123
-        }
124
-        throw new ServiceNotFoundException($identifier);
125
-    }
126
-
127
-
128
-    /**
129
-     * returns an instance of the requested entity type using the supplied arguments.
130
-     * If a shared service is requested and an instance is already in the carafe, then it will be returned.
131
-     * If it is not already in the carafe, then the service will be constructed, added to the carafe, and returned
132
-     * If the request is for a new entity and a closure exists in the reservoir for creating it,
133
-     * then a new entity will be instantiated from the closure and returned.
134
-     * If a closure does not exist, then one will be built and added to the reservoir
135
-     * before instantiating the requested entity.
136
-     *
137
-     * @param  string $identifier Identifier for the entity class to be constructed.
138
-     *                            Typically a Fully Qualified Class Name
139
-     * @param array   $arguments  an array of arguments to be passed to the entity constructor
140
-     * @param string  $type
141
-     * @return mixed
142
-     * @throws OutOfBoundsException
143
-     * @throws InstantiationException
144
-     * @throws InvalidDataTypeException
145
-     * @throws InvalidClassException
146
-     * @throws InvalidIdentifierException
147
-     * @throws ServiceExistsException
148
-     * @throws ServiceNotFoundException No service was found for this identifier.
149
-     */
150
-    public function brew($identifier, $arguments = array(), $type = '')
151
-    {
152
-        // resolve any class aliases that may exist
153
-        $identifier = $this->filterIdentifier($identifier);
154
-        // is a shared service being requested and already exists in the carafe?
155
-        $brewed = $this->getShared($identifier, $type);
156
-        // then return whatever was found
157
-        if ($brewed !== false) {
158
-            return $brewed;
159
-        }
160
-        // if the reservoir doesn't have a closure already for the requested identifier,
161
-        // then neither a shared service nor a closure for making entities has been built yet
162
-        if (! $this->reservoir->has($identifier)) {
163
-            // so let's brew something up and add it to the proper collection
164
-            $brewed = $this->makeCoffee($identifier, $arguments, $type);
165
-        }
166
-        // did the requested class only require loading, and if so, was that successful?
167
-        if ($this->brewedLoadOnly($brewed, $identifier, $type) === true) {
168
-            return true;
169
-        }
170
-        // was the brewed item a callable factory function ?
171
-        if (is_callable($brewed)) {
172
-            // then instantiate a new entity from the cached closure
173
-            return $brewed($arguments);
174
-        }
175
-        if ($brewed) {
176
-            // requested object was a shared entity, so attempt to get it from the carafe again
177
-            // because if it wasn't there before, then it should have just been brewed and added,
178
-            // but if it still isn't there, then this time the thrown ServiceNotFoundException will not be caught
179
-            return $this->get($identifier);
180
-        }
181
-        // if identifier is for a non-shared entity,
182
-        // then either a cached closure already existed, or was just brewed
183
-        return $this->brewedClosure($identifier, $arguments);
184
-    }
185
-
186
-
187
-    /**
188
-     * @param string $identifier
189
-     * @param string $type
190
-     * @return bool|mixed
191
-     * @throws InvalidIdentifierException
192
-     */
193
-    protected function getShared($identifier, $type)
194
-    {
195
-        try {
196
-            if (empty($type) || $type === CoffeeMaker::BREW_SHARED) {
197
-                // if a shared service was requested and an instance is in the carafe, then return it
198
-                return $this->get($identifier);
199
-            }
200
-        } catch (ServiceNotFoundException $e) {
201
-            // if not then we'll just catch the ServiceNotFoundException but not do anything just yet,
202
-            // and instead, attempt to build whatever was requested
203
-        }
204
-        return false;
205
-    }
206
-
207
-
208
-    /**
209
-     * @param mixed  $brewed
210
-     * @param string $identifier
211
-     * @param string $type
212
-     * @return bool
213
-     * @throws InvalidClassException
214
-     * @throws InvalidDataTypeException
215
-     * @throws InvalidIdentifierException
216
-     * @throws OutOfBoundsException
217
-     * @throws ServiceExistsException
218
-     * @throws ServiceNotFoundException
219
-     */
220
-    protected function brewedLoadOnly($brewed, $identifier, $type)
221
-    {
222
-        if ($type === CoffeeMaker::BREW_LOAD_ONLY) {
223
-            if ($brewed !== true) {
224
-                throw new ServiceNotFoundException(
225
-                    sprintf(
226
-                        esc_html__(
227
-                            'The "%1$s" class could not be loaded.',
228
-                            'event_espresso'
229
-                        ),
230
-                        $identifier
231
-                    )
232
-                );
233
-            }
234
-            return true;
235
-        }
236
-        return false;
237
-    }
238
-
239
-
240
-    /**
241
-     * @param string $identifier
242
-     * @param array  $arguments
243
-     * @return mixed
244
-     * @throws InstantiationException
245
-     */
246
-    protected function brewedClosure($identifier, array $arguments)
247
-    {
248
-        $closure = $this->reservoir->get($identifier);
249
-        if (empty($closure)) {
250
-            throw new InstantiationException(
251
-                sprintf(
252
-                    esc_html__(
253
-                        'Could not brew an instance of "%1$s".',
254
-                        'event_espresso'
255
-                    ),
256
-                    $identifier
257
-                )
258
-            );
259
-        }
260
-        return $closure($arguments);
261
-    }
262
-
263
-
264
-    /**
265
-     * @param CoffeeMakerInterface $coffee_maker
266
-     * @param string               $type
267
-     * @return bool
268
-     * @throws InvalidIdentifierException
269
-     * @throws InvalidEntityException
270
-     */
271
-    public function addCoffeeMaker(CoffeeMakerInterface $coffee_maker, $type)
272
-    {
273
-        $type = CoffeeMaker::validateType($type);
274
-        return $this->coffee_makers->add($coffee_maker, $type);
275
-    }
276
-
277
-
278
-    /**
279
-     * @param string   $identifier
280
-     * @param callable $closure
281
-     * @return callable|null
282
-     * @throws InvalidIdentifierException
283
-     * @throws InvalidDataTypeException
284
-     */
285
-    public function addClosure($identifier, $closure)
286
-    {
287
-        if (! is_callable($closure)) {
288
-            throw new InvalidDataTypeException('$closure', $closure, 'Closure');
289
-        }
290
-        $identifier = $this->processIdentifier($identifier);
291
-        if ($this->reservoir->add($closure, $identifier)) {
292
-            return $closure;
293
-        }
294
-        return null;
295
-    }
296
-
297
-
298
-    /**
299
-     * @param string $identifier
300
-     * @return boolean
301
-     * @throws InvalidIdentifierException
302
-     */
303
-    public function removeClosure($identifier)
304
-    {
305
-        $identifier = $this->processIdentifier($identifier);
306
-        if ($this->reservoir->has($identifier)) {
307
-            return $this->reservoir->remove($this->reservoir->get($identifier));
308
-        }
309
-        return false;
310
-    }
311
-
312
-
313
-    /**
314
-     * @param  string $identifier Identifier for the entity class that the service applies to
315
-     *                            Typically a Fully Qualified Class Name
316
-     * @param mixed   $service
317
-     * @return bool
318
-     * @throws \EventEspresso\core\services\container\exceptions\InvalidServiceException
319
-     * @throws InvalidIdentifierException
320
-     */
321
-    public function addService($identifier, $service)
322
-    {
323
-        $identifier = $this->processIdentifier($identifier);
324
-        $service = $this->validateService($identifier, $service);
325
-        return $this->carafe->add($service, $identifier);
326
-    }
327
-
328
-
329
-    /**
330
-     * @param string $identifier
331
-     * @return boolean
332
-     * @throws InvalidIdentifierException
333
-     */
334
-    public function removeService($identifier)
335
-    {
336
-        $identifier = $this->processIdentifier($identifier);
337
-        if ($this->carafe->has($identifier)) {
338
-            return $this->carafe->remove($this->carafe->get($identifier));
339
-        }
340
-        return false;
341
-    }
342
-
343
-
344
-    /**
345
-     * Adds instructions on how to brew objects
346
-     *
347
-     * @param RecipeInterface $recipe
348
-     * @return mixed
349
-     * @throws InvalidIdentifierException
350
-     */
351
-    public function addRecipe(RecipeInterface $recipe)
352
-    {
353
-        $this->addAliases($recipe->identifier(), $recipe->filters());
354
-        $identifier = $this->processIdentifier($recipe->identifier());
355
-        return $this->recipes->add($recipe, $identifier);
356
-    }
357
-
358
-
359
-    /**
360
-     * @param string $identifier The Recipe's identifier
361
-     * @return boolean
362
-     * @throws InvalidIdentifierException
363
-     */
364
-    public function removeRecipe($identifier)
365
-    {
366
-        $identifier = $this->processIdentifier($identifier);
367
-        if ($this->recipes->has($identifier)) {
368
-            return $this->recipes->remove($this->recipes->get($identifier));
369
-        }
370
-        return false;
371
-    }
372
-
373
-
374
-    /**
375
-     * Get instructions on how to brew objects
376
-     *
377
-     * @param  string $identifier Identifier for the entity class that the recipe applies to
378
-     *                            Typically a Fully Qualified Class Name
379
-     * @param string  $type
380
-     * @return RecipeInterface
381
-     * @throws OutOfBoundsException
382
-     * @throws InvalidIdentifierException
383
-     */
384
-    public function getRecipe($identifier, $type = '')
385
-    {
386
-        $identifier = $this->processIdentifier($identifier);
387
-        if ($this->recipes->has($identifier)) {
388
-            return $this->recipes->get($identifier);
389
-        }
390
-        $default_recipes = $this->getDefaultRecipes();
391
-        $matches = array();
392
-        foreach ($default_recipes as $wildcard => $default_recipe) {
393
-            // is the wildcard recipe prefix in the identifier ?
394
-            if (strpos($identifier, $wildcard) !== false) {
395
-                // track matches and use the number of wildcard characters matched for the key
396
-                $matches[ strlen($wildcard) ] = $default_recipe;
397
-            }
398
-        }
399
-        if (count($matches) > 0) {
400
-            // sort our recipes by the number of wildcard characters matched
401
-            ksort($matches);
402
-            // then grab the last recipe form the list, since it had the most matching characters
403
-            $match = array_pop($matches);
404
-            // since we are using a default recipe, we need to set it's identifier and fqcn
405
-            return $this->copyDefaultRecipe($match, $identifier, $type);
406
-        }
407
-        if ($this->recipes->has(Recipe::DEFAULT_ID)) {
408
-            // since we are using a default recipe, we need to set it's identifier and fqcn
409
-            return $this->copyDefaultRecipe($this->recipes->get(Recipe::DEFAULT_ID), $identifier, $type);
410
-        }
411
-        throw new OutOfBoundsException(
412
-            sprintf(
413
-                __('Could not brew coffee because no recipes were found for class "%1$s".', 'event_espresso'),
414
-                $identifier
415
-            )
416
-        );
417
-    }
418
-
419
-
420
-    /**
421
-     * adds class name aliases to list of filters
422
-     *
423
-     * @param  string       $identifier Identifier for the entity class that the alias applies to
424
-     *                                  Typically a Fully Qualified Class Name
425
-     * @param  array|string $aliases
426
-     * @return void
427
-     * @throws InvalidIdentifierException
428
-     */
429
-    public function addAliases($identifier, $aliases)
430
-    {
431
-        if (empty($aliases)) {
432
-            return;
433
-        }
434
-        $identifier = $this->processIdentifier($identifier);
435
-        foreach ((array) $aliases as $alias) {
436
-            $this->filters[ $this->processIdentifier($alias) ] = $identifier;
437
-        }
438
-    }
439
-
440
-
441
-    /**
442
-     * Adds a service to one of the internal collections
443
-     *
444
-     * @param        $identifier
445
-     * @param array  $arguments
446
-     * @param string $type
447
-     * @return mixed
448
-     * @throws InvalidDataTypeException
449
-     * @throws InvalidClassException
450
-     * @throws OutOfBoundsException
451
-     * @throws InvalidIdentifierException
452
-     * @throws ServiceExistsException
453
-     */
454
-    private function makeCoffee($identifier, $arguments = array(), $type = '')
455
-    {
456
-        if ((empty($type) || $type === CoffeeMaker::BREW_SHARED) && $this->has($identifier)) {
457
-            throw new ServiceExistsException($identifier);
458
-        }
459
-        $identifier = $this->filterIdentifier($identifier);
460
-        $recipe = $this->getRecipe($identifier, $type);
461
-        $type = ! empty($type) ? $type : $recipe->type();
462
-        $coffee_maker = $this->getCoffeeMaker($type);
463
-        return $coffee_maker->brew($recipe, $arguments);
464
-    }
465
-
466
-
467
-    /**
468
-     * filters alias identifiers to find the real class name
469
-     *
470
-     * @param  string $identifier Identifier for the entity class that the filter applies to
471
-     *                            Typically a Fully Qualified Class Name
472
-     * @return string
473
-     * @throws InvalidIdentifierException
474
-     */
475
-    private function filterIdentifier($identifier)
476
-    {
477
-        $identifier = $this->processIdentifier($identifier);
478
-        return isset($this->filters[ $identifier ]) && ! empty($this->filters[ $identifier ])
479
-            ? $this->filters[ $identifier ]
480
-            : $identifier;
481
-    }
482
-
483
-
484
-    /**
485
-     * verifies and standardizes identifiers
486
-     *
487
-     * @param  string $identifier Identifier for the entity class
488
-     *                            Typically a Fully Qualified Class Name
489
-     * @return string
490
-     * @throws InvalidIdentifierException
491
-     */
492
-    private function processIdentifier($identifier)
493
-    {
494
-        if (! is_string($identifier)) {
495
-            throw new InvalidIdentifierException(
496
-                is_object($identifier) ? get_class($identifier) : gettype($identifier),
497
-                '\Fully\Qualified\ClassName'
498
-            );
499
-        }
500
-        return ltrim($identifier, '\\');
501
-    }
502
-
503
-
504
-    /**
505
-     * @param string $type
506
-     * @return CoffeeMakerInterface
507
-     * @throws OutOfBoundsException
508
-     * @throws InvalidDataTypeException
509
-     * @throws InvalidClassException
510
-     */
511
-    private function getCoffeeMaker($type)
512
-    {
513
-        if (! $this->coffee_makers->has($type)) {
514
-            throw new OutOfBoundsException(
515
-                __('The requested coffee maker is either missing or invalid.', 'event_espresso')
516
-            );
517
-        }
518
-        return $this->coffee_makers->get($type);
519
-    }
520
-
521
-
522
-    /**
523
-     * Retrieves all recipes that use a wildcard "*" in their identifier
524
-     * This allows recipes to be set up for handling
525
-     * legacy classes that do not support PSR-4 autoloading.
526
-     * for example:
527
-     * using "EEM_*" for a recipe identifier would target all legacy models like EEM_Attendee
528
-     *
529
-     * @return array
530
-     */
531
-    private function getDefaultRecipes()
532
-    {
533
-        $default_recipes = array();
534
-        $this->recipes->rewind();
535
-        while ($this->recipes->valid()) {
536
-            $identifier = $this->recipes->getInfo();
537
-            // does this recipe use a wildcard ? (but is NOT the global default)
538
-            if ($identifier !== Recipe::DEFAULT_ID && strpos($identifier, '*') !== false) {
539
-                // strip the wildcard and use identifier as key
540
-                $default_recipes[ str_replace('*', '', $identifier) ] = $this->recipes->current();
541
-            }
542
-            $this->recipes->next();
543
-        }
544
-        return $default_recipes;
545
-    }
546
-
547
-
548
-    /**
549
-     * clones a default recipe and then copies details
550
-     * from the incoming request to it so that it can be used
551
-     *
552
-     * @param RecipeInterface $default_recipe
553
-     * @param string          $identifier
554
-     * @param string          $type
555
-     * @return RecipeInterface
556
-     */
557
-    private function copyDefaultRecipe(RecipeInterface $default_recipe, $identifier, $type = '')
558
-    {
559
-        $recipe = clone $default_recipe;
560
-        if (! empty($type)) {
561
-            $recipe->setType($type);
562
-        }
563
-        // is this the base default recipe ?
564
-        if ($default_recipe->identifier() === Recipe::DEFAULT_ID) {
565
-            $recipe->setIdentifier($identifier);
566
-            $recipe->setFqcn($identifier);
567
-            return $recipe;
568
-        }
569
-        $recipe->setIdentifier($identifier);
570
-        foreach ($default_recipe->paths() as $path) {
571
-            $path = str_replace('*', $identifier, $path);
572
-            if (is_readable($path)) {
573
-                $recipe->setPaths($path);
574
-            }
575
-        }
576
-        $recipe->setFqcn($identifier);
577
-        return $recipe;
578
-    }
579
-
580
-
581
-    /**
582
-     * @param  string $identifier Identifier for the entity class that the service applies to
583
-     *                            Typically a Fully Qualified Class Name
584
-     * @param mixed   $service
585
-     * @return mixed
586
-     * @throws InvalidServiceException
587
-     */
588
-    private function validateService($identifier, $service)
589
-    {
590
-        if (! is_object($service)) {
591
-            throw new InvalidServiceException(
592
-                $identifier,
593
-                $service
594
-            );
595
-        }
596
-        return $service;
597
-    }
33
+	/**
34
+	 * This was the best coffee related name I could think of to represent class name "aliases"
35
+	 * So classes can be found via an alias identifier,
36
+	 * that is revealed when it is run through... the filters... eh? get it?
37
+	 *
38
+	 * @var array $filters
39
+	 */
40
+	private $filters;
41
+
42
+	/**
43
+	 * These are the classes that will actually build the objects (to order of course)
44
+	 *
45
+	 * @var array $coffee_makers
46
+	 */
47
+	private $coffee_makers;
48
+
49
+	/**
50
+	 * where the instantiated "singleton" objects are stored
51
+	 *
52
+	 * @var CollectionInterface $carafe
53
+	 */
54
+	private $carafe;
55
+
56
+	/**
57
+	 * collection of Recipes that instruct us how to brew objects
58
+	 *
59
+	 * @var CollectionInterface $recipes
60
+	 */
61
+	private $recipes;
62
+
63
+	/**
64
+	 * collection of closures for brewing objects
65
+	 *
66
+	 * @var CollectionInterface $reservoir
67
+	 */
68
+	private $reservoir;
69
+
70
+
71
+	/**
72
+	 * CoffeeShop constructor
73
+	 *
74
+	 * @throws InvalidInterfaceException
75
+	 */
76
+	public function __construct()
77
+	{
78
+		// array for storing class aliases
79
+		$this->filters = array();
80
+		// create collection for storing shared services
81
+		$this->carafe = new LooseCollection('');
82
+		// create collection for storing recipes that tell us how to build services and entities
83
+		$this->recipes = new Collection('EventEspresso\core\services\container\RecipeInterface');
84
+		// create collection for storing closures for constructing new entities
85
+		$this->reservoir = new Collection('Closure');
86
+		// create collection for storing the generators that build our services and entity closures
87
+		$this->coffee_makers = new Collection('EventEspresso\core\services\container\CoffeeMakerInterface');
88
+	}
89
+
90
+
91
+	/**
92
+	 * Returns true if the container can return an entry for the given identifier.
93
+	 * Returns false otherwise.
94
+	 * `has($identifier)` returning true does not mean that `get($identifier)` will not throw an exception.
95
+	 * It does however mean that `get($identifier)` will not throw a `ServiceNotFoundException`.
96
+	 *
97
+	 * @param string $identifier  Identifier of the entry to look for.
98
+	 *                            Typically a Fully Qualified Class Name
99
+	 * @return boolean
100
+	 * @throws InvalidIdentifierException
101
+	 */
102
+	public function has($identifier)
103
+	{
104
+		$identifier = $this->filterIdentifier($identifier);
105
+		return $this->carafe->has($identifier);
106
+	}
107
+
108
+
109
+	/**
110
+	 * finds a previously brewed (SHARED) service and returns it
111
+	 *
112
+	 * @param  string $identifier Identifier for the entity class to be constructed.
113
+	 *                            Typically a Fully Qualified Class Name
114
+	 * @return mixed
115
+	 * @throws InvalidIdentifierException
116
+	 * @throws ServiceNotFoundException No service was found for this identifier.
117
+	 */
118
+	public function get($identifier)
119
+	{
120
+		$identifier = $this->filterIdentifier($identifier);
121
+		if ($this->carafe->has($identifier)) {
122
+			return $this->carafe->get($identifier);
123
+		}
124
+		throw new ServiceNotFoundException($identifier);
125
+	}
126
+
127
+
128
+	/**
129
+	 * returns an instance of the requested entity type using the supplied arguments.
130
+	 * If a shared service is requested and an instance is already in the carafe, then it will be returned.
131
+	 * If it is not already in the carafe, then the service will be constructed, added to the carafe, and returned
132
+	 * If the request is for a new entity and a closure exists in the reservoir for creating it,
133
+	 * then a new entity will be instantiated from the closure and returned.
134
+	 * If a closure does not exist, then one will be built and added to the reservoir
135
+	 * before instantiating the requested entity.
136
+	 *
137
+	 * @param  string $identifier Identifier for the entity class to be constructed.
138
+	 *                            Typically a Fully Qualified Class Name
139
+	 * @param array   $arguments  an array of arguments to be passed to the entity constructor
140
+	 * @param string  $type
141
+	 * @return mixed
142
+	 * @throws OutOfBoundsException
143
+	 * @throws InstantiationException
144
+	 * @throws InvalidDataTypeException
145
+	 * @throws InvalidClassException
146
+	 * @throws InvalidIdentifierException
147
+	 * @throws ServiceExistsException
148
+	 * @throws ServiceNotFoundException No service was found for this identifier.
149
+	 */
150
+	public function brew($identifier, $arguments = array(), $type = '')
151
+	{
152
+		// resolve any class aliases that may exist
153
+		$identifier = $this->filterIdentifier($identifier);
154
+		// is a shared service being requested and already exists in the carafe?
155
+		$brewed = $this->getShared($identifier, $type);
156
+		// then return whatever was found
157
+		if ($brewed !== false) {
158
+			return $brewed;
159
+		}
160
+		// if the reservoir doesn't have a closure already for the requested identifier,
161
+		// then neither a shared service nor a closure for making entities has been built yet
162
+		if (! $this->reservoir->has($identifier)) {
163
+			// so let's brew something up and add it to the proper collection
164
+			$brewed = $this->makeCoffee($identifier, $arguments, $type);
165
+		}
166
+		// did the requested class only require loading, and if so, was that successful?
167
+		if ($this->brewedLoadOnly($brewed, $identifier, $type) === true) {
168
+			return true;
169
+		}
170
+		// was the brewed item a callable factory function ?
171
+		if (is_callable($brewed)) {
172
+			// then instantiate a new entity from the cached closure
173
+			return $brewed($arguments);
174
+		}
175
+		if ($brewed) {
176
+			// requested object was a shared entity, so attempt to get it from the carafe again
177
+			// because if it wasn't there before, then it should have just been brewed and added,
178
+			// but if it still isn't there, then this time the thrown ServiceNotFoundException will not be caught
179
+			return $this->get($identifier);
180
+		}
181
+		// if identifier is for a non-shared entity,
182
+		// then either a cached closure already existed, or was just brewed
183
+		return $this->brewedClosure($identifier, $arguments);
184
+	}
185
+
186
+
187
+	/**
188
+	 * @param string $identifier
189
+	 * @param string $type
190
+	 * @return bool|mixed
191
+	 * @throws InvalidIdentifierException
192
+	 */
193
+	protected function getShared($identifier, $type)
194
+	{
195
+		try {
196
+			if (empty($type) || $type === CoffeeMaker::BREW_SHARED) {
197
+				// if a shared service was requested and an instance is in the carafe, then return it
198
+				return $this->get($identifier);
199
+			}
200
+		} catch (ServiceNotFoundException $e) {
201
+			// if not then we'll just catch the ServiceNotFoundException but not do anything just yet,
202
+			// and instead, attempt to build whatever was requested
203
+		}
204
+		return false;
205
+	}
206
+
207
+
208
+	/**
209
+	 * @param mixed  $brewed
210
+	 * @param string $identifier
211
+	 * @param string $type
212
+	 * @return bool
213
+	 * @throws InvalidClassException
214
+	 * @throws InvalidDataTypeException
215
+	 * @throws InvalidIdentifierException
216
+	 * @throws OutOfBoundsException
217
+	 * @throws ServiceExistsException
218
+	 * @throws ServiceNotFoundException
219
+	 */
220
+	protected function brewedLoadOnly($brewed, $identifier, $type)
221
+	{
222
+		if ($type === CoffeeMaker::BREW_LOAD_ONLY) {
223
+			if ($brewed !== true) {
224
+				throw new ServiceNotFoundException(
225
+					sprintf(
226
+						esc_html__(
227
+							'The "%1$s" class could not be loaded.',
228
+							'event_espresso'
229
+						),
230
+						$identifier
231
+					)
232
+				);
233
+			}
234
+			return true;
235
+		}
236
+		return false;
237
+	}
238
+
239
+
240
+	/**
241
+	 * @param string $identifier
242
+	 * @param array  $arguments
243
+	 * @return mixed
244
+	 * @throws InstantiationException
245
+	 */
246
+	protected function brewedClosure($identifier, array $arguments)
247
+	{
248
+		$closure = $this->reservoir->get($identifier);
249
+		if (empty($closure)) {
250
+			throw new InstantiationException(
251
+				sprintf(
252
+					esc_html__(
253
+						'Could not brew an instance of "%1$s".',
254
+						'event_espresso'
255
+					),
256
+					$identifier
257
+				)
258
+			);
259
+		}
260
+		return $closure($arguments);
261
+	}
262
+
263
+
264
+	/**
265
+	 * @param CoffeeMakerInterface $coffee_maker
266
+	 * @param string               $type
267
+	 * @return bool
268
+	 * @throws InvalidIdentifierException
269
+	 * @throws InvalidEntityException
270
+	 */
271
+	public function addCoffeeMaker(CoffeeMakerInterface $coffee_maker, $type)
272
+	{
273
+		$type = CoffeeMaker::validateType($type);
274
+		return $this->coffee_makers->add($coffee_maker, $type);
275
+	}
276
+
277
+
278
+	/**
279
+	 * @param string   $identifier
280
+	 * @param callable $closure
281
+	 * @return callable|null
282
+	 * @throws InvalidIdentifierException
283
+	 * @throws InvalidDataTypeException
284
+	 */
285
+	public function addClosure($identifier, $closure)
286
+	{
287
+		if (! is_callable($closure)) {
288
+			throw new InvalidDataTypeException('$closure', $closure, 'Closure');
289
+		}
290
+		$identifier = $this->processIdentifier($identifier);
291
+		if ($this->reservoir->add($closure, $identifier)) {
292
+			return $closure;
293
+		}
294
+		return null;
295
+	}
296
+
297
+
298
+	/**
299
+	 * @param string $identifier
300
+	 * @return boolean
301
+	 * @throws InvalidIdentifierException
302
+	 */
303
+	public function removeClosure($identifier)
304
+	{
305
+		$identifier = $this->processIdentifier($identifier);
306
+		if ($this->reservoir->has($identifier)) {
307
+			return $this->reservoir->remove($this->reservoir->get($identifier));
308
+		}
309
+		return false;
310
+	}
311
+
312
+
313
+	/**
314
+	 * @param  string $identifier Identifier for the entity class that the service applies to
315
+	 *                            Typically a Fully Qualified Class Name
316
+	 * @param mixed   $service
317
+	 * @return bool
318
+	 * @throws \EventEspresso\core\services\container\exceptions\InvalidServiceException
319
+	 * @throws InvalidIdentifierException
320
+	 */
321
+	public function addService($identifier, $service)
322
+	{
323
+		$identifier = $this->processIdentifier($identifier);
324
+		$service = $this->validateService($identifier, $service);
325
+		return $this->carafe->add($service, $identifier);
326
+	}
327
+
328
+
329
+	/**
330
+	 * @param string $identifier
331
+	 * @return boolean
332
+	 * @throws InvalidIdentifierException
333
+	 */
334
+	public function removeService($identifier)
335
+	{
336
+		$identifier = $this->processIdentifier($identifier);
337
+		if ($this->carafe->has($identifier)) {
338
+			return $this->carafe->remove($this->carafe->get($identifier));
339
+		}
340
+		return false;
341
+	}
342
+
343
+
344
+	/**
345
+	 * Adds instructions on how to brew objects
346
+	 *
347
+	 * @param RecipeInterface $recipe
348
+	 * @return mixed
349
+	 * @throws InvalidIdentifierException
350
+	 */
351
+	public function addRecipe(RecipeInterface $recipe)
352
+	{
353
+		$this->addAliases($recipe->identifier(), $recipe->filters());
354
+		$identifier = $this->processIdentifier($recipe->identifier());
355
+		return $this->recipes->add($recipe, $identifier);
356
+	}
357
+
358
+
359
+	/**
360
+	 * @param string $identifier The Recipe's identifier
361
+	 * @return boolean
362
+	 * @throws InvalidIdentifierException
363
+	 */
364
+	public function removeRecipe($identifier)
365
+	{
366
+		$identifier = $this->processIdentifier($identifier);
367
+		if ($this->recipes->has($identifier)) {
368
+			return $this->recipes->remove($this->recipes->get($identifier));
369
+		}
370
+		return false;
371
+	}
372
+
373
+
374
+	/**
375
+	 * Get instructions on how to brew objects
376
+	 *
377
+	 * @param  string $identifier Identifier for the entity class that the recipe applies to
378
+	 *                            Typically a Fully Qualified Class Name
379
+	 * @param string  $type
380
+	 * @return RecipeInterface
381
+	 * @throws OutOfBoundsException
382
+	 * @throws InvalidIdentifierException
383
+	 */
384
+	public function getRecipe($identifier, $type = '')
385
+	{
386
+		$identifier = $this->processIdentifier($identifier);
387
+		if ($this->recipes->has($identifier)) {
388
+			return $this->recipes->get($identifier);
389
+		}
390
+		$default_recipes = $this->getDefaultRecipes();
391
+		$matches = array();
392
+		foreach ($default_recipes as $wildcard => $default_recipe) {
393
+			// is the wildcard recipe prefix in the identifier ?
394
+			if (strpos($identifier, $wildcard) !== false) {
395
+				// track matches and use the number of wildcard characters matched for the key
396
+				$matches[ strlen($wildcard) ] = $default_recipe;
397
+			}
398
+		}
399
+		if (count($matches) > 0) {
400
+			// sort our recipes by the number of wildcard characters matched
401
+			ksort($matches);
402
+			// then grab the last recipe form the list, since it had the most matching characters
403
+			$match = array_pop($matches);
404
+			// since we are using a default recipe, we need to set it's identifier and fqcn
405
+			return $this->copyDefaultRecipe($match, $identifier, $type);
406
+		}
407
+		if ($this->recipes->has(Recipe::DEFAULT_ID)) {
408
+			// since we are using a default recipe, we need to set it's identifier and fqcn
409
+			return $this->copyDefaultRecipe($this->recipes->get(Recipe::DEFAULT_ID), $identifier, $type);
410
+		}
411
+		throw new OutOfBoundsException(
412
+			sprintf(
413
+				__('Could not brew coffee because no recipes were found for class "%1$s".', 'event_espresso'),
414
+				$identifier
415
+			)
416
+		);
417
+	}
418
+
419
+
420
+	/**
421
+	 * adds class name aliases to list of filters
422
+	 *
423
+	 * @param  string       $identifier Identifier for the entity class that the alias applies to
424
+	 *                                  Typically a Fully Qualified Class Name
425
+	 * @param  array|string $aliases
426
+	 * @return void
427
+	 * @throws InvalidIdentifierException
428
+	 */
429
+	public function addAliases($identifier, $aliases)
430
+	{
431
+		if (empty($aliases)) {
432
+			return;
433
+		}
434
+		$identifier = $this->processIdentifier($identifier);
435
+		foreach ((array) $aliases as $alias) {
436
+			$this->filters[ $this->processIdentifier($alias) ] = $identifier;
437
+		}
438
+	}
439
+
440
+
441
+	/**
442
+	 * Adds a service to one of the internal collections
443
+	 *
444
+	 * @param        $identifier
445
+	 * @param array  $arguments
446
+	 * @param string $type
447
+	 * @return mixed
448
+	 * @throws InvalidDataTypeException
449
+	 * @throws InvalidClassException
450
+	 * @throws OutOfBoundsException
451
+	 * @throws InvalidIdentifierException
452
+	 * @throws ServiceExistsException
453
+	 */
454
+	private function makeCoffee($identifier, $arguments = array(), $type = '')
455
+	{
456
+		if ((empty($type) || $type === CoffeeMaker::BREW_SHARED) && $this->has($identifier)) {
457
+			throw new ServiceExistsException($identifier);
458
+		}
459
+		$identifier = $this->filterIdentifier($identifier);
460
+		$recipe = $this->getRecipe($identifier, $type);
461
+		$type = ! empty($type) ? $type : $recipe->type();
462
+		$coffee_maker = $this->getCoffeeMaker($type);
463
+		return $coffee_maker->brew($recipe, $arguments);
464
+	}
465
+
466
+
467
+	/**
468
+	 * filters alias identifiers to find the real class name
469
+	 *
470
+	 * @param  string $identifier Identifier for the entity class that the filter applies to
471
+	 *                            Typically a Fully Qualified Class Name
472
+	 * @return string
473
+	 * @throws InvalidIdentifierException
474
+	 */
475
+	private function filterIdentifier($identifier)
476
+	{
477
+		$identifier = $this->processIdentifier($identifier);
478
+		return isset($this->filters[ $identifier ]) && ! empty($this->filters[ $identifier ])
479
+			? $this->filters[ $identifier ]
480
+			: $identifier;
481
+	}
482
+
483
+
484
+	/**
485
+	 * verifies and standardizes identifiers
486
+	 *
487
+	 * @param  string $identifier Identifier for the entity class
488
+	 *                            Typically a Fully Qualified Class Name
489
+	 * @return string
490
+	 * @throws InvalidIdentifierException
491
+	 */
492
+	private function processIdentifier($identifier)
493
+	{
494
+		if (! is_string($identifier)) {
495
+			throw new InvalidIdentifierException(
496
+				is_object($identifier) ? get_class($identifier) : gettype($identifier),
497
+				'\Fully\Qualified\ClassName'
498
+			);
499
+		}
500
+		return ltrim($identifier, '\\');
501
+	}
502
+
503
+
504
+	/**
505
+	 * @param string $type
506
+	 * @return CoffeeMakerInterface
507
+	 * @throws OutOfBoundsException
508
+	 * @throws InvalidDataTypeException
509
+	 * @throws InvalidClassException
510
+	 */
511
+	private function getCoffeeMaker($type)
512
+	{
513
+		if (! $this->coffee_makers->has($type)) {
514
+			throw new OutOfBoundsException(
515
+				__('The requested coffee maker is either missing or invalid.', 'event_espresso')
516
+			);
517
+		}
518
+		return $this->coffee_makers->get($type);
519
+	}
520
+
521
+
522
+	/**
523
+	 * Retrieves all recipes that use a wildcard "*" in their identifier
524
+	 * This allows recipes to be set up for handling
525
+	 * legacy classes that do not support PSR-4 autoloading.
526
+	 * for example:
527
+	 * using "EEM_*" for a recipe identifier would target all legacy models like EEM_Attendee
528
+	 *
529
+	 * @return array
530
+	 */
531
+	private function getDefaultRecipes()
532
+	{
533
+		$default_recipes = array();
534
+		$this->recipes->rewind();
535
+		while ($this->recipes->valid()) {
536
+			$identifier = $this->recipes->getInfo();
537
+			// does this recipe use a wildcard ? (but is NOT the global default)
538
+			if ($identifier !== Recipe::DEFAULT_ID && strpos($identifier, '*') !== false) {
539
+				// strip the wildcard and use identifier as key
540
+				$default_recipes[ str_replace('*', '', $identifier) ] = $this->recipes->current();
541
+			}
542
+			$this->recipes->next();
543
+		}
544
+		return $default_recipes;
545
+	}
546
+
547
+
548
+	/**
549
+	 * clones a default recipe and then copies details
550
+	 * from the incoming request to it so that it can be used
551
+	 *
552
+	 * @param RecipeInterface $default_recipe
553
+	 * @param string          $identifier
554
+	 * @param string          $type
555
+	 * @return RecipeInterface
556
+	 */
557
+	private function copyDefaultRecipe(RecipeInterface $default_recipe, $identifier, $type = '')
558
+	{
559
+		$recipe = clone $default_recipe;
560
+		if (! empty($type)) {
561
+			$recipe->setType($type);
562
+		}
563
+		// is this the base default recipe ?
564
+		if ($default_recipe->identifier() === Recipe::DEFAULT_ID) {
565
+			$recipe->setIdentifier($identifier);
566
+			$recipe->setFqcn($identifier);
567
+			return $recipe;
568
+		}
569
+		$recipe->setIdentifier($identifier);
570
+		foreach ($default_recipe->paths() as $path) {
571
+			$path = str_replace('*', $identifier, $path);
572
+			if (is_readable($path)) {
573
+				$recipe->setPaths($path);
574
+			}
575
+		}
576
+		$recipe->setFqcn($identifier);
577
+		return $recipe;
578
+	}
579
+
580
+
581
+	/**
582
+	 * @param  string $identifier Identifier for the entity class that the service applies to
583
+	 *                            Typically a Fully Qualified Class Name
584
+	 * @param mixed   $service
585
+	 * @return mixed
586
+	 * @throws InvalidServiceException
587
+	 */
588
+	private function validateService($identifier, $service)
589
+	{
590
+		if (! is_object($service)) {
591
+			throw new InvalidServiceException(
592
+				$identifier,
593
+				$service
594
+			);
595
+		}
596
+		return $service;
597
+	}
598 598
 }
Please login to merge, or discard this patch.
Spacing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -159,7 +159,7 @@  discard block
 block discarded – undo
159 159
         }
160 160
         // if the reservoir doesn't have a closure already for the requested identifier,
161 161
         // then neither a shared service nor a closure for making entities has been built yet
162
-        if (! $this->reservoir->has($identifier)) {
162
+        if ( ! $this->reservoir->has($identifier)) {
163 163
             // so let's brew something up and add it to the proper collection
164 164
             $brewed = $this->makeCoffee($identifier, $arguments, $type);
165 165
         }
@@ -284,7 +284,7 @@  discard block
 block discarded – undo
284 284
      */
285 285
     public function addClosure($identifier, $closure)
286 286
     {
287
-        if (! is_callable($closure)) {
287
+        if ( ! is_callable($closure)) {
288 288
             throw new InvalidDataTypeException('$closure', $closure, 'Closure');
289 289
         }
290 290
         $identifier = $this->processIdentifier($identifier);
@@ -393,7 +393,7 @@  discard block
 block discarded – undo
393 393
             // is the wildcard recipe prefix in the identifier ?
394 394
             if (strpos($identifier, $wildcard) !== false) {
395 395
                 // track matches and use the number of wildcard characters matched for the key
396
-                $matches[ strlen($wildcard) ] = $default_recipe;
396
+                $matches[strlen($wildcard)] = $default_recipe;
397 397
             }
398 398
         }
399 399
         if (count($matches) > 0) {
@@ -433,7 +433,7 @@  discard block
 block discarded – undo
433 433
         }
434 434
         $identifier = $this->processIdentifier($identifier);
435 435
         foreach ((array) $aliases as $alias) {
436
-            $this->filters[ $this->processIdentifier($alias) ] = $identifier;
436
+            $this->filters[$this->processIdentifier($alias)] = $identifier;
437 437
         }
438 438
     }
439 439
 
@@ -475,8 +475,8 @@  discard block
 block discarded – undo
475 475
     private function filterIdentifier($identifier)
476 476
     {
477 477
         $identifier = $this->processIdentifier($identifier);
478
-        return isset($this->filters[ $identifier ]) && ! empty($this->filters[ $identifier ])
479
-            ? $this->filters[ $identifier ]
478
+        return isset($this->filters[$identifier]) && ! empty($this->filters[$identifier])
479
+            ? $this->filters[$identifier]
480 480
             : $identifier;
481 481
     }
482 482
 
@@ -491,7 +491,7 @@  discard block
 block discarded – undo
491 491
      */
492 492
     private function processIdentifier($identifier)
493 493
     {
494
-        if (! is_string($identifier)) {
494
+        if ( ! is_string($identifier)) {
495 495
             throw new InvalidIdentifierException(
496 496
                 is_object($identifier) ? get_class($identifier) : gettype($identifier),
497 497
                 '\Fully\Qualified\ClassName'
@@ -510,7 +510,7 @@  discard block
 block discarded – undo
510 510
      */
511 511
     private function getCoffeeMaker($type)
512 512
     {
513
-        if (! $this->coffee_makers->has($type)) {
513
+        if ( ! $this->coffee_makers->has($type)) {
514 514
             throw new OutOfBoundsException(
515 515
                 __('The requested coffee maker is either missing or invalid.', 'event_espresso')
516 516
             );
@@ -537,7 +537,7 @@  discard block
 block discarded – undo
537 537
             // does this recipe use a wildcard ? (but is NOT the global default)
538 538
             if ($identifier !== Recipe::DEFAULT_ID && strpos($identifier, '*') !== false) {
539 539
                 // strip the wildcard and use identifier as key
540
-                $default_recipes[ str_replace('*', '', $identifier) ] = $this->recipes->current();
540
+                $default_recipes[str_replace('*', '', $identifier)] = $this->recipes->current();
541 541
             }
542 542
             $this->recipes->next();
543 543
         }
@@ -557,7 +557,7 @@  discard block
 block discarded – undo
557 557
     private function copyDefaultRecipe(RecipeInterface $default_recipe, $identifier, $type = '')
558 558
     {
559 559
         $recipe = clone $default_recipe;
560
-        if (! empty($type)) {
560
+        if ( ! empty($type)) {
561 561
             $recipe->setType($type);
562 562
         }
563 563
         // is this the base default recipe ?
@@ -587,7 +587,7 @@  discard block
 block discarded – undo
587 587
      */
588 588
     private function validateService($identifier, $service)
589 589
     {
590
-        if (! is_object($service)) {
590
+        if ( ! is_object($service)) {
591 591
             throw new InvalidServiceException(
592 592
                 $identifier,
593 593
                 $service
Please login to merge, or discard this patch.