Completed
Branch TASK/skeleton-addon-missing-fi... (568b78)
by
unknown
104:24 queued 89:25
created
core/libraries/batch/JobHandlers/DatetimeOffsetFix.php 2 patches
Indentation   +467 added lines, -467 removed lines patch added patch discarded remove patch
@@ -24,471 +24,471 @@
 block discarded – undo
24 24
 class DatetimeOffsetFix extends JobHandler
25 25
 {
26 26
 
27
-    /**
28
-     * Key for the option used to track which models have been processed when doing the batches.
29
-     */
30
-    const MODELS_TO_PROCESS_OPTION_KEY = 'ee_models_processed_for_datetime_offset_fix';
31
-
32
-
33
-    const COUNT_OF_MODELS_PROCESSED = 'ee_count_of_ee_models_processed_for_datetime_offset_fixed';
34
-
35
-    /**
36
-     * Key for the option used to track what the current offset is that will be applied when this tool is executed.
37
-     */
38
-    const OFFSET_TO_APPLY_OPTION_KEY = 'ee_datetime_offset_fix_offset_to_apply';
39
-
40
-
41
-    const OPTION_KEY_OFFSET_RANGE_START_DATE = 'ee_datetime_offset_start_date_range';
42
-
43
-
44
-    const OPTION_KEY_OFFSET_RANGE_END_DATE = 'ee_datetime_offset_end_date_range';
45
-
46
-
47
-    /**
48
-     * String labelling the datetime offset fix type for change-log entries.
49
-     */
50
-    const DATETIME_OFFSET_FIX_CHANGELOG_TYPE = 'datetime_offset_fix';
51
-
52
-
53
-    /**
54
-     * String labelling a datetime offset fix error for change-log entries.
55
-     */
56
-    const DATETIME_OFFSET_FIX_CHANGELOG_ERROR_TYPE = 'datetime_offset_fix_error';
57
-
58
-    /**
59
-     * @var EEM_Base[]
60
-     */
61
-    protected $models_with_datetime_fields = array();
62
-
63
-    // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
64
-
65
-    /**
66
-     * Performs any necessary setup for starting the job. This is also a good
67
-     * place to setup the $job_arguments which will be used for subsequent HTTP requests
68
-     * when continue_job will be called
69
-     *
70
-     * @param JobParameters $job_parameters
71
-     * @return JobStepResponse
72
-     * @throws EE_Error
73
-     * @throws InvalidArgumentException
74
-     * @throws InvalidDataTypeException
75
-     * @throws InvalidInterfaceException
76
-     */
77
-    public function create_job(JobParameters $job_parameters)
78
-    {
79
-        $models_with_datetime_fields = $this->getModelsWithDatetimeFields();
80
-        // we'll be doing each model as a batch.
81
-        $job_parameters->set_job_size(count($models_with_datetime_fields));
82
-        return new JobStepResponse(
83
-            $job_parameters,
84
-            esc_html__('Starting Datetime Offset Fix', 'event_espresso')
85
-        );
86
-    }
87
-
88
-    /**
89
-     * Performs another step of the job
90
-     *
91
-     * @param JobParameters $job_parameters
92
-     * @param int           $batch_size
93
-     * @return JobStepResponse
94
-     * @throws EE_Error
95
-     * @throws InvalidArgumentException
96
-     * @throws InvalidDataTypeException
97
-     * @throws InvalidInterfaceException
98
-     */
99
-    public function continue_job(JobParameters $job_parameters, $batch_size = 50)
100
-    {
101
-        $models_to_process = $this->getModelsWithDatetimeFields();
102
-        // let's pop off the a model and do the query to apply the offset.
103
-        $model_to_process = array_pop($models_to_process);
104
-        // update our record
105
-        $this->setModelsToProcess($models_to_process);
106
-        $this->processModel($model_to_process);
107
-        $this->updateCountOfModelsProcessed();
108
-        $job_parameters->set_units_processed($this->getCountOfModelsProcessed());
109
-        if (count($models_to_process) > 0) {
110
-            $job_parameters->set_status(JobParameters::status_continue);
111
-        } else {
112
-            $job_parameters->set_status(JobParameters::status_complete);
113
-        }
114
-        return new JobStepResponse(
115
-            $job_parameters,
116
-            sprintf(
117
-                esc_html__('Updated the offset for all datetime fields on the %s model.', 'event_espresso'),
118
-                $model_to_process
119
-            )
120
-        );
121
-    }
122
-
123
-    /**
124
-     * Performs any clean-up logic when we know the job is completed
125
-     *
126
-     * @param JobParameters $job_parameters
127
-     * @return JobStepResponse
128
-     * @throws BatchRequestException
129
-     */
130
-    public function cleanup_job(JobParameters $job_parameters)
131
-    {
132
-        // delete important saved options.
133
-        delete_option(self::MODELS_TO_PROCESS_OPTION_KEY);
134
-        delete_option(self::COUNT_OF_MODELS_PROCESSED);
135
-        delete_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE);
136
-        delete_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE);
137
-        return new JobStepResponse($job_parameters, esc_html__(
138
-            'Offset has been applied to all affected fields.',
139
-            'event_espresso'
140
-        ));
141
-    }
142
-
143
-
144
-    /**
145
-     * Contains the logic for processing a model and applying the datetime offset to affected fields on that model.
146
-     *
147
-     * @param string $model_class_name
148
-     * @throws EE_Error
149
-     */
150
-    protected function processModel($model_class_name)
151
-    {
152
-        global $wpdb;
153
-        /** @var EEM_Base $model */
154
-        $model = $model_class_name::instance();
155
-        $original_offset = self::getOffset();
156
-        $start_date_range = self::getStartDateRange();
157
-        $end_date_range = self::getEndDateRange();
158
-        $sql_date_function = $original_offset > 0 ? 'DATE_ADD' : 'DATE_SUB';
159
-        $offset = abs($original_offset) * 60;
160
-        $date_ranges = array();
161
-        // since some affected models might have two tables, we have to get our tables and set up a query for each table.
162
-        foreach ($model->get_tables() as $table) {
163
-            $query = 'UPDATE ' . $table->get_table_name();
164
-            $fields_affected = array();
165
-            $inner_query = array();
166
-            foreach ($model->_get_fields_for_table($table->get_table_alias()) as $model_field) {
167
-                if ($model_field instanceof EE_Datetime_Field) {
168
-                    $inner_query[ $model_field->get_table_column() ] = $model_field->get_table_column() . ' = '
169
-                                                                       . $sql_date_function . '('
170
-                                                                       . $model_field->get_table_column()
171
-                                                                       . ", INTERVAL {$offset} MINUTE)";
172
-                    $fields_affected[] = $model_field;
173
-                }
174
-            }
175
-            if (! $fields_affected) {
176
-                continue;
177
-            }
178
-            // do we do one query per column/field or one query for all fields on the model? It all depends on whether
179
-            // there is a date range applied or not.
180
-            if ($start_date_range instanceof DbSafeDateTime || $end_date_range instanceof DbSafeDateTime) {
181
-                $result = $this->doQueryForEachField($query, $inner_query, $start_date_range, $end_date_range);
182
-            } else {
183
-                $result = $this->doQueryForAllFields($query, $inner_query);
184
-            }
185
-
186
-            // record appropriate logs for the query
187
-            switch (true) {
188
-                case $result === false:
189
-                    // record error.
190
-                    $error_message = $wpdb->last_error;
191
-                    // handle the edgecases where last_error might be empty.
192
-                    if (! $error_message) {
193
-                        $error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
194
-                    }
195
-                    $this->recordChangeLog($model, $original_offset, $table, $fields_affected, $error_message);
196
-                    break;
197
-                case is_array($result) && ! empty($result):
198
-                    foreach ($result as $field_name => $error_message) {
199
-                        $this->recordChangeLog($model, $original_offset, $table, array($field_name), $error_message);
200
-                    }
201
-                    break;
202
-                default:
203
-                    $this->recordChangeLog($model, $original_offset, $table, $fields_affected);
204
-            }
205
-        }
206
-    }
207
-
208
-
209
-    /**
210
-     * Does the query on each $inner_query individually.
211
-     *
212
-     * @param string              $query
213
-     * @param array               $inner_query
214
-     * @param DbSafeDateTime|null $start_date_range
215
-     * @param DbSafeDateTime|null $end_date_range
216
-     * @return array  An array of any errors encountered and the fields they were for.
217
-     */
218
-    private function doQueryForEachField($query, array $inner_query, $start_date_range, $end_date_range)
219
-    {
220
-        global $wpdb;
221
-        $errors = array();
222
-        foreach ($inner_query as $field_name => $field_query) {
223
-            $query_to_run = $query;
224
-            $where_conditions = array();
225
-            $query_to_run .= ' SET ' . $field_query;
226
-            if ($start_date_range instanceof DbSafeDateTime) {
227
-                $start_date = $start_date_range->format(EE_Datetime_Field::mysql_timestamp_format);
228
-                $where_conditions[] = "{$field_name} > '{$start_date}'";
229
-            }
230
-            if ($end_date_range instanceof DbSafeDateTime) {
231
-                $end_date = $end_date_range->format(EE_Datetime_Field::mysql_timestamp_format);
232
-                $where_conditions[] = "{$field_name} < '{$end_date}'";
233
-            }
234
-            if ($where_conditions) {
235
-                $query_to_run .= ' WHERE ' . implode(' AND ', $where_conditions);
236
-            }
237
-            $result = $wpdb->query($query_to_run);
238
-            if ($result === false) {
239
-                // record error.
240
-                $error_message = $wpdb->last_error;
241
-                // handle the edgecases where last_error might be empty.
242
-                if (! $error_message) {
243
-                    $error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
244
-                }
245
-                $errors[ $field_name ] = $error_message;
246
-            }
247
-        }
248
-        return $errors;
249
-    }
250
-
251
-
252
-    /**
253
-     * Performs the query for all fields within the inner_query
254
-     *
255
-     * @param string $query
256
-     * @param array  $inner_query
257
-     * @return false|int
258
-     */
259
-    private function doQueryForAllFields($query, array $inner_query)
260
-    {
261
-        global $wpdb;
262
-        $query .= ' SET ' . implode(',', $inner_query);
263
-        return $wpdb->query($query);
264
-    }
265
-
266
-
267
-    /**
268
-     * Records a changelog entry using the given information.
269
-     *
270
-     * @param EEM_Base              $model
271
-     * @param float                 $offset
272
-     * @param EE_Table_Base         $table
273
-     * @param EE_Model_Field_Base[] $model_fields_affected
274
-     * @param string                $error_message If present then there was an error so let's record that instead.
275
-     * @throws EE_Error
276
-     */
277
-    private function recordChangeLog(
278
-        EEM_Base $model,
279
-        $offset,
280
-        EE_Table_Base $table,
281
-        $model_fields_affected,
282
-        $error_message = ''
283
-    ) {
284
-        // setup $fields list.
285
-        $fields = array();
286
-        /** @var EE_Datetime_Field $model_field */
287
-        foreach ($model_fields_affected as $model_field) {
288
-            if (! $model_field instanceof EE_Datetime_Field) {
289
-                continue;
290
-            }
291
-            $fields[] = $model_field->get_name();
292
-        }
293
-        // setup the message for the changelog entry.
294
-        $message = $error_message
295
-            ? sprintf(
296
-                esc_html__(
297
-                    'The %1$s table for the %2$s model did not have the offset of %3$f applied to its fields (%4$s), because of the following error:%5$s',
298
-                    'event_espresso'
299
-                ),
300
-                $table->get_table_name(),
301
-                $model->get_this_model_name(),
302
-                $offset,
303
-                implode(',', $fields),
304
-                $error_message
305
-            )
306
-            : sprintf(
307
-                esc_html__(
308
-                    'The %1$s table for the %2$s model has had the offset of %3$f applied to its following fields: %4$s',
309
-                    'event_espresso'
310
-                ),
311
-                $table->get_table_name(),
312
-                $model->get_this_model_name(),
313
-                $offset,
314
-                implode(',', $fields)
315
-            );
316
-        // write to the log
317
-        $changelog = EE_Change_Log::new_instance(array(
318
-            'LOG_type'    => $error_message
319
-                ? self::DATETIME_OFFSET_FIX_CHANGELOG_ERROR_TYPE
320
-                : self::DATETIME_OFFSET_FIX_CHANGELOG_TYPE,
321
-            'LOG_message' => $message,
322
-        ));
323
-        $changelog->save();
324
-    }
325
-
326
-
327
-    /**
328
-     * Returns an array of models that have datetime fields.
329
-     * This array is added to a short lived transient cache to keep having to build this list to a minimum.
330
-     *
331
-     * @return array an array of model class names.
332
-     * @throws EE_Error
333
-     * @throws InvalidDataTypeException
334
-     * @throws InvalidInterfaceException
335
-     * @throws InvalidArgumentException
336
-     */
337
-    private function getModelsWithDatetimeFields()
338
-    {
339
-        $this->getModelsToProcess();
340
-        if (! empty($this->models_with_datetime_fields)) {
341
-            return $this->models_with_datetime_fields;
342
-        }
343
-
344
-        $all_non_abstract_models = EE_Registry::instance()->non_abstract_db_models;
345
-        foreach ($all_non_abstract_models as $non_abstract_model) {
346
-            // get model instance
347
-            /** @var EEM_Base $non_abstract_model */
348
-            $non_abstract_model = $non_abstract_model::instance();
349
-            if ($non_abstract_model->get_a_field_of_type('EE_Datetime_Field') instanceof EE_Datetime_Field) {
350
-                $this->models_with_datetime_fields[] = get_class($non_abstract_model);
351
-            }
352
-        }
353
-        $this->setModelsToProcess($this->models_with_datetime_fields);
354
-        return $this->models_with_datetime_fields;
355
-    }
356
-
357
-
358
-    /**
359
-     * This simply records the models that have been processed with our tracking option.
360
-     *
361
-     * @param array $models_to_set array of model class names.
362
-     */
363
-    private function setModelsToProcess($models_to_set)
364
-    {
365
-        update_option(self::MODELS_TO_PROCESS_OPTION_KEY, $models_to_set);
366
-    }
367
-
368
-
369
-    /**
370
-     * Used to keep track of how many models have been processed for the batch
371
-     *
372
-     * @param $count
373
-     */
374
-    private function updateCountOfModelsProcessed($count = 1)
375
-    {
376
-        $count = $this->getCountOfModelsProcessed() + (int) $count;
377
-        update_option(self::COUNT_OF_MODELS_PROCESSED, $count);
378
-    }
379
-
380
-
381
-    /**
382
-     * Retrieve the tracked number of models processed between requests.
383
-     *
384
-     * @return int
385
-     */
386
-    private function getCountOfModelsProcessed()
387
-    {
388
-        return (int) get_option(self::COUNT_OF_MODELS_PROCESSED, 0);
389
-    }
390
-
391
-
392
-    /**
393
-     * Returns the models that are left to process.
394
-     *
395
-     * @return array  an array of model class names.
396
-     */
397
-    private function getModelsToProcess()
398
-    {
399
-        if (empty($this->models_with_datetime_fields)) {
400
-            $this->models_with_datetime_fields = get_option(self::MODELS_TO_PROCESS_OPTION_KEY, array());
401
-        }
402
-        return $this->models_with_datetime_fields;
403
-    }
404
-
405
-
406
-    /**
407
-     * Used to record the offset that will be applied to dates and times for EE_Datetime_Field columns.
408
-     *
409
-     * @param float $offset
410
-     */
411
-    public static function updateOffset($offset)
412
-    {
413
-        update_option(self::OFFSET_TO_APPLY_OPTION_KEY, $offset);
414
-    }
415
-
416
-
417
-    /**
418
-     * Used to retrieve the saved offset that will be applied to dates and times for EE_Datetime_Field columns.
419
-     *
420
-     * @return float
421
-     */
422
-    public static function getOffset()
423
-    {
424
-        return (float) get_option(self::OFFSET_TO_APPLY_OPTION_KEY, 0);
425
-    }
426
-
427
-
428
-    /**
429
-     * Used to set the saved offset range start date.
430
-     *
431
-     * @param DbSafeDateTime|null $start_date
432
-     */
433
-    public static function updateStartDateRange(DbSafeDateTime $start_date = null)
434
-    {
435
-        $date_to_save = $start_date instanceof DbSafeDateTime
436
-            ? $start_date->format('U')
437
-            : '';
438
-        update_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE, $date_to_save);
439
-    }
440
-
441
-
442
-    /**
443
-     * Used to get the saved offset range start date.
444
-     *
445
-     * @return DbSafeDateTime|null
446
-     */
447
-    public static function getStartDateRange()
448
-    {
449
-        $start_date = get_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE, null);
450
-        try {
451
-            $datetime = DateTime::createFromFormat('U', $start_date, new DateTimeZone('UTC'));
452
-            $start_date = $datetime instanceof DateTime
453
-                ? DbSafeDateTime::createFromDateTime($datetime)
454
-                : null;
455
-        } catch (Exception $e) {
456
-            $start_date = null;
457
-        }
458
-        return $start_date;
459
-    }
460
-
461
-
462
-    /**
463
-     * Used to set the saved offset range end date.
464
-     *
465
-     * @param DbSafeDateTime|null $end_date
466
-     */
467
-    public static function updateEndDateRange(DbSafeDateTime $end_date = null)
468
-    {
469
-        $date_to_save = $end_date instanceof DbSafeDateTime
470
-            ? $end_date->format('U')
471
-            : '';
472
-        update_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE, $date_to_save);
473
-    }
474
-
475
-
476
-    /**
477
-     * Used to get the saved offset range end date.
478
-     *
479
-     * @return DbSafeDateTime|null
480
-     */
481
-    public static function getEndDateRange()
482
-    {
483
-        $end_date = get_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE, null);
484
-        try {
485
-            $datetime = DateTime::createFromFormat('U', $end_date, new DateTimeZone('UTC'));
486
-            $end_date = $datetime instanceof Datetime
487
-                ? DbSafeDateTime::createFromDateTime($datetime)
488
-                : null;
489
-        } catch (Exception $e) {
490
-            $end_date = null;
491
-        }
492
-        return $end_date;
493
-    }
27
+	/**
28
+	 * Key for the option used to track which models have been processed when doing the batches.
29
+	 */
30
+	const MODELS_TO_PROCESS_OPTION_KEY = 'ee_models_processed_for_datetime_offset_fix';
31
+
32
+
33
+	const COUNT_OF_MODELS_PROCESSED = 'ee_count_of_ee_models_processed_for_datetime_offset_fixed';
34
+
35
+	/**
36
+	 * Key for the option used to track what the current offset is that will be applied when this tool is executed.
37
+	 */
38
+	const OFFSET_TO_APPLY_OPTION_KEY = 'ee_datetime_offset_fix_offset_to_apply';
39
+
40
+
41
+	const OPTION_KEY_OFFSET_RANGE_START_DATE = 'ee_datetime_offset_start_date_range';
42
+
43
+
44
+	const OPTION_KEY_OFFSET_RANGE_END_DATE = 'ee_datetime_offset_end_date_range';
45
+
46
+
47
+	/**
48
+	 * String labelling the datetime offset fix type for change-log entries.
49
+	 */
50
+	const DATETIME_OFFSET_FIX_CHANGELOG_TYPE = 'datetime_offset_fix';
51
+
52
+
53
+	/**
54
+	 * String labelling a datetime offset fix error for change-log entries.
55
+	 */
56
+	const DATETIME_OFFSET_FIX_CHANGELOG_ERROR_TYPE = 'datetime_offset_fix_error';
57
+
58
+	/**
59
+	 * @var EEM_Base[]
60
+	 */
61
+	protected $models_with_datetime_fields = array();
62
+
63
+	// phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
64
+
65
+	/**
66
+	 * Performs any necessary setup for starting the job. This is also a good
67
+	 * place to setup the $job_arguments which will be used for subsequent HTTP requests
68
+	 * when continue_job will be called
69
+	 *
70
+	 * @param JobParameters $job_parameters
71
+	 * @return JobStepResponse
72
+	 * @throws EE_Error
73
+	 * @throws InvalidArgumentException
74
+	 * @throws InvalidDataTypeException
75
+	 * @throws InvalidInterfaceException
76
+	 */
77
+	public function create_job(JobParameters $job_parameters)
78
+	{
79
+		$models_with_datetime_fields = $this->getModelsWithDatetimeFields();
80
+		// we'll be doing each model as a batch.
81
+		$job_parameters->set_job_size(count($models_with_datetime_fields));
82
+		return new JobStepResponse(
83
+			$job_parameters,
84
+			esc_html__('Starting Datetime Offset Fix', 'event_espresso')
85
+		);
86
+	}
87
+
88
+	/**
89
+	 * Performs another step of the job
90
+	 *
91
+	 * @param JobParameters $job_parameters
92
+	 * @param int           $batch_size
93
+	 * @return JobStepResponse
94
+	 * @throws EE_Error
95
+	 * @throws InvalidArgumentException
96
+	 * @throws InvalidDataTypeException
97
+	 * @throws InvalidInterfaceException
98
+	 */
99
+	public function continue_job(JobParameters $job_parameters, $batch_size = 50)
100
+	{
101
+		$models_to_process = $this->getModelsWithDatetimeFields();
102
+		// let's pop off the a model and do the query to apply the offset.
103
+		$model_to_process = array_pop($models_to_process);
104
+		// update our record
105
+		$this->setModelsToProcess($models_to_process);
106
+		$this->processModel($model_to_process);
107
+		$this->updateCountOfModelsProcessed();
108
+		$job_parameters->set_units_processed($this->getCountOfModelsProcessed());
109
+		if (count($models_to_process) > 0) {
110
+			$job_parameters->set_status(JobParameters::status_continue);
111
+		} else {
112
+			$job_parameters->set_status(JobParameters::status_complete);
113
+		}
114
+		return new JobStepResponse(
115
+			$job_parameters,
116
+			sprintf(
117
+				esc_html__('Updated the offset for all datetime fields on the %s model.', 'event_espresso'),
118
+				$model_to_process
119
+			)
120
+		);
121
+	}
122
+
123
+	/**
124
+	 * Performs any clean-up logic when we know the job is completed
125
+	 *
126
+	 * @param JobParameters $job_parameters
127
+	 * @return JobStepResponse
128
+	 * @throws BatchRequestException
129
+	 */
130
+	public function cleanup_job(JobParameters $job_parameters)
131
+	{
132
+		// delete important saved options.
133
+		delete_option(self::MODELS_TO_PROCESS_OPTION_KEY);
134
+		delete_option(self::COUNT_OF_MODELS_PROCESSED);
135
+		delete_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE);
136
+		delete_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE);
137
+		return new JobStepResponse($job_parameters, esc_html__(
138
+			'Offset has been applied to all affected fields.',
139
+			'event_espresso'
140
+		));
141
+	}
142
+
143
+
144
+	/**
145
+	 * Contains the logic for processing a model and applying the datetime offset to affected fields on that model.
146
+	 *
147
+	 * @param string $model_class_name
148
+	 * @throws EE_Error
149
+	 */
150
+	protected function processModel($model_class_name)
151
+	{
152
+		global $wpdb;
153
+		/** @var EEM_Base $model */
154
+		$model = $model_class_name::instance();
155
+		$original_offset = self::getOffset();
156
+		$start_date_range = self::getStartDateRange();
157
+		$end_date_range = self::getEndDateRange();
158
+		$sql_date_function = $original_offset > 0 ? 'DATE_ADD' : 'DATE_SUB';
159
+		$offset = abs($original_offset) * 60;
160
+		$date_ranges = array();
161
+		// since some affected models might have two tables, we have to get our tables and set up a query for each table.
162
+		foreach ($model->get_tables() as $table) {
163
+			$query = 'UPDATE ' . $table->get_table_name();
164
+			$fields_affected = array();
165
+			$inner_query = array();
166
+			foreach ($model->_get_fields_for_table($table->get_table_alias()) as $model_field) {
167
+				if ($model_field instanceof EE_Datetime_Field) {
168
+					$inner_query[ $model_field->get_table_column() ] = $model_field->get_table_column() . ' = '
169
+																	   . $sql_date_function . '('
170
+																	   . $model_field->get_table_column()
171
+																	   . ", INTERVAL {$offset} MINUTE)";
172
+					$fields_affected[] = $model_field;
173
+				}
174
+			}
175
+			if (! $fields_affected) {
176
+				continue;
177
+			}
178
+			// do we do one query per column/field or one query for all fields on the model? It all depends on whether
179
+			// there is a date range applied or not.
180
+			if ($start_date_range instanceof DbSafeDateTime || $end_date_range instanceof DbSafeDateTime) {
181
+				$result = $this->doQueryForEachField($query, $inner_query, $start_date_range, $end_date_range);
182
+			} else {
183
+				$result = $this->doQueryForAllFields($query, $inner_query);
184
+			}
185
+
186
+			// record appropriate logs for the query
187
+			switch (true) {
188
+				case $result === false:
189
+					// record error.
190
+					$error_message = $wpdb->last_error;
191
+					// handle the edgecases where last_error might be empty.
192
+					if (! $error_message) {
193
+						$error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
194
+					}
195
+					$this->recordChangeLog($model, $original_offset, $table, $fields_affected, $error_message);
196
+					break;
197
+				case is_array($result) && ! empty($result):
198
+					foreach ($result as $field_name => $error_message) {
199
+						$this->recordChangeLog($model, $original_offset, $table, array($field_name), $error_message);
200
+					}
201
+					break;
202
+				default:
203
+					$this->recordChangeLog($model, $original_offset, $table, $fields_affected);
204
+			}
205
+		}
206
+	}
207
+
208
+
209
+	/**
210
+	 * Does the query on each $inner_query individually.
211
+	 *
212
+	 * @param string              $query
213
+	 * @param array               $inner_query
214
+	 * @param DbSafeDateTime|null $start_date_range
215
+	 * @param DbSafeDateTime|null $end_date_range
216
+	 * @return array  An array of any errors encountered and the fields they were for.
217
+	 */
218
+	private function doQueryForEachField($query, array $inner_query, $start_date_range, $end_date_range)
219
+	{
220
+		global $wpdb;
221
+		$errors = array();
222
+		foreach ($inner_query as $field_name => $field_query) {
223
+			$query_to_run = $query;
224
+			$where_conditions = array();
225
+			$query_to_run .= ' SET ' . $field_query;
226
+			if ($start_date_range instanceof DbSafeDateTime) {
227
+				$start_date = $start_date_range->format(EE_Datetime_Field::mysql_timestamp_format);
228
+				$where_conditions[] = "{$field_name} > '{$start_date}'";
229
+			}
230
+			if ($end_date_range instanceof DbSafeDateTime) {
231
+				$end_date = $end_date_range->format(EE_Datetime_Field::mysql_timestamp_format);
232
+				$where_conditions[] = "{$field_name} < '{$end_date}'";
233
+			}
234
+			if ($where_conditions) {
235
+				$query_to_run .= ' WHERE ' . implode(' AND ', $where_conditions);
236
+			}
237
+			$result = $wpdb->query($query_to_run);
238
+			if ($result === false) {
239
+				// record error.
240
+				$error_message = $wpdb->last_error;
241
+				// handle the edgecases where last_error might be empty.
242
+				if (! $error_message) {
243
+					$error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
244
+				}
245
+				$errors[ $field_name ] = $error_message;
246
+			}
247
+		}
248
+		return $errors;
249
+	}
250
+
251
+
252
+	/**
253
+	 * Performs the query for all fields within the inner_query
254
+	 *
255
+	 * @param string $query
256
+	 * @param array  $inner_query
257
+	 * @return false|int
258
+	 */
259
+	private function doQueryForAllFields($query, array $inner_query)
260
+	{
261
+		global $wpdb;
262
+		$query .= ' SET ' . implode(',', $inner_query);
263
+		return $wpdb->query($query);
264
+	}
265
+
266
+
267
+	/**
268
+	 * Records a changelog entry using the given information.
269
+	 *
270
+	 * @param EEM_Base              $model
271
+	 * @param float                 $offset
272
+	 * @param EE_Table_Base         $table
273
+	 * @param EE_Model_Field_Base[] $model_fields_affected
274
+	 * @param string                $error_message If present then there was an error so let's record that instead.
275
+	 * @throws EE_Error
276
+	 */
277
+	private function recordChangeLog(
278
+		EEM_Base $model,
279
+		$offset,
280
+		EE_Table_Base $table,
281
+		$model_fields_affected,
282
+		$error_message = ''
283
+	) {
284
+		// setup $fields list.
285
+		$fields = array();
286
+		/** @var EE_Datetime_Field $model_field */
287
+		foreach ($model_fields_affected as $model_field) {
288
+			if (! $model_field instanceof EE_Datetime_Field) {
289
+				continue;
290
+			}
291
+			$fields[] = $model_field->get_name();
292
+		}
293
+		// setup the message for the changelog entry.
294
+		$message = $error_message
295
+			? sprintf(
296
+				esc_html__(
297
+					'The %1$s table for the %2$s model did not have the offset of %3$f applied to its fields (%4$s), because of the following error:%5$s',
298
+					'event_espresso'
299
+				),
300
+				$table->get_table_name(),
301
+				$model->get_this_model_name(),
302
+				$offset,
303
+				implode(',', $fields),
304
+				$error_message
305
+			)
306
+			: sprintf(
307
+				esc_html__(
308
+					'The %1$s table for the %2$s model has had the offset of %3$f applied to its following fields: %4$s',
309
+					'event_espresso'
310
+				),
311
+				$table->get_table_name(),
312
+				$model->get_this_model_name(),
313
+				$offset,
314
+				implode(',', $fields)
315
+			);
316
+		// write to the log
317
+		$changelog = EE_Change_Log::new_instance(array(
318
+			'LOG_type'    => $error_message
319
+				? self::DATETIME_OFFSET_FIX_CHANGELOG_ERROR_TYPE
320
+				: self::DATETIME_OFFSET_FIX_CHANGELOG_TYPE,
321
+			'LOG_message' => $message,
322
+		));
323
+		$changelog->save();
324
+	}
325
+
326
+
327
+	/**
328
+	 * Returns an array of models that have datetime fields.
329
+	 * This array is added to a short lived transient cache to keep having to build this list to a minimum.
330
+	 *
331
+	 * @return array an array of model class names.
332
+	 * @throws EE_Error
333
+	 * @throws InvalidDataTypeException
334
+	 * @throws InvalidInterfaceException
335
+	 * @throws InvalidArgumentException
336
+	 */
337
+	private function getModelsWithDatetimeFields()
338
+	{
339
+		$this->getModelsToProcess();
340
+		if (! empty($this->models_with_datetime_fields)) {
341
+			return $this->models_with_datetime_fields;
342
+		}
343
+
344
+		$all_non_abstract_models = EE_Registry::instance()->non_abstract_db_models;
345
+		foreach ($all_non_abstract_models as $non_abstract_model) {
346
+			// get model instance
347
+			/** @var EEM_Base $non_abstract_model */
348
+			$non_abstract_model = $non_abstract_model::instance();
349
+			if ($non_abstract_model->get_a_field_of_type('EE_Datetime_Field') instanceof EE_Datetime_Field) {
350
+				$this->models_with_datetime_fields[] = get_class($non_abstract_model);
351
+			}
352
+		}
353
+		$this->setModelsToProcess($this->models_with_datetime_fields);
354
+		return $this->models_with_datetime_fields;
355
+	}
356
+
357
+
358
+	/**
359
+	 * This simply records the models that have been processed with our tracking option.
360
+	 *
361
+	 * @param array $models_to_set array of model class names.
362
+	 */
363
+	private function setModelsToProcess($models_to_set)
364
+	{
365
+		update_option(self::MODELS_TO_PROCESS_OPTION_KEY, $models_to_set);
366
+	}
367
+
368
+
369
+	/**
370
+	 * Used to keep track of how many models have been processed for the batch
371
+	 *
372
+	 * @param $count
373
+	 */
374
+	private function updateCountOfModelsProcessed($count = 1)
375
+	{
376
+		$count = $this->getCountOfModelsProcessed() + (int) $count;
377
+		update_option(self::COUNT_OF_MODELS_PROCESSED, $count);
378
+	}
379
+
380
+
381
+	/**
382
+	 * Retrieve the tracked number of models processed between requests.
383
+	 *
384
+	 * @return int
385
+	 */
386
+	private function getCountOfModelsProcessed()
387
+	{
388
+		return (int) get_option(self::COUNT_OF_MODELS_PROCESSED, 0);
389
+	}
390
+
391
+
392
+	/**
393
+	 * Returns the models that are left to process.
394
+	 *
395
+	 * @return array  an array of model class names.
396
+	 */
397
+	private function getModelsToProcess()
398
+	{
399
+		if (empty($this->models_with_datetime_fields)) {
400
+			$this->models_with_datetime_fields = get_option(self::MODELS_TO_PROCESS_OPTION_KEY, array());
401
+		}
402
+		return $this->models_with_datetime_fields;
403
+	}
404
+
405
+
406
+	/**
407
+	 * Used to record the offset that will be applied to dates and times for EE_Datetime_Field columns.
408
+	 *
409
+	 * @param float $offset
410
+	 */
411
+	public static function updateOffset($offset)
412
+	{
413
+		update_option(self::OFFSET_TO_APPLY_OPTION_KEY, $offset);
414
+	}
415
+
416
+
417
+	/**
418
+	 * Used to retrieve the saved offset that will be applied to dates and times for EE_Datetime_Field columns.
419
+	 *
420
+	 * @return float
421
+	 */
422
+	public static function getOffset()
423
+	{
424
+		return (float) get_option(self::OFFSET_TO_APPLY_OPTION_KEY, 0);
425
+	}
426
+
427
+
428
+	/**
429
+	 * Used to set the saved offset range start date.
430
+	 *
431
+	 * @param DbSafeDateTime|null $start_date
432
+	 */
433
+	public static function updateStartDateRange(DbSafeDateTime $start_date = null)
434
+	{
435
+		$date_to_save = $start_date instanceof DbSafeDateTime
436
+			? $start_date->format('U')
437
+			: '';
438
+		update_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE, $date_to_save);
439
+	}
440
+
441
+
442
+	/**
443
+	 * Used to get the saved offset range start date.
444
+	 *
445
+	 * @return DbSafeDateTime|null
446
+	 */
447
+	public static function getStartDateRange()
448
+	{
449
+		$start_date = get_option(self::OPTION_KEY_OFFSET_RANGE_START_DATE, null);
450
+		try {
451
+			$datetime = DateTime::createFromFormat('U', $start_date, new DateTimeZone('UTC'));
452
+			$start_date = $datetime instanceof DateTime
453
+				? DbSafeDateTime::createFromDateTime($datetime)
454
+				: null;
455
+		} catch (Exception $e) {
456
+			$start_date = null;
457
+		}
458
+		return $start_date;
459
+	}
460
+
461
+
462
+	/**
463
+	 * Used to set the saved offset range end date.
464
+	 *
465
+	 * @param DbSafeDateTime|null $end_date
466
+	 */
467
+	public static function updateEndDateRange(DbSafeDateTime $end_date = null)
468
+	{
469
+		$date_to_save = $end_date instanceof DbSafeDateTime
470
+			? $end_date->format('U')
471
+			: '';
472
+		update_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE, $date_to_save);
473
+	}
474
+
475
+
476
+	/**
477
+	 * Used to get the saved offset range end date.
478
+	 *
479
+	 * @return DbSafeDateTime|null
480
+	 */
481
+	public static function getEndDateRange()
482
+	{
483
+		$end_date = get_option(self::OPTION_KEY_OFFSET_RANGE_END_DATE, null);
484
+		try {
485
+			$datetime = DateTime::createFromFormat('U', $end_date, new DateTimeZone('UTC'));
486
+			$end_date = $datetime instanceof Datetime
487
+				? DbSafeDateTime::createFromDateTime($datetime)
488
+				: null;
489
+		} catch (Exception $e) {
490
+			$end_date = null;
491
+		}
492
+		return $end_date;
493
+	}
494 494
 }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -160,19 +160,19 @@  discard block
 block discarded – undo
