Completed
Branch BUG/required-message-fields (8f9492)
by
unknown
10:53 queued 20s
created
core/domain/services/admin/privacy/export/ExportTransaction.php 1 patch
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -15,106 +15,106 @@
 block discarded – undo
15 15
  */
16 16
 class ExportTransaction implements PersonalDataExporterInterface
17 17
 {
18
-    /**
19
-     * @var EEM_Transaction $transaction_model
20
-     */
21
-    protected $transaction_model;
18
+	/**
19
+	 * @var EEM_Transaction $transaction_model
20
+	 */
21
+	protected $transaction_model;
22 22
 
23
-    /**
24
-     * ExportTransaction constructor.
25
-     *
26
-     * @param $transaction_model
27
-     */
28
-    public function __construct(EEM_Transaction $transaction_model)
29
-    {
30
-        $this->transaction_model = $transaction_model;
31
-    }
23
+	/**
24
+	 * ExportTransaction constructor.
25
+	 *
26
+	 * @param $transaction_model
27
+	 */
28
+	public function __construct(EEM_Transaction $transaction_model)
29
+	{
30
+		$this->transaction_model = $transaction_model;
31
+	}
32 32
 
33 33
 
34
-    /**
35
-     * Returns data for export.
36
-     *
37
-     * @param string    $email_address ,
38
-     * @param int       $page          starts at 1, not 0
39
-     * @return array {
40
-     * @type array      $data          {
41
-     * @type array {
42
-     * @type string     $group_id      (not translated, same for all exports)
43
-     * @type string     $group_label   (translated string)
44
-     * @type string|int $item_id
45
-     * @type array      $data          {
46
-     * @type array {
47
-     * @type string     $name          what's shown in the left-column of the export row
48
-     * @type string     $value         what's showin the right-column of the export row
49
-     *                                 }
50
-     *                                 }
51
-     *                                 }
52
-     *                                 }
53
-     *                                 }
54
-     */
55
-    public function export($email_address, $page = 1)
56
-    {
57
-        $page_size = 10;
58
-        $transactions = $this->transaction_model->get_all(
59
-            array(
60
-                array(
61
-                    'Registration.Attendee.ATT_email' => $email_address,
62
-                ),
63
-                'limit' => array(
64
-                    ($page - 1) * $page_size,
65
-                    $page_size,
66
-                ),
67
-            )
68
-        );
69
-        $export_fields = array_intersect_key(
70
-            EEM_Transaction::instance()->field_settings(),
71
-            array_flip(
72
-                array(
73
-                    'TXN_timestamp',
74
-                    'TXN_total',
75
-                    'TXN_paid',
76
-                    'TXN_session_data',
77
-                )
78
-            )
79
-        );
80
-        $export_items = array();
81
-        $found_something = false;
82
-        foreach ($transactions as $transaction) {
83
-            $found_something = true;
84
-            $data = array();
85
-            foreach ($export_fields as $field_name => $field_obj) {
86
-                if ($field_name === 'TXN_session_data') {
87
-                    $value = $transaction->get_pretty($field_name, 'print_r');
88
-                } else {
89
-                    $value = $transaction->get_pretty($field_name);
90
-                }
91
-                $data[] = array(
92
-                    'name'  => $field_obj->get_nicename(),
93
-                    'value' => $value,
94
-                );
95
-            }
96
-            $export_items[] = array(
97
-                'group_id'    => 'transactions',
98
-                'group_label' => esc_html__('Transactions', 'event_espresso'),
99
-                'item_id'     => $transaction->ID(),
100
-                'data'        => $data,
101
-            );
102
-        }
103
-        return array(
104
-            'data' => $export_items,
105
-            'done' => ! $found_something,
106
-        );
107
-    }
34
+	/**
35
+	 * Returns data for export.
36
+	 *
37
+	 * @param string    $email_address ,
38
+	 * @param int       $page          starts at 1, not 0
39
+	 * @return array {
40
+	 * @type array      $data          {
41
+	 * @type array {
42
+	 * @type string     $group_id      (not translated, same for all exports)
43
+	 * @type string     $group_label   (translated string)
44
+	 * @type string|int $item_id
45
+	 * @type array      $data          {
46
+	 * @type array {
47
+	 * @type string     $name          what's shown in the left-column of the export row
48
+	 * @type string     $value         what's showin the right-column of the export row
49
+	 *                                 }
50
+	 *                                 }
51
+	 *                                 }
52
+	 *                                 }
53
+	 *                                 }
54
+	 */
55
+	public function export($email_address, $page = 1)
56
+	{
57
+		$page_size = 10;
58
+		$transactions = $this->transaction_model->get_all(
59
+			array(
60
+				array(
61
+					'Registration.Attendee.ATT_email' => $email_address,
62
+				),
63
+				'limit' => array(
64
+					($page - 1) * $page_size,
65
+					$page_size,
66
+				),
67
+			)
68
+		);
69
+		$export_fields = array_intersect_key(
70
+			EEM_Transaction::instance()->field_settings(),
71
+			array_flip(
72
+				array(
73
+					'TXN_timestamp',
74
+					'TXN_total',
75
+					'TXN_paid',
76
+					'TXN_session_data',
77
+				)
78
+			)
79
+		);
80
+		$export_items = array();
81
+		$found_something = false;
82
+		foreach ($transactions as $transaction) {
83
+			$found_something = true;
84
+			$data = array();
85
+			foreach ($export_fields as $field_name => $field_obj) {
86
+				if ($field_name === 'TXN_session_data') {
87
+					$value = $transaction->get_pretty($field_name, 'print_r');
88
+				} else {
89
+					$value = $transaction->get_pretty($field_name);
90
+				}
91
+				$data[] = array(
92
+					'name'  => $field_obj->get_nicename(),
93
+					'value' => $value,
94
+				);
95
+			}
96
+			$export_items[] = array(
97
+				'group_id'    => 'transactions',
98
+				'group_label' => esc_html__('Transactions', 'event_espresso'),
99
+				'item_id'     => $transaction->ID(),
100
+				'data'        => $data,
101
+			);
102
+		}
103
+		return array(
104
+			'data' => $export_items,
105
+			'done' => ! $found_something,
106
+		);
107
+	}
108 108
 
109
-    /**
110
-     * Gets the Translated name of this exporter
111
-     *
112
-     * @return string
113
-     */
114
-    public function name()
115
-    {
116
-        return esc_html__('Event Espresso Transaction Exporter', 'event_espresso');
117
-    }
109
+	/**
110
+	 * Gets the Translated name of this exporter
111
+	 *
112
+	 * @return string
113
+	 */
114
+	public function name()
115
+	{
116
+		return esc_html__('Event Espresso Transaction Exporter', 'event_espresso');
117
+	}
118 118
 }
119 119
 // End of file ExportTransaction.php
120 120
 // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportTransaction.php
Please login to merge, or discard this patch.
core/domain/services/admin/privacy/export/ExportAttendee.php 2 patches
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -15,116 +15,116 @@
 block discarded – undo
15 15
  */
16 16
 class ExportAttendee implements PersonalDataExporterInterface
17 17
 {
18
-    /**
19
-     * @var EEM_Attendee
20
-     */
21
-    protected $attendee_model;
18
+	/**
19
+	 * @var EEM_Attendee
20
+	 */
21
+	protected $attendee_model;
22 22
 
23
-    /**
24
-     * ExportAttendee constructor.
25
-     *
26
-     * @param EEM_Attendee $attendee_model
27
-     */
28
-    public function __construct(EEM_Attendee $attendee_model)
29
-    {
30
-        $this->attendee_model = $attendee_model;
31
-    }
23
+	/**
24
+	 * ExportAttendee constructor.
25
+	 *
26
+	 * @param EEM_Attendee $attendee_model
27
+	 */
28
+	public function __construct(EEM_Attendee $attendee_model)
29
+	{
30
+		$this->attendee_model = $attendee_model;
31
+	}
32 32
 
33 33
 
34
-    /**
35
-     * Returns data for export.
36
-     *
37
-     * @param string    $email_address ,
38
-     * @param int       $page          starts at 1, not 0
39
-     * @return array {
40
-     * @type array      $data          {
41
-     * @type array {
42
-     * @type string     $group_id      (not translated, same for all exports)
43
-     * @type string     $group_label   (translated string)
44
-     * @type string|int $item_id
45
-     * @type array      $data          {
46
-     * @type array {
47
-     * @type string     $name          what's shown in the left-column of the export row
48
-     * @type string     $value         what's showin the right-column of the export row
49
-     *                                 }
50
-     *                                 }
51
-     *                                 }
52
-     *                                 }
53
-     *                                 }
54
-     */
55
-    public function export($email_address, $page = 1)
56
-    {
57
-        $attendees = $this->attendee_model->get_all(
58
-            array(
59
-                array(
60
-                    'ATT_email' => $email_address,
61
-                ),
62
-            )
63
-        );
34
+	/**
35
+	 * Returns data for export.
36
+	 *
37
+	 * @param string    $email_address ,
38
+	 * @param int       $page          starts at 1, not 0
39
+	 * @return array {
40
+	 * @type array      $data          {
41
+	 * @type array {
42
+	 * @type string     $group_id      (not translated, same for all exports)
43
+	 * @type string     $group_label   (translated string)
44
+	 * @type string|int $item_id
45
+	 * @type array      $data          {
46
+	 * @type array {
47
+	 * @type string     $name          what's shown in the left-column of the export row
48
+	 * @type string     $value         what's showin the right-column of the export row
49
+	 *                                 }
50
+	 *                                 }
51
+	 *                                 }
52
+	 *                                 }
53
+	 *                                 }
54
+	 */
55
+	public function export($email_address, $page = 1)
56
+	{
57
+		$attendees = $this->attendee_model->get_all(
58
+			array(
59
+				array(
60
+					'ATT_email' => $email_address,
61
+				),
62
+			)
63
+		);
64 64
 
65
-        if (empty($attendees)) {
66
-            return array(
67
-                'data' => array(),
68
-                'done' => true,
69
-            );
70
-        }
65
+		if (empty($attendees)) {
66
+			return array(
67
+				'data' => array(),
68
+				'done' => true,
69
+			);
70
+		}
71 71
 
72
-        $export_items = array();
73
-        foreach ($attendees as $attendee) {
74
-            $export_fields = array_intersect_key(
75
-                $this->attendee_model->field_settings(),
76
-                array_flip(
77
-                    array(
78
-                        'ATT_fname',
79
-                        'ATT_lname',
80
-                        'ATT_email',
81
-                        'ATT_address1',
82
-                        'ATT_address2',
83
-                        'ATT_city',
84
-                        'STA_ID',
85
-                        'CNT_ISO',
86
-                        'ATT_zip',
87
-                        'ATT_phone',
88
-                    )
89
-                )
90
-            );
91
-            $data = array();
92
-            foreach ($export_fields as $field_name => $field_obj) {
93
-                if ($field_name === 'STA_ID') {
94
-                    $value = $attendee->state_name();
95
-                } elseif ($field_name == 'CNT_ISO') {
96
-                    $value = $attendee->country_name();
97
-                } else {
98
-                    $value = $attendee->get_pretty($field_name);
99
-                }
100
-                $data[] = array(
101
-                    'name'  => $field_obj->get_nicename(),
102
-                    'value' => $value,
103
-                );
104
-            }
105
-            $export_items[] =
106
-                array(
107
-                    'group_id'    => 'att-' . $attendee->ID(),
108
-                    'group_label' => esc_html__('Contact Profiles', 'event_espresso'),
109
-                    'item_id'     => $attendee->ID(),
110
-                    'data'        => $data,
111
-                );
112
-        }
113
-        return array(
114
-            'data' => $export_items,
115
-            'done' => true,
116
-        );
117
-    }
72
+		$export_items = array();
73
+		foreach ($attendees as $attendee) {
74
+			$export_fields = array_intersect_key(
75
+				$this->attendee_model->field_settings(),
76
+				array_flip(
77
+					array(
78
+						'ATT_fname',
79
+						'ATT_lname',
80
+						'ATT_email',
81
+						'ATT_address1',
82
+						'ATT_address2',
83
+						'ATT_city',
84
+						'STA_ID',
85
+						'CNT_ISO',
86
+						'ATT_zip',
87
+						'ATT_phone',
88
+					)
89
+				)
90
+			);
91
+			$data = array();
92
+			foreach ($export_fields as $field_name => $field_obj) {
93
+				if ($field_name === 'STA_ID') {
94
+					$value = $attendee->state_name();
95
+				} elseif ($field_name == 'CNT_ISO') {
96
+					$value = $attendee->country_name();
97
+				} else {
98
+					$value = $attendee->get_pretty($field_name);
99
+				}
100
+				$data[] = array(
101
+					'name'  => $field_obj->get_nicename(),
102
+					'value' => $value,
103
+				);
104
+			}
105
+			$export_items[] =
106
+				array(
107
+					'group_id'    => 'att-' . $attendee->ID(),
108
+					'group_label' => esc_html__('Contact Profiles', 'event_espresso'),
109
+					'item_id'     => $attendee->ID(),
110
+					'data'        => $data,
111
+				);
112
+		}
113
+		return array(
114
+			'data' => $export_items,
115
+			'done' => true,
116
+		);
117
+	}
118 118
 
119
-    /**
120
-     * Gets the Translated name of this exporter
121
-     *
122
-     * @return string
123
-     */
124
-    public function name()
125
-    {
126
-        return esc_html__('Event Espresso Attendee Data Exporter', 'event_espresso');
127
-    }
119
+	/**
120
+	 * Gets the Translated name of this exporter
121
+	 *
122
+	 * @return string
123
+	 */
124
+	public function name()
125
+	{
126
+		return esc_html__('Event Espresso Attendee Data Exporter', 'event_espresso');
127
+	}
128 128
 }
129 129
 // End of file ExportAttendee.php
130 130
 // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportAttendee.php
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -104,7 +104,7 @@
 block discarded – undo
104 104
             }
105 105
             $export_items[] =
