Completed
Branch dev (02312e)
by
unknown
11:42 queued 04:50
created
core/domain/services/admin/privacy/export/ExportAttendeeBillingData.php 2 patches
Indentation   +107 added lines, -107 removed lines patch added patch discarded remove patch
@@ -18,117 +18,117 @@
 block discarded – undo
18 18
  */
19 19
 class ExportAttendeeBillingData implements PersonalDataExporterInterface
20 20
 {
21
-    /**
22
-     * @var EEM_Attendee
23
-     */
24
-    protected $attendee_model;
21
+	/**
22
+	 * @var EEM_Attendee
23
+	 */
24
+	protected $attendee_model;
25 25
 
26
-    /**
27
-     * @var EEM_Payment_Method
28
-     */
29
-    protected $payment_method_model;
26
+	/**
27
+	 * @var EEM_Payment_Method
28
+	 */
29
+	protected $payment_method_model;
30 30
 
31
-    /**
32
-     * ExportAttendeeBillingData constructor.
33
-     *
34
-     * @param EEM_Attendee $attendee_model
35
-     */
36
-    public function __construct(EEM_Attendee $attendee_model, EEM_Payment_Method $payment_method_model)
37
-    {
38
-        $this->attendee_model = $attendee_model;
39
-        $this->payment_method_model = $payment_method_model;
40
-    }
31
+	/**
32
+	 * ExportAttendeeBillingData constructor.
33
+	 *
34
+	 * @param EEM_Attendee $attendee_model
35
+	 */
36
+	public function __construct(EEM_Attendee $attendee_model, EEM_Payment_Method $payment_method_model)
37
+	{
38
+		$this->attendee_model = $attendee_model;
39
+		$this->payment_method_model = $payment_method_model;
40
+	}
41 41
 
42
-    /**
43
-     * Returns data for export.
44
-     *
45
-     * @param string    $email_address ,
46
-     * @param int       $page          starts at 1, not 0
47
-     * @return array {
48
-     * @type array      $data          {
49
-     * @type array {
50
-     * @type string     $group_id      (not translated, same for all exports)
51
-     * @type string     $group_label   (translated string)
52
-     * @type string|int $item_id
53
-     * @type array      $data          {
54
-     * @type array {
55
-     * @type string     $name          what's shown in the left-column of the export row
56
-     * @type string     $value         what's showin the right-column of the export row
57
-     *                                 }
58
-     *                                 }
59
-     *                                 }
60
-     *                                 }
61
-     *                                 }
62
-     */
63
-    public function export($email_address, $page = 1)
64
-    {
65
-        $page_size = 10;
66
-        $attendees = $this->attendee_model->get_all(
67
-            array(
68
-                array(
69
-                    'ATT_email' => $email_address,
70
-                ),
71
-                'limit' => array(
72
-                    ($page - 1) * $page_size,
73
-                    $page_size,
74
-                ),
75
-            )
76
-        );
77
-        // get all payment methods, even inactive ones
78
-        $payment_methods = $this->payment_method_model->get_all(
79
-            array(
80
-                'group_by' => array('PMD_type'),
81
-            )
82
-        );
83
-        $export_items = array();
84
-        $found_something = false;
85
-        foreach ($attendees as $attendee) {
86
-            foreach ($payment_methods as $payment_method) {
87
-                try {
88
-                    $billing_info = $attendee->billing_info_for_payment_method($payment_method);
89
-                } catch (EE_Error $e) {
90
-                    $billing_info = null;
91
-                }
92
-                if (! $billing_info instanceof EE_Form_Section_Proper) {
93
-                    continue;
94
-                }
95
-                $found_something = true;
96
-                $data = array();
97
-                foreach ($billing_info->input_pretty_values(true, true) as $input_name => $display_value) {
98
-                    try {
99
-                        $input = $billing_info->get_input($input_name);
100
-                        $input_display_name = $input->html_label_text();
101
-                    } catch (EE_Error $e) {
102
-                        $input_display_name = $input_name;
103
-                    }
104
-                    $data[] = array(
105
-                        'name'  => strip_tags($input_display_name),
106
-                        'value' => $display_value,
107
-                    );
108
-                }
109
-                $export_items[] = array(
110
-                    'group_id'    => 'billing_data',
111
-                    'group_label' => esc_html__('Billing Data', 'event_espresso'),
112
-                    'item_id'     => $attendee->ID() . '-' . $payment_method->ID(),
113
-                    'data'        => $data,
114
-                );
115
-            }
116
-        }
117
-        return array(
118
-            'data' => $export_items,
119
-            'done' => ! $found_something,
120
-        );
121
-    }
42
+	/**
43
+	 * Returns data for export.
44
+	 *
45
+	 * @param string    $email_address ,
46
+	 * @param int       $page          starts at 1, not 0
47
+	 * @return array {
48
+	 * @type array      $data          {
49
+	 * @type array {
50
+	 * @type string     $group_id      (not translated, same for all exports)
51
+	 * @type string     $group_label   (translated string)
52
+	 * @type string|int $item_id
53
+	 * @type array      $data          {
54
+	 * @type array {
55
+	 * @type string     $name          what's shown in the left-column of the export row
56
+	 * @type string     $value         what's showin the right-column of the export row
57
+	 *                                 }
58
+	 *                                 }
59
+	 *                                 }
60
+	 *                                 }
61
+	 *                                 }
62
+	 */
63
+	public function export($email_address, $page = 1)
64
+	{
65
+		$page_size = 10;
66
+		$attendees = $this->attendee_model->get_all(
67
+			array(
68
+				array(
69
+					'ATT_email' => $email_address,
70
+				),
71
+				'limit' => array(
72
+					($page - 1) * $page_size,
73
+					$page_size,
74
+				),
75
+			)
76
+		);
77
+		// get all payment methods, even inactive ones
78
+		$payment_methods = $this->payment_method_model->get_all(
79
+			array(
80
+				'group_by' => array('PMD_type'),
81
+			)
82
+		);
83
+		$export_items = array();
84
+		$found_something = false;
85
+		foreach ($attendees as $attendee) {
86
+			foreach ($payment_methods as $payment_method) {
87
+				try {
88
+					$billing_info = $attendee->billing_info_for_payment_method($payment_method);
89
+				} catch (EE_Error $e) {
90
+					$billing_info = null;
91
+				}
92
+				if (! $billing_info instanceof EE_Form_Section_Proper) {
93
+					continue;
94
+				}
95
+				$found_something = true;
96
+				$data = array();
97
+				foreach ($billing_info->input_pretty_values(true, true) as $input_name => $display_value) {
98
+					try {
99
+						$input = $billing_info->get_input($input_name);
100
+						$input_display_name = $input->html_label_text();
101
+					} catch (EE_Error $e) {
102
+						$input_display_name = $input_name;
103
+					}
104
+					$data[] = array(
105
+						'name'  => strip_tags($input_display_name),
106
+						'value' => $display_value,
107
+					);
108
+				}
109
+				$export_items[] = array(
110
+					'group_id'    => 'billing_data',
111
+					'group_label' => esc_html__('Billing Data', 'event_espresso'),
112
+					'item_id'     => $attendee->ID() . '-' . $payment_method->ID(),
113
+					'data'        => $data,
114
+				);
115
+			}
116
+		}
117
+		return array(
118
+			'data' => $export_items,
119
+			'done' => ! $found_something,
120
+		);
121
+	}
122 122
 
123
-    /**
124
-     * Gets the Translated name of this exporter
125
-     *
126
-     * @return string
127
-     */
128
-    public function name()
129
-    {
130
-        return esc_html__('Event Espresso Attendee Billing Data Exporter', 'event_espresso');
131
-    }
123
+	/**
124
+	 * Gets the Translated name of this exporter
125
+	 *
126
+	 * @return string
127
+	 */
128
+	public function name()
129
+	{
130
+		return esc_html__('Event Espresso Attendee Billing Data Exporter', 'event_espresso');
131
+	}
132 132
 }
133 133
 // End of file ExportAttendeeBillingData.php
134 134
 // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportAttendeeBillingData.php
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
                 } catch (EE_Error $e) {
90 90
                     $billing_info = null;
91 91
                 }
92
-                if (! $billing_info instanceof EE_Form_Section_Proper) {
92
+                if ( ! $billing_info instanceof EE_Form_Section_Proper) {
93 93
                     continue;
94 94
                 }
95 95
                 $found_something = true;
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
                 $export_items[] = array(
110 110
                     'group_id'    => 'billing_data',
111 111
                     'group_label' => esc_html__('Billing Data', 'event_espresso'),
112
-                    'item_id'     => $attendee->ID() . '-' . $payment_method->ID(),
112
+                    'item_id'     => $attendee->ID().'-'.$payment_method->ID(),
113 113
                     'data'        => $data,
114 114
                 );
115 115
             }
Please login to merge, or discard this patch.
core/domain/services/admin/privacy/erasure/EraseAnswers.php 1 patch
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -16,88 +16,88 @@
 block discarded – undo
16 16
  */
17 17
 class EraseAnswers implements PersonalDataEraserInterface
18 18
 {
19
-    /**
20
-     * @var EEM_Answer
21
-     */
22
-    protected $answer_model;
19
+	/**
20
+	 * @var EEM_Answer
21
+	 */
22
+	protected $answer_model;
23 23
 
24
-    /**
25
-     * @var EEM_Question
26
-     */
27
-    protected $question_model;
24
+	/**
25
+	 * @var EEM_Question
26
+	 */
27
+	protected $question_model;
28 28
 
29
-    /**
30
-     * EraseAnswers constructor.
31
-     *
32
-     * @param EEM_Answer   $answer_model
33
-     * @param EEM_Question $question_model
34
-     */
35
-    public function __construct(EEM_Answer $answer_model, EEM_Question $question_model)
36
-    {
37
-        $this->answer_model = $answer_model;
38
-        $this->question_model = $question_model;
39
-    }
29
+	/**
30
+	 * EraseAnswers constructor.
31
+	 *
32
+	 * @param EEM_Answer   $answer_model
33
+	 * @param EEM_Question $question_model
34
+	 */
35
+	public function __construct(EEM_Answer $answer_model, EEM_Question $question_model)
36
+	{
37
+		$this->answer_model = $answer_model;
38
+		$this->question_model = $question_model;
39
+	}
40 40
 
41 41
 
42
-    /**
43
-     * Gets a translated string name for the data eraser
44
-     *
45
-     * @return string
46
-     */
47
-    public function name()
48
-    {
49
-        return esc_html__('Event Espresso Registration Answers', 'event_espresso');
50
-    }
42
+	/**
43
+	 * Gets a translated string name for the data eraser
44
+	 *
45
+	 * @return string
46
+	 */
47
+	public function name()
48
+	{
49
+		return esc_html__('Event Espresso Registration Answers', 'event_espresso');
50
+	}
51 51
 
52
-    /**
53
-     * Erases a "page" of personal user data
54
-     *
55
-     * @return array {
56
-     * @type boolean $items_removed  whether items were removed successfully or not
57
-     * @type boolean $items_retained whether any items were skipped or not
58
-     * @type array   $messages       values are messages to show
59
-     * @type boolean $done           whether this eraser is done or has more pages
60
-     *               }
61
-     */
62
-    public function erase($email_address, $page = 1)
63
-    {
64
-        $multi_answer_enum_question_types = $this->question_model->question_types_in_category('multi-answer-enum');
65
-        $normal_questions_updated = $this->answer_model->update(
66
-            array(
67
-                'ANS_value' => '',
68
-            ),
69
-            array(
70
-                array(
71
-                    'Registration.Attendee.ATT_email' => $email_address,
72
-                    'Question.QST_type'               => array(
73
-                        'NOT_IN',
74
-                        $multi_answer_enum_question_types,
75
-                    ),
76
-                ),
77
-            )
78
-        );
79
-        $multi_value_questions_updated = $this->answer_model->update(
80
-            array(
81
-                'ANS_value' => array(),
82
-            ),
83
-            array(
84
-                array(
85
-                    'Registration.Attendee.ATT_email' => $email_address,
86
-                    'Question.QST_type'               => array(
87
-                        'IN',
88
-                        $multi_answer_enum_question_types,
89
-                    ),
90
-                ),
91
-            )
92
-        );
52
+	/**
53
+	 * Erases a "page" of personal user data
54
+	 *
55
+	 * @return array {
56
+	 * @type boolean $items_removed  whether items were removed successfully or not
57
+	 * @type boolean $items_retained whether any items were skipped or not
58
+	 * @type array   $messages       values are messages to show
59
+	 * @type boolean $done           whether this eraser is done or has more pages
60
+	 *               }
61
+	 */
62
+	public function erase($email_address, $page = 1)
63
+	{
64
+		$multi_answer_enum_question_types = $this->question_model->question_types_in_category('multi-answer-enum');
65
+		$normal_questions_updated = $this->answer_model->update(
66
+			array(
67
+				'ANS_value' => '',
68
+			),
69
+			array(
70
+				array(
71
+					'Registration.Attendee.ATT_email' => $email_address,
72
+					'Question.QST_type'               => array(
73
+						'NOT_IN',
74
+						$multi_answer_enum_question_types,
75
+					),
76
+				),
77
+			)
78
+		);
79
+		$multi_value_questions_updated = $this->answer_model->update(
80
+			array(
81
+				'ANS_value' => array(),
82
+			),
83
+			array(
84
+				array(
85
+					'Registration.Attendee.ATT_email' => $email_address,
86
+					'Question.QST_type'               => array(
87
+						'IN',
88
+						$multi_answer_enum_question_types,
89
+					),
90
+				),
91
+			)
92
+		);
93 93
 
94
-        return array(
95
-            'items_removed'  => (bool) $normal_questions_updated || (bool) $multi_value_questions_updated,
96
-            'items_retained' => false, // always false in this example
97
-            'messages'       => array(), // no messages in this example
98
-            'done'           => true,
99
-        );
100
-    }
94
+		return array(
95
+			'items_removed'  => (bool) $normal_questions_updated || (bool) $multi_value_questions_updated,
96
+			'items_retained' => false, // always false in this example
97
+			'messages'       => array(), // no messages in this example
98
+			'done'           => true,
99
+		);
100
+	}
101 101
 }