160 160
         $date_ranges = array();
161 161
         // since some affected models might have two tables, we have to get our tables and set up a query for each table.
162 162
         foreach ($model->get_tables() as $table) {
163
-            $query = 'UPDATE ' . $table->get_table_name();
163
+            $query = 'UPDATE '.$table->get_table_name();
164 164
             $fields_affected = array();
165 165
             $inner_query = array();
166 166
             foreach ($model->_get_fields_for_table($table->get_table_alias()) as $model_field) {
167 167
                 if ($model_field instanceof EE_Datetime_Field) {
168
-                    $inner_query[ $model_field->get_table_column() ] = $model_field->get_table_column() . ' = '
169
-                                                                       . $sql_date_function . '('
168
+                    $inner_query[$model_field->get_table_column()] = $model_field->get_table_column().' = '
169
+                                                                       . $sql_date_function.'('
170 170
                                                                        . $model_field->get_table_column()
171 171
                                                                        . ", INTERVAL {$offset} MINUTE)";
172 172
                     $fields_affected[] = $model_field;
173 173
                 }
174 174
             }
175
-            if (! $fields_affected) {
175
+            if ( ! $fields_affected) {
176 176
                 continue;
177 177
             }
178 178
             // do we do one query per column/field or one query for all fields on the model? It all depends on whether
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
                     // record error.
190 190
                     $error_message = $wpdb->last_error;
191 191
                     // handle the edgecases where last_error might be empty.
192
-                    if (! $error_message) {
192
+                    if ( ! $error_message) {
193 193
                         $error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
194 194
                     }
195 195
                     $this->recordChangeLog($model, $original_offset, $table, $fields_affected, $error_message);
@@ -222,7 +222,7 @@  discard block
 block discarded – undo
222 222
         foreach ($inner_query as $field_name => $field_query) {
223 223
             $query_to_run = $query;
224 224
             $where_conditions = array();
225
-            $query_to_run .= ' SET ' . $field_query;
225
+            $query_to_run .= ' SET '.$field_query;
226 226
             if ($start_date_range instanceof DbSafeDateTime) {
227 227
                 $start_date = $start_date_range->format(EE_Datetime_Field::mysql_timestamp_format);
228 228
                 $where_conditions[] = "{$field_name} > '{$start_date}'";
@@ -232,17 +232,17 @@  discard block
 block discarded – undo
232 232
                 $where_conditions[] = "{$field_name} < '{$end_date}'";
233 233
             }
234 234
             if ($where_conditions) {
235
-                $query_to_run .= ' WHERE ' . implode(' AND ', $where_conditions);
235
+                $query_to_run .= ' WHERE '.implode(' AND ', $where_conditions);
236 236
             }
237 237
             $result = $wpdb->query($query_to_run);
238 238
             if ($result === false) {
239 239
                 // record error.
240 240
                 $error_message = $wpdb->last_error;
241 241
                 // handle the edgecases where last_error might be empty.
242
-                if (! $error_message) {
242
+                if ( ! $error_message) {
243 243
                     $error_message = esc_html__('Unknown mysql error occured.', 'event_espresso');
244 244
                 }
245
-                $errors[ $field_name ] = $error_message;
245
+                $errors[$field_name] = $error_message;
246 246
             }
247 247
         }
248 248
         return $errors;
@@ -259,7 +259,7 @@  discard block
 block discarded – undo
259 259
     private function doQueryForAllFields($query, array $inner_query)
260 260
     {
261 261
         global $wpdb;
262
-        $query .= ' SET ' . implode(',', $inner_query);
262
+        $query .= ' SET '.implode(',', $inner_query);
263 263
         return $wpdb->query($query);
264 264
     }
265 265
 
@@ -285,7 +285,7 @@  discard block
 block discarded – undo
285 285
         $fields = array();
286 286
         /** @var EE_Datetime_Field $model_field */
287 287
         foreach ($model_fields_affected as $model_field) {
288
-            if (! $model_field instanceof EE_Datetime_Field) {
288
+            if ( ! $model_field instanceof EE_Datetime_Field) {
289 289
                 continue;
290 290
             }
291 291
             $fields[] = $model_field->get_name();
@@ -337,7 +337,7 @@  discard block
 block discarded – undo
337 337
     private function getModelsWithDatetimeFields()
338 338
     {
339 339
         $this->getModelsToProcess();
340
-        if (! empty($this->models_with_datetime_fields)) {
340
+        if ( ! empty($this->models_with_datetime_fields)) {
341 341
             return $this->models_with_datetime_fields;
342 342
         }
343 343
 
Please login to merge, or discard this patch.
core/libraries/batch/Helpers/JobParameters.php 2 patches
Indentation   +392 added lines, -392 removed lines patch added patch discarded remove patch
@@ -14,396 +14,396 @@
 block discarded – undo
14 14
  */
15 15
 class JobParameters
16 16
 {
17
-    // phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
18
-    // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
19
-    // phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
20
-    /**
21
-     * status indicating the job should continue
22
-     */
23
-    const status_continue = 'continue';
24
-
25
-    /**
26
-     * status indicated the job has been completed successfully and should be cleaned up next
27
-     */
28
-    const status_complete = 'complete';
29
-
30
-    /**
31
-     * status indicating there was an error and the job should be cleaned up
32
-     */
33
-    const status_error = 'error';
34
-
35
-    /**
36
-     * status indicating the job has been cleaned up, and so this is probably the last
37
-     * time you'll see this job
38
-     */
39
-    const status_cleaned_up = 'cleaned_up';
40
-
41
-    const wp_option_prefix = 'ee_job_parameters_';
42
-
43
-
44
-    /**
45
-     * String uniquely identifying the job
46
-     *
47
-     * @var string
48
-     */
49
-    protected $_job_id;
50
-
51
-    /**
52
-     * @var string
53
-     */
54
-    protected $_classname;
55
-
56
-    /**
57
-     * @var array
58
-     */
59
-    protected $_request_data;
60
-
61
-    /**
62
-     * Array of any extra data we want to remember about this request, that
63
-     * wasn't necessarily past in with the request data
64
-     *
65
-     * @var array
66
-     */
67
-    protected $_extra_data;
68
-
69
-    /**
70
-     * Estimate of how many units HAVE been processed
71
-     *
72
-     * @var int
73
-     */
74
-    protected $_units_processed = 0;
75
-
76
-    /**
77
-     * @var string
78
-     */
79
-    protected $_status;
80
-
81
-    /**
82
-     * The size of the total job in whatever units you want.
83
-     * If you can't provide an estimate leave as 0.
84
-     * Once _units_processed equals _job_size, we should be done
85
-     *
86
-     * @var int
87
-     */
88
-    protected $_job_size = 0;
89
-
90
-
91
-    /**
92
-     * @param string $job_id
93
-     * @param string $classname
94
-     * @param array  $request_data
95
-     * @param array  $extra_data
96
-     */
97
-    public function __construct($job_id, $classname, $request_data, $extra_data = array())
98
-    {
99
-        $this->set_job_id($job_id);
100
-        $this->set_classname($classname);
101
-        $this->set_request_data($request_data);
102
-        $this->set_extra_data($extra_data);
103
-        $this->set_status(JobParameters::status_continue);
104
-    }
105
-
106
-
107
-    /**
108
-     * Returns the array of strings of valid stati
109
-     *
110
-     * @return array
111
-     */
112
-    public static function valid_stati()
113
-    {
114
-        return array(
115
-            JobParameters::status_complete,
116
-            JobParameters::status_continue,
117
-            JobParameters::status_error,
118
-            JobParameters::status_cleaned_up,
119
-        );
120
-    }
121
-
122
-
123
-    /**
124
-     * Saves this option to the database (wordpress options table)
125
-     *
126
-     * @param boolean $first
127
-     * @return boolean success
128
-     */
129
-    public function save($first = false)
130
-    {
131
-        $object_vars = get_object_vars($this);
132
-        if ($first) {
133
-            return add_option($this->option_name(), $object_vars, null, 'no');
134
-        } else {
135
-            return update_option($this->option_name(), $object_vars);
136
-        }
137
-    }
138
-
139
-
140
-    /**
141
-     * Deletes the job from teh database, although this object is still usable
142
-     * for the rest of the request
143
-     *
144
-     * @return boolean
145
-     */
146
-    public function delete()
147
-    {
148
-        return delete_option($this->option_name());
149
-    }
150
-
151
-
152
-    /**
153
-     * Loads the specified job from the database
154
-     *
155
-     * @param string $job_id
156
-     * @return JobParameters
157
-     * @throws BatchRequestException
158
-     */
159
-    public static function load($job_id)
160
-    {
161
-        $job_parameter_vars = get_option(JobParameters::wp_option_prefix . $job_id);
162
-        if (! is_array($job_parameter_vars) ||
163
-            ! isset($job_parameter_vars['_classname']) ||
164
-            ! isset($job_parameter_vars['_request_data'])
165
-        ) {
166
-            throw new BatchRequestException(
167
-                sprintf(
168
-                    __(
169
-                        'Could not retrieve job %1$s from the Wordpress options table, and so the job could not continue. The wordpress option was %2$s',
170
-                        'event_espresso'
171
-                    ),
172
-                    $job_id,
173
-                    get_option(JobParameters::wp_option_prefix . $job_id)
174
-                )
175
-            );
176
-        }
177
-        $job_parameters = new JobParameters(
178
-            $job_id,
179
-            $job_parameter_vars['_classname'],
180
-            $job_parameter_vars['_request_data']
181
-        );
182
-        foreach ($job_parameter_vars as $key => $value) {
183
-            $job_parameters->{$key} = $value;
184
-        }
185
-        return $job_parameters;
186
-    }
187
-
188
-
189
-    /**
190
-     * Gets the job's unique string
191
-     *
192
-     * @return string
193
-     */
194
-    public function job_id()
195
-    {
196
-        return $this->_job_id;
197
-    }
198
-
199
-
200
-    /**
201
-     * Gets the classname that should run this job
202
-     *
203
-     * @return string
204
-     */
205
-    public function classname()
206
-    {
207
-        return $this->_classname;
208
-    }
209
-
210
-
211
-    /**
212
-     * Gets the original array of $_REQUEST data for this job
213
-     *
214
-     * @return array
215
-     */
216
-    public function request_data()
217
-    {
218
-        return $this->_request_data;
219
-    }
220
-
221
-
222
-    /**
223
-     * Gets a single item from the request data
224
-     *
225
-     * @param string       $key
226
-     * @param string|array $default
227
-     * @return string|array
228
-     */
229
-    public function request_datum($key, $default = '')
230
-    {
231
-        if (isset($this->_request_data[ $key ])) {
232
-            return $this->_request_data[ $key ];
233
-        } else {
234
-            return $default;
235
-        }
236
-    }
237
-
238
-
239
-    /**
240
-     * Gets a single item from the extra data
241
-     *
242
-     * @param string       $key
243
-     * @param string|array $default
244
-     * @return string|array
245
-     */
246
-    public function extra_datum($key, $default = '')
247
-    {
248
-        if (isset($this->_extra_data[ $key ])) {
249
-            return $this->_extra_data[ $key ];
250
-        } else {
251
-            return $default;
252
-        }
253
-    }
254
-
255
-
256
-    /**
257
-     * Adds an extra piece of extra data that we're going to want later during the job
258
-     *
259
-     * @param string                $key
260
-     * @param string|int|array|null $value almost any extra data you want to store
261
-     */
262
-    public function add_extra_data($key, $value)
263
-    {
264
-        $this->_extra_data[ $key ] = $value;
265
-    }
266
-
267
-
268
-    /**
269
-     * Array of any extra data we want to store
270
-     *
271
-     * @return array
272
-     */
273
-    public function extra_data()
274
-    {
275
-        return $this->_extra_data;
276
-    }
277
-
278
-
279
-    /**
280
-     * Returns the job size, in whatever units you want
281
-     *
282
-     * @return int
283
-     */
284
-    public function job_size()
285
-    {
286
-        return $this->_job_size;
287
-    }
288
-
289
-
290
-    /**
291
-     * Sets the job size. You decide what units to use
292
-     *
293
-     * @param int $size
294
-     */
295
-    public function set_job_size($size)
296
-    {
297
-        $this->_job_size = $size;
298
-    }
299
-
300
-
301
-    /**
302
-     * The number of "units" processed, in the same units as the "job size"
303
-     *
304
-     * @return int
305
-     */
306
-    public function units_processed()
307
-    {
308
-        return $this->_units_processed;
309
-    }
310
-
311
-
312
-    /**
313
-     * Marks more units as processed
314
-     *
315
-     * @param int $newly_processed
316
-     * @return int updated units processed
317
-     */
318
-    public function mark_processed($newly_processed)
319
-    {
320
-        $this->_units_processed += $newly_processed;
321
-        return $this->_units_processed;
322
-    }
323
-
324
-
325
-    /**
326
-     * Sets the total count of units processed. You might prefer to use mark_processed
327
-     *
328
-     * @param int $total_units_processed
329
-     */
330
-    public function set_units_processed($total_units_processed)
331
-    {
332
-        $this->_units_processed = $total_units_processed;
333
-    }
334
-
335
-
336
-    /**
337
-     * Sets the job's ID
338
-     *
339
-     * @param string $job_id
340
-     */
341
-    public function set_job_id($job_id)
342
-    {
343
-        $this->_job_id = $job_id;
344
-    }
345
-
346
-
347
-    /**
348
-     * sets the classname
349
-     *
350
-     * @param string $classname
351
-     */
352
-    public function set_classname($classname)
353
-    {
354
-        $this->_classname = $classname;
355
-    }
356
-
357
-
358
-    /**
359
-     * Sets the request data
360
-     *
361
-     * @param array $request_data
362
-     */
363
-    public function set_request_data($request_data)
364
-    {
365
-        $this->_request_data = $request_data;
366
-    }
367
-
368
-
369
-    /**
370
-     * Sets the array of extra data we want to store on this request
371
-     *
372
-     * @param array $extra_data
373
-     */
374
-    public function set_extra_data($extra_data)
375
-    {
376
-        $this->_extra_data = $extra_data;
377
-    }
378
-
379
-
380
-    /**
381
-     * Gets the name of the wordpress option that should store these job parameters
382
-     *
383
-     * @return string
384
-     */
385
-    public function option_name()
386
-    {
387
-        return JobParameters::wp_option_prefix . $this->job_id();
388
-    }
389
-
390
-
391
-    /**
392
-     * Gets the job\s current status. One of JobParameters::valid_stati();
393
-     *
394
-     * @return string
395
-     */
396
-    public function status()
397
-    {
398
-        return $this->_status;
399
-    }
400
-
401
-
402
-    /**
403
-     * @param string $status on eof JobParameters::valid_stati()
404
-     */
405
-    public function set_status($status)
406
-    {
407
-        $this->_status = $status;
408
-    }
17
+	// phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
18
+	// phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
19
+	// phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
20
+	/**
21
+	 * status indicating the job should continue
22
+	 */
23
+	const status_continue = 'continue';
24
+
25
+	/**
26
+	 * status indicated the job has been completed successfully and should be cleaned up next
27
+	 */
28
+	const status_complete = 'complete';
29
+
30
+	/**
31
+	 * status indicating there was an error and the job should be cleaned up
32
+	 */
33
+	const status_error = 'error';
34
+
35
+	/**
36
+	 * status indicating the job has been cleaned up, and so this is probably the last
37
+	 * time you'll see this job
38
+	 */
39
+	const status_cleaned_up = 'cleaned_up';
40
+
41
+	const wp_option_prefix = 'ee_job_parameters_';
42
+
43
+
44
+	/**
45
+	 * String uniquely identifying the job
46
+	 *
47
+	 * @var string
48
+	 */
49
+	protected $_job_id;
50
+
51
+	/**
52
+	 * @var string
53
+	 */
54
+	protected $_classname;
55
+
56
+	/**
57
+	 * @var array
58
+	 */
59
+	protected $_request_data;
60
+
61
+	/**
62
+	 * Array of any extra data we want to remember about this request, that
63
+	 * wasn't necessarily past in with the request data
64
+	 *
65
+	 * @var array
66
+	 */
67
+	protected $_extra_data;
68
+
69
+	/**
70
+	 * Estimate of how many units HAVE been processed
71
+	 *
72
+	 * @var int
73
+	 */
74
+	protected $_units_processed = 0;
75
+
76
+	/**
77
+	 * @var string
78
+	 */
79
+	protected $_status;
80
+
81
+	/**
82
+	 * The size of the total job in whatever units you want.
83
+	 * If you can't provide an estimate leave as 0.
84
+	 * Once _units_processed equals _job_size, we should be done
85
+	 *
86
+	 * @var int
87
+	 */
88
+	protected $_job_size = 0;
89
+
90
+
91
+	/**
92
+	 * @param string $job_id
93
+	 * @param string $classname
94
+	 * @param array  $request_data
95
+	 * @param array  $extra_data
96
+	 */
97
+	public function __construct($job_id, $classname, $request_data, $extra_data = array())
98
+	{
99
+		$this->set_job_id($job_id);
100
+		$this->set_classname($classname);
101
+		$this->set_request_data($request_data);
102
+		$this->set_extra_data($extra_data);
103
+		$this->set_status(JobParameters::status_continue);
104
+	}
105
+
106
+
107
+	/**
108
+	 * Returns the array of strings of valid stati
109
+	 *
110
+	 * @return array
111
+	 */
112
+	public static function valid_stati()
113
+	{
114
+		return array(
115
+			JobParameters::status_complete,
116
+			JobParameters::status_continue,
117
+			JobParameters::status_error,
118
+			JobParameters::status_cleaned_up,
119
+		);
120
+	}
121
+
122
+
123
+	/**
124
+	 * Saves this option to the database (wordpress options table)
125
+	 *
126
+	 * @param boolean $first
127
+	 * @return boolean success
128
+	 */
129
+	public function save($first = false)
130
+	{
131
+		$object_vars = get_object_vars($this);
132
+		if ($first) {
133
+			return add_option($this->option_name(), $object_vars, null, 'no');
134
+		} else {
135
+			return update_option($this->option_name(), $object_vars);
136
+		}
137
+	}
138
+
139
+
140
+	/**
141
+	 * Deletes the job from teh database, although this object is still usable
142
+	 * for the rest of the request
143
+	 *
144
+	 * @return boolean
145
+	 */
146
+	public function delete()
147
+	{
148
+		return delete_option($this->option_name());
149
+	}
150
+
151
+
152
+	/**
153
+	 * Loads the specified job from the database
154
+	 *
155
+	 * @param string $job_id
156
+	 * @return JobParameters
157
+	 * @throws BatchRequestException
158
+	 */
159
+	public static function load($job_id)
160
+	{
161
+		$job_parameter_vars = get_option(JobParameters::wp_option_prefix . $job_id);
162
+		if (! is_array($job_parameter_vars) ||
163
+			! isset($job_parameter_vars['_classname']) ||
164
+			! isset($job_parameter_vars['_request_data'])
165
+		) {
166
+			throw new BatchRequestException(
167
+				sprintf(
168
+					__(
169
+						'Could not retrieve job %1$s from the Wordpress options table, and so the job could not continue. The wordpress option was %2$s',
170
+						'event_espresso'
171
+					),
172
+					$job_id,
173
+					get_option(JobParameters::wp_option_prefix . $job_id)
174
+				)
175
+			);
176
+		}
177
+		$job_parameters = new JobParameters(
178
+			$job_id,
179
+			$job_parameter_vars['_classname'],
180
+			$job_parameter_vars['_request_data']
181
+		);
182
+		foreach ($job_parameter_vars as $key => $value) {
183
+			$job_parameters->{$key} = $value;
184
+		}
185
+		return $job_parameters;
186
+	}
187
+
188
+
189
+	/**
190
+	 * Gets the job's unique string
191
+	 *
192
+	 * @return string
193
+	 */
194
+	public function job_id()
195
+	{
196
+		return $this->_job_id;
197
+	}
198
+
199
+
200
+	/**
201
+	 * Gets the classname that should run this job
202
+	 *
203
+	 * @return string
204
+	 */
205
+	public function classname()
206
+	{
207
+		return $this->_classname;
208
+	}
209
+
210
+
211
+	/**
212
+	 * Gets the original array of $_REQUEST data for this job
213
+	 *
214
+	 * @return array
215
+	 */
216
+	public function request_data()
217
+	{
218
+		return $this->_request_data;
219
+	}
220
+
221
+
222
+	/**
223
+	 * Gets a single item from the request data
224
+	 *
225
+	 * @param string       $key
226
+	 * @param string|array $default
227
+	 * @return string|array
228
+	 */
229
+	public function request_datum($key, $default = '')
230
+	{
231
+		if (isset($this->_request_data[ $key ])) {
232
+			return $this->_request_data[ $key ];
233
+		} else {
234
+			return $default;
235
+		}
236
+	}
237
+
238
+
239
+	/**
240
+	 * Gets a single item from the extra data
241
+	 *
242
+	 * @param string       $key
243
+	 * @param string|array $default
244
+	 * @return string|array
245
+	 */
246
+	public function extra_datum($key, $default = '')
247
+	{
248
+		if (isset($this->_extra_data[ $key ])) {
249
+			return $this->_extra_data[ $key ];
250
+		} else {
251
+			return $default;
252
+		}
253
+	}
254
+
255
+
256
+	/**
257
+	 * Adds an extra piece of extra data that we're going to want later during the job
258
+	 *
259
+	 * @param string                $key
260
+	 * @param string|int|array|null $value almost any extra data you want to store
261
+	 */
262
+	public function add_extra_data($key, $value)
263
+	{
264
+		$this->_extra_data[ $key ] = $value;
265
+	}
266
+
267
+
268
+	/**
269
+	 * Array of any extra data we want to store
270
+	 *
271
+	 * @return array
272
+	 */
273
+	public function extra_data()
274
+	{
275
+		return $this->_extra_data;
276
+	}
277
+
278
+
279
+	/**
280
+	 * Returns the job size, in whatever units you want
281
+	 *
282
+	 * @return int
283
+	 */
284
+	public function job_size()
285
+	{
286
+		return $this->_job_size;
287
+	}
288
+
289
+
290
+	/**
291
+	 * Sets the job size. You decide what units to use
292
+	 *
293
+	 * @param int $size
294
+	 */
295
+	public function set_job_size($size)
296
+	{
297
+		$this->_job_size = $size;
298
+	}
299
+
300
+
301
+	/**
302
+	 * The number of "units" processed, in the same units as the "job size"
303
+	 *
304
+	 * @return int
305
+	 */
306
+	public function units_processed()
307
+	{
308
+		return $this->_units_processed;
309
+	}
310
+
311
+
312
+	/**
313
+	 * Marks more units as processed
314
+	 *
315
+	 * @param int $newly_processed
316
+	 * @return int updated units processed
317
+	 */
318
+	public function mark_processed($newly_processed)
319
+	{
320
+		$this->_units_processed += $newly_processed;
321
+		return $this->_units_processed;
322
+	}
323
+
324
+
325
+	/**
326
+	 * Sets the total count of units processed. You might prefer to use mark_processed
327
+	 *
328
+	 * @param int $total_units_processed
329
+	 */
330
+	public function set_units_processed($total_units_processed)
331
+	{
332
+		$this->_units_processed = $total_units_processed;
333
+	}
334
+
335
+
336
+	/**
337
+	 * Sets the job's ID
338
+	 *
339
+	 * @param string $job_id
340
+	 */
341
+	public function set_job_id($job_id)
342
+	{
343
+		$this->_job_id = $job_id;
344
+	}
345
+
346
+
347
+	/**
348
+	 * sets the classname
349
+	 *
350
+	 * @param string $classname
351
+	 */
352
+	public function set_classname($classname)
353
+	{
354
+		$this->_classname = $classname;
355
+	}
356
+
357
+
358
+	/**
359
+	 * Sets the request data
360
+	 *
361
+	 * @param array $request_data
362
+	 */
363
+	public function set_request_data($request_data)
364
+	{
365
+		$this->_request_data = $request_data;
366
+	}
367
+
368
+
369
+	/**
370
+	 * Sets the array of extra data we want to store on this request
371
+	 *
372
+	 * @param array $extra_data
373
+	 */
374
+	public function set_extra_data($extra_data)
375
+	{
376
+		$this->_extra_data = $extra_data;
377
+	}
378
+
379
+
380
+	/**
381
+	 * Gets the name of the wordpress option that should store these job parameters
382
+	 *
383
+	 * @return string
384
+	 */
385
+	public function option_name()
386
+	{
387
+		return JobParameters::wp_option_prefix . $this->job_id();
388
+	}
389
+
390
+
391
+	/**
392
+	 * Gets the job\s current status. One of JobParameters::valid_stati();
393
+	 *
394
+	 * @return string
395
+	 */
396
+	public function status()
397
+	{
398
+		return $this->_status;
399
+	}
400
+
401
+
402
+	/**
403
+	 * @param string $status on eof JobParameters::valid_stati()
404
+	 */
405
+	public function set_status($status)
406
+	{
407
+		$this->_status = $status;
408
+	}
409 409
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -158,8 +158,8 @@  discard block
 block discarded – undo
158 158
      */
159 159
     public static function load($job_id)
160 160
     {
161
-        $job_parameter_vars = get_option(JobParameters::wp_option_prefix . $job_id);
162
-        if (! is_array($job_parameter_vars) ||
161
+        $job_parameter_vars = get_option(JobParameters::wp_option_prefix.$job_id);
162
+        if ( ! is_array($job_parameter_vars) ||
163 163
             ! isset($job_parameter_vars['_classname']) ||
164 164
             ! isset($job_parameter_vars['_request_data'])
165 165
         ) {
@@ -170,7 +170,7 @@  discard block
 block discarded – undo
170 170
                         'event_espresso'
171 171
                     ),
172 172
                     $job_id,
173
-                    get_option(JobParameters::wp_option_prefix . $job_id)
173
+                    get_option(JobParameters::wp_option_prefix.$job_id)
174 174
                 )
175 175
             );
176 176
         }
@@ -228,8 +228,8 @@  discard block
 block discarded – undo
228 228
      */
229 229
     public function request_datum($key, $default = '')
230 230
     {
231
-        if (isset($this->_request_data[ $key ])) {
232
-            return $this->_request_data[ $key ];
231
+        if (isset($this->_request_data[$key])) {
232
+            return $this->_request_data[$key];
233 233
         } else {
234 234
             return $default;
235 235
         }
@@ -245,8 +245,8 @@  discard block
 block discarded – undo
245 245
      */
246 246
     public function extra_datum($key, $default = '')
247 247
     {
248
-        if (isset($this->_extra_data[ $key ])) {
249
-            return $this->_extra_data[ $key ];
248
+        if (isset($this->_extra_data[$key])) {
249
+            return $this->_extra_data[$key];
250 250
         } else {
251 251
             return $default;
252 252
         }
@@ -261,7 +261,7 @@  discard block
 block discarded – undo
261 261
      */
262 262
     public function add_extra_data($key, $value)
263 263
     {
264
-        $this->_extra_data[ $key ] = $value;
264
+        $this->_extra_data[$key] = $value;
265 265
     }
266 266
 
267 267
 
@@ -384,7 +384,7 @@  discard block
 block discarded – undo
384 384
      */
385 385
     public function option_name()
386 386
     {
387
-        return JobParameters::wp_option_prefix . $this->job_id();
387
+        return JobParameters::wp_option_prefix.$this->job_id();
388 388
     }
389 389
 
390 390
 
Please login to merge, or discard this patch.
core/libraries/batch/Helpers/JobStepResponse.php 1 patch
Indentation   +84 added lines, -84 removed lines patch added patch discarded remove patch
@@ -13,99 +13,99 @@
 block discarded – undo
13 13
  */
14 14
 class JobStepResponse
15 15
 {
16
-    // phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
17
-    /**
18
-     * Description fo what happened during this step
19
-     *
20
-     * @var string
21
-     */
22
-    protected $_update_text;
16
+	// phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
17
+	/**
18
+	 * Description fo what happened during this step
19
+	 *
20
+	 * @var string
21
+	 */
22
+	protected $_update_text;
23 23
 
24
-    /**
25
-     * @var JobParameters
26
-     */
27
-    protected $_job_parameters;
24
+	/**
25
+	 * @var JobParameters
26
+	 */
27
+	protected $_job_parameters;
28 28
 
29
-    /**
30
-     * Extra data to include as part of the response.
31
-     *
32
-     * @var array
33
-     */
34
-    protected $_extra_data = array();
35
-    // phpcs:enable
29
+	/**
30
+	 * Extra data to include as part of the response.
31
+	 *
32
+	 * @var array
33
+	 */
34
+	protected $_extra_data = array();
35
+	// phpcs:enable
36 36
 
37
-    // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
38
-    /**
39
-     * @param \EventEspressoBatchRequest\Helpers\JobParameters $job_parameters
40
-     * @param string                                           $update_text
41
-     * @param array                                            $extra_data
42
-     */
43
-    public function __construct(JobParameters $job_parameters, $update_text, $extra_data = array())
44
-    {
45
-        $this->_job_parameters = $job_parameters;
46
-        $this->_update_text = $update_text;
47
-        $this->_extra_data = (array) $extra_data;
48
-    }
37
+	// phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps
38
+	/**
39
+	 * @param \EventEspressoBatchRequest\Helpers\JobParameters $job_parameters
40
+	 * @param string                                           $update_text
41
+	 * @param array                                            $extra_data
42
+	 */
43
+	public function __construct(JobParameters $job_parameters, $update_text, $extra_data = array())
44
+	{
45
+		$this->_job_parameters = $job_parameters;
46
+		$this->_update_text = $update_text;
47
+		$this->_extra_data = (array) $extra_data;
48
+	}
49 49
 
50 50
 
51
-    /**
52
-     * @return JobParameters
53
-     */
54
-    public function job_parameters()
55
-    {
56
-        return $this->_job_parameters;
57
-    }
51
+	/**
52
+	 * @return JobParameters
53
+	 */
54
+	public function job_parameters()
55
+	{
56
+		return $this->_job_parameters;
57
+	}
58 58
 
59 59
 
60
-    /**
61
-     * Gets the update_text of what happened in this job during the current step
62
-     *
63
-     * @return string
64
-     */
65
-    public function update_text()
66
-    {
67
-        return $this->_update_text;
68
-    }
60
+	/**
61
+	 * Gets the update_text of what happened in this job during the current step
62
+	 *
63
+	 * @return string
64
+	 */
65
+	public function update_text()
66
+	{
67
+		return $this->_update_text;
68
+	}
69 69
 
70 70
 
71
-    /**
72
-     * Returns any extra data we may want to include with this response
73
-     *
74
-     * @return array
75
-     */
76
-    public function extra_data()
77
-    {
78
-        return $this->_extra_data;
79
-    }
71
+	/**
72
+	 * Returns any extra data we may want to include with this response
73
+	 *
74
+	 * @return array
75
+	 */
76
+	public function extra_data()
77
+	{
78
+		return $this->_extra_data;
79
+	}
80 80
 
81 81
 
82
-    /**
83
-     * Converts this response into an array that can be easily serialized.
84
-     * This is most useful for serializing or json encoding
85
-     *
86
-     * @return array {
87
-     * @type string $status          , one of JobParameters::valid_stati()
88
-     * @type int    $units_processed count of units processed
89
-     * @type int    $job_size        total number of units TO process
90
-     * @type string $job_id          unique string identifying the job
91
-     * @type string $update_text     string describing what happened during this step
92
-     * } and any other items from $this->extra_data()
93
-     */
94
-    public function to_array()
95
-    {
96
-        return apply_filters(
97
-            'FHEE__EventEspressoBatchRequest\Helpers\JobStepResponse__to_array__return',
98
-            array_merge(
99
-                $this->extra_data(),
100
-                array(
101
-                    'status'          => $this->job_parameters()->status(),
102
-                    'units_processed' => $this->job_parameters()->units_processed(),
103
-                    'job_size'        => $this->job_parameters()->job_size(),
104
-                    'job_id'          => $this->job_parameters()->job_id(),
105
-                    'update_text'     => $this->update_text(),
106
-                )
107
-            ),
108
-            $this
109
-        );
110
-    }
82
+	/**
83
+	 * Converts this response into an array that can be easily serialized.
84
+	 * This is most useful for serializing or json encoding
85
+	 *
86
+	 * @return array {
87
+	 * @type string $status          , one of JobParameters::valid_stati()
88
+	 * @type int    $units_processed count of units processed
89
+	 * @type int    $job_size        total number of units TO process
90
+	 * @type string $job_id          unique string identifying the job
91
+	 * @type string $update_text     string describing what happened during this step
92
+	 * } and any other items from $this->extra_data()
93
+	 */
94
+	public function to_array()
95
+	{
96
+		return apply_filters(
97
+			'FHEE__EventEspressoBatchRequest\Helpers\JobStepResponse__to_array__return',
98
+			array_merge(
99
+				$this->extra_data(),
100
+				array(
101
+					'status'          => $this->job_parameters()->status(),
102
+					'units_processed' => $this->job_parameters()->units_processed(),
103
+					'job_size'        => $this->job_parameters()->job_size(),
104
+					'job_id'          => $this->job_parameters()->job_id(),
105
+					'update_text'     => $this->update_text(),
106
+				)
107
+			),
108
+			$this
109
+		);
110
+	}
111 111
 }
Please login to merge, or discard this patch.
core/libraries/form_sections/strategies/filter/VsprintfFilter.php 1 patch
Indentation   +41 added lines, -41 removed lines patch added patch discarded remove patch
@@ -19,45 +19,45 @@
 block discarded – undo
19 19
 class VsprintfFilter extends FormHtmlFilter
20 20
 {
21 21
 
22
-    /**
23
-     * @var string $format
24
-     */
25
-    protected $format = '';
26
-
27
-
28
-    /**
29
-     * @var array $args
30
-     */
31
-    protected $args = array();
32
-
33
-
34
-    /**
35
-     * VsprintfFilter constructor.
36
-     *
37
-     * @param string $format
38
-     * @param array  $args
39
-     */
40
-    public function __construct($format, array $args)
41
-    {
42
-        $this->format = $format;
43
-        $this->args = $args;
44
-    }
45
-
46
-
47
-    /**
48
-     * @param                             $html
49
-     * @param EE_Form_Section_Validatable $form_section
50
-     * @return string
51
-     */
52
-    public function filterHtml($html, EE_Form_Section_Validatable $form_section)
53
-    {
54
-        $this->args[] = $html;
55
-        if ($form_section instanceof EE_Form_Section_Proper) {
56
-            $subsections = $form_section->subsections();
57
-            foreach ((array) $subsections as $subsection) {
58
-                $this->args[] = $subsection->get_html();
59
-            }
60
-        }
61
-        return vsprintf($this->format, $this->args);
62
-    }
22
+	/**
23
+	 * @var string $format
24
+	 */
25
+	protected $format = '';
26
+
27
+
28
+	/**
29
+	 * @var array $args
30
+	 */
31
+	protected $args = array();
32
+
33
+
34
+	/**
35
+	 * VsprintfFilter constructor.
36
+	 *
37
+	 * @param string $format
38
+	 * @param array  $args
39
+	 */
40
+	public function __construct($format, array $args)
41
+	{
42
+		$this->format = $format;
43
+		$this->args = $args;
44
+	}
45
+
46
+
47
+	/**
48
+	 * @param                             $html
49
+	 * @param EE_Form_Section_Validatable $form_section
50
+	 * @return string
51
+	 */
52
+	public function filterHtml($html, EE_Form_Section_Validatable $form_section)
53
+	{
54
+		$this->args[] = $html;
55
+		if ($form_section instanceof EE_Form_Section_Proper) {
56
+			$subsections = $form_section->subsections();
57
+			foreach ((array) $subsections as $subsection) {
58
+				$this->args[] = $subsection->get_html();
59
+			}
60
+		}
61
+		return vsprintf($this->format, $this->args);
62
+	}
63 63
 }
Please login to merge, or discard this patch.
core/domain/entities/custom_post_types/CustomPostTypeDefinitions.php 2 patches
Indentation   +263 added lines, -263 removed lines patch added patch discarded remove patch
@@ -17,287 +17,287 @@
 block discarded – undo
17 17
 class CustomPostTypeDefinitions
18 18
 {
19 19
 
20
-    /**
21
-     * @var EE_Core_Config
22
-     */
23
-    public $core_config;
20
+	/**
21
+	 * @var EE_Core_Config
22
+	 */
23
+	public $core_config;
24 24
 
25
-    /**
26
-     * @var array $custom_post_types
27
-     */
28
-    private $custom_post_types;
25
+	/**
26
+	 * @var array $custom_post_types
27
+	 */
28
+	private $custom_post_types;
29 29
 
30
-    /**
31
-     * @var LoaderInterface $loader
32
-     */
33
-    private $loader;
30
+	/**
31
+	 * @var LoaderInterface $loader
32
+	 */
33
+	private $loader;
34 34
 
35 35
 
36
-    /**
37
-     * EspressoCustomPostTypeDefinitions constructor.
38
-     *
39
-     * @param EE_Core_Config  $core_config
40
-     * @param LoaderInterface $loader
41
-     */
42
-    public function __construct(EE_Core_Config $core_config, LoaderInterface $loader)
43
-    {
44
-        $this->core_config = $core_config;
45
-        $this->loader = $loader;
46
-        $this->setDefinitions();
47
-    }
36
+	/**
37
+	 * EspressoCustomPostTypeDefinitions constructor.
38
+	 *
39
+	 * @param EE_Core_Config  $core_config
40
+	 * @param LoaderInterface $loader
41
+	 */
42
+	public function __construct(EE_Core_Config $core_config, LoaderInterface $loader)
43
+	{
44
+		$this->core_config = $core_config;
45
+		$this->loader = $loader;
46
+		$this->setDefinitions();
47
+	}
48 48
 
49 49
 
50
-    /**
51
-     * defines Espresso Custom Post Types
52
-     * NOTE the ['args']['page_templates'] array index is something specific to our CPTs
53
-     * and not part of the WP custom post type api.
54
-     *
55
-     * @return void
56
-     */
57
-    private function setDefinitions()
58
-    {
59
-        $this->custom_post_types = array(
60
-            'espresso_events'    => array(
61
-                'singular_name' => esc_html__('Event', 'event_espresso'),
62
-                'plural_name'   => esc_html__('Events', 'event_espresso'),
63
-                'singular_slug' => esc_html__('event', 'event_espresso'),
64
-                'plural_slug'   => $this->core_config->event_cpt_slug,
65
-                'class_name'    => 'EE_Event',
66
-                'model_name'    => 'EEM_Event',
67
-                'args'          => array(
68
-                    'public'            => true,
69
-                    'show_in_nav_menus' => true,
70
-                    'capability_type'   => 'event',
71
-                    'capabilities'      => array(
72
-                        'edit_post'              => 'ee_edit_event',
73
-                        'read_post'              => 'ee_read_event',
74
-                        'delete_post'            => 'ee_delete_event',
75
-                        'edit_posts'             => 'ee_edit_events',
76
-                        'edit_others_posts'      => 'ee_edit_others_events',
77
-                        'publish_posts'          => 'ee_publish_events',
78
-                        'read_private_posts'     => 'ee_read_private_events',
79
-                        'delete_posts'           => 'ee_delete_events',
80
-                        'delete_private_posts'   => 'ee_delete_private_events',
81
-                        'delete_published_posts' => 'ee_delete_published_events',
82
-                        'delete_others_posts'    => 'ee_delete_others_events',
83
-                        'edit_private_posts'     => 'ee_edit_private_events',
84
-                        'edit_published_posts'   => 'ee_edit_published_events',
85
-                    ),
86
-                    'taxonomies'        => array(
87
-                        'espresso_event_categories',
88
-                        'espresso_event_type',
89
-                        'post_tag',
90
-                    ),
91
-                    'page_templates'    => true,
92
-                ),
93
-            ),
94
-            'espresso_venues'    => array(
95
-                'singular_name' => esc_html__('Venue', 'event_espresso'),
96
-                'plural_name'   => esc_html__('Venues', 'event_espresso'),
97
-                'singular_slug' => esc_html__('venue', 'event_espresso'),
98
-                'plural_slug'   => esc_html__('venues', 'event_espresso'),
99
-                'class_name'    => 'EE_Venue',
100
-                'model_name'    => 'EEM_Venue',
101
-                'args'          => array(
102
-                    'public'            => true,
103
-                    'show_in_nav_menus' => false, // by default this doesn't show for decaf,
104
-                    'capability_type'   => 'venue',
105
-                    'capabilities'      => array(
106
-                        'edit_post'              => 'ee_edit_venue',
107
-                        'read_post'              => 'ee_read_venue',
108
-                        'delete_post'            => 'ee_delete_venue',
109
-                        'edit_posts'             => 'ee_edit_venues',
110
-                        'edit_others_posts'      => 'ee_edit_others_venues',
111
-                        'publish_posts'          => 'ee_publish_venues',
112
-                        'read_private_posts'     => 'ee_read_private_venues',
113
-                        'delete_posts'           => 'ee_delete_venues',
114
-                        'delete_private_posts'   => 'ee_delete_private_venues',
115
-                        'delete_published_posts' => 'ee_delete_published_venues',
116
-                        'delete_others_posts'    => 'ee_edit_others_venues',
117
-                        'edit_private_posts'     => 'ee_edit_private_venues',
118
-                        'edit_published_posts'   => 'ee_edit_published_venues',
119
-                    ),
120
-                    'taxonomies'        => array(
121
-                        'espresso_venue_categories',
122
-                        'post_tag',
123
-                    ),
124
-                    'page_templates'    => true,
125
-                ),
126
-            ),
127
-            'espresso_attendees' => array(
128
-                'singular_name' => esc_html__('Contact', 'event_espresso'),
129
-                'plural_name'   => esc_html__('Contacts', 'event_espresso'),
130
-                'singular_slug' => esc_html__('contact', 'event_espresso'),
131
-                'plural_slug'   => esc_html__('contacts', 'event_espresso'),
132
-                'class_name'    => 'EE_Attendee',
133
-                'model_name'    => 'EEM_Attendee',
134
-                'args'          => array(
135
-                    'public'             => false,
136
-                    'publicly_queryable' => false,
137
-                    'hierarchical'       => false,
138
-                    'has_archive'        => false,
139
-                    'supports'           => array(
140
-                        'editor',
141
-                        'thumbnail',
142
-                        'excerpt',
143
-                        'custom-fields',
144
-                        'comments',
145
-                    ),
146
-                    'taxonomies'         => array('post_tag'),
147
-                    'capability_type'    => 'contact',
148
-                    'capabilities'       => array(
149
-                        'edit_post'              => 'ee_edit_contact',
150
-                        'read_post'              => 'ee_read_contact',
151
-                        'delete_post'            => 'ee_delete_contact',
152
-                        'edit_posts'             => 'ee_edit_contacts',
153
-                        'edit_others_posts'      => 'ee_edit_contacts',
154
-                        'publish_posts'          => 'ee_edit_contacts',
155
-                        'read_private_posts'     => 'ee_edit_contacts',
156
-                        'delete_posts'           => 'ee_delete_contacts',
157
-                        'delete_private_posts'   => 'ee_delete_contacts',
158
-                        'delete_published_posts' => 'ee_delete_contacts',
159
-                        'delete_others_posts'    => 'ee_delete_contacts',
160
-                        'edit_private_posts'     => 'ee_edit_contacts',
161
-                        'edit_published_posts'   => 'ee_edit_contacts',
162
-                    ),
163
-                ),
164
-            ),
165
-        );
166
-    }
50
+	/**
51
+	 * defines Espresso Custom Post Types
52
+	 * NOTE the ['args']['page_templates'] array index is something specific to our CPTs
53
+	 * and not part of the WP custom post type api.
54
+	 *
55
+	 * @return void
56
+	 */
57
+	private function setDefinitions()
58
+	{
59
+		$this->custom_post_types = array(
60
+			'espresso_events'    => array(
61
+				'singular_name' => esc_html__('Event', 'event_espresso'),
62
+				'plural_name'   => esc_html__('Events', 'event_espresso'),
63
+				'singular_slug' => esc_html__('event', 'event_espresso'),
64
+				'plural_slug'   => $this->core_config->event_cpt_slug,
65
+				'class_name'    => 'EE_Event',
66
+				'model_name'    => 'EEM_Event',
67
+				'args'          => array(
68
+					'public'            => true,
69
+					'show_in_nav_menus' => true,
70
+					'capability_type'   => 'event',
71
+					'capabilities'      => array(
72
+						'edit_post'              => 'ee_edit_event',
73
+						'read_post'              => 'ee_read_event',
74
+						'delete_post'            => 'ee_delete_event',
75
+						'edit_posts'             => 'ee_edit_events',
76
+						'edit_others_posts'      => 'ee_edit_others_events',
77
+						'publish_posts'          => 'ee_publish_events',
78
+						'read_private_posts'     => 'ee_read_private_events',
79
+						'delete_posts'           => 'ee_delete_events',
80
+						'delete_private_posts'   => 'ee_delete_private_events',
81
+						'delete_published_posts' => 'ee_delete_published_events',
82
+						'delete_others_posts'    => 'ee_delete_others_events',
83
+						'edit_private_posts'     => 'ee_edit_private_events',
84
+						'edit_published_posts'   => 'ee_edit_published_events',
85
+					),
86
+					'taxonomies'        => array(
87
+						'espresso_event_categories',
88
+						'espresso_event_type',
89
+						'post_tag',
90
+					),
91
+					'page_templates'    => true,
92
+				),
93
+			),
94
+			'espresso_venues'    => array(
95
+				'singular_name' => esc_html__('Venue', 'event_espresso'),
96
+				'plural_name'   => esc_html__('Venues', 'event_espresso'),
97
+				'singular_slug' => esc_html__('venue', 'event_espresso'),
98
+				'plural_slug'   => esc_html__('venues', 'event_espresso'),
99
+				'class_name'    => 'EE_Venue',
100
+				'model_name'    => 'EEM_Venue',
101
+				'args'          => array(
102
+					'public'            => true,
103
+					'show_in_nav_menus' => false, // by default this doesn't show for decaf,
104
+					'capability_type'   => 'venue',
105
+					'capabilities'      => array(
106
+						'edit_post'              => 'ee_edit_venue',
107
+						'read_post'              => 'ee_read_venue',
108
+						'delete_post'            => 'ee_delete_venue',
109
+						'edit_posts'             => 'ee_edit_venues',
110
+						'edit_others_posts'      => 'ee_edit_others_venues',
111
+						'publish_posts'          => 'ee_publish_venues',
112
+						'read_private_posts'     => 'ee_read_private_venues',
113
+						'delete_posts'           => 'ee_delete_venues',
114
+						'delete_private_posts'   => 'ee_delete_private_venues',
115
+						'delete_published_posts' => 'ee_delete_published_venues',
116
+						'delete_others_posts'    => 'ee_edit_others_venues',
117
+						'edit_private_posts'     => 'ee_edit_private_venues',
118
+						'edit_published_posts'   => 'ee_edit_published_venues',
119
+					),
120
+					'taxonomies'        => array(
121
+						'espresso_venue_categories',
122
+						'post_tag',
123
+					),
124
+					'page_templates'    => true,
125
+				),
126
+			),
127
+			'espresso_attendees' => array(
128
+				'singular_name' => esc_html__('Contact', 'event_espresso'),
129
+				'plural_name'   => esc_html__('Contacts', 'event_espresso'),
130
+				'singular_slug' => esc_html__('contact', 'event_espresso'),
131
+				'plural_slug'   => esc_html__('contacts', 'event_espresso'),
132
+				'class_name'    => 'EE_Attendee',
133
+				'model_name'    => 'EEM_Attendee',
134
+				'args'          => array(
135
+					'public'             => false,
136
+					'publicly_queryable' => false,
137
+					'hierarchical'       => false,
138
+					'has_archive'        => false,
139
+					'supports'           => array(
140
+						'editor',
141
+						'thumbnail',
142
+						'excerpt',
143
+						'custom-fields',
144
+						'comments',
145
+					),
146
+					'taxonomies'         => array('post_tag'),
147
+					'capability_type'    => 'contact',
148
+					'capabilities'       => array(
149
+						'edit_post'              => 'ee_edit_contact',
150
+						'read_post'              => 'ee_read_contact',
151
+						'delete_post'            => 'ee_delete_contact',
152
+						'edit_posts'             => 'ee_edit_contacts',
153
+						'edit_others_posts'      => 'ee_edit_contacts',
154
+						'publish_posts'          => 'ee_edit_contacts',
155
+						'read_private_posts'     => 'ee_edit_contacts',
156
+						'delete_posts'           => 'ee_delete_contacts',
157
+						'delete_private_posts'   => 'ee_delete_contacts',
158
+						'delete_published_posts' => 'ee_delete_contacts',
159
+						'delete_others_posts'    => 'ee_delete_contacts',
160
+						'edit_private_posts'     => 'ee_edit_contacts',
161
+						'edit_published_posts'   => 'ee_edit_contacts',
162
+					),
163
+				),
164
+			),
165
+		);
166
+	}
167 167
 
168 168
 
169
-    /**
170
-     * @return array
171
-     */
172
-    public function getDefinitions()
173
-    {
174
-        return (array) apply_filters(
175
-            'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes',
176
-            // legacy filter applied for now,
177
-            // later on we'll run a has_filter($tag) check and throw a doing_it_wrong() notice
178
-            apply_filters(
179
-                'FHEE__EE_Register_CPTs__get_CPTs__cpts',
180
-                $this->custom_post_types
181
-            )
182
-        );
183
-    }
169
+	/**
170
+	 * @return array
171
+	 */
172
+	public function getDefinitions()
173
+	{
174
+		return (array) apply_filters(
175
+			'FHEE__EventEspresso_core_domain_entities_custom_post_types_CustomPostTypeDefinitions__getCustomPostTypes',
176
+			// legacy filter applied for now,
177
+			// later on we'll run a has_filter($tag) check and throw a doing_it_wrong() notice
178
+			apply_filters(
179
+				'FHEE__EE_Register_CPTs__get_CPTs__cpts',
180
+				$this->custom_post_types
181
+			)
182
+		);
183
+	}
184 184
 
185 185
 
186
-    /**
187
-     * @return array
188
-     */
189
-    public function getCustomPostTypeSlugs()
190
-    {
191
-        return array_keys($this->getDefinitions());
192
-    }
186
+	/**
187
+	 * @return array
188
+	 */
189
+	public function getCustomPostTypeSlugs()
190
+	{
191
+		return array_keys($this->getDefinitions());
192
+	}
193 193
 
194 194
 
195
-    /**
196
-     * This basically goes through the CPT array and returns only CPT's
197
-     * that have the ['args']['public'] option set as false
198
-     *
199
-     * @return array
200
-     */
201
-    public function getPrivateCustomPostTypes()
202
-    {
203
-        $private_CPTs = array();
204
-        foreach ($this->getDefinitions() as $CPT => $details) {
205
-            if (empty($details['args']['public'])) {
206
-                $private_CPTs[ $CPT ] = $details;
207
-            }
208
-        }
209
-        return $private_CPTs;
210
-    }
195
+	/**
196
+	 * This basically goes through the CPT array and returns only CPT's
197
+	 * that have the ['args']['public'] option set as false
198
+	 *
199
+	 * @return array
200
+	 */
201
+	public function getPrivateCustomPostTypes()
202
+	{
203
+		$private_CPTs = array();
204
+		foreach ($this->getDefinitions() as $CPT => $details) {
205
+			if (empty($details['args']['public'])) {
206
+				$private_CPTs[ $CPT ] = $details;
207
+			}
208
+		}
209
+		return $private_CPTs;
210
+	}
211 211
 
212 212
 
213
-    /**
214
-     * This returns the corresponding model name for cpts registered by EE.
215
-     *
216
-     * @param string $post_type_slug    If a slug is included, then attempt to retrieve
217
-     *                                  the model name for the given cpt slug.
218
-     *                                  Otherwise if empty, then we'll return
219
-     *                                  all cpt model names for cpts registered in EE.
220
-     * @return array                    Empty array if no matching model names for the given slug
221
-     *                                  or an array of model names indexed by post type slug.
222
-     */
223
-    public function getCustomPostTypeModelNames($post_type_slug = '')
224
-    {
225
-        $cpts = $this->getDefinitions();
226
-        // first if slug passed in...
227
-        if (! empty($post_type_slug)) {
228
-            // check that slug and cpt match
229
-            if (! isset($cpts[ $post_type_slug ])) {
230
-                return array();
231
-            }
232
-            if (empty($cpts[ $post_type_slug ]['class_name'])
233
-                && empty($cpts[ $post_type_slug ]['model_name'])
234
-            ) {
235
-                return array();
236
-            }
237
-            // k let's get the model name for this cpt.
238
-            return $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
239
-        }
240
-        // if we made it here then we're returning an array of cpt model names indexed by post_type_slug.
241
-        $cpt_models = array();
242
-        foreach ($cpts as $slug => $args) {
243
-            $model = $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
244
-            if (! empty($model)) {
245
-                $cpt_models[ $slug ] = $model;
246
-            }
247
-        }
248
-        return $cpt_models;
249
-    }
213
+	/**
214
+	 * This returns the corresponding model name for cpts registered by EE.
215
+	 *
216
+	 * @param string $post_type_slug    If a slug is included, then attempt to retrieve
217
+	 *                                  the model name for the given cpt slug.
218
+	 *                                  Otherwise if empty, then we'll return
219
+	 *                                  all cpt model names for cpts registered in EE.
220
+	 * @return array                    Empty array if no matching model names for the given slug
221
+	 *                                  or an array of model names indexed by post type slug.
222
+	 */
223
+	public function getCustomPostTypeModelNames($post_type_slug = '')
224
+	{
225
+		$cpts = $this->getDefinitions();
226
+		// first if slug passed in...
227
+		if (! empty($post_type_slug)) {
228
+			// check that slug and cpt match
229
+			if (! isset($cpts[ $post_type_slug ])) {
230
+				return array();
231
+			}
232
+			if (empty($cpts[ $post_type_slug ]['class_name'])
233
+				&& empty($cpts[ $post_type_slug ]['model_name'])
234
+			) {
235
+				return array();
236
+			}
237
+			// k let's get the model name for this cpt.
238
+			return $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
239
+		}
240
+		// if we made it here then we're returning an array of cpt model names indexed by post_type_slug.
241
+		$cpt_models = array();
242
+		foreach ($cpts as $slug => $args) {
243
+			$model = $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
244
+			if (! empty($model)) {
245
+				$cpt_models[ $slug ] = $model;
246
+			}
247
+		}
248
+		return $cpt_models;
249
+	}
250 250
 
251 251
 
252
-    /**
253
-     * @param       $post_type_slug
254
-     * @param array $cpt
255
-     * @return array
256
-     */
257
-    private function getCustomPostTypeModelName($post_type_slug, array $cpt)
258
-    {
259
-        if (! empty($cpt['model_name'])) {
260
-            return array($post_type_slug => $cpt['model_name']);
261
-        }
262
-        if (! empty($cpt['class_name'])) {
263
-            return array(
264
-                $post_type_slug => $this->deriveCptModelNameFromClassName($cpt['class_name']),
265
-            );
266
-        }
267
-        return array();
268
-    }
252
+	/**
253
+	 * @param       $post_type_slug
254
+	 * @param array $cpt
255
+	 * @return array
256
+	 */
257
+	private function getCustomPostTypeModelName($post_type_slug, array $cpt)
258
+	{
259
+		if (! empty($cpt['model_name'])) {
260
+			return array($post_type_slug => $cpt['model_name']);
261
+		}
262
+		if (! empty($cpt['class_name'])) {
263
+			return array(
264
+				$post_type_slug => $this->deriveCptModelNameFromClassName($cpt['class_name']),
265
+			);
266
+		}
267
+		return array();
268
+	}
269 269
 
270 270
 
271
-    /**
272
-     * @param string $class_name
273
-     * @return string
274
-     */
275
-    private function deriveCptModelNameFromClassName($class_name)
276
-    {
277
-        return str_replace('EE', 'EEM', $class_name);
278
-    }
271
+	/**
272
+	 * @param string $class_name
273
+	 * @return string
274
+	 */
275
+	private function deriveCptModelNameFromClassName($class_name)
276
+	{
277
+		return str_replace('EE', 'EEM', $class_name);
278
+	}
279 279
 
280 280
 
281
-    /**
282
-     * This instantiates cpt models related to the cpts registered via EE.
283
-     *
284
-     * @since 4.6.16.rc.000
285
-     * @param string $post_type_slug If valid slug is provided, then will instantiate the model only for
286
-     *                               the cpt matching the given slug.  Otherwise all cpt models will be
287
-     *                               instantiated (if possible).
288
-     * @return EEM_CPT_Base[]        successful instantiation will return an array of successfully instantiated
289
-     *                               EEM models indexed by post slug.
290
-     */
291
-    public function getCustomPostTypeModels($post_type_slug = '')
292
-    {
293
-        $cpt_model_names = $this->getCustomPostTypeModelNames($post_type_slug);
294
-        $instantiated = array();
295
-        foreach ($cpt_model_names as $slug => $model_name) {
296
-            $model = $this->loader->getShared($model_name);
297
-            if ($model instanceof EEM_CPT_Base) {
298
-                $instantiated[ $slug ] = $model;
299
-            }
300
-        }
301
-        return $instantiated;
302
-    }
281
+	/**
282
+	 * This instantiates cpt models related to the cpts registered via EE.
283
+	 *
284
+	 * @since 4.6.16.rc.000
285
+	 * @param string $post_type_slug If valid slug is provided, then will instantiate the model only for
286
+	 *                               the cpt matching the given slug.  Otherwise all cpt models will be
287
+	 *                               instantiated (if possible).
288
+	 * @return EEM_CPT_Base[]        successful instantiation will return an array of successfully instantiated
289
+	 *                               EEM models indexed by post slug.
290
+	 */
291
+	public function getCustomPostTypeModels($post_type_slug = '')
292
+	{
293
+		$cpt_model_names = $this->getCustomPostTypeModelNames($post_type_slug);
294
+		$instantiated = array();
295
+		foreach ($cpt_model_names as $slug => $model_name) {
296
+			$model = $this->loader->getShared($model_name);
297
+			if ($model instanceof EEM_CPT_Base) {
298
+				$instantiated[ $slug ] = $model;
299
+			}
300
+		}
301
+		return $instantiated;
302
+	}
303 303
 }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
         $private_CPTs = array();
204 204
         foreach ($this->getDefinitions() as $CPT => $details) {
205 205
             if (empty($details['args']['public'])) {
206
-                $private_CPTs[ $CPT ] = $details;
206
+                $private_CPTs[$CPT] = $details;
207 207
             }
208 208
         }
209 209
         return $private_CPTs;
@@ -224,25 +224,25 @@  discard block
 block discarded – undo
224 224
     {
225 225
         $cpts = $this->getDefinitions();
226 226
         // first if slug passed in...
227
-        if (! empty($post_type_slug)) {
227
+        if ( ! empty($post_type_slug)) {
228 228
             // check that slug and cpt match
229
-            if (! isset($cpts[ $post_type_slug ])) {
229
+            if ( ! isset($cpts[$post_type_slug])) {
230 230
                 return array();
231 231
             }
232
-            if (empty($cpts[ $post_type_slug ]['class_name'])
233
-                && empty($cpts[ $post_type_slug ]['model_name'])
232
+            if (empty($cpts[$post_type_slug]['class_name'])
233
+                && empty($cpts[$post_type_slug]['model_name'])
234 234
             ) {
235 235
                 return array();
236 236
             }
237 237
             // k let's get the model name for this cpt.
238
-            return $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
238
+            return $this->getCustomPostTypeModelName($post_type_slug, $cpts[$post_type_slug]);
239 239
         }
240 240
         // if we made it here then we're returning an array of cpt model names indexed by post_type_slug.
241 241
         $cpt_models = array();
242 242
         foreach ($cpts as $slug => $args) {
243
-            $model = $this->getCustomPostTypeModelName($post_type_slug, $cpts[ $post_type_slug ]);
244
-            if (! empty($model)) {
245
-                $cpt_models[ $slug ] = $model;
243
+            $model = $this->getCustomPostTypeModelName($post_type_slug, $cpts[$post_type_slug]);
244
+            if ( ! empty($model)) {
245
+                $cpt_models[$slug] = $model;
246 246
             }
247 247
         }
248 248
         return $cpt_models;
@@ -256,10 +256,10 @@  discard block
 block discarded – undo
256 256
      */
257 257
     private function getCustomPostTypeModelName($post_type_slug, array $cpt)
258 258
     {
259
-        if (! empty($cpt['model_name'])) {
259
+        if ( ! empty($cpt['model_name'])) {
260 260
             return array($post_type_slug => $cpt['model_name']);
261 261
         }
262
-        if (! empty($cpt['class_name'])) {
262
+        if ( ! empty($cpt['class_name'])) {
263 263
             return array(
264 264
                 $post_type_slug => $this->deriveCptModelNameFromClassName($cpt['class_name']),
265 265
             );
@@ -295,7 +295,7 @@  discard block
 block discarded – undo
295 295
         foreach ($cpt_model_names as $slug => $model_name) {
296 296
             $model = $this->loader->getShared($model_name);
297 297
             if ($model instanceof EEM_CPT_Base) {
298
-                $instantiated[ $slug ] = $model;
298
+                $instantiated[$slug] = $model;
299 299
             }
300 300
         }
301 301
         return $instantiated;
Please login to merge, or discard this patch.
core/domain/entities/RegUrlLink.php 2 patches
Indentation   +83 added lines, -83 removed lines patch added patch discarded remove patch
@@ -18,97 +18,97 @@
 block discarded – undo
18 18
 class RegUrlLink
19 19
 {
20 20
 
21
-    /*
21
+	/*
22 22
      * @var string $reg_url_link
23 23
      */
24
-    private $reg_url_link;
24
+	private $reg_url_link;
25 25
 
26 26
 
27
-    /**
28
-     * @param string $reg_url_link
29
-     * @return RegUrlLink
30
-     * @throws InvalidArgumentException
31
-     */
32
-    public static function fromRegUrlLinkString($reg_url_link)
33
-    {
34
-        if (empty($reg_url_link) || ! is_string($reg_url_link)) {
35
-            throw new InvalidArgumentException(
36
-                __(
37
-                    'You must supply a valid non-empty string to generate a reg_url_link.',
38
-                    'event_espresso'
39
-                )
40
-            );
41
-        }
42
-        return new RegUrlLink(1, '', $reg_url_link);
43
-    }
27
+	/**
28
+	 * @param string $reg_url_link
29
+	 * @return RegUrlLink
30
+	 * @throws InvalidArgumentException
31
+	 */
32
+	public static function fromRegUrlLinkString($reg_url_link)
33
+	{
34
+		if (empty($reg_url_link) || ! is_string($reg_url_link)) {
35
+			throw new InvalidArgumentException(
36
+				__(
37
+					'You must supply a valid non-empty string to generate a reg_url_link.',
38
+					'event_espresso'
39
+				)
40
+			);
41
+		}
42
+		return new RegUrlLink(1, '', $reg_url_link);
43
+	}
44 44
 
45 45
 
46
-    /**
47
-     * @param EE_Registration $registration
48
-     * @return RegUrlLink
49
-     * @throws EntityNotFoundException
50
-     * @throws EE_Error
51
-     * @throws InvalidArgumentException
52
-     */
53
-    public static function fromRegistration(EE_Registration $registration)
54
-    {
55
-        return new RegUrlLink(
56
-            $registration->count(),
57
-            $registration->ticket_line_item()
58
-        );
59
-    }
46
+	/**
47
+	 * @param EE_Registration $registration
48
+	 * @return RegUrlLink
49
+	 * @throws EntityNotFoundException
50
+	 * @throws EE_Error
51
+	 * @throws InvalidArgumentException
52
+	 */
53
+	public static function fromRegistration(EE_Registration $registration)
54
+	{
55
+		return new RegUrlLink(
56
+			$registration->count(),
57
+			$registration->ticket_line_item()
58
+		);
59
+	}
60 60
 
61 61
 
62
-    /**
63
-     * CreateRegUrlLinkCommand constructor.
64
-     *
65
-     * @param int    $reg_count
66
-     * @param mixed  $base_code
67
-     * @param string $reg_url_link
68
-     * @throws InvalidArgumentException
69
-     */
70
-    public function __construct(
71
-        $reg_count = 1,
72
-        $base_code = '',
73
-        $reg_url_link = ''
74
-    ) {
75
-        if (! empty($reg_url_link) && is_string($reg_url_link)) {
76
-            $this->reg_url_link = apply_filters(
77
-                'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
78
-                $reg_url_link,
79
-                $reg_count,
80
-                $base_code,
81
-                $reg_url_link
82
-            );
83
-            return;
84
-        }
85
-        $reg_count = max(1, absint($reg_count));
86
-        $base_code = $base_code instanceof \EE_Line_Item ? $base_code->code() : $base_code;
87
-        if (empty($base_code) || ! is_string($base_code)) {
88
-            throw new InvalidArgumentException(
89
-                __(
90
-                    'You must supply a valid EE_Line_Item or a non-empty string to generate a reg_url_link.',
91
-                    'event_espresso'
92
-                )
93
-            );
94
-        }
95
-        $this->reg_url_link = (string) apply_filters(
96
-            'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
97
-            $reg_count . '-' . md5($base_code . microtime()),
98
-            $reg_count,
99
-            $base_code,
100
-            $reg_url_link
101
-        );
102
-    }
62
+	/**
63
+	 * CreateRegUrlLinkCommand constructor.
64
+	 *
65
+	 * @param int    $reg_count
66
+	 * @param mixed  $base_code
67
+	 * @param string $reg_url_link
68
+	 * @throws InvalidArgumentException
69
+	 */
70
+	public function __construct(
71
+		$reg_count = 1,
72
+		$base_code = '',
73
+		$reg_url_link = ''
74
+	) {
75
+		if (! empty($reg_url_link) && is_string($reg_url_link)) {
76
+			$this->reg_url_link = apply_filters(
77
+				'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
78
+				$reg_url_link,
79
+				$reg_count,
80
+				$base_code,
81
+				$reg_url_link
82
+			);
83
+			return;
84
+		}
85
+		$reg_count = max(1, absint($reg_count));
86
+		$base_code = $base_code instanceof \EE_Line_Item ? $base_code->code() : $base_code;
87
+		if (empty($base_code) || ! is_string($base_code)) {
88
+			throw new InvalidArgumentException(
89
+				__(
90
+					'You must supply a valid EE_Line_Item or a non-empty string to generate a reg_url_link.',
91
+					'event_espresso'
92
+				)
93
+			);
94
+		}
95
+		$this->reg_url_link = (string) apply_filters(
96
+			'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
97
+			$reg_count . '-' . md5($base_code . microtime()),
98
+			$reg_count,
99
+			$base_code,
100
+			$reg_url_link
101
+		);
102
+	}
103 103
 
104 104
 
105
-    /**
106
-     * Return the object as a string
107
-     *
108
-     * @return string
109
-     */
110
-    public function __toString()
111
-    {
112
-        return $this->reg_url_link;
113
-    }
105
+	/**
106
+	 * Return the object as a string
107
+	 *
108
+	 * @return string
109
+	 */
110
+	public function __toString()
111
+	{
112
+		return $this->reg_url_link;
113
+	}
114 114
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -72,7 +72,7 @@  discard block
 block discarded – undo
72 72
         $base_code = '',
73 73
         $reg_url_link = ''
74 74
     ) {
75
-        if (! empty($reg_url_link) && is_string($reg_url_link)) {
75
+        if ( ! empty($reg_url_link) && is_string($reg_url_link)) {
76 76
             $this->reg_url_link = apply_filters(
77 77
                 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
78 78
                 $reg_url_link,
@@ -94,7 +94,7 @@  discard block
 block discarded – undo
94 94
         }
95 95
         $this->reg_url_link = (string) apply_filters(
96 96
             'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link',
97
-            $reg_count . '-' . md5($base_code . microtime()),
97
+            $reg_count.'-'.md5($base_code.microtime()),
98 98
             $reg_count,
99 99
             $base_code,
100 100
             $reg_url_link
Please login to merge, or discard this patch.
core/domain/entities/shortcodes/EspressoEvents.php 1 patch
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -30,132 +30,132 @@
 block discarded – undo
30 30
 {
31 31
 
32 32
 
33
-    /**
34
-     * the actual shortcode tag that gets registered with WordPress
35
-     *
36
-     * @return string
37
-     */
38
-    public function getTag()
39
-    {
40
-        return 'ESPRESSO_EVENTS';
41
-    }
33
+	/**
34
+	 * the actual shortcode tag that gets registered with WordPress
35
+	 *
36
+	 * @return string
37
+	 */
38
+	public function getTag()
39
+	{
40
+		return 'ESPRESSO_EVENTS';
41
+	}
42 42
 
43 43
 
44
-    /**
45
-     * the time in seconds to cache the results of the processShortcode() method
46
-     * 0 means the processShortcode() results will NOT be cached at all
47
-     *
48
-     * @return int
49
-     */
50
-    public function cacheExpiration()
51
-    {
52
-        return 0;
53
-    }
44
+	/**
45
+	 * the time in seconds to cache the results of the processShortcode() method
46
+	 * 0 means the processShortcode() results will NOT be cached at all
47
+	 *
48
+	 * @return int
49
+	 */
50
+	public function cacheExpiration()
51
+	{
52
+		return 0;
53
+	}
54 54
 
55 55
 
56
-    /**
57
-     * a place for adding any initialization code that needs to run prior to wp_header().
58
-     * this may be required for shortcodes that utilize a corresponding module,
59
-     * and need to enqueue assets for that module
60
-     *
61
-     * @return void
62
-     */
63
-    public function initializeShortcode()
64
-    {
65
-        EED_Events_Archive::instance()->event_list();
66
-        $this->shortcodeHasBeenInitialized();
67
-    }
56
+	/**
57
+	 * a place for adding any initialization code that needs to run prior to wp_header().
58
+	 * this may be required for shortcodes that utilize a corresponding module,
59
+	 * and need to enqueue assets for that module
60
+	 *
61
+	 * @return void
62
+	 */
63
+	public function initializeShortcode()
64
+	{
65
+		EED_Events_Archive::instance()->event_list();
66
+		$this->shortcodeHasBeenInitialized();
67
+	}
68 68
 
69 69
 
70
-    /**
71
-     * callback that runs when the shortcode is encountered in post content.
72
-     * IMPORTANT !!!
73
-     * remember that shortcode content should be RETURNED and NOT echoed out
74
-     *
75
-     * @param array $attributes
76
-     * @return string
77
-     */
78
-    public function processShortcode($attributes = array())
79
-    {
80
-        // grab attributes and merge with defaults
81
-        $attributes = $this->getAttributes($attributes);
82
-        // make sure we use the_excerpt()
83
-        add_filter('FHEE__EES_Espresso_Events__process_shortcode__true', '__return_true');
84
-        // apply query filters
85
-        add_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true');
86
-        // run the query
87
-        global $wp_query;
88
-        // yes we have to overwrite the main wp query, but it's ok...
89
-        // we're going to reset it again below, so everything will be Hunky Dory (amazing album)
90
-        $wp_query = new EventListQuery($attributes);
91
-        // check what template is loaded and load filters accordingly
92
-        EED_Events_Archive::instance()->template_include('loop-espresso_events.php');
93
-        // load our template
94
-        $event_list = EEH_Template::locate_template(
95
-            'loop-espresso_events.php',
96
-            array(),
97
-            true,
98
-            true
99
-        );
100
-        // now reset the query and post data
101
-        wp_reset_query();
102
-        wp_reset_postdata();
103
-        EED_Events_Archive::remove_all_events_archive_filters();
104
-        // remove query filters
105
-        remove_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true');
106
-        // pull our content from the output buffer and return it
107
-        return $event_list;
108
-    }
70
+	/**
71
+	 * callback that runs when the shortcode is encountered in post content.
72
+	 * IMPORTANT !!!
73
+	 * remember that shortcode content should be RETURNED and NOT echoed out
74
+	 *
75
+	 * @param array $attributes
76
+	 * @return string
77
+	 */
78
+	public function processShortcode($attributes = array())
79
+	{
80
+		// grab attributes and merge with defaults
81
+		$attributes = $this->getAttributes($attributes);
82
+		// make sure we use the_excerpt()
83
+		add_filter('FHEE__EES_Espresso_Events__process_shortcode__true', '__return_true');
84
+		// apply query filters
85
+		add_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true');
86
+		// run the query
87
+		global $wp_query;
88
+		// yes we have to overwrite the main wp query, but it's ok...
89
+		// we're going to reset it again below, so everything will be Hunky Dory (amazing album)
90
+		$wp_query = new EventListQuery($attributes);
91
+		// check what template is loaded and load filters accordingly
92
+		EED_Events_Archive::instance()->template_include('loop-espresso_events.php');
93
+		// load our template
94
+		$event_list = EEH_Template::locate_template(
95
+			'loop-espresso_events.php',
96
+			array(),
97
+			true,
98
+			true
99
+		);
100
+		// now reset the query and post data
101
+		wp_reset_query();
102
+		wp_reset_postdata();
103
+		EED_Events_Archive::remove_all_events_archive_filters();
104
+		// remove query filters
105
+		remove_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true');
106
+		// pull our content from the output buffer and return it
107
+		return $event_list;
108
+	}
109 109
 
110 110
 
111
-    /**
112
-     * merge incoming attributes with filtered defaults
113
-     *
114
-     * @param array $attributes
115
-     * @return array
116
-     */
117
-    private function getAttributes(array $attributes)
118
-    {
119
-        return array_merge(
120
-            (array) apply_filters(
121
-                'EES_Espresso_Events__process_shortcode__default_espresso_events_shortcode_atts',
122
-                array(
123
-                    'title'         => '',
124
-                    'limit'         => 10,
125
-                    'css_class'     => '',
126
-                    'show_expired'  => false,
127
-                    'month'         => '',
128
-                    'category_slug' => '',
129
-                    'order_by'      => 'start_date',
130
-                    'sort'          => 'ASC',
131
-                    'show_title'    => true,
132
-                )
133
-            ),
134
-            $attributes
135
-        );
136
-    }
111
+	/**
112
+	 * merge incoming attributes with filtered defaults
113
+	 *
114
+	 * @param array $attributes
115
+	 * @return array
116
+	 */
117
+	private function getAttributes(array $attributes)
118
+	{
119
+		return array_merge(
120
+			(array) apply_filters(
121
+				'EES_Espresso_Events__process_shortcode__default_espresso_events_shortcode_atts',
122
+				array(
123
+					'title'         => '',
124
+					'limit'         => 10,
125
+					'css_class'     => '',
126
+					'show_expired'  => false,
127
+					'month'         => '',
128
+					'category_slug' => '',
129
+					'order_by'      => 'start_date',
130
+					'sort'          => 'ASC',
131
+					'show_title'    => true,
132
+				)
133
+			),
134
+			$attributes
135
+		);
136
+	}
137 137
 
138 138
 
139
-    /**
140
-     * array for defining custom attribute sanitization callbacks,
141
-     * where keys match keys in your attributes array,
142
-     * and values represent the sanitization function you wish to be applied to that attribute.
143
-     * So for example, if you had an integer attribute named "event_id"
144
-     * that you wanted to be sanitized using absint(),
145
-     * then you would pass the following for your $custom_sanitization array:
146
-     *      array('event_id' => 'absint')
147
-     *
148
-     * @return array
149
-     */
150
-    protected function customAttributeSanitizationMap()
151
-    {
152
-        // the following get sanitized/whitelisted in EEH_Event_Query
153
-        return array(
154
-            'category_slug' => 'skip_sanitization',
155
-            'show_expired'  => 'skip_sanitization',
156
-            'order_by'      => 'skip_sanitization',
157
-            'month'         => 'skip_sanitization',
158
-            'sort'          => 'skip_sanitization',
159
-        );
160
-    }
139
+	/**
140
+	 * array for defining custom attribute sanitization callbacks,
141
+	 * where keys match keys in your attributes array,
142
+	 * and values represent the sanitization function you wish to be applied to that attribute.
143
+	 * So for example, if you had an integer attribute named "event_id"
144
+	 * that you wanted to be sanitized using absint(),
145
+	 * then you would pass the following for your $custom_sanitization array:
146
+	 *      array('event_id' => 'absint')
147
+	 *
148
+	 * @return array
149
+	 */
150
+	protected function customAttributeSanitizationMap()
151
+	{
152
+		// the following get sanitized/whitelisted in EEH_Event_Query
153
+		return array(
154
+			'category_slug' => 'skip_sanitization',
155
+			'show_expired'  => 'skip_sanitization',
156
+			'order_by'      => 'skip_sanitization',
157
+			'month'         => 'skip_sanitization',
158
+			'sort'          => 'skip_sanitization',
159
+		);
160
+	}
161 161
 }
Please login to merge, or discard this patch.
core/domain/entities/shortcodes/EspressoEventAttendees.php 2 patches
Indentation   +303 added lines, -303 removed lines patch added patch discarded remove patch
@@ -27,333 +27,333 @@
 block discarded – undo
27 27
 class EspressoEventAttendees extends EspressoShortcode
28 28
 {
29 29
 
30
-    private $query_params = array(
31
-        0 => array(),
32
-    );
30
+	private $query_params = array(
31
+		0 => array(),
32
+	);
33 33
 
34
-    private $template_args = array(
35
-        'contacts' => array(),
36
-        'event'    => null,
37
-        'datetime' => null,
38
-        'ticket'   => null,
39
-    );
34
+	private $template_args = array(
35
+		'contacts' => array(),
36
+		'event'    => null,
37
+		'datetime' => null,
38
+		'ticket'   => null,
39
+	);
40 40
 
41
-    /**
42
-     * the actual shortcode tag that gets registered with WordPress
43
-     *
44
-     * @return string
45
-     */
46
-    public function getTag()
47
-    {
48
-        return 'ESPRESSO_EVENT_ATTENDEES';
49
-    }
41
+	/**
42
+	 * the actual shortcode tag that gets registered with WordPress
43
+	 *
44
+	 * @return string
45
+	 */
46
+	public function getTag()
47
+	{
48
+		return 'ESPRESSO_EVENT_ATTENDEES';
49
+	}
50 50
 
51 51
 
52
-    /**
53
-     * the time in seconds to cache the results of the processShortcode() method
54
-     * 0 means the processShortcode() results will NOT be cached at all
55
-     *
56
-     * @return int
57
-     */
58
-    public function cacheExpiration()
59
-    {
60
-        return 0;
61
-    }
52
+	/**
53
+	 * the time in seconds to cache the results of the processShortcode() method
54
+	 * 0 means the processShortcode() results will NOT be cached at all
55
+	 *
56
+	 * @return int
57
+	 */
58
+	public function cacheExpiration()
59
+	{
60
+		return 0;
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * a place for adding any initialization code that needs to run prior to wp_header().
66
-     * this may be required for shortcodes that utilize a corresponding module,
67
-     * and need to enqueue assets for that module
68
-     *
69
-     * @return void
70
-     */
71
-    public function initializeShortcode()
72
-    {
73
-        $this->shortcodeHasBeenInitialized();
74
-    }
64
+	/**
65
+	 * a place for adding any initialization code that needs to run prior to wp_header().
66
+	 * this may be required for shortcodes that utilize a corresponding module,
67
+	 * and need to enqueue assets for that module
68
+	 *
69
+	 * @return void
70
+	 */
71
+	public function initializeShortcode()
72
+	{
73
+		$this->shortcodeHasBeenInitialized();
74
+	}
75 75
 
76 76
 
77
-    /**
78
-     * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event.
79
-     *  [ESPRESSO_EVENT_ATTENDEES]
80
-     *  - defaults to attendees for earliest active event, or earliest upcoming event.
81
-     *  [ESPRESSO_EVENT_ATTENDEES event_id=123]
82
-     *  - attendees for specific event.
83
-     *  [ESPRESSO_EVENT_ATTENDEES datetime_id=245]
84
-     *  - attendees for a specific datetime.
85
-     *  [ESPRESSO_EVENT_ATTENDEES ticket_id=123]
86
-     *  - attendees for a specific ticket.
87
-     *  [ESPRESSO_EVENT_ATTENDEES status=all]
88
-     *  - specific registration status (use status id) or all for all attendees regardless of status.
89
-     *  Note default is to only return approved attendees
90
-     *  [ESPRESSO_EVENT_ATTENDEES show_gravatar=true]
91
-     *  - default is to not return gravatar.  Otherwise if this is set then return gravatar for email address given.
92
-     *  [ESPRESSO_EVENT_ATTENDEES display_on_archives=true]
93
-     *  - default is to not display attendees list on archive pages.
94
-     * Note: because of the relationship between event_id, ticket_id, and datetime_id:
95
-     * If more than one of those params is included, then preference is given to the following:
96
-     *  - event_id is used whenever its present and any others are ignored.
97
-     *  - if no event_id then datetime is used whenever its present and any others are ignored.
98
-     *  - otherwise ticket_id is used if present.
99
-     *
100
-     * @param array $attributes
101
-     * @return string
102
-     * @throws EE_Error
103
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
104
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
105
-     * @throws \InvalidArgumentException
106
-     */
107
-    public function processShortcode($attributes = array())
108
-    {
109
-        // grab attributes and merge with defaults
110
-        $attributes = $this->getAttributes((array) $attributes);
111
-        $archive = is_archive();
112
-        $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN);
113
-        // don't display on archives unless 'display_on_archives' is true
114
-        if ($archive && ! $display_on_archives) {
115
-            return '';
116
-        }
77
+	/**
78
+	 * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event.
79
+	 *  [ESPRESSO_EVENT_ATTENDEES]
80
+	 *  - defaults to attendees for earliest active event, or earliest upcoming event.
81
+	 *  [ESPRESSO_EVENT_ATTENDEES event_id=123]
82
+	 *  - attendees for specific event.
83
+	 *  [ESPRESSO_EVENT_ATTENDEES datetime_id=245]
84
+	 *  - attendees for a specific datetime.
85
+	 *  [ESPRESSO_EVENT_ATTENDEES ticket_id=123]
86
+	 *  - attendees for a specific ticket.
87
+	 *  [ESPRESSO_EVENT_ATTENDEES status=all]
88
+	 *  - specific registration status (use status id) or all for all attendees regardless of status.
89
+	 *  Note default is to only return approved attendees
90
+	 *  [ESPRESSO_EVENT_ATTENDEES show_gravatar=true]
91
+	 *  - default is to not return gravatar.  Otherwise if this is set then return gravatar for email address given.
92
+	 *  [ESPRESSO_EVENT_ATTENDEES display_on_archives=true]
93
+	 *  - default is to not display attendees list on archive pages.
94
+	 * Note: because of the relationship between event_id, ticket_id, and datetime_id:
95
+	 * If more than one of those params is included, then preference is given to the following:
96
+	 *  - event_id is used whenever its present and any others are ignored.
97
+	 *  - if no event_id then datetime is used whenever its present and any others are ignored.
98
+	 *  - otherwise ticket_id is used if present.
99
+	 *
100
+	 * @param array $attributes
101
+	 * @return string
102
+	 * @throws EE_Error
103
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
104
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
105
+	 * @throws \InvalidArgumentException
106
+	 */
107
+	public function processShortcode($attributes = array())
108
+	{
109
+		// grab attributes and merge with defaults
110
+		$attributes = $this->getAttributes((array) $attributes);
111
+		$archive = is_archive();
112
+		$display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN);
113
+		// don't display on archives unless 'display_on_archives' is true
114
+		if ($archive && ! $display_on_archives) {
115
+			return '';
116
+		}
117 117
 
118
-        try {
119
-            $this->setBaseTemplateArguments($attributes);
120
-            $this->validateEntities($attributes);
121
-            $this->setBaseQueryParams();
122
-        } catch (EntityNotFoundException $e) {
123
-            if (WP_DEBUG) {
124
-                return '<div class="important-notice ee-error">'
125
-                       . $e->getMessage()
126
-                       . '</div>';
127
-            }
128
-            return '';
129
-        }
130
-        $this->setAdditionalQueryParams($attributes);
131
-        // get contacts!
132
-        $this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params);
133
-        // all set let's load up the template and return.
134
-        return EEH_Template::locate_template(
135
-            'loop-espresso_event_attendees.php',
136
-            $this->template_args
137
-        );
138
-    }
118
+		try {
119
+			$this->setBaseTemplateArguments($attributes);
120
+			$this->validateEntities($attributes);
121
+			$this->setBaseQueryParams();
122
+		} catch (EntityNotFoundException $e) {
123
+			if (WP_DEBUG) {
124
+				return '<div class="important-notice ee-error">'
125
+					   . $e->getMessage()
126
+					   . '</div>';
127
+			}
128
+			return '';
129
+		}
130
+		$this->setAdditionalQueryParams($attributes);
131
+		// get contacts!
132
+		$this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params);
133
+		// all set let's load up the template and return.
134
+		return EEH_Template::locate_template(
135
+			'loop-espresso_event_attendees.php',
136
+			$this->template_args
137
+		);
138
+	}
139 139
 
140 140
 
141
-    /**
142
-     * merge incoming attributes with filtered defaults
143
-     *
144
-     * @param array $attributes
145
-     * @return array
146
-     */
147
-    private function getAttributes(array $attributes)
148
-    {
149
-        return (array) apply_filters(
150
-            'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts',
151
-            $attributes + array(
152
-                'event_id'            => null,
153
-                'datetime_id'         => null,
154
-                'ticket_id'           => null,
155
-                'status'              => EEM_Registration::status_id_approved,
156
-                'show_gravatar'       => false,
157
-                'display_on_archives' => false,
158
-            )
159
-        );
160
-    }
141
+	/**
142
+	 * merge incoming attributes with filtered defaults
143
+	 *
144
+	 * @param array $attributes
145
+	 * @return array
146
+	 */
147
+	private function getAttributes(array $attributes)
148
+	{
149
+		return (array) apply_filters(
150
+			'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts',
151
+			$attributes + array(
152
+				'event_id'            => null,
153
+				'datetime_id'         => null,
154
+				'ticket_id'           => null,
155
+				'status'              => EEM_Registration::status_id_approved,
156
+				'show_gravatar'       => false,
157
+				'display_on_archives' => false,
158
+			)
159
+		);
160
+	}
161 161
 
162 162
 
163
-    /**
164
-     * Set all the base template arguments from the incoming attributes.
165
-     * * Note: because of the relationship between event_id, ticket_id, and datetime_id:
166
-     * If more than one of those params is included, then preference is given to the following:
167
-     *  - event_id is used whenever its present and any others are ignored.
168
-     *  - if no event_id then datetime is used whenever its present and any others are ignored.
169
-     *  - otherwise ticket_id is used if present.
170
-     *
171
-     * @param array $attributes
172
-     * @throws EE_Error
173
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
174
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
175
-     * @throws \InvalidArgumentException
176
-     */
177
-    private function setBaseTemplateArguments(array $attributes)
178
-    {
179
-        $this->template_args['show_gravatar'] = $attributes['show_gravatar'];
180
-        $this->template_args['event'] = $this->getEvent($attributes);
181
-        $this->template_args['datetime'] = empty($attributes['event_id'])
182
-            ? $this->getDatetime($attributes)
183
-            : null;
184
-        $this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id'])
185
-            ? $this->getTicket($attributes)
186
-            : null;
187
-    }
163
+	/**
164
+	 * Set all the base template arguments from the incoming attributes.
165
+	 * * Note: because of the relationship between event_id, ticket_id, and datetime_id:
166
+	 * If more than one of those params is included, then preference is given to the following:
167
+	 *  - event_id is used whenever its present and any others are ignored.
168
+	 *  - if no event_id then datetime is used whenever its present and any others are ignored.
169
+	 *  - otherwise ticket_id is used if present.
170
+	 *
171
+	 * @param array $attributes
172
+	 * @throws EE_Error
173
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
174
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
175
+	 * @throws \InvalidArgumentException
176
+	 */
177
+	private function setBaseTemplateArguments(array $attributes)
178
+	{
179
+		$this->template_args['show_gravatar'] = $attributes['show_gravatar'];
180
+		$this->template_args['event'] = $this->getEvent($attributes);
181
+		$this->template_args['datetime'] = empty($attributes['event_id'])
182
+			? $this->getDatetime($attributes)
183
+			: null;
184
+		$this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id'])
185
+			? $this->getTicket($attributes)
186
+			: null;
187
+	}
188 188
 
189 189
 
190
-    /**
191
-     * Validates the presence of entities for the given attribute values.
192
-     *
193
-     * @param array $attributes
194
-     * @throws EntityNotFoundException
195
-     */
196
-    private function validateEntities(array $attributes)
197
-    {
198
-        if (! $this->template_args['event'] instanceof EE_Event
199
-            || (
200
-                empty($attributes['event_id'])
201
-                && $attributes['datetime_id']
202
-                && ! $this->template_args['datetime'] instanceof EE_Datetime
203
-            )
204
-            || (
205
-                empty($attributes['event_id'])
206
-                && empty($attributes['datetime_id'])
207
-                && $attributes['ticket_id']
208
-                && ! $this->template_args['ticket'] instanceof EE_Ticket
209
-            )
210
-        ) {
211
-            throw new EntityNotFoundException(
212
-                '',
213
-                '',
214
-                esc_html__(
215
-                    'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly.  Please double check the arguments you used for any typos.  In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.',
216
-                    'event_espresso'
217
-                )
218
-            );
219
-        }
220
-    }
190
+	/**
191
+	 * Validates the presence of entities for the given attribute values.
192
+	 *
193
+	 * @param array $attributes
194
+	 * @throws EntityNotFoundException
195
+	 */
196
+	private function validateEntities(array $attributes)
197
+	{
198
+		if (! $this->template_args['event'] instanceof EE_Event
199
+			|| (
200
+				empty($attributes['event_id'])
201
+				&& $attributes['datetime_id']
202
+				&& ! $this->template_args['datetime'] instanceof EE_Datetime
203
+			)
204
+			|| (
205
+				empty($attributes['event_id'])
206
+				&& empty($attributes['datetime_id'])
207
+				&& $attributes['ticket_id']
208
+				&& ! $this->template_args['ticket'] instanceof EE_Ticket
209
+			)
210
+		) {
211
+			throw new EntityNotFoundException(
212
+				'',
213
+				'',
214
+				esc_html__(
215
+					'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly.  Please double check the arguments you used for any typos.  In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.',
216
+					'event_espresso'
217
+				)
218
+			);
219
+		}
220
+	}
221 221
 
222 222
 
223
-    /**
224
-     * Sets the query params for the base query elements.
225
-     */
226
-    private function setBaseQueryParams()
227
-    {
228
-        switch (true) {
229
-            case $this->template_args['datetime'] instanceof EE_Datetime:
230
-                $this->query_params = array(
231
-                    0                          => array(
232
-                        'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(),
233
-                    ),
234
-                    'default_where_conditions' => 'this_model_only',
235
-                );
236
-                break;
237
-            case $this->template_args['ticket'] instanceof EE_Ticket:
238
-                $this->query_params[0] = array(
239
-                    'Registration.TKT_ID' => $this->template_args['ticket']->ID(),
240
-                );
241
-                break;
242
-            case $this->template_args['event'] instanceof EE_Event:
243
-                $this->query_params[0] = array(
244
-                    'Registration.EVT_ID' => $this->template_args['event']->ID(),
245
-                );
246
-                break;
247
-        }
248
-    }
223
+	/**
224
+	 * Sets the query params for the base query elements.
225
+	 */
226
+	private function setBaseQueryParams()
227
+	{
228
+		switch (true) {
229
+			case $this->template_args['datetime'] instanceof EE_Datetime:
230
+				$this->query_params = array(
231
+					0                          => array(
232
+						'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(),
233
+					),
234
+					'default_where_conditions' => 'this_model_only',
235
+				);
236
+				break;
237
+			case $this->template_args['ticket'] instanceof EE_Ticket:
238
+				$this->query_params[0] = array(
239
+					'Registration.TKT_ID' => $this->template_args['ticket']->ID(),
240
+				);
241
+				break;
242
+			case $this->template_args['event'] instanceof EE_Event:
243
+				$this->query_params[0] = array(
244
+					'Registration.EVT_ID' => $this->template_args['event']->ID(),
245
+				);
246
+				break;
247
+		}
248
+	}
249 249
 
250 250
 
251
-    /**
252
-     * @param array $attributes
253
-     * @return EE_Event|null
254
-     * @throws EE_Error
255
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
256
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
257
-     * @throws \InvalidArgumentException
258
-     */
259
-    private function getEvent(array $attributes)
260
-    {
261
-        switch (true) {
262
-            case ! empty($attributes['event_id']):
263
-                $event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']);
264
-                break;
265
-            case ! empty($attributes['datetime_id']):
266
-                $event = EEM_Event::instance()->get_one(array(
267
-                    array(
268
-                        'Datetime.DTT_ID' => $attributes['datetime_id'],
269
-                    ),
270
-                ));
271
-                break;
272
-            case ! empty($attributes['ticket_id']):
273
-                $event = EEM_Event::instance()->get_one(array(
274
-                    array(
275
-                        'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'],
276
-                    ),
277
-                ));
278
-                break;
279
-            case is_espresso_event():
280
-                $event = EEH_Event_View::get_event();
281
-                break;
282
-            default:
283
-                // one last shot...
284
-                // try getting the earliest active event
285
-                $events = EEM_Event::instance()->get_active_events(array(
286
-                    'limit'    => 1,
287
-                    'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'),
288
-                ));
289
-                //  if none then get the next upcoming
290
-                $events = empty($events)
291
-                    ? EEM_Event::instance()->get_upcoming_events(array(
292
-                        'limit'    => 1,
293
-                        'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'),
294
-                    ))
295
-                    : $events;
296
-                $event = reset($events);
297
-        }
251
+	/**
252
+	 * @param array $attributes
253
+	 * @return EE_Event|null
254
+	 * @throws EE_Error
255
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
256
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
257
+	 * @throws \InvalidArgumentException
258
+	 */
259
+	private function getEvent(array $attributes)
260
+	{
261
+		switch (true) {
262
+			case ! empty($attributes['event_id']):
263
+				$event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']);
264
+				break;
265
+			case ! empty($attributes['datetime_id']):
266
+				$event = EEM_Event::instance()->get_one(array(
267
+					array(
268
+						'Datetime.DTT_ID' => $attributes['datetime_id'],
269
+					),
270
+				));
271
+				break;
272
+			case ! empty($attributes['ticket_id']):
273
+				$event = EEM_Event::instance()->get_one(array(
274
+					array(
275
+						'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'],
276
+					),
277
+				));
278
+				break;
279
+			case is_espresso_event():
280
+				$event = EEH_Event_View::get_event();
281
+				break;
282
+			default:
283
+				// one last shot...
284
+				// try getting the earliest active event
285
+				$events = EEM_Event::instance()->get_active_events(array(
286
+					'limit'    => 1,
287
+					'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'),
288
+				));
289
+				//  if none then get the next upcoming
290
+				$events = empty($events)
291
+					? EEM_Event::instance()->get_upcoming_events(array(
292
+						'limit'    => 1,
293
+						'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'),
294
+					))
295
+					: $events;
296
+				$event = reset($events);
297
+		}
298 298
 
299
-        return $event instanceof EE_Event ? $event : null;
300
-    }
299
+		return $event instanceof EE_Event ? $event : null;
300
+	}
301 301
 
302 302
 
303
-    /**
304
-     * @param array $attributes
305
-     * @return EE_Datetime|null
306
-     * @throws EE_Error
307
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
308
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
309
-     * @throws \InvalidArgumentException
310
-     */
311
-    private function getDatetime(array $attributes)
312
-    {
313
-        if (! empty($attributes['datetime_id'])) {
314
-            $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']);
315
-            if ($datetime instanceof EE_Datetime) {
316
-                return $datetime;
317
-            }
318
-        }
319
-        return null;
320
-    }
303
+	/**
304
+	 * @param array $attributes
305
+	 * @return EE_Datetime|null
306
+	 * @throws EE_Error
307
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
308
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
309
+	 * @throws \InvalidArgumentException
310
+	 */
311
+	private function getDatetime(array $attributes)
312
+	{
313
+		if (! empty($attributes['datetime_id'])) {
314
+			$datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']);
315
+			if ($datetime instanceof EE_Datetime) {
316
+				return $datetime;
317
+			}
318
+		}
319
+		return null;
320
+	}
321 321
 
322 322
 
323
-    /**
324
-     * @param array $attributes
325
-     * @return \EE_Base_Class|EE_Ticket|null
326
-     * @throws EE_Error
327
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
328
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
329
-     * @throws \InvalidArgumentException
330
-     */
331
-    private function getTicket(array $attributes)
332
-    {
333
-        if (! empty($attributes['ticket_id'])) {
334
-            $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']);
335
-            if ($ticket instanceof EE_Ticket) {
336
-                return $ticket;
337
-            }
338
-        }
339
-        return null;
340
-    }
323
+	/**
324
+	 * @param array $attributes
325
+	 * @return \EE_Base_Class|EE_Ticket|null
326
+	 * @throws EE_Error
327
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
328
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
329
+	 * @throws \InvalidArgumentException
330
+	 */
331
+	private function getTicket(array $attributes)
332
+	{
333
+		if (! empty($attributes['ticket_id'])) {
334
+			$ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']);
335
+			if ($ticket instanceof EE_Ticket) {
336
+				return $ticket;
337
+			}
338
+		}
339
+		return null;
340
+	}
341 341
 
342 342
 
343
-    /**
344
-     * @param array $attributes
345
-     * @throws EE_Error
346
-     */
347
-    private function setAdditionalQueryParams(array $attributes)
348
-    {
349
-        $reg_status_array = EEM_Registration::reg_status_array();
350
-        if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) {
351
-            $this->query_params[0]['Registration.STS_ID'] = $attributes['status'];
352
-        }
353
-        $this->query_params['group_by'] = array('ATT_ID');
354
-        $this->query_params['order_by'] = (array) apply_filters(
355
-            'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by',
356
-            array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC')
357
-        );
358
-    }
343
+	/**
344
+	 * @param array $attributes
345
+	 * @throws EE_Error
346
+	 */
347
+	private function setAdditionalQueryParams(array $attributes)
348
+	{
349
+		$reg_status_array = EEM_Registration::reg_status_array();
350
+		if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) {
351
+			$this->query_params[0]['Registration.STS_ID'] = $attributes['status'];
352
+		}
353
+		$this->query_params['group_by'] = array('ATT_ID');
354
+		$this->query_params['order_by'] = (array) apply_filters(
355
+			'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by',
356
+			array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC')
357
+		);
358
+	}
359 359
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -195,7 +195,7 @@  discard block
 block discarded – undo
195 195
      */
196 196
     private function validateEntities(array $attributes)
197 197
     {
198
-        if (! $this->template_args['event'] instanceof EE_Event
198
+        if ( ! $this->template_args['event'] instanceof EE_Event
199 199
             || (
200 200
                 empty($attributes['event_id'])
201 201
                 && $attributes['datetime_id']
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
      */
311 311
     private function getDatetime(array $attributes)
312 312
     {
313
-        if (! empty($attributes['datetime_id'])) {
313
+        if ( ! empty($attributes['datetime_id'])) {
314 314
             $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']);
315 315
             if ($datetime instanceof EE_Datetime) {
316 316
                 return $datetime;
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
      */
331 331
     private function getTicket(array $attributes)
332 332
     {
333
-        if (! empty($attributes['ticket_id'])) {
333
+        if ( ! empty($attributes['ticket_id'])) {
334 334
             $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']);
335 335
             if ($ticket instanceof EE_Ticket) {
336 336
                 return $ticket;
@@ -347,7 +347,7 @@  discard block
 block discarded – undo
347 347
     private function setAdditionalQueryParams(array $attributes)
348 348
     {
349 349
         $reg_status_array = EEM_Registration::reg_status_array();
350
-        if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) {
350
+        if ($attributes['status'] !== 'all' && isset($reg_status_array[$attributes['status']])) {
351 351
             $this->query_params[0]['Registration.STS_ID'] = $attributes['status'];
352 352
         }
353 353
         $this->query_params['group_by'] = array('ATT_ID');
Please login to merge, or discard this patch.
core/domain/entities/shortcodes/EspressoCancelled.php 1 patch
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -20,78 +20,78 @@
 block discarded – undo
20 20
 {
21 21
 
22 22
 
23
-    /**
24
-     * the actual shortcode tag that gets registered with WordPress
25
-     *
26
-     * @return string
27
-     */
28
-    public function getTag()
29
-    {
30
-        return 'ESPRESSO_CANCELLED';
31
-    }
23
+	/**
24
+	 * the actual shortcode tag that gets registered with WordPress
25
+	 *
26
+	 * @return string
27
+	 */
28
+	public function getTag()
29
+	{
30
+		return 'ESPRESSO_CANCELLED';
31
+	}
32 32
 
33 33
 
34
-    /**
35
-     * the time in seconds to cache the results of the processShortcode() method
36
-     * 0 means the processShortcode() results will NOT be cached at all
37
-     *
38
-     * @return int
39
-     */
40
-    public function cacheExpiration()
41
-    {
42
-        return 0;
43
-    }
34
+	/**
35
+	 * the time in seconds to cache the results of the processShortcode() method
36
+	 * 0 means the processShortcode() results will NOT be cached at all
37
+	 *
38
+	 * @return int
39
+	 */
40
+	public function cacheExpiration()
41
+	{
42
+		return 0;
43
+	}
44 44
 
45 45
 
46
-    /**
47
-     * a place for adding any initialization code that needs to run prior to wp_header().
48
-     * this may be required for shortcodes that utilize a corresponding module,
49
-     * and need to enqueue assets for that module
50
-     *
51
-     * @return void
52
-     */
53
-    public function initializeShortcode()
54
-    {
55
-        $this->shortcodeHasBeenInitialized();
56
-    }
46
+	/**
47
+	 * a place for adding any initialization code that needs to run prior to wp_header().
48
+	 * this may be required for shortcodes that utilize a corresponding module,
49
+	 * and need to enqueue assets for that module
50
+	 *
51
+	 * @return void
52
+	 */
53
+	public function initializeShortcode()
54
+	{
55
+		$this->shortcodeHasBeenInitialized();
56
+	}
57 57
 
58 58
 
59
-    /**
60
-     * callback that runs when the shortcode is encountered in post content.
61
-     * IMPORTANT !!!
62
-     * remember that shortcode content should be RETURNED and NOT echoed out
63
-     *
64
-     * @param array $attributes
65
-     * @return string
66
-     * @throws \EE_Error
67
-     */
68
-    public function processShortcode($attributes = array())
69
-    {
70
-        $transaction = EE_Registry::instance()->SSN->get_session_data('transaction');
71
-        if ($transaction instanceof EE_Transaction) {
72
-            do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__transaction', $transaction);
73
-            $registrations = $transaction->registrations();
74
-            foreach ($registrations as $registration) {
75
-                if ($registration instanceof EE_Registration) {
76
-                    do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__registration', $registration);
77
-                }
78
-            }
79
-        }
80
-        do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__clear_session');
81
-        // remove all unwanted records from the db
82
-        if (EE_Registry::instance()->CART instanceof EE_Cart) {
83
-            EE_Registry::instance()->CART->delete_cart();
84
-        }
85
-        // phpcs:disable WordPress.WP.I18n.UnorderedPlaceholdersText
86
-        EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__);
87
-        return sprintf(
88
-            __(
89
-                '%sAll unsaved registration information entered during this session has been deleted.%s',
90
-                'event_espresso'
91
-            ),
92
-            '<p class="ee-registrations-cancelled-pg ee-attention">',
93
-            '</p>'
94
-        );
95
-        // phpcs:enable
96
-    }
59
+	/**
60
+	 * callback that runs when the shortcode is encountered in post content.
61
+	 * IMPORTANT !!!
62
+	 * remember that shortcode content should be RETURNED and NOT echoed out
63
+	 *
64
+	 * @param array $attributes
65
+	 * @return string
66
+	 * @throws \EE_Error
67
+	 */
68
+	public function processShortcode($attributes = array())
69
+	{
70
+		$transaction = EE_Registry::instance()->SSN->get_session_data('transaction');
71
+		if ($transaction instanceof EE_Transaction) {
72
+			do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__transaction', $transaction);
73
+			$registrations = $transaction->registrations();
74
+			foreach ($registrations as $registration) {
75
+				if ($registration instanceof EE_Registration) {
76
+					do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__registration', $registration);
77
+				}
78
+			}
79
+		}
80
+		do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__clear_session');
81
+		// remove all unwanted records from the db
82
+		if (EE_Registry::instance()->CART instanceof EE_Cart) {
83
+			EE_Registry::instance()->CART->delete_cart();
84
+		}
85
+		// phpcs:disable WordPress.WP.I18n.UnorderedPlaceholdersText
86
+		EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__);
87
+		return sprintf(
88
+			__(
89
+				'%sAll unsaved registration information entered during this session has been deleted.%s',
90
+				'event_espresso'
91
+			),
92
+			'<p class="ee-registrations-cancelled-pg ee-attention">',
93
+			'</p>'
94
+		);
95
+		// phpcs:enable
96
+	}
97 97
 }
Please login to merge, or discard this patch.