106 106
                 array(
107
-                    'group_id'    => 'att-' . $attendee->ID(),
107
+                    'group_id'    => 'att-'.$attendee->ID(),
108 108
                     'group_label' => esc_html__('Contact Profiles', 'event_espresso'),
109 109
                     'item_id'     => $attendee->ID(),
110 110
                     'data'        => $data,
Please login to merge, or discard this patch.
core/domain/services/admin/privacy/export/ExportRegistration.php 1 patch
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -18,133 +18,133 @@
 block discarded – undo
18 18
  */
19 19
 class ExportRegistration implements PersonalDataExporterInterface
20 20
 {
21
-    /**
22
-     * @var EEM_Registration
23
-     */
24
-    protected $registration_model;
21
+	/**
22
+	 * @var EEM_Registration
23
+	 */
24
+	protected $registration_model;
25 25
 
26
-    /**
27
-     * ExportRegistration constructor.
28
-     *
29
-     * @param EEM_Registration $registration_model
30
-     */
31
-    public function __construct(EEM_Registration $registration_model)
32
-    {
33
-        $this->registration_model = $registration_model;
34
-    }
26
+	/**
27
+	 * ExportRegistration constructor.
28
+	 *
29
+	 * @param EEM_Registration $registration_model
30
+	 */
31
+	public function __construct(EEM_Registration $registration_model)
32
+	{
33
+		$this->registration_model = $registration_model;
34
+	}
35 35
 
36 36
 
37
-    /**
38
-     * Returns data for export.
39
-     *
40
-     * @param string    $email_address ,
41
-     * @param int       $page          starts at 1, not 0
42
-     * @return array {
43
-     * @type array      $data          {
44
-     * @type array {
45
-     * @type string     $group_id      (not translated, same for all exports)
46
-     * @type string     $group_label   (translated string)
47
-     * @type string|int $item_id
48
-     * @type array      $data          {
49
-     * @type array {
50
-     * @type string     $name          what's shown in the left-column of the export row
51
-     * @type string     $value         what's showin the right-column of the export row
52
-     *                                 }
53
-     *                                 }
54
-     *                                 }
55
-     *                                 }
56
-     *                                 }
57
-     */
58
-    public function export($email_address, $page = 1)
59
-    {
60
-        $page_size = 10;
61
-        $registrations = $this->registration_model->get_all(
62
-            array(
63
-                array(
64
-                    'Attendee.ATT_email' => $email_address,
65
-                ),
66
-                'limit' => array(
67
-                    ($page - 1) * $page_size,
68
-                    $page_size,
69
-                ),
70
-            )
71
-        );
72
-        $export_fields = array_intersect_key(
73
-            $this->registration_model->field_settings(),
74
-            array_flip(
75
-                array(
76
-                    'REG_code',
77
-                    'REG_date',
78
-                    'REG_final_price',
79
-                    'REG_paid',
80
-                    'REG_url_link',
81
-                    'REG_count',
82
-                    'REG_group_size',
83
-                    'REG_att_is_going',
84
-                )
85
-            )
86
-        );
87
-        $export_items = array();
88
-        $found_something = false;
89
-        foreach ($registrations as $registration) {
90
-            /**
91
-             * @var $registration EE_Registration
92
-             */
93
-            $found_something = true;
94
-            $data = array();
95
-            foreach ($export_fields as $field_name => $field_obj) {
96
-                $data[] = array(
97
-                    'name'  => $field_obj->get_nicename(),
98
-                    'value' => $registration->get_pretty($field_name),
99
-                );
100
-            }
101
-            $answers = $registration->answers(
102
-                array(
103
-                    'force_join' => array(
104
-                        'Question',
105
-                    ),
106
-                )
107
-            );
108
-            foreach ($answers as $answer) {
109
-                $data[] = array(
110
-                    'name'  => $answer->question()->display_text(),
111
-                    'value' => $answer->pretty_value(),
112
-                );
113
-            }
114
-            $ticket = $registration->ticket();
115
-            if ($ticket instanceof EE_Ticket) {
116
-                $data[] = array(
117
-                    'name'  => esc_html__('Ticket', 'event_espresso'),
118
-                    'value' => $ticket->name_and_info(),
119
-                );
120
-                $data[] = array(
121
-                    'name'  => esc_html__('Event', 'event_espresso'),
122
-                    'value' => $ticket->get_event_name(),
123
-                );
124
-            }
37
+	/**
38
+	 * Returns data for export.
39
+	 *
40
+	 * @param string    $email_address ,
41
+	 * @param int       $page          starts at 1, not 0
42
+	 * @return array {
43
+	 * @type array      $data          {
44
+	 * @type array {
45
+	 * @type string     $group_id      (not translated, same for all exports)
46
+	 * @type string     $group_label   (translated string)
47
+	 * @type string|int $item_id
48
+	 * @type array      $data          {
49
+	 * @type array {
50
+	 * @type string     $name          what's shown in the left-column of the export row
51
+	 * @type string     $value         what's showin the right-column of the export row
52
+	 *                                 }
53
+	 *                                 }
54
+	 *                                 }
55
+	 *                                 }
56
+	 *                                 }
57
+	 */
58
+	public function export($email_address, $page = 1)
59
+	{
60
+		$page_size = 10;
61
+		$registrations = $this->registration_model->get_all(
62
+			array(
63
+				array(
64
+					'Attendee.ATT_email' => $email_address,
65
+				),
66
+				'limit' => array(
67
+					($page - 1) * $page_size,
68
+					$page_size,
69
+				),
70
+			)
71
+		);
72
+		$export_fields = array_intersect_key(
73
+			$this->registration_model->field_settings(),
74
+			array_flip(
75
+				array(
76
+					'REG_code',
77
+					'REG_date',
78
+					'REG_final_price',
79
+					'REG_paid',
80
+					'REG_url_link',
81
+					'REG_count',
82
+					'REG_group_size',
83
+					'REG_att_is_going',
84
+				)
85
+			)
86
+		);
87
+		$export_items = array();
88
+		$found_something = false;
89
+		foreach ($registrations as $registration) {
90
+			/**
91
+			 * @var $registration EE_Registration
92
+			 */
93
+			$found_something = true;
94
+			$data = array();
95
+			foreach ($export_fields as $field_name => $field_obj) {
96
+				$data[] = array(
97
+					'name'  => $field_obj->get_nicename(),
98
+					'value' => $registration->get_pretty($field_name),
99
+				);
100
+			}
101
+			$answers = $registration->answers(
102
+				array(
103
+					'force_join' => array(
104
+						'Question',
105
+					),
106
+				)
107
+			);
108
+			foreach ($answers as $answer) {
109
+				$data[] = array(
110
+					'name'  => $answer->question()->display_text(),
111
+					'value' => $answer->pretty_value(),
112
+				);
113
+			}
114
+			$ticket = $registration->ticket();
115
+			if ($ticket instanceof EE_Ticket) {
116
+				$data[] = array(
117
+					'name'  => esc_html__('Ticket', 'event_espresso'),
118
+					'value' => $ticket->name_and_info(),
119
+				);
120
+				$data[] = array(
121
+					'name'  => esc_html__('Event', 'event_espresso'),
122
+					'value' => $ticket->get_event_name(),
123
+				);
124
+			}
125 125
 
126
-            $export_items[] = array(
127
-                'group_id'    => 'registration',
128
-                'group_label' => esc_html__('Event Registrations', 'event_espresso'),
129
-                'item_id'     => $registration->ID(),
130
-                'data'        => $data,
131
-            );
132
-        }
133
-        return array(
134
-            'data' => $export_items,
135
-            'done' => ! $found_something,
136
-        );
137
-    }
126
+			$export_items[] = array(
127
+				'group_id'    => 'registration',
128
+				'group_label' => esc_html__('Event Registrations', 'event_espresso'),
129
+				'item_id'     => $registration->ID(),
130
+				'data'        => $data,
131
+			);
132
+		}
133
+		return array(
134
+			'data' => $export_items,
135
+			'done' => ! $found_something,
136
+		);
137
+	}
138 138
 
139
-    /**
140
-     * Gets the Translated name of this exporter
141
-     *
142
-     * @return string
143
-     */
144
-    public function name()
145
-    {
146
-        return esc_html__('Event Espresso Registration Data Exporter', 'event_espresso');
147
-    }
139
+	/**
140
+	 * Gets the Translated name of this exporter
141
+	 *
142
+	 * @return string
143
+	 */
144
+	public function name()
145
+	{
146
+		return esc_html__('Event Espresso Registration Data Exporter', 'event_espresso');
147
+	}
148 148
 }
149 149
 // End of file ExportRegistration.php
150 150
 // Location: EventEspresso\core\domain\services\admin\privacy\export/ExportRegistration.php
Please login to merge, or discard this patch.
modules/single_page_checkout/inc/EE_SPCO_JSON_Response.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -122,7 +122,7 @@  discard block
 block discarded – undo
122 122
             $JSON_response['success'] = $this->success();
123 123
         }
124 124
         // but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
125
-        if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
125
+        if ( ! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
126 126
             $JSON_response['success'] = null;
127 127
         }
128 128
         // set redirect_url, IF it exists
@@ -162,7 +162,7 @@  discard block
 block discarded – undo
162 162
         // and finally, add return_data array to main JSON response array, IF it contains anything
163 163
         // why did we add some of the above properties to the return data array?
164 164
         // because it is easier and cleaner in the Javascript to deal with this way