102 102
 // End of file EraseAnswers.php
103 103
 // Location: EventEspresso\core\domain\services\privacy\erasure/EraseAnswers.php
Please login to merge, or discard this patch.
core/services/privacy/export/PersonalDataExporterInterface.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -14,35 +14,35 @@
 block discarded – undo
14 14
  */
15 15
 interface PersonalDataExporterInterface
16 16
 {
17
-    /**
18
-     * Gets the Translated name of this exporter
19
-     *
20
-     * @return string
21
-     */
22
-    public function name();
17
+	/**
18
+	 * Gets the Translated name of this exporter
19
+	 *
20
+	 * @return string
21
+	 */
22
+	public function name();
23 23
 
24
-    /**
25
-     * Returns data for export.
26
-     *
27
-     * @param string    $email_address ,
28
-     * @param int       $page          starts at 1, not 0
29
-     * @return array {
30
-     * @type array      $data          {
31
-     * @type array {
32
-     * @type string     $group_id      (not translated, same for all exports)
33
-     * @type string     $group_label   (translated string)
34
-     * @type string|int $item_id
35
-     * @type array      $data          {
36
-     * @type array {
37
-     * @type string     $name          what's shown in the left-column of the export row
38
-     * @type string     $value         what's showin the right-column of the export row
39
-     *                                 }
40
-     *                                 }
41
-     *                                 }
42
-     *                                 }
43
-     *                                 }
44
-     */
45
-    public function export($email_address, $page = 1);
24
+	/**
25
+	 * Returns data for export.
26
+	 *
27
+	 * @param string    $email_address ,
28
+	 * @param int       $page          starts at 1, not 0
29
+	 * @return array {
30
+	 * @type array      $data          {
31
+	 * @type array {
32
+	 * @type string     $group_id      (not translated, same for all exports)
33
+	 * @type string     $group_label   (translated string)
34
+	 * @type string|int $item_id
35
+	 * @type array      $data          {
36
+	 * @type array {
37
+	 * @type string     $name          what's shown in the left-column of the export row
38
+	 * @type string     $value         what's showin the right-column of the export row
39
+	 *                                 }
40
+	 *                                 }
41
+	 *                                 }
42
+	 *                                 }
43
+	 *                                 }
44
+	 */
45
+	public function export($email_address, $page = 1);
46 46
 }
47 47
 // End of file PersonalDataExporterInterface.php
48 48
 // Location: EventEspresso\core\domain\services\admin/PersonalDataExporterInterface.php
Please login to merge, or discard this patch.
core/services/privacy/export/PersonalDataExporterManager.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -43,7 +43,7 @@
 block discarded – undo
43 43
         // load all the privacy policy stuff
44 44
         // add post policy text
