@@ -71,7 +71,7 @@ discard block |
||
71 | 71 | */ |
72 | 72 | public function __construct() |
73 | 73 | { |
74 | - if (! $this->_model_name_extended) { |
|
74 | + if ( ! $this->_model_name_extended) { |
|
75 | 75 | throw new EE_Error( |
76 | 76 | esc_html__( |
77 | 77 | "When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'", |
@@ -79,7 +79,7 @@ discard block |
||
79 | 79 | ) |
80 | 80 | ); |
81 | 81 | } |
82 | - $construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end'; |
|
82 | + $construct_end_action = 'AHEE__EEM_'.$this->_model_name_extended.'__construct__end'; |
|
83 | 83 | if (did_action($construct_end_action)) { |
84 | 84 | throw new EE_Error( |
85 | 85 | sprintf( |
@@ -94,15 +94,15 @@ discard block |
||
94 | 94 | ); |
95 | 95 | } |
96 | 96 | add_filter( |
97 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
97 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__tables', |
|
98 | 98 | array($this, 'add_extra_tables_on_filter') |
99 | 99 | ); |
100 | 100 | add_filter( |
101 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
101 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__fields', |
|
102 | 102 | array($this, 'add_extra_fields_on_filter') |
103 | 103 | ); |
104 | 104 | add_filter( |
105 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
105 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__model_relations', |
|
106 | 106 | array($this, 'add_extra_relations_on_filter') |
107 | 107 | ); |
108 | 108 | $this->_register_extending_methods(); |
@@ -127,12 +127,12 @@ discard block |
||
127 | 127 | { |
128 | 128 | if ($this->_extra_fields) { |
129 | 129 | foreach ($this->_extra_fields as $table_alias => $fields) { |
130 | - if (! isset($existing_fields[ $table_alias ])) { |
|
131 | - $existing_fields[ $table_alias ] = array(); |
|
130 | + if ( ! isset($existing_fields[$table_alias])) { |
|
131 | + $existing_fields[$table_alias] = array(); |
|
132 | 132 | } |
133 | - $existing_fields[ $table_alias ] = array_merge( |
|
134 | - (array) $existing_fields[ $table_alias ], |
|
135 | - $this->_extra_fields[ $table_alias ] |
|
133 | + $existing_fields[$table_alias] = array_merge( |
|
134 | + (array) $existing_fields[$table_alias], |
|
135 | + $this->_extra_fields[$table_alias] |
|
136 | 136 | ); |
137 | 137 | } |
138 | 138 | } |
@@ -163,7 +163,7 @@ discard block |
||
163 | 163 | $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
164 | 164 | add_filter( |
165 | 165 | $callback_name, |
166 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
166 | + array($this, self::dynamic_callback_method_prefix.$method_name_on_model), |
|
167 | 167 | 10, |
168 | 168 | 10 |
169 | 169 | ); |
@@ -178,15 +178,15 @@ discard block |
||
178 | 178 | public function deregister() |
179 | 179 | { |
180 | 180 | remove_filter( |
181 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
181 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__tables', |
|
182 | 182 | array($this, 'add_extra_tables_on_filter') |
183 | 183 | ); |
184 | 184 | remove_filter( |
185 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
185 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__fields', |
|
186 | 186 | array($this, 'add_extra_fields_on_filter') |
187 | 187 | ); |
188 | 188 | remove_filter( |
189 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
189 | + 'FHEE__EEM_'.$this->_model_name_extended.'__construct__model_relations', |
|
190 | 190 | array($this, 'add_extra_relations_on_filter') |
191 | 191 | ); |
192 | 192 | $all_methods = get_class_methods(get_class($this)); |
@@ -196,13 +196,13 @@ discard block |
||
196 | 196 | $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
197 | 197 | remove_filter( |
198 | 198 | $callback_name, |
199 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
199 | + array($this, self::dynamic_callback_method_prefix.$method_name_on_model), |
|
200 | 200 | 10 |
201 | 201 | ); |
202 | 202 | } |
203 | 203 | } |
204 | 204 | /** @var EEM_Base $model_to_reset */ |
205 | - $model_to_reset = 'EEM_' . $this->_model_name_extended; |
|
205 | + $model_to_reset = 'EEM_'.$this->_model_name_extended; |
|
206 | 206 | if (class_exists($model_to_reset)) { |
207 | 207 | $model_to_reset::reset(); |
208 | 208 | } |
@@ -224,7 +224,7 @@ discard block |
||
224 | 224 | // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction |
225 | 225 | $this->_ = $model_called; |
226 | 226 | // phpcs:enable |
227 | - $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
227 | + $extending_method = self::extending_method_prefix.$method_called_on_model; |
|
228 | 228 | if (method_exists($this, $extending_method)) { |
229 | 229 | return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
230 | 230 | } else { |
@@ -43,211 +43,211 @@ |
||
43 | 43 | */ |
44 | 44 | abstract class EEME_Base |
45 | 45 | { |
46 | - const extending_method_prefix = 'ext_'; |
|
47 | - const dynamic_callback_method_prefix = 'dynamic_callback_method_'; |
|
48 | - |
|
49 | - protected $_extra_tables = array(); |
|
50 | - protected $_extra_fields = array(); |
|
51 | - protected $_extra_relations = array(); |
|
52 | - |
|
53 | - /** |
|
54 | - * The model name that is extended (not classname) |
|
55 | - * |
|
56 | - * @var string |
|
57 | - */ |
|
58 | - protected $_model_name_extended = null; |
|
59 | - |
|
60 | - /** |
|
61 | - * The model this extends |
|
62 | - * |
|
63 | - * @var EEM_Base |
|
64 | - */ |
|
65 | - protected $_ = null; |
|
66 | - |
|
67 | - |
|
68 | - /** |
|
69 | - * @throws \EE_Error |
|
70 | - */ |
|
71 | - public function __construct() |
|
72 | - { |
|
73 | - if (! $this->_model_name_extended) { |
|
74 | - throw new EE_Error( |
|
75 | - esc_html__( |
|
76 | - "When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'", |
|
77 | - "event_espresso" |
|
78 | - ) |
|
79 | - ); |
|
80 | - } |
|
81 | - $construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end'; |
|
82 | - if (did_action($construct_end_action)) { |
|
83 | - throw new EE_Error( |
|
84 | - sprintf( |
|
85 | - esc_html__( |
|
86 | - "Hooked in model extension '%s' too late! The model %s has already been used! We know because the action %s has been fired", |
|
87 | - "event_espresso" |
|
88 | - ), |
|
89 | - get_class($this), |
|
90 | - $this->_model_name_extended, |
|
91 | - $construct_end_action |
|
92 | - ) |
|
93 | - ); |
|
94 | - } |
|
95 | - add_filter( |
|
96 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
97 | - array($this, 'add_extra_tables_on_filter') |
|
98 | - ); |
|
99 | - add_filter( |
|
100 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
101 | - array($this, 'add_extra_fields_on_filter') |
|
102 | - ); |
|
103 | - add_filter( |
|
104 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
105 | - array($this, 'add_extra_relations_on_filter') |
|
106 | - ); |
|
107 | - $this->_register_extending_methods(); |
|
108 | - } |
|
109 | - |
|
110 | - |
|
111 | - /** |
|
112 | - * @param array $existing_tables |
|
113 | - * @return array |
|
114 | - */ |
|
115 | - public function add_extra_tables_on_filter($existing_tables) |
|
116 | - { |
|
117 | - return array_merge((array) $existing_tables, $this->_extra_tables); |
|
118 | - } |
|
119 | - |
|
120 | - |
|
121 | - /** |
|
122 | - * @param array $existing_fields |
|
123 | - * @return array |
|
124 | - */ |
|
125 | - public function add_extra_fields_on_filter($existing_fields) |
|
126 | - { |
|
127 | - if ($this->_extra_fields) { |
|
128 | - foreach ($this->_extra_fields as $table_alias => $fields) { |
|
129 | - if (! isset($existing_fields[ $table_alias ])) { |
|
130 | - $existing_fields[ $table_alias ] = array(); |
|
131 | - } |
|
132 | - $existing_fields[ $table_alias ] = array_merge( |
|
133 | - (array) $existing_fields[ $table_alias ], |
|
134 | - $this->_extra_fields[ $table_alias ] |
|
135 | - ); |
|
136 | - } |
|
137 | - } |
|
138 | - return $existing_fields; |
|
139 | - } |
|
140 | - |
|
141 | - |
|
142 | - /** |
|
143 | - * @param array $existing_relations |
|
144 | - * @return array |
|
145 | - */ |
|
146 | - public function add_extra_relations_on_filter($existing_relations) |
|
147 | - { |
|
148 | - return array_merge((array) $existing_relations, $this->_extra_relations); |
|
149 | - } |
|
150 | - |
|
151 | - |
|
152 | - /** |
|
153 | - * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the |
|
154 | - * model extended. (Internally uses filters, and the __call magic method) |
|
155 | - */ |
|
156 | - protected function _register_extending_methods() |
|
157 | - { |
|
158 | - $all_methods = get_class_methods(get_class($this)); |
|
159 | - foreach ($all_methods as $method_name) { |
|
160 | - if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
161 | - $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
162 | - $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
|
163 | - add_filter( |
|
164 | - $callback_name, |
|
165 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
166 | - 10, |
|
167 | - 10 |
|
168 | - ); |
|
169 | - } |
|
170 | - } |
|
171 | - } |
|
172 | - |
|
173 | - /** |
|
174 | - * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the |
|
175 | - * model extended. (Internally uses filters, and the __call magic method) |
|
176 | - */ |
|
177 | - public function deregister() |
|
178 | - { |
|
179 | - remove_filter( |
|
180 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
181 | - array($this, 'add_extra_tables_on_filter') |
|
182 | - ); |
|
183 | - remove_filter( |
|
184 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
185 | - array($this, 'add_extra_fields_on_filter') |
|
186 | - ); |
|
187 | - remove_filter( |
|
188 | - 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
189 | - array($this, 'add_extra_relations_on_filter') |
|
190 | - ); |
|
191 | - $all_methods = get_class_methods(get_class($this)); |
|
192 | - foreach ($all_methods as $method_name) { |
|
193 | - if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
194 | - $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
195 | - $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
|
196 | - remove_filter( |
|
197 | - $callback_name, |
|
198 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
199 | - 10 |
|
200 | - ); |
|
201 | - } |
|
202 | - } |
|
203 | - /** @var EEM_Base $model_to_reset */ |
|
204 | - $model_to_reset = 'EEM_' . $this->_model_name_extended; |
|
205 | - if (class_exists($model_to_reset)) { |
|
206 | - $model_to_reset::reset(); |
|
207 | - } |
|
208 | - } |
|
209 | - |
|
210 | - |
|
211 | - /** |
|
212 | - * @param string $callback_method_name |
|
213 | - * @param array $args |
|
214 | - * @return mixed |
|
215 | - * @throws EE_Error |
|
216 | - */ |
|
217 | - public function __call($callback_method_name, $args) |
|
218 | - { |
|
219 | - if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) { |
|
220 | - // it's a dynamic callback for a method name |
|
221 | - $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name); |
|
222 | - list($original_return_val, $model_called, $args_provided_to_method_on_model) = (array) $args; |
|
223 | - // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction |
|
224 | - $this->_ = $model_called; |
|
225 | - // phpcs:enable |
|
226 | - $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
227 | - if (method_exists($this, $extending_method)) { |
|
228 | - return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
|
229 | - } else { |
|
230 | - throw new EE_Error( |
|
231 | - sprintf( |
|
232 | - esc_html__( |
|
233 | - "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)", |
|
234 | - "event_espresso" |
|
235 | - ), |
|
236 | - $this->_model_name_extended, |
|
237 | - get_class($this), |
|
238 | - $extending_method, |
|
239 | - $extending_method |
|
240 | - ) |
|
241 | - ); |
|
242 | - } |
|
243 | - } else { |
|
244 | - throw new EE_Error( |
|
245 | - sprintf( |
|
246 | - esc_html__("There is no method named '%s' on '%s'", "event_espresso"), |
|
247 | - $callback_method_name, |
|
248 | - get_class($this) |
|
249 | - ) |
|
250 | - ); |
|
251 | - } |
|
252 | - } |
|
46 | + const extending_method_prefix = 'ext_'; |
|
47 | + const dynamic_callback_method_prefix = 'dynamic_callback_method_'; |
|
48 | + |
|
49 | + protected $_extra_tables = array(); |
|
50 | + protected $_extra_fields = array(); |
|
51 | + protected $_extra_relations = array(); |
|
52 | + |
|
53 | + /** |
|
54 | + * The model name that is extended (not classname) |
|
55 | + * |
|
56 | + * @var string |
|
57 | + */ |
|
58 | + protected $_model_name_extended = null; |
|
59 | + |
|
60 | + /** |
|
61 | + * The model this extends |
|
62 | + * |
|
63 | + * @var EEM_Base |
|
64 | + */ |
|
65 | + protected $_ = null; |
|
66 | + |
|
67 | + |
|
68 | + /** |
|
69 | + * @throws \EE_Error |
|
70 | + */ |
|
71 | + public function __construct() |
|
72 | + { |
|
73 | + if (! $this->_model_name_extended) { |
|
74 | + throw new EE_Error( |
|
75 | + esc_html__( |
|
76 | + "When declaring a model extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'", |
|
77 | + "event_espresso" |
|
78 | + ) |
|
79 | + ); |
|
80 | + } |
|
81 | + $construct_end_action = 'AHEE__EEM_' . $this->_model_name_extended . '__construct__end'; |
|
82 | + if (did_action($construct_end_action)) { |
|
83 | + throw new EE_Error( |
|
84 | + sprintf( |
|
85 | + esc_html__( |
|
86 | + "Hooked in model extension '%s' too late! The model %s has already been used! We know because the action %s has been fired", |
|
87 | + "event_espresso" |
|
88 | + ), |
|
89 | + get_class($this), |
|
90 | + $this->_model_name_extended, |
|
91 | + $construct_end_action |
|
92 | + ) |
|
93 | + ); |
|
94 | + } |
|
95 | + add_filter( |
|
96 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
97 | + array($this, 'add_extra_tables_on_filter') |
|
98 | + ); |
|
99 | + add_filter( |
|
100 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
101 | + array($this, 'add_extra_fields_on_filter') |
|
102 | + ); |
|
103 | + add_filter( |
|
104 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
105 | + array($this, 'add_extra_relations_on_filter') |
|
106 | + ); |
|
107 | + $this->_register_extending_methods(); |
|
108 | + } |
|
109 | + |
|
110 | + |
|
111 | + /** |
|
112 | + * @param array $existing_tables |
|
113 | + * @return array |
|
114 | + */ |
|
115 | + public function add_extra_tables_on_filter($existing_tables) |
|
116 | + { |
|
117 | + return array_merge((array) $existing_tables, $this->_extra_tables); |
|
118 | + } |
|
119 | + |
|
120 | + |
|
121 | + /** |
|
122 | + * @param array $existing_fields |
|
123 | + * @return array |
|
124 | + */ |
|
125 | + public function add_extra_fields_on_filter($existing_fields) |
|
126 | + { |
|
127 | + if ($this->_extra_fields) { |
|
128 | + foreach ($this->_extra_fields as $table_alias => $fields) { |
|
129 | + if (! isset($existing_fields[ $table_alias ])) { |
|
130 | + $existing_fields[ $table_alias ] = array(); |
|
131 | + } |
|
132 | + $existing_fields[ $table_alias ] = array_merge( |
|
133 | + (array) $existing_fields[ $table_alias ], |
|
134 | + $this->_extra_fields[ $table_alias ] |
|
135 | + ); |
|
136 | + } |
|
137 | + } |
|
138 | + return $existing_fields; |
|
139 | + } |
|
140 | + |
|
141 | + |
|
142 | + /** |
|
143 | + * @param array $existing_relations |
|
144 | + * @return array |
|
145 | + */ |
|
146 | + public function add_extra_relations_on_filter($existing_relations) |
|
147 | + { |
|
148 | + return array_merge((array) $existing_relations, $this->_extra_relations); |
|
149 | + } |
|
150 | + |
|
151 | + |
|
152 | + /** |
|
153 | + * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the |
|
154 | + * model extended. (Internally uses filters, and the __call magic method) |
|
155 | + */ |
|
156 | + protected function _register_extending_methods() |
|
157 | + { |
|
158 | + $all_methods = get_class_methods(get_class($this)); |
|
159 | + foreach ($all_methods as $method_name) { |
|
160 | + if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
161 | + $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
162 | + $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
|
163 | + add_filter( |
|
164 | + $callback_name, |
|
165 | + array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
166 | + 10, |
|
167 | + 10 |
|
168 | + ); |
|
169 | + } |
|
170 | + } |
|
171 | + } |
|
172 | + |
|
173 | + /** |
|
174 | + * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the |
|
175 | + * model extended. (Internally uses filters, and the __call magic method) |
|
176 | + */ |
|
177 | + public function deregister() |
|
178 | + { |
|
179 | + remove_filter( |
|
180 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__tables', |
|
181 | + array($this, 'add_extra_tables_on_filter') |
|
182 | + ); |
|
183 | + remove_filter( |
|
184 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__fields', |
|
185 | + array($this, 'add_extra_fields_on_filter') |
|
186 | + ); |
|
187 | + remove_filter( |
|
188 | + 'FHEE__EEM_' . $this->_model_name_extended . '__construct__model_relations', |
|
189 | + array($this, 'add_extra_relations_on_filter') |
|
190 | + ); |
|
191 | + $all_methods = get_class_methods(get_class($this)); |
|
192 | + foreach ($all_methods as $method_name) { |
|
193 | + if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
194 | + $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
195 | + $callback_name = "FHEE__EEM_{$this->_model_name_extended}__$method_name_on_model"; |
|
196 | + remove_filter( |
|
197 | + $callback_name, |
|
198 | + array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
199 | + 10 |
|
200 | + ); |
|
201 | + } |
|
202 | + } |
|
203 | + /** @var EEM_Base $model_to_reset */ |
|
204 | + $model_to_reset = 'EEM_' . $this->_model_name_extended; |
|
205 | + if (class_exists($model_to_reset)) { |
|
206 | + $model_to_reset::reset(); |
|
207 | + } |
|
208 | + } |
|
209 | + |
|
210 | + |
|
211 | + /** |
|
212 | + * @param string $callback_method_name |
|
213 | + * @param array $args |
|
214 | + * @return mixed |
|
215 | + * @throws EE_Error |
|
216 | + */ |
|
217 | + public function __call($callback_method_name, $args) |
|
218 | + { |
|
219 | + if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) { |
|
220 | + // it's a dynamic callback for a method name |
|
221 | + $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name); |
|
222 | + list($original_return_val, $model_called, $args_provided_to_method_on_model) = (array) $args; |
|
223 | + // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction |
|
224 | + $this->_ = $model_called; |
|
225 | + // phpcs:enable |
|
226 | + $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
227 | + if (method_exists($this, $extending_method)) { |
|
228 | + return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
|
229 | + } else { |
|
230 | + throw new EE_Error( |
|
231 | + sprintf( |
|
232 | + esc_html__( |
|
233 | + "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)", |
|
234 | + "event_espresso" |
|
235 | + ), |
|
236 | + $this->_model_name_extended, |
|
237 | + get_class($this), |
|
238 | + $extending_method, |
|
239 | + $extending_method |
|
240 | + ) |
|
241 | + ); |
|
242 | + } |
|
243 | + } else { |
|
244 | + throw new EE_Error( |
|
245 | + sprintf( |
|
246 | + esc_html__("There is no method named '%s' on '%s'", "event_espresso"), |
|
247 | + $callback_method_name, |
|
248 | + get_class($this) |
|
249 | + ) |
|
250 | + ); |
|
251 | + } |
|
252 | + } |
|
253 | 253 | } |
@@ -49,7 +49,7 @@ discard block |
||
49 | 49 | |
50 | 50 | public function __construct() |
51 | 51 | { |
52 | - if (! $this->_model_name_extended) { |
|
52 | + if ( ! $this->_model_name_extended) { |
|
53 | 53 | throw new EE_Error( |
54 | 54 | sprintf( |
55 | 55 | esc_html__( |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | ) |
60 | 60 | ); |
61 | 61 | } |
62 | - if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) { |
|
62 | + if (did_action('AHEE__EE_'.$this->_model_name_extended.'__construct__end')) { |
|
63 | 63 | throw new EE_Error( |
64 | 64 | sprintf( |
65 | 65 | esc_html__( |
@@ -87,7 +87,7 @@ discard block |
||
87 | 87 | $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
88 | 88 | add_filter( |
89 | 89 | $callback_name, |
90 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
90 | + array($this, self::dynamic_callback_method_prefix.$method_name_on_model), |
|
91 | 91 | 10, |
92 | 92 | 10 |
93 | 93 | ); |
@@ -108,7 +108,7 @@ discard block |
||
108 | 108 | $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
109 | 109 | remove_filter( |
110 | 110 | $callback_name, |
111 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
111 | + array($this, self::dynamic_callback_method_prefix.$method_name_on_model), |
|
112 | 112 | 10 |
113 | 113 | ); |
114 | 114 | } |
@@ -127,7 +127,7 @@ discard block |
||
127 | 127 | $this->_ = $model_called; |
128 | 128 | // phpcs:enable |
129 | 129 | $args_provided_to_method_on_model = $args[2]; |
130 | - $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
130 | + $extending_method = self::extending_method_prefix.$method_called_on_model; |
|
131 | 131 | if (method_exists($this, $extending_method)) { |
132 | 132 | return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
133 | 133 | } else { |
@@ -31,126 +31,126 @@ |
||
31 | 31 | */ |
32 | 32 | class EEE_Base_Class |
33 | 33 | { |
34 | - const extending_method_prefix = 'ext_'; |
|
35 | - const dynamic_callback_method_prefix = 'dynamic_callback_method_'; |
|
36 | - /** |
|
37 | - * The model name that is extended (not classname) |
|
38 | - * |
|
39 | - * @var string |
|
40 | - */ |
|
41 | - protected $_model_name_extended = null; |
|
42 | - /** |
|
43 | - * The model this extends |
|
44 | - * |
|
45 | - * @var EE_Base_Class |
|
46 | - */ |
|
47 | - protected $_ = null; |
|
34 | + const extending_method_prefix = 'ext_'; |
|
35 | + const dynamic_callback_method_prefix = 'dynamic_callback_method_'; |
|
36 | + /** |
|
37 | + * The model name that is extended (not classname) |
|
38 | + * |
|
39 | + * @var string |
|
40 | + */ |
|
41 | + protected $_model_name_extended = null; |
|
42 | + /** |
|
43 | + * The model this extends |
|
44 | + * |
|
45 | + * @var EE_Base_Class |
|
46 | + */ |
|
47 | + protected $_ = null; |
|
48 | 48 | |
49 | - public function __construct() |
|
50 | - { |
|
51 | - if (! $this->_model_name_extended) { |
|
52 | - throw new EE_Error( |
|
53 | - sprintf( |
|
54 | - esc_html__( |
|
55 | - "When declaring a class extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'", |
|
56 | - "event_espresso" |
|
57 | - ) |
|
58 | - ) |
|
59 | - ); |
|
60 | - } |
|
61 | - if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) { |
|
62 | - throw new EE_Error( |
|
63 | - sprintf( |
|
64 | - esc_html__( |
|
65 | - "Hooked in model object extension '%s' too late! The model object %s has already been used!", |
|
66 | - "event_espresso" |
|
67 | - ), |
|
68 | - get_class($this), |
|
69 | - $this->_model_name_extended |
|
70 | - ) |
|
71 | - ); |
|
72 | - } |
|
73 | - $this->_register_extending_methods(); |
|
74 | - } |
|
49 | + public function __construct() |
|
50 | + { |
|
51 | + if (! $this->_model_name_extended) { |
|
52 | + throw new EE_Error( |
|
53 | + sprintf( |
|
54 | + esc_html__( |
|
55 | + "When declaring a class extension, you must define its _model_name_extended property. It should be a model name like 'Attendee' or 'Event'", |
|
56 | + "event_espresso" |
|
57 | + ) |
|
58 | + ) |
|
59 | + ); |
|
60 | + } |
|
61 | + if (did_action('AHEE__EE_' . $this->_model_name_extended . '__construct__end')) { |
|
62 | + throw new EE_Error( |
|
63 | + sprintf( |
|
64 | + esc_html__( |
|
65 | + "Hooked in model object extension '%s' too late! The model object %s has already been used!", |
|
66 | + "event_espresso" |
|
67 | + ), |
|
68 | + get_class($this), |
|
69 | + $this->_model_name_extended |
|
70 | + ) |
|
71 | + ); |
|
72 | + } |
|
73 | + $this->_register_extending_methods(); |
|
74 | + } |
|
75 | 75 | |
76 | - /** |
|
77 | - * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the |
|
78 | - * model extended. (Internally uses filters, and the __call magic method) |
|
79 | - */ |
|
80 | - protected function _register_extending_methods() |
|
81 | - { |
|
82 | - $all_methods = get_class_methods(get_class($this)); |
|
83 | - foreach ($all_methods as $method_name) { |
|
84 | - if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
85 | - $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
86 | - $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
|
87 | - add_filter( |
|
88 | - $callback_name, |
|
89 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
90 | - 10, |
|
91 | - 10 |
|
92 | - ); |
|
93 | - } |
|
94 | - } |
|
95 | - } |
|
76 | + /** |
|
77 | + * scans the child of EEME_Base for functions starting with ext_, and magically makes them functions on the |
|
78 | + * model extended. (Internally uses filters, and the __call magic method) |
|
79 | + */ |
|
80 | + protected function _register_extending_methods() |
|
81 | + { |
|
82 | + $all_methods = get_class_methods(get_class($this)); |
|
83 | + foreach ($all_methods as $method_name) { |
|
84 | + if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
85 | + $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
86 | + $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
|
87 | + add_filter( |
|
88 | + $callback_name, |
|
89 | + array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
90 | + 10, |
|
91 | + 10 |
|
92 | + ); |
|
93 | + } |
|
94 | + } |
|
95 | + } |
|
96 | 96 | |
97 | - /** |
|
98 | - * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the |
|
99 | - * model extended. (Internally uses filters, and the __call magic method) |
|
100 | - */ |
|
101 | - public function deregister() |
|
102 | - { |
|
103 | - $all_methods = get_class_methods(get_class($this)); |
|
104 | - foreach ($all_methods as $method_name) { |
|
105 | - if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
106 | - $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
107 | - $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
|
108 | - remove_filter( |
|
109 | - $callback_name, |
|
110 | - array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
111 | - 10 |
|
112 | - ); |
|
113 | - } |
|
114 | - } |
|
115 | - } |
|
97 | + /** |
|
98 | + * scans the child of EEME_Base for functions starting with ext_, and magically REMOVES them as functions on the |
|
99 | + * model extended. (Internally uses filters, and the __call magic method) |
|
100 | + */ |
|
101 | + public function deregister() |
|
102 | + { |
|
103 | + $all_methods = get_class_methods(get_class($this)); |
|
104 | + foreach ($all_methods as $method_name) { |
|
105 | + if (strpos($method_name, self::extending_method_prefix) === 0) { |
|
106 | + $method_name_on_model = str_replace(self::extending_method_prefix, '', $method_name); |
|
107 | + $callback_name = "FHEE__EE_{$this->_model_name_extended}__$method_name_on_model"; |
|
108 | + remove_filter( |
|
109 | + $callback_name, |
|
110 | + array($this, self::dynamic_callback_method_prefix . $method_name_on_model), |
|
111 | + 10 |
|
112 | + ); |
|
113 | + } |
|
114 | + } |
|
115 | + } |
|
116 | 116 | |
117 | 117 | |
118 | - public function __call($callback_method_name, $args) |
|
119 | - { |
|
120 | - if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) { |
|
121 | - // it's a dynamic callback for a method name |
|
122 | - $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name); |
|
123 | - $original_return_val = $args[0]; |
|
124 | - $model_called = $args[1]; |
|
125 | - // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction |
|
126 | - $this->_ = $model_called; |
|
127 | - // phpcs:enable |
|
128 | - $args_provided_to_method_on_model = $args[2]; |
|
129 | - $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
130 | - if (method_exists($this, $extending_method)) { |
|
131 | - return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
|
132 | - } else { |
|
133 | - throw new EE_Error( |
|
134 | - sprintf( |
|
135 | - esc_html__( |
|
136 | - "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)", |
|
137 | - "event_espresso" |
|
138 | - ), |
|
139 | - $this->_model_name_extended, |
|
140 | - get_class($this), |
|
141 | - $extending_method, |
|
142 | - $extending_method |
|
143 | - ) |
|
144 | - ); |
|
145 | - } |
|
146 | - } else { |
|
147 | - throw new EE_Error( |
|
148 | - sprintf( |
|
149 | - esc_html__("There is no method named '%s' on '%s'", "event_espresso"), |
|
150 | - $callback_method_name, |
|
151 | - get_class($this) |
|
152 | - ) |
|
153 | - ); |
|
154 | - } |
|
155 | - } |
|
118 | + public function __call($callback_method_name, $args) |
|
119 | + { |
|
120 | + if (strpos($callback_method_name, self::dynamic_callback_method_prefix) === 0) { |
|
121 | + // it's a dynamic callback for a method name |
|
122 | + $method_called_on_model = str_replace(self::dynamic_callback_method_prefix, '', $callback_method_name); |
|
123 | + $original_return_val = $args[0]; |
|
124 | + $model_called = $args[1]; |
|
125 | + // phpcs:disable WordPress.WP.I18n.SingleUnderscoreGetTextFunction |
|
126 | + $this->_ = $model_called; |
|
127 | + // phpcs:enable |
|
128 | + $args_provided_to_method_on_model = $args[2]; |
|
129 | + $extending_method = self::extending_method_prefix . $method_called_on_model; |
|
130 | + if (method_exists($this, $extending_method)) { |
|
131 | + return call_user_func_array(array($this, $extending_method), $args_provided_to_method_on_model); |
|
132 | + } else { |
|
133 | + throw new EE_Error( |
|
134 | + sprintf( |
|
135 | + esc_html__( |
|
136 | + "An odd error occurred. Model '%s' had a method called on it that it didn't recognize. So it passed it onto the model extension '%s' (because it had a function named '%s' which should be able to handle it), but the function '%s' doesnt exist!)", |
|
137 | + "event_espresso" |
|
138 | + ), |
|
139 | + $this->_model_name_extended, |
|
140 | + get_class($this), |
|
141 | + $extending_method, |
|
142 | + $extending_method |
|
143 | + ) |
|
144 | + ); |
|
145 | + } |
|
146 | + } else { |
|
147 | + throw new EE_Error( |
|
148 | + sprintf( |
|
149 | + esc_html__("There is no method named '%s' on '%s'", "event_espresso"), |
|
150 | + $callback_method_name, |
|
151 | + get_class($this) |
|
152 | + ) |
|
153 | + ); |
|
154 | + } |
|
155 | + } |
|
156 | 156 | } |
@@ -73,7 +73,7 @@ discard block |
||
73 | 73 | ); |
74 | 74 | } |
75 | 75 | |
76 | - if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) { |
|
76 | + if ( ! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) { |
|
77 | 77 | throw new EE_Error( |
78 | 78 | esc_html__( |
79 | 79 | 'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.', |
@@ -83,13 +83,13 @@ discard block |
||
83 | 83 | } |
84 | 84 | |
85 | 85 | // make sure we don't register twice |
86 | - if (isset(self::$_registry[ $identifier ])) { |
|
86 | + if (isset(self::$_registry[$identifier])) { |
|
87 | 87 | return; |
88 | 88 | } |
89 | 89 | |
90 | 90 | // make sure cpt ref is unique. |
91 | - if (isset(self::$_registry[ $identifier ])) { |
|
92 | - $identifier = uniqid() . '_' . $identifier; |
|
91 | + if (isset(self::$_registry[$identifier])) { |
|
92 | + $identifier = uniqid().'_'.$identifier; |
|
93 | 93 | } |
94 | 94 | |
95 | 95 | // make sure this was called in the right place! |
@@ -119,7 +119,7 @@ discard block |
||
119 | 119 | : [], |
120 | 120 | ]; |
121 | 121 | |
122 | - self::$_registry[ $identifier ] = $validated; |
|
122 | + self::$_registry[$identifier] = $validated; |
|
123 | 123 | |
124 | 124 | // hook into to cpt system |
125 | 125 | add_filter( |
@@ -152,7 +152,7 @@ discard block |
||
152 | 152 | { |
153 | 153 | foreach (self::$_registry as $registries) { |
154 | 154 | foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
155 | - $custom_post_type_definitions[ $cpt_name ] = $cpt_settings; |
|
155 | + $custom_post_type_definitions[$cpt_name] = $cpt_settings; |
|
156 | 156 | } |
157 | 157 | } |
158 | 158 | return $custom_post_type_definitions; |
@@ -171,7 +171,7 @@ discard block |
||
171 | 171 | { |
172 | 172 | foreach (self::$_registry as $registries) { |
173 | 173 | foreach ($registries['cts'] as $ct_name => $ct_settings) { |
174 | - $custom_taxonomy_definitions[ $ct_name ] = $ct_settings; |
|
174 | + $custom_taxonomy_definitions[$ct_name] = $ct_settings; |
|
175 | 175 | } |
176 | 176 | } |
177 | 177 | return $custom_taxonomy_definitions; |
@@ -211,7 +211,7 @@ discard block |
||
211 | 211 | { |
212 | 212 | foreach (self::$_registry as $registries) { |
213 | 213 | foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
214 | - $cpts[ $cpt_name ] = $cpt_settings; |
|
214 | + $cpts[$cpt_name] = $cpt_settings; |
|
215 | 215 | } |
216 | 216 | } |
217 | 217 | return $cpts; |
@@ -227,7 +227,7 @@ discard block |
||
227 | 227 | { |
228 | 228 | foreach (self::$_registry as $registries) { |
229 | 229 | foreach ($registries['cts'] as $ct_name => $ct_settings) { |
230 | - $cts[ $ct_name ] = $ct_settings; |
|
230 | + $cts[$ct_name] = $ct_settings; |
|
231 | 231 | } |
232 | 232 | } |
233 | 233 | return $cts; |
@@ -262,6 +262,6 @@ discard block |
||
262 | 262 | */ |
263 | 263 | public static function deregister($identifier = '') |
264 | 264 | { |
265 | - unset(self::$_registry[ $identifier ]); |
|
265 | + unset(self::$_registry[$identifier]); |
|
266 | 266 | } |
267 | 267 | } |
@@ -12,255 +12,255 @@ |
||
12 | 12 | */ |
13 | 13 | class EE_Register_CPT implements EEI_Plugin_API |
14 | 14 | { |
15 | - /** |
|
16 | - * Holds values for registered variations |
|
17 | - * |
|
18 | - * @since 4.5.0 |
|
19 | - * |
|
20 | - * @var array[][][] |
|
21 | - */ |
|
22 | - protected static $_registry = []; |
|
15 | + /** |
|
16 | + * Holds values for registered variations |
|
17 | + * |
|
18 | + * @since 4.5.0 |
|
19 | + * |
|
20 | + * @var array[][][] |
|
21 | + */ |
|
22 | + protected static $_registry = []; |
|
23 | 23 | |
24 | 24 | |
25 | - /** |
|
26 | - * Used to register new CPTs and Taxonomies. |
|
27 | - * |
|
28 | - * @param string $identifier reference used for the addon registering cpts and cts |
|
29 | - * @param array $setup_args { |
|
30 | - * An array of required values for registering the cpts and taxonomies |
|
31 | - * @type array $cpts { |
|
32 | - * An array of cpts and their arguments.(short example below) |
|
33 | - * @return void |
|
34 | - * @throws EE_Error |
|
35 | - * @see CustomPostTypeDefinitions::setDefinitions for a more complete example. |
|
36 | - * 'people' => array( |
|
37 | - * 'singular_name' => esc_html__('People', 'event_espresso'), |
|
38 | - * 'plural_name' => esc_html__('People', 'event_espresso'), |
|
39 | - * 'singular_slug' => esc_html__('people', 'event_espresso'), |
|
40 | - * 'plural_slug' => esc_html__('peoples', 'event_espresso'), |
|
41 | - * 'class_name' => 'EE_People' |
|
42 | - * ) |
|
43 | - * }, |
|
44 | - * @type array $cts { |
|
45 | - * An array of custom taxonomies and their arguments (short example below). |
|
46 | - * @see CustomTaxonomyDefinitions::setTaxonomies() for a more complete example. |
|
47 | - * 'espresso_people_type' => array( |
|
48 | - * 'singular_name' => esc_html__('People Type', 'event_espresso'), |
|
49 | - * 'plural_name' => esc_html__('People Types', 'event_espresso'), |
|
50 | - * 'args' => array() |
|
51 | - * ) |
|
52 | - * }, |
|
53 | - * @type array $default_terms { |
|
54 | - * An array of terms to set as the default for a given taxonomy and the |
|
55 | - * custom post types applied to. |
|
56 | - * 'taxonomy_name' => array( |
|
57 | - * 'term' => array( 'cpt_a_name', 'cpt_b_name' ) |
|
58 | - * ) |
|
59 | - * } |
|
60 | - * } |
|
61 | - */ |
|
62 | - public static function register($identifier = '', array $setup_args = []) |
|
63 | - { |
|
25 | + /** |
|
26 | + * Used to register new CPTs and Taxonomies. |
|
27 | + * |
|
28 | + * @param string $identifier reference used for the addon registering cpts and cts |
|
29 | + * @param array $setup_args { |
|
30 | + * An array of required values for registering the cpts and taxonomies |
|
31 | + * @type array $cpts { |
|
32 | + * An array of cpts and their arguments.(short example below) |
|
33 | + * @return void |
|
34 | + * @throws EE_Error |
|
35 | + * @see CustomPostTypeDefinitions::setDefinitions for a more complete example. |
|
36 | + * 'people' => array( |
|
37 | + * 'singular_name' => esc_html__('People', 'event_espresso'), |
|
38 | + * 'plural_name' => esc_html__('People', 'event_espresso'), |
|
39 | + * 'singular_slug' => esc_html__('people', 'event_espresso'), |
|
40 | + * 'plural_slug' => esc_html__('peoples', 'event_espresso'), |
|
41 | + * 'class_name' => 'EE_People' |
|
42 | + * ) |
|
43 | + * }, |
|
44 | + * @type array $cts { |
|
45 | + * An array of custom taxonomies and their arguments (short example below). |
|
46 | + * @see CustomTaxonomyDefinitions::setTaxonomies() for a more complete example. |
|
47 | + * 'espresso_people_type' => array( |
|
48 | + * 'singular_name' => esc_html__('People Type', 'event_espresso'), |
|
49 | + * 'plural_name' => esc_html__('People Types', 'event_espresso'), |
|
50 | + * 'args' => array() |
|
51 | + * ) |
|
52 | + * }, |
|
53 | + * @type array $default_terms { |
|
54 | + * An array of terms to set as the default for a given taxonomy and the |
|
55 | + * custom post types applied to. |
|
56 | + * 'taxonomy_name' => array( |
|
57 | + * 'term' => array( 'cpt_a_name', 'cpt_b_name' ) |
|
58 | + * ) |
|
59 | + * } |
|
60 | + * } |
|
61 | + */ |
|
62 | + public static function register($identifier = '', array $setup_args = []) |
|
63 | + { |
|
64 | 64 | |
65 | - // check for required params |
|
66 | - if (empty($identifier)) { |
|
67 | - throw new EE_Error( |
|
68 | - esc_html__( |
|
69 | - 'In order to register custom post types and custom taxonomies, you must include a value to reference what had been registered', |
|
70 | - 'event_espresso' |
|
71 | - ) |
|
72 | - ); |
|
73 | - } |
|
65 | + // check for required params |
|
66 | + if (empty($identifier)) { |
|
67 | + throw new EE_Error( |
|
68 | + esc_html__( |
|
69 | + 'In order to register custom post types and custom taxonomies, you must include a value to reference what had been registered', |
|
70 | + 'event_espresso' |
|
71 | + ) |
|
72 | + ); |
|
73 | + } |
|
74 | 74 | |
75 | - if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) { |
|
76 | - throw new EE_Error( |
|
77 | - esc_html__( |
|
78 | - 'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.', |
|
79 | - 'event_espresso' |
|
80 | - ) |
|
81 | - ); |
|
82 | - } |
|
75 | + if (! is_array($setup_args) || (empty($setup_args['cpts']) && empty($setup_args['cts']))) { |
|
76 | + throw new EE_Error( |
|
77 | + esc_html__( |
|
78 | + 'In order to register custom post types or custom taxonomies, you must include an array containing either an array of custom post types to register (key "cpts"), an array of custom taxonomies ("cts") or both.', |
|
79 | + 'event_espresso' |
|
80 | + ) |
|
81 | + ); |
|
82 | + } |
|
83 | 83 | |
84 | - // make sure we don't register twice |
|
85 | - if (isset(self::$_registry[ $identifier ])) { |
|
86 | - return; |
|
87 | - } |
|
84 | + // make sure we don't register twice |
|
85 | + if (isset(self::$_registry[ $identifier ])) { |
|
86 | + return; |
|
87 | + } |
|
88 | 88 | |
89 | - // make sure cpt ref is unique. |
|
90 | - if (isset(self::$_registry[ $identifier ])) { |
|
91 | - $identifier = uniqid() . '_' . $identifier; |
|
92 | - } |
|
89 | + // make sure cpt ref is unique. |
|
90 | + if (isset(self::$_registry[ $identifier ])) { |
|
91 | + $identifier = uniqid() . '_' . $identifier; |
|
92 | + } |
|
93 | 93 | |
94 | - // make sure this was called in the right place! |
|
95 | - if (did_action('AHEE__EE_System__load_CPTs_and_session__complete')) { |
|
96 | - EE_Error::doing_it_wrong( |
|
97 | - __METHOD__, |
|
98 | - sprintf( |
|
99 | - esc_html__( |
|
100 | - 'EE_Register_CPT has been called and given a reference of "%s". It may or may not work because it should be called on or before "AHEE__EE_System__load_CPTs_and_session__complete" action hook.', |
|
101 | - 'event_espresso' |
|
102 | - ), |
|
103 | - $identifier |
|
104 | - ), |
|
105 | - '4.5.0' |
|
106 | - ); |
|
107 | - } |
|
108 | - // validate incoming args |
|
109 | - $validated = [ |
|
110 | - 'cpts' => isset($setup_args['cpts']) |
|
111 | - ? (array) $setup_args['cpts'] |
|
112 | - : [], |
|
113 | - 'cts' => isset($setup_args['cts']) |
|
114 | - ? (array) $setup_args['cts'] |
|
115 | - : [], |
|
116 | - 'default_terms' => isset($setup_args['default_terms']) |
|
117 | - ? (array) $setup_args['default_terms'] |
|
118 | - : [], |
|
119 | - ]; |
|
94 | + // make sure this was called in the right place! |
|
95 | + if (did_action('AHEE__EE_System__load_CPTs_and_session__complete')) { |
|
96 | + EE_Error::doing_it_wrong( |
|
97 | + __METHOD__, |
|
98 | + sprintf( |
|
99 | + esc_html__( |
|
100 | + 'EE_Register_CPT has been called and given a reference of "%s". It may or may not work because it should be called on or before "AHEE__EE_System__load_CPTs_and_session__complete" action hook.', |
|
101 | + 'event_espresso' |
|
102 | + ), |
|
103 | + $identifier |
|
104 | + ), |
|
105 | + '4.5.0' |
|
106 | + ); |
|
107 | + } |
|
108 | + // validate incoming args |
|
109 | + $validated = [ |
|
110 | + 'cpts' => isset($setup_args['cpts']) |
|
111 | + ? (array) $setup_args['cpts'] |
|
112 | + : [], |
|
113 | + 'cts' => isset($setup_args['cts']) |
|
114 | + ? (array) $setup_args['cts'] |
|
115 | + : [], |
|
116 | + 'default_terms' => isset($setup_args['default_terms']) |
|
117 | + ? (array) $setup_args['default_terms'] |
|
118 | + : [], |
|
119 | + ]; |
|
120 | 120 | |
121 | - self::$_registry[ $identifier ] = $validated; |
|
121 | + self::$_registry[ $identifier ] = $validated; |
|
122 | 122 | |
123 | - // hook into to cpt system |
|
124 | - add_filter( |
|
125 | - 'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes', |
|
126 | - [__CLASS__, 'filterCustomPostTypeDefinitions'], |
|
127 | - 5 |
|
128 | - ); |
|
129 | - add_filter( |
|
130 | - 'FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies', |
|
131 | - [__CLASS__, 'filterCustomTaxonomyDefinitions'], |
|
132 | - 5 |
|
133 | - ); |
|
134 | - add_action( |
|
135 | - 'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end', |
|
136 | - [__CLASS__, 'registerCustomTaxonomyTerm'], |
|
137 | - 5 |
|
138 | - ); |
|
139 | - } |
|
123 | + // hook into to cpt system |
|
124 | + add_filter( |
|
125 | + 'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes', |
|
126 | + [__CLASS__, 'filterCustomPostTypeDefinitions'], |
|
127 | + 5 |
|
128 | + ); |
|
129 | + add_filter( |
|
130 | + 'FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies', |
|
131 | + [__CLASS__, 'filterCustomTaxonomyDefinitions'], |
|
132 | + 5 |
|
133 | + ); |
|
134 | + add_action( |
|
135 | + 'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end', |
|
136 | + [__CLASS__, 'registerCustomTaxonomyTerm'], |
|
137 | + 5 |
|
138 | + ); |
|
139 | + } |
|
140 | 140 | |
141 | 141 | |
142 | - /** |
|
143 | - * Callback for |
|
144 | - * FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes |
|
145 | - * that adds additional custom post types to be registered. |
|
146 | - * |
|
147 | - * @param array $custom_post_type_definitions array of cpts that are already set |
|
148 | - * @return array new array of cpts and their registration information |
|
149 | - */ |
|
150 | - public static function filterCustomPostTypeDefinitions(array $custom_post_type_definitions) |
|
151 | - { |
|
152 | - foreach (self::$_registry as $registries) { |
|
153 | - foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
|
154 | - $custom_post_type_definitions[ $cpt_name ] = $cpt_settings; |
|
155 | - } |
|
156 | - } |
|
157 | - return $custom_post_type_definitions; |
|
158 | - } |
|
142 | + /** |
|
143 | + * Callback for |
|
144 | + * FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes |
|
145 | + * that adds additional custom post types to be registered. |
|
146 | + * |
|
147 | + * @param array $custom_post_type_definitions array of cpts that are already set |
|
148 | + * @return array new array of cpts and their registration information |
|
149 | + */ |
|
150 | + public static function filterCustomPostTypeDefinitions(array $custom_post_type_definitions) |
|
151 | + { |
|
152 | + foreach (self::$_registry as $registries) { |
|
153 | + foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
|
154 | + $custom_post_type_definitions[ $cpt_name ] = $cpt_settings; |
|
155 | + } |
|
156 | + } |
|
157 | + return $custom_post_type_definitions; |
|
158 | + } |
|
159 | 159 | |
160 | 160 | |
161 | - /** |
|
162 | - * Callback for |
|
163 | - * FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies |
|
164 | - * that adds additional custom taxonomies to be registered. |
|
165 | - * |
|
166 | - * @param array $custom_taxonomy_definitions array of cts that are already set. |
|
167 | - * @return array new array of cts and their registration information. |
|
168 | - */ |
|
169 | - public static function filterCustomTaxonomyDefinitions(array $custom_taxonomy_definitions) |
|
170 | - { |
|
171 | - foreach (self::$_registry as $registries) { |
|
172 | - foreach ($registries['cts'] as $ct_name => $ct_settings) { |
|
173 | - $custom_taxonomy_definitions[ $ct_name ] = $ct_settings; |
|
174 | - } |
|
175 | - } |
|
176 | - return $custom_taxonomy_definitions; |
|
177 | - } |
|
161 | + /** |
|
162 | + * Callback for |
|
163 | + * FHEE__EventEspresso_core_domain_entities_custom_post_types_TaxonomyDefinitions__getTaxonomies |
|
164 | + * that adds additional custom taxonomies to be registered. |
|
165 | + * |
|
166 | + * @param array $custom_taxonomy_definitions array of cts that are already set. |
|
167 | + * @return array new array of cts and their registration information. |
|
168 | + */ |
|
169 | + public static function filterCustomTaxonomyDefinitions(array $custom_taxonomy_definitions) |
|
170 | + { |
|
171 | + foreach (self::$_registry as $registries) { |
|
172 | + foreach ($registries['cts'] as $ct_name => $ct_settings) { |
|
173 | + $custom_taxonomy_definitions[ $ct_name ] = $ct_settings; |
|
174 | + } |
|
175 | + } |
|
176 | + return $custom_taxonomy_definitions; |
|
177 | + } |
|
178 | 178 | |
179 | 179 | |
180 | - /** |
|
181 | - * Callback for |
|
182 | - * AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end |
|
183 | - * which is used to set the default terms |
|
184 | - * |
|
185 | - * @param RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms |
|
186 | - * @return void |
|
187 | - */ |
|
188 | - public static function registerCustomTaxonomyTerm(RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms) |
|
189 | - { |
|
190 | - foreach (self::$_registry as $registries) { |
|
191 | - foreach ($registries['default_terms'] as $taxonomy => $terms) { |
|
192 | - foreach ($terms as $term => $cpts) { |
|
193 | - $register_custom_taxonomy_terms->registerCustomTaxonomyTerm( |
|
194 | - $taxonomy, |
|
195 | - $term, |
|
196 | - $cpts |
|
197 | - ); |
|
198 | - } |
|
199 | - } |
|
200 | - } |
|
201 | - } |
|
180 | + /** |
|
181 | + * Callback for |
|
182 | + * AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end |
|
183 | + * which is used to set the default terms |
|
184 | + * |
|
185 | + * @param RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms |
|
186 | + * @return void |
|
187 | + */ |
|
188 | + public static function registerCustomTaxonomyTerm(RegisterCustomTaxonomyTerms $register_custom_taxonomy_terms) |
|
189 | + { |
|
190 | + foreach (self::$_registry as $registries) { |
|
191 | + foreach ($registries['default_terms'] as $taxonomy => $terms) { |
|
192 | + foreach ($terms as $term => $cpts) { |
|
193 | + $register_custom_taxonomy_terms->registerCustomTaxonomyTerm( |
|
194 | + $taxonomy, |
|
195 | + $term, |
|
196 | + $cpts |
|
197 | + ); |
|
198 | + } |
|
199 | + } |
|
200 | + } |
|
201 | + } |
|
202 | 202 | |
203 | 203 | |
204 | - /** |
|
205 | - * @param array $cpts array of cpts that are already set |
|
206 | - * @return array new array of cpts and their registration information |
|
207 | - * @deprecated 4.9.62.p |
|
208 | - */ |
|
209 | - public static function filter_cpts(array $cpts) |
|
210 | - { |
|
211 | - foreach (self::$_registry as $registries) { |
|
212 | - foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
|
213 | - $cpts[ $cpt_name ] = $cpt_settings; |
|
214 | - } |
|
215 | - } |
|
216 | - return $cpts; |
|
217 | - } |
|
204 | + /** |
|
205 | + * @param array $cpts array of cpts that are already set |
|
206 | + * @return array new array of cpts and their registration information |
|
207 | + * @deprecated 4.9.62.p |
|
208 | + */ |
|
209 | + public static function filter_cpts(array $cpts) |
|
210 | + { |
|
211 | + foreach (self::$_registry as $registries) { |
|
212 | + foreach ($registries['cpts'] as $cpt_name => $cpt_settings) { |
|
213 | + $cpts[ $cpt_name ] = $cpt_settings; |
|
214 | + } |
|
215 | + } |
|
216 | + return $cpts; |
|
217 | + } |
|
218 | 218 | |
219 | 219 | |
220 | - /** |
|
221 | - * @param array $cts array of cts that are already set. |
|
222 | - * @return array new array of cts and their registration information. |
|
223 | - * @deprecated 4.9.62.p |
|
224 | - */ |
|
225 | - public static function filter_cts(array $cts) |
|
226 | - { |
|
227 | - foreach (self::$_registry as $registries) { |
|
228 | - foreach ($registries['cts'] as $ct_name => $ct_settings) { |
|
229 | - $cts[ $ct_name ] = $ct_settings; |
|
230 | - } |
|
231 | - } |
|
232 | - return $cts; |
|
233 | - } |
|
220 | + /** |
|
221 | + * @param array $cts array of cts that are already set. |
|
222 | + * @return array new array of cts and their registration information. |
|
223 | + * @deprecated 4.9.62.p |
|
224 | + */ |
|
225 | + public static function filter_cts(array $cts) |
|
226 | + { |
|
227 | + foreach (self::$_registry as $registries) { |
|
228 | + foreach ($registries['cts'] as $ct_name => $ct_settings) { |
|
229 | + $cts[ $ct_name ] = $ct_settings; |
|
230 | + } |
|
231 | + } |
|
232 | + return $cts; |
|
233 | + } |
|
234 | 234 | |
235 | 235 | |
236 | - /** |
|
237 | - * @param EE_Register_CPTs $cpt_class |
|
238 | - * @return void |
|
239 | - * @deprecated 4.9.62.p |
|
240 | - */ |
|
241 | - public static function default_terms(EE_Register_CPTs $cpt_class) |
|
242 | - { |
|
243 | - foreach (self::$_registry as $registries) { |
|
244 | - foreach ($registries['default_terms'] as $taxonomy => $terms) { |
|
245 | - foreach ($terms as $term => $cpts) { |
|
246 | - $cpt_class->set_default_term($taxonomy, $term, $cpts); |
|
247 | - } |
|
248 | - } |
|
249 | - } |
|
250 | - } |
|
236 | + /** |
|
237 | + * @param EE_Register_CPTs $cpt_class |
|
238 | + * @return void |
|
239 | + * @deprecated 4.9.62.p |
|
240 | + */ |
|
241 | + public static function default_terms(EE_Register_CPTs $cpt_class) |
|
242 | + { |
|
243 | + foreach (self::$_registry as $registries) { |
|
244 | + foreach ($registries['default_terms'] as $taxonomy => $terms) { |
|
245 | + foreach ($terms as $term => $cpts) { |
|
246 | + $cpt_class->set_default_term($taxonomy, $term, $cpts); |
|
247 | + } |
|
248 | + } |
|
249 | + } |
|
250 | + } |
|
251 | 251 | |
252 | 252 | |
253 | - /** |
|
254 | - * This deregisters whats been registered on this class (for the given slug). |
|
255 | - * |
|
256 | - * @param string $identifier The reference for the item registered to be removed. |
|
257 | - * |
|
258 | - * @return void |
|
259 | - * @since 4.5.0 |
|
260 | - * |
|
261 | - */ |
|
262 | - public static function deregister($identifier = '') |
|
263 | - { |
|
264 | - unset(self::$_registry[ $identifier ]); |
|
265 | - } |
|
253 | + /** |
|
254 | + * This deregisters whats been registered on this class (for the given slug). |
|
255 | + * |
|
256 | + * @param string $identifier The reference for the item registered to be removed. |
|
257 | + * |
|
258 | + * @return void |
|
259 | + * @since 4.5.0 |
|
260 | + * |
|
261 | + */ |
|
262 | + public static function deregister($identifier = '') |
|
263 | + { |
|
264 | + unset(self::$_registry[ $identifier ]); |
|
265 | + } |
|
266 | 266 | } |
@@ -44,7 +44,7 @@ discard block |
||
44 | 44 | { |
45 | 45 | |
46 | 46 | // check that an admin_page has not already been registered with that name |
47 | - if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
47 | + if (isset(self::$_ee_admin_page_registry[$identifier])) { |
|
48 | 48 | throw new EE_Error( |
49 | 49 | sprintf( |
50 | 50 | esc_html__( |
@@ -67,11 +67,11 @@ discard block |
||
67 | 67 | } |
68 | 68 | |
69 | 69 | // make sure we don't register twice |
70 | - if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
70 | + if (isset(self::$_ee_admin_page_registry[$identifier])) { |
|
71 | 71 | return; |
72 | 72 | } |
73 | 73 | |
74 | - if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) { |
|
74 | + if ( ! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) { |
|
75 | 75 | EE_Error::doing_it_wrong( |
76 | 76 | __METHOD__, |
77 | 77 | sprintf( |
@@ -86,7 +86,7 @@ discard block |
||
86 | 86 | } |
87 | 87 | |
88 | 88 | // add incoming stuff to our registry property |
89 | - self::$_ee_admin_page_registry[ $identifier ] = [ |
|
89 | + self::$_ee_admin_page_registry[$identifier] = [ |
|
90 | 90 | 'page_path' => $setup_args['page_path'], |
91 | 91 | 'config' => $setup_args, |
92 | 92 | ]; |
@@ -113,7 +113,7 @@ discard block |
||
113 | 113 | */ |
114 | 114 | public static function deregister($identifier = '') |
115 | 115 | { |
116 | - unset(self::$_ee_admin_page_registry[ $identifier ]); |
|
116 | + unset(self::$_ee_admin_page_registry[$identifier]); |
|
117 | 117 | } |
118 | 118 | |
119 | 119 | |
@@ -125,9 +125,9 @@ discard block |
||
125 | 125 | */ |
126 | 126 | public static function set_page_basename($installed_refs) |
127 | 127 | { |
128 | - if (! empty(self::$_ee_admin_page_registry)) { |
|
128 | + if ( ! empty(self::$_ee_admin_page_registry)) { |
|
129 | 129 | foreach (self::$_ee_admin_page_registry as $basename => $args) { |
130 | - $installed_refs[ $basename ] = $args['page_path']; |
|
130 | + $installed_refs[$basename] = $args['page_path']; |
|
131 | 131 | } |
132 | 132 | } |
133 | 133 | return $installed_refs; |
@@ -143,7 +143,7 @@ discard block |
||
143 | 143 | public static function set_page_path($paths) |
144 | 144 | { |
145 | 145 | foreach (self::$_ee_admin_page_registry as $basename => $args) { |
146 | - $paths[ $basename ] = $args['page_path']; |
|
146 | + $paths[$basename] = $args['page_path']; |
|
147 | 147 | } |
148 | 148 | return $paths; |
149 | 149 | } |
@@ -10,139 +10,139 @@ |
||
10 | 10 | */ |
11 | 11 | class EE_Register_Admin_Page implements EEI_Plugin_API |
12 | 12 | { |
13 | - /** |
|
14 | - * Holds registered EE_Admin_Pages |
|
15 | - * |
|
16 | - * @var array |
|
17 | - */ |
|
18 | - protected static $_ee_admin_page_registry = []; |
|
19 | - |
|
20 | - |
|
21 | - /** |
|
22 | - * The purpose of this method is to provide an easy way for addons to register their admin pages (using the EE |
|
23 | - * Admin Page loader system). |
|
24 | - * |
|
25 | - * @param string $identifier This string represents the basename of the Admin |
|
26 | - * Page init. The init file must use this basename |
|
27 | - * in its name and class (i.e. |
|
28 | - * {page_basename}_Admin_Page_Init.core.php). |
|
29 | - * @param array $setup_args { An array of configuration options |
|
30 | - * that will be used in different circumstances |
|
31 | - * |
|
32 | - * @type string $page_path This is the path where the registered admin pages |
|
33 | - * reside ( used to setup autoloaders). |
|
34 | - * |
|
35 | - * } |
|
36 | - * @return void |
|
37 | - * @throws EE_Error |
|
38 | - * @since 4.3.0 |
|
39 | - * |
|
40 | - */ |
|
41 | - public static function register($identifier = '', array $setup_args = []) |
|
42 | - { |
|
43 | - |
|
44 | - // check that an admin_page has not already been registered with that name |
|
45 | - if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
46 | - throw new EE_Error( |
|
47 | - sprintf( |
|
48 | - esc_html__( |
|
49 | - 'An Admin Page with the name "%s" has already been registered and each Admin Page requires a unique name.', |
|
50 | - 'event_espresso' |
|
51 | - ), |
|
52 | - $identifier |
|
53 | - ) |
|
54 | - ); |
|
55 | - } |
|
56 | - |
|
57 | - // required fields MUST be present, so let's make sure they are. |
|
58 | - if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['page_path'])) { |
|
59 | - throw new EE_Error( |
|
60 | - esc_html__( |
|
61 | - 'In order to register an Admin Page with EE_Register_Admin_Page::register(), you must include the "page_basename" (the class name of the page), and an array containing the following keys: "page_path" (the path where the registered admin pages reside)', |
|
62 | - 'event_espresso' |
|
63 | - ) |
|
64 | - ); |
|
65 | - } |
|
66 | - |
|
67 | - // make sure we don't register twice |
|
68 | - if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
69 | - return; |
|
70 | - } |
|
71 | - |
|
72 | - if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) { |
|
73 | - EE_Error::doing_it_wrong( |
|
74 | - __METHOD__, |
|
75 | - sprintf( |
|
76 | - esc_html__( |
|
77 | - 'An attempt was made to register "%s" as an EE Admin page has failed because it was not registered at the correct time. Please use the "AHEE__EE_Admin__loaded" hook to register Admin pages.', |
|
78 | - 'event_espresso' |
|
79 | - ), |
|
80 | - $identifier |
|
81 | - ), |
|
82 | - '4.3' |
|
83 | - ); |
|
84 | - } |
|
85 | - |
|
86 | - // add incoming stuff to our registry property |
|
87 | - self::$_ee_admin_page_registry[ $identifier ] = [ |
|
88 | - 'page_path' => $setup_args['page_path'], |
|
89 | - 'config' => $setup_args, |
|
90 | - ]; |
|
91 | - |
|
92 | - // add filters |
|
93 | - |
|
94 | - add_filter( |
|
95 | - 'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs', |
|
96 | - ['EE_Register_Admin_Page', 'set_page_basename'], |
|
97 | - 10 |
|
98 | - ); |
|
99 | - add_filter('FHEE__EEH_Autoloader__load_admin_core', ['EE_Register_Admin_Page', 'set_page_path'], 10); |
|
100 | - } |
|
101 | - |
|
102 | - |
|
103 | - /** |
|
104 | - * This deregisters a EE_Admin page that is already registered. Note, this MUST be loaded after the |
|
105 | - * page being deregistered is loaded. |
|
106 | - * |
|
107 | - * @param string $identifier Use whatever string was used to register the admin page. |
|
108 | - * @return void |
|
109 | - * @since 4.3.0 |
|
110 | - * |
|
111 | - */ |
|
112 | - public static function deregister($identifier = '') |
|
113 | - { |
|
114 | - unset(self::$_ee_admin_page_registry[ $identifier ]); |
|
115 | - } |
|
116 | - |
|
117 | - |
|
118 | - /** |
|
119 | - * set_page_basename |
|
120 | - * |
|
121 | - * @param $installed_refs |
|
122 | - * @return mixed |
|
123 | - */ |
|
124 | - public static function set_page_basename($installed_refs) |
|
125 | - { |
|
126 | - if (! empty(self::$_ee_admin_page_registry)) { |
|
127 | - foreach (self::$_ee_admin_page_registry as $basename => $args) { |
|
128 | - $installed_refs[ $basename ] = $args['page_path']; |
|
129 | - } |
|
130 | - } |
|
131 | - return $installed_refs; |
|
132 | - } |
|
133 | - |
|
134 | - |
|
135 | - /** |
|
136 | - * set_page_path |
|
137 | - * |
|
138 | - * @param $paths |
|
139 | - * @return mixed |
|
140 | - */ |
|
141 | - public static function set_page_path($paths) |
|
142 | - { |
|
143 | - foreach (self::$_ee_admin_page_registry as $basename => $args) { |
|
144 | - $paths[ $basename ] = $args['page_path']; |
|
145 | - } |
|
146 | - return $paths; |
|
147 | - } |
|
13 | + /** |
|
14 | + * Holds registered EE_Admin_Pages |
|
15 | + * |
|
16 | + * @var array |
|
17 | + */ |
|
18 | + protected static $_ee_admin_page_registry = []; |
|
19 | + |
|
20 | + |
|
21 | + /** |
|
22 | + * The purpose of this method is to provide an easy way for addons to register their admin pages (using the EE |
|
23 | + * Admin Page loader system). |
|
24 | + * |
|
25 | + * @param string $identifier This string represents the basename of the Admin |
|
26 | + * Page init. The init file must use this basename |
|
27 | + * in its name and class (i.e. |
|
28 | + * {page_basename}_Admin_Page_Init.core.php). |
|
29 | + * @param array $setup_args { An array of configuration options |
|
30 | + * that will be used in different circumstances |
|
31 | + * |
|
32 | + * @type string $page_path This is the path where the registered admin pages |
|
33 | + * reside ( used to setup autoloaders). |
|
34 | + * |
|
35 | + * } |
|
36 | + * @return void |
|
37 | + * @throws EE_Error |
|
38 | + * @since 4.3.0 |
|
39 | + * |
|
40 | + */ |
|
41 | + public static function register($identifier = '', array $setup_args = []) |
|
42 | + { |
|
43 | + |
|
44 | + // check that an admin_page has not already been registered with that name |
|
45 | + if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
46 | + throw new EE_Error( |
|
47 | + sprintf( |
|
48 | + esc_html__( |
|
49 | + 'An Admin Page with the name "%s" has already been registered and each Admin Page requires a unique name.', |
|
50 | + 'event_espresso' |
|
51 | + ), |
|
52 | + $identifier |
|
53 | + ) |
|
54 | + ); |
|
55 | + } |
|
56 | + |
|
57 | + // required fields MUST be present, so let's make sure they are. |
|
58 | + if (empty($identifier) || ! is_array($setup_args) || empty($setup_args['page_path'])) { |
|
59 | + throw new EE_Error( |
|
60 | + esc_html__( |
|
61 | + 'In order to register an Admin Page with EE_Register_Admin_Page::register(), you must include the "page_basename" (the class name of the page), and an array containing the following keys: "page_path" (the path where the registered admin pages reside)', |
|
62 | + 'event_espresso' |
|
63 | + ) |
|
64 | + ); |
|
65 | + } |
|
66 | + |
|
67 | + // make sure we don't register twice |
|
68 | + if (isset(self::$_ee_admin_page_registry[ $identifier ])) { |
|
69 | + return; |
|
70 | + } |
|
71 | + |
|
72 | + if (! did_action('AHEE__EE_System__load_espresso_addons') || did_action('AHEE__EE_Admin__loaded')) { |
|
73 | + EE_Error::doing_it_wrong( |
|
74 | + __METHOD__, |
|
75 | + sprintf( |
|
76 | + esc_html__( |
|
77 | + 'An attempt was made to register "%s" as an EE Admin page has failed because it was not registered at the correct time. Please use the "AHEE__EE_Admin__loaded" hook to register Admin pages.', |
|
78 | + 'event_espresso' |
|
79 | + ), |
|
80 | + $identifier |
|
81 | + ), |
|
82 | + '4.3' |
|
83 | + ); |
|
84 | + } |
|
85 | + |
|
86 | + // add incoming stuff to our registry property |
|
87 | + self::$_ee_admin_page_registry[ $identifier ] = [ |
|
88 | + 'page_path' => $setup_args['page_path'], |
|
89 | + 'config' => $setup_args, |
|
90 | + ]; |
|
91 | + |
|
92 | + // add filters |
|
93 | + |
|
94 | + add_filter( |
|
95 | + 'FHEE__EE_Admin_Page_Loader___get_installed_pages__installed_refs', |
|
96 | + ['EE_Register_Admin_Page', 'set_page_basename'], |
|
97 | + 10 |
|
98 | + ); |
|
99 | + add_filter('FHEE__EEH_Autoloader__load_admin_core', ['EE_Register_Admin_Page', 'set_page_path'], 10); |
|
100 | + } |
|
101 | + |
|
102 | + |
|
103 | + /** |
|
104 | + * This deregisters a EE_Admin page that is already registered. Note, this MUST be loaded after the |
|
105 | + * page being deregistered is loaded. |
|
106 | + * |
|
107 | + * @param string $identifier Use whatever string was used to register the admin page. |
|
108 | + * @return void |
|
109 | + * @since 4.3.0 |
|
110 | + * |
|
111 | + */ |
|
112 | + public static function deregister($identifier = '') |
|
113 | + { |
|
114 | + unset(self::$_ee_admin_page_registry[ $identifier ]); |
|
115 | + } |
|
116 | + |
|
117 | + |
|
118 | + /** |
|
119 | + * set_page_basename |
|
120 | + * |
|
121 | + * @param $installed_refs |
|
122 | + * @return mixed |
|
123 | + */ |
|
124 | + public static function set_page_basename($installed_refs) |
|
125 | + { |
|
126 | + if (! empty(self::$_ee_admin_page_registry)) { |
|
127 | + foreach (self::$_ee_admin_page_registry as $basename => $args) { |
|
128 | + $installed_refs[ $basename ] = $args['page_path']; |
|
129 | + } |
|
130 | + } |
|
131 | + return $installed_refs; |
|
132 | + } |
|
133 | + |
|
134 | + |
|
135 | + /** |
|
136 | + * set_page_path |
|
137 | + * |
|
138 | + * @param $paths |
|
139 | + * @return mixed |
|
140 | + */ |
|
141 | + public static function set_page_path($paths) |
|
142 | + { |
|
143 | + foreach (self::$_ee_admin_page_registry as $basename => $args) { |
|
144 | + $paths[ $basename ] = $args['page_path']; |
|
145 | + } |
|
146 | + return $paths; |
|
147 | + } |
|
148 | 148 | } |
@@ -47,20 +47,20 @@ discard block |
||
47 | 47 | '[TKT_USES_*]' => esc_html__( |
48 | 48 | 'This attribute based shortcode parses to show the number of uses the ticket has. The optional "schema" attribute can be used to indicate what schema is used when the uses is infinite. Options are:', |
49 | 49 | 'event_espresso' |
50 | - ) . |
|
51 | - '<p><ul>' . |
|
52 | - '<li><strong>symbol</strong>:' . esc_html__( |
|
50 | + ). |
|
51 | + '<p><ul>'. |
|
52 | + '<li><strong>symbol</strong>:'.esc_html__( |
|
53 | 53 | 'This returns the ∞ symbol.', |
54 | 54 | 'event_espresso' |
55 | - ) . '</li>' . |
|
56 | - '<li><strong>text</strong>:' . esc_html__( |
|
55 | + ).'</li>'. |
|
56 | + '<li><strong>text</strong>:'.esc_html__( |
|
57 | 57 | 'This returns the word, "Unlimited". This is also the default if the "schema" attribute is not used.', |
58 | 58 | 'event_espresso' |
59 | - ) . '</li>' . |
|
60 | - '<li><strong>{custom}</strong>:' . esc_html__( |
|
59 | + ).'</li>'. |
|
60 | + '<li><strong>{custom}</strong>:'.esc_html__( |
|
61 | 61 | 'You can put anything you want as a string instead and that will be used. So you could have the world "any" and whenever uses for a ticket is infinity, this shortcode will parse to "any".', |
62 | 62 | 'event_espresso' |
63 | - ) . '</li>' . |
|
63 | + ).'</li>'. |
|
64 | 64 | '</ul></p>', |
65 | 65 | ); |
66 | 66 | } |
@@ -82,9 +82,9 @@ discard block |
||
82 | 82 | $this->_ticket = empty($this->_ticket) |
83 | 83 | && $this->_data instanceof EE_Line_Item |
84 | 84 | && $aee instanceof EE_Messages_Addressee |
85 | - && ! empty($aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket']) |
|
86 | - && $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] instanceof EE_Ticket |
|
87 | - ? $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] |
|
85 | + && ! empty($aee->line_items_with_children[$this->_data->ID()]['EE_Ticket']) |
|
86 | + && $aee->line_items_with_children[$this->_data->ID()]['EE_Ticket'] instanceof EE_Ticket |
|
87 | + ? $aee->line_items_with_children[$this->_data->ID()]['EE_Ticket'] |
|
88 | 88 | : $this->_ticket; |
89 | 89 | |
90 | 90 | // if still no ticket, then let's see if there is a reg_obj. If there IS, then we'll try and grab the ticket from the reg_obj instead. |
@@ -95,7 +95,7 @@ discard block |
||
95 | 95 | |
96 | 96 | |
97 | 97 | // If there is no event object by now then get out. |
98 | - if (! $this->_ticket instanceof EE_Ticket) { |
|
98 | + if ( ! $this->_ticket instanceof EE_Ticket) { |
|
99 | 99 | return ''; |
100 | 100 | } |
101 | 101 | |
@@ -121,7 +121,7 @@ discard block |
||
121 | 121 | break; |
122 | 122 | |
123 | 123 | case '[TKT_QTY_PURCHASED]': |
124 | - return $aee instanceof EE_Messages_Addressee ? $aee->tickets[ $this->_ticket->ID() ]['count'] : ''; |
|
124 | + return $aee instanceof EE_Messages_Addressee ? $aee->tickets[$this->_ticket->ID()]['count'] : ''; |
|
125 | 125 | break; |
126 | 126 | } |
127 | 127 |
@@ -17,123 +17,123 @@ |
||
17 | 17 | */ |
18 | 18 | class EE_Ticket_Shortcodes extends EE_Shortcodes |
19 | 19 | { |
20 | - /** |
|
21 | - * Will hold the EE_Ticket if available |
|
22 | - * |
|
23 | - * @var EE_Ticket |
|
24 | - */ |
|
25 | - protected $_ticket; |
|
26 | - |
|
27 | - |
|
28 | - protected function _init_props() |
|
29 | - { |
|
30 | - $this->label = esc_html__('Ticket Shortcodes', 'event_espresso'); |
|
31 | - $this->description = esc_html__('All shortcodes specific to ticket related data', 'event_espresso'); |
|
32 | - $this->_shortcodes = array( |
|
33 | - '[TICKET_ID]' => esc_html__('Will be replaced by the ticket ID of a ticket', 'event_espresso'), |
|
34 | - '[TICKET_NAME]' => esc_html__('The name of the ticket', 'event_espresso'), |
|
35 | - '[TICKET_DESCRIPTION]' => esc_html__('The description of the ticket', 'event_espresso'), |
|
36 | - '[TICKET_PRICE]' => esc_html__('The price of the ticket', 'event_espresso'), |
|
37 | - '[TICKET_PRICE_WITH_TAXES]' => esc_html__( |
|
38 | - 'The price of the ticket including any taxes that might be on the ticket', |
|
39 | - 'event_espresso' |
|
40 | - ), |
|
41 | - '[TKT_QTY_PURCHASED]' => esc_html__( |
|
42 | - 'The total quantity of the current ticket in the list that has been purchased in this transaction', |
|
43 | - 'event_espresso' |
|
44 | - ), |
|
45 | - '[TKT_USES_*]' => esc_html__( |
|
46 | - 'This attribute based shortcode parses to show the number of uses the ticket has. The optional "schema" attribute can be used to indicate what schema is used when the uses is infinite. Options are:', |
|
47 | - 'event_espresso' |
|
48 | - ) . |
|
49 | - '<p><ul>' . |
|
50 | - '<li><strong>symbol</strong>:' . esc_html__( |
|
51 | - 'This returns the ∞ symbol.', |
|
52 | - 'event_espresso' |
|
53 | - ) . '</li>' . |
|
54 | - '<li><strong>text</strong>:' . esc_html__( |
|
55 | - 'This returns the word, "Unlimited". This is also the default if the "schema" attribute is not used.', |
|
56 | - 'event_espresso' |
|
57 | - ) . '</li>' . |
|
58 | - '<li><strong>{custom}</strong>:' . esc_html__( |
|
59 | - 'You can put anything you want as a string instead and that will be used. So you could have the world "any" and whenever uses for a ticket is infinity, this shortcode will parse to "any".', |
|
60 | - 'event_espresso' |
|
61 | - ) . '</li>' . |
|
62 | - '</ul></p>', |
|
63 | - ); |
|
64 | - } |
|
65 | - |
|
66 | - |
|
67 | - protected function _parser($shortcode) |
|
68 | - { |
|
69 | - |
|
70 | - $this->_ticket = $this->_data instanceof EE_Ticket ? $this->_data : null; |
|
71 | - |
|
72 | - $aee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
73 | - $aee = ! $aee instanceof EE_Messages_Addressee && is_array( |
|
74 | - $this->_extra_data |
|
75 | - ) && isset($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
76 | - ? $this->_extra_data['data'] : $aee; |
|
77 | - |
|
78 | - |
|
79 | - // possible EE_Line_Item may be incoming data |
|
80 | - $this->_ticket = empty($this->_ticket) |
|
81 | - && $this->_data instanceof EE_Line_Item |
|
82 | - && $aee instanceof EE_Messages_Addressee |
|
83 | - && ! empty($aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket']) |
|
84 | - && $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] instanceof EE_Ticket |
|
85 | - ? $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] |
|
86 | - : $this->_ticket; |
|
87 | - |
|
88 | - // if still no ticket, then let's see if there is a reg_obj. If there IS, then we'll try and grab the ticket from the reg_obj instead. |
|
89 | - if (empty($this->_ticket)) { |
|
90 | - $this->_ticket = $aee instanceof EE_Messages_Addressee && $aee->reg_obj instanceof EE_Registration |
|
91 | - ? $aee->reg_obj->ticket() : null; |
|
92 | - } |
|
93 | - |
|
94 | - |
|
95 | - // If there is no event object by now then get out. |
|
96 | - if (! $this->_ticket instanceof EE_Ticket) { |
|
97 | - return ''; |
|
98 | - } |
|
99 | - |
|
100 | - switch ($shortcode) { |
|
101 | - case '[TICKET_ID]': |
|
102 | - return $this->_ticket->ID(); |
|
103 | - break; |
|
104 | - |
|
105 | - case '[TICKET_NAME]': |
|
106 | - return $this->_ticket->get('TKT_name'); |
|
107 | - break; |
|
108 | - |
|
109 | - case '[TICKET_DESCRIPTION]': |
|
110 | - return $this->_ticket->get('TKT_description'); |
|
111 | - break; |
|
112 | - |
|
113 | - case '[TICKET_PRICE]': |
|
114 | - return EEH_Template::format_currency($this->_ticket->get('TKT_price')); |
|
115 | - break; |
|
116 | - |
|
117 | - case '[TICKET_PRICE_WITH_TAXES]': |
|
118 | - return EEH_Template::format_currency($this->_ticket->get_ticket_total_with_taxes()); |
|
119 | - break; |
|
120 | - |
|
121 | - case '[TKT_QTY_PURCHASED]': |
|
122 | - return $aee instanceof EE_Messages_Addressee ? $aee->tickets[ $this->_ticket->ID() ]['count'] : ''; |
|
123 | - break; |
|
124 | - } |
|
125 | - |
|
126 | - if (strpos($shortcode, '[TKT_USES_*') !== false) { |
|
127 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
128 | - $schema = empty($attrs['schema']) ? null : $attrs['schema']; |
|
129 | - return $this->_ticket->get_pretty('TKT_uses', $schema); |
|
130 | - } |
|
131 | - return ''; |
|
132 | - } |
|
133 | - |
|
134 | - |
|
135 | - public function get_ticket_set() |
|
136 | - { |
|
137 | - return $this->_ticket; |
|
138 | - } |
|
20 | + /** |
|
21 | + * Will hold the EE_Ticket if available |
|
22 | + * |
|
23 | + * @var EE_Ticket |
|
24 | + */ |
|
25 | + protected $_ticket; |
|
26 | + |
|
27 | + |
|
28 | + protected function _init_props() |
|
29 | + { |
|
30 | + $this->label = esc_html__('Ticket Shortcodes', 'event_espresso'); |
|
31 | + $this->description = esc_html__('All shortcodes specific to ticket related data', 'event_espresso'); |
|
32 | + $this->_shortcodes = array( |
|
33 | + '[TICKET_ID]' => esc_html__('Will be replaced by the ticket ID of a ticket', 'event_espresso'), |
|
34 | + '[TICKET_NAME]' => esc_html__('The name of the ticket', 'event_espresso'), |
|
35 | + '[TICKET_DESCRIPTION]' => esc_html__('The description of the ticket', 'event_espresso'), |
|
36 | + '[TICKET_PRICE]' => esc_html__('The price of the ticket', 'event_espresso'), |
|
37 | + '[TICKET_PRICE_WITH_TAXES]' => esc_html__( |
|
38 | + 'The price of the ticket including any taxes that might be on the ticket', |
|
39 | + 'event_espresso' |
|
40 | + ), |
|
41 | + '[TKT_QTY_PURCHASED]' => esc_html__( |
|
42 | + 'The total quantity of the current ticket in the list that has been purchased in this transaction', |
|
43 | + 'event_espresso' |
|
44 | + ), |
|
45 | + '[TKT_USES_*]' => esc_html__( |
|
46 | + 'This attribute based shortcode parses to show the number of uses the ticket has. The optional "schema" attribute can be used to indicate what schema is used when the uses is infinite. Options are:', |
|
47 | + 'event_espresso' |
|
48 | + ) . |
|
49 | + '<p><ul>' . |
|
50 | + '<li><strong>symbol</strong>:' . esc_html__( |
|
51 | + 'This returns the ∞ symbol.', |
|
52 | + 'event_espresso' |
|
53 | + ) . '</li>' . |
|
54 | + '<li><strong>text</strong>:' . esc_html__( |
|
55 | + 'This returns the word, "Unlimited". This is also the default if the "schema" attribute is not used.', |
|
56 | + 'event_espresso' |
|
57 | + ) . '</li>' . |
|
58 | + '<li><strong>{custom}</strong>:' . esc_html__( |
|
59 | + 'You can put anything you want as a string instead and that will be used. So you could have the world "any" and whenever uses for a ticket is infinity, this shortcode will parse to "any".', |
|
60 | + 'event_espresso' |
|
61 | + ) . '</li>' . |
|
62 | + '</ul></p>', |
|
63 | + ); |
|
64 | + } |
|
65 | + |
|
66 | + |
|
67 | + protected function _parser($shortcode) |
|
68 | + { |
|
69 | + |
|
70 | + $this->_ticket = $this->_data instanceof EE_Ticket ? $this->_data : null; |
|
71 | + |
|
72 | + $aee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
73 | + $aee = ! $aee instanceof EE_Messages_Addressee && is_array( |
|
74 | + $this->_extra_data |
|
75 | + ) && isset($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
76 | + ? $this->_extra_data['data'] : $aee; |
|
77 | + |
|
78 | + |
|
79 | + // possible EE_Line_Item may be incoming data |
|
80 | + $this->_ticket = empty($this->_ticket) |
|
81 | + && $this->_data instanceof EE_Line_Item |
|
82 | + && $aee instanceof EE_Messages_Addressee |
|
83 | + && ! empty($aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket']) |
|
84 | + && $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] instanceof EE_Ticket |
|
85 | + ? $aee->line_items_with_children[ $this->_data->ID() ]['EE_Ticket'] |
|
86 | + : $this->_ticket; |
|
87 | + |
|
88 | + // if still no ticket, then let's see if there is a reg_obj. If there IS, then we'll try and grab the ticket from the reg_obj instead. |
|
89 | + if (empty($this->_ticket)) { |
|
90 | + $this->_ticket = $aee instanceof EE_Messages_Addressee && $aee->reg_obj instanceof EE_Registration |
|
91 | + ? $aee->reg_obj->ticket() : null; |
|
92 | + } |
|
93 | + |
|
94 | + |
|
95 | + // If there is no event object by now then get out. |
|
96 | + if (! $this->_ticket instanceof EE_Ticket) { |
|
97 | + return ''; |
|
98 | + } |
|
99 | + |
|
100 | + switch ($shortcode) { |
|
101 | + case '[TICKET_ID]': |
|
102 | + return $this->_ticket->ID(); |
|
103 | + break; |
|
104 | + |
|
105 | + case '[TICKET_NAME]': |
|
106 | + return $this->_ticket->get('TKT_name'); |
|
107 | + break; |
|
108 | + |
|
109 | + case '[TICKET_DESCRIPTION]': |
|
110 | + return $this->_ticket->get('TKT_description'); |
|
111 | + break; |
|
112 | + |
|
113 | + case '[TICKET_PRICE]': |
|
114 | + return EEH_Template::format_currency($this->_ticket->get('TKT_price')); |
|
115 | + break; |
|
116 | + |
|
117 | + case '[TICKET_PRICE_WITH_TAXES]': |
|
118 | + return EEH_Template::format_currency($this->_ticket->get_ticket_total_with_taxes()); |
|
119 | + break; |
|
120 | + |
|
121 | + case '[TKT_QTY_PURCHASED]': |
|
122 | + return $aee instanceof EE_Messages_Addressee ? $aee->tickets[ $this->_ticket->ID() ]['count'] : ''; |
|
123 | + break; |
|
124 | + } |
|
125 | + |
|
126 | + if (strpos($shortcode, '[TKT_USES_*') !== false) { |
|
127 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
128 | + $schema = empty($attrs['schema']) ? null : $attrs['schema']; |
|
129 | + return $this->_ticket->get_pretty('TKT_uses', $schema); |
|
130 | + } |
|
131 | + return ''; |
|
132 | + } |
|
133 | + |
|
134 | + |
|
135 | + public function get_ticket_set() |
|
136 | + { |
|
137 | + return $this->_ticket; |
|
138 | + } |
|
139 | 139 | } |
@@ -29,15 +29,15 @@ discard block |
||
29 | 29 | 'Outputs a list of payment items. Note, this is a dynamic shortcode in that it accepts some attributes for setting certain defaults. Attributes that are available are:', |
30 | 30 | 'event_espresso' |
31 | 31 | ) |
32 | - . '<p><ul>' . |
|
33 | - '<li><strong>no_payments</strong>:' . sprintf( |
|
32 | + . '<p><ul>'. |
|
33 | + '<li><strong>no_payments</strong>:'.sprintf( |
|
34 | 34 | esc_html__( |
35 | 35 | 'Indicate with this attribute what will be used if there are no payments present. Default is: "%sNo approved payments have been received.%s"', |
36 | 36 | 'event_espresso' |
37 | 37 | ), |
38 | 38 | htmlspecialchars('<td class="aln-cntr" colspan="6">'), |
39 | 39 | htmlspecialchars('</td>') |
40 | - ) . '</li>' . |
|
40 | + ).'</li>'. |
|
41 | 41 | '</ul></p>', |
42 | 42 | ); |
43 | 43 | } |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | $this->_validate_list_requirements(); |
68 | 68 | |
69 | 69 | |
70 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
70 | + if ( ! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
71 | 71 | return ''; |
72 | 72 | } |
73 | 73 |
@@ -18,88 +18,88 @@ |
||
18 | 18 | */ |
19 | 19 | class EE_Payment_List_Shortcodes extends EE_Shortcodes |
20 | 20 | { |
21 | - protected function _init_props() |
|
22 | - { |
|
23 | - $this->label = esc_html__('Payment List Shortcodes', 'event_espresso'); |
|
24 | - $this->description = esc_html__('All shortcodes specific to payment lists', 'event_espresso'); |
|
25 | - $this->_shortcodes = array( |
|
26 | - '[PAYMENT_LIST_*]' => esc_html__( |
|
27 | - 'Outputs a list of payment items. Note, this is a dynamic shortcode in that it accepts some attributes for setting certain defaults. Attributes that are available are:', |
|
28 | - 'event_espresso' |
|
29 | - ) |
|
30 | - . '<p><ul>' . |
|
31 | - '<li><strong>no_payments</strong>:' . sprintf( |
|
32 | - esc_html__( |
|
33 | - 'Indicate with this attribute what will be used if there are no payments present. Default is: "%sNo approved payments have been received.%s"', |
|
34 | - 'event_espresso' |
|
35 | - ), |
|
36 | - htmlspecialchars('<td class="aln-cntr" colspan="6">'), |
|
37 | - htmlspecialchars('</td>') |
|
38 | - ) . '</li>' . |
|
39 | - '</ul></p>', |
|
40 | - ); |
|
41 | - } |
|
42 | - |
|
43 | - |
|
44 | - protected function _parser($shortcode) |
|
45 | - { |
|
46 | - |
|
47 | - if (strpos($shortcode, '[PAYMENT_LIST_*') !== false) { |
|
48 | - return $this->_get_payment_list($shortcode); |
|
49 | - } |
|
50 | - return ''; |
|
51 | - } |
|
52 | - |
|
53 | - |
|
54 | - /** |
|
55 | - * verify incoming data contains what is needed for retrieving and parsing each payment for transaction. |
|
56 | - * |
|
57 | - * @since 4.5.0 |
|
58 | - * |
|
59 | - * @param string $shortcode The incoming shortcode. |
|
60 | - * |
|
61 | - * @return string parsed ticket line item list. |
|
62 | - */ |
|
63 | - private function _get_payment_list($shortcode) |
|
64 | - { |
|
65 | - $this->_validate_list_requirements(); |
|
66 | - |
|
67 | - |
|
68 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
69 | - return ''; |
|
70 | - } |
|
71 | - |
|
72 | - $valid_shortcodes = array('payment'); |
|
73 | - |
|
74 | - $addressee_obj = $this->_data['data']; |
|
75 | - $templates = $this->_extra_data['template']; |
|
76 | - $payments = apply_filters( |
|
77 | - 'FHEE__Payment_List_Shortcodes___get_payments_list__payments', |
|
78 | - $addressee_obj->payments |
|
79 | - ); |
|
80 | - |
|
81 | - // let's get any attributes that may be present and set the defaults. |
|
82 | - $atts = $this->_get_shortcode_attrs($shortcode); |
|
83 | - |
|
84 | - $no_payments_msg = empty($atts['no_payments']) ? esc_html__( |
|
85 | - 'No approved payments have been received.', |
|
86 | - 'event_espresso' |
|
87 | - ) : $atts['no_payments']; |
|
88 | - |
|
89 | - // made it here so we have an array of paymnets, so we should have what we need. |
|
90 | - $payment_content = empty($payments) ? $no_payments_msg : ''; |
|
91 | - |
|
92 | - $payments = (array) $payments; |
|
93 | - |
|
94 | - foreach ($payments as $payment) { |
|
95 | - $payment_content .= $this->_shortcode_helper->parse_payment_list_template( |
|
96 | - $templates['payment_list'], |
|
97 | - $payment, |
|
98 | - $valid_shortcodes, |
|
99 | - $this->_extra_data |
|
100 | - ); |
|
101 | - } |
|
102 | - |
|
103 | - return $payment_content; |
|
104 | - } |
|
21 | + protected function _init_props() |
|
22 | + { |
|
23 | + $this->label = esc_html__('Payment List Shortcodes', 'event_espresso'); |
|
24 | + $this->description = esc_html__('All shortcodes specific to payment lists', 'event_espresso'); |
|
25 | + $this->_shortcodes = array( |
|
26 | + '[PAYMENT_LIST_*]' => esc_html__( |
|
27 | + 'Outputs a list of payment items. Note, this is a dynamic shortcode in that it accepts some attributes for setting certain defaults. Attributes that are available are:', |
|
28 | + 'event_espresso' |
|
29 | + ) |
|
30 | + . '<p><ul>' . |
|
31 | + '<li><strong>no_payments</strong>:' . sprintf( |
|
32 | + esc_html__( |
|
33 | + 'Indicate with this attribute what will be used if there are no payments present. Default is: "%sNo approved payments have been received.%s"', |
|
34 | + 'event_espresso' |
|
35 | + ), |
|
36 | + htmlspecialchars('<td class="aln-cntr" colspan="6">'), |
|
37 | + htmlspecialchars('</td>') |
|
38 | + ) . '</li>' . |
|
39 | + '</ul></p>', |
|
40 | + ); |
|
41 | + } |
|
42 | + |
|
43 | + |
|
44 | + protected function _parser($shortcode) |
|
45 | + { |
|
46 | + |
|
47 | + if (strpos($shortcode, '[PAYMENT_LIST_*') !== false) { |
|
48 | + return $this->_get_payment_list($shortcode); |
|
49 | + } |
|
50 | + return ''; |
|
51 | + } |
|
52 | + |
|
53 | + |
|
54 | + /** |
|
55 | + * verify incoming data contains what is needed for retrieving and parsing each payment for transaction. |
|
56 | + * |
|
57 | + * @since 4.5.0 |
|
58 | + * |
|
59 | + * @param string $shortcode The incoming shortcode. |
|
60 | + * |
|
61 | + * @return string parsed ticket line item list. |
|
62 | + */ |
|
63 | + private function _get_payment_list($shortcode) |
|
64 | + { |
|
65 | + $this->_validate_list_requirements(); |
|
66 | + |
|
67 | + |
|
68 | + if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
69 | + return ''; |
|
70 | + } |
|
71 | + |
|
72 | + $valid_shortcodes = array('payment'); |
|
73 | + |
|
74 | + $addressee_obj = $this->_data['data']; |
|
75 | + $templates = $this->_extra_data['template']; |
|
76 | + $payments = apply_filters( |
|
77 | + 'FHEE__Payment_List_Shortcodes___get_payments_list__payments', |
|
78 | + $addressee_obj->payments |
|
79 | + ); |
|
80 | + |
|
81 | + // let's get any attributes that may be present and set the defaults. |
|
82 | + $atts = $this->_get_shortcode_attrs($shortcode); |
|
83 | + |
|
84 | + $no_payments_msg = empty($atts['no_payments']) ? esc_html__( |
|
85 | + 'No approved payments have been received.', |
|
86 | + 'event_espresso' |
|
87 | + ) : $atts['no_payments']; |
|
88 | + |
|
89 | + // made it here so we have an array of paymnets, so we should have what we need. |
|
90 | + $payment_content = empty($payments) ? $no_payments_msg : ''; |
|
91 | + |
|
92 | + $payments = (array) $payments; |
|
93 | + |
|
94 | + foreach ($payments as $payment) { |
|
95 | + $payment_content .= $this->_shortcode_helper->parse_payment_list_template( |
|
96 | + $templates['payment_list'], |
|
97 | + $payment, |
|
98 | + $valid_shortcodes, |
|
99 | + $this->_extra_data |
|
100 | + ); |
|
101 | + } |
|
102 | + |
|
103 | + return $payment_content; |
|
104 | + } |
|
105 | 105 | } |
@@ -61,7 +61,7 @@ discard block |
||
61 | 61 | $action = $request->getRequestParam('action'); |
62 | 62 | // show error message about buttons/urls not working as expected if messenger deactivated. |
63 | 63 | if ($action === 'update_message_template' && is_admin()) { |
64 | - if (! isset($this->_active_messengers['pdf'])) { |
|
64 | + if ( ! isset($this->_active_messengers['pdf'])) { |
|
65 | 65 | EE_Error::add_attention( |
66 | 66 | esc_html__( |
67 | 67 | 'Be aware that the pdf messenger is inactive. This means that any pdf related shortcodes will parse to an empty string.', |
@@ -70,7 +70,7 @@ discard block |
||
70 | 70 | ); |
71 | 71 | } |
72 | 72 | |
73 | - if (! isset($this->_active_messengers['html'])) { |
|
73 | + if ( ! isset($this->_active_messengers['html'])) { |
|
74 | 74 | EE_Error::add_attention( |
75 | 75 | esc_html__( |
76 | 76 | 'Be aware that the html messenger is inactive. This means that any html related shortcodes will parse to an empty string.', |
@@ -93,7 +93,7 @@ discard block |
||
93 | 93 | $recipient = ! $recipient instanceof EE_Messages_Addressee && ! empty($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
94 | 94 | ? $this->_extra_data['data'] : $recipient; |
95 | 95 | |
96 | - if (! $recipient instanceof EE_Messages_Addressee) { |
|
96 | + if ( ! $recipient instanceof EE_Messages_Addressee) { |
|
97 | 97 | return ''; |
98 | 98 | } |
99 | 99 | |
@@ -132,8 +132,8 @@ discard block |
||
132 | 132 | 'event_espresso' |
133 | 133 | ); |
134 | 134 | $content = ' |
135 | -<form method="post" action="' . $this->_get_url($recipient, $sending_messenger) . '" > |
|
136 | - <input class="print_button" type="submit" value="' . $download_text . '" /> |
|
135 | +<form method="post" action="' . $this->_get_url($recipient, $sending_messenger).'" > |
|
136 | + <input class="print_button" type="submit" value="' . $download_text.'" /> |
|
137 | 137 | </form> |
138 | 138 | '; |
139 | 139 | return $content; |
@@ -22,157 +22,157 @@ |
||
22 | 22 | */ |
23 | 23 | class EE_Messenger_Shortcodes extends EE_Shortcodes |
24 | 24 | { |
25 | - /** |
|
26 | - * Hold array of active messengers indexed by messenger name. |
|
27 | - * |
|
28 | - * @since 4.5.0 |
|
29 | - * |
|
30 | - * @var EE_messenger[] |
|
31 | - */ |
|
32 | - protected $_active_messengers = array(); |
|
33 | - |
|
34 | - |
|
35 | - protected function _init_props() |
|
36 | - { |
|
37 | - $this->label = esc_html__('Messenger Shortcodes', 'event_espresso'); |
|
38 | - $this->description = esc_html__('All shortcodes that are messenger specific.', 'event_espresso'); |
|
39 | - /** @type EE_Message_Resource_Manager $message_resource_manager */ |
|
40 | - $message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager'); |
|
41 | - // add messages about what happens when the messenger is active. |
|
42 | - $this->_active_messengers = $message_resource_manager->active_messengers(); |
|
43 | - |
|
44 | - $this->_shortcodes['[DISPLAY_HTML_URL]'] = esc_html__( |
|
45 | - 'This will return a link to view the template in a browser if the html messenger is active.', |
|
46 | - 'event_espresso' |
|
47 | - ); |
|
48 | - $this->_shortcodes['[DISPLAY_PDF_URL]'] = esc_html__( |
|
49 | - 'This will return a link to generate a pdf for the template if the pdf messenger is active.', |
|
50 | - 'event_espresso' |
|
51 | - ); |
|
52 | - $this->_shortcodes['[DISPLAY_PDF_BUTTON]'] = esc_html__( |
|
53 | - 'This will return html for a download pdf button trigger if the pdf messenger is active.', |
|
54 | - 'event_espresso' |
|
55 | - ); |
|
56 | - |
|
57 | - /** @var RequestInterface $request */ |
|
58 | - $request = LoaderFactory::getLoader()->getShared(RequestInterface::class); |
|
59 | - $action = $request->getRequestParam('action'); |
|
60 | - // show error message about buttons/urls not working as expected if messenger deactivated. |
|
61 | - if ($action === 'update_message_template' && is_admin()) { |
|
62 | - if (! isset($this->_active_messengers['pdf'])) { |
|
63 | - EE_Error::add_attention( |
|
64 | - esc_html__( |
|
65 | - 'Be aware that the pdf messenger is inactive. This means that any pdf related shortcodes will parse to an empty string.', |
|
66 | - 'event_espresso' |
|
67 | - ) |
|
68 | - ); |
|
69 | - } |
|
70 | - |
|
71 | - if (! isset($this->_active_messengers['html'])) { |
|
72 | - EE_Error::add_attention( |
|
73 | - esc_html__( |
|
74 | - 'Be aware that the html messenger is inactive. This means that any html related shortcodes will parse to an empty string.', |
|
75 | - 'event_espresso' |
|
76 | - ) |
|
77 | - ); |
|
78 | - } |
|
79 | - } |
|
80 | - } |
|
81 | - |
|
82 | - |
|
83 | - protected function _parser($shortcode) |
|
84 | - { |
|
85 | - // make sure we end up with a copy of the EE_Messages_Addressee object |
|
86 | - $recipient = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
87 | - $recipient = ! $recipient instanceof EE_Messages_Addressee && is_array( |
|
88 | - $this->_data |
|
89 | - ) && isset($this->_data['data']) && $this->_data['data'] instanceof EE_Messages_Addressee ? $this->_data['data'] |
|
90 | - : $recipient; |
|
91 | - $recipient = ! $recipient instanceof EE_Messages_Addressee && ! empty($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
92 | - ? $this->_extra_data['data'] : $recipient; |
|
93 | - |
|
94 | - if (! $recipient instanceof EE_Messages_Addressee) { |
|
95 | - return ''; |
|
96 | - } |
|
97 | - |
|
98 | - switch ($shortcode) { |
|
99 | - case '[DISPLAY_HTML_URL]': |
|
100 | - return isset($this->_active_messengers['html']) ? $this->_get_url($recipient, 'html') : ''; |
|
101 | - break; |
|
102 | - case '[DISPLAY_PDF_URL]': |
|
103 | - return isset($this->_active_messengers['pdf']) ? $this->_get_url($recipient, 'pdf') : ''; |
|
104 | - break; |
|
105 | - case '[DISPLAY_PDF_BUTTON]': |
|
106 | - return isset($this->_active_messengers['pdf']) ? $this->_get_button($recipient, 'pdf') : ''; |
|
107 | - break; |
|
108 | - } |
|
109 | - return ''; |
|
110 | - } |
|
111 | - |
|
112 | - |
|
113 | - /** |
|
114 | - * This method takes the incoming data and figures out from it what the message type is and evt_id/grp_id and uses |
|
115 | - * that to generate the html for a button in the template. |
|
116 | - * |
|
117 | - * @since 4.5.0 |
|
118 | - * |
|
119 | - * @param EE_Messages_Addressee $recipient |
|
120 | - * @param string $sending_messenger 'html' or 'pdf' |
|
121 | - * |
|
122 | - * @return string Generated html |
|
123 | - */ |
|
124 | - private function _get_button(EE_Messages_Addressee $recipient, $sending_messenger) |
|
125 | - { |
|
126 | - $download_text = $sending_messenger == 'pdf' |
|
127 | - ? esc_html__('Download PDF', 'event_espresso') |
|
128 | - : esc_html__( |
|
129 | - 'Show HTML', |
|
130 | - 'event_espresso' |
|
131 | - ); |
|
132 | - $content = ' |
|
25 | + /** |
|
26 | + * Hold array of active messengers indexed by messenger name. |
|
27 | + * |
|
28 | + * @since 4.5.0 |
|
29 | + * |
|
30 | + * @var EE_messenger[] |
|
31 | + */ |
|
32 | + protected $_active_messengers = array(); |
|
33 | + |
|
34 | + |
|
35 | + protected function _init_props() |
|
36 | + { |
|
37 | + $this->label = esc_html__('Messenger Shortcodes', 'event_espresso'); |
|
38 | + $this->description = esc_html__('All shortcodes that are messenger specific.', 'event_espresso'); |
|
39 | + /** @type EE_Message_Resource_Manager $message_resource_manager */ |
|
40 | + $message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager'); |
|
41 | + // add messages about what happens when the messenger is active. |
|
42 | + $this->_active_messengers = $message_resource_manager->active_messengers(); |
|
43 | + |
|
44 | + $this->_shortcodes['[DISPLAY_HTML_URL]'] = esc_html__( |
|
45 | + 'This will return a link to view the template in a browser if the html messenger is active.', |
|
46 | + 'event_espresso' |
|
47 | + ); |
|
48 | + $this->_shortcodes['[DISPLAY_PDF_URL]'] = esc_html__( |
|
49 | + 'This will return a link to generate a pdf for the template if the pdf messenger is active.', |
|
50 | + 'event_espresso' |
|
51 | + ); |
|
52 | + $this->_shortcodes['[DISPLAY_PDF_BUTTON]'] = esc_html__( |
|
53 | + 'This will return html for a download pdf button trigger if the pdf messenger is active.', |
|
54 | + 'event_espresso' |
|
55 | + ); |
|
56 | + |
|
57 | + /** @var RequestInterface $request */ |
|
58 | + $request = LoaderFactory::getLoader()->getShared(RequestInterface::class); |
|
59 | + $action = $request->getRequestParam('action'); |
|
60 | + // show error message about buttons/urls not working as expected if messenger deactivated. |
|
61 | + if ($action === 'update_message_template' && is_admin()) { |
|
62 | + if (! isset($this->_active_messengers['pdf'])) { |
|
63 | + EE_Error::add_attention( |
|
64 | + esc_html__( |
|
65 | + 'Be aware that the pdf messenger is inactive. This means that any pdf related shortcodes will parse to an empty string.', |
|
66 | + 'event_espresso' |
|
67 | + ) |
|
68 | + ); |
|
69 | + } |
|
70 | + |
|
71 | + if (! isset($this->_active_messengers['html'])) { |
|
72 | + EE_Error::add_attention( |
|
73 | + esc_html__( |
|
74 | + 'Be aware that the html messenger is inactive. This means that any html related shortcodes will parse to an empty string.', |
|
75 | + 'event_espresso' |
|
76 | + ) |
|
77 | + ); |
|
78 | + } |
|
79 | + } |
|
80 | + } |
|
81 | + |
|
82 | + |
|
83 | + protected function _parser($shortcode) |
|
84 | + { |
|
85 | + // make sure we end up with a copy of the EE_Messages_Addressee object |
|
86 | + $recipient = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
87 | + $recipient = ! $recipient instanceof EE_Messages_Addressee && is_array( |
|
88 | + $this->_data |
|
89 | + ) && isset($this->_data['data']) && $this->_data['data'] instanceof EE_Messages_Addressee ? $this->_data['data'] |
|
90 | + : $recipient; |
|
91 | + $recipient = ! $recipient instanceof EE_Messages_Addressee && ! empty($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
92 | + ? $this->_extra_data['data'] : $recipient; |
|
93 | + |
|
94 | + if (! $recipient instanceof EE_Messages_Addressee) { |
|
95 | + return ''; |
|
96 | + } |
|
97 | + |
|
98 | + switch ($shortcode) { |
|
99 | + case '[DISPLAY_HTML_URL]': |
|
100 | + return isset($this->_active_messengers['html']) ? $this->_get_url($recipient, 'html') : ''; |
|
101 | + break; |
|
102 | + case '[DISPLAY_PDF_URL]': |
|
103 | + return isset($this->_active_messengers['pdf']) ? $this->_get_url($recipient, 'pdf') : ''; |
|
104 | + break; |
|
105 | + case '[DISPLAY_PDF_BUTTON]': |
|
106 | + return isset($this->_active_messengers['pdf']) ? $this->_get_button($recipient, 'pdf') : ''; |
|
107 | + break; |
|
108 | + } |
|
109 | + return ''; |
|
110 | + } |
|
111 | + |
|
112 | + |
|
113 | + /** |
|
114 | + * This method takes the incoming data and figures out from it what the message type is and evt_id/grp_id and uses |
|
115 | + * that to generate the html for a button in the template. |
|
116 | + * |
|
117 | + * @since 4.5.0 |
|
118 | + * |
|
119 | + * @param EE_Messages_Addressee $recipient |
|
120 | + * @param string $sending_messenger 'html' or 'pdf' |
|
121 | + * |
|
122 | + * @return string Generated html |
|
123 | + */ |
|
124 | + private function _get_button(EE_Messages_Addressee $recipient, $sending_messenger) |
|
125 | + { |
|
126 | + $download_text = $sending_messenger == 'pdf' |
|
127 | + ? esc_html__('Download PDF', 'event_espresso') |
|
128 | + : esc_html__( |
|
129 | + 'Show HTML', |
|
130 | + 'event_espresso' |
|
131 | + ); |
|
132 | + $content = ' |
|
133 | 133 | <form method="post" action="' . $this->_get_url($recipient, $sending_messenger) . '" > |
134 | 134 | <input class="print_button" type="submit" value="' . $download_text . '" /> |
135 | 135 | </form> |
136 | 136 | '; |
137 | - return $content; |
|
138 | - } |
|
139 | - |
|
140 | - |
|
141 | - /** |
|
142 | - * This method takes the incoming data and figures out from it what the message type is and |
|
143 | - * evt_id/grp_id and uses that to generate the url for displaying the template in a browser. |
|
144 | - * |
|
145 | - * @since 4.5.0 |
|
146 | - * |
|
147 | - * @param EE_Messages_Addressee $recipient |
|
148 | - * @param string $sending_messenger |
|
149 | - * |
|
150 | - * @return string The generated url for displaying the link. |
|
151 | - * @throws EE_Error |
|
152 | - */ |
|
153 | - private function _get_url(EE_Messages_Addressee $recipient, $sending_messenger) |
|
154 | - { |
|
155 | - |
|
156 | - $reg = $recipient->reg_obj; |
|
157 | - $reg = ! $reg instanceof EE_Registration ? $recipient->primary_reg_obj : $reg; |
|
158 | - |
|
159 | - |
|
160 | - if ($this->_message_type instanceof EE_message_type && $this->_message instanceof EE_Message) { |
|
161 | - EE_Registry::instance()->load_helper('MSG_Template'); |
|
162 | - try { |
|
163 | - return EEH_MSG_Template::get_url_trigger( |
|
164 | - $this->_message_type, |
|
165 | - $this->_message, |
|
166 | - $reg, |
|
167 | - $sending_messenger |
|
168 | - ); |
|
169 | - } catch (EE_Error $e) { |
|
170 | - if (WP_DEBUG) { |
|
171 | - $e->get_error(); |
|
172 | - } |
|
173 | - } |
|
174 | - } |
|
175 | - |
|
176 | - return ''; |
|
177 | - } |
|
137 | + return $content; |
|
138 | + } |
|
139 | + |
|
140 | + |
|
141 | + /** |
|
142 | + * This method takes the incoming data and figures out from it what the message type is and |
|
143 | + * evt_id/grp_id and uses that to generate the url for displaying the template in a browser. |
|
144 | + * |
|
145 | + * @since 4.5.0 |
|
146 | + * |
|
147 | + * @param EE_Messages_Addressee $recipient |
|
148 | + * @param string $sending_messenger |
|
149 | + * |
|
150 | + * @return string The generated url for displaying the link. |
|
151 | + * @throws EE_Error |
|
152 | + */ |
|
153 | + private function _get_url(EE_Messages_Addressee $recipient, $sending_messenger) |
|
154 | + { |
|
155 | + |
|
156 | + $reg = $recipient->reg_obj; |
|
157 | + $reg = ! $reg instanceof EE_Registration ? $recipient->primary_reg_obj : $reg; |
|
158 | + |
|
159 | + |
|
160 | + if ($this->_message_type instanceof EE_message_type && $this->_message instanceof EE_Message) { |
|
161 | + EE_Registry::instance()->load_helper('MSG_Template'); |
|
162 | + try { |
|
163 | + return EEH_MSG_Template::get_url_trigger( |
|
164 | + $this->_message_type, |
|
165 | + $this->_message, |
|
166 | + $reg, |
|
167 | + $sending_messenger |
|
168 | + ); |
|
169 | + } catch (EE_Error $e) { |
|
170 | + if (WP_DEBUG) { |
|
171 | + $e->get_error(); |
|
172 | + } |
|
173 | + } |
|
174 | + } |
|
175 | + |
|
176 | + return ''; |
|
177 | + } |
|
178 | 178 | } |
@@ -118,7 +118,7 @@ discard block |
||
118 | 118 | $this->_gateway->set_unsupported_character_remover(new AsciiOnly()); |
119 | 119 | do_action('AHEE__EE_PMT_Base___construct__done_initializing_gateway_class', $this, $this->_gateway); |
120 | 120 | } |
121 | - if (! isset($this->_has_billing_form)) { |
|
121 | + if ( ! isset($this->_has_billing_form)) { |
|
122 | 122 | // by default, On Site gateways have a billing form |
123 | 123 | if ($this->payment_occurs() == EE_PMT_Base::onsite) { |
124 | 124 | $this->set_has_billing_form(true); |
@@ -127,7 +127,7 @@ discard block |
||
127 | 127 | } |
128 | 128 | } |
129 | 129 | |
130 | - if (! $this->_pretty_name) { |
|
130 | + if ( ! $this->_pretty_name) { |
|
131 | 131 | throw new EE_Error( |
132 | 132 | sprintf( |
133 | 133 | esc_html__( |
@@ -139,7 +139,7 @@ discard block |
||
139 | 139 | } |
140 | 140 | // if the child didn't specify a default button, use the credit card one |
141 | 141 | if ($this->_default_button_url === null) { |
142 | - $this->_default_button_url = EE_PLUGIN_DIR_URL . 'payment_methods/pay-by-credit-card.png'; |
|
142 | + $this->_default_button_url = EE_PLUGIN_DIR_URL.'payment_methods/pay-by-credit-card.png'; |
|
143 | 143 | } |
144 | 144 | } |
145 | 145 | |
@@ -160,7 +160,7 @@ discard block |
||
160 | 160 | { |
161 | 161 | $reflector = new ReflectionClass(get_class($this)); |
162 | 162 | $fn = $reflector->getFileName(); |
163 | - $this->_file_folder = dirname($fn) . '/'; |
|
163 | + $this->_file_folder = dirname($fn).'/'; |
|
164 | 164 | } |
165 | 165 | |
166 | 166 | |
@@ -193,7 +193,7 @@ discard block |
||
193 | 193 | */ |
194 | 194 | public function file_folder() |
195 | 195 | { |
196 | - if (! $this->_file_folder) { |
|
196 | + if ( ! $this->_file_folder) { |
|
197 | 197 | $this->_set_file_folder(); |
198 | 198 | } |
199 | 199 | return $this->_file_folder; |
@@ -205,7 +205,7 @@ discard block |
||
205 | 205 | */ |
206 | 206 | public function file_url() |
207 | 207 | { |
208 | - if (! $this->_file_url) { |
|
208 | + if ( ! $this->_file_url) { |
|
209 | 209 | $this->_set_file_url(); |
210 | 210 | } |
211 | 211 | return $this->_file_url; |
@@ -239,7 +239,7 @@ discard block |
||
239 | 239 | */ |
240 | 240 | public function settings_form() |
241 | 241 | { |
242 | - if (! $this->_settings_form) { |
|
242 | + if ( ! $this->_settings_form) { |
|
243 | 243 | $this->_settings_form = $this->generate_new_settings_form(); |
244 | 244 | $this->_settings_form->set_payment_method_type($this); |
245 | 245 | // if we have already assigned a model object to this pmt, make |
@@ -293,7 +293,7 @@ discard block |
||
293 | 293 | public function billing_form(EE_Transaction $transaction = null, $extra_args = array()) |
294 | 294 | { |
295 | 295 | // has billing form already been regenerated ? or overwrite cache? |
296 | - if (! $this->_billing_form instanceof EE_Billing_Info_Form || ! $this->_cache_billing_form) { |
|
296 | + if ( ! $this->_billing_form instanceof EE_Billing_Info_Form || ! $this->_cache_billing_form) { |
|
297 | 297 | $this->_billing_form = $this->generate_new_billing_form($transaction, $extra_args); |
298 | 298 | } |
299 | 299 | // if we know who the attendee is, and this is a billing form |
@@ -397,7 +397,7 @@ discard block |
||
397 | 397 | $payment = EEM_Payment::instance()->get_one(array($duplicate_properties)); |
398 | 398 | // if we didn't already have a payment in progress for the same thing, |
399 | 399 | // then we actually want to make a new payment |
400 | - if (! $payment instanceof EE_Payment) { |
|
400 | + if ( ! $payment instanceof EE_Payment) { |
|
401 | 401 | $payment = EE_Payment::new_instance( |
402 | 402 | array_merge( |
403 | 403 | $duplicate_properties, |
@@ -498,7 +498,7 @@ discard block |
||
498 | 498 | public function handle_ipn($req_data, $transaction) |
499 | 499 | { |
500 | 500 | $transaction = EEM_Transaction::instance()->ensure_is_obj($transaction); |
501 | - if (! $this->_gateway instanceof EE_Offsite_Gateway) { |
|
501 | + if ( ! $this->_gateway instanceof EE_Offsite_Gateway) { |
|
502 | 502 | throw new EE_Error( |
503 | 503 | sprintf( |
504 | 504 | esc_html__("Could not handle IPN because '%s' is not an offsite gateway", "event_espresso"), |
@@ -521,7 +521,7 @@ discard block |
||
521 | 521 | */ |
522 | 522 | protected function _save_billing_info_to_attendee($billing_form, $transaction) |
523 | 523 | { |
524 | - if (! $transaction || ! $transaction instanceof EE_Transaction) { |
|
524 | + if ( ! $transaction || ! $transaction instanceof EE_Transaction) { |
|
525 | 525 | EE_Error::add_error( |
526 | 526 | esc_html__("Cannot save billing info because no transaction was specified", "event_espresso"), |
527 | 527 | __FILE__, |
@@ -531,7 +531,7 @@ discard block |
||
531 | 531 | return false; |
532 | 532 | } |
533 | 533 | $primary_reg = $transaction->primary_registration(); |
534 | - if (! $primary_reg) { |
|
534 | + if ( ! $primary_reg) { |
|
535 | 535 | EE_Error::add_error( |
536 | 536 | esc_html__("Cannot save billing info because the transaction has no primary registration", "event_espresso"), |
537 | 537 | __FILE__, |
@@ -541,7 +541,7 @@ discard block |
||
541 | 541 | return false; |
542 | 542 | } |
543 | 543 | $attendee = $primary_reg->attendee(); |
544 | - if (! $attendee) { |
|
544 | + if ( ! $attendee) { |
|
545 | 545 | EE_Error::add_error( |
546 | 546 | esc_html__( |
547 | 547 | "Cannot save billing info because the transaction's primary registration has no attendee!", |
@@ -654,7 +654,7 @@ discard block |
||
654 | 654 | */ |
655 | 655 | public function payment_occurs() |
656 | 656 | { |
657 | - if (! $this->_gateway) { |
|
657 | + if ( ! $this->_gateway) { |
|
658 | 658 | return EE_PMT_Base::offline; |
659 | 659 | } elseif ($this->_gateway instanceof EE_Onsite_Gateway) { |
660 | 660 | return EE_PMT_Base::onsite; |
@@ -685,7 +685,7 @@ discard block |
||
685 | 685 | public function payment_overview_content(EE_Payment $payment) |
686 | 686 | { |
687 | 687 | return EEH_Template::display_template( |
688 | - EE_LIBRARIES . 'payment_methods/templates/payment_details_content.template.php', |
|
688 | + EE_LIBRARIES.'payment_methods/templates/payment_details_content.template.php', |
|
689 | 689 | array('payment_method' => $this->_pm_instance, 'payment' => $payment), |
690 | 690 | true |
691 | 691 | ); |
@@ -783,7 +783,7 @@ discard block |
||
783 | 783 | */ |
784 | 784 | public function get_help_tab_name() |
785 | 785 | { |
786 | - return 'ee_' . strtolower($this->system_name()) . '_help_tab'; |
|
786 | + return 'ee_'.strtolower($this->system_name()).'_help_tab'; |
|
787 | 787 | } |
788 | 788 | |
789 | 789 | /** |
@@ -794,7 +794,7 @@ discard block |
||
794 | 794 | */ |
795 | 795 | public function cap_name() |
796 | 796 | { |
797 | - return 'ee_payment_method_' . strtolower($this->system_name()); |
|
797 | + return 'ee_payment_method_'.strtolower($this->system_name()); |
|
798 | 798 | } |
799 | 799 | |
800 | 800 | /** |
@@ -828,7 +828,7 @@ discard block |
||
828 | 828 | public function introductory_html() |
829 | 829 | { |
830 | 830 | return EEH_Template::locate_template( |
831 | - $this->file_folder() . 'templates/' . strtolower($this->system_name()) . '_intro.template.php', |
|
831 | + $this->file_folder().'templates/'.strtolower($this->system_name()).'_intro.template.php', |
|
832 | 832 | array('pmt_obj' => $this, 'pm_instance' => $this->_pm_instance) |
833 | 833 | ); |
834 | 834 | } |
@@ -21,814 +21,814 @@ |
||
21 | 21 | */ |
22 | 22 | abstract class EE_PMT_Base |
23 | 23 | { |
24 | - const onsite = 'on-site'; |
|
25 | - const offsite = 'off-site'; |
|
26 | - const offline = 'off-line'; |
|
27 | - |
|
28 | - /** |
|
29 | - * @var EE_Payment_Method |
|
30 | - */ |
|
31 | - protected $_pm_instance = null; |
|
32 | - |
|
33 | - /** |
|
34 | - * @var boolean |
|
35 | - */ |
|
36 | - protected $_requires_https = false; |
|
37 | - |
|
38 | - /** |
|
39 | - * @var boolean |
|
40 | - */ |
|
41 | - protected $_has_billing_form; |
|
42 | - |
|
43 | - /** |
|
44 | - * @var EE_Gateway |
|
45 | - */ |
|
46 | - protected $_gateway = null; |
|
47 | - |
|
48 | - /** |
|
49 | - * @var EE_Payment_Method_Form |
|
50 | - */ |
|
51 | - protected $_settings_form = null; |
|
52 | - |
|
53 | - /** |
|
54 | - * @var EE_Form_Section_Proper |
|
55 | - */ |
|
56 | - protected $_billing_form = null; |
|
57 | - |
|
58 | - /** |
|
59 | - * @var boolean |
|
60 | - */ |
|
61 | - protected $_cache_billing_form = true; |
|
62 | - |
|
63 | - /** |
|
64 | - * String of the absolute path to the folder containing this file, with a trailing slash. |
|
65 | - * eg '/public_html/wp-site/wp-content/plugins/event-espresso/payment_methods/Invoice/' |
|
66 | - * |
|
67 | - * @var string |
|
68 | - */ |
|
69 | - protected $_file_folder = null; |
|
70 | - |
|
71 | - /** |
|
72 | - * String to the absolute URL to this file (useful for getting its web-accessible resources |
|
73 | - * like images, js, or css) |
|
74 | - * |
|
75 | - * @var string |
|
76 | - */ |
|
77 | - protected $_file_url = null; |
|
78 | - |
|
79 | - /** |
|
80 | - * Pretty name for the payment method |
|
81 | - * |
|
82 | - * @var string |
|
83 | - */ |
|
84 | - protected $_pretty_name = null; |
|
85 | - |
|
86 | - /** |
|
87 | - * |
|
88 | - * @var string |
|
89 | - */ |
|
90 | - protected $_default_button_url = null; |
|
91 | - |
|
92 | - /** |
|
93 | - * |
|
94 | - * @var string |
|
95 | - */ |
|
96 | - protected $_default_description = null; |
|
97 | - |
|
98 | - |
|
99 | - /** |
|
100 | - * |
|
101 | - * @param EE_Payment_Method $pm_instance |
|
102 | - * @throws EE_Error |
|
103 | - * @return EE_PMT_Base |
|
104 | - */ |
|
105 | - public function __construct($pm_instance = null) |
|
106 | - { |
|
107 | - if ($pm_instance instanceof EE_Payment_Method) { |
|
108 | - $this->set_instance($pm_instance); |
|
109 | - } |
|
110 | - if ($this->_gateway) { |
|
111 | - $this->_gateway->set_payment_model(EEM_Payment::instance()); |
|
112 | - $this->_gateway->set_payment_log(EEM_Change_Log::instance()); |
|
113 | - $this->_gateway->set_template_helper(new EEH_Template()); |
|
114 | - $this->_gateway->set_line_item_helper(new EEH_Line_Item()); |
|
115 | - $this->_gateway->set_money_helper(new EEH_Money()); |
|
116 | - $this->_gateway->set_gateway_data_formatter(new GatewayDataFormatter()); |
|
117 | - $this->_gateway->set_unsupported_character_remover(new AsciiOnly()); |
|
118 | - do_action('AHEE__EE_PMT_Base___construct__done_initializing_gateway_class', $this, $this->_gateway); |
|
119 | - } |
|
120 | - if (! isset($this->_has_billing_form)) { |
|
121 | - // by default, On Site gateways have a billing form |
|
122 | - if ($this->payment_occurs() == EE_PMT_Base::onsite) { |
|
123 | - $this->set_has_billing_form(true); |
|
124 | - } else { |
|
125 | - $this->set_has_billing_form(false); |
|
126 | - } |
|
127 | - } |
|
128 | - |
|
129 | - if (! $this->_pretty_name) { |
|
130 | - throw new EE_Error( |
|
131 | - sprintf( |
|
132 | - esc_html__( |
|
133 | - "You must set the pretty name for the Payment Method Type in the constructor (_pretty_name), and please make it internationalized", |
|
134 | - "event_espresso" |
|
135 | - ) |
|
136 | - ) |
|
137 | - ); |
|
138 | - } |
|
139 | - // if the child didn't specify a default button, use the credit card one |
|
140 | - if ($this->_default_button_url === null) { |
|
141 | - $this->_default_button_url = EE_PLUGIN_DIR_URL . 'payment_methods/pay-by-credit-card.png'; |
|
142 | - } |
|
143 | - } |
|
144 | - |
|
145 | - |
|
146 | - /** |
|
147 | - * @param boolean $has_billing_form |
|
148 | - */ |
|
149 | - public function set_has_billing_form($has_billing_form) |
|
150 | - { |
|
151 | - $this->_has_billing_form = filter_var($has_billing_form, FILTER_VALIDATE_BOOLEAN); |
|
152 | - } |
|
153 | - |
|
154 | - |
|
155 | - /** |
|
156 | - * sets the file_folder property |
|
157 | - */ |
|
158 | - protected function _set_file_folder() |
|
159 | - { |
|
160 | - $reflector = new ReflectionClass(get_class($this)); |
|
161 | - $fn = $reflector->getFileName(); |
|
162 | - $this->_file_folder = dirname($fn) . '/'; |
|
163 | - } |
|
164 | - |
|
165 | - |
|
166 | - /** |
|
167 | - * sets the file URL with a trailing slash for this PMT |
|
168 | - */ |
|
169 | - protected function _set_file_url() |
|
170 | - { |
|
171 | - $plugins_dir_fixed = str_replace('\\', '/', WP_PLUGIN_DIR); |
|
172 | - $file_folder_fixed = str_replace('\\', '/', $this->file_folder()); |
|
173 | - $file_path = str_replace($plugins_dir_fixed, WP_PLUGIN_URL, $file_folder_fixed); |
|
174 | - $this->_file_url = set_url_scheme($file_path); |
|
175 | - } |
|
176 | - |
|
177 | - /** |
|
178 | - * Gets the default description on all payment methods of this type |
|
179 | - * |
|
180 | - * @return string |
|
181 | - */ |
|
182 | - public function default_description() |
|
183 | - { |
|
184 | - return $this->_default_description; |
|
185 | - } |
|
186 | - |
|
187 | - |
|
188 | - /** |
|
189 | - * Returns the folder containing the PMT child class, with a trailing slash |
|
190 | - * |
|
191 | - * @return string |
|
192 | - */ |
|
193 | - public function file_folder() |
|
194 | - { |
|
195 | - if (! $this->_file_folder) { |
|
196 | - $this->_set_file_folder(); |
|
197 | - } |
|
198 | - return $this->_file_folder; |
|
199 | - } |
|
200 | - |
|
201 | - |
|
202 | - /** |
|
203 | - * @return string |
|
204 | - */ |
|
205 | - public function file_url() |
|
206 | - { |
|
207 | - if (! $this->_file_url) { |
|
208 | - $this->_set_file_url(); |
|
209 | - } |
|
210 | - return $this->_file_url; |
|
211 | - } |
|
212 | - |
|
213 | - |
|
214 | - /** |
|
215 | - * Sets the payment method instance this payment method type is for. |
|
216 | - * Its important teh payment method instance is set before |
|
217 | - * |
|
218 | - * @param EE_Payment_Method $payment_method_instance |
|
219 | - */ |
|
220 | - public function set_instance($payment_method_instance) |
|
221 | - { |
|
222 | - $this->_pm_instance = $payment_method_instance; |
|
223 | - // if they have already requested the settings form, make sure its |
|
224 | - // data matches this model object |
|
225 | - if ($this->_settings_form) { |
|
226 | - $this->settings_form()->populate_model_obj($payment_method_instance); |
|
227 | - } |
|
228 | - if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
229 | - $this->_gateway->set_settings($payment_method_instance->settings_array()); |
|
230 | - } |
|
231 | - } |
|
232 | - |
|
233 | - |
|
234 | - /** |
|
235 | - * Gets teh form for displaying to admins where they setup the payment method |
|
236 | - * |
|
237 | - * @return EE_Payment_Method_Form |
|
238 | - */ |
|
239 | - public function settings_form() |
|
240 | - { |
|
241 | - if (! $this->_settings_form) { |
|
242 | - $this->_settings_form = $this->generate_new_settings_form(); |
|
243 | - $this->_settings_form->set_payment_method_type($this); |
|
244 | - // if we have already assigned a model object to this pmt, make |
|
245 | - // sure its reflected in teh form we just generated |
|
246 | - if ($this->_pm_instance) { |
|
247 | - $this->_settings_form->populate_model_obj($this->_pm_instance); |
|
248 | - } |
|
249 | - } |
|
250 | - return $this->_settings_form; |
|
251 | - } |
|
252 | - |
|
253 | - |
|
254 | - /** |
|
255 | - * Gets the form for all the settings related to this payment method type |
|
256 | - * |
|
257 | - * @return EE_Payment_Method_Form |
|
258 | - */ |
|
259 | - abstract public function generate_new_settings_form(); |
|
260 | - |
|
261 | - |
|
262 | - /** |
|
263 | - * Sets the form for settings. This may be useful if we have already received |
|
264 | - * a form submission and have form data it in, and want to use it anytime we're showing |
|
265 | - * this payment method type's settings form later in the request |
|
266 | - * |
|
267 | - * @param EE_Payment_Method_Form $form |
|
268 | - */ |
|
269 | - public function set_settings_form($form) |
|
270 | - { |
|
271 | - $this->_settings_form = $form; |
|
272 | - } |
|
273 | - |
|
274 | - |
|
275 | - /** |
|
276 | - * @return boolean |
|
277 | - */ |
|
278 | - public function has_billing_form() |
|
279 | - { |
|
280 | - return $this->_has_billing_form; |
|
281 | - } |
|
282 | - |
|
283 | - |
|
284 | - /** |
|
285 | - * Gets the form for displaying to attendees where they can enter their billing info |
|
286 | - * which will be sent to teh gateway (can be null) |
|
287 | - * |
|
288 | - * @param \EE_Transaction $transaction |
|
289 | - * @param array $extra_args |
|
290 | - * @return \EE_Billing_Attendee_Info_Form|\EE_Billing_Info_Form|null |
|
291 | - */ |
|
292 | - public function billing_form(EE_Transaction $transaction = null, $extra_args = array()) |
|
293 | - { |
|
294 | - // has billing form already been regenerated ? or overwrite cache? |
|
295 | - if (! $this->_billing_form instanceof EE_Billing_Info_Form || ! $this->_cache_billing_form) { |
|
296 | - $this->_billing_form = $this->generate_new_billing_form($transaction, $extra_args); |
|
297 | - } |
|
298 | - // if we know who the attendee is, and this is a billing form |
|
299 | - // that uses attendee info, populate it |
|
300 | - if ( |
|
301 | - apply_filters( |
|
302 | - 'FHEE__populate_billing_form_fields_from_attendee', |
|
303 | - ($this->_billing_form instanceof EE_Billing_Attendee_Info_Form |
|
304 | - && $transaction instanceof EE_Transaction |
|
305 | - && $transaction->primary_registration() instanceof EE_Registration |
|
306 | - && $transaction->primary_registration()->attendee() instanceof EE_Attendee |
|
307 | - ), |
|
308 | - $this->_billing_form, |
|
309 | - $transaction |
|
310 | - ) |
|
311 | - ) { |
|
312 | - $this->_billing_form->populate_from_attendee($transaction->primary_registration()->attendee()); |
|
313 | - } |
|
314 | - return $this->_billing_form; |
|
315 | - } |
|
316 | - |
|
317 | - |
|
318 | - /** |
|
319 | - * Creates the billing form for this payment method type |
|
320 | - * |
|
321 | - * @param \EE_Transaction $transaction |
|
322 | - * @return \EE_Billing_Info_Form |
|
323 | - */ |
|
324 | - abstract public function generate_new_billing_form(EE_Transaction $transaction = null); |
|
325 | - |
|
326 | - |
|
327 | - /** |
|
328 | - * apply_billing_form_debug_settings |
|
329 | - * applies debug data to the form |
|
330 | - * |
|
331 | - * @param \EE_Billing_Info_Form $billing_form |
|
332 | - * @return \EE_Billing_Info_Form |
|
333 | - */ |
|
334 | - public function apply_billing_form_debug_settings(EE_Billing_Info_Form $billing_form) |
|
335 | - { |
|
336 | - return $billing_form; |
|
337 | - } |
|
338 | - |
|
339 | - |
|
340 | - /** |
|
341 | - * Sets the billing form for this payment method type. You may want to use this |
|
342 | - * if you have form |
|
343 | - * |
|
344 | - * @param EE_Payment_Method $form |
|
345 | - */ |
|
346 | - public function set_billing_form($form) |
|
347 | - { |
|
348 | - $this->_billing_form = $form; |
|
349 | - } |
|
350 | - |
|
351 | - |
|
352 | - /** |
|
353 | - * Returns whether or not this payment method requires HTTPS to be used |
|
354 | - * |
|
355 | - * @return boolean |
|
356 | - */ |
|
357 | - public function requires_https() |
|
358 | - { |
|
359 | - return $this->_requires_https; |
|
360 | - } |
|
361 | - |
|
362 | - |
|
363 | - /** |
|
364 | - * |
|
365 | - * @param EE_Transaction $transaction |
|
366 | - * @param float $amount |
|
367 | - * @param EE_Billing_Info_Form $billing_info |
|
368 | - * @param string $return_url |
|
369 | - * @param string $fail_url |
|
370 | - * @param string $method |
|
371 | - * @param bool $by_admin |
|
372 | - * @return EE_Payment |
|
373 | - * @throws EE_Error |
|
374 | - */ |
|
375 | - public function process_payment( |
|
376 | - EE_Transaction $transaction, |
|
377 | - $amount = null, |
|
378 | - $billing_info = null, |
|
379 | - $return_url = null, |
|
380 | - $fail_url = '', |
|
381 | - $method = 'CART', |
|
382 | - $by_admin = false |
|
383 | - ) { |
|
384 | - // @todo: add surcharge for the payment method, if any |
|
385 | - if ($this->_gateway) { |
|
386 | - // there is a gateway, so we're going to make a payment object |
|
387 | - // but wait! do they already have a payment in progress that we thought was failed? |
|
388 | - $duplicate_properties = array( |
|
389 | - 'STS_ID' => EEM_Payment::status_id_failed, |
|
390 | - 'TXN_ID' => $transaction->ID(), |
|
391 | - 'PMD_ID' => $this->_pm_instance->ID(), |
|
392 | - 'PAY_source' => $method, |
|
393 | - 'PAY_amount' => $amount !== null ? $amount : $transaction->remaining(), |
|
394 | - 'PAY_gateway_response' => null, |
|
395 | - ); |
|
396 | - $payment = EEM_Payment::instance()->get_one(array($duplicate_properties)); |
|
397 | - // if we didn't already have a payment in progress for the same thing, |
|
398 | - // then we actually want to make a new payment |
|
399 | - if (! $payment instanceof EE_Payment) { |
|
400 | - $payment = EE_Payment::new_instance( |
|
401 | - array_merge( |
|
402 | - $duplicate_properties, |
|
403 | - array( |
|
404 | - 'PAY_timestamp' => time(), |
|
405 | - 'PAY_txn_id_chq_nmbr' => null, |
|
406 | - 'PAY_po_number' => null, |
|
407 | - 'PAY_extra_accntng' => null, |
|
408 | - 'PAY_details' => null, |
|
409 | - ) |
|
410 | - ) |
|
411 | - ); |
|
412 | - } |
|
413 | - // make sure the payment has been saved to show we started it, and so it has an ID should the gateway try to log it |
|
414 | - $payment->save(); |
|
415 | - $billing_values = $this->_get_billing_values_from_form($billing_info); |
|
416 | - |
|
417 | - // Offsite Gateway |
|
418 | - if ($this->_gateway instanceof EE_Offsite_Gateway) { |
|
419 | - $payment = $this->_gateway->set_redirection_info( |
|
420 | - $payment, |
|
421 | - $billing_values, |
|
422 | - $return_url, |
|
423 | - EE_Config::instance()->core->txn_page_url( |
|
424 | - array( |
|
425 | - 'e_reg_url_link' => $transaction->primary_registration()->reg_url_link(), |
|
426 | - 'ee_payment_method' => $this->_pm_instance->slug(), |
|
427 | - ) |
|
428 | - ), |
|
429 | - $fail_url |
|
430 | - ); |
|
431 | - $payment->save(); |
|
432 | - // Onsite Gateway |
|
433 | - } elseif ($this->_gateway instanceof EE_Onsite_Gateway) { |
|
434 | - $payment = $this->_gateway->do_direct_payment($payment, $billing_values); |
|
435 | - $payment->save(); |
|
436 | - } else { |
|
437 | - throw new EE_Error( |
|
438 | - sprintf( |
|
439 | - esc_html__( |
|
440 | - 'Gateway for payment method type "%s" is "%s", not a subclass of either EE_Offsite_Gateway or EE_Onsite_Gateway, or null (to indicate NO gateway)', |
|
441 | - 'event_espresso' |
|
442 | - ), |
|
443 | - get_class($this), |
|
444 | - gettype($this->_gateway) |
|
445 | - ) |
|
446 | - ); |
|
447 | - } |
|
448 | - } else { |
|
449 | - // no gateway provided |
|
450 | - // there is no payment. Must be an offline gateway |
|
451 | - // create a payment object anyways, but dont save it |
|
452 | - $payment = EE_Payment::new_instance( |
|
453 | - array( |
|
454 | - 'STS_ID' => EEM_Payment::status_id_pending, |
|
455 | - 'TXN_ID' => $transaction->ID(), |
|
456 | - 'PMD_ID' => $transaction->payment_method_ID(), |
|
457 | - 'PAY_amount' => 0.00, |
|
458 | - 'PAY_timestamp' => time(), |
|
459 | - ) |
|
460 | - ); |
|
461 | - } |
|
462 | - |
|
463 | - // if there is billing info, clean it and save it now |
|
464 | - if ($billing_info instanceof EE_Billing_Attendee_Info_Form) { |
|
465 | - $this->_save_billing_info_to_attendee($billing_info, $transaction); |
|
466 | - } |
|
467 | - |
|
468 | - return $payment; |
|
469 | - } |
|
470 | - |
|
471 | - /** |
|
472 | - * Gets the values we want to pass onto the gateway. Normally these |
|
473 | - * are just the 'pretty' values, but there may be times the data may need |
|
474 | - * a little massaging. Proper subsections will become arrays of inputs |
|
475 | - * |
|
476 | - * @param EE_Billing_Info_Form $billing_form |
|
477 | - * @return array |
|
478 | - */ |
|
479 | - protected function _get_billing_values_from_form($billing_form) |
|
480 | - { |
|
481 | - if ($billing_form instanceof EE_Form_Section_Proper) { |
|
482 | - return $billing_form->input_pretty_values(true); |
|
483 | - } else { |
|
484 | - return null; |
|
485 | - } |
|
486 | - } |
|
487 | - |
|
488 | - |
|
489 | - /** |
|
490 | - * Handles an instant payment notification when the transaction is known (by default). |
|
491 | - * |
|
492 | - * @param array $req_data |
|
493 | - * @param EE_Transaction $transaction |
|
494 | - * @return EE_Payment |
|
495 | - * @throws EE_Error |
|
496 | - */ |
|
497 | - public function handle_ipn($req_data, $transaction) |
|
498 | - { |
|
499 | - $transaction = EEM_Transaction::instance()->ensure_is_obj($transaction); |
|
500 | - if (! $this->_gateway instanceof EE_Offsite_Gateway) { |
|
501 | - throw new EE_Error( |
|
502 | - sprintf( |
|
503 | - esc_html__("Could not handle IPN because '%s' is not an offsite gateway", "event_espresso"), |
|
504 | - print_r($this->_gateway, true) |
|
505 | - ) |
|
506 | - ); |
|
507 | - } |
|
508 | - $payment = $this->_gateway->handle_payment_update($req_data, $transaction); |
|
509 | - return $payment; |
|
510 | - } |
|
511 | - |
|
512 | - |
|
513 | - /** |
|
514 | - * Saves the billing info onto the attendee of the primary registrant on this transaction, and |
|
515 | - * cleans it first. |
|
516 | - * |
|
517 | - * @param EE_Billing_Attendee_Info_Form $billing_form |
|
518 | - * @param EE_Transaction $transaction |
|
519 | - * @return boolean success |
|
520 | - */ |
|
521 | - protected function _save_billing_info_to_attendee($billing_form, $transaction) |
|
522 | - { |
|
523 | - if (! $transaction || ! $transaction instanceof EE_Transaction) { |
|
524 | - EE_Error::add_error( |
|
525 | - esc_html__("Cannot save billing info because no transaction was specified", "event_espresso"), |
|
526 | - __FILE__, |
|
527 | - __FUNCTION__, |
|
528 | - __LINE__ |
|
529 | - ); |
|
530 | - return false; |
|
531 | - } |
|
532 | - $primary_reg = $transaction->primary_registration(); |
|
533 | - if (! $primary_reg) { |
|
534 | - EE_Error::add_error( |
|
535 | - esc_html__("Cannot save billing info because the transaction has no primary registration", "event_espresso"), |
|
536 | - __FILE__, |
|
537 | - __FUNCTION__, |
|
538 | - __LINE__ |
|
539 | - ); |
|
540 | - return false; |
|
541 | - } |
|
542 | - $attendee = $primary_reg->attendee(); |
|
543 | - if (! $attendee) { |
|
544 | - EE_Error::add_error( |
|
545 | - esc_html__( |
|
546 | - "Cannot save billing info because the transaction's primary registration has no attendee!", |
|
547 | - "event_espresso" |
|
548 | - ), |
|
549 | - __FILE__, |
|
550 | - __FUNCTION__, |
|
551 | - __LINE__ |
|
552 | - ); |
|
553 | - return false; |
|
554 | - } |
|
555 | - return $attendee->save_and_clean_billing_info_for_payment_method($billing_form, $transaction->payment_method()); |
|
556 | - } |
|
557 | - |
|
558 | - |
|
559 | - /** |
|
560 | - * Gets the payment this IPN is for. Children may often want to |
|
561 | - * override this to inspect the request |
|
562 | - * |
|
563 | - * @param EE_Transaction $transaction |
|
564 | - * @param array $req_data |
|
565 | - * @return EE_Payment |
|
566 | - */ |
|
567 | - protected function find_payment_for_ipn(EE_Transaction $transaction, $req_data = array()) |
|
568 | - { |
|
569 | - return $transaction->last_payment(); |
|
570 | - } |
|
571 | - |
|
572 | - |
|
573 | - /** |
|
574 | - * In case generic code cannot provide the payment processor with a specific payment method |
|
575 | - * and transaction, it will try calling this method on each activate payment method. |
|
576 | - * If the payment method is able to identify the request as being for it, it should fetch |
|
577 | - * the payment its for and return it. If not, it should throw an EE_Error to indicate it cannot |
|
578 | - * handle the IPN |
|
579 | - * |
|
580 | - * @param array $req_data |
|
581 | - * @return EE_Payment only if this payment method can find the info its needs from $req_data |
|
582 | - * and identifies the IPN as being for this payment method (not just fo ra payment method of this type) |
|
583 | - * @throws EE_Error |
|
584 | - */ |
|
585 | - public function handle_unclaimed_ipn($req_data = array()) |
|
586 | - { |
|
587 | - throw new EE_Error( |
|
588 | - sprintf(esc_html__("Payment Method '%s' cannot handle unclaimed IPNs", "event_espresso"), get_class($this)) |
|
589 | - ); |
|
590 | - } |
|
591 | - |
|
592 | - |
|
593 | - /** |
|
594 | - * Logic to be accomplished when the payment attempt is complete. |
|
595 | - * Most payment methods don't need to do anything at this point; but some, like Mijireh, do. |
|
596 | - * (Mijireh is an offsite gateway which doesn't send an IPN. So when the user returns to EE from |
|
597 | - * mijireh, this method needs to be called so the Mijireh PM can ping Mijireh to know the status |
|
598 | - * of the payment). Fed a transaction because it's always assumed to be the last payment that |
|
599 | - * we're dealing with. Returns that last payment (if there is one) |
|
600 | - * |
|
601 | - * @param EE_Transaction $transaction |
|
602 | - * @return EE_Payment |
|
603 | - */ |
|
604 | - public function finalize_payment_for($transaction) |
|
605 | - { |
|
606 | - return $transaction->last_payment(); |
|
607 | - } |
|
608 | - |
|
609 | - |
|
610 | - /** |
|
611 | - * Whether or not this payment method's gateway supports sending refund requests |
|
612 | - * |
|
613 | - * @return boolean |
|
614 | - */ |
|
615 | - public function supports_sending_refunds() |
|
616 | - { |
|
617 | - if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
618 | - return $this->_gateway->supports_sending_refunds(); |
|
619 | - } else { |
|
620 | - return false; |
|
621 | - } |
|
622 | - } |
|
623 | - |
|
624 | - |
|
625 | - /** |
|
626 | - * |
|
627 | - * @param EE_Payment $payment |
|
628 | - * @param array $refund_info |
|
629 | - * @throws EE_Error |
|
630 | - * @return EE_Payment |
|
631 | - */ |
|
632 | - public function process_refund(EE_Payment $payment, $refund_info = array()) |
|
633 | - { |
|
634 | - if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
635 | - return $this->_gateway->do_direct_refund($payment, $refund_info); |
|
636 | - } else { |
|
637 | - throw new EE_Error( |
|
638 | - sprintf( |
|
639 | - esc_html__('Payment Method Type "%s" does not support sending refund requests', 'event_espresso'), |
|
640 | - get_class($this) |
|
641 | - ) |
|
642 | - ); |
|
643 | - } |
|
644 | - } |
|
645 | - |
|
646 | - |
|
647 | - /** |
|
648 | - * Returns one the class's constants onsite,offsite, or offline, depending on this |
|
649 | - * payment method's gateway. |
|
650 | - * |
|
651 | - * @return string |
|
652 | - * @throws EE_Error |
|
653 | - */ |
|
654 | - public function payment_occurs() |
|
655 | - { |
|
656 | - if (! $this->_gateway) { |
|
657 | - return EE_PMT_Base::offline; |
|
658 | - } elseif ($this->_gateway instanceof EE_Onsite_Gateway) { |
|
659 | - return EE_PMT_Base::onsite; |
|
660 | - } elseif ($this->_gateway instanceof EE_Offsite_Gateway) { |
|
661 | - return EE_PMT_Base::offsite; |
|
662 | - } else { |
|
663 | - throw new EE_Error( |
|
664 | - sprintf( |
|
665 | - esc_html__( |
|
666 | - "Payment method type '%s's gateway isn't an instance of EE_Onsite_Gateway, EE_Offsite_Gateway, or null. It must be one of those", |
|
667 | - "event_espresso" |
|
668 | - ), |
|
669 | - get_class($this) |
|
670 | - ) |
|
671 | - ); |
|
672 | - } |
|
673 | - } |
|
674 | - |
|
675 | - |
|
676 | - /** |
|
677 | - * For adding any html output ab ove the payment overview. |
|
678 | - * Many gateways won't want ot display anything, so this function just returns an empty string. |
|
679 | - * Other gateways may want to override this, such as offline gateways. |
|
680 | - * |
|
681 | - * @param EE_Payment $payment |
|
682 | - * @return string |
|
683 | - */ |
|
684 | - public function payment_overview_content(EE_Payment $payment) |
|
685 | - { |
|
686 | - return EEH_Template::display_template( |
|
687 | - EE_LIBRARIES . 'payment_methods/templates/payment_details_content.template.php', |
|
688 | - array('payment_method' => $this->_pm_instance, 'payment' => $payment), |
|
689 | - true |
|
690 | - ); |
|
691 | - } |
|
692 | - |
|
693 | - |
|
694 | - /** |
|
695 | - * @return array where keys are the help tab name, |
|
696 | - * values are: array { |
|
697 | - * @type string $title i18n name for the help tab |
|
698 | - * @type string $filename name of the file located in ./help_tabs/ (ie, in a folder next to this file) |
|
699 | - * @type array $template_args any arguments you want passed to the template file while rendering. |
|
700 | - * Keys will be variable names and values with be their values. |
|
701 | - */ |
|
702 | - public function help_tabs_config() |
|
703 | - { |
|
704 | - return array(); |
|
705 | - } |
|
706 | - |
|
707 | - |
|
708 | - /** |
|
709 | - * The system name for this PMT (eg AIM, Paypal_Pro, Invoice... what gets put into |
|
710 | - * the payment method's table's PMT_type column) |
|
711 | - * |
|
712 | - * @return string |
|
713 | - */ |
|
714 | - public function system_name() |
|
715 | - { |
|
716 | - $classname = get_class($this); |
|
717 | - return str_replace("EE_PMT_", '', $classname); |
|
718 | - } |
|
719 | - |
|
720 | - |
|
721 | - /** |
|
722 | - * A pretty i18n version of the PMT name. Often the same as the "pretty_name", but you can change it by overriding |
|
723 | - * this method. |
|
724 | - * @return string |
|
725 | - */ |
|
726 | - public function defaultFrontendName() |
|
727 | - { |
|
728 | - return $this->pretty_name(); |
|
729 | - } |
|
730 | - |
|
731 | - |
|
732 | - /** |
|
733 | - * A pretty i18n version of the PMT name |
|
734 | - * |
|
735 | - * @return string |
|
736 | - */ |
|
737 | - public function pretty_name() |
|
738 | - { |
|
739 | - return $this->_pretty_name; |
|
740 | - } |
|
741 | - |
|
742 | - |
|
743 | - /** |
|
744 | - * Gets the default absolute URL to the payment method type's button |
|
745 | - * |
|
746 | - * @return string |
|
747 | - */ |
|
748 | - public function default_button_url() |
|
749 | - { |
|
750 | - return $this->_default_button_url; |
|
751 | - } |
|
752 | - |
|
753 | - |
|
754 | - /** |
|
755 | - * Gets the gateway used by this payment method (if any) |
|
756 | - * |
|
757 | - * @return EE_Gateway |
|
758 | - */ |
|
759 | - public function get_gateway() |
|
760 | - { |
|
761 | - return $this->_gateway; |
|
762 | - } |
|
763 | - |
|
764 | - |
|
765 | - /** |
|
766 | - * @return string html for the link to a help tab |
|
767 | - */ |
|
768 | - public function get_help_tab_link() |
|
769 | - { |
|
770 | - return EEH_Template::get_help_tab_link( |
|
771 | - $this->get_help_tab_name(), |
|
772 | - 'espresso_payment_settings', |
|
773 | - 'default' |
|
774 | - ); |
|
775 | - } |
|
776 | - |
|
777 | - |
|
778 | - /** |
|
779 | - * Returns the name of the help tab for this PMT |
|
780 | - * |
|
781 | - * @return string |
|
782 | - */ |
|
783 | - public function get_help_tab_name() |
|
784 | - { |
|
785 | - return 'ee_' . strtolower($this->system_name()) . '_help_tab'; |
|
786 | - } |
|
787 | - |
|
788 | - /** |
|
789 | - * The name of the wp capability that should be associated with the usage of |
|
790 | - * this PMT by an admin |
|
791 | - * |
|
792 | - * @return string |
|
793 | - */ |
|
794 | - public function cap_name() |
|
795 | - { |
|
796 | - return 'ee_payment_method_' . strtolower($this->system_name()); |
|
797 | - } |
|
798 | - |
|
799 | - /** |
|
800 | - * Called by client code to tell the gateway that if it wants to change |
|
801 | - * the transaction or line items or registrations related to teh payment it already |
|
802 | - * processed (we think, but possibly not) that now's the time to do it. |
|
803 | - * It is expected that gateways will store any info they need for this on the PAY_details, |
|
804 | - * or maybe an extra meta value |
|
805 | - * |
|
806 | - * @param EE_Payment $payment |
|
807 | - * @return void |
|
808 | - */ |
|
809 | - public function update_txn_based_on_payment($payment) |
|
810 | - { |
|
811 | - if ($this->_gateway instanceof EE_Gateway) { |
|
812 | - $this->_gateway->update_txn_based_on_payment($payment); |
|
813 | - } |
|
814 | - } |
|
815 | - |
|
816 | - /** |
|
817 | - * Returns a string of HTML describing this payment method type for an admin, |
|
818 | - * primarily intended for them to read before activating it. |
|
819 | - * The easiest way to set this is to create a folder 'templates' alongside |
|
820 | - * your EE_PMT_{System_Name} file, and in it create a file named "{system_name}_intro.template.php". |
|
821 | - * Eg, if your payment method file is named "EE_PMT_Foo_Bar.pm.php", |
|
822 | - * then you'd create a file named "templates" in the same folder as it, and name the file |
|
823 | - * "foo_bar_intro.template.php", and its content will be returned by this method |
|
824 | - * |
|
825 | - * @return string |
|
826 | - */ |
|
827 | - public function introductory_html() |
|
828 | - { |
|
829 | - return EEH_Template::locate_template( |
|
830 | - $this->file_folder() . 'templates/' . strtolower($this->system_name()) . '_intro.template.php', |
|
831 | - array('pmt_obj' => $this, 'pm_instance' => $this->_pm_instance) |
|
832 | - ); |
|
833 | - } |
|
24 | + const onsite = 'on-site'; |
|
25 | + const offsite = 'off-site'; |
|
26 | + const offline = 'off-line'; |
|
27 | + |
|
28 | + /** |
|
29 | + * @var EE_Payment_Method |
|
30 | + */ |
|
31 | + protected $_pm_instance = null; |
|
32 | + |
|
33 | + /** |
|
34 | + * @var boolean |
|
35 | + */ |
|
36 | + protected $_requires_https = false; |
|
37 | + |
|
38 | + /** |
|
39 | + * @var boolean |
|
40 | + */ |
|
41 | + protected $_has_billing_form; |
|
42 | + |
|
43 | + /** |
|
44 | + * @var EE_Gateway |
|
45 | + */ |
|
46 | + protected $_gateway = null; |
|
47 | + |
|
48 | + /** |
|
49 | + * @var EE_Payment_Method_Form |
|
50 | + */ |
|
51 | + protected $_settings_form = null; |
|
52 | + |
|
53 | + /** |
|
54 | + * @var EE_Form_Section_Proper |
|
55 | + */ |
|
56 | + protected $_billing_form = null; |
|
57 | + |
|
58 | + /** |
|
59 | + * @var boolean |
|
60 | + */ |
|
61 | + protected $_cache_billing_form = true; |
|
62 | + |
|
63 | + /** |
|
64 | + * String of the absolute path to the folder containing this file, with a trailing slash. |
|
65 | + * eg '/public_html/wp-site/wp-content/plugins/event-espresso/payment_methods/Invoice/' |
|
66 | + * |
|
67 | + * @var string |
|
68 | + */ |
|
69 | + protected $_file_folder = null; |
|
70 | + |
|
71 | + /** |
|
72 | + * String to the absolute URL to this file (useful for getting its web-accessible resources |
|
73 | + * like images, js, or css) |
|
74 | + * |
|
75 | + * @var string |
|
76 | + */ |
|
77 | + protected $_file_url = null; |
|
78 | + |
|
79 | + /** |
|
80 | + * Pretty name for the payment method |
|
81 | + * |
|
82 | + * @var string |
|
83 | + */ |
|
84 | + protected $_pretty_name = null; |
|
85 | + |
|
86 | + /** |
|
87 | + * |
|
88 | + * @var string |
|
89 | + */ |
|
90 | + protected $_default_button_url = null; |
|
91 | + |
|
92 | + /** |
|
93 | + * |
|
94 | + * @var string |
|
95 | + */ |
|
96 | + protected $_default_description = null; |
|
97 | + |
|
98 | + |
|
99 | + /** |
|
100 | + * |
|
101 | + * @param EE_Payment_Method $pm_instance |
|
102 | + * @throws EE_Error |
|
103 | + * @return EE_PMT_Base |
|
104 | + */ |
|
105 | + public function __construct($pm_instance = null) |
|
106 | + { |
|
107 | + if ($pm_instance instanceof EE_Payment_Method) { |
|
108 | + $this->set_instance($pm_instance); |
|
109 | + } |
|
110 | + if ($this->_gateway) { |
|
111 | + $this->_gateway->set_payment_model(EEM_Payment::instance()); |
|
112 | + $this->_gateway->set_payment_log(EEM_Change_Log::instance()); |
|
113 | + $this->_gateway->set_template_helper(new EEH_Template()); |
|
114 | + $this->_gateway->set_line_item_helper(new EEH_Line_Item()); |
|
115 | + $this->_gateway->set_money_helper(new EEH_Money()); |
|
116 | + $this->_gateway->set_gateway_data_formatter(new GatewayDataFormatter()); |
|
117 | + $this->_gateway->set_unsupported_character_remover(new AsciiOnly()); |
|
118 | + do_action('AHEE__EE_PMT_Base___construct__done_initializing_gateway_class', $this, $this->_gateway); |
|
119 | + } |
|
120 | + if (! isset($this->_has_billing_form)) { |
|
121 | + // by default, On Site gateways have a billing form |
|
122 | + if ($this->payment_occurs() == EE_PMT_Base::onsite) { |
|
123 | + $this->set_has_billing_form(true); |
|
124 | + } else { |
|
125 | + $this->set_has_billing_form(false); |
|
126 | + } |
|
127 | + } |
|
128 | + |
|
129 | + if (! $this->_pretty_name) { |
|
130 | + throw new EE_Error( |
|
131 | + sprintf( |
|
132 | + esc_html__( |
|
133 | + "You must set the pretty name for the Payment Method Type in the constructor (_pretty_name), and please make it internationalized", |
|
134 | + "event_espresso" |
|
135 | + ) |
|
136 | + ) |
|
137 | + ); |
|
138 | + } |
|
139 | + // if the child didn't specify a default button, use the credit card one |
|
140 | + if ($this->_default_button_url === null) { |
|
141 | + $this->_default_button_url = EE_PLUGIN_DIR_URL . 'payment_methods/pay-by-credit-card.png'; |
|
142 | + } |
|
143 | + } |
|
144 | + |
|
145 | + |
|
146 | + /** |
|
147 | + * @param boolean $has_billing_form |
|
148 | + */ |
|
149 | + public function set_has_billing_form($has_billing_form) |
|
150 | + { |
|
151 | + $this->_has_billing_form = filter_var($has_billing_form, FILTER_VALIDATE_BOOLEAN); |
|
152 | + } |
|
153 | + |
|
154 | + |
|
155 | + /** |
|
156 | + * sets the file_folder property |
|
157 | + */ |
|
158 | + protected function _set_file_folder() |
|
159 | + { |
|
160 | + $reflector = new ReflectionClass(get_class($this)); |
|
161 | + $fn = $reflector->getFileName(); |
|
162 | + $this->_file_folder = dirname($fn) . '/'; |
|
163 | + } |
|
164 | + |
|
165 | + |
|
166 | + /** |
|
167 | + * sets the file URL with a trailing slash for this PMT |
|
168 | + */ |
|
169 | + protected function _set_file_url() |
|
170 | + { |
|
171 | + $plugins_dir_fixed = str_replace('\\', '/', WP_PLUGIN_DIR); |
|
172 | + $file_folder_fixed = str_replace('\\', '/', $this->file_folder()); |
|
173 | + $file_path = str_replace($plugins_dir_fixed, WP_PLUGIN_URL, $file_folder_fixed); |
|
174 | + $this->_file_url = set_url_scheme($file_path); |
|
175 | + } |
|
176 | + |
|
177 | + /** |
|
178 | + * Gets the default description on all payment methods of this type |
|
179 | + * |
|
180 | + * @return string |
|
181 | + */ |
|
182 | + public function default_description() |
|
183 | + { |
|
184 | + return $this->_default_description; |
|
185 | + } |
|
186 | + |
|
187 | + |
|
188 | + /** |
|
189 | + * Returns the folder containing the PMT child class, with a trailing slash |
|
190 | + * |
|
191 | + * @return string |
|
192 | + */ |
|
193 | + public function file_folder() |
|
194 | + { |
|
195 | + if (! $this->_file_folder) { |
|
196 | + $this->_set_file_folder(); |
|
197 | + } |
|
198 | + return $this->_file_folder; |
|
199 | + } |
|
200 | + |
|
201 | + |
|
202 | + /** |
|
203 | + * @return string |
|
204 | + */ |
|
205 | + public function file_url() |
|
206 | + { |
|
207 | + if (! $this->_file_url) { |
|
208 | + $this->_set_file_url(); |
|
209 | + } |
|
210 | + return $this->_file_url; |
|
211 | + } |
|
212 | + |
|
213 | + |
|
214 | + /** |
|
215 | + * Sets the payment method instance this payment method type is for. |
|
216 | + * Its important teh payment method instance is set before |
|
217 | + * |
|
218 | + * @param EE_Payment_Method $payment_method_instance |
|
219 | + */ |
|
220 | + public function set_instance($payment_method_instance) |
|
221 | + { |
|
222 | + $this->_pm_instance = $payment_method_instance; |
|
223 | + // if they have already requested the settings form, make sure its |
|
224 | + // data matches this model object |
|
225 | + if ($this->_settings_form) { |
|
226 | + $this->settings_form()->populate_model_obj($payment_method_instance); |
|
227 | + } |
|
228 | + if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
229 | + $this->_gateway->set_settings($payment_method_instance->settings_array()); |
|
230 | + } |
|
231 | + } |
|
232 | + |
|
233 | + |
|
234 | + /** |
|
235 | + * Gets teh form for displaying to admins where they setup the payment method |
|
236 | + * |
|
237 | + * @return EE_Payment_Method_Form |
|
238 | + */ |
|
239 | + public function settings_form() |
|
240 | + { |
|
241 | + if (! $this->_settings_form) { |
|
242 | + $this->_settings_form = $this->generate_new_settings_form(); |
|
243 | + $this->_settings_form->set_payment_method_type($this); |
|
244 | + // if we have already assigned a model object to this pmt, make |
|
245 | + // sure its reflected in teh form we just generated |
|
246 | + if ($this->_pm_instance) { |
|
247 | + $this->_settings_form->populate_model_obj($this->_pm_instance); |
|
248 | + } |
|
249 | + } |
|
250 | + return $this->_settings_form; |
|
251 | + } |
|
252 | + |
|
253 | + |
|
254 | + /** |
|
255 | + * Gets the form for all the settings related to this payment method type |
|
256 | + * |
|
257 | + * @return EE_Payment_Method_Form |
|
258 | + */ |
|
259 | + abstract public function generate_new_settings_form(); |
|
260 | + |
|
261 | + |
|
262 | + /** |
|
263 | + * Sets the form for settings. This may be useful if we have already received |
|
264 | + * a form submission and have form data it in, and want to use it anytime we're showing |
|
265 | + * this payment method type's settings form later in the request |
|
266 | + * |
|
267 | + * @param EE_Payment_Method_Form $form |
|
268 | + */ |
|
269 | + public function set_settings_form($form) |
|
270 | + { |
|
271 | + $this->_settings_form = $form; |
|
272 | + } |
|
273 | + |
|
274 | + |
|
275 | + /** |
|
276 | + * @return boolean |
|
277 | + */ |
|
278 | + public function has_billing_form() |
|
279 | + { |
|
280 | + return $this->_has_billing_form; |
|
281 | + } |
|
282 | + |
|
283 | + |
|
284 | + /** |
|
285 | + * Gets the form for displaying to attendees where they can enter their billing info |
|
286 | + * which will be sent to teh gateway (can be null) |
|
287 | + * |
|
288 | + * @param \EE_Transaction $transaction |
|
289 | + * @param array $extra_args |
|
290 | + * @return \EE_Billing_Attendee_Info_Form|\EE_Billing_Info_Form|null |
|
291 | + */ |
|
292 | + public function billing_form(EE_Transaction $transaction = null, $extra_args = array()) |
|
293 | + { |
|
294 | + // has billing form already been regenerated ? or overwrite cache? |
|
295 | + if (! $this->_billing_form instanceof EE_Billing_Info_Form || ! $this->_cache_billing_form) { |
|
296 | + $this->_billing_form = $this->generate_new_billing_form($transaction, $extra_args); |
|
297 | + } |
|
298 | + // if we know who the attendee is, and this is a billing form |
|
299 | + // that uses attendee info, populate it |
|
300 | + if ( |
|
301 | + apply_filters( |
|
302 | + 'FHEE__populate_billing_form_fields_from_attendee', |
|
303 | + ($this->_billing_form instanceof EE_Billing_Attendee_Info_Form |
|
304 | + && $transaction instanceof EE_Transaction |
|
305 | + && $transaction->primary_registration() instanceof EE_Registration |
|
306 | + && $transaction->primary_registration()->attendee() instanceof EE_Attendee |
|
307 | + ), |
|
308 | + $this->_billing_form, |
|
309 | + $transaction |
|
310 | + ) |
|
311 | + ) { |
|
312 | + $this->_billing_form->populate_from_attendee($transaction->primary_registration()->attendee()); |
|
313 | + } |
|
314 | + return $this->_billing_form; |
|
315 | + } |
|
316 | + |
|
317 | + |
|
318 | + /** |
|
319 | + * Creates the billing form for this payment method type |
|
320 | + * |
|
321 | + * @param \EE_Transaction $transaction |
|
322 | + * @return \EE_Billing_Info_Form |
|
323 | + */ |
|
324 | + abstract public function generate_new_billing_form(EE_Transaction $transaction = null); |
|
325 | + |
|
326 | + |
|
327 | + /** |
|
328 | + * apply_billing_form_debug_settings |
|
329 | + * applies debug data to the form |
|
330 | + * |
|
331 | + * @param \EE_Billing_Info_Form $billing_form |
|
332 | + * @return \EE_Billing_Info_Form |
|
333 | + */ |
|
334 | + public function apply_billing_form_debug_settings(EE_Billing_Info_Form $billing_form) |
|
335 | + { |
|
336 | + return $billing_form; |
|
337 | + } |
|
338 | + |
|
339 | + |
|
340 | + /** |
|
341 | + * Sets the billing form for this payment method type. You may want to use this |
|
342 | + * if you have form |
|
343 | + * |
|
344 | + * @param EE_Payment_Method $form |
|
345 | + */ |
|
346 | + public function set_billing_form($form) |
|
347 | + { |
|
348 | + $this->_billing_form = $form; |
|
349 | + } |
|
350 | + |
|
351 | + |
|
352 | + /** |
|
353 | + * Returns whether or not this payment method requires HTTPS to be used |
|
354 | + * |
|
355 | + * @return boolean |
|
356 | + */ |
|
357 | + public function requires_https() |
|
358 | + { |
|
359 | + return $this->_requires_https; |
|
360 | + } |
|
361 | + |
|
362 | + |
|
363 | + /** |
|
364 | + * |
|
365 | + * @param EE_Transaction $transaction |
|
366 | + * @param float $amount |
|
367 | + * @param EE_Billing_Info_Form $billing_info |
|
368 | + * @param string $return_url |
|
369 | + * @param string $fail_url |
|
370 | + * @param string $method |
|
371 | + * @param bool $by_admin |
|
372 | + * @return EE_Payment |
|
373 | + * @throws EE_Error |
|
374 | + */ |
|
375 | + public function process_payment( |
|
376 | + EE_Transaction $transaction, |
|
377 | + $amount = null, |
|
378 | + $billing_info = null, |
|
379 | + $return_url = null, |
|
380 | + $fail_url = '', |
|
381 | + $method = 'CART', |
|
382 | + $by_admin = false |
|
383 | + ) { |
|
384 | + // @todo: add surcharge for the payment method, if any |
|
385 | + if ($this->_gateway) { |
|
386 | + // there is a gateway, so we're going to make a payment object |
|
387 | + // but wait! do they already have a payment in progress that we thought was failed? |
|
388 | + $duplicate_properties = array( |
|
389 | + 'STS_ID' => EEM_Payment::status_id_failed, |
|
390 | + 'TXN_ID' => $transaction->ID(), |
|
391 | + 'PMD_ID' => $this->_pm_instance->ID(), |
|
392 | + 'PAY_source' => $method, |
|
393 | + 'PAY_amount' => $amount !== null ? $amount : $transaction->remaining(), |
|
394 | + 'PAY_gateway_response' => null, |
|
395 | + ); |
|
396 | + $payment = EEM_Payment::instance()->get_one(array($duplicate_properties)); |
|
397 | + // if we didn't already have a payment in progress for the same thing, |
|
398 | + // then we actually want to make a new payment |
|
399 | + if (! $payment instanceof EE_Payment) { |
|
400 | + $payment = EE_Payment::new_instance( |
|
401 | + array_merge( |
|
402 | + $duplicate_properties, |
|
403 | + array( |
|
404 | + 'PAY_timestamp' => time(), |
|
405 | + 'PAY_txn_id_chq_nmbr' => null, |
|
406 | + 'PAY_po_number' => null, |
|
407 | + 'PAY_extra_accntng' => null, |
|
408 | + 'PAY_details' => null, |
|
409 | + ) |
|
410 | + ) |
|
411 | + ); |
|
412 | + } |
|
413 | + // make sure the payment has been saved to show we started it, and so it has an ID should the gateway try to log it |
|
414 | + $payment->save(); |
|
415 | + $billing_values = $this->_get_billing_values_from_form($billing_info); |
|
416 | + |
|
417 | + // Offsite Gateway |
|
418 | + if ($this->_gateway instanceof EE_Offsite_Gateway) { |
|
419 | + $payment = $this->_gateway->set_redirection_info( |
|
420 | + $payment, |
|
421 | + $billing_values, |
|
422 | + $return_url, |
|
423 | + EE_Config::instance()->core->txn_page_url( |
|
424 | + array( |
|
425 | + 'e_reg_url_link' => $transaction->primary_registration()->reg_url_link(), |
|
426 | + 'ee_payment_method' => $this->_pm_instance->slug(), |
|
427 | + ) |
|
428 | + ), |
|
429 | + $fail_url |
|
430 | + ); |
|
431 | + $payment->save(); |
|
432 | + // Onsite Gateway |
|
433 | + } elseif ($this->_gateway instanceof EE_Onsite_Gateway) { |
|
434 | + $payment = $this->_gateway->do_direct_payment($payment, $billing_values); |
|
435 | + $payment->save(); |
|
436 | + } else { |
|
437 | + throw new EE_Error( |
|
438 | + sprintf( |
|
439 | + esc_html__( |
|
440 | + 'Gateway for payment method type "%s" is "%s", not a subclass of either EE_Offsite_Gateway or EE_Onsite_Gateway, or null (to indicate NO gateway)', |
|
441 | + 'event_espresso' |
|
442 | + ), |
|
443 | + get_class($this), |
|
444 | + gettype($this->_gateway) |
|
445 | + ) |
|
446 | + ); |
|
447 | + } |
|
448 | + } else { |
|
449 | + // no gateway provided |
|
450 | + // there is no payment. Must be an offline gateway |
|
451 | + // create a payment object anyways, but dont save it |
|
452 | + $payment = EE_Payment::new_instance( |
|
453 | + array( |
|
454 | + 'STS_ID' => EEM_Payment::status_id_pending, |
|
455 | + 'TXN_ID' => $transaction->ID(), |
|
456 | + 'PMD_ID' => $transaction->payment_method_ID(), |
|
457 | + 'PAY_amount' => 0.00, |
|
458 | + 'PAY_timestamp' => time(), |
|
459 | + ) |
|
460 | + ); |
|
461 | + } |
|
462 | + |
|
463 | + // if there is billing info, clean it and save it now |
|
464 | + if ($billing_info instanceof EE_Billing_Attendee_Info_Form) { |
|
465 | + $this->_save_billing_info_to_attendee($billing_info, $transaction); |
|
466 | + } |
|
467 | + |
|
468 | + return $payment; |
|
469 | + } |
|
470 | + |
|
471 | + /** |
|
472 | + * Gets the values we want to pass onto the gateway. Normally these |
|
473 | + * are just the 'pretty' values, but there may be times the data may need |
|
474 | + * a little massaging. Proper subsections will become arrays of inputs |
|
475 | + * |
|
476 | + * @param EE_Billing_Info_Form $billing_form |
|
477 | + * @return array |
|
478 | + */ |
|
479 | + protected function _get_billing_values_from_form($billing_form) |
|
480 | + { |
|
481 | + if ($billing_form instanceof EE_Form_Section_Proper) { |
|
482 | + return $billing_form->input_pretty_values(true); |
|
483 | + } else { |
|
484 | + return null; |
|
485 | + } |
|
486 | + } |
|
487 | + |
|
488 | + |
|
489 | + /** |
|
490 | + * Handles an instant payment notification when the transaction is known (by default). |
|
491 | + * |
|
492 | + * @param array $req_data |
|
493 | + * @param EE_Transaction $transaction |
|
494 | + * @return EE_Payment |
|
495 | + * @throws EE_Error |
|
496 | + */ |
|
497 | + public function handle_ipn($req_data, $transaction) |
|
498 | + { |
|
499 | + $transaction = EEM_Transaction::instance()->ensure_is_obj($transaction); |
|
500 | + if (! $this->_gateway instanceof EE_Offsite_Gateway) { |
|
501 | + throw new EE_Error( |
|
502 | + sprintf( |
|
503 | + esc_html__("Could not handle IPN because '%s' is not an offsite gateway", "event_espresso"), |
|
504 | + print_r($this->_gateway, true) |
|
505 | + ) |
|
506 | + ); |
|
507 | + } |
|
508 | + $payment = $this->_gateway->handle_payment_update($req_data, $transaction); |
|
509 | + return $payment; |
|
510 | + } |
|
511 | + |
|
512 | + |
|
513 | + /** |
|
514 | + * Saves the billing info onto the attendee of the primary registrant on this transaction, and |
|
515 | + * cleans it first. |
|
516 | + * |
|
517 | + * @param EE_Billing_Attendee_Info_Form $billing_form |
|
518 | + * @param EE_Transaction $transaction |
|
519 | + * @return boolean success |
|
520 | + */ |
|
521 | + protected function _save_billing_info_to_attendee($billing_form, $transaction) |
|
522 | + { |
|
523 | + if (! $transaction || ! $transaction instanceof EE_Transaction) { |
|
524 | + EE_Error::add_error( |
|
525 | + esc_html__("Cannot save billing info because no transaction was specified", "event_espresso"), |
|
526 | + __FILE__, |
|
527 | + __FUNCTION__, |
|
528 | + __LINE__ |
|
529 | + ); |
|
530 | + return false; |
|
531 | + } |
|
532 | + $primary_reg = $transaction->primary_registration(); |
|
533 | + if (! $primary_reg) { |
|
534 | + EE_Error::add_error( |
|
535 | + esc_html__("Cannot save billing info because the transaction has no primary registration", "event_espresso"), |
|
536 | + __FILE__, |
|
537 | + __FUNCTION__, |
|
538 | + __LINE__ |
|
539 | + ); |
|
540 | + return false; |
|
541 | + } |
|
542 | + $attendee = $primary_reg->attendee(); |
|
543 | + if (! $attendee) { |
|
544 | + EE_Error::add_error( |
|
545 | + esc_html__( |
|
546 | + "Cannot save billing info because the transaction's primary registration has no attendee!", |
|
547 | + "event_espresso" |
|
548 | + ), |
|
549 | + __FILE__, |
|
550 | + __FUNCTION__, |
|
551 | + __LINE__ |
|
552 | + ); |
|
553 | + return false; |
|
554 | + } |
|
555 | + return $attendee->save_and_clean_billing_info_for_payment_method($billing_form, $transaction->payment_method()); |
|
556 | + } |
|
557 | + |
|
558 | + |
|
559 | + /** |
|
560 | + * Gets the payment this IPN is for. Children may often want to |
|
561 | + * override this to inspect the request |
|
562 | + * |
|
563 | + * @param EE_Transaction $transaction |
|
564 | + * @param array $req_data |
|
565 | + * @return EE_Payment |
|
566 | + */ |
|
567 | + protected function find_payment_for_ipn(EE_Transaction $transaction, $req_data = array()) |
|
568 | + { |
|
569 | + return $transaction->last_payment(); |
|
570 | + } |
|
571 | + |
|
572 | + |
|
573 | + /** |
|
574 | + * In case generic code cannot provide the payment processor with a specific payment method |
|
575 | + * and transaction, it will try calling this method on each activate payment method. |
|
576 | + * If the payment method is able to identify the request as being for it, it should fetch |
|
577 | + * the payment its for and return it. If not, it should throw an EE_Error to indicate it cannot |
|
578 | + * handle the IPN |
|
579 | + * |
|
580 | + * @param array $req_data |
|
581 | + * @return EE_Payment only if this payment method can find the info its needs from $req_data |
|
582 | + * and identifies the IPN as being for this payment method (not just fo ra payment method of this type) |
|
583 | + * @throws EE_Error |
|
584 | + */ |
|
585 | + public function handle_unclaimed_ipn($req_data = array()) |
|
586 | + { |
|
587 | + throw new EE_Error( |
|
588 | + sprintf(esc_html__("Payment Method '%s' cannot handle unclaimed IPNs", "event_espresso"), get_class($this)) |
|
589 | + ); |
|
590 | + } |
|
591 | + |
|
592 | + |
|
593 | + /** |
|
594 | + * Logic to be accomplished when the payment attempt is complete. |
|
595 | + * Most payment methods don't need to do anything at this point; but some, like Mijireh, do. |
|
596 | + * (Mijireh is an offsite gateway which doesn't send an IPN. So when the user returns to EE from |
|
597 | + * mijireh, this method needs to be called so the Mijireh PM can ping Mijireh to know the status |
|
598 | + * of the payment). Fed a transaction because it's always assumed to be the last payment that |
|
599 | + * we're dealing with. Returns that last payment (if there is one) |
|
600 | + * |
|
601 | + * @param EE_Transaction $transaction |
|
602 | + * @return EE_Payment |
|
603 | + */ |
|
604 | + public function finalize_payment_for($transaction) |
|
605 | + { |
|
606 | + return $transaction->last_payment(); |
|
607 | + } |
|
608 | + |
|
609 | + |
|
610 | + /** |
|
611 | + * Whether or not this payment method's gateway supports sending refund requests |
|
612 | + * |
|
613 | + * @return boolean |
|
614 | + */ |
|
615 | + public function supports_sending_refunds() |
|
616 | + { |
|
617 | + if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
618 | + return $this->_gateway->supports_sending_refunds(); |
|
619 | + } else { |
|
620 | + return false; |
|
621 | + } |
|
622 | + } |
|
623 | + |
|
624 | + |
|
625 | + /** |
|
626 | + * |
|
627 | + * @param EE_Payment $payment |
|
628 | + * @param array $refund_info |
|
629 | + * @throws EE_Error |
|
630 | + * @return EE_Payment |
|
631 | + */ |
|
632 | + public function process_refund(EE_Payment $payment, $refund_info = array()) |
|
633 | + { |
|
634 | + if ($this->_gateway && $this->_gateway instanceof EE_Gateway) { |
|
635 | + return $this->_gateway->do_direct_refund($payment, $refund_info); |
|
636 | + } else { |
|
637 | + throw new EE_Error( |
|
638 | + sprintf( |
|
639 | + esc_html__('Payment Method Type "%s" does not support sending refund requests', 'event_espresso'), |
|
640 | + get_class($this) |
|
641 | + ) |
|
642 | + ); |
|
643 | + } |
|
644 | + } |
|
645 | + |
|
646 | + |
|
647 | + /** |
|
648 | + * Returns one the class's constants onsite,offsite, or offline, depending on this |
|
649 | + * payment method's gateway. |
|
650 | + * |
|
651 | + * @return string |
|
652 | + * @throws EE_Error |
|
653 | + */ |
|
654 | + public function payment_occurs() |
|
655 | + { |
|
656 | + if (! $this->_gateway) { |
|
657 | + return EE_PMT_Base::offline; |
|
658 | + } elseif ($this->_gateway instanceof EE_Onsite_Gateway) { |
|
659 | + return EE_PMT_Base::onsite; |
|
660 | + } elseif ($this->_gateway instanceof EE_Offsite_Gateway) { |
|
661 | + return EE_PMT_Base::offsite; |
|
662 | + } else { |
|
663 | + throw new EE_Error( |
|
664 | + sprintf( |
|
665 | + esc_html__( |
|
666 | + "Payment method type '%s's gateway isn't an instance of EE_Onsite_Gateway, EE_Offsite_Gateway, or null. It must be one of those", |
|
667 | + "event_espresso" |
|
668 | + ), |
|
669 | + get_class($this) |
|
670 | + ) |
|
671 | + ); |
|
672 | + } |
|
673 | + } |
|
674 | + |
|
675 | + |
|
676 | + /** |
|
677 | + * For adding any html output ab ove the payment overview. |
|
678 | + * Many gateways won't want ot display anything, so this function just returns an empty string. |
|
679 | + * Other gateways may want to override this, such as offline gateways. |
|
680 | + * |
|
681 | + * @param EE_Payment $payment |
|
682 | + * @return string |
|
683 | + */ |
|
684 | + public function payment_overview_content(EE_Payment $payment) |
|
685 | + { |
|
686 | + return EEH_Template::display_template( |
|
687 | + EE_LIBRARIES . 'payment_methods/templates/payment_details_content.template.php', |
|
688 | + array('payment_method' => $this->_pm_instance, 'payment' => $payment), |
|
689 | + true |
|
690 | + ); |
|
691 | + } |
|
692 | + |
|
693 | + |
|
694 | + /** |
|
695 | + * @return array where keys are the help tab name, |
|
696 | + * values are: array { |
|
697 | + * @type string $title i18n name for the help tab |
|
698 | + * @type string $filename name of the file located in ./help_tabs/ (ie, in a folder next to this file) |
|
699 | + * @type array $template_args any arguments you want passed to the template file while rendering. |
|
700 | + * Keys will be variable names and values with be their values. |
|
701 | + */ |
|
702 | + public function help_tabs_config() |
|
703 | + { |
|
704 | + return array(); |
|
705 | + } |
|
706 | + |
|
707 | + |
|
708 | + /** |
|
709 | + * The system name for this PMT (eg AIM, Paypal_Pro, Invoice... what gets put into |
|
710 | + * the payment method's table's PMT_type column) |
|
711 | + * |
|
712 | + * @return string |
|
713 | + */ |
|
714 | + public function system_name() |
|
715 | + { |
|
716 | + $classname = get_class($this); |
|
717 | + return str_replace("EE_PMT_", '', $classname); |
|
718 | + } |
|
719 | + |
|
720 | + |
|
721 | + /** |
|
722 | + * A pretty i18n version of the PMT name. Often the same as the "pretty_name", but you can change it by overriding |
|
723 | + * this method. |
|
724 | + * @return string |
|
725 | + */ |
|
726 | + public function defaultFrontendName() |
|
727 | + { |
|
728 | + return $this->pretty_name(); |
|
729 | + } |
|
730 | + |
|
731 | + |
|
732 | + /** |
|
733 | + * A pretty i18n version of the PMT name |
|
734 | + * |
|
735 | + * @return string |
|
736 | + */ |
|
737 | + public function pretty_name() |
|
738 | + { |
|
739 | + return $this->_pretty_name; |
|
740 | + } |
|
741 | + |
|
742 | + |
|
743 | + /** |
|
744 | + * Gets the default absolute URL to the payment method type's button |
|
745 | + * |
|
746 | + * @return string |
|
747 | + */ |
|
748 | + public function default_button_url() |
|
749 | + { |
|
750 | + return $this->_default_button_url; |
|
751 | + } |
|
752 | + |
|
753 | + |
|
754 | + /** |
|
755 | + * Gets the gateway used by this payment method (if any) |
|
756 | + * |
|
757 | + * @return EE_Gateway |
|
758 | + */ |
|
759 | + public function get_gateway() |
|
760 | + { |
|
761 | + return $this->_gateway; |
|
762 | + } |
|
763 | + |
|
764 | + |
|
765 | + /** |
|
766 | + * @return string html for the link to a help tab |
|
767 | + */ |
|
768 | + public function get_help_tab_link() |
|
769 | + { |
|
770 | + return EEH_Template::get_help_tab_link( |
|
771 | + $this->get_help_tab_name(), |
|
772 | + 'espresso_payment_settings', |
|
773 | + 'default' |
|
774 | + ); |
|
775 | + } |
|
776 | + |
|
777 | + |
|
778 | + /** |
|
779 | + * Returns the name of the help tab for this PMT |
|
780 | + * |
|
781 | + * @return string |
|
782 | + */ |
|
783 | + public function get_help_tab_name() |
|
784 | + { |
|
785 | + return 'ee_' . strtolower($this->system_name()) . '_help_tab'; |
|
786 | + } |
|
787 | + |
|
788 | + /** |
|
789 | + * The name of the wp capability that should be associated with the usage of |
|
790 | + * this PMT by an admin |
|
791 | + * |
|
792 | + * @return string |
|
793 | + */ |
|
794 | + public function cap_name() |
|
795 | + { |
|
796 | + return 'ee_payment_method_' . strtolower($this->system_name()); |
|
797 | + } |
|
798 | + |
|
799 | + /** |
|
800 | + * Called by client code to tell the gateway that if it wants to change |
|
801 | + * the transaction or line items or registrations related to teh payment it already |
|
802 | + * processed (we think, but possibly not) that now's the time to do it. |
|
803 | + * It is expected that gateways will store any info they need for this on the PAY_details, |
|
804 | + * or maybe an extra meta value |
|
805 | + * |
|
806 | + * @param EE_Payment $payment |
|
807 | + * @return void |
|
808 | + */ |
|
809 | + public function update_txn_based_on_payment($payment) |
|
810 | + { |
|
811 | + if ($this->_gateway instanceof EE_Gateway) { |
|
812 | + $this->_gateway->update_txn_based_on_payment($payment); |
|
813 | + } |
|
814 | + } |
|
815 | + |
|
816 | + /** |
|
817 | + * Returns a string of HTML describing this payment method type for an admin, |
|
818 | + * primarily intended for them to read before activating it. |
|
819 | + * The easiest way to set this is to create a folder 'templates' alongside |
|
820 | + * your EE_PMT_{System_Name} file, and in it create a file named "{system_name}_intro.template.php". |
|
821 | + * Eg, if your payment method file is named "EE_PMT_Foo_Bar.pm.php", |
|
822 | + * then you'd create a file named "templates" in the same folder as it, and name the file |
|
823 | + * "foo_bar_intro.template.php", and its content will be returned by this method |
|
824 | + * |
|
825 | + * @return string |
|
826 | + */ |
|
827 | + public function introductory_html() |
|
828 | + { |
|
829 | + return EEH_Template::locate_template( |
|
830 | + $this->file_folder() . 'templates/' . strtolower($this->system_name()) . '_intro.template.php', |
|
831 | + array('pmt_obj' => $this, 'pm_instance' => $this->_pm_instance) |
|
832 | + ); |
|
833 | + } |
|
834 | 834 | } |
@@ -50,7 +50,7 @@ discard block |
||
50 | 50 | */ |
51 | 51 | public function getModelVersionInfo() |
52 | 52 | { |
53 | - if (! $this->model_version_info) { |
|
53 | + if ( ! $this->model_version_info) { |
|
54 | 54 | throw new EE_Error( |
55 | 55 | sprintf( |
56 | 56 | esc_html__( |
@@ -95,7 +95,7 @@ discard block |
||
95 | 95 | */ |
96 | 96 | protected function validateModel($model_name) |
97 | 97 | { |
98 | - if (! $this->getModelVersionInfo()->isModelNameInThisVersion($model_name)) { |
|
98 | + if ( ! $this->getModelVersionInfo()->isModelNameInThisVersion($model_name)) { |
|
99 | 99 | throw new RestException( |
100 | 100 | 'endpoint_parsing_error', |
101 | 101 | sprintf( |
@@ -18,95 +18,95 @@ |
||
18 | 18 | */ |
19 | 19 | class Base extends Controller_Base |
20 | 20 | { |
21 | - /** |
|
22 | - * Holds reference to the model version info, which knows the requested version |
|
23 | - * |
|
24 | - * @var ModelVersionInfo |
|
25 | - */ |
|
26 | - protected $model_version_info; |
|
21 | + /** |
|
22 | + * Holds reference to the model version info, which knows the requested version |
|
23 | + * |
|
24 | + * @var ModelVersionInfo |
|
25 | + */ |
|
26 | + protected $model_version_info; |
|
27 | 27 | |
28 | 28 | |
29 | 29 | |
30 | - /** |
|
31 | - * Sets the version the user requested |
|
32 | - * |
|
33 | - * @param string $version eg '4.8' |
|
34 | - */ |
|
35 | - public function setRequestedVersion($version) |
|
36 | - { |
|
37 | - parent::setRequestedVersion($version); |
|
38 | - $this->model_version_info = new ModelVersionInfo($version); |
|
39 | - } |
|
30 | + /** |
|
31 | + * Sets the version the user requested |
|
32 | + * |
|
33 | + * @param string $version eg '4.8' |
|
34 | + */ |
|
35 | + public function setRequestedVersion($version) |
|
36 | + { |
|
37 | + parent::setRequestedVersion($version); |
|
38 | + $this->model_version_info = new ModelVersionInfo($version); |
|
39 | + } |
|
40 | 40 | |
41 | 41 | |
42 | 42 | |
43 | - /** |
|
44 | - * Gets the object that should be used for getting any info from the models, |
|
45 | - * because it's takes the requested and current core version into account |
|
46 | - * |
|
47 | - * @return \EventEspresso\core\libraries\rest_api\ModelVersionInfo |
|
48 | - * @throws EE_Error |
|
49 | - */ |
|
50 | - public function getModelVersionInfo() |
|
51 | - { |
|
52 | - if (! $this->model_version_info) { |
|
53 | - throw new EE_Error( |
|
54 | - sprintf( |
|
55 | - esc_html__( |
|
56 | - 'Cannot use model version info before setting the requested version in the controller', |
|
57 | - 'event_espresso' |
|
58 | - ) |
|
59 | - ) |
|
60 | - ); |
|
61 | - } |
|
62 | - return $this->model_version_info; |
|
63 | - } |
|
43 | + /** |
|
44 | + * Gets the object that should be used for getting any info from the models, |
|
45 | + * because it's takes the requested and current core version into account |
|
46 | + * |
|
47 | + * @return \EventEspresso\core\libraries\rest_api\ModelVersionInfo |
|
48 | + * @throws EE_Error |
|
49 | + */ |
|
50 | + public function getModelVersionInfo() |
|
51 | + { |
|
52 | + if (! $this->model_version_info) { |
|
53 | + throw new EE_Error( |
|
54 | + sprintf( |
|
55 | + esc_html__( |
|
56 | + 'Cannot use model version info before setting the requested version in the controller', |
|
57 | + 'event_espresso' |
|
58 | + ) |
|
59 | + ) |
|
60 | + ); |
|
61 | + } |
|
62 | + return $this->model_version_info; |
|
63 | + } |
|
64 | 64 | |
65 | 65 | |
66 | 66 | |
67 | - /** |
|
68 | - * Determines if $object is of one of the classes of $classes. Similar to |
|
69 | - * in_array(), except this checks if $object is a subclass of the classnames provided |
|
70 | - * in $classnames |
|
71 | - * |
|
72 | - * @param object $object |
|
73 | - * @param array $classnames |
|
74 | - * @return boolean |
|
75 | - */ |
|
76 | - public function isSubclassOfOne($object, $classnames) |
|
77 | - { |
|
78 | - foreach ($classnames as $classname) { |
|
79 | - if (is_a($object, $classname)) { |
|
80 | - return true; |
|
81 | - } |
|
82 | - } |
|
83 | - return false; |
|
84 | - } |
|
67 | + /** |
|
68 | + * Determines if $object is of one of the classes of $classes. Similar to |
|
69 | + * in_array(), except this checks if $object is a subclass of the classnames provided |
|
70 | + * in $classnames |
|
71 | + * |
|
72 | + * @param object $object |
|
73 | + * @param array $classnames |
|
74 | + * @return boolean |
|
75 | + */ |
|
76 | + public function isSubclassOfOne($object, $classnames) |
|
77 | + { |
|
78 | + foreach ($classnames as $classname) { |
|
79 | + if (is_a($object, $classname)) { |
|
80 | + return true; |
|
81 | + } |
|
82 | + } |
|
83 | + return false; |
|
84 | + } |
|
85 | 85 | |
86 | - /** |
|
87 | - * Verifies the model name provided was valid. If so, returns the model (as an object). Otherwise, throws an |
|
88 | - * exception. Must be called after `setRequestedVersion()`. |
|
89 | - * @since 4.9.76.p |
|
90 | - * @param $model_name |
|
91 | - * @return EEM_Base |
|
92 | - * @throws EE_Error |
|
93 | - * @throws RestException |
|
94 | - */ |
|
95 | - protected function validateModel($model_name) |
|
96 | - { |
|
97 | - if (! $this->getModelVersionInfo()->isModelNameInThisVersion($model_name)) { |
|
98 | - throw new RestException( |
|
99 | - 'endpoint_parsing_error', |
|
100 | - sprintf( |
|
101 | - esc_html__( |
|
102 | - 'There is no model for endpoint %s. Please contact event espresso support', |
|
103 | - 'event_espresso' |
|
104 | - ), |
|
105 | - $model_name |
|
106 | - ) |
|
107 | - ); |
|
108 | - } |
|
109 | - return $this->getModelVersionInfo()->loadModel($model_name); |
|
110 | - } |
|
86 | + /** |
|
87 | + * Verifies the model name provided was valid. If so, returns the model (as an object). Otherwise, throws an |
|
88 | + * exception. Must be called after `setRequestedVersion()`. |
|
89 | + * @since 4.9.76.p |
|
90 | + * @param $model_name |
|
91 | + * @return EEM_Base |
|
92 | + * @throws EE_Error |
|
93 | + * @throws RestException |
|
94 | + */ |
|
95 | + protected function validateModel($model_name) |
|
96 | + { |
|
97 | + if (! $this->getModelVersionInfo()->isModelNameInThisVersion($model_name)) { |
|
98 | + throw new RestException( |
|
99 | + 'endpoint_parsing_error', |
|
100 | + sprintf( |
|
101 | + esc_html__( |
|
102 | + 'There is no model for endpoint %s. Please contact event espresso support', |
|
103 | + 'event_espresso' |
|
104 | + ), |
|
105 | + $model_name |
|
106 | + ) |
|
107 | + ); |
|
108 | + } |
|
109 | + return $this->getModelVersionInfo()->loadModel($model_name); |
|
110 | + } |
|
111 | 111 | } |
112 | 112 | // End of file Base.php |