165
-        if (! empty($return_data)) {
165
+        if ( ! empty($return_data)) {
166 166
             $JSON_response['return_data'] = $return_data;
167 167
         }
168 168
         // filter final array
Please login to merge, or discard this patch.
Indentation   +397 added lines, -397 removed lines patch added patch discarded remove patch
@@ -14,401 +14,401 @@
 block discarded – undo
14 14
  */
15 15
 class EE_SPCO_JSON_Response
16 16
 {
17
-    /**
18
-     * @var string
19
-     */
20
-    protected $_errors = '';
21
-
22
-    /**
23
-     * @var string
24
-     */
25
-    protected $_unexpected_errors = '';
26
-
27
-    /**
28
-     * @var string
29
-     */
30
-    protected $_attention = '';
31
-
32
-    /**
33
-     * @var string
34
-     */
35
-    protected $_success = '';
36
-
37
-    /**
38
-     * @var string
39
-     */
40
-    protected $_plz_select_method_of_payment = '';
41
-
42
-    /**
43
-     * @var string
44
-     */
45
-    protected $_redirect_url = '';
46
-
47
-    /**
48
-     * @var string
49
-     */
50
-    protected $_registration_time_limit = '';
51
-
52
-    /**
53
-     * @var string
54
-     */
55
-    protected $_redirect_form = '';
56
-
57
-    /**
58
-     * @var string
59
-     */
60
-    protected $_reg_step_html = '';
61
-
62
-    /**
63
-     * @var string
64
-     */
65
-    protected $_method_of_payment = '';
66
-
67
-    /**
68
-     * @var float
69
-     */
70
-    protected $_payment_amount;
71
-
72
-    /**
73
-     * @var array
74
-     */
75
-    protected $_return_data = array();
76
-
77
-
78
-    /**
79
-     * @var array
80
-     */
81
-    protected $_validation_rules = array();
82
-
83
-
84
-    /**
85
-     *    class constructor
86
-     */
87
-    public function __construct()
88
-    {
89
-    }
90
-
91
-
92
-    /**
93
-     *    __toString
94
-     *
95
-     *        allows you to simply echo or print an EE_SPCO_JSON_Response object to produce a  JSON encoded string
96
-     *
97
-     * @access    public
98
-     * @return    string
99
-     */
100
-    public function __toString()
101
-    {
102
-        $JSON_response = array();
103
-        // grab notices
104
-        $notices = EE_Error::get_notices(false);
105
-        $this->set_attention(isset($notices['attention']) ? $notices['attention'] : '');
106
-        $this->set_errors(isset($notices['errors']) ? $notices['errors'] : '');
107
-        $this->set_success(isset($notices['success']) ? $notices['success'] : '');
108
-        // add notices to JSON response, but only if they exist
109
-        if ($this->attention()) {
110
-            $JSON_response['attention'] = $this->attention();
111
-        }
112
-        if ($this->errors()) {
113
-            $JSON_response['errors'] = $this->errors();
114
-        }
115
-        if ($this->unexpected_errors()) {
116
-            $JSON_response['unexpected_errors'] = $this->unexpected_errors();
117
-        }
118
-        if ($this->success()) {
119
-            $JSON_response['success'] = $this->success();
120
-        }
121
-        // but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
122
-        if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
123
-            $JSON_response['success'] = null;
124
-        }
125
-        // set redirect_url, IF it exists
126
-        if ($this->redirect_url()) {
127
-            $JSON_response['redirect_url'] = $this->redirect_url();
128
-        }
129
-        // set registration_time_limit, IF it exists
130
-        if ($this->registration_time_limit()) {
131
-            $JSON_response['registration_time_limit'] = $this->registration_time_limit();
132
-        }
133
-        // set payment_amount, IF it exists
134
-        if ($this->payment_amount() !== null) {
135
-            $JSON_response['payment_amount'] = $this->payment_amount();
136
-        }
137
-        // grab generic return data
138
-        $return_data = $this->return_data();
139
-        // add billing form validation rules
140
-        if ($this->validation_rules()) {
141
-            $return_data['validation_rules'] = $this->validation_rules();
142
-        }
143
-        // set reg_step_html, IF it exists
144
-        if ($this->reg_step_html()) {
145
-            $return_data['reg_step_html'] = $this->reg_step_html();
146
-        }
147
-        // set method of payment, IF it exists
148
-        if ($this->method_of_payment()) {
149
-            $return_data['method_of_payment'] = $this->method_of_payment();
150
-        }
151
-        // set "plz_select_method_of_payment" message, IF it exists
152
-        if ($this->plz_select_method_of_payment()) {
153
-            $return_data['plz_select_method_of_payment'] = $this->plz_select_method_of_payment();
154
-        }
155
-        // set redirect_form, IF it exists
156
-        if ($this->redirect_form()) {
157
-            $return_data['redirect_form'] = $this->redirect_form();
158
-        }
159
-        // and finally, add return_data array to main JSON response array, IF it contains anything
160
-        // why did we add some of the above properties to the return data array?
161
-        // because it is easier and cleaner in the Javascript to deal with this way
162
-        if (! empty($return_data)) {
163
-            $JSON_response['return_data'] = $return_data;
164
-        }
165
-        // filter final array
166
-        $JSON_response = apply_filters('FHEE__EE_SPCO_JSON_Response___toString__JSON_response', $JSON_response);
167
-        // return encoded array
168
-        return (string) wp_json_encode($JSON_response);
169
-    }
170
-
171
-
172
-    /**
173
-     * @param string $attention
174
-     */
175
-    public function set_attention($attention)
176
-    {
177
-        $this->_attention = $attention;
178
-    }
179
-
180
-
181
-    /**
182
-     * @return string
183
-     */
184
-    public function attention()
185
-    {
186
-        return $this->_attention;
187
-    }
188
-
189
-
190
-    /**
191
-     * @param string $errors
192
-     */
193
-    public function set_errors($errors)
194
-    {
195
-        $this->_errors = $errors;
196
-    }
197
-
198
-
199
-    /**
200
-     * @return string
201
-     */
202
-    public function errors()
203
-    {
204
-        return $this->_errors;
205
-    }
206
-
207
-
208
-    /**
209
-     * @return string
210
-     */
211
-    public function unexpected_errors()
212
-    {
213
-        return $this->_unexpected_errors;
214
-    }
215
-
216
-
217
-    /**
218
-     * @param string $unexpected_errors
219
-     */
220
-    public function set_unexpected_errors($unexpected_errors)
221
-    {
222
-        $this->_unexpected_errors = $unexpected_errors;
223
-    }
224
-
225
-
226
-    /**
227
-     * @param string $success
228
-     */
229
-    public function set_success($success)
230
-    {
231
-        $this->_success = $success;
232
-    }
233
-
234
-
235
-    /**
236
-     * @return string
237
-     */
238
-    public function success()
239
-    {
240
-        return $this->_success;
241
-    }
242
-
243
-
244
-    /**
245
-     * @param string $method_of_payment
246
-     */
247
-    public function set_method_of_payment($method_of_payment)
248
-    {
249
-        $this->_method_of_payment = $method_of_payment;
250
-    }
251
-
252
-
253
-    /**
254
-     * @return string
255
-     */
256
-    public function method_of_payment()
257
-    {
258
-        return $this->_method_of_payment;
259
-    }
260
-
261
-
262
-    /**
263
-     * @return float
264
-     */
265
-    public function payment_amount()
266
-    {
267
-        return $this->_payment_amount;
268
-    }
269
-
270
-
271
-    /**
272
-     * @param float $payment_amount
273
-     * @throws EE_Error
274
-     */
275
-    public function set_payment_amount($payment_amount)
276
-    {
277
-        $this->_payment_amount = (float) $payment_amount;
278
-    }
279
-
280
-
281
-    /**
282
-     * @param string $next_step_html
283
-     */
284
-    public function set_reg_step_html($next_step_html)
285
-    {
286
-        $this->_reg_step_html = $next_step_html;
287
-    }
288
-
289
-
290
-    /**
291
-     * @return string
292
-     */
293
-    public function reg_step_html()
294
-    {
295
-        return $this->_reg_step_html;
296
-    }
297
-
298
-
299
-    /**
300
-     * @param string $redirect_form
301
-     */
302
-    public function set_redirect_form($redirect_form)
303
-    {
304
-        $this->_redirect_form = $redirect_form;
305
-    }
306
-
307
-
308
-    /**
309
-     * @return string
310
-     */
311
-    public function redirect_form()
312
-    {
313
-        return ! empty($this->_redirect_form) ? $this->_redirect_form : false;
314
-    }
315
-
316
-
317
-    /**
318
-     * @param string $plz_select_method_of_payment
319
-     */
320
-    public function set_plz_select_method_of_payment($plz_select_method_of_payment)
321
-    {
322
-        $this->_plz_select_method_of_payment = $plz_select_method_of_payment;
323
-    }
324
-
325
-
326
-    /**
327
-     * @return string
328
-     */
329
-    public function plz_select_method_of_payment()
330
-    {
331
-        return $this->_plz_select_method_of_payment;
332
-    }
333
-
334
-
335
-    /**
336
-     * @param string $redirect_url
337
-     */
338
-    public function set_redirect_url($redirect_url)
339
-    {
340
-        $this->_redirect_url = $redirect_url;
341
-    }
342
-
343
-
344
-    /**
345
-     * @return string
346
-     */
347
-    public function redirect_url()
348
-    {
349
-        return $this->_redirect_url;
350
-    }
351
-
352
-
353
-    /**
354
-     * @return string
355
-     */
356
-    public function registration_time_limit()
357
-    {
358
-        return $this->_registration_time_limit;
359
-    }
360
-
361
-
362
-    /**
363
-     * @param string $registration_time_limit
364
-     */
365
-    public function set_registration_time_limit($registration_time_limit)
366
-    {
367
-        $this->_registration_time_limit = $registration_time_limit;
368
-    }
369
-
370
-
371
-    /**
372
-     * @param array $return_data
373
-     */
374
-    public function set_return_data($return_data)
375
-    {
376
-        $this->_return_data = array_merge($this->_return_data, $return_data);
377
-    }
378
-
379
-
380
-    /**
381
-     * @return array
382
-     */
383
-    public function return_data()
384
-    {
385
-        return $this->_return_data;
386
-    }
387
-
388
-
389
-    /**
390
-     * @param array $validation_rules
391
-     */
392
-    public function add_validation_rules(array $validation_rules = array())
393
-    {
394
-        if (is_array($validation_rules) && ! empty($validation_rules)) {
395
-            $this->_validation_rules = array_merge($this->_validation_rules, $validation_rules);
396
-        }
397
-    }
398
-
399
-
400
-    /**
401
-     * @return array | bool
402
-     */
403
-    public function validation_rules()
404
-    {
405
-        return ! empty($this->_validation_rules) ? $this->_validation_rules : false;
406
-    }
407
-
408
-
409
-    public function echoAndExit()
410
-    {
411
-        echo ($this);
412
-        exit();
413
-    }
17
+	/**
18
+	 * @var string
19
+	 */
20
+	protected $_errors = '';
21
+
22
+	/**
23
+	 * @var string
24
+	 */
25
+	protected $_unexpected_errors = '';
26
+
27
+	/**
28
+	 * @var string
29
+	 */
30
+	protected $_attention = '';
31
+
32
+	/**
33
+	 * @var string
34
+	 */
35
+	protected $_success = '';
36
+
37
+	/**
38
+	 * @var string
39
+	 */
40
+	protected $_plz_select_method_of_payment = '';
41
+
42
+	/**
43
+	 * @var string
44
+	 */
45
+	protected $_redirect_url = '';
46
+
47
+	/**
48
+	 * @var string
49
+	 */
50
+	protected $_registration_time_limit = '';
51
+
52
+	/**
53
+	 * @var string
54
+	 */
55
+	protected $_redirect_form = '';
56
+
57
+	/**
58
+	 * @var string
59
+	 */
60
+	protected $_reg_step_html = '';
61
+
62
+	/**
63
+	 * @var string
64
+	 */
65
+	protected $_method_of_payment = '';
66
+
67
+	/**
68
+	 * @var float
69
+	 */
70
+	protected $_payment_amount;
71
+
72
+	/**
73
+	 * @var array
74
+	 */
75
+	protected $_return_data = array();
76
+
77
+
78
+	/**
79
+	 * @var array
80
+	 */
81
+	protected $_validation_rules = array();
82
+
83
+
84
+	/**
85
+	 *    class constructor
86
+	 */
87
+	public function __construct()
88
+	{
89
+	}
90
+
91
+
92
+	/**
93
+	 *    __toString
94
+	 *
95
+	 *        allows you to simply echo or print an EE_SPCO_JSON_Response object to produce a  JSON encoded string
96
+	 *
97
+	 * @access    public
98
+	 * @return    string
99
+	 */
100
+	public function __toString()
101
+	{
102
+		$JSON_response = array();
103
+		// grab notices
104
+		$notices = EE_Error::get_notices(false);
105
+		$this->set_attention(isset($notices['attention']) ? $notices['attention'] : '');
106
+		$this->set_errors(isset($notices['errors']) ? $notices['errors'] : '');
107
+		$this->set_success(isset($notices['success']) ? $notices['success'] : '');
108
+		// add notices to JSON response, but only if they exist
109
+		if ($this->attention()) {
110
+			$JSON_response['attention'] = $this->attention();
111
+		}
112
+		if ($this->errors()) {
113
+			$JSON_response['errors'] = $this->errors();
114
+		}
115
+		if ($this->unexpected_errors()) {
116
+			$JSON_response['unexpected_errors'] = $this->unexpected_errors();
117
+		}
118
+		if ($this->success()) {
119
+			$JSON_response['success'] = $this->success();
120
+		}
121
+		// but if NO notices are set... at least set the "success" as a key so that the JS knows everything worked
122
+		if (! isset($JSON_response['attention']) && ! isset($JSON_response['errors']) && ! isset($JSON_response['success'])) {
123
+			$JSON_response['success'] = null;
124
+		}
125
+		// set redirect_url, IF it exists
126
+		if ($this->redirect_url()) {
127
+			$JSON_response['redirect_url'] = $this->redirect_url();
128
+		}
129
+		// set registration_time_limit, IF it exists
130
+		if ($this->registration_time_limit()) {
131
+			$JSON_response['registration_time_limit'] = $this->registration_time_limit();
132
+		}
133
+		// set payment_amount, IF it exists
134
+		if ($this->payment_amount() !== null) {
135
+			$JSON_response['payment_amount'] = $this->payment_amount();
136
+		}
137
+		// grab generic return data
138
+		$return_data = $this->return_data();
139
+		// add billing form validation rules
140
+		if ($this->validation_rules()) {
141
+			$return_data['validation_rules'] = $this->validation_rules();
142
+		}
143
+		// set reg_step_html, IF it exists
144
+		if ($this->reg_step_html()) {
145
+			$return_data['reg_step_html'] = $this->reg_step_html();
146
+		}
147
+		// set method of payment, IF it exists
148
+		if ($this->method_of_payment()) {
149
+			$return_data['method_of_payment'] = $this->method_of_payment();
150
+		}
151
+		// set "plz_select_method_of_payment" message, IF it exists
152
+		if ($this->plz_select_method_of_payment()) {
153
+			$return_data['plz_select_method_of_payment'] = $this->plz_select_method_of_payment();
154
+		}
155
+		// set redirect_form, IF it exists
156
+		if ($this->redirect_form()) {
157
+			$return_data['redirect_form'] = $this->redirect_form();
158
+		}
159
+		// and finally, add return_data array to main JSON response array, IF it contains anything
160
+		// why did we add some of the above properties to the return data array?
161
+		// because it is easier and cleaner in the Javascript to deal with this way
162
+		if (! empty($return_data)) {
163
+			$JSON_response['return_data'] = $return_data;
164
+		}
165
+		// filter final array
166
+		$JSON_response = apply_filters('FHEE__EE_SPCO_JSON_Response___toString__JSON_response', $JSON_response);
167
+		// return encoded array
168
+		return (string) wp_json_encode($JSON_response);
169
+	}
170
+
171
+
172
+	/**
173
+	 * @param string $attention
174
+	 */
175
+	public function set_attention($attention)
176
+	{
177
+		$this->_attention = $attention;
178
+	}
179
+
180
+
181
+	/**
182
+	 * @return string
183
+	 */
184
+	public function attention()
185
+	{
186
+		return $this->_attention;
187
+	}
188
+
189
+
190
+	/**
191
+	 * @param string $errors
192
+	 */
193
+	public function set_errors($errors)
194
+	{
195
+		$this->_errors = $errors;
196
+	}
197
+
198
+
199
+	/**
200
+	 * @return string
201
+	 */
202
+	public function errors()
203
+	{
204
+		return $this->_errors;
205
+	}
206
+
207
+
208
+	/**
209
+	 * @return string
210
+	 */
211
+	public function unexpected_errors()
212
+	{
213
+		return $this->_unexpected_errors;
214
+	}
215
+
216
+
217
+	/**
218
+	 * @param string $unexpected_errors
219
+	 */
220
+	public function set_unexpected_errors($unexpected_errors)
221
+	{
222
+		$this->_unexpected_errors = $unexpected_errors;
223
+	}
224
+
225
+
226
+	/**
227
+	 * @param string $success
228
+	 */
229
+	public function set_success($success)
230
+	{
231
+		$this->_success = $success;
232
+	}
233
+
234
+
235
+	/**
236
+	 * @return string
237
+	 */
238
+	public function success()
239
+	{
240
+		return $this->_success;
241
+	}
242
+
243
+
244
+	/**
245
+	 * @param string $method_of_payment
246
+	 */
247
+	public function set_method_of_payment($method_of_payment)
248
+	{
249
+		$this->_method_of_payment = $method_of_payment;
250
+	}
251
+
252
+
253
+	/**
254
+	 * @return string
255
+	 */
256
+	public function method_of_payment()
257
+	{
258
+		return $this->_method_of_payment;
259
+	}
260
+
261
+
262
+	/**
263
+	 * @return float
264
+	 */
265
+	public function payment_amount()
266
+	{
267
+		return $this->_payment_amount;
268
+	}
269
+
270
+
271
+	/**
272
+	 * @param float $payment_amount
273
+	 * @throws EE_Error
274
+	 */
275
+	public function set_payment_amount($payment_amount)
276
+	{
277
+		$this->_payment_amount = (float) $payment_amount;
278
+	}
279
+
280
+
281
+	/**
282
+	 * @param string $next_step_html
283
+	 */
284
+	public function set_reg_step_html($next_step_html)
285
+	{
286
+		$this->_reg_step_html = $next_step_html;
287
+	}
288
+
289
+
290
+	/**
291
+	 * @return string
292
+	 */
293
+	public function reg_step_html()
294
+	{
295
+		return $this->_reg_step_html;
296
+	}
297
+
298
+
299
+	/**
300
+	 * @param string $redirect_form
301
+	 */
302
+	public function set_redirect_form($redirect_form)
303
+	{
304
+		$this->_redirect_form = $redirect_form;
305
+	}
306
+
307
+
308
+	/**
309
+	 * @return string
310
+	 */
311
+	public function redirect_form()
312
+	{
313
+		return ! empty($this->_redirect_form) ? $this->_redirect_form : false;
314
+	}
315
+
316
+
317
+	/**
318
+	 * @param string $plz_select_method_of_payment
319
+	 */
320
+	public function set_plz_select_method_of_payment($plz_select_method_of_payment)
321
+	{
322
+		$this->_plz_select_method_of_payment = $plz_select_method_of_payment;
323
+	}
324
+
325
+
326
+	/**
327
+	 * @return string
328
+	 */
329
+	public function plz_select_method_of_payment()
330
+	{
331
+		return $this->_plz_select_method_of_payment;
332
+	}
333
+
334
+
335
+	/**
336
+	 * @param string $redirect_url
337
+	 */
338
+	public function set_redirect_url($redirect_url)
339
+	{
340
+		$this->_redirect_url = $redirect_url;
341
+	}
342
+
343
+
344
+	/**
345
+	 * @return string
346
+	 */
347
+	public function redirect_url()
348
+	{
349
+		return $this->_redirect_url;
350
+	}
351
+
352
+
353
+	/**
354
+	 * @return string
355
+	 */
356
+	public function registration_time_limit()
357
+	{
358
+		return $this->_registration_time_limit;
359
+	}
360
+
361
+
362
+	/**
363
+	 * @param string $registration_time_limit
364
+	 */
365
+	public function set_registration_time_limit($registration_time_limit)
366
+	{
367
+		$this->_registration_time_limit = $registration_time_limit;
368
+	}
369
+
370
+
371
+	/**
372
+	 * @param array $return_data
373
+	 */
374
+	public function set_return_data($return_data)
375
+	{
376
+		$this->_return_data = array_merge($this->_return_data, $return_data);
377
+	}
378
+
379
+
380
+	/**
381
+	 * @return array
382
+	 */
383
+	public function return_data()
384
+	{
385
+		return $this->_return_data;
386
+	}
387
+
388
+
389
+	/**
390
+	 * @param array $validation_rules
391
+	 */
392
+	public function add_validation_rules(array $validation_rules = array())
393
+	{
394
+		if (is_array($validation_rules) && ! empty($validation_rules)) {
395
+			$this->_validation_rules = array_merge($this->_validation_rules, $validation_rules);
396
+		}
397
+	}
398
+
399
+
400
+	/**
401
+	 * @return array | bool
402
+	 */
403
+	public function validation_rules()
404
+	{
405
+		return ! empty($this->_validation_rules) ? $this->_validation_rules : false;
406
+	}
407
+
408
+
409
+	public function echoAndExit()
410
+	{
411
+		echo ($this);
412
+		exit();
413
+	}
414 414
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Message_Template_Group.class.php 2 patches
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -48,7 +48,7 @@  discard block
 block discarded – undo
48 48
      */
49 49
     public function set_message_type($message_type = false)
50 50
     {
51
-        if (! $message_type) {
51
+        if ( ! $message_type) {
52 52
             throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
53 53
         }
54 54
         $this->set('MTP_message_type', $message_type);
@@ -61,7 +61,7 @@  discard block
 block discarded – undo
61 61
      */
62 62
     public function set_messenger($messenger = false)
63 63
     {
64
-        if (! $messenger) {
64
+        if ( ! $messenger) {
65 65
             throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
66 66
         }
67 67
         $this->set('MTP_messenger', $messenger);
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
      */
75 75
     public function set_group_template_id($GRP_ID = false)
76 76
     {
77
-        if (! $GRP_ID) {
77
+        if ( ! $GRP_ID) {
78 78
             throw new EE_Error(
79 79
                 esc_html__(
80 80
                     'Missing required value for the message template group id',
@@ -290,7 +290,7 @@  discard block
 block discarded – undo
290 290
         }
291 291
         // note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
292 292
         foreach ($mtps as $mtp) {
293
-            $mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
+            $mtps_arr[$mtp->get('MTP_context')][$mtp->get('MTP_template_field')] = $mtp;
294 294
         }
295 295
         return $mtps_arr;
296 296
     }
@@ -430,7 +430,7 @@  discard block
 block discarded – undo
430 430
     public function deactivate_context($context)
431 431
     {
432 432
         $this->validate_context($context);
433
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
+        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, false);
434 434
     }
435 435
 
436 436
 
@@ -445,7 +445,7 @@  discard block
 block discarded – undo
445 445
     public function activate_context($context)
446 446
     {
447 447
         $this->validate_context($context);
448
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
+        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, true);
449 449
     }
450 450
 
451 451
 
@@ -465,7 +465,7 @@  discard block
 block discarded – undo
465 465
     {
466 466
         $this->validate_context($context);
467 467
         return filter_var(
468
-            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
+            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX.$context, true, true),
469 469
             FILTER_VALIDATE_BOOLEAN
470 470
         );
471 471
     }
@@ -481,7 +481,7 @@  discard block
 block discarded – undo
481 481
     public function validate_context($context)
482 482
     {
483 483
         $contexts = $this->contexts_config();
484
-        if (! isset($contexts[ $context ])) {
484
+        if ( ! isset($contexts[$context])) {
485 485
             throw new InvalidIdentifierException(
486 486
                 '',
487 487
                 '',
Please login to merge, or discard this patch.
Indentation   +483 added lines, -483 removed lines patch added patch discarded remove patch
@@ -12,487 +12,487 @@
 block discarded – undo
12 12
  */
13 13
 class EE_Message_Template_Group extends EE_Soft_Delete_Base_Class
14 14
 {
15
-    /**
16
-     * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
17
-     */
18
-    const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
19
-
20
-    /**
21
-     * @param array  $props_n_values
22
-     * @param string $timezone
23
-     * @return EE_Message_Template_Group|mixed
24
-     * @throws EE_Error
25
-     */
26
-    public static function new_instance($props_n_values = array(), $timezone = '')
27
-    {
28
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
29
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone);
30
-    }
31
-
32
-
33
-    /**
34
-     * @param array  $props_n_values
35
-     * @param string $timezone
36
-     * @return EE_Message_Template_Group
37
-     */
38
-    public static function new_instance_from_db($props_n_values = array(), $timezone = '')
39
-    {
40
-        return new self($props_n_values, true, $timezone);
41
-    }
42
-
43
-
44
-    /**
45
-     * @param bool $message_type
46
-     * @throws EE_Error
47
-     */
48
-    public function set_message_type($message_type = false)
49
-    {
50
-        if (! $message_type) {
51
-            throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
52
-        }
53
-        $this->set('MTP_message_type', $message_type);
54
-    }
55
-
56
-
57
-    /**
58
-     * @param bool $messenger
59
-     * @throws EE_Error
60
-     */
61
-    public function set_messenger($messenger = false)
62
-    {
63
-        if (! $messenger) {
64
-            throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
65
-        }
66
-        $this->set('MTP_messenger', $messenger);
67
-    }
68
-
69
-
70
-    /**
71
-     * @param bool $GRP_ID
72
-     * @throws EE_Error
73
-     */
74
-    public function set_group_template_id($GRP_ID = false)
75
-    {
76
-        if (! $GRP_ID) {
77
-            throw new EE_Error(
78
-                esc_html__(
79
-                    'Missing required value for the message template group id',
80
-                    'event_espresso'
81
-                )
82
-            );
83
-        }
84
-        $this->set('GRP_ID', $GRP_ID);
85
-    }
86
-
87
-
88
-    /**
89
-     * get Group ID
90
-     *
91
-     * @access public
92
-     * @return int
93
-     * @throws EE_Error
94
-     */
95
-    public function GRP_ID()
96
-    {
97
-        return $this->get('GRP_ID');
98
-    }
99
-
100
-
101
-    /**
102
-     * get User ID
103
-     *
104
-     * @access public
105
-     * @return int
106
-     * @throws EE_Error
107
-     */
108
-    public function user()
109
-    {
110
-        $user_id = $this->get('MTP_user_id');
111
-        return empty($user_id) ? get_current_user_id() : $user_id;
112
-    }
113
-
114
-
115
-    /**
116
-     * Wrapper for the user function() (preserve backward compat)
117
-     *
118
-     * @since  4.5.0
119
-     * @return int
120
-     * @throws EE_Error
121
-     */
122
-    public function wp_user()
123
-    {
124
-        return $this->user();
125
-    }
126
-
127
-
128
-    /**
129
-     * This simply returns a count of all related events to this message template group
130
-     *
131
-     * @return int
132
-     */
133
-    public function count_events()
134
-    {
135
-        return $this->count_related('Event');
136
-    }
137
-
138
-
139
-    /**
140
-     * returns the name saved in the db for this template
141
-     *
142
-     * @return string
143
-     * @throws EE_Error
144
-     */
145
-    public function name()
146
-    {
147
-        return $this->get('MTP_name');
148
-    }
149
-
150
-
151
-    /**
152
-     * Returns the description saved in the db for this template group
153
-     *
154
-     * @return string
155
-     * @throws EE_Error
156
-     */
157
-    public function description()
158
-    {
159
-        return $this->get('MTP_description');
160
-    }
161
-
162
-
163
-    /**
164
-     * returns all related EE_Message_Template objects
165
-     *
166
-     * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
167
-     * @return EE_Message_Template[]
168
-     * @throws EE_Error
169
-     */
170
-    public function message_templates($query_params = array())
171
-    {
172
-        return $this->get_many_related('Message_Template', $query_params);
173
-    }
174
-
175
-
176
-    /**
177
-     * get Message Messenger
178
-     *
179
-     * @access public
180
-     * @return string
181
-     * @throws EE_Error
182
-     */
183
-    public function messenger()
184
-    {
185
-        return $this->get('MTP_messenger');
186
-    }
187
-
188
-
189
-    /**
190
-     * get Message Messenger OBJECT
191
-     * If an attempt to get the corresponding messenger object fails, then we set this message
192
-     * template group to inactive, and save to db.  Then return null so client code can handle
193
-     * appropriately.
194
-     *
195
-     * @return EE_messenger
196
-     * @throws EE_Error
197
-     */
198
-    public function messenger_obj()
199
-    {
200
-        $messenger = $this->messenger();
201
-        try {
202
-            $messenger = EEH_MSG_Template::messenger_obj($messenger);
203
-        } catch (EE_Error $e) {
204
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
205
-            // class for this messenger in this group.
206
-            $this->set('MTP_is_active', false);
207
-            $this->save();
208
-            return null;
209
-        }
210
-        return $messenger;
211
-    }
212
-
213
-
214
-    /**
215
-     * get Message Type
216
-     *
217
-     * @access public
218
-     * @return string
219
-     * @throws EE_Error
220
-     */
221
-    public function message_type()
222
-    {
223
-        return $this->get('MTP_message_type');
224
-    }
225
-
226
-
227
-    /**
228
-     * get Message type OBJECT
229
-     * If an attempt to get the corresponding message type object fails, then we set this message
230
-     * template group to inactive, and save to db.  Then return null so client code can handle
231
-     * appropriately.
232
-     *
233
-     * @throws EE_Error
234
-     * @return EE_message_type|false if exception thrown.
235
-     */
236
-    public function message_type_obj()
237
-    {
238
-        $message_type = $this->message_type();
239
-        try {
240
-            $message_type = EEH_MSG_Template::message_type_obj($message_type);
241
-        } catch (EE_Error $e) {
242
-            // if an exception was thrown then let's deactivate this message template group because it means there is no
243
-            // class for the message type in this group.
244
-            $this->set('MTP_is_active', false);
245
-            $this->save();
246
-            return null;
247
-        }
248
-        return $message_type;
249
-    }
250
-
251
-
252
-    /**
253
-     * @return array
254
-     * @throws EE_Error
255
-     */
256
-    public function contexts_config()
257
-    {
258
-        return $this->message_type_obj()->get_contexts();
259
-    }
260
-
261
-
262
-    /**
263
-     * This returns the context_label for contexts as set in the message type object
264
-     * Note this is an array with singular and plural keys
265
-     *
266
-     * @access public
267
-     * @return array labels for "context"
268
-     * @throws EE_Error
269
-     */
270
-    public function context_label()
271
-    {
272
-        $obj = $this->message_type_obj();
273
-        return $obj->get_context_label();
274
-    }
275
-
276
-
277
-    /**
278
-     * This returns an array of EE_Message_Template objects indexed by context and field.
279
-     *
280
-     * @return array ()
281
-     * @throws EE_Error
282
-     */
283
-    public function context_templates()
284
-    {
285
-        $mtps_arr = array();
286
-        $mtps = $this->get_many_related('Message_Template');
287
-        if (empty($mtps)) {
288
-            return array();
289
-        }
290
-        // note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
291
-        foreach ($mtps as $mtp) {
292
-            $mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
-        }
294
-        return $mtps_arr;
295
-    }
296
-
297
-
298
-    /**
299
-     * this returns if the template group this template belongs to is global
300
-     *
301
-     * @return bool true if it is, false if it isn't
302
-     * @throws EE_Error
303
-     */
304
-    public function is_global()
305
-    {
306
-        return $this->get('MTP_is_global');
307
-    }
308
-
309
-
310
-    /**
311
-     * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
312
-     *
313
-     * @return bool true if it is, false if it isn't
314
-     * @throws EE_Error
315
-     */
316
-    public function is_active()
317
-    {
318
-        return $this->get('MTP_is_active');
319
-    }
320
-
321
-
322
-    /**
323
-     * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
324
-     * this template.
325
-     *
326
-     * @since 4.3.0
327
-     * @uses  EEH_MSG_Template::get_shortcodes()
328
-     * @param string $context what context we're going to return shortcodes for
329
-     * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
330
-     *                        to be returned.
331
-     * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
332
-     *                        unique shortcodes for all the given (or all) fields.
333
-     * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
334
-     *                        shortcodes found.
335
-     * @throws EE_Error
336
-     */
337
-    public function get_shortcodes($context, $fields = array(), $merged = false)
338
-    {
339
-        $messenger = $this->messenger();
340
-        $message_type = $this->message_type();
341
-        return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
342
-    }
343
-
344
-
345
-    /**
346
-     * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
347
-     * use the default template pack.
348
-     *
349
-     * @since 4.5.0
350
-     * @return string
351
-     * @throws EE_Error
352
-     */
353
-    public function get_template_pack_name()
354
-    {
355
-        return $this->get_extra_meta('MTP_template_pack', true, 'default');
356
-    }
357
-
358
-
359
-    /**
360
-     * This returns the specific template pack object referenced by the template pack name attached to this message
361
-     * template group.  If no template pack is assigned then the default template pack is retrieved.
362
-     *
363
-     * @since 4.5.0
364
-     * @return EE_Messages_Template_Pack
365
-     * @throws EE_Error
366
-     * @throws InvalidArgumentException
367
-     * @throws ReflectionException
368
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
369
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
370
-     */
371
-    public function get_template_pack()
372
-    {
373
-        $pack_name = $this->get_template_pack_name();
374
-        EE_Registry::instance()->load_helper('MSG_Template');
375
-        return EEH_MSG_Template::get_template_pack($pack_name);
376
-    }
377
-
378
-
379
-    /**
380
-     * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
381
-     * use the default template variation.
382
-     *
383
-     * @since 4.5.0
384
-     * @return string
385
-     * @throws EE_Error
386
-     */
387
-    public function get_template_pack_variation()
388
-    {
389
-        return $this->get_extra_meta('MTP_variation', true, 'default');
390
-    }
391
-
392
-
393
-    /**
394
-     * This just sets the template pack name attached to this message template group.
395
-     *
396
-     * @since 4.5.0
397
-     * @param string $template_pack_name What message template pack is assigned.
398
-     * @return int
399
-     * @throws EE_Error
400
-     */
401
-    public function set_template_pack_name($template_pack_name)
402
-    {
403
-        return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
404
-    }
405
-
406
-
407
-    /**
408
-     * This just sets the template pack variation attached to this message template group.
409
-     *
410
-     * @since 4.5.0
411
-     * @param string $variation What variation is being set on the message template group.
412
-     * @return int
413
-     * @throws EE_Error
414
-     */
415
-    public function set_template_pack_variation($variation)
416
-    {
417
-        return $this->update_extra_meta('MTP_variation', $variation);
418
-    }
419
-
420
-
421
-    /**
422
-     * Deactivates the given context.
423
-     *
424
-     * @param $context
425
-     * @return bool|int
426
-     * @throws EE_Error
427
-     * @throws InvalidIdentifierException
428
-     */
429
-    public function deactivate_context($context)
430
-    {
431
-        $this->validate_context($context);
432
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
-    }
434
-
435
-
436
-    /**
437
-     * Activates the given context.
438
-     *
439
-     * @param $context
440
-     * @return bool|int
441
-     * @throws EE_Error
442
-     * @throws InvalidIdentifierException
443
-     */
444
-    public function activate_context($context)
445
-    {
446
-        $this->validate_context($context);
447
-        return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
-    }
449
-
450
-
451
-    /**
452
-     * Returns whether the context is active or not.
453
-     * Note, this will default to true if the extra meta record doesn't exist.
454
-     * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
455
-     * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
456
-     * whether a context is "active" or not.
457
-     *
458
-     * @param $context
459
-     * @return bool
460
-     * @throws EE_Error
461
-     * @throws InvalidIdentifierException
462
-     */
463
-    public function is_context_active($context)
464
-    {
465
-        $this->validate_context($context);
466
-        return filter_var(
467
-            $this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
-            FILTER_VALIDATE_BOOLEAN
469
-        );
470
-    }
471
-
472
-
473
-    /**
474
-     * Validates the incoming context to verify it matches a registered context for the related message type.
475
-     *
476
-     * @param string $context
477
-     * @throws EE_Error
478
-     * @throws InvalidIdentifierException
479
-     */
480
-    public function validate_context($context)
481
-    {
482
-        $contexts = $this->contexts_config();
483
-        if (! isset($contexts[ $context ])) {
484
-            throw new InvalidIdentifierException(
485
-                '',
486
-                '',
487
-                sprintf(
488
-                    esc_html__(
489
-                        'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
490
-                        'event_espresso'
491
-                    ),
492
-                    $context,
493
-                    implode(',', array_keys($contexts))
494
-                )
495
-            );
496
-        }
497
-    }
15
+	/**
16
+	 * Extra Meta key prefix for whether a given context for this message tmeplate group is active or not.
17
+	 */
18
+	const ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX = 'active_context_';
19
+
20
+	/**
21
+	 * @param array  $props_n_values
22
+	 * @param string $timezone
23
+	 * @return EE_Message_Template_Group|mixed
24
+	 * @throws EE_Error
25
+	 */
26
+	public static function new_instance($props_n_values = array(), $timezone = '')
27
+	{
28
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
29
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone);
30
+	}
31
+
32
+
33
+	/**
34
+	 * @param array  $props_n_values
35
+	 * @param string $timezone
36
+	 * @return EE_Message_Template_Group
37
+	 */
38
+	public static function new_instance_from_db($props_n_values = array(), $timezone = '')
39
+	{
40
+		return new self($props_n_values, true, $timezone);
41
+	}
42
+
43
+
44
+	/**
45
+	 * @param bool $message_type
46
+	 * @throws EE_Error
47
+	 */
48
+	public function set_message_type($message_type = false)
49
+	{
50
+		if (! $message_type) {
51
+			throw new EE_Error(esc_html__('Missing required value for the message_type parameter', 'event_espresso'));
52
+		}
53
+		$this->set('MTP_message_type', $message_type);
54
+	}
55
+
56
+
57
+	/**
58
+	 * @param bool $messenger
59
+	 * @throws EE_Error
60
+	 */
61
+	public function set_messenger($messenger = false)
62
+	{
63
+		if (! $messenger) {
64
+			throw new EE_Error(esc_html__('Missing required value for the messenger parameter', 'event_espresso'));
65
+		}
66
+		$this->set('MTP_messenger', $messenger);
67
+	}
68
+
69
+
70
+	/**
71
+	 * @param bool $GRP_ID
72
+	 * @throws EE_Error
73
+	 */
74
+	public function set_group_template_id($GRP_ID = false)
75
+	{
76
+		if (! $GRP_ID) {
77
+			throw new EE_Error(
78
+				esc_html__(
79
+					'Missing required value for the message template group id',
80
+					'event_espresso'
81
+				)
82
+			);
83
+		}
84
+		$this->set('GRP_ID', $GRP_ID);
85
+	}
86
+
87
+
88
+	/**
89
+	 * get Group ID
90
+	 *
91
+	 * @access public
92
+	 * @return int
93
+	 * @throws EE_Error
94
+	 */
95
+	public function GRP_ID()
96
+	{
97
+		return $this->get('GRP_ID');
98
+	}
99
+
100
+
101
+	/**
102
+	 * get User ID
103
+	 *
104
+	 * @access public
105
+	 * @return int
106
+	 * @throws EE_Error
107
+	 */
108
+	public function user()
109
+	{
110
+		$user_id = $this->get('MTP_user_id');
111
+		return empty($user_id) ? get_current_user_id() : $user_id;
112
+	}
113
+
114
+
115
+	/**
116
+	 * Wrapper for the user function() (preserve backward compat)
117
+	 *
118
+	 * @since  4.5.0
119
+	 * @return int
120
+	 * @throws EE_Error
121
+	 */
122
+	public function wp_user()
123
+	{
124
+		return $this->user();
125
+	}
126
+
127
+
128
+	/**
129
+	 * This simply returns a count of all related events to this message template group
130
+	 *
131
+	 * @return int
132
+	 */
133
+	public function count_events()
134
+	{
135
+		return $this->count_related('Event');
136
+	}
137
+
138
+
139
+	/**
140
+	 * returns the name saved in the db for this template
141
+	 *
142
+	 * @return string
143
+	 * @throws EE_Error
144
+	 */
145
+	public function name()
146
+	{
147
+		return $this->get('MTP_name');
148
+	}
149
+
150
+
151
+	/**
152
+	 * Returns the description saved in the db for this template group
153
+	 *
154
+	 * @return string
155
+	 * @throws EE_Error
156
+	 */
157
+	public function description()
158
+	{
159
+		return $this->get('MTP_description');
160
+	}
161
+
162
+
163
+	/**
164
+	 * returns all related EE_Message_Template objects
165
+	 *
166
+	 * @param  array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
167
+	 * @return EE_Message_Template[]
168
+	 * @throws EE_Error
169
+	 */
170
+	public function message_templates($query_params = array())
171
+	{
172
+		return $this->get_many_related('Message_Template', $query_params);
173
+	}
174
+
175
+
176
+	/**
177
+	 * get Message Messenger
178
+	 *
179
+	 * @access public
180
+	 * @return string
181
+	 * @throws EE_Error
182
+	 */
183
+	public function messenger()
184
+	{
185
+		return $this->get('MTP_messenger');
186
+	}
187
+
188
+
189
+	/**
190
+	 * get Message Messenger OBJECT
191
+	 * If an attempt to get the corresponding messenger object fails, then we set this message
192
+	 * template group to inactive, and save to db.  Then return null so client code can handle
193
+	 * appropriately.
194
+	 *
195
+	 * @return EE_messenger
196
+	 * @throws EE_Error
197
+	 */
198
+	public function messenger_obj()
199
+	{
200
+		$messenger = $this->messenger();
201
+		try {
202
+			$messenger = EEH_MSG_Template::messenger_obj($messenger);
203
+		} catch (EE_Error $e) {
204
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
205
+			// class for this messenger in this group.
206
+			$this->set('MTP_is_active', false);
207
+			$this->save();
208
+			return null;
209
+		}
210
+		return $messenger;
211
+	}
212
+
213
+
214
+	/**
215
+	 * get Message Type
216
+	 *
217
+	 * @access public
218
+	 * @return string
219
+	 * @throws EE_Error
220
+	 */
221
+	public function message_type()
222
+	{
223
+		return $this->get('MTP_message_type');
224
+	}
225
+
226
+
227
+	/**
228
+	 * get Message type OBJECT
229
+	 * If an attempt to get the corresponding message type object fails, then we set this message
230
+	 * template group to inactive, and save to db.  Then return null so client code can handle
231
+	 * appropriately.
232
+	 *
233
+	 * @throws EE_Error
234
+	 * @return EE_message_type|false if exception thrown.
235
+	 */
236
+	public function message_type_obj()
237
+	{
238
+		$message_type = $this->message_type();
239
+		try {
240
+			$message_type = EEH_MSG_Template::message_type_obj($message_type);
241
+		} catch (EE_Error $e) {
242
+			// if an exception was thrown then let's deactivate this message template group because it means there is no
243
+			// class for the message type in this group.
244
+			$this->set('MTP_is_active', false);
245
+			$this->save();
246
+			return null;
247
+		}
248
+		return $message_type;
249
+	}
250
+
251
+
252
+	/**
253
+	 * @return array
254
+	 * @throws EE_Error
255
+	 */
256
+	public function contexts_config()
257
+	{
258
+		return $this->message_type_obj()->get_contexts();
259
+	}
260
+
261
+
262
+	/**
263
+	 * This returns the context_label for contexts as set in the message type object
264
+	 * Note this is an array with singular and plural keys
265
+	 *
266
+	 * @access public
267
+	 * @return array labels for "context"
268
+	 * @throws EE_Error
269
+	 */
270
+	public function context_label()
271
+	{
272
+		$obj = $this->message_type_obj();
273
+		return $obj->get_context_label();
274
+	}
275
+
276
+
277
+	/**
278
+	 * This returns an array of EE_Message_Template objects indexed by context and field.
279
+	 *
280
+	 * @return array ()
281
+	 * @throws EE_Error
282
+	 */
283
+	public function context_templates()
284
+	{
285
+		$mtps_arr = array();
286
+		$mtps = $this->get_many_related('Message_Template');
287
+		if (empty($mtps)) {
288
+			return array();
289
+		}
290
+		// note contexts could have CHECKBOX fields per context. So we return the objects indexed by context AND field.
291
+		foreach ($mtps as $mtp) {
292
+			$mtps_arr[ $mtp->get('MTP_context') ][ $mtp->get('MTP_template_field') ] = $mtp;
293
+		}
294
+		return $mtps_arr;
295
+	}
296
+
297
+
298
+	/**
299
+	 * this returns if the template group this template belongs to is global
300
+	 *
301
+	 * @return bool true if it is, false if it isn't
302
+	 * @throws EE_Error
303
+	 */
304
+	public function is_global()
305
+	{
306
+		return $this->get('MTP_is_global');
307
+	}
308
+
309
+
310
+	/**
311
+	 * this returns if the template group this template belongs to is active (i.e. turned "on" or not)
312
+	 *
313
+	 * @return bool true if it is, false if it isn't
314
+	 * @throws EE_Error
315
+	 */
316
+	public function is_active()
317
+	{
318
+		return $this->get('MTP_is_active');
319
+	}
320
+
321
+
322
+	/**
323
+	 * This will return an array of shortcodes => labels from the messenger and message_type objects associated with
324
+	 * this template.
325
+	 *
326
+	 * @since 4.3.0
327
+	 * @uses  EEH_MSG_Template::get_shortcodes()
328
+	 * @param string $context what context we're going to return shortcodes for
329
+	 * @param array  $fields  what fields we're returning valid shortcodes for.  If empty then we assume all fields are
330
+	 *                        to be returned.
331
+	 * @param bool   $merged  If TRUE then we don't return shortcodes indexed by field but instead an array of the
332
+	 *                        unique shortcodes for all the given (or all) fields.
333
+	 * @return mixed (array|bool) an array of shortcodes in the format array( '[shortcode] => 'label') OR FALSE if no
334
+	 *                        shortcodes found.
335
+	 * @throws EE_Error
336
+	 */
337
+	public function get_shortcodes($context, $fields = array(), $merged = false)
338
+	{
339
+		$messenger = $this->messenger();
340
+		$message_type = $this->message_type();
341
+		return EEH_MSG_Template::get_shortcodes($message_type, $messenger, $fields, $context, $merged);
342
+	}
343
+
344
+
345
+	/**
346
+	 * This just gets the template pack name assigned to this message template group.  If it's not set, then we just
347
+	 * use the default template pack.
348
+	 *
349
+	 * @since 4.5.0
350
+	 * @return string
351
+	 * @throws EE_Error
352
+	 */
353
+	public function get_template_pack_name()
354
+	{
355
+		return $this->get_extra_meta('MTP_template_pack', true, 'default');
356
+	}
357
+
358
+
359
+	/**
360
+	 * This returns the specific template pack object referenced by the template pack name attached to this message
361
+	 * template group.  If no template pack is assigned then the default template pack is retrieved.
362
+	 *
363
+	 * @since 4.5.0
364
+	 * @return EE_Messages_Template_Pack
365
+	 * @throws EE_Error
366
+	 * @throws InvalidArgumentException
367
+	 * @throws ReflectionException
368
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
369
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
370
+	 */
371
+	public function get_template_pack()
372
+	{
373
+		$pack_name = $this->get_template_pack_name();
374
+		EE_Registry::instance()->load_helper('MSG_Template');
375
+		return EEH_MSG_Template::get_template_pack($pack_name);
376
+	}
377
+
378
+
379
+	/**
380
+	 * This retrieves the template variation assigned to this message template group.  If it's not set, then we just
381
+	 * use the default template variation.
382
+	 *
383
+	 * @since 4.5.0
384
+	 * @return string
385
+	 * @throws EE_Error
386
+	 */
387
+	public function get_template_pack_variation()
388
+	{
389
+		return $this->get_extra_meta('MTP_variation', true, 'default');
390
+	}
391
+
392
+
393
+	/**
394
+	 * This just sets the template pack name attached to this message template group.
395
+	 *
396
+	 * @since 4.5.0
397
+	 * @param string $template_pack_name What message template pack is assigned.
398
+	 * @return int
399
+	 * @throws EE_Error
400
+	 */
401
+	public function set_template_pack_name($template_pack_name)
402
+	{
403
+		return $this->update_extra_meta('MTP_template_pack', $template_pack_name);
404
+	}
405
+
406
+
407
+	/**
408
+	 * This just sets the template pack variation attached to this message template group.
409
+	 *
410
+	 * @since 4.5.0
411
+	 * @param string $variation What variation is being set on the message template group.
412
+	 * @return int
413
+	 * @throws EE_Error
414
+	 */
415
+	public function set_template_pack_variation($variation)
416
+	{
417
+		return $this->update_extra_meta('MTP_variation', $variation);
418
+	}
419
+
420
+
421
+	/**
422
+	 * Deactivates the given context.
423
+	 *
424
+	 * @param $context
425
+	 * @return bool|int
426
+	 * @throws EE_Error
427
+	 * @throws InvalidIdentifierException
428
+	 */
429
+	public function deactivate_context($context)
430
+	{
431
+		$this->validate_context($context);
432
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, false);
433
+	}
434
+
435
+
436
+	/**
437
+	 * Activates the given context.
438
+	 *
439
+	 * @param $context
440
+	 * @return bool|int
441
+	 * @throws EE_Error
442
+	 * @throws InvalidIdentifierException
443
+	 */
444
+	public function activate_context($context)
445
+	{
446
+		$this->validate_context($context);
447
+		return $this->update_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true);
448
+	}
449
+
450
+
451
+	/**
452
+	 * Returns whether the context is active or not.
453
+	 * Note, this will default to true if the extra meta record doesn't exist.
454
+	 * Also, this does NOT account for whether the "To" field is empty or not. Some messengers may allow the "To" field
455
+	 * to be empty (@see EE_Messenger::allow_empty_to_field()) so an empty "To" field is not always an indicator of
456
+	 * whether a context is "active" or not.
457
+	 *
458
+	 * @param $context
459
+	 * @return bool
460
+	 * @throws EE_Error
461
+	 * @throws InvalidIdentifierException
462
+	 */
463
+	public function is_context_active($context)
464
+	{
465
+		$this->validate_context($context);
466
+		return filter_var(
467
+			$this->get_extra_meta(self::ACTIVE_CONTEXT_RECORD_META_KEY_PREFIX . $context, true, true),
468
+			FILTER_VALIDATE_BOOLEAN
469
+		);
470
+	}
471
+
472
+
473
+	/**
474
+	 * Validates the incoming context to verify it matches a registered context for the related message type.
475
+	 *
476
+	 * @param string $context
477
+	 * @throws EE_Error
478
+	 * @throws InvalidIdentifierException
479
+	 */
480
+	public function validate_context($context)
481
+	{
482
+		$contexts = $this->contexts_config();
483
+		if (! isset($contexts[ $context ])) {
484
+			throw new InvalidIdentifierException(
485
+				'',
486
+				'',
487
+				sprintf(
488
+					esc_html__(
489
+						'An invalid string identifying a context was provided.  "%1$s" was received, and one of "%2$s" was expected.',
490
+						'event_espresso'
491
+					),
492
+					$context,
493
+					implode(',', array_keys($contexts))
494
+				)
495
+			);
496
+		}
497
+	}
498 498
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Question.class.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -335,7 +335,7 @@  discard block
 block discarded – undo
335 335
      */
336 336
     public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
337 337
     {
338
-        if (! $this->ID()) {
338
+        if ( ! $this->ID()) {
339 339
             return array();
340 340
         }
341 341
         $query_params = array();
@@ -509,7 +509,7 @@  discard block
 block discarded – undo
509 509
             ),
510 510
             $input_constructor_args
511 511
         );
512
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
512
+        if ( ! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
513 513
             $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
514 514
         }
515 515
         // has this question been answered ?
@@ -647,7 +647,7 @@  discard block
 block discarded – undo
647 647
                     $this,
648 648
                     $input_constructor_args
649 649
                 );
650
-                if (! $default_input) {
650
+                if ( ! $default_input) {
651 651
                     $default_input = new EE_Text_Input($input_constructor_args);
652 652
                 }
653 653
                 $result = $default_input;
Please login to merge, or discard this patch.
Indentation   +664 added lines, -664 removed lines patch added patch discarded remove patch
@@ -13,668 +13,668 @@
 block discarded – undo
13 13
  */
14 14
 class EE_Question extends EE_Soft_Delete_Base_Class implements EEI_Duplicatable
15 15
 {
16
-    /**
17
-     *
18
-     * @param array  $props_n_values          incoming values
19
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
20
-     *                                        used.)
21
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
22
-     *                                        date_format and the second value is the time format
23
-     * @return EE_Question
24
-     */
25
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
26
-    {
27
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
28
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
29
-    }
30
-
31
-
32
-    /**
33
-     * @param array  $props_n_values  incoming values from the database
34
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
35
-     *                                the website will be used.
36
-     * @return EE_Question
37
-     */
38
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
39
-    {
40
-        return new self($props_n_values, true, $timezone);
41
-    }
42
-
43
-
44
-    /**
45
-     *        Set    Question display text
46
-     *
47
-     * @access        public
48
-     * @param string $QST_display_text
49
-     */
50
-    public function set_display_text($QST_display_text = '')
51
-    {
52
-        $this->set('QST_display_text', $QST_display_text);
53
-    }
54
-
55
-
56
-    /**
57
-     *        Set    Question admin text
58
-     *
59
-     * @access        public
60
-     * @param        string $QST_admin_label
61
-     */
62
-    public function set_admin_label($QST_admin_label = '')
63
-    {
64
-        $this->set('QST_admin_label', $QST_admin_label);
65
-    }
66
-
67
-
68
-    /**
69
-     *        Set    system name
70
-     *
71
-     * @access        public
72
-     * @param        mixed $QST_system
73
-     */
74
-    public function set_system_ID($QST_system = '')
75
-    {
76
-        $this->set('QST_system', $QST_system);
77
-    }
78
-
79
-
80
-    /**
81
-     *        Set    question's type
82
-     *
83
-     * @access        public
84
-     * @param        string $QST_type
85
-     */
86
-    public function set_question_type($QST_type = '')
87
-    {
88
-        $this->set('QST_type', $QST_type);
89
-    }
90
-
91
-
92
-    /**
93
-     *        Sets whether this question must be answered when presented in a form
94
-     *
95
-     * @access        public
96
-     * @param        bool $QST_required
97
-     */
98
-    public function set_required($QST_required = false)
99
-    {
100
-        $this->set('QST_required', $QST_required);
101
-    }
102
-
103
-
104
-    /**
105
-     *        Set    Question display text
106
-     *
107
-     * @access        public
108
-     * @param        string $QST_required_text
109
-     */
110
-    public function set_required_text($QST_required_text = '')
111
-    {
112
-        $this->set('QST_required_text', $QST_required_text);
113
-    }
114
-
115
-
116
-    /**
117
-     *        Sets the order of this question when placed in a sequence of questions
118
-     *
119
-     * @access        public
120
-     * @param        int $QST_order
121
-     */
122
-    public function set_order($QST_order = 0)
123
-    {
124
-        $this->set('QST_order', $QST_order);
125
-    }
126
-
127
-
128
-    /**
129
-     *        Sets whether the question is admin-only
130
-     *
131
-     * @access        public
132
-     * @param        bool $QST_admin_only
133
-     */
134
-    public function set_admin_only($QST_admin_only = false)
135
-    {
136
-        $this->set('QST_admin_only', $QST_admin_only);
137
-    }
138
-
139
-
140
-    /**
141
-     *        Sets the wordpress user ID on the question
142
-     *
143
-     * @access        public
144
-     * @param        int $QST_wp_user
145
-     */
146
-    public function set_wp_user($QST_wp_user = 1)
147
-    {
148
-        $this->set('QST_wp_user', $QST_wp_user);
149
-    }
150
-
151
-
152
-    /**
153
-     *        Sets whether the question has been deleted
154
-     *        (we use this boolean instead of actually
155
-     *        deleting it because when users delete this question
156
-     *        they really want to remove the question from future
157
-     *        forms, BUT keep their old answers which depend
158
-     *        on this record actually existing.
159
-     *
160
-     * @access        public
161
-     * @param    bool $QST_deleted
162
-     */
163
-    public function set_deleted($QST_deleted = false)
164
-    {
165
-        $this->set('QST_deleted', $QST_deleted);
166
-    }
167
-
168
-
169
-    /**
170
-     * returns the text for displaying the question to users
171
-     *
172
-     * @access public
173
-     * @return string
174
-     */
175
-    public function display_text()
176
-    {
177
-        return $this->get('QST_display_text');
178
-    }
179
-
180
-
181
-    /**
182
-     * returns the text for the administrative label
183
-     *
184
-     * @access public
185
-     * @return string
186
-     */
187
-    public function admin_label()
188
-    {
189
-        return $this->get('QST_admin_label');
190
-    }
191
-
192
-
193
-    /**
194
-     * returns the attendee column name for this question
195
-     *
196
-     * @access public
197
-     * @return string
198
-     */
199
-    public function system_ID()
200
-    {
201
-        return $this->get('QST_system');
202
-    }
203
-
204
-
205
-    /**
206
-     * returns either a string of 'text', 'textfield', etc.
207
-     *
208
-     * @access public
209
-     * @return boolean
210
-     */
211
-    public function required()
212
-    {
213
-        return $this->get('QST_required');
214
-    }
215
-
216
-
217
-    /**
218
-     * returns the text which should be displayed when a user
219
-     * doesn't answer this question in a form
220
-     *
221
-     * @access public
222
-     * @return string
223
-     */
224
-    public function required_text()
225
-    {
226
-        return $this->get('QST_required_text');
227
-    }
228
-
229
-
230
-    /**
231
-     * returns the type of this question
232
-     *
233
-     * @access public
234
-     * @return string
235
-     */
236
-    public function type()
237
-    {
238
-        return $this->get('QST_type');
239
-    }
240
-
241
-
242
-    /**
243
-     * returns an integer showing where this question should
244
-     * be placed in a sequence of questions
245
-     *
246
-     * @access public
247
-     * @return int
248
-     */
249
-    public function order()
250
-    {
251
-        return $this->get('QST_order');
252
-    }
253
-
254
-
255
-    /**
256
-     * returns whether this question should only appears to admins,
257
-     * or to everyone
258
-     *
259
-     * @access public
260
-     * @return boolean
261
-     */
262
-    public function admin_only()
263
-    {
264
-        return $this->get('QST_admin_only');
265
-    }
266
-
267
-
268
-    /**
269
-     * returns the id the wordpress user who created this question
270
-     *
271
-     * @access public
272
-     * @return int
273
-     */
274
-    public function wp_user()
275
-    {
276
-        return $this->get('QST_wp_user');
277
-    }
278
-
279
-
280
-    /**
281
-     * returns whether this question has been marked as 'deleted'
282
-     *
283
-     * @access public
284
-     * @return boolean
285
-     */
286
-    public function deleted()
287
-    {
288
-        return $this->get('QST_deleted');
289
-    }
290
-
291
-
292
-    /**
293
-     * Gets an array of related EE_Answer  to this EE_Question
294
-     *
295
-     * @return EE_Answer[]
296
-     */
297
-    public function answers()
298
-    {
299
-        return $this->get_many_related('Answer');
300
-    }
301
-
302
-
303
-    /**
304
-     * Boolean check for if there are answers on this question in th db
305
-     *
306
-     * @return boolean true = has answers, false = no answers.
307
-     */
308
-    public function has_answers()
309
-    {
310
-        return $this->count_related('Answer') > 0 ? true : false;
311
-    }
312
-
313
-
314
-    /**
315
-     * gets an array of EE_Question_Group which relate to this question
316
-     *
317
-     * @return EE_Question_Group[]
318
-     */
319
-    public function question_groups()
320
-    {
321
-        return $this->get_many_related('Question_Group');
322
-    }
323
-
324
-
325
-    /**
326
-     * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
327
-     *
328
-     * @param boolean      $notDeletedOptionsOnly            1
329
-     *                                                       whether to return ALL options, or only the ones which have
330
-     *                                                       not yet been deleleted
331
-     * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
332
-     *                                                       we want to usually only show non-deleted options AND the
333
-     *                                                       value that was selected for the answer, whether it was
334
-     *                                                       trashed or not.
335
-     * @return EE_Question_Option[]
336
-     */
337
-    public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
338
-    {
339
-        if (! $this->ID()) {
340
-            return array();
341
-        }
342
-        $query_params = array();
343
-        if ($selected_value_to_always_include) {
344
-            if (is_array($selected_value_to_always_include)) {
345
-                $query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
346
-            } else {
347
-                $query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
348
-            }
349
-        }
350
-        if ($notDeletedOptionsOnly) {
351
-            $query_params[0]['OR*options-query']['QSO_deleted'] = false;
352
-        }
353
-        // order by QSO_order
354
-        $query_params['order_by'] = array('QSO_order' => 'ASC');
355
-        return $this->get_many_related('Question_Option', $query_params);
356
-    }
357
-
358
-
359
-    /**
360
-     * returns an array of EE_Question_Options which relate to this question
361
-     *
362
-     * @return \EE_Question_Option[]
363
-     */
364
-    public function temp_options()
365
-    {
366
-        return $this->_model_relations['Question_Option'];
367
-    }
368
-
369
-
370
-    /**
371
-     * Adds an option for this question. Note: if the option were previously associated with a different
372
-     * Question, that relationship will be overwritten.
373
-     *
374
-     * @param EE_Question_Option $option
375
-     * @return boolean success
376
-     */
377
-    public function add_option(EE_Question_Option $option)
378
-    {
379
-        return $this->_add_relation_to($option, 'Question_Option');
380
-    }
381
-
382
-
383
-    /**
384
-     * Adds an option directly to this question without saving to the db
385
-     *
386
-     * @param EE_Question_Option $option
387
-     * @return boolean success
388
-     */
389
-    public function add_temp_option(EE_Question_Option $option)
390
-    {
391
-        $this->_model_relations['Question_Option'][] = $option;
392
-        return true;
393
-    }
394
-
395
-
396
-    /**
397
-     * Marks the option as deleted.
398
-     *
399
-     * @param EE_Question_Option $option
400
-     * @return boolean success
401
-     */
402
-    public function remove_option(EE_Question_Option $option)
403
-    {
404
-        return $this->_remove_relation_to($option, 'Question_Option');
405
-    }
406
-
407
-
408
-    /**
409
-     * @return bool
410
-     */
411
-    public function is_system_question()
412
-    {
413
-        $system_ID = $this->get('QST_system');
414
-        return ! empty($system_ID) ? true : false;
415
-    }
416
-
417
-
418
-    /**
419
-     * The purpose of this method is set the question order this question order to be the max out of all questions
420
-     *
421
-     * @access public
422
-     * @return void
423
-     */
424
-    public function set_order_to_latest()
425
-    {
426
-        $latest_order = $this->get_model()->get_latest_question_order();
427
-        $latest_order++;
428
-        $this->set('QST_order', $latest_order);
429
-    }
430
-
431
-
432
-    /**
433
-     * Retrieves the list of allowed question types from the model.
434
-     *
435
-     * @return string[]
436
-     */
437
-    private function _allowed_question_types()
438
-    {
439
-        $questionModel = $this->get_model();
440
-        /* @var $questionModel EEM_Question */
441
-        return $questionModel->allowed_question_types();
442
-    }
443
-
444
-    /**
445
-     * Duplicates this question and its question options
446
-     *
447
-     * @return \EE_Question
448
-     */
449
-    public function duplicate($options = array())
450
-    {
451
-        $new_question = clone $this;
452
-        $new_question->set('QST_ID', null);
453
-        $new_question->set_display_text(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
454
-        $new_question->set_admin_label(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
455
-        $new_question->set_system_ID(null);
456
-        $new_question->set_wp_user(get_current_user_id());
457
-        // if we're duplicating a trashed question, assume we don't want the new one to be trashed
458
-        $new_question->set_deleted(false);
459
-        $success = $new_question->save();
460
-        if ($success) {
461
-            // we don't totally want to duplicate the question options, because we want them to be for the NEW question
462
-            foreach ($this->options() as $question_option) {
463
-                $question_option->duplicate(array('QST_ID' => $new_question->ID()));
464
-            }
465
-            return $new_question;
466
-        } else {
467
-            return null;
468
-        }
469
-    }
470
-
471
-    /**
472
-     * Returns the question's maximum allowed response size
473
-     *
474
-     * @return int|float
475
-     */
476
-    public function max()
477
-    {
478
-        return $this->get('QST_max');
479
-    }
480
-
481
-    /**
482
-     * Sets the question's maximum allowed response size
483
-     *
484
-     * @param int|float $new_max
485
-     * @return void
486
-     */
487
-    public function set_max($new_max)
488
-    {
489
-        $this->set('QST_max', $new_max);
490
-    }
491
-
492
-
493
-    /**
494
-     * Creates a form input from this question which can be used in HTML forms
495
-     *
496
-     * @param EE_Registration $registration
497
-     * @param EE_Answer       $answer
498
-     * @param array           $input_constructor_args
499
-     * @return EE_Form_Input_Base
500
-     */
501
-    public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
502
-    {
503
-        $identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
504
-
505
-        $input_constructor_args = array_merge(
506
-            array(
507
-                'required'                          => $this->required() ? true : false,
508
-                'html_label_text'                   => $this->display_text(),
509
-                'required_validation_error_message' => $this->required_text(),
510
-            ),
511
-            $input_constructor_args
512
-        );
513
-        if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
514
-            $answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
515
-        }
516
-        // has this question been answered ?
517
-        if (
518
-            $answer instanceof EE_Answer
519
-            && $answer->value() !== ''
520
-        ) {
521
-            // answer gets htmlspecialchars called on it, undo that please
522
-            // because the form input's display strategy may call esc_attr too
523
-            // which also does html special characters
524
-            $values_with_html_special_chars = $answer->value();
525
-            if (is_array($values_with_html_special_chars)) {
526
-                $default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
527
-            } else {
528
-                $default_value = htmlspecialchars_decode($values_with_html_special_chars);
529
-            }
530
-            $input_constructor_args['default'] = $default_value;
531
-        }
532
-        $max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
533
-        if (
534
-            in_array(
535
-                $this->type(),
536
-                EEM_Question::instance()->questionTypesWithMaxLength(),
537
-                true
538
-            )
539
-        ) {
540
-            $input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
541
-                null,
542
-                min($max_max_for_question, $this->max())
543
-            );
544
-        }
545
-        $input_constructor_args = apply_filters(
546
-            'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
547
-            $input_constructor_args,
548
-            $registration,
549
-            $this,
550
-            $answer
551
-        );
552
-
553
-        $result = null;
554
-        switch ($this->type()) {
555
-            // Text
556
-            case EEM_Question::QST_type_text:
557
-                $result = new EE_Text_Input($input_constructor_args);
558
-                break;
559
-            // Textarea
560
-            case EEM_Question::QST_type_textarea:
561
-                $result = new EE_Text_Area_Input($input_constructor_args);
562
-                break;
563
-            // Radio Buttons
564
-            case EEM_Question::QST_type_radio:
565
-                $result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
566
-                break;
567
-            // Dropdown
568
-            case EEM_Question::QST_type_dropdown:
569
-                $result = new EE_Select_Input($this->options(), $input_constructor_args);
570
-                break;
571
-            // State Dropdown
572
-            case EEM_Question::QST_type_state:
573
-                $state_options = apply_filters(
574
-                    'FHEE__EE_Question__generate_form_input__state_options',
575
-                    null,
576
-                    $this,
577
-                    $registration,
578
-                    $answer
579
-                );
580
-                $result = new EE_State_Select_Input($state_options, $input_constructor_args);
581
-                break;
582
-            // Country Dropdown
583
-            case EEM_Question::QST_type_country:
584
-                $country_options = apply_filters(
585
-                    'FHEE__EE_Question__generate_form_input__country_options',
586
-                    null,
587
-                    $this,
588
-                    $registration,
589
-                    $answer
590
-                );
591
-                $result = new EE_Country_Select_Input($country_options, $input_constructor_args);
592
-                break;
593
-            // Checkboxes
594
-            case EEM_Question::QST_type_checkbox:
595
-                $result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
596
-                break;
597
-            // Date
598
-            case EEM_Question::QST_type_date:
599
-                $result = new EE_Datepicker_Input($input_constructor_args);
600
-                break;
601
-            case EEM_Question::QST_type_html_textarea:
602
-                $input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
603
-                $result = new EE_Text_Area_Input($input_constructor_args);
604
-                $result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
605
-                break;
606
-            case EEM_Question::QST_type_email:
607
-                    $result = new EE_Email_Input($input_constructor_args);
608
-                break;
609
-            // Email confirm
610
-            case EEM_Question::QST_type_email_confirm:
611
-                $result = new EE_Email_Confirm_Input($input_constructor_args);
612
-                break;
613
-            case EEM_Question::QST_type_us_phone:
614
-                $result = new EE_Phone_Input($input_constructor_args);
615
-                break;
616
-            case EEM_Question::QST_type_int:
617
-                $result = new EE_Integer_Input($input_constructor_args);
618
-                break;
619
-            case EEM_Question::QST_type_decimal:
620
-                $result = new EE_Float_Input($input_constructor_args);
621
-                break;
622
-            case EEM_Question::QST_type_url:
623
-                $input_constructor_args['validation_strategies'][] = LoaderFactory::getLoader()->getNew('EE_URL_Validation_Strategy');
624
-                $result = new EE_Text_Input($input_constructor_args);
625
-                break;
626
-            case EEM_Question::QST_type_year:
627
-                $result = new EE_Year_Input(
628
-                    $input_constructor_args,
629
-                    apply_filters(
630
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
631
-                        true,
632
-                        $this
633
-                    ),
634
-                    apply_filters(
635
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
636
-                        100,
637
-                        $this
638
-                    ),
639
-                    apply_filters(
640
-                        'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
641
-                        100,
642
-                        $this
643
-                    )
644
-                );
645
-                break;
646
-            case EEM_Question::QST_type_multi_select:
647
-                $result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
648
-                break;
649
-            // fallback
650
-            default:
651
-                $default_input = apply_filters(
652
-                    'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
653
-                    null,
654
-                    $this->type(),
655
-                    $this,
656
-                    $input_constructor_args
657
-                );
658
-                if (! $default_input) {
659
-                    $default_input = new EE_Text_Input($input_constructor_args);
660
-                }
661
-                $result = $default_input;
662
-        }
663
-        return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
664
-    }
665
-
666
-
667
-    /**
668
-     * Returns whether or not this question type should have question option entries
669
-     *
670
-     * @return bool
671
-     */
672
-    public function should_have_question_options()
673
-    {
674
-        return in_array(
675
-            $this->type(),
676
-            $this->_model->question_types_with_options(),
677
-            true
678
-        );
679
-    }
16
+	/**
17
+	 *
18
+	 * @param array  $props_n_values          incoming values
19
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
20
+	 *                                        used.)
21
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
22
+	 *                                        date_format and the second value is the time format
23
+	 * @return EE_Question
24
+	 */
25
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
26
+	{
27
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
28
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
29
+	}
30
+
31
+
32
+	/**
33
+	 * @param array  $props_n_values  incoming values from the database
34
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
35
+	 *                                the website will be used.
36
+	 * @return EE_Question
37
+	 */
38
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
39
+	{
40
+		return new self($props_n_values, true, $timezone);
41
+	}
42
+
43
+
44
+	/**
45
+	 *        Set    Question display text
46
+	 *
47
+	 * @access        public
48
+	 * @param string $QST_display_text
49
+	 */
50
+	public function set_display_text($QST_display_text = '')
51
+	{
52
+		$this->set('QST_display_text', $QST_display_text);
53
+	}
54
+
55
+
56
+	/**
57
+	 *        Set    Question admin text
58
+	 *
59
+	 * @access        public
60
+	 * @param        string $QST_admin_label
61
+	 */
62
+	public function set_admin_label($QST_admin_label = '')
63
+	{
64
+		$this->set('QST_admin_label', $QST_admin_label);
65
+	}
66
+
67
+
68
+	/**
69
+	 *        Set    system name
70
+	 *
71
+	 * @access        public
72
+	 * @param        mixed $QST_system
73
+	 */
74
+	public function set_system_ID($QST_system = '')
75
+	{
76
+		$this->set('QST_system', $QST_system);
77
+	}
78
+
79
+
80
+	/**
81
+	 *        Set    question's type
82
+	 *
83
+	 * @access        public
84
+	 * @param        string $QST_type
85
+	 */
86
+	public function set_question_type($QST_type = '')
87
+	{
88
+		$this->set('QST_type', $QST_type);
89
+	}
90
+
91
+
92
+	/**
93
+	 *        Sets whether this question must be answered when presented in a form
94
+	 *
95
+	 * @access        public
96
+	 * @param        bool $QST_required
97
+	 */
98
+	public function set_required($QST_required = false)
99
+	{
100
+		$this->set('QST_required', $QST_required);
101
+	}
102
+
103
+
104
+	/**
105
+	 *        Set    Question display text
106
+	 *
107
+	 * @access        public
108
+	 * @param        string $QST_required_text
109
+	 */
110
+	public function set_required_text($QST_required_text = '')
111
+	{
112
+		$this->set('QST_required_text', $QST_required_text);
113
+	}
114
+
115
+
116
+	/**
117
+	 *        Sets the order of this question when placed in a sequence of questions
118
+	 *
119
+	 * @access        public
120
+	 * @param        int $QST_order
121
+	 */
122
+	public function set_order($QST_order = 0)
123
+	{
124
+		$this->set('QST_order', $QST_order);
125
+	}
126
+
127
+
128
+	/**
129
+	 *        Sets whether the question is admin-only
130
+	 *
131
+	 * @access        public
132
+	 * @param        bool $QST_admin_only
133
+	 */
134
+	public function set_admin_only($QST_admin_only = false)
135
+	{
136
+		$this->set('QST_admin_only', $QST_admin_only);
137
+	}
138
+
139
+
140
+	/**
141
+	 *        Sets the wordpress user ID on the question
142
+	 *
143
+	 * @access        public
144
+	 * @param        int $QST_wp_user
145
+	 */
146
+	public function set_wp_user($QST_wp_user = 1)
147
+	{
148
+		$this->set('QST_wp_user', $QST_wp_user);
149
+	}
150
+
151
+
152
+	/**
153
+	 *        Sets whether the question has been deleted
154
+	 *        (we use this boolean instead of actually
155
+	 *        deleting it because when users delete this question
156
+	 *        they really want to remove the question from future
157
+	 *        forms, BUT keep their old answers which depend
158
+	 *        on this record actually existing.
159
+	 *
160
+	 * @access        public
161
+	 * @param    bool $QST_deleted
162
+	 */
163
+	public function set_deleted($QST_deleted = false)
164
+	{
165
+		$this->set('QST_deleted', $QST_deleted);
166
+	}
167
+
168
+
169
+	/**
170
+	 * returns the text for displaying the question to users
171
+	 *
172
+	 * @access public
173
+	 * @return string
174
+	 */
175
+	public function display_text()
176
+	{
177
+		return $this->get('QST_display_text');
178
+	}
179
+
180
+
181
+	/**
182
+	 * returns the text for the administrative label
183
+	 *
184
+	 * @access public
185
+	 * @return string
186
+	 */
187
+	public function admin_label()
188
+	{
189
+		return $this->get('QST_admin_label');
190
+	}
191
+
192
+
193
+	/**
194
+	 * returns the attendee column name for this question
195
+	 *
196
+	 * @access public
197
+	 * @return string
198
+	 */
199
+	public function system_ID()
200
+	{
201
+		return $this->get('QST_system');
202
+	}
203
+
204
+
205
+	/**
206
+	 * returns either a string of 'text', 'textfield', etc.
207
+	 *
208
+	 * @access public
209
+	 * @return boolean
210
+	 */
211
+	public function required()
212
+	{
213
+		return $this->get('QST_required');
214
+	}
215
+
216
+
217
+	/**
218
+	 * returns the text which should be displayed when a user
219
+	 * doesn't answer this question in a form
220
+	 *
221
+	 * @access public
222
+	 * @return string
223
+	 */
224
+	public function required_text()
225
+	{
226
+		return $this->get('QST_required_text');
227
+	}
228
+
229
+
230
+	/**
231
+	 * returns the type of this question
232
+	 *
233
+	 * @access public
234
+	 * @return string
235
+	 */
236
+	public function type()
237
+	{
238
+		return $this->get('QST_type');
239
+	}
240
+
241
+
242
+	/**
243
+	 * returns an integer showing where this question should
244
+	 * be placed in a sequence of questions
245
+	 *
246
+	 * @access public
247
+	 * @return int
248
+	 */
249
+	public function order()
250
+	{
251
+		return $this->get('QST_order');
252
+	}
253
+
254
+
255
+	/**
256
+	 * returns whether this question should only appears to admins,
257
+	 * or to everyone
258
+	 *
259
+	 * @access public
260
+	 * @return boolean
261
+	 */
262
+	public function admin_only()
263
+	{
264
+		return $this->get('QST_admin_only');
265
+	}
266
+
267
+
268
+	/**
269
+	 * returns the id the wordpress user who created this question
270
+	 *
271
+	 * @access public
272
+	 * @return int
273
+	 */
274
+	public function wp_user()
275
+	{
276
+		return $this->get('QST_wp_user');
277
+	}
278
+
279
+
280
+	/**
281
+	 * returns whether this question has been marked as 'deleted'
282
+	 *
283
+	 * @access public
284
+	 * @return boolean
285
+	 */
286
+	public function deleted()
287
+	{
288
+		return $this->get('QST_deleted');
289
+	}
290
+
291
+
292
+	/**
293
+	 * Gets an array of related EE_Answer  to this EE_Question
294
+	 *
295
+	 * @return EE_Answer[]
296
+	 */
297
+	public function answers()
298
+	{
299
+		return $this->get_many_related('Answer');
300
+	}
301
+
302
+
303
+	/**
304
+	 * Boolean check for if there are answers on this question in th db
305
+	 *
306
+	 * @return boolean true = has answers, false = no answers.
307
+	 */
308
+	public function has_answers()
309
+	{
310
+		return $this->count_related('Answer') > 0 ? true : false;
311
+	}
312
+
313
+
314
+	/**
315
+	 * gets an array of EE_Question_Group which relate to this question
316
+	 *
317
+	 * @return EE_Question_Group[]
318
+	 */
319
+	public function question_groups()
320
+	{
321
+		return $this->get_many_related('Question_Group');
322
+	}
323
+
324
+
325
+	/**
326
+	 * Returns all the options for this question. By default, it returns only the not-yet-deleted ones.
327
+	 *
328
+	 * @param boolean      $notDeletedOptionsOnly            1
329
+	 *                                                       whether to return ALL options, or only the ones which have
330
+	 *                                                       not yet been deleleted
331
+	 * @param string|array $selected_value_to_always_include , when retrieving options to an ANSWERED question,
332
+	 *                                                       we want to usually only show non-deleted options AND the
333
+	 *                                                       value that was selected for the answer, whether it was
334
+	 *                                                       trashed or not.
335
+	 * @return EE_Question_Option[]
336
+	 */
337
+	public function options($notDeletedOptionsOnly = true, $selected_value_to_always_include = null)
338
+	{
339
+		if (! $this->ID()) {
340
+			return array();
341
+		}
342
+		$query_params = array();
343
+		if ($selected_value_to_always_include) {
344
+			if (is_array($selected_value_to_always_include)) {
345
+				$query_params[0]['OR*options-query']['QSO_value'] = array('IN', $selected_value_to_always_include);
346
+			} else {
347
+				$query_params[0]['OR*options-query']['QSO_value'] = $selected_value_to_always_include;
348
+			}
349
+		}
350
+		if ($notDeletedOptionsOnly) {
351
+			$query_params[0]['OR*options-query']['QSO_deleted'] = false;
352
+		}
353
+		// order by QSO_order
354
+		$query_params['order_by'] = array('QSO_order' => 'ASC');
355
+		return $this->get_many_related('Question_Option', $query_params);
356
+	}
357
+
358
+
359
+	/**
360
+	 * returns an array of EE_Question_Options which relate to this question
361
+	 *
362
+	 * @return \EE_Question_Option[]
363
+	 */
364
+	public function temp_options()
365
+	{
366
+		return $this->_model_relations['Question_Option'];
367
+	}
368
+
369
+
370
+	/**
371
+	 * Adds an option for this question. Note: if the option were previously associated with a different
372
+	 * Question, that relationship will be overwritten.
373
+	 *
374
+	 * @param EE_Question_Option $option
375
+	 * @return boolean success
376
+	 */
377
+	public function add_option(EE_Question_Option $option)
378
+	{
379
+		return $this->_add_relation_to($option, 'Question_Option');
380
+	}
381
+
382
+
383
+	/**
384
+	 * Adds an option directly to this question without saving to the db
385
+	 *
386
+	 * @param EE_Question_Option $option
387
+	 * @return boolean success
388
+	 */
389
+	public function add_temp_option(EE_Question_Option $option)
390
+	{
391
+		$this->_model_relations['Question_Option'][] = $option;
392
+		return true;
393
+	}
394
+
395
+
396
+	/**
397
+	 * Marks the option as deleted.
398
+	 *
399
+	 * @param EE_Question_Option $option
400
+	 * @return boolean success
401
+	 */
402
+	public function remove_option(EE_Question_Option $option)
403
+	{
404
+		return $this->_remove_relation_to($option, 'Question_Option');
405
+	}
406
+
407
+
408
+	/**
409
+	 * @return bool
410
+	 */
411
+	public function is_system_question()
412
+	{
413
+		$system_ID = $this->get('QST_system');
414
+		return ! empty($system_ID) ? true : false;
415
+	}
416
+
417
+
418
+	/**
419
+	 * The purpose of this method is set the question order this question order to be the max out of all questions
420
+	 *
421
+	 * @access public
422
+	 * @return void
423
+	 */
424
+	public function set_order_to_latest()
425
+	{
426
+		$latest_order = $this->get_model()->get_latest_question_order();
427
+		$latest_order++;
428
+		$this->set('QST_order', $latest_order);
429
+	}
430
+
431
+
432
+	/**
433
+	 * Retrieves the list of allowed question types from the model.
434
+	 *
435
+	 * @return string[]
436
+	 */
437
+	private function _allowed_question_types()
438
+	{
439
+		$questionModel = $this->get_model();
440
+		/* @var $questionModel EEM_Question */
441
+		return $questionModel->allowed_question_types();
442
+	}
443
+
444
+	/**
445
+	 * Duplicates this question and its question options
446
+	 *
447
+	 * @return \EE_Question
448
+	 */
449
+	public function duplicate($options = array())
450
+	{
451
+		$new_question = clone $this;
452
+		$new_question->set('QST_ID', null);
453
+		$new_question->set_display_text(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->display_text()));
454
+		$new_question->set_admin_label(sprintf(esc_html__('%s **Duplicate**', 'event_espresso'), $this->admin_label()));
455
+		$new_question->set_system_ID(null);
456
+		$new_question->set_wp_user(get_current_user_id());
457
+		// if we're duplicating a trashed question, assume we don't want the new one to be trashed
458
+		$new_question->set_deleted(false);
459
+		$success = $new_question->save();
460
+		if ($success) {
461
+			// we don't totally want to duplicate the question options, because we want them to be for the NEW question
462
+			foreach ($this->options() as $question_option) {
463
+				$question_option->duplicate(array('QST_ID' => $new_question->ID()));
464
+			}
465
+			return $new_question;
466
+		} else {
467
+			return null;
468
+		}
469
+	}
470
+
471
+	/**
472
+	 * Returns the question's maximum allowed response size
473
+	 *
474
+	 * @return int|float
475
+	 */
476
+	public function max()
477
+	{
478
+		return $this->get('QST_max');
479
+	}
480
+
481
+	/**
482
+	 * Sets the question's maximum allowed response size
483
+	 *
484
+	 * @param int|float $new_max
485
+	 * @return void
486
+	 */
487
+	public function set_max($new_max)
488
+	{
489
+		$this->set('QST_max', $new_max);
490
+	}
491
+
492
+
493
+	/**
494
+	 * Creates a form input from this question which can be used in HTML forms
495
+	 *
496
+	 * @param EE_Registration $registration
497
+	 * @param EE_Answer       $answer
498
+	 * @param array           $input_constructor_args
499
+	 * @return EE_Form_Input_Base
500
+	 */
501
+	public function generate_form_input($registration = null, $answer = null, $input_constructor_args = array())
502
+	{
503
+		$identifier = $this->is_system_question() ? $this->system_ID() : $this->ID();
504
+
505
+		$input_constructor_args = array_merge(
506
+			array(
507
+				'required'                          => $this->required() ? true : false,
508
+				'html_label_text'                   => $this->display_text(),
509
+				'required_validation_error_message' => $this->required_text(),
510
+			),
511
+			$input_constructor_args
512
+		);
513
+		if (! $answer instanceof EE_Answer && $registration instanceof EE_Registration) {
514
+			$answer = EEM_Answer::instance()->get_registration_question_answer_object($registration, $this->ID());
515
+		}
516
+		// has this question been answered ?
517
+		if (
518
+			$answer instanceof EE_Answer
519
+			&& $answer->value() !== ''
520
+		) {
521
+			// answer gets htmlspecialchars called on it, undo that please
522
+			// because the form input's display strategy may call esc_attr too
523
+			// which also does html special characters
524
+			$values_with_html_special_chars = $answer->value();
525
+			if (is_array($values_with_html_special_chars)) {
526
+				$default_value = array_map('htmlspecialchars_decode', $values_with_html_special_chars);
527
+			} else {
528
+				$default_value = htmlspecialchars_decode($values_with_html_special_chars);
529
+			}
530
+			$input_constructor_args['default'] = $default_value;
531
+		}
532
+		$max_max_for_question = EEM_Question::instance()->absolute_max_for_system_question($this->system_ID());
533
+		if (
534
+			in_array(
535
+				$this->type(),
536
+				EEM_Question::instance()->questionTypesWithMaxLength(),
537
+				true
538
+			)
539
+		) {
540
+			$input_constructor_args['validation_strategies'][] = new EE_Max_Length_Validation_Strategy(
541
+				null,
542
+				min($max_max_for_question, $this->max())
543
+			);
544
+		}
545
+		$input_constructor_args = apply_filters(
546
+			'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__input_constructor_args',
547
+			$input_constructor_args,
548
+			$registration,
549
+			$this,
550
+			$answer
551
+		);
552
+
553
+		$result = null;
554
+		switch ($this->type()) {
555
+			// Text
556
+			case EEM_Question::QST_type_text:
557
+				$result = new EE_Text_Input($input_constructor_args);
558
+				break;
559
+			// Textarea
560
+			case EEM_Question::QST_type_textarea:
561
+				$result = new EE_Text_Area_Input($input_constructor_args);
562
+				break;
563
+			// Radio Buttons
564
+			case EEM_Question::QST_type_radio:
565
+				$result = new EE_Radio_Button_Input($this->options(), $input_constructor_args);
566
+				break;
567
+			// Dropdown
568
+			case EEM_Question::QST_type_dropdown:
569
+				$result = new EE_Select_Input($this->options(), $input_constructor_args);
570
+				break;
571
+			// State Dropdown
572
+			case EEM_Question::QST_type_state:
573
+				$state_options = apply_filters(
574
+					'FHEE__EE_Question__generate_form_input__state_options',
575
+					null,
576
+					$this,
577
+					$registration,
578
+					$answer
579
+				);
580
+				$result = new EE_State_Select_Input($state_options, $input_constructor_args);
581
+				break;
582
+			// Country Dropdown
583
+			case EEM_Question::QST_type_country:
584
+				$country_options = apply_filters(
585
+					'FHEE__EE_Question__generate_form_input__country_options',
586
+					null,
587
+					$this,
588
+					$registration,
589
+					$answer
590
+				);
591
+				$result = new EE_Country_Select_Input($country_options, $input_constructor_args);
592
+				break;
593
+			// Checkboxes
594
+			case EEM_Question::QST_type_checkbox:
595
+				$result = new EE_Checkbox_Multi_Input($this->options(), $input_constructor_args);
596
+				break;
597
+			// Date
598
+			case EEM_Question::QST_type_date:
599
+				$result = new EE_Datepicker_Input($input_constructor_args);
600
+				break;
601
+			case EEM_Question::QST_type_html_textarea:
602
+				$input_constructor_args['validation_strategies'][] = new EE_Simple_HTML_Validation_Strategy();
603
+				$result = new EE_Text_Area_Input($input_constructor_args);
604
+				$result->remove_validation_strategy('EE_Plaintext_Validation_Strategy');
605
+				break;
606
+			case EEM_Question::QST_type_email:
607
+					$result = new EE_Email_Input($input_constructor_args);
608
+				break;
609
+			// Email confirm
610
+			case EEM_Question::QST_type_email_confirm:
611
+				$result = new EE_Email_Confirm_Input($input_constructor_args);
612
+				break;
613
+			case EEM_Question::QST_type_us_phone:
614
+				$result = new EE_Phone_Input($input_constructor_args);
615
+				break;
616
+			case EEM_Question::QST_type_int:
617
+				$result = new EE_Integer_Input($input_constructor_args);
618
+				break;
619
+			case EEM_Question::QST_type_decimal:
620
+				$result = new EE_Float_Input($input_constructor_args);
621
+				break;
622
+			case EEM_Question::QST_type_url:
623
+				$input_constructor_args['validation_strategies'][] = LoaderFactory::getLoader()->getNew('EE_URL_Validation_Strategy');
624
+				$result = new EE_Text_Input($input_constructor_args);
625
+				break;
626
+			case EEM_Question::QST_type_year:
627
+				$result = new EE_Year_Input(
628
+					$input_constructor_args,
629
+					apply_filters(
630
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__four_digit',
631
+						true,
632
+						$this
633
+					),
634
+					apply_filters(
635
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__early_range',
636
+						100,
637
+						$this
638
+					),
639
+					apply_filters(
640
+						'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__year_question__end_range',
641
+						100,
642
+						$this
643
+					)
644
+				);
645
+				break;
646
+			case EEM_Question::QST_type_multi_select:
647
+				$result = new EE_Select_Multiple_Input($this->options(), $input_constructor_args);
648
+				break;
649
+			// fallback
650
+			default:
651
+				$default_input = apply_filters(
652
+					'FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default',
653
+					null,
654
+					$this->type(),
655
+					$this,
656
+					$input_constructor_args
657
+				);
658
+				if (! $default_input) {
659
+					$default_input = new EE_Text_Input($input_constructor_args);
660
+				}
661
+				$result = $default_input;
662
+		}
663
+		return apply_filters('FHEE__EE_Question__generate_form_input__return', $result, $registration, $this, $answer);
664
+	}
665
+
666
+
667
+	/**
668
+	 * Returns whether or not this question type should have question option entries
669
+	 *
670
+	 * @return bool
671
+	 */
672
+	public function should_have_question_options()
673
+	{
674
+		return in_array(
675
+			$this->type(),
676
+			$this->_model->question_types_with_options(),
677
+			true
678
+		);
679
+	}
680 680
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Status.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -44,7 +44,7 @@
 block discarded – undo
44 44
     {
45 45
         $id = $this->get('STS_ID');
46 46
         $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
47
-        return $code[ $id ];
47
+        return $code[$id];
48 48
     }
49 49
 
50 50
 
Please login to merge, or discard this patch.
Indentation   +138 added lines, -138 removed lines patch added patch discarded remove patch
@@ -11,142 +11,142 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Status extends EE_Base_Class
13 13
 {
14
-    /**
15
-     * @param array $props_n_values
16
-     * @return EE_Status
17
-     */
18
-    public static function new_instance($props_n_values = array())
19
-    {
20
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
-        return $has_object ? $has_object : new self($props_n_values);
22
-    }
23
-
24
-
25
-    /**
26
-     * @param array $props_n_values
27
-     * @return EE_Status
28
-     */
29
-    public static function new_instance_from_db($props_n_values = array())
30
-    {
31
-        return new self($props_n_values, true);
32
-    }
33
-
34
-
35
-    /**
36
-     * Gets code
37
-     *
38
-     * @param bool   $plural
39
-     * @param string $schema
40
-     * @return string
41
-     */
42
-    public function code($plural = false, $schema = 'upper')
43
-    {
44
-        $id = $this->get('STS_ID');
45
-        $code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
46
-        return $code[ $id ];
47
-    }
48
-
49
-
50
-    /**
51
-     * Sets code
52
-     *
53
-     * @param string $code
54
-     * @return boolean
55
-     */
56
-    public function set_code($code)
57
-    {
58
-        $this->set('STS_code', $code);
59
-    }
60
-
61
-
62
-    /**
63
-     * Gets desc
64
-     *
65
-     * @return string
66
-     */
67
-    public function desc()
68
-    {
69
-        return $this->get('STS_desc');
70
-    }
71
-
72
-
73
-    /**
74
-     * Sets desc
75
-     *
76
-     * @param string $desc
77
-     * @return boolean
78
-     */
79
-    public function set_desc($desc)
80
-    {
81
-        $this->set('STS_desc', $desc);
82
-    }
83
-
84
-
85
-    /**
86
-     * Gets type
87
-     *
88
-     * @return string
89
-     */
90
-    public function type()
91
-    {
92
-        return $this->get('STS_type');
93
-    }
94
-
95
-
96
-    /**
97
-     * Sets type
98
-     *
99
-     * @param string $type
100
-     * @return boolean
101
-     */
102
-    public function set_type($type)
103
-    {
104
-        $this->set('STS_type', $type);
105
-    }
106
-
107
-
108
-    /**
109
-     * Gets can_edit
110
-     *
111
-     * @return boolean
112
-     */
113
-    public function can_edit()
114
-    {
115
-        return $this->get('STS_can_edit');
116
-    }
117
-
118
-
119
-    /**
120
-     * Sets can_edit
121
-     *
122
-     * @param boolean $can_edit
123
-     * @return boolean
124
-     */
125
-    public function set_can_edit($can_edit)
126
-    {
127
-        $this->set('STS_can_edit', $can_edit);
128
-    }
129
-
130
-
131
-    /**
132
-     * Gets open
133
-     *
134
-     * @return boolean
135
-     */
136
-    public function open()
137
-    {
138
-        return $this->get('STS_open');
139
-    }
140
-
141
-
142
-    /**
143
-     * Sets open
144
-     *
145
-     * @param boolean $open
146
-     * @return boolean
147
-     */
148
-    public function set_open($open)
149
-    {
150
-        $this->set('STS_open', $open);
151
-    }
14
+	/**
15
+	 * @param array $props_n_values
16
+	 * @return EE_Status
17
+	 */
18
+	public static function new_instance($props_n_values = array())
19
+	{
20
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
+		return $has_object ? $has_object : new self($props_n_values);
22
+	}
23
+
24
+
25
+	/**
26
+	 * @param array $props_n_values
27
+	 * @return EE_Status
28
+	 */
29
+	public static function new_instance_from_db($props_n_values = array())
30
+	{
31
+		return new self($props_n_values, true);
32
+	}
33
+
34
+
35
+	/**
36
+	 * Gets code
37
+	 *
38
+	 * @param bool   $plural
39
+	 * @param string $schema
40
+	 * @return string
41
+	 */
42
+	public function code($plural = false, $schema = 'upper')
43
+	{
44
+		$id = $this->get('STS_ID');
45
+		$code = EEM_Status::instance()->localized_status(array($id => $this->get('STS_code')), $plural, $schema);
46
+		return $code[ $id ];
47
+	}
48
+
49
+
50
+	/**
51
+	 * Sets code
52
+	 *
53
+	 * @param string $code
54
+	 * @return boolean
55
+	 */
56
+	public function set_code($code)
57
+	{
58
+		$this->set('STS_code', $code);
59
+	}
60
+
61
+
62
+	/**
63
+	 * Gets desc
64
+	 *
65
+	 * @return string
66
+	 */
67
+	public function desc()
68
+	{
69
+		return $this->get('STS_desc');
70
+	}
71
+
72
+
73
+	/**
74
+	 * Sets desc
75
+	 *
76
+	 * @param string $desc
77
+	 * @return boolean
78
+	 */
79
+	public function set_desc($desc)
80
+	{
81
+		$this->set('STS_desc', $desc);
82
+	}
83
+
84
+
85
+	/**
86
+	 * Gets type
87
+	 *
88
+	 * @return string
89
+	 */
90
+	public function type()
91
+	{
92
+		return $this->get('STS_type');
93
+	}
94
+
95
+
96
+	/**
97
+	 * Sets type
98
+	 *
99
+	 * @param string $type
100
+	 * @return boolean
101
+	 */
102
+	public function set_type($type)
103
+	{
104
+		$this->set('STS_type', $type);
105
+	}
106
+
107
+
108
+	/**
109
+	 * Gets can_edit
110
+	 *
111
+	 * @return boolean
112
+	 */
113
+	public function can_edit()
114
+	{
115
+		return $this->get('STS_can_edit');
116
+	}
117
+
118
+
119
+	/**
120
+	 * Sets can_edit
121
+	 *
122
+	 * @param boolean $can_edit
123
+	 * @return boolean
124
+	 */
125
+	public function set_can_edit($can_edit)
126
+	{
127
+		$this->set('STS_can_edit', $can_edit);
128
+	}
129
+
130
+
131
+	/**
132
+	 * Gets open
133
+	 *
134
+	 * @return boolean
135
+	 */
136
+	public function open()
137
+	{
138
+		return $this->get('STS_open');
139
+	}
140
+
141
+
142
+	/**
143
+	 * Sets open
144
+	 *
145
+	 * @param boolean $open
146
+	 * @return boolean
147
+	 */
148
+	public function set_open($open)
149
+	{
150
+		$this->set('STS_open', $open);
151
+	}
152 152
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Term.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@
 block discarded – undo
23 23
      */
24 24
     protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
25 25
     {
26
-        if (! isset($fieldValues['slug'])) {
26
+        if ( ! isset($fieldValues['slug'])) {
27 27
             $fieldValues['slug'] = $fieldValues['name'];
28 28
         }
29 29
         parent::__construct($fieldValues, $bydb, $timezone);
Please login to merge, or discard this patch.
Indentation   +70 added lines, -70 removed lines patch added patch discarded remove patch
@@ -11,87 +11,87 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Term extends EE_Base_Class
13 13
 {
14
-    public $post_type;
14
+	public $post_type;
15 15
 
16
-    /**
17
-     * Sets some dynamic defaults
18
-     *
19
-     * @param array  $fieldValues
20
-     * @param bool   $bydb
21
-     * @param string $timezone
22
-     */
23
-    protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
24
-    {
25
-        if (! isset($fieldValues['slug'])) {
26
-            $fieldValues['slug'] = $fieldValues['name'];
27
-        }
28
-        parent::__construct($fieldValues, $bydb, $timezone);
29
-    }
16
+	/**
17
+	 * Sets some dynamic defaults
18
+	 *
19
+	 * @param array  $fieldValues
20
+	 * @param bool   $bydb
21
+	 * @param string $timezone
22
+	 */
23
+	protected function __construct($fieldValues = array(), $bydb = false, $timezone = '')
24
+	{
25
+		if (! isset($fieldValues['slug'])) {
26
+			$fieldValues['slug'] = $fieldValues['name'];
27
+		}
28
+		parent::__construct($fieldValues, $bydb, $timezone);
29
+	}
30 30
 
31 31
 
32
-    /**
33
-     * @param array $props_n_values
34
-     * @return EE_Term|mixed
35
-     */
36
-    public static function new_instance($props_n_values = array())
37
-    {
38
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
39
-        return $has_object ? $has_object : new self($props_n_values);
40
-    }
32
+	/**
33
+	 * @param array $props_n_values
34
+	 * @return EE_Term|mixed
35
+	 */
36
+	public static function new_instance($props_n_values = array())
37
+	{
38
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
39
+		return $has_object ? $has_object : new self($props_n_values);
40
+	}
41 41
 
42 42
 
43
-    /**
44
-     * @param array $props_n_values
45
-     * @return EE_Term
46
-     */
47
-    public static function new_instance_from_db($props_n_values = array())
48
-    {
49
-        return new self($props_n_values, true);
50
-    }
43
+	/**
44
+	 * @param array $props_n_values
45
+	 * @return EE_Term
46
+	 */
47
+	public static function new_instance_from_db($props_n_values = array())
48
+	{
49
+		return new self($props_n_values, true);
50
+	}
51 51
 
52 52
 
53
-    /**
54
-     * Gets name
55
-     *
56
-     * @return string
57
-     */
58
-    public function name()
59
-    {
60
-        return $this->get('name');
61
-    }
53
+	/**
54
+	 * Gets name
55
+	 *
56
+	 * @return string
57
+	 */
58
+	public function name()
59
+	{
60
+		return $this->get('name');
61
+	}
62 62
 
63 63
 
64
-    /**
65
-     * Sets name
66
-     *
67
-     * @param string $name
68
-     * @return boolean
69
-     */
70
-    public function set_name($name)
71
-    {
72
-        $this->set('name', $name);
73
-    }
64
+	/**
65
+	 * Sets name
66
+	 *
67
+	 * @param string $name
68
+	 * @return boolean
69
+	 */
70
+	public function set_name($name)
71
+	{
72
+		$this->set('name', $name);
73
+	}
74 74
 
75 75
 
76
-    /**
77
-     * Gets slug
78
-     *
79
-     * @return string
80
-     */
81
-    public function slug()
82
-    {
83
-        return $this->get('slug');
84
-    }
76
+	/**
77
+	 * Gets slug
78
+	 *
79
+	 * @return string
80
+	 */
81
+	public function slug()
82
+	{
83
+		return $this->get('slug');
84
+	}
85 85
 
86 86
 
87
-    /**
88
-     * Sets slug
89
-     *
90
-     * @param string $slug
91
-     * @return boolean
92
-     */
93
-    public function set_slug($slug)
94
-    {
95
-        $this->set('slug', $slug);
96
-    }
87
+	/**
88
+	 * Sets slug
89
+	 *
90
+	 * @param string $slug
91
+	 * @return boolean
92
+	 */
93
+	public function set_slug($slug)
94
+	{
95
+		$this->set('slug', $slug);
96
+	}
97 97
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Change_Log.class.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -192,7 +192,7 @@
 block discarded – undo
192 192
     {
193 193
         $model_name_of_related_obj = $this->OBJ_type();
194 194
         $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
195
-        if (! $is_model_name) {
195
+        if ( ! $is_model_name) {
196 196
             return null;
197 197
         } else {
198 198
             return $this->get_first_related($model_name_of_related_obj);
Please login to merge, or discard this patch.
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -10,217 +10,217 @@
 block discarded – undo
10 10
  */
11 11
 class EE_Change_Log extends EE_Base_Class
12 12
 {
13
-    /**
14
-     * @param array  $props_n_values          incoming values
15
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
16
-     *                                        used.)
17
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
18
-     *                                        date_format and the second value is the time format
19
-     * @return EE_Change_Log
20
-     * @throws EE_Error
21
-     */
22
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
-    {
24
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
-    }
27
-
28
-
29
-    /**
30
-     * @param array  $props_n_values  incoming values from the database
31
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
-     *                                the website will be used.
33
-     * @return EE_Change_Log
34
-     */
35
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
-    {
37
-        return new self($props_n_values, true, $timezone);
38
-    }
39
-
40
-    /**
41
-     * Gets message
42
-     *
43
-     * @return mixed
44
-     * @throws EE_Error
45
-     */
46
-    public function message()
47
-    {
48
-        return $this->get('LOG_message');
49
-    }
50
-
51
-    /**
52
-     * Sets message
53
-     *
54
-     * @param mixed $message
55
-     * @throws EE_Error
56
-     */
57
-    public function set_message($message)
58
-    {
59
-        $this->set('LOG_message', $message);
60
-    }
61
-
62
-    /**
63
-     * Gets time
64
-     *
65
-     * @return string
66
-     * @throws EE_Error
67
-     */
68
-    public function time()
69
-    {
70
-        return $this->get('LOG_time');
71
-    }
72
-
73
-    /**
74
-     * Sets time
75
-     *
76
-     * @param string $time
77
-     * @throws EE_Error
78
-     */
79
-    public function set_time($time)
80
-    {
81
-        $this->set('LOG_time', $time);
82
-    }
83
-
84
-    /**
85
-     * Gets log_type
86
-     *
87
-     * @return string
88
-     * @throws EE_Error
89
-     */
90
-    public function log_type()
91
-    {
92
-        return $this->get('LOG_type');
93
-    }
94
-
95
-
96
-    /**
97
-     * Return the localized log type label.
98
-     *
99
-     * @return string
100
-     * @throws EE_Error
101
-     */
102
-    public function log_type_label()
103
-    {
104
-        return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
105
-    }
106
-
107
-    /**
108
-     * Sets log_type
109
-     *
110
-     * @param string $log_type
111
-     * @throws EE_Error
112
-     */
113
-    public function set_log_type($log_type)
114
-    {
115
-        $this->set('LOG_type', $log_type);
116
-    }
117
-
118
-    /**
119
-     * Gets type of the model object related to this log
120
-     *
121
-     * @return string
122
-     * @throws EE_Error
123
-     */
124
-    public function OBJ_type()
125
-    {
126
-        return $this->get('OBJ_type');
127
-    }
128
-
129
-    /**
130
-     * Sets type
131
-     *
132
-     * @param string $type
133
-     * @throws EE_Error
134
-     */
135
-    public function set_OBJ_type($type)
136
-    {
137
-        $this->set('OBJ_type', $type);
138
-    }
139
-
140
-    /**
141
-     * Gets OBJ_ID (the ID of the item related to this log)
142
-     *
143
-     * @return mixed
144
-     * @throws EE_Error
145
-     */
146
-    public function OBJ_ID()
147
-    {
148
-        return $this->get('OBJ_ID');
149
-    }
150
-
151
-    /**
152
-     * Sets OBJ_ID
153
-     *
154
-     * @param mixed $OBJ_ID
155
-     * @throws EE_Error
156
-     */
157
-    public function set_OBJ_ID($OBJ_ID)
158
-    {
159
-        $this->set('OBJ_ID', $OBJ_ID);
160
-    }
161
-
162
-    /**
163
-     * Gets wp_user
164
-     *
165
-     * @return int
166
-     * @throws EE_Error
167
-     */
168
-    public function wp_user()
169
-    {
170
-        return $this->get('LOG_wp_user');
171
-    }
172
-
173
-    /**
174
-     * Sets wp_user
175
-     *
176
-     * @param int $wp_user_id
177
-     * @throws EE_Error
178
-     */
179
-    public function set_wp_user($wp_user_id)
180
-    {
181
-        $this->set('LOG_wp_user', $wp_user_id);
182
-    }
183
-
184
-    /**
185
-     * Gets the model object attached to this log
186
-     *
187
-     * @return EE_Base_Class
188
-     * @throws EE_Error
189
-     */
190
-    public function object()
191
-    {
192
-        $model_name_of_related_obj = $this->OBJ_type();
193
-        $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
194
-        if (! $is_model_name) {
195
-            return null;
196
-        } else {
197
-            return $this->get_first_related($model_name_of_related_obj);
198
-        }
199
-    }
200
-
201
-    /**
202
-     * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
203
-     * _add_relation_to because you don't have to specify what type of model you're
204
-     * associating it with
205
-     *
206
-     * @param EE_Base_Class $object
207
-     * @param boolean       $save
208
-     * @return bool if $save=true, NULL is $save=false
209
-     * @throws EE_Error
210
-     */
211
-    public function set_object($object, $save = true)
212
-    {
213
-        if ($object instanceof EE_Base_Class) {
214
-            $this->set_OBJ_type($object->get_model()->get_this_model_name());
215
-            $this->set_OBJ_ID($object->ID());
216
-        } else {
217
-            $this->set_OBJ_type(null);
218
-            $this->set_OBJ_ID(null);
219
-        }
220
-        if ($save) {
221
-            return $this->save();
222
-        } else {
223
-            return null;
224
-        }
225
-    }
13
+	/**
14
+	 * @param array  $props_n_values          incoming values
15
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
16
+	 *                                        used.)
17
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
18
+	 *                                        date_format and the second value is the time format
19
+	 * @return EE_Change_Log
20
+	 * @throws EE_Error
21
+	 */
22
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
23
+	{
24
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
25
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
26
+	}
27
+
28
+
29
+	/**
30
+	 * @param array  $props_n_values  incoming values from the database
31
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
32
+	 *                                the website will be used.
33
+	 * @return EE_Change_Log
34
+	 */
35
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
+	{
37
+		return new self($props_n_values, true, $timezone);
38
+	}
39
+
40
+	/**
41
+	 * Gets message
42
+	 *
43
+	 * @return mixed
44
+	 * @throws EE_Error
45
+	 */
46
+	public function message()
47
+	{
48
+		return $this->get('LOG_message');
49
+	}
50
+
51
+	/**
52
+	 * Sets message
53
+	 *
54
+	 * @param mixed $message
55
+	 * @throws EE_Error
56
+	 */
57
+	public function set_message($message)
58
+	{
59
+		$this->set('LOG_message', $message);
60
+	}
61
+
62
+	/**
63
+	 * Gets time
64
+	 *
65
+	 * @return string
66
+	 * @throws EE_Error
67
+	 */
68
+	public function time()
69
+	{
70
+		return $this->get('LOG_time');
71
+	}
72
+
73
+	/**
74
+	 * Sets time
75
+	 *
76
+	 * @param string $time
77
+	 * @throws EE_Error
78
+	 */
79
+	public function set_time($time)
80
+	{
81
+		$this->set('LOG_time', $time);
82
+	}
83
+
84
+	/**
85
+	 * Gets log_type
86
+	 *
87
+	 * @return string
88
+	 * @throws EE_Error
89
+	 */
90
+	public function log_type()
91
+	{
92
+		return $this->get('LOG_type');
93
+	}
94
+
95
+
96
+	/**
97
+	 * Return the localized log type label.
98
+	 *
99
+	 * @return string
100
+	 * @throws EE_Error
101
+	 */
102
+	public function log_type_label()
103
+	{
104
+		return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
105
+	}
106
+
107
+	/**
108
+	 * Sets log_type
109
+	 *
110
+	 * @param string $log_type
111
+	 * @throws EE_Error
112
+	 */
113
+	public function set_log_type($log_type)
114
+	{
115
+		$this->set('LOG_type', $log_type);
116
+	}
117
+
118
+	/**
119
+	 * Gets type of the model object related to this log
120
+	 *
121
+	 * @return string
122
+	 * @throws EE_Error
123
+	 */
124
+	public function OBJ_type()
125
+	{
126
+		return $this->get('OBJ_type');
127
+	}
128
+
129
+	/**
130
+	 * Sets type
131
+	 *
132
+	 * @param string $type
133
+	 * @throws EE_Error
134
+	 */
135
+	public function set_OBJ_type($type)
136
+	{
137
+		$this->set('OBJ_type', $type);
138
+	}
139
+
140
+	/**
141
+	 * Gets OBJ_ID (the ID of the item related to this log)
142
+	 *
143
+	 * @return mixed
144
+	 * @throws EE_Error
145
+	 */
146
+	public function OBJ_ID()
147
+	{
148
+		return $this->get('OBJ_ID');
149
+	}
150
+
151
+	/**
152
+	 * Sets OBJ_ID
153
+	 *
154
+	 * @param mixed $OBJ_ID
155
+	 * @throws EE_Error
156
+	 */
157
+	public function set_OBJ_ID($OBJ_ID)
158
+	{
159
+		$this->set('OBJ_ID', $OBJ_ID);
160
+	}
161
+
162
+	/**
163
+	 * Gets wp_user
164
+	 *
165
+	 * @return int
166
+	 * @throws EE_Error
167
+	 */
168
+	public function wp_user()
169
+	{
170
+		return $this->get('LOG_wp_user');
171
+	}
172
+
173
+	/**
174
+	 * Sets wp_user
175
+	 *
176
+	 * @param int $wp_user_id
177
+	 * @throws EE_Error
178
+	 */
179
+	public function set_wp_user($wp_user_id)
180
+	{
181
+		$this->set('LOG_wp_user', $wp_user_id);
182
+	}
183
+
184
+	/**
185
+	 * Gets the model object attached to this log
186
+	 *
187
+	 * @return EE_Base_Class
188
+	 * @throws EE_Error
189
+	 */
190
+	public function object()
191
+	{
192
+		$model_name_of_related_obj = $this->OBJ_type();
193
+		$is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
194
+		if (! $is_model_name) {
195
+			return null;
196
+		} else {
197
+			return $this->get_first_related($model_name_of_related_obj);
198
+		}
199
+	}
200
+
201
+	/**
202
+	 * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
203
+	 * _add_relation_to because you don't have to specify what type of model you're
204
+	 * associating it with
205
+	 *
206
+	 * @param EE_Base_Class $object
207
+	 * @param boolean       $save
208
+	 * @return bool if $save=true, NULL is $save=false
209
+	 * @throws EE_Error
210
+	 */
211
+	public function set_object($object, $save = true)
212
+	{
213
+		if ($object instanceof EE_Base_Class) {
214
+			$this->set_OBJ_type($object->get_model()->get_this_model_name());
215
+			$this->set_OBJ_ID($object->ID());
216
+		} else {
217
+			$this->set_OBJ_type(null);
218
+			$this->set_OBJ_ID(null);
219
+		}
220
+		if ($save) {
221
+			return $this->save();
222
+		} else {
223
+			return null;
224
+		}
225
+	}
226 226
 }
Please login to merge, or discard this patch.