45 45
         foreach ($this->loadPrivateDataExporterCollection() as $exporter) {
46
-            $exporters[ get_class($exporter) ] = array(
46
+            $exporters[get_class($exporter)] = array(
47 47
                 'exporter_friendly_name' => $exporter->name(),
48 48
                 'callback'               => array($exporter, 'export'),
49 49
             );
Please login to merge, or discard this patch.
Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -22,68 +22,68 @@
 block discarded – undo
22 22
  */
23 23
 class PersonalDataExporterManager
24 24
 {
25
-    public function __construct()
26
-    {
27
-        add_filter(
28
-            'wp_privacy_personal_data_exporters',
29
-            array($this, 'hookInExporters')
30
-        );
31
-    }
25
+	public function __construct()
26
+	{
27
+		add_filter(
28
+			'wp_privacy_personal_data_exporters',
29
+			array($this, 'hookInExporters')
30
+		);
31
+	}
32 32
 
33 33
 
34
-    /**
35
-     * Adds EE's exporters to the list of WP exporters
36
-     *
37
-     * @param array $exporters
38
-     * @return array
39
-     */
40
-    public function hookInExporters($exporters)
41
-    {
42
-        // load all the privacy policy stuff
43
-        // add post policy text
44
-        foreach ($this->loadPrivateDataExporterCollection() as $exporter) {
45
-            $exporters[ get_class($exporter) ] = array(
46
-                'exporter_friendly_name' => $exporter->name(),
47
-                'callback'               => array($exporter, 'export'),
48
-            );
49
-        }
50
-        return $exporters;
51
-    }
34
+	/**
35
+	 * Adds EE's exporters to the list of WP exporters
36
+	 *
37
+	 * @param array $exporters
38
+	 * @return array
39
+	 */
40
+	public function hookInExporters($exporters)
41
+	{
42
+		// load all the privacy policy stuff
43
+		// add post policy text
44
+		foreach ($this->loadPrivateDataExporterCollection() as $exporter) {
45
+			$exporters[ get_class($exporter) ] = array(
46
+				'exporter_friendly_name' => $exporter->name(),
47
+				'callback'               => array($exporter, 'export'),
48
+			);
49
+		}
50
+		return $exporters;
51
+	}
52 52
 
53 53
 
54
-    /**
55
-     * @return CollectionInterface|PersonalDataExporterInterface[]
56
-     * @throws InvalidIdentifierException
57
-     * @throws InvalidInterfaceException
58
-     * @throws InvalidFilePathException
59
-     * @throws InvalidEntityException
60
-     * @throws InvalidDataTypeException
61
-     * @throws InvalidClassException
62
-     */
63
-    protected function loadPrivateDataExporterCollection()
64
-    {
65
-        $loader = new CollectionLoader(
66
-            new CollectionDetails(
67
-                // collection name
68
-                'personal_data_exporters',
69
-                // collection interface
70
-                'EventEspresso\core\services\privacy\export\PersonalDataExporterInterface',
71
-                // FQCNs for classes to add (all classes within that namespace will be loaded)
72
-                apply_filters(
73
-                    'FHEE__EventEspresso_core_services_privacy_export_PersonalDataExporterManager__exporters',
74
-                    array('EventEspresso\core\domain\services\admin\privacy\export')
75
-                ),
76
-                // filepaths to classes to add
77
-                array(),
78
-                // file mask to use if parsing folder for files to add
79
-                '',
80
-                // what to use as identifier for collection entities
81
-                // using CLASS NAME prevents duplicates (works like a singleton)
82
-                CollectionDetails::ID_CLASS_NAME
83
-            )
84
-        );
85
-        return $loader->getCollection();
86
-    }
54
+	/**
55
+	 * @return CollectionInterface|PersonalDataExporterInterface[]
56
+	 * @throws InvalidIdentifierException
57
+	 * @throws InvalidInterfaceException
58
+	 * @throws InvalidFilePathException
59
+	 * @throws InvalidEntityException
60
+	 * @throws InvalidDataTypeException
61
+	 * @throws InvalidClassException
62
+	 */
63
+	protected function loadPrivateDataExporterCollection()
64
+	{
65
+		$loader = new CollectionLoader(
66
+			new CollectionDetails(
67
+				// collection name
68
+				'personal_data_exporters',
69
+				// collection interface
70
+				'EventEspresso\core\services\privacy\export\PersonalDataExporterInterface',
71
+				// FQCNs for classes to add (all classes within that namespace will be loaded)
72
+				apply_filters(
73
+					'FHEE__EventEspresso_core_services_privacy_export_PersonalDataExporterManager__exporters',
74
+					array('EventEspresso\core\domain\services\admin\privacy\export')
75
+				),
76
+				// filepaths to classes to add
77
+				array(),
78
+				// file mask to use if parsing folder for files to add
79
+				'',
80
+				// what to use as identifier for collection entities
81
+				// using CLASS NAME prevents duplicates (works like a singleton)
82
+				CollectionDetails::ID_CLASS_NAME
83
+			)
84
+		);
85
+		return $loader->getCollection();
86
+	}
87 87
 }
88 88
 
89 89
 // End of file PersonalDataExporterManager.php
Please login to merge, or discard this patch.
core/services/privacy/erasure/PersonalDataEraserManager.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@
 block discarded – undo
40 40
         // load all the privacy policy stuff
41 41
         // add post policy text
42 42
         foreach ($this->loadPrivateDataEraserCollection() as $eraser) {
43
-            $erasers[ get_class($eraser) ] = array(
43
+            $erasers[get_class($eraser)] = array(
44 44
                 'eraser_friendly_name' => $eraser->name(),
45 45
                 'callback'             => array($eraser, 'erase'),
46 46
             );
Please login to merge, or discard this patch.
Indentation   +55 added lines, -55 removed lines patch added patch discarded remove patch
@@ -22,65 +22,65 @@
 block discarded – undo
22 22
  */
23 23
 class PersonalDataEraserManager
24 24
 {
25
-    public function __construct()
26
-    {
27
-        add_filter(
28
-            'wp_privacy_personal_data_erasers',
29
-            array($this, 'hookInErasers')
30
-        );
31
-    }
25
+	public function __construct()
26
+	{
27
+		add_filter(
28
+			'wp_privacy_personal_data_erasers',
29
+			array($this, 'hookInErasers')
30
+		);
31
+	}
32 32
 
33 33
 
34
-    /**
35
-     * For all the registered `PrivateDataEraserInterface`s, add them as erasers
36
-     */
37
-    public function hookInErasers($erasers)
38
-    {
39
-        // load all the privacy policy stuff
40
-        // add post policy text
41
-        foreach ($this->loadPrivateDataEraserCollection() as $eraser) {
42
-            $erasers[ get_class($eraser) ] = array(
43
-                'eraser_friendly_name' => $eraser->name(),
44
-                'callback'             => array($eraser, 'erase'),
45
-            );
46
-        }
47
-        return $erasers;
48
-    }
34
+	/**
35
+	 * For all the registered `PrivateDataEraserInterface`s, add them as erasers
36
+	 */
37
+	public function hookInErasers($erasers)
38
+	{
39
+		// load all the privacy policy stuff
40
+		// add post policy text
41
+		foreach ($this->loadPrivateDataEraserCollection() as $eraser) {
42
+			$erasers[ get_class($eraser) ] = array(
43
+				'eraser_friendly_name' => $eraser->name(),
44
+				'callback'             => array($eraser, 'erase'),
45
+			);
46
+		}
47
+		return $erasers;
48
+	}
49 49
 
50 50
 
51
-    /**
52
-     * @return CollectionInterface|PersonalDataEraserInterface[]
53
-     * @throws InvalidIdentifierException
54
-     * @throws InvalidInterfaceException
55
-     * @throws InvalidFilePathException
56
-     * @throws InvalidEntityException
57
-     * @throws InvalidDataTypeException
58
-     * @throws InvalidClassException
59
-     */
60
-    protected function loadPrivateDataEraserCollection()
61
-    {
62
-        $loader = new CollectionLoader(
63
-            new CollectionDetails(
64
-                // collection name
65
-                'privacy_erasers',
66
-                // collection interface
67
-                'EventEspresso\core\services\privacy\erasure\PersonalDataEraserInterface',
68
-                // FQCNs for classes to add (all classes within that namespace will be loaded)
69
-                apply_filters(
70
-                    'FHEE__EventEspresso_core_services_privacy_erasure_PersonalDataEraserManager__erasers',
71
-                    array('EventEspresso\core\domain\services\admin\privacy\erasure')
72
-                ),
73
-                // filepaths to classes to add
74
-                array(),
75
-                // file mask to use if parsing folder for files to add
76
-                '',
77
-                // what to use as identifier for collection entities
78
-                // using CLASS NAME prevents duplicates (works like a singleton)
79
-                CollectionDetails::ID_CLASS_NAME
80
-            )
81
-        );
82
-        return $loader->getCollection();
83
-    }
51
+	/**
52
+	 * @return CollectionInterface|PersonalDataEraserInterface[]
53
+	 * @throws InvalidIdentifierException
54
+	 * @throws InvalidInterfaceException
55
+	 * @throws InvalidFilePathException
56
+	 * @throws InvalidEntityException
57
+	 * @throws InvalidDataTypeException
58
+	 * @throws InvalidClassException
59
+	 */
60
+	protected function loadPrivateDataEraserCollection()
61
+	{
62
+		$loader = new CollectionLoader(
63
+			new CollectionDetails(
64
+				// collection name
65
+				'privacy_erasers',
66
+				// collection interface
67
+				'EventEspresso\core\services\privacy\erasure\PersonalDataEraserInterface',
68
+				// FQCNs for classes to add (all classes within that namespace will be loaded)
69
+				apply_filters(
70
+					'FHEE__EventEspresso_core_services_privacy_erasure_PersonalDataEraserManager__erasers',
71
+					array('EventEspresso\core\domain\services\admin\privacy\erasure')
72
+				),
73
+				// filepaths to classes to add
74
+				array(),
75
+				// file mask to use if parsing folder for files to add
76
+				'',
77
+				// what to use as identifier for collection entities
78
+				// using CLASS NAME prevents duplicates (works like a singleton)
79
+				CollectionDetails::ID_CLASS_NAME
80
+			)
81
+		);
82
+		return $loader->getCollection();
83
+	}
84 84
 }
85 85
 // End of file PersonalDataEraserManager.php
86 86
 // Location: EventEspresso\core\domain\services\admin/PersonalDataEraserManager.php
Please login to merge, or discard this patch.
core/services/request/middleware/RecommendedVersions.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -32,18 +32,18 @@  discard block
 block discarded – undo
32 32
         $this->request = $request;
33 33
         $this->response = $response;
34 34
         // check required WP version
35
-        if (! $this->minimumWordPressVersionRequired()) {
35
+        if ( ! $this->minimumWordPressVersionRequired()) {
36 36
             $this->request->unSetRequestParam('activate', true);
37 37
             add_action('admin_notices', array($this, 'minimumWpVersionError'), 1);
38 38
             $this->response->terminateRequest();
39 39
             $this->response->deactivatePlugin();
40 40
         }
41 41
         // check recommended PHP version
42
-        if (! $this->minimumPhpVersionRecommended()) {
42
+        if ( ! $this->minimumPhpVersionRecommended()) {
43 43
             $this->displayMinimumRecommendedPhpVersionNotice();
44 44
         }
45 45
         // upcoming required version
46
-        if (! $this->upcomingRequiredPhpVersion()) {
46
+        if ( ! $this->upcomingRequiredPhpVersion()) {
47 47
             $this->displayUpcomingRequiredVersion();
48 48
         }
49 49
         $this->response = $this->processRequestStack($this->request, $this->response);
@@ -142,7 +142,7 @@  discard block
 block discarded – undo
142 142
     {
143 143
         if ($this->request->isAdmin()) {
144 144
             new PersistentAdminNotice(
145
-                'php_version_' . str_replace('.', '-', EE_MIN_PHP_VER_RECOMMENDED) . '_recommended',
145
+                'php_version_'.str_replace('.', '-', EE_MIN_PHP_VER_RECOMMENDED).'_recommended',
146 146
                 sprintf(
147 147
                     esc_html__(
148 148
                         'Event Espresso recommends PHP version %1$s or greater for optimal performance. You are currently running version %2$s.%3$sIn order to update your version of PHP, you will need to contact your current hosting provider.%3$sFor information on stable PHP versions, please go to %4$s.',
@@ -180,7 +180,7 @@  discard block
 block discarded – undo
180 180
             && apply_filters('FHEE__EE_Recommended_Versions__displayUpcomingRequiredVersion', true, $this->request)
181 181
             && current_user_can('update_plugins')
182 182
         ) {
183
-            add_action('admin_notices', function () {
183
+            add_action('admin_notices', function() {
184 184
                 echo '<div class="notice event-espresso-admin-notice notice-warning"><p>'
185 185
                      . sprintf(
186 186
                          esc_html__(
Please login to merge, or discard this patch.
Indentation   +173 added lines, -173 removed lines patch added patch discarded remove patch
@@ -18,183 +18,183 @@
 block discarded – undo
18 18
  */
19 19
 class RecommendedVersions extends Middleware
20 20
 {
21
-    /**
22
-     * converts a Request to a Response
23
-     *
24
-     * @param RequestInterface  $request
25
-     * @param ResponseInterface $response
26
-     * @return ResponseInterface
27
-     * @throws InvalidDataTypeException
28
-     */
29
-    public function handleRequest(RequestInterface $request, ResponseInterface $response)
30
-    {
31
-        $this->request = $request;
32
-        $this->response = $response;
33
-        // check required WP version
34
-        if (! $this->minimumWordPressVersionRequired()) {
35
-            $this->request->unSetRequestParam('activate', true);
36
-            add_action('admin_notices', array($this, 'minimumWpVersionError'), 1);
37
-            $this->response->terminateRequest();
38
-            $this->response->deactivatePlugin();
39
-        }
40
-        // check recommended PHP version
41
-        if (! $this->minimumPhpVersionRecommended()) {
42
-            $this->displayMinimumRecommendedPhpVersionNotice();
43
-        }
44
-        // upcoming required version
45
-        if (! $this->upcomingRequiredPhpVersion()) {
46
-            $this->displayUpcomingRequiredVersion();
47
-        }
48
-        $this->response = $this->processRequestStack($this->request, $this->response);
49
-        return $this->response;
50
-    }
51
-
52
-
53
-    /**
54
-     * Helper method to assess installed wp version against given values.
55
-     * By default this compares the required minimum version of WP for EE against the installed version of WP
56
-     * Note, $wp_version is the first parameter sent into the PHP version_compare function (what is being checked
57
-     * against) so consider that when sending in your values.
58
-     *
59
-     * @param string $version_to_check
60
-     * @param string $operator
61
-     * @return bool
62
-     */
63
-    public static function compareWordPressVersion($version_to_check = EE_MIN_WP_VER_REQUIRED, $operator = '>=')
64
-    {
65
-        global $wp_version;
66
-        return version_compare(
67
-            // first account for wp_version being pre-release
68
-            // (like RC, beta etc) which are usually in the format like 4.7-RC3-39519
69
-            strpos($wp_version, '-') > 0
70
-                ? substr($wp_version, 0, strpos($wp_version, '-'))
71
-                : $wp_version,
72
-            $version_to_check,
73
-            $operator
74
-        );
75
-    }
76
-
77
-
78
-    /**
79
-     * @return boolean
80
-     */
81
-    private function minimumWordPressVersionRequired()
82
-    {
83
-        return RecommendedVersions::compareWordPressVersion();
84
-    }
85
-
86
-
87
-    /**
88
-     * @param string $min_version
89
-     * @return boolean
90
-     */
91
-    private function checkPhpVersion($min_version = EE_MIN_PHP_VER_RECOMMENDED)
92
-    {
93
-        return version_compare(PHP_VERSION, $min_version, '>=') ? true : false;
94
-    }
95
-
96
-
97
-    /**
98
-     * @return boolean
99
-     */
100
-    private function minimumPhpVersionRecommended()
101
-    {
102
-        return $this->checkPhpVersion();
103
-    }
104
-
105
-
106
-    /**
107
-     * @return void
108
-     */
109
-    public function minimumWpVersionError()
110
-    {
111
-        global $wp_version;
112
-        ?>
21
+	/**
22
+	 * converts a Request to a Response
23
+	 *
24
+	 * @param RequestInterface  $request
25
+	 * @param ResponseInterface $response
26
+	 * @return ResponseInterface
27
+	 * @throws InvalidDataTypeException
28
+	 */
29
+	public function handleRequest(RequestInterface $request, ResponseInterface $response)
30
+	{
31
+		$this->request = $request;
32
+		$this->response = $response;
33
+		// check required WP version
34
+		if (! $this->minimumWordPressVersionRequired()) {
35
+			$this->request->unSetRequestParam('activate', true);
36
+			add_action('admin_notices', array($this, 'minimumWpVersionError'), 1);
37
+			$this->response->terminateRequest();
38
+			$this->response->deactivatePlugin();
39
+		}
40
+		// check recommended PHP version
41
+		if (! $this->minimumPhpVersionRecommended()) {
42
+			$this->displayMinimumRecommendedPhpVersionNotice();
43
+		}
44
+		// upcoming required version
45
+		if (! $this->upcomingRequiredPhpVersion()) {
46
+			$this->displayUpcomingRequiredVersion();
47
+		}
48
+		$this->response = $this->processRequestStack($this->request, $this->response);
49
+		return $this->response;
50
+	}
51
+
52
+
53
+	/**
54
+	 * Helper method to assess installed wp version against given values.
55
+	 * By default this compares the required minimum version of WP for EE against the installed version of WP
56
+	 * Note, $wp_version is the first parameter sent into the PHP version_compare function (what is being checked
57
+	 * against) so consider that when sending in your values.
58
+	 *
59
+	 * @param string $version_to_check
60
+	 * @param string $operator
61
+	 * @return bool
62
+	 */
63
+	public static function compareWordPressVersion($version_to_check = EE_MIN_WP_VER_REQUIRED, $operator = '>=')
64
+	{
65
+		global $wp_version;
66
+		return version_compare(
67
+			// first account for wp_version being pre-release
68
+			// (like RC, beta etc) which are usually in the format like 4.7-RC3-39519
69
+			strpos($wp_version, '-') > 0
70
+				? substr($wp_version, 0, strpos($wp_version, '-'))
71
+				: $wp_version,
72
+			$version_to_check,
73
+			$operator
74
+		);
75
+	}
76
+
77
+
78
+	/**
79
+	 * @return boolean
80
+	 */
81
+	private function minimumWordPressVersionRequired()
82
+	{
83
+		return RecommendedVersions::compareWordPressVersion();
84
+	}
85
+
86
+
87
+	/**
88
+	 * @param string $min_version
89
+	 * @return boolean
90
+	 */
91
+	private function checkPhpVersion($min_version = EE_MIN_PHP_VER_RECOMMENDED)
92
+	{
93
+		return version_compare(PHP_VERSION, $min_version, '>=') ? true : false;
94
+	}
95
+
96
+
97
+	/**
98
+	 * @return boolean
99
+	 */
100
+	private function minimumPhpVersionRecommended()
101
+	{
102
+		return $this->checkPhpVersion();
103
+	}
104
+
105
+
106
+	/**
107
+	 * @return void
108
+	 */
109
+	public function minimumWpVersionError()
110
+	{
111
+		global $wp_version;
112
+		?>
113 113
         <div class="error">
114 114
             <p>
115 115
                 <?php
116
-                printf(
117
-                    esc_html__(
118
-                        'We\'re sorry, but Event Espresso requires WordPress version %1$s or greater in order to operate. You are currently running version %2$s.%3$sFor information on how to update your version of WordPress, please go to %4$s.',
119
-                        'event_espresso'
120
-                    ),
121
-                    EE_MIN_WP_VER_REQUIRED,
122
-                    $wp_version,
123
-                    '<br/>',
124
-                    '<a href="http://codex.wordpress.org/Updating_WordPress">http://codex.wordpress.org/Updating_WordPress</a>'
125
-                );
126
-                ?>
116
+				printf(
117
+					esc_html__(
118
+						'We\'re sorry, but Event Espresso requires WordPress version %1$s or greater in order to operate. You are currently running version %2$s.%3$sFor information on how to update your version of WordPress, please go to %4$s.',
119
+						'event_espresso'
120
+					),
121
+					EE_MIN_WP_VER_REQUIRED,
122
+					$wp_version,
123
+					'<br/>',
124
+					'<a href="http://codex.wordpress.org/Updating_WordPress">http://codex.wordpress.org/Updating_WordPress</a>'
125
+				);
126
+				?>
127 127
             </p>
128 128
         </div>
129 129
         <?php
130
-    }
131
-
132
-
133
-    /**
134
-     *    _display_minimum_recommended_php_version_notice
135
-     *
136
-     * @access private
137
-     * @return void
138
-     * @throws InvalidDataTypeException
139
-     */
140
-    private function displayMinimumRecommendedPhpVersionNotice()
141
-    {
142
-        if ($this->request->isAdmin()) {
143
-            new PersistentAdminNotice(
144
-                'php_version_' . str_replace('.', '-', EE_MIN_PHP_VER_RECOMMENDED) . '_recommended',
145
-                sprintf(
146
-                    esc_html__(
147
-                        'Event Espresso recommends PHP version %1$s or greater for optimal performance. You are currently running version %2$s.%3$sIn order to update your version of PHP, you will need to contact your current hosting provider.%3$sFor information on stable PHP versions, please go to %4$s.',
148
-                        'event_espresso'
149
-                    ),
150
-                    EE_MIN_PHP_VER_RECOMMENDED,
151
-                    PHP_VERSION,
152
-                    '<br/>',
153
-                    '<a href="http://php.net/downloads.php">http://php.net/downloads.php</a>'
154
-                )
155
-            );
156
-        }
157
-    }
158
-
159
-
160
-    /**
161
-     * Returns whether the provided php version number is less than the current version of php installed on the server.
162
-     *
163
-     * @param string $version_required
164
-     * @return bool
165
-     */
166
-    private function upcomingRequiredPhpVersion($version_required = '5.5')
167
-    {
168
-        return true;
169
-        // return $this->checkPhpVersion($version_required);
170
-    }
171
-
172
-
173
-    /**
174
-     *  Sets a notice for an upcoming required version of PHP in the next update of EE core.
175
-     */
176
-    private function displayUpcomingRequiredVersion()
177
-    {
178
-        if (
179
-            $this->request->isAdmin()
180
-            && apply_filters('FHEE__EE_Recommended_Versions__displayUpcomingRequiredVersion', true, $this->request)
181
-            && current_user_can('update_plugins')
182
-        ) {
183
-            add_action('admin_notices', function () {
184
-                echo '<div class="notice event-espresso-admin-notice notice-warning"><p>'
185
-                     . sprintf(
186
-                         esc_html__(
187
-                             'Please note: The next update of Event Espresso 4 will %1$srequire%2$s PHP 5.4.45 or greater.  Your web server\'s PHP version is %3$s.  You can contact your host and ask them to update your PHP version to at least PHP 5.6.  Please do not update to the new version of Event Espresso 4 until the PHP update is completed. Read about why keeping your server on the latest version of PHP is a good idea %4$shere%5$s',
188
-                             'event_espresso'
189
-                         ),
190
-                         '<strong>',
191
-                         '</strong>',
192
-                         PHP_VERSION,
193
-                         '<a href="https://wordpress.org/support/upgrade-php/">',
194
-                         '</a>'
195
-                     )
196
-                     . '</p></div>';
197
-            });
198
-        }
199
-    }
130
+	}
131
+
132
+
133
+	/**
134
+	 *    _display_minimum_recommended_php_version_notice
135
+	 *
136
+	 * @access private
137
+	 * @return void
138
+	 * @throws InvalidDataTypeException
139
+	 */
140
+	private function displayMinimumRecommendedPhpVersionNotice()
141
+	{
142
+		if ($this->request->isAdmin()) {
143
+			new PersistentAdminNotice(
144
+				'php_version_' . str_replace('.', '-', EE_MIN_PHP_VER_RECOMMENDED) . '_recommended',
145
+				sprintf(
146
+					esc_html__(
147
+						'Event Espresso recommends PHP version %1$s or greater for optimal performance. You are currently running version %2$s.%3$sIn order to update your version of PHP, you will need to contact your current hosting provider.%3$sFor information on stable PHP versions, please go to %4$s.',
148
+						'event_espresso'
149
+					),
150
+					EE_MIN_PHP_VER_RECOMMENDED,
151
+					PHP_VERSION,
152
+					'<br/>',
153
+					'<a href="http://php.net/downloads.php">http://php.net/downloads.php</a>'
154
+				)
155
+			);
156
+		}
157
+	}
158
+
159
+
160
+	/**
161
+	 * Returns whether the provided php version number is less than the current version of php installed on the server.
162
+	 *
163
+	 * @param string $version_required
164
+	 * @return bool
165
+	 */
166
+	private function upcomingRequiredPhpVersion($version_required = '5.5')
167
+	{
168
+		return true;
169
+		// return $this->checkPhpVersion($version_required);
170
+	}
171
+
172
+
173
+	/**
174
+	 *  Sets a notice for an upcoming required version of PHP in the next update of EE core.
175
+	 */
176
+	private function displayUpcomingRequiredVersion()
177
+	{
178
+		if (
179
+			$this->request->isAdmin()
180
+			&& apply_filters('FHEE__EE_Recommended_Versions__displayUpcomingRequiredVersion', true, $this->request)
181
+			&& current_user_can('update_plugins')
182
+		) {
183
+			add_action('admin_notices', function () {
184
+				echo '<div class="notice event-espresso-admin-notice notice-warning"><p>'
185
+					 . sprintf(
186
+						 esc_html__(
187
+							 'Please note: The next update of Event Espresso 4 will %1$srequire%2$s PHP 5.4.45 or greater.  Your web server\'s PHP version is %3$s.  You can contact your host and ask them to update your PHP version to at least PHP 5.6.  Please do not update to the new version of Event Espresso 4 until the PHP update is completed. Read about why keeping your server on the latest version of PHP is a good idea %4$shere%5$s',
188
+							 'event_espresso'
189
+						 ),
190
+						 '<strong>',
191
+						 '</strong>',
192
+						 PHP_VERSION,
193
+						 '<a href="https://wordpress.org/support/upgrade-php/">',
194
+						 '</a>'
195
+					 )
196
+					 . '</p></div>';
197
+			});
198
+		}
199
+	}
200 200
 }
Please login to merge, or discard this patch.
core/services/assets/AssetCollection.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
             /** @var Asset $asset */
76 76
             $asset = $this->current();
77 77
             if ($asset->type() === $type) {
78
-                $files[ $asset->handle() ] = $asset;
78
+                $files[$asset->handle()] = $asset;
79 79
             }
80 80
             $this->next();
81 81
         }
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
             /** @var JavascriptAsset $asset */
97 97
             $asset = $this->current();
98 98
             if ($asset->type() === Asset::TYPE_JS && $asset->hasInlineData()) {
99
-                $files[ $asset->handle() ] = $asset;
99
+                $files[$asset->handle()] = $asset;
100 100
             }
101 101
             $this->next();
102 102
         }
Please login to merge, or discard this patch.
Indentation   +188 added lines, -188 removed lines patch added patch discarded remove patch
@@ -21,192 +21,192 @@
 block discarded – undo
21 21
 {
22 22
 
23 23
 
24
-    /**
25
-     * AssetCollection constructor
26
-     *
27
-     * @throws InvalidInterfaceException
28
-     */
29
-    public function __construct()
30
-    {
31
-        parent::__construct('EventEspresso\core\domain\values\assets\Asset');
32
-    }
33
-
34
-
35
-    /**
36
-     * @return StylesheetAsset[]
37
-     * @since 4.9.62.p
38
-     */
39
-    public function getStylesheetAssets()
40
-    {
41
-        return $this->getAssetsOfType(Asset::TYPE_CSS);
42
-    }
43
-
44
-
45
-    /**
46
-     * @return JavascriptAsset[]
47
-     * @since 4.9.62.p
48
-     */
49
-    public function getJavascriptAssets()
50
-    {
51
-        return $this->getAssetsOfType(Asset::TYPE_JS);
52
-    }
53
-
54
-
55
-    /**
56
-     * @return ManifestFile[]
57
-     * @since 4.9.62.p
58
-     */
59
-    public function getManifestFiles()
60
-    {
61
-        return $this->getAssetsOfType(Asset::TYPE_MANIFEST);
62
-    }
63
-
64
-
65
-    /**
66
-     * @param $type
67
-     * @return JavascriptAsset[]|StylesheetAsset[]|ManifestFile[]
68
-     * @since 4.9.62.p
69
-     */
70
-    protected function getAssetsOfType($type)
71
-    {
72
-        $files = array();
73
-        $this->rewind();
74
-        while ($this->valid()) {
75
-            /** @var Asset $asset */
76
-            $asset = $this->current();
77
-            if ($asset->type() === $type) {
78
-                $files[ $asset->handle() ] = $asset;
79
-            }
80
-            $this->next();
81
-        }
82
-        $this->rewind();
83
-        return $files;
84
-    }
85
-
86
-
87
-    /**
88
-     * @return JavascriptAsset[]
89
-     * @since 4.9.62.p
90
-     */
91
-    public function getJavascriptAssetsWithData()
92
-    {
93
-        $files = array();
94
-        $this->rewind();
95
-        while ($this->valid()) {
96
-            /** @var JavascriptAsset $asset */
97
-            $asset = $this->current();
98
-            if ($asset->type() === Asset::TYPE_JS && $asset->hasInlineData()) {
99
-                $files[ $asset->handle() ] = $asset;
100
-            }
101
-            $this->next();
102
-        }
103
-        $this->rewind();
104
-        return $files;
105
-    }
106
-
107
-
108
-    /**
109
-     * returns TRUE or FALSE
110
-     * depending on whether the object is within the Collection
111
-     * based on the supplied $identifier and type
112
-     *
113
-     * @param  mixed $identifier
114
-     * @param string $type
115
-     * @return bool
116
-     * @since 4.9.63.p
117
-     */
118
-    public function hasAssetOfType($identifier, $type = Asset::TYPE_JS)
119
-    {
120
-        $this->rewind();
121
-        while ($this->valid()) {
122
-            if ($this->getInfo() === $identifier && $this->current()->type() === $type) {
123
-                $this->rewind();
124
-                return true;
125
-            }
126
-            $this->next();
127
-        }
128
-        return false;
129
-    }
130
-
131
-
132
-    /**
133
-     * returns TRUE or FALSE
134
-     * depending on whether the Javascript Asset is within the Collection
135
-     * based on the supplied $identifier
136
-     *
137
-     * @param  mixed $identifier
138
-     * @return bool
139
-     * @since 4.9.63.p
140
-     */
141
-    public function hasJavascriptAsset($identifier)
142
-    {
143
-        return $this->hasAssetOfType($identifier, Asset::TYPE_JS);
144
-    }
145
-
146
-
147
-    /**
148
-     * returns TRUE or FALSE
149
-     * depending on whether the Stylesheet Asset is within the Collection
150
-     * based on the supplied $identifier
151
-     *
152
-     * @param  mixed $identifier
153
-     * @return bool
154
-     * @since 4.9.63.p
155
-     */
156
-    public function hasStylesheetAsset($identifier)
157
-    {
158
-        return $this->hasAssetOfType($identifier, Asset::TYPE_CSS);
159
-    }
160
-
161
-    /**
162
-     * returns the object from the Collection
163
-     * based on the supplied $identifier and type
164
-     *
165
-     * @param  mixed $identifier
166
-     * @param string $type
167
-     * @return JavascriptAsset|StylesheetAsset
168
-     * @since 4.9.63.p
169
-     */
170
-    public function getAssetOfType($identifier, $type = Asset::TYPE_JS)
171
-    {
172
-        $this->rewind();
173
-        while ($this->valid()) {
174
-            if ($this->getInfo() === $identifier && $this->current()->type() === $type) {
175
-                /** @var JavascriptAsset|StylesheetAsset $object */
176
-                $object = $this->current();
177
-                $this->rewind();
178
-                return $object;
179
-            }
180
-            $this->next();
181
-        }
182
-        return null;
183
-    }
184
-
185
-
186
-    /**
187
-     * returns the Stylesheet Asset from the Collection
188
-     * based on the supplied $identifier
189
-     *
190
-     * @param  mixed $identifier
191
-     * @return StylesheetAsset
192
-     * @since 4.9.63.p
193
-     */
194
-    public function getStylesheetAsset($identifier)
195
-    {
196
-        return $this->getAssetOfType($identifier, Asset::TYPE_CSS);
197
-    }
198
-
199
-
200
-    /**
201
-     * returns the Javascript Asset from the Collection
202
-     * based on the supplied $identifier
203
-     *
204
-     * @param  mixed $identifier
205
-     * @return JavascriptAsset
206
-     * @since 4.9.63.p
207
-     */
208
-    public function getJavascriptAsset($identifier)
209
-    {
210
-        return $this->getAssetOfType($identifier, Asset::TYPE_JS);
211
-    }
24
+	/**
25
+	 * AssetCollection constructor
26
+	 *
27
+	 * @throws InvalidInterfaceException
28
+	 */
29
+	public function __construct()
30
+	{
31
+		parent::__construct('EventEspresso\core\domain\values\assets\Asset');
32
+	}
33
+
34
+
35
+	/**
36
+	 * @return StylesheetAsset[]
37
+	 * @since 4.9.62.p
38
+	 */
39
+	public function getStylesheetAssets()
40
+	{
41
+		return $this->getAssetsOfType(Asset::TYPE_CSS);
42
+	}
43
+
44
+
45
+	/**
46
+	 * @return JavascriptAsset[]
47
+	 * @since 4.9.62.p
48
+	 */
49
+	public function getJavascriptAssets()
50
+	{
51
+		return $this->getAssetsOfType(Asset::TYPE_JS);
52
+	}
53
+
54
+
55
+	/**
56
+	 * @return ManifestFile[]
57
+	 * @since 4.9.62.p
58
+	 */
59
+	public function getManifestFiles()
60
+	{
61
+		return $this->getAssetsOfType(Asset::TYPE_MANIFEST);
62
+	}
63
+
64
+
65
+	/**
66
+	 * @param $type
67
+	 * @return JavascriptAsset[]|StylesheetAsset[]|ManifestFile[]
68
+	 * @since 4.9.62.p
69
+	 */
70
+	protected function getAssetsOfType($type)
71
+	{
72
+		$files = array();
73
+		$this->rewind();
74
+		while ($this->valid()) {
75
+			/** @var Asset $asset */
76
+			$asset = $this->current();
77
+			if ($asset->type() === $type) {
78
+				$files[ $asset->handle() ] = $asset;
79
+			}
80
+			$this->next();
81
+		}
82
+		$this->rewind();
83
+		return $files;
84
+	}
85
+
86
+
87
+	/**
88
+	 * @return JavascriptAsset[]
89
+	 * @since 4.9.62.p
90
+	 */
91
+	public function getJavascriptAssetsWithData()
92
+	{
93
+		$files = array();
94
+		$this->rewind();
95
+		while ($this->valid()) {
96
+			/** @var JavascriptAsset $asset */
97
+			$asset = $this->current();
98
+			if ($asset->type() === Asset::TYPE_JS && $asset->hasInlineData()) {
99
+				$files[ $asset->handle() ] = $asset;
100
+			}
101
+			$this->next();
102
+		}
103
+		$this->rewind();
104
+		return $files;
105
+	}
106
+
107
+
108
+	/**
109
+	 * returns TRUE or FALSE
110
+	 * depending on whether the object is within the Collection
111
+	 * based on the supplied $identifier and type
112
+	 *
113
+	 * @param  mixed $identifier
114
+	 * @param string $type
115
+	 * @return bool
116
+	 * @since 4.9.63.p
117
+	 */
118
+	public function hasAssetOfType($identifier, $type = Asset::TYPE_JS)
119
+	{
120
+		$this->rewind();
121
+		while ($this->valid()) {
122
+			if ($this->getInfo() === $identifier && $this->current()->type() === $type) {
123
+				$this->rewind();
124
+				return true;
125
+			}
126
+			$this->next();
127
+		}
128
+		return false;
129
+	}
130
+
131
+
132
+	/**
133
+	 * returns TRUE or FALSE
134
+	 * depending on whether the Javascript Asset is within the Collection
135
+	 * based on the supplied $identifier
136
+	 *
137
+	 * @param  mixed $identifier
138
+	 * @return bool
139
+	 * @since 4.9.63.p
140
+	 */
141
+	public function hasJavascriptAsset($identifier)
142
+	{
143
+		return $this->hasAssetOfType($identifier, Asset::TYPE_JS);
144
+	}
145
+
146
+
147
+	/**
148
+	 * returns TRUE or FALSE
149
+	 * depending on whether the Stylesheet Asset is within the Collection
150
+	 * based on the supplied $identifier
151
+	 *
152
+	 * @param  mixed $identifier
153
+	 * @return bool
154
+	 * @since 4.9.63.p
155
+	 */
156
+	public function hasStylesheetAsset($identifier)
157
+	{
158
+		return $this->hasAssetOfType($identifier, Asset::TYPE_CSS);
159
+	}
160
+
161
+	/**
162
+	 * returns the object from the Collection
163
+	 * based on the supplied $identifier and type
164
+	 *
165
+	 * @param  mixed $identifier
166
+	 * @param string $type
167
+	 * @return JavascriptAsset|StylesheetAsset
168
+	 * @since 4.9.63.p
169
+	 */
170
+	public function getAssetOfType($identifier, $type = Asset::TYPE_JS)
171
+	{
172
+		$this->rewind();
173
+		while ($this->valid()) {
174
+			if ($this->getInfo() === $identifier && $this->current()->type() === $type) {
175
+				/** @var JavascriptAsset|StylesheetAsset $object */
176
+				$object = $this->current();
177
+				$this->rewind();
178
+				return $object;
179
+			}
180
+			$this->next();
181
+		}
182
+		return null;
183
+	}
184
+
185
+
186
+	/**
187
+	 * returns the Stylesheet Asset from the Collection
188
+	 * based on the supplied $identifier
189
+	 *
190
+	 * @param  mixed $identifier
191
+	 * @return StylesheetAsset
192
+	 * @since 4.9.63.p
193
+	 */
194
+	public function getStylesheetAsset($identifier)
195
+	{
196
+		return $this->getAssetOfType($identifier, Asset::TYPE_CSS);
197
+	}
198
+
199
+
200
+	/**
201
+	 * returns the Javascript Asset from the Collection
202
+	 * based on the supplied $identifier
203
+	 *
204
+	 * @param  mixed $identifier
205
+	 * @return JavascriptAsset
206
+	 * @since 4.9.63.p
207
+	 */
208
+	public function getJavascriptAsset($identifier)
209
+	{
210
+		return $this->getAssetOfType($identifier, Asset::TYPE_JS);
211
+	}
212 212
 }
Please login to merge, or discard this patch.
strategies/display/EE_Radio_Button_Display_Strategy.strategy.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,10 +32,10 @@  discard block
 block discarded – undo
32 32
             $html .= $this->_attributes_string(
33 33
                 array(
34 34
                     'for' => $html_id,
35
-                    'id' => $html_id . '-lbl',
35
+                    'id' => $html_id.'-lbl',
36 36
                     'class' => apply_filters(
37 37
                         'FHEE__EE_Radio_Button_Display_Strategy__display__option_label_class',
38
-                        'ee-radio-label-after' . $label_size_class,
38
+                        'ee-radio-label-after'.$label_size_class,
39 39
                         $this,
40 40
                         $input,
41 41
                         $value
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
 
63 63
             $html .= '>&nbsp;';
64 64
             $html .= $display_text;
65
-            $html .= EEH_HTML::nl(-1, 'radio') . '</label>';
65
+            $html .= EEH_HTML::nl(-1, 'radio').'</label>';
66 66
         }
67 67
         $html .= EEH_HTML::div('', '', 'clear-float');
68 68
         $html .= EEH_HTML::divx();
Please login to merge, or discard this patch.
Indentation   +54 added lines, -54 removed lines patch added patch discarded remove patch
@@ -11,61 +11,61 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Radio_Button_Display_Strategy extends EE_Compound_Input_Display_Strategy
13 13
 {
14
-    /**
15
-     *
16
-     * @throws EE_Error
17
-     * @return string of html to display the field
18
-     */
19
-    public function display()
20
-    {
21
-        $input = $this->get_input();
22
-        $input->set_label_sizes();
23
-        $label_size_class = $input->get_label_size_class();
24
-        $html = '';
25
-        foreach ($input->options() as $value => $display_text) {
26
-            $value = $input->get_normalization_strategy()->unnormalize($value);
14
+	/**
15
+	 *
16
+	 * @throws EE_Error
17
+	 * @return string of html to display the field
18
+	 */
19
+	public function display()
20
+	{
21
+		$input = $this->get_input();
22
+		$input->set_label_sizes();
23
+		$label_size_class = $input->get_label_size_class();
24
+		$html = '';
25
+		foreach ($input->options() as $value => $display_text) {
26
+			$value = $input->get_normalization_strategy()->unnormalize($value);
27 27
 
28
-            $html_id = $this->get_sub_input_id($value);
29
-            $html .= EEH_HTML::nl(0, 'radio');
28
+			$html_id = $this->get_sub_input_id($value);
29
+			$html .= EEH_HTML::nl(0, 'radio');
30 30
 
31
-            $html .= $this->_opening_tag('label');
32
-            $html .= $this->_attributes_string(
33
-                array(
34
-                    'for' => $html_id,
35
-                    'id' => $html_id . '-lbl',
36
-                    'class' => apply_filters(
37
-                        'FHEE__EE_Radio_Button_Display_Strategy__display__option_label_class',
38
-                        'ee-radio-label-after' . $label_size_class,
39
-                        $this,
40
-                        $input,
41
-                        $value
42
-                    )
43
-                )
44
-            );
45
-            $html .= '>';
46
-            $html .= EEH_HTML::nl(1, 'radio');
47
-            $html .= $this->_opening_tag('input');
48
-            $attributes = array(
49
-                'id' => $html_id,
50
-                'name' => $input->html_name(),
51
-                'class' => $input->html_class(),
52
-                'style' => $input->html_style(),
53
-                'type' => 'radio',
54
-                'value' => $value,
55
-                0 => $input->other_html_attributes(),
56
-                'data-question_label' => $input->html_label_id()
57
-            );
58
-            if ($input->raw_value() === $value) {
59
-                $attributes['checked'] = 'checked';
60
-            }
61
-            $html .= $this->_attributes_string($attributes);
31
+			$html .= $this->_opening_tag('label');
32
+			$html .= $this->_attributes_string(
33
+				array(
34
+					'for' => $html_id,
35
+					'id' => $html_id . '-lbl',
36
+					'class' => apply_filters(
37
+						'FHEE__EE_Radio_Button_Display_Strategy__display__option_label_class',
38
+						'ee-radio-label-after' . $label_size_class,
39
+						$this,
40
+						$input,
41
+						$value
42
+					)
43
+				)
44
+			);
45
+			$html .= '>';
46
+			$html .= EEH_HTML::nl(1, 'radio');
47
+			$html .= $this->_opening_tag('input');
48
+			$attributes = array(
49
+				'id' => $html_id,
50
+				'name' => $input->html_name(),
51
+				'class' => $input->html_class(),
52
+				'style' => $input->html_style(),
53
+				'type' => 'radio',
54
+				'value' => $value,
55
+				0 => $input->other_html_attributes(),
56
+				'data-question_label' => $input->html_label_id()
57
+			);
58
+			if ($input->raw_value() === $value) {
59
+				$attributes['checked'] = 'checked';
60
+			}
61
+			$html .= $this->_attributes_string($attributes);
62 62
 
63
-            $html .= '>&nbsp;';
64
-            $html .= $display_text;
65
-            $html .= EEH_HTML::nl(-1, 'radio') . '</label>';
66
-        }
67
-        $html .= EEH_HTML::div('', '', 'clear-float');
68
-        $html .= EEH_HTML::divx();
69
-        return apply_filters('FHEE__EE_Radio_Button_Display_Strategy__display', $html, $this, $this->_input);
70
-    }
63
+			$html .= '>&nbsp;';
64
+			$html .= $display_text;
65
+			$html .= EEH_HTML::nl(-1, 'radio') . '</label>';
66
+		}
67
+		$html .= EEH_HTML::div('', '', 'clear-float');
68
+		$html .= EEH_HTML::divx();
69
+		return apply_filters('FHEE__EE_Radio_Button_Display_Strategy__display', $html, $this, $this->_input);
70
+	}
71 71
 }
Please login to merge, or discard this patch.
core/services/collections/Collection.php 2 patches
Spacing   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
      */
67 67
     protected function setCollectionInterface($collection_interface)
68 68
     {
69
-        if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
69
+        if ( ! (interface_exists($collection_interface) || class_exists($collection_interface))) {
70 70
             throw new InvalidInterfaceException($collection_interface);
71 71
         }
72 72
         $this->collection_interface = $collection_interface;
@@ -111,13 +111,13 @@  discard block
 block discarded – undo
111 111
     protected function setCollectionIdentifier()
112 112
     {
113 113
         // hash a few collection details
114
-        $identifier = md5(spl_object_hash($this) . $this->collection_interface . time());
114
+        $identifier = md5(spl_object_hash($this).$this->collection_interface.time());
115 115
         // grab a few characters from the start, middle, and end of the hash
116 116
         $id = array();
117 117
         for ($x = 0; $x < 19; $x += 9) {
118 118
             $id[] = substr($identifier, $x, 3);
119 119
         }
120
-        $this->collection_identifier = $this->collection_name . '-' . strtoupper(implode('-', $id));
120
+        $this->collection_identifier = $this->collection_name.'-'.strtoupper(implode('-', $id));
121 121
     }
122 122
 
123 123
 
@@ -135,7 +135,7 @@  discard block
 block discarded – undo
135 135
      */
136 136
     public function add($object, $identifier = null)
137 137
     {
138
-        if (! $object instanceof $this->collection_interface) {
138
+        if ( ! $object instanceof $this->collection_interface) {
139 139
             throw new InvalidEntityException($object, $this->collection_interface);
140 140
         }
141 141
         if ($this->contains($object)) {
@@ -351,7 +351,7 @@  discard block
 block discarded – undo
351 351
      */
352 352
     public function indexOf($object)
353 353
     {
354
-        if (! $this->contains($object)) {
354
+        if ( ! $this->contains($object)) {
355 355
             return false;
356 356
         }
357 357
         foreach ($this as $index => $obj) {
@@ -420,9 +420,9 @@  discard block
 block discarded – undo
420 420
             $remaining_objects = $this->slice($index, $this->count() - $index);
421 421
             foreach ($remaining_objects as $key => $remaining_object) {
422 422
                 // we need to grab the identifiers for each object and use them as keys
423
-                $remaining_objects[ $remaining_object->getInfo() ] = $remaining_object;
423
+                $remaining_objects[$remaining_object->getInfo()] = $remaining_object;
424 424
                 // and then remove the object from the current tracking array
425
-                unset($remaining_objects[ $key ]);
425
+                unset($remaining_objects[$key]);
426 426
                 // and then remove it from the Collection
427 427
                 $this->detach($remaining_object);
428 428
             }
@@ -446,17 +446,17 @@  discard block
 block discarded – undo
446 446
      */
447 447
     public function insertAt($objects, $index)
448 448
     {
449
-        if (! is_array($objects)) {
449
+        if ( ! is_array($objects)) {
450 450
             $objects = array($objects);
451 451
         }
452 452
         // check to ensure that objects don't already exist in the collection
453 453
         foreach ($objects as $key => $object) {
454 454
             if ($this->contains($object)) {
455
-                unset($objects[ $key ]);
455
+                unset($objects[$key]);
456 456
             }
457 457
         }
458 458
         // do we have any objects left?
459
-        if (! $objects) {
459
+        if ( ! $objects) {
460 460
             return;
461 461
         }
462 462
         // detach any objects at or past this index
Please login to merge, or discard this patch.
Indentation   +500 added lines, -500 removed lines patch added patch discarded remove patch
@@ -18,504 +18,504 @@
 block discarded – undo
18 18
  */
19 19
 class Collection extends SplObjectStorage implements CollectionInterface
20 20
 {
21
-    /**
22
-     * a unique string for identifying this collection
23
-     *
24
-     * @type string $collection_identifier
25
-     */
26
-    protected $collection_identifier;
27
-
28
-
29
-    /**
30
-     * an interface (or class) name to be used for restricting the type of objects added to the storage
31
-     * this should be set from within the child class constructor
32
-     *
33
-     * @type string $interface
34
-     */
35
-    protected $collection_interface;
36
-
37
-    /**
38
-     * a short dash separated string describing the contents of this collection
39
-     * used as the base for the $collection_identifier
40
-     * defaults to the class short name if not set
41
-     *
42
-     * @type string $collection_identifier
43
-     */
44
-    protected $collection_name;
45
-
46
-
47
-    /**
48
-     * Collection constructor
49
-     *
50
-     * @param string $collection_interface
51
-     * @param string $collection_name
52
-     * @throws InvalidInterfaceException
53
-     */
54
-    public function __construct($collection_interface, $collection_name = '')
55
-    {
56
-        $this->setCollectionInterface($collection_interface);
57
-        $this->setCollectionName($collection_name);
58
-        $this->setCollectionIdentifier();
59
-    }
60
-
61
-
62
-    /**
63
-     * setCollectionInterface
64
-     *
65
-     * @param  string $collection_interface
66
-     * @throws InvalidInterfaceException
67
-     */
68
-    protected function setCollectionInterface($collection_interface)
69
-    {
70
-        if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
71
-            throw new InvalidInterfaceException($collection_interface);
72
-        }
73
-        $this->collection_interface = $collection_interface;
74
-    }
75
-
76
-
77
-    /**
78
-     * @return string
79
-     */
80
-    public function collectionName()
81
-    {
82
-        return $this->collection_name;
83
-    }
84
-
85
-
86
-    /**
87
-     * @param string $collection_name
88
-     */
89
-    protected function setCollectionName($collection_name)
90
-    {
91
-        $this->collection_name = ! empty($collection_name)
92
-            ? sanitize_key($collection_name)
93
-            : basename(str_replace('\\', '/', get_class($this)));
94
-    }
95
-
96
-
97
-    /**
98
-     * @return string
99
-     */
100
-    public function collectionIdentifier()
101
-    {
102
-        return $this->collection_identifier;
103
-    }
104
-
105
-
106
-    /**
107
-     * creates a very readable unique 9 character identifier like:  CF2-532-DAC
108
-     * and appends it to the non-qualified class name, ex: ThingCollection-CF2-532-DAC
109
-     *
110
-     * @return void
111
-     */
112
-    protected function setCollectionIdentifier()
113
-    {
114
-        // hash a few collection details
115
-        $identifier = md5(spl_object_hash($this) . $this->collection_interface . time());
116
-        // grab a few characters from the start, middle, and end of the hash
117
-        $id = array();
118
-        for ($x = 0; $x < 19; $x += 9) {
119
-            $id[] = substr($identifier, $x, 3);
120
-        }
121
-        $this->collection_identifier = $this->collection_name . '-' . strtoupper(implode('-', $id));
122
-    }
123
-
124
-
125
-    /**
126
-     * add
127
-     * attaches an object to the Collection
128
-     * and sets any supplied data associated with the current iterator entry
129
-     * by calling EE_Object_Collection::set_identifier()
130
-     *
131
-     * @param        $object
132
-     * @param  mixed $identifier
133
-     * @return bool
134
-     * @throws InvalidEntityException
135
-     * @throws DuplicateCollectionIdentifierException
136
-     */
137
-    public function add($object, $identifier = null)
138
-    {
139
-        if (! $object instanceof $this->collection_interface) {
140
-            throw new InvalidEntityException($object, $this->collection_interface);
141
-        }
142
-        if ($this->contains($object)) {
143
-            throw new DuplicateCollectionIdentifierException($identifier);
144
-        }
145
-        $this->attach($object);
146
-        $this->setIdentifier($object, $identifier);
147
-        return $this->contains($object);
148
-    }
149
-
150
-
151
-    /**
152
-     * getIdentifier
153
-     * if no $identifier is supplied, then the spl_object_hash() is used
154
-     *
155
-     * @param        $object
156
-     * @param  mixed $identifier
157
-     * @return bool
158
-     */
159
-    public function getIdentifier($object, $identifier = null)
160
-    {
161
-        return ! empty($identifier)
162
-            ? $identifier
163
-            : spl_object_hash($object);
164
-    }
165
-
166
-
167
-    /**
168
-     * setIdentifier
169
-     * Sets the data associated with an object in the Collection
170
-     * if no $identifier is supplied, then the spl_object_hash() is used
171
-     *
172
-     * @param        $object
173
-     * @param  mixed $identifier
174
-     * @return bool
175
-     */
176
-    public function setIdentifier($object, $identifier = null)
177
-    {
178
-        $identifier = $this->getIdentifier($object, $identifier);
179
-        $this->rewind();
180
-        while ($this->valid()) {
181
-            if ($object === $this->current()) {
182
-                $this->setInfo($identifier);
183
-                $this->rewind();
184
-                return true;
185
-            }
186
-            $this->next();
187
-        }
188
-        return false;
189
-    }
190
-
191
-
192
-    /**
193
-     * get
194
-     * finds and returns an object in the Collection based on the identifier that was set using addObject()
195
-     * PLZ NOTE: the pointer is reset to the beginning of the collection before returning
196
-     *
197
-     * @param mixed $identifier
198
-     * @return mixed
199
-     */
200
-    public function get($identifier)
201
-    {
202
-        $this->rewind();
203
-        while ($this->valid()) {
204
-            if ($identifier === $this->getInfo()) {
205
-                $object = $this->current();
206
-                $this->rewind();
207
-                return $object;
208
-            }
209
-            $this->next();
210
-        }
211
-        return null;
212
-    }
213
-
214
-
215
-    /**
216
-     * has
217
-     * returns TRUE or FALSE
218
-     * depending on whether the object is within the Collection
219
-     * based on the supplied $identifier
220
-     *
221
-     * @param  mixed $identifier
222
-     * @return bool
223
-     */
224
-    public function has($identifier)
225
-    {
226
-        $this->rewind();
227
-        while ($this->valid()) {
228
-            if ($identifier === $this->getInfo()) {
229
-                $this->rewind();
230
-                return true;
231
-            }
232
-            $this->next();
233
-        }
234
-        return false;
235
-    }
236
-
237
-
238
-    /**
239
-     * hasObject
240
-     * returns TRUE or FALSE depending on whether the supplied object is within the Collection
241
-     *
242
-     * @param $object
243
-     * @return bool
244
-     */
245
-    public function hasObject($object)
246
-    {
247
-        return $this->contains($object);
248
-    }
249
-
250
-
251
-    /**
252
-     * hasObjects
253
-     * returns true if there are objects within the Collection, and false if it is empty
254
-     *
255
-     * @return bool
256
-     */
257
-    public function hasObjects()
258
-    {
259
-        return $this->count() !== 0;
260
-    }
261
-
262
-
263
-    /**
264
-     * isEmpty
265
-     * returns true if there are no objects within the Collection, and false if there are
266
-     *
267
-     * @return bool
268
-     */
269
-    public function isEmpty()
270
-    {
271
-        return $this->count() === 0;
272
-    }
273
-
274
-
275
-    /**
276
-     * remove
277
-     * detaches an object from the Collection
278
-     *
279
-     * @param $object
280
-     * @return bool
281
-     */
282
-    public function remove($object)
283
-    {
284
-        $this->detach($object);
285
-        return true;
286
-    }
287
-
288
-
289
-    /**
290
-     * setCurrent
291
-     * advances pointer to the object whose identifier matches that which was provided
292
-     *
293
-     * @param mixed $identifier
294
-     * @return boolean
295
-     */
296
-    public function setCurrent($identifier)
297
-    {
298
-        $this->rewind();
299
-        while ($this->valid()) {
300
-            if ($identifier === $this->getInfo()) {
301
-                return true;
302
-            }
303
-            $this->next();
304
-        }
305
-        return false;
306
-    }
307
-
308
-
309
-    /**
310
-     * setCurrentUsingObject
311
-     * advances pointer to the provided object
312
-     *
313
-     * @param $object
314
-     * @return boolean
315
-     */
316
-    public function setCurrentUsingObject($object)
317
-    {
318
-        $this->rewind();
319
-        while ($this->valid()) {
320
-            if ($this->current() === $object) {
321
-                return true;
322
-            }
323
-            $this->next();
324
-        }
325
-        return false;
326
-    }
327
-
328
-
329
-    /**
330
-     * Returns the object occupying the index before the current object,
331
-     * unless this is already the first object, in which case it just returns the first object
332
-     *
333
-     * @return mixed
334
-     */
335
-    public function previous()
336
-    {
337
-        $index = $this->indexOf($this->current());
338
-        if ($index === 0) {
339
-            return $this->current();
340
-        }
341
-        $index--;
342
-        return $this->objectAtIndex($index);
343
-    }
344
-
345
-
346
-    /**
347
-     * Returns the index of a given object, or false if not found
348
-     *
349
-     * @see http://stackoverflow.com/a/8736013
350
-     * @param $object
351
-     * @return boolean|int|string
352
-     */
353
-    public function indexOf($object)
354
-    {
355
-        if (! $this->contains($object)) {
356
-            return false;
357
-        }
358
-        foreach ($this as $index => $obj) {
359
-            if ($obj === $object) {
360
-                return $index;
361
-            }
362
-        }
363
-        return false;
364
-    }
365
-
366
-
367
-    /**
368
-     * Returns the object at the given index
369
-     *
370
-     * @see http://stackoverflow.com/a/8736013
371
-     * @param int $index
372
-     * @return mixed
373
-     */
374
-    public function objectAtIndex($index)
375
-    {
376
-        $iterator = new LimitIterator($this, $index, 1);
377
-        $iterator->rewind();
378
-        return $iterator->current();
379
-    }
380
-
381
-
382
-    /**
383
-     * Returns the sequence of objects as specified by the offset and length
384
-     *
385
-     * @see http://stackoverflow.com/a/8736013
386
-     * @param int $offset
387
-     * @param int $length
388
-     * @return array
389
-     */
390
-    public function slice($offset, $length)
391
-    {
392
-        $slice = array();
393
-        $iterator = new LimitIterator($this, $offset, $length);
394
-        foreach ($iterator as $object) {
395
-            $slice[] = $object;
396
-        }
397
-        return $slice;
398
-    }
399
-
400
-
401
-    /**
402
-     * Inserts an object at a certain point
403
-     *
404
-     * @see http://stackoverflow.com/a/8736013
405
-     * @param mixed $object A single object
406
-     * @param int   $index
407
-     * @param mixed $identifier
408
-     * @return bool
409
-     * @throws DuplicateCollectionIdentifierException
410
-     * @throws InvalidEntityException
411
-     */
412
-    public function insertObjectAt($object, $index, $identifier = null)
413
-    {
414
-        // check to ensure that objects don't already exist in the collection
415
-        if ($this->has($identifier)) {
416
-            throw new DuplicateCollectionIdentifierException($identifier);
417
-        }
418
-        // detach any objects at or past this index
419
-        $remaining_objects = array();
420
-        if ($index < $this->count()) {
421
-            $remaining_objects = $this->slice($index, $this->count() - $index);
422
-            foreach ($remaining_objects as $key => $remaining_object) {
423
-                // we need to grab the identifiers for each object and use them as keys
424
-                $remaining_objects[ $remaining_object->getInfo() ] = $remaining_object;
425
-                // and then remove the object from the current tracking array
426
-                unset($remaining_objects[ $key ]);
427
-                // and then remove it from the Collection
428
-                $this->detach($remaining_object);
429
-            }
430
-        }
431
-        // add the new object we're splicing in
432
-        $this->add($object, $identifier);
433
-        // attach the objects we previously detached
434
-        foreach ($remaining_objects as $key => $remaining_object) {
435
-            $this->add($remaining_object, $key);
436
-        }
437
-        return $this->contains($object);
438
-    }
439
-
440
-
441
-    /**
442
-     * Inserts an object (or an array of objects) at a certain point
443
-     *
444
-     * @see http://stackoverflow.com/a/8736013
445
-     * @param mixed $objects A single object or an array of objects
446
-     * @param int   $index
447
-     */
448
-    public function insertAt($objects, $index)
449
-    {
450
-        if (! is_array($objects)) {
451
-            $objects = array($objects);
452
-        }
453
-        // check to ensure that objects don't already exist in the collection
454
-        foreach ($objects as $key => $object) {
455
-            if ($this->contains($object)) {
456
-                unset($objects[ $key ]);
457
-            }
458
-        }
459
-        // do we have any objects left?
460
-        if (! $objects) {
461
-            return;
462
-        }
463
-        // detach any objects at or past this index
464
-        $remaining = array();
465
-        if ($index < $this->count()) {
466
-            $remaining = $this->slice($index, $this->count() - $index);
467
-            foreach ($remaining as $object) {
468
-                $this->detach($object);
469
-            }
470
-        }
471
-        // add the new objects we're splicing in
472
-        foreach ($objects as $object) {
473
-            $this->attach($object);
474
-        }
475
-        // attach the objects we previously detached
476
-        foreach ($remaining as $object) {
477
-            $this->attach($object);
478
-        }
479
-    }
480
-
481
-
482
-    /**
483
-     * Removes the object at the given index
484
-     *
485
-     * @see http://stackoverflow.com/a/8736013
486
-     * @param int $index
487
-     */
488
-    public function removeAt($index)
489
-    {
490
-        $this->detach($this->objectAtIndex($index));
491
-    }
492
-
493
-
494
-    /**
495
-     * detaches ALL objects from the Collection
496
-     */
497
-    public function detachAll()
498
-    {
499
-        $this->rewind();
500
-        while ($this->valid()) {
501
-            $object = $this->current();
502
-            $this->next();
503
-            $this->detach($object);
504
-        }
505
-    }
506
-
507
-
508
-    /**
509
-     * unsets and detaches ALL objects from the Collection
510
-     */
511
-    public function trashAndDetachAll()
512
-    {
513
-        $this->rewind();
514
-        while ($this->valid()) {
515
-            $object = $this->current();
516
-            $this->next();
517
-            $this->detach($object);
518
-            unset($object);
519
-        }
520
-    }
21
+	/**
22
+	 * a unique string for identifying this collection
23
+	 *
24
+	 * @type string $collection_identifier
25
+	 */
26
+	protected $collection_identifier;
27
+
28
+
29
+	/**
30
+	 * an interface (or class) name to be used for restricting the type of objects added to the storage
31
+	 * this should be set from within the child class constructor
32
+	 *
33
+	 * @type string $interface
34
+	 */
35
+	protected $collection_interface;
36
+
37
+	/**
38
+	 * a short dash separated string describing the contents of this collection
39
+	 * used as the base for the $collection_identifier
40
+	 * defaults to the class short name if not set
41
+	 *
42
+	 * @type string $collection_identifier
43
+	 */
44
+	protected $collection_name;
45
+
46
+
47
+	/**
48
+	 * Collection constructor
49
+	 *
50
+	 * @param string $collection_interface
51
+	 * @param string $collection_name
52
+	 * @throws InvalidInterfaceException
53
+	 */
54
+	public function __construct($collection_interface, $collection_name = '')
55
+	{
56
+		$this->setCollectionInterface($collection_interface);
57
+		$this->setCollectionName($collection_name);
58
+		$this->setCollectionIdentifier();
59
+	}
60
+
61
+
62
+	/**
63
+	 * setCollectionInterface
64
+	 *
65
+	 * @param  string $collection_interface
66
+	 * @throws InvalidInterfaceException
67
+	 */
68
+	protected function setCollectionInterface($collection_interface)
69
+	{
70
+		if (! (interface_exists($collection_interface) || class_exists($collection_interface))) {
71
+			throw new InvalidInterfaceException($collection_interface);
72
+		}
73
+		$this->collection_interface = $collection_interface;
74
+	}
75
+
76
+
77
+	/**
78
+	 * @return string
79
+	 */
80
+	public function collectionName()
81
+	{
82
+		return $this->collection_name;
83
+	}
84
+
85
+
86
+	/**
87
+	 * @param string $collection_name
88
+	 */
89
+	protected function setCollectionName($collection_name)
90
+	{
91
+		$this->collection_name = ! empty($collection_name)
92
+			? sanitize_key($collection_name)
93
+			: basename(str_replace('\\', '/', get_class($this)));
94
+	}
95
+
96
+
97
+	/**
98
+	 * @return string
99
+	 */
100
+	public function collectionIdentifier()
101
+	{
102
+		return $this->collection_identifier;
103
+	}
104
+
105
+
106
+	/**
107
+	 * creates a very readable unique 9 character identifier like:  CF2-532-DAC
108
+	 * and appends it to the non-qualified class name, ex: ThingCollection-CF2-532-DAC
109
+	 *
110
+	 * @return void
111
+	 */
112
+	protected function setCollectionIdentifier()
113
+	{
114
+		// hash a few collection details
115
+		$identifier = md5(spl_object_hash($this) . $this->collection_interface . time());
116
+		// grab a few characters from the start, middle, and end of the hash
117
+		$id = array();
118
+		for ($x = 0; $x < 19; $x += 9) {
119
+			$id[] = substr($identifier, $x, 3);
120
+		}
121
+		$this->collection_identifier = $this->collection_name . '-' . strtoupper(implode('-', $id));
122
+	}
123
+
124
+
125
+	/**
126
+	 * add
127
+	 * attaches an object to the Collection
128
+	 * and sets any supplied data associated with the current iterator entry
129
+	 * by calling EE_Object_Collection::set_identifier()
130
+	 *
131
+	 * @param        $object
132
+	 * @param  mixed $identifier
133
+	 * @return bool
134
+	 * @throws InvalidEntityException
135
+	 * @throws DuplicateCollectionIdentifierException
136
+	 */
137
+	public function add($object, $identifier = null)
138
+	{
139
+		if (! $object instanceof $this->collection_interface) {
140
+			throw new InvalidEntityException($object, $this->collection_interface);
141
+		}
142
+		if ($this->contains($object)) {
143
+			throw new DuplicateCollectionIdentifierException($identifier);
144
+		}
145
+		$this->attach($object);
146
+		$this->setIdentifier($object, $identifier);
147
+		return $this->contains($object);
148
+	}
149
+
150
+
151
+	/**
152
+	 * getIdentifier
153
+	 * if no $identifier is supplied, then the spl_object_hash() is used
154
+	 *
155
+	 * @param        $object
156
+	 * @param  mixed $identifier
157
+	 * @return bool
158
+	 */
159
+	public function getIdentifier($object, $identifier = null)
160
+	{
161
+		return ! empty($identifier)
162
+			? $identifier
163
+			: spl_object_hash($object);
164
+	}
165
+
166
+
167
+	/**
168
+	 * setIdentifier
169
+	 * Sets the data associated with an object in the Collection
170
+	 * if no $identifier is supplied, then the spl_object_hash() is used
171
+	 *
172
+	 * @param        $object
173
+	 * @param  mixed $identifier
174
+	 * @return bool
175
+	 */
176
+	public function setIdentifier($object, $identifier = null)
177
+	{
178
+		$identifier = $this->getIdentifier($object, $identifier);
179
+		$this->rewind();
180
+		while ($this->valid()) {
181
+			if ($object === $this->current()) {
182
+				$this->setInfo($identifier);
183
+				$this->rewind();
184
+				return true;
185
+			}
186
+			$this->next();
187
+		}
188
+		return false;
189
+	}
190
+
191
+
192
+	/**
193
+	 * get
194
+	 * finds and returns an object in the Collection based on the identifier that was set using addObject()
195
+	 * PLZ NOTE: the pointer is reset to the beginning of the collection before returning
196
+	 *
197
+	 * @param mixed $identifier
198
+	 * @return mixed
199
+	 */
200
+	public function get($identifier)
201
+	{
202
+		$this->rewind();
203
+		while ($this->valid()) {
204
+			if ($identifier === $this->getInfo()) {
205
+				$object = $this->current();
206
+				$this->rewind();
207
+				return $object;
208
+			}
209
+			$this->next();
210
+		}
211
+		return null;
212
+	}
213
+
214
+
215
+	/**
216
+	 * has
217
+	 * returns TRUE or FALSE
218
+	 * depending on whether the object is within the Collection
219
+	 * based on the supplied $identifier
220
+	 *
221
+	 * @param  mixed $identifier
222
+	 * @return bool
223
+	 */
224
+	public function has($identifier)
225
+	{
226
+		$this->rewind();
227
+		while ($this->valid()) {
228
+			if ($identifier === $this->getInfo()) {
229
+				$this->rewind();
230
+				return true;
231
+			}
232
+			$this->next();
233
+		}
234
+		return false;
235
+	}
236
+
237
+
238
+	/**
239
+	 * hasObject
240
+	 * returns TRUE or FALSE depending on whether the supplied object is within the Collection
241
+	 *
242
+	 * @param $object
243
+	 * @return bool
244
+	 */
245
+	public function hasObject($object)
246
+	{
247
+		return $this->contains($object);
248
+	}
249
+
250
+
251
+	/**
252
+	 * hasObjects
253
+	 * returns true if there are objects within the Collection, and false if it is empty
254
+	 *
255
+	 * @return bool
256
+	 */
257
+	public function hasObjects()
258
+	{
259
+		return $this->count() !== 0;
260
+	}
261
+
262
+
263
+	/**
264
+	 * isEmpty
265
+	 * returns true if there are no objects within the Collection, and false if there are
266
+	 *
267
+	 * @return bool
268
+	 */
269
+	public function isEmpty()
270
+	{
271
+		return $this->count() === 0;
272
+	}
273
+
274
+
275
+	/**
276
+	 * remove
277
+	 * detaches an object from the Collection
278
+	 *
279
+	 * @param $object
280
+	 * @return bool
281
+	 */
282
+	public function remove($object)
283
+	{
284
+		$this->detach($object);
285
+		return true;
286
+	}
287
+
288
+
289
+	/**
290
+	 * setCurrent
291
+	 * advances pointer to the object whose identifier matches that which was provided
292
+	 *
293
+	 * @param mixed $identifier
294
+	 * @return boolean
295
+	 */
296
+	public function setCurrent($identifier)
297
+	{
298
+		$this->rewind();
299
+		while ($this->valid()) {
300
+			if ($identifier === $this->getInfo()) {
301
+				return true;
302
+			}
303
+			$this->next();
304
+		}
305
+		return false;
306
+	}
307
+
308
+
309
+	/**
310
+	 * setCurrentUsingObject
311
+	 * advances pointer to the provided object
312
+	 *
313
+	 * @param $object
314
+	 * @return boolean
315
+	 */
316
+	public function setCurrentUsingObject($object)
317
+	{
318
+		$this->rewind();
319
+		while ($this->valid()) {
320
+			if ($this->current() === $object) {
321
+				return true;
322
+			}
323
+			$this->next();
324
+		}
325
+		return false;
326
+	}
327
+
328
+
329
+	/**
330
+	 * Returns the object occupying the index before the current object,
331
+	 * unless this is already the first object, in which case it just returns the first object
332
+	 *
333
+	 * @return mixed
334
+	 */
335
+	public function previous()
336
+	{
337
+		$index = $this->indexOf($this->current());
338
+		if ($index === 0) {
339
+			return $this->current();
340
+		}
341
+		$index--;
342
+		return $this->objectAtIndex($index);
343
+	}
344
+
345
+
346
+	/**
347
+	 * Returns the index of a given object, or false if not found
348
+	 *
349
+	 * @see http://stackoverflow.com/a/8736013
350
+	 * @param $object
351
+	 * @return boolean|int|string
352
+	 */
353
+	public function indexOf($object)
354
+	{
355
+		if (! $this->contains($object)) {
356
+			return false;
357
+		}
358
+		foreach ($this as $index => $obj) {
359
+			if ($obj === $object) {
360
+				return $index;
361
+			}
362
+		}
363
+		return false;
364
+	}
365
+
366
+
367
+	/**
368
+	 * Returns the object at the given index
369
+	 *
370
+	 * @see http://stackoverflow.com/a/8736013
371
+	 * @param int $index
372
+	 * @return mixed
373
+	 */
374
+	public function objectAtIndex($index)
375
+	{
376
+		$iterator = new LimitIterator($this, $index, 1);
377
+		$iterator->rewind();
378
+		return $iterator->current();
379
+	}
380
+
381
+
382
+	/**
383
+	 * Returns the sequence of objects as specified by the offset and length
384
+	 *
385
+	 * @see http://stackoverflow.com/a/8736013
386
+	 * @param int $offset
387
+	 * @param int $length
388
+	 * @return array
389
+	 */
390
+	public function slice($offset, $length)
391
+	{
392
+		$slice = array();
393
+		$iterator = new LimitIterator($this, $offset, $length);
394
+		foreach ($iterator as $object) {
395
+			$slice[] = $object;
396
+		}
397
+		return $slice;
398
+	}
399
+
400
+
401
+	/**
402
+	 * Inserts an object at a certain point
403
+	 *
404
+	 * @see http://stackoverflow.com/a/8736013
405
+	 * @param mixed $object A single object
406
+	 * @param int   $index
407
+	 * @param mixed $identifier
408
+	 * @return bool
409
+	 * @throws DuplicateCollectionIdentifierException
410
+	 * @throws InvalidEntityException
411
+	 */
412
+	public function insertObjectAt($object, $index, $identifier = null)
413
+	{
414
+		// check to ensure that objects don't already exist in the collection
415
+		if ($this->has($identifier)) {
416
+			throw new DuplicateCollectionIdentifierException($identifier);
417
+		}
418
+		// detach any objects at or past this index
419
+		$remaining_objects = array();
420
+		if ($index < $this->count()) {
421
+			$remaining_objects = $this->slice($index, $this->count() - $index);
422
+			foreach ($remaining_objects as $key => $remaining_object) {
423
+				// we need to grab the identifiers for each object and use them as keys
424
+				$remaining_objects[ $remaining_object->getInfo() ] = $remaining_object;
425
+				// and then remove the object from the current tracking array
426
+				unset($remaining_objects[ $key ]);
427
+				// and then remove it from the Collection
428
+				$this->detach($remaining_object);
429
+			}
430
+		}
431
+		// add the new object we're splicing in
432
+		$this->add($object, $identifier);
433
+		// attach the objects we previously detached
434
+		foreach ($remaining_objects as $key => $remaining_object) {
435
+			$this->add($remaining_object, $key);
436
+		}
437
+		return $this->contains($object);
438
+	}
439
+
440
+
441
+	/**
442
+	 * Inserts an object (or an array of objects) at a certain point
443
+	 *
444
+	 * @see http://stackoverflow.com/a/8736013
445
+	 * @param mixed $objects A single object or an array of objects
446
+	 * @param int   $index
447
+	 */
448
+	public function insertAt($objects, $index)
449
+	{
450
+		if (! is_array($objects)) {
451
+			$objects = array($objects);
452
+		}
453
+		// check to ensure that objects don't already exist in the collection
454
+		foreach ($objects as $key => $object) {
455
+			if ($this->contains($object)) {
456
+				unset($objects[ $key ]);
457
+			}
458
+		}
459
+		// do we have any objects left?
460
+		if (! $objects) {
461
+			return;
462
+		}
463
+		// detach any objects at or past this index
464
+		$remaining = array();
465
+		if ($index < $this->count()) {
466
+			$remaining = $this->slice($index, $this->count() - $index);
467
+			foreach ($remaining as $object) {
468
+				$this->detach($object);
469
+			}
470
+		}
471
+		// add the new objects we're splicing in
472
+		foreach ($objects as $object) {
473
+			$this->attach($object);
474
+		}
475
+		// attach the objects we previously detached
476
+		foreach ($remaining as $object) {
477
+			$this->attach($object);
478
+		}
479
+	}
480
+
481
+
482
+	/**
483
+	 * Removes the object at the given index
484
+	 *
485
+	 * @see http://stackoverflow.com/a/8736013
486
+	 * @param int $index
487
+	 */
488
+	public function removeAt($index)
489
+	{
490
+		$this->detach($this->objectAtIndex($index));
491
+	}
492
+
493
+
494
+	/**
495
+	 * detaches ALL objects from the Collection
496
+	 */
497
+	public function detachAll()
498
+	{
499
+		$this->rewind();
500
+		while ($this->valid()) {
501
+			$object = $this->current();
502
+			$this->next();
503
+			$this->detach($object);
504
+		}
505
+	}
506
+
507
+
508
+	/**
509
+	 * unsets and detaches ALL objects from the Collection
510
+	 */
511
+	public function trashAndDetachAll()
512
+	{
513
+		$this->rewind();
514
+		while ($this->valid()) {
515
+			$object = $this->current();
516
+			$this->next();
517
+			$this->detach($object);
518
+			unset($object);
519
+		}
520
+	}
521 521
 }
Please login to merge, or discard this patch.