PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 2.2.9
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v2.2.9
3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 All 194 releases
convertkit / includes / class-convertkit-settings-broadcasts.php

class-convertkit-settings-broadcasts.php in Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages 2.2.9, at includes/class-convertkit-settings-broadcasts.php

235 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * ConvertKit Broadcasts Settings class.
4 *
5 * @package ConvertKit
6 * @author ConvertKit
7 */
8
9 /**
10 * Class to read ConvertKit Broadcasts Settings.
11 *
12 * @since 2.2.9
13 */
14 class ConvertKit_Settings_Broadcasts {
15
16 /**
17 * Holds the Settings Key that stores site wide ConvertKit settings
18 *
19 * @var string
20 *
21 * @since 2.2.9
22 */
23 const SETTINGS_NAME = '_wp_convertkit_settings_broadcasts';
24
25 /**
26 * Holds the Settings
27 *
28 * @var array
29 *
30 * @since 2.2.9
31 */
32 private $settings = array();
33
34 /**
35 * Constructor. Reads settings from options table, falling back to defaults
36 * if no settings exist.
37 *
38 * @since 2.2.9
39 */
40 public function __construct() {
41
42 // Get Settings.
43 $settings = get_option( self::SETTINGS_NAME );
44
45 // If no Settings exist, falback to default settings.
46 if ( ! $settings ) {
47 $this->settings = $this->get_defaults();
48 } else {
49 $this->settings = array_merge( $this->get_defaults(), $settings );
50 }
51
52 }
53
54 /**
55 * Returns Plugin settings.
56 *
57 * @since 2.2.9
58 *
59 * @return array
60 */
61 public function get() {
62
63 return $this->settings;
64
65 }
66
67 /**
68 * Returns Broadcasts settings value for the given key.
69 *
70 * @since 2.2.9
71 *
72 * @param string $key Setting Key.
73 * @return string Value
74 */
75 public function get_by_key( $key ) {
76
77 // If the setting doesn't exist, bail.
78 if ( ! array_key_exists( $key, $this->settings ) ) {
79 return '';
80 }
81
82 // If the setting is empty, fallback to the default.
83 if ( empty( $this->settings[ $key ] ) ) {
84 $defaults = $this->get_defaults();
85 return $defaults[ $key ];
86 }
87
88 return $this->settings[ $key ];
89
90 }
91
92 /**
93 * Returns whether Broadcasts are enabled in the Plugin settings.
94 *
95 * @since 2.2.9
96 *
97 * @return bool
98 */
99 public function enabled() {
100
101 return ( $this->settings['enabled'] === 'on' ? true : false );
102
103 }
104
105 /**
106 * Returns the WordPress Author ID to assign imported Broadcasts to.
107 *
108 * @since 2.2.9
109 *
110 * @return int
111 */
112 public function author_id() {
113
114 return $this->settings['author_id'];
115
116 }
117
118 /**
119 * Returns the WordPress Category ID to assign imported Broadcasts to.
120 *
121 * @since 2.2.9
122 *
123 * @return int
124 */
125 public function category_id() {
126
127 return $this->settings['category_id'];
128
129 }
130
131 /**
132 * Returns the earliest date that Broadcasts should be imported,
133 * based on their published_at date.
134 *
135 * @since 2.2.9
136 *
137 * @return string Date (yyyy-mm-dd)
138 */
139 public function published_at_min_date() {
140
141 return $this->settings['published_at_min_date'];
142
143 }
144
145 /**
146 * Returns whether Broadcasts should have their styles imported.
147 *
148 * @since 2.2.9
149 *
150 * @return bool
151 */
152 public function no_styles() {
153
154 return ( $this->settings['no_styles'] === 'on' ? true : false );
155
156 }
157
158 /**
159 * Returns whether imported Broadcasts should have their Restrict Content
160 * setting defined, if the Broadcast is marked as paid.
161 *
162 * @since 2.2.9
163 *
164 * @return bool
165 */
166 public function restrict_content_enabled() {
167
168 return ! empty( $this->settings['restrict_content'] );
169
170 }
171
172 /**
173 * Returns the Restrict Content setting to assign to imported Broadcasts
174 *
175 * @since 2.2.9
176 *
177 * @return string
178 */
179 public function restrict_content() {
180
181 return $this->settings['restrict_content'];
182
183 }
184
185 /**
186 * The default settings, used when the ConvertKit Broadcasts Settings haven't been saved
187 * e.g. on a new installation.
188 *
189 * @since 2.2.9
190 *
191 * @return array
192 */
193 public function get_defaults() {
194
195 $defaults = array(
196 'enabled' => '',
197 'author_id' => get_current_user_id(),
198 'category_id' => '',
199
200 // By default, only import Broadcasts as Posts for the last 30 days.
201 'published_at_min_date' => gmdate( 'Y-m-d', strtotime( '-30 days' ) ),
202
203 'restrict_content' => '',
204 'no_styles' => '',
205 );
206
207 /**
208 * The default settings, used when the ConvertKit Broadcasts Settings haven't been saved
209 * e.g. on a new installation.
210 *
211 * @since 2.2.9
212 *
213 * @param array $defaults
214 */
215 $defaults = apply_filters( 'convertkit_settings_broadcasts_get_defaults', $defaults );
216
217 return $defaults;
218
219 }
220
221 /**
222 * Saves the given array of settings to the WordPress options table.
223 *
224 * @since 2.2.9
225 *
226 * @param array $settings Settings.
227 */
228 public function save( $settings ) {
229
230 update_option( self::SETTINGS_NAME, array_merge( $this->get(), $settings ) );
231
232 }
233
234 